diff options
author | Evgeny Potemkin <epotemkin@mysql.com> | 2009-07-18 18:09:56 +0400 |
---|---|---|
committer | Evgeny Potemkin <epotemkin@mysql.com> | 2009-07-18 18:09:56 +0400 |
commit | 32b02e0b4d22f8bec51cf91cfd36b8f986aff1d2 (patch) | |
tree | 741adb9eb42191a579c1556e8e74300a8eac5e85 | |
parent | af2c91b7019dd0bd53d7444b47552f14729a7bd0 (diff) | |
download | mariadb-git-32b02e0b4d22f8bec51cf91cfd36b8f986aff1d2.tar.gz |
Bug#46051: Incorrectly market field caused wrong result.
When during the optimization an item is moved to the upper select
the item's context left unchanged. This caused wrong result in the
PS/SP mode.
The Item_ident::remove_dependence_processor now sets the context
of the select to which the item is moved to.
-rw-r--r-- | mysql-test/r/subselect.result | 4 | ||||
-rw-r--r-- | mysql-test/t/subselect.test | 2 | ||||
-rw-r--r-- | sql/item.cc | 1 |
3 files changed, 3 insertions, 4 deletions
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result index d3f7f631f70..324a6073426 100644 --- a/mysql-test/r/subselect.result +++ b/mysql-test/r/subselect.result @@ -4472,10 +4472,6 @@ int_nokey int_key EXPLAIN EXTENDED SELECT * FROM C WHERE `int_key` IN (SELECT `int_nokey`); id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY C ALL NULL NULL NULL NULL 20 Using where -Warnings: -Note 1276 Field or reference 'test.C.int_nokey' of SELECT #2 was resolved in SELECT #1 -Note 1249 Select 2 was reduced during optimization -Note 1003 select `test`.`C`.`int_nokey` AS `int_nokey`,`test`.`C`.`int_key` AS `int_key` from `test`.`C` where (`test`.`C`.`int_nokey` = `test`.`C`.`int_key`) DROP TABLE C; # End of test for bug#45061. End of 5.0 tests. diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test index 63ab2710f89..9d4fc9030f2 100644 --- a/mysql-test/t/subselect.test +++ b/mysql-test/t/subselect.test @@ -3441,8 +3441,10 @@ INSERT INTO `C` VALUES (9,9), (0,0), (8,6), (3,6), (7,6), (0,4), (1,7), (9,4), (0,8), (9,4), (0,7), (5,5), (0,0), (8,5), (8,7), (5,2), (1,8), (7,0), (0,9), (9,5); +--disable_warnings SELECT * FROM C WHERE `int_key` IN (SELECT `int_nokey`); EXPLAIN EXTENDED SELECT * FROM C WHERE `int_key` IN (SELECT `int_nokey`); +--enable_warnings DROP TABLE C; --echo # End of test for bug#45061. diff --git a/sql/item.cc b/sql/item.cc index 1e379527fb7..eecb48aa16f 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -598,6 +598,7 @@ bool Item_ident::remove_dependence_processor(byte * arg) DBUG_ENTER("Item_ident::remove_dependence_processor"); if (depended_from == (st_select_lex *) arg) depended_from= 0; + context= &((st_select_lex *) arg)->context; DBUG_RETURN(0); } |