MDEV-29653 Make sure Item_cache_row has the correct type handler.
The incorrect type handler caused an incorrect result_type() for Item_cache_row (STRING_RESULT rather than ROW_RESULT). By updating the constructor of Item_cache_row with the correct type handler, it fixes this problem. Signed-off-by: Yuchen Pei <yuchen.pei@mariadb.com> Reviewed-by: Sergei Golubchik <serg@mariadb.com>
This commit is contained in:
parent
c21566a78a
commit
fb41117c90
@ -7305,7 +7305,7 @@ class Item_cache_row: public Item_cache
|
||||
bool save_array;
|
||||
public:
|
||||
Item_cache_row(THD *thd):
|
||||
Item_cache(thd), values(0), item_count(2),
|
||||
Item_cache(thd, &type_handler_row), values(0), item_count(2),
|
||||
save_array(0) {}
|
||||
|
||||
/*
|
||||
|
33
storage/spider/mysql-test/spider/bugfix/r/mdev_29653.result
Normal file
33
storage/spider/mysql-test/spider/bugfix/r/mdev_29653.result
Normal file
@ -0,0 +1,33 @@
|
||||
#
|
||||
# MDEV-29653 Assertion `0' failed in Item_cache_row::illegal_method_call on SELECT from Spider table
|
||||
#
|
||||
for master_1
|
||||
for child2
|
||||
child2_1
|
||||
child2_2
|
||||
child2_3
|
||||
for child3
|
||||
connection child2_1;
|
||||
CREATE DATABASE auto_test_remote;
|
||||
USE auto_test_remote;
|
||||
CREATE TABLE t (
|
||||
c INT
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
connection master_1;
|
||||
CREATE DATABASE auto_test_local;
|
||||
USE auto_test_local;
|
||||
CREATE TABLE ts (
|
||||
c INT
|
||||
) ENGINE=Spider COMMENT='table "t", srv "s_2_1"';
|
||||
SELECT 1 FROM ts WHERE ROW(c, c) NOT IN ((0,0),(1,1));
|
||||
1
|
||||
connection master_1;
|
||||
DROP DATABASE IF EXISTS auto_test_local;
|
||||
connection child2_1;
|
||||
DROP DATABASE IF EXISTS auto_test_remote;
|
||||
for master_1
|
||||
for child2
|
||||
child2_1
|
||||
child2_2
|
||||
child2_3
|
||||
for child3
|
3
storage/spider/mysql-test/spider/bugfix/t/mdev_29653.cnf
Normal file
3
storage/spider/mysql-test/spider/bugfix/t/mdev_29653.cnf
Normal file
@ -0,0 +1,3 @@
|
||||
!include include/default_mysqld.cnf
|
||||
!include ../my_1_1.cnf
|
||||
!include ../my_2_1.cnf
|
37
storage/spider/mysql-test/spider/bugfix/t/mdev_29653.test
Normal file
37
storage/spider/mysql-test/spider/bugfix/t/mdev_29653.test
Normal file
@ -0,0 +1,37 @@
|
||||
--echo #
|
||||
--echo # MDEV-29653 Assertion `0' failed in Item_cache_row::illegal_method_call on SELECT from Spider table
|
||||
--echo #
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
--source ../../t/test_init.inc
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
|
||||
--connection child2_1
|
||||
CREATE DATABASE auto_test_remote;
|
||||
USE auto_test_remote;
|
||||
eval CREATE TABLE t (
|
||||
c INT
|
||||
) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
|
||||
|
||||
--connection master_1
|
||||
CREATE DATABASE auto_test_local;
|
||||
USE auto_test_local;
|
||||
eval CREATE TABLE ts (
|
||||
c INT
|
||||
) $MASTER_1_ENGINE COMMENT='table "t", srv "s_2_1"';
|
||||
|
||||
SELECT 1 FROM ts WHERE ROW(c, c) NOT IN ((0,0),(1,1));
|
||||
|
||||
--connection master_1
|
||||
DROP DATABASE IF EXISTS auto_test_local;
|
||||
|
||||
--connection child2_1
|
||||
DROP DATABASE IF EXISTS auto_test_remote;
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
--source ../t/test_deinit.inc
|
||||
--enable_query_log
|
||||
--enable_result_log
|
Loading…
x
Reference in New Issue
Block a user