Commit bce51ceb authored by Sergey Petrunya's avatar Sergey Petrunya

BUG#778406: Crash in hp_movelink with Aria engine and subqueries

-In  do_sj_dups_weedout(), set nulls_ptr to point to NULL bytes (and not to length bytes) of the DuplicateWeedout column.
parent a9d73e09
......@@ -1305,4 +1305,25 @@ WHERE alias2.f11 IN ( SELECT f11 FROM t2 )
GROUP BY field2 ;
field2
drop table t1, t2, t3;
#
# BUG#778406 Crash in hp_movelink with Aria engine and subqueries
#
CREATE TABLE t4 (f10 varchar(32) , KEY (f10)) ENGINE=Aria;
INSERT INTO t4 VALUES ('x'),('m'),('c');
CREATE TABLE t1 (f11 int) ENGINE=Aria;
INSERT INTO t1 VALUES (0),(0),(0);
CREATE TABLE t2 ( f10 int) ENGINE=Aria;
INSERT INTO t2 VALUES (0),(0),(0);
CREATE TABLE t3 ( f10 int, f11 int) ENGINE=Aria;
SELECT *
FROM t4
WHERE f10 IN
( SELECT t1.f11
FROM t1
LEFT JOIN t2 JOIN t3 ON t3.f10 = t2.f10 ON t3.f11 != 0 );
f10
x
m
c
drop table t1,t2,t3,t4;
set @@optimizer_switch=@save_optimizer_switch;
......@@ -1313,6 +1313,27 @@ WHERE alias2.f11 IN ( SELECT f11 FROM t2 )
GROUP BY field2 ;
field2
drop table t1, t2, t3;
#
# BUG#778406 Crash in hp_movelink with Aria engine and subqueries
#
CREATE TABLE t4 (f10 varchar(32) , KEY (f10)) ENGINE=Aria;
INSERT INTO t4 VALUES ('x'),('m'),('c');
CREATE TABLE t1 (f11 int) ENGINE=Aria;
INSERT INTO t1 VALUES (0),(0),(0);
CREATE TABLE t2 ( f10 int) ENGINE=Aria;
INSERT INTO t2 VALUES (0),(0),(0);
CREATE TABLE t3 ( f10 int, f11 int) ENGINE=Aria;
SELECT *
FROM t4
WHERE f10 IN
( SELECT t1.f11
FROM t1
LEFT JOIN t2 JOIN t3 ON t3.f10 = t2.f10 ON t3.f11 != 0 );
f10
x
m
c
drop table t1,t2,t3,t4;
set @@optimizer_switch=@save_optimizer_switch;
#
# BUG#49129: Wrong result with IN-subquery with join_cache_level=6 and firstmatch=off
......
......@@ -1189,5 +1189,28 @@ GROUP BY field2 ;
drop table t1, t2, t3;
--echo #
--echo # BUG#778406 Crash in hp_movelink with Aria engine and subqueries
--echo #
CREATE TABLE t4 (f10 varchar(32) , KEY (f10)) ENGINE=Aria;
INSERT INTO t4 VALUES ('x'),('m'),('c');
CREATE TABLE t1 (f11 int) ENGINE=Aria;
INSERT INTO t1 VALUES (0),(0),(0);
CREATE TABLE t2 ( f10 int) ENGINE=Aria;
INSERT INTO t2 VALUES (0),(0),(0);
CREATE TABLE t3 ( f10 int, f11 int) ENGINE=Aria;
SELECT *
FROM t4
WHERE f10 IN
( SELECT t1.f11
FROM t1
LEFT JOIN t2 JOIN t3 ON t3.f10 = t2.f10 ON t3.f11 != 0 );
drop table t1,t2,t3,t4;
# The following command must be the last one the file
set @@optimizer_switch=@save_optimizer_switch;
......@@ -3515,7 +3515,6 @@ int do_sj_dups_weedout(THD *thd, SJ_TMP_TABLE *sjtbl)
}
ptr= sjtbl->tmp_table->record[0] + 1;
nulls_ptr= ptr;
/* Put the the rowids tuple into table->record[0]: */
......@@ -3531,6 +3530,7 @@ int do_sj_dups_weedout(THD *thd, SJ_TMP_TABLE *sjtbl)
ptr += 2;
}
nulls_ptr= ptr;
// 2. Zero the null bytes
if (sjtbl->null_bytes)
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment