From: Tor Didriksen Date: February 24 2011 8:57am Subject: bzr commit into mysql-trunk branch (tor.didriksen:3709) Bug#11766678 List-Archive: http://lists.mysql.com/commits/132002 X-Bug: 11766678 Message-Id: <20110224085759.891DE376C@atum07.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3129187821368547596==" --===============3129187821368547596== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/didrik/repo/trunk-bug59843valgrind/ based on revid:vasil.dimov@stripped 3709 Tor Didriksen 2011-02-24 Bug #11766678 - 59843:USING UNINITIALISED VALUE IN USES_INDEX_FIELDS_ONLY @ mysql-test/include/icp_tests.inc New test case. @ mysql-test/r/innodb_icp.result New test case. @ mysql-test/r/innodb_icp_none.result New test case. @ mysql-test/r/myisam_icp.result New test case. @ mysql-test/r/myisam_icp_none.result New test case. @ sql/item_func.h DBUG_ASSERT that we don't access arguments when argument_count == 0 @ sql/opt_range.cc don't access arguments when argument_count == 0 @ sql/sql_select.cc don't access arguments when argument_count == 0 modified: mysql-test/include/icp_tests.inc mysql-test/r/innodb_icp.result mysql-test/r/innodb_icp_none.result mysql-test/r/myisam_icp.result mysql-test/r/myisam_icp_none.result sql/item_func.h sql/opt_range.cc sql/sql_select.cc === modified file 'mysql-test/include/icp_tests.inc' --- a/mysql-test/include/icp_tests.inc 2011-01-31 11:56:15 +0000 +++ b/mysql-test/include/icp_tests.inc 2011-02-24 08:57:54 +0000 @@ -821,3 +821,20 @@ SELECT * FROM t1 WHERE i2 IN (3, 6) LIMI INSERT INTO t1 (i2) VALUES (1); DROP TABLE t1; + +--echo # +--echo # Bug #11766678 - 59843: +--echo # USING UNINITIALISED VALUE IN USES_INDEX_FIELDS_ONLY +--echo # + +CREATE TABLE t1 ( + col999 float not null, + col1000 varbinary(179) not null, + col1003 date default null, + key idx4267 (col1000,col1003) +); + +INSERT INTO t1 VALUES (),(); +SELECT col999 FROM t1 WHERE col1000 = "3" AND col1003 <=> sysdate(); + +DROP TABLE t1; === modified file 'mysql-test/r/innodb_icp.result' --- a/mysql-test/r/innodb_icp.result 2011-02-14 11:21:26 +0000 +++ b/mysql-test/r/innodb_icp.result 2011-02-24 08:57:54 +0000 @@ -759,5 +759,22 @@ pk i1 c1 i2 2 1 she 6 INSERT INTO t1 (i2) VALUES (1); DROP TABLE t1; +# +# Bug #11766678 - 59843: +# USING UNINITIALISED VALUE IN USES_INDEX_FIELDS_ONLY +# +CREATE TABLE t1 ( +col999 float not null, +col1000 varbinary(179) not null, +col1003 date default null, +key idx4267 (col1000,col1003) +); +INSERT INTO t1 VALUES (),(); +Warnings: +Warning 1364 Field 'col999' doesn't have a default value +Warning 1364 Field 'col1000' doesn't have a default value +SELECT col999 FROM t1 WHERE col1000 = "3" AND col1003 <=> sysdate(); +col999 +DROP TABLE t1; set default_storage_engine= @save_storage_engine; set optimizer_switch=default; === modified file 'mysql-test/r/innodb_icp_none.result' --- a/mysql-test/r/innodb_icp_none.result 2011-02-14 11:21:26 +0000 +++ b/mysql-test/r/innodb_icp_none.result 2011-02-24 08:57:54 +0000 @@ -758,5 +758,22 @@ pk i1 c1 i2 2 1 she 6 INSERT INTO t1 (i2) VALUES (1); DROP TABLE t1; +# +# Bug #11766678 - 59843: +# USING UNINITIALISED VALUE IN USES_INDEX_FIELDS_ONLY +# +CREATE TABLE t1 ( +col999 float not null, +col1000 varbinary(179) not null, +col1003 date default null, +key idx4267 (col1000,col1003) +); +INSERT INTO t1 VALUES (),(); +Warnings: +Warning 1364 Field 'col999' doesn't have a default value +Warning 1364 Field 'col1000' doesn't have a default value +SELECT col999 FROM t1 WHERE col1000 = "3" AND col1003 <=> sysdate(); +col999 +DROP TABLE t1; set default_storage_engine= @save_storage_engine; set optimizer_switch=default; === modified file 'mysql-test/r/myisam_icp.result' --- a/mysql-test/r/myisam_icp.result 2011-01-31 11:56:15 +0000 +++ b/mysql-test/r/myisam_icp.result 2011-02-24 08:57:54 +0000 @@ -757,4 +757,21 @@ pk i1 c1 i2 2 1 she 6 INSERT INTO t1 (i2) VALUES (1); DROP TABLE t1; +# +# Bug #11766678 - 59843: +# USING UNINITIALISED VALUE IN USES_INDEX_FIELDS_ONLY +# +CREATE TABLE t1 ( +col999 float not null, +col1000 varbinary(179) not null, +col1003 date default null, +key idx4267 (col1000,col1003) +); +INSERT INTO t1 VALUES (),(); +Warnings: +Warning 1364 Field 'col999' doesn't have a default value +Warning 1364 Field 'col1000' doesn't have a default value +SELECT col999 FROM t1 WHERE col1000 = "3" AND col1003 <=> sysdate(); +col999 +DROP TABLE t1; set optimizer_switch=default; === modified file 'mysql-test/r/myisam_icp_none.result' --- a/mysql-test/r/myisam_icp_none.result 2011-01-31 11:56:15 +0000 +++ b/mysql-test/r/myisam_icp_none.result 2011-02-24 08:57:54 +0000 @@ -756,4 +756,21 @@ pk i1 c1 i2 2 1 she 6 INSERT INTO t1 (i2) VALUES (1); DROP TABLE t1; +# +# Bug #11766678 - 59843: +# USING UNINITIALISED VALUE IN USES_INDEX_FIELDS_ONLY +# +CREATE TABLE t1 ( +col999 float not null, +col1000 varbinary(179) not null, +col1003 date default null, +key idx4267 (col1000,col1003) +); +INSERT INTO t1 VALUES (),(); +Warnings: +Warning 1364 Field 'col999' doesn't have a default value +Warning 1364 Field 'col1000' doesn't have a default value +SELECT col999 FROM t1 WHERE col1000 = "3" AND col1003 <=> sysdate(); +col999 +DROP TABLE t1; set optimizer_switch=default; === modified file 'sql/item_func.h' --- a/sql/item_func.h 2011-02-21 10:36:31 +0000 +++ b/sql/item_func.h 2011-02-24 08:57:54 +0000 @@ -130,7 +130,8 @@ public: virtual bool have_rev_func() const { return 0; } virtual Item *key_item() const { return args[0]; } virtual bool const_item() const { return const_item_cache; } - inline Item **arguments() const { return args; } + inline Item **arguments() const + { DBUG_ASSERT(argument_count() > 0); return args; } void set_arguments(List &list); inline uint argument_count() const { return arg_count; } inline void remove_arguments() { arg_count=0; } === modified file 'sql/opt_range.cc' --- a/sql/opt_range.cc 2011-02-02 22:02:29 +0000 +++ b/sql/opt_range.cc 2011-02-24 08:57:54 +0000 @@ -10133,11 +10133,11 @@ check_group_min_max_predicates(Item *con /* Test if cond references only group-by or non-group fields. */ Item_func *pred= (Item_func*) cond; - Item **arguments= pred->arguments(); Item *cur_arg; DBUG_PRINT("info", ("Analyzing: %s", pred->func_name())); for (uint arg_idx= 0; arg_idx < pred->argument_count (); arg_idx++) { + Item **arguments= pred->arguments(); cur_arg= arguments[arg_idx]->real_item(); DBUG_PRINT("info", ("cur_arg: %s", cur_arg->full_name())); if (cur_arg->type() == Item::FIELD_ITEM) === modified file 'sql/sql_select.cc' --- a/sql/sql_select.cc 2011-02-22 14:24:33 +0000 +++ b/sql/sql_select.cc 2011-02-24 08:57:54 +0000 @@ -10036,12 +10036,14 @@ static bool uses_index_fields_only(Item { /* This is a function, apply condition recursively to arguments */ Item_func *item_func= (Item_func*)item; - Item **child; - Item **item_end= (item_func->arguments()) + item_func->argument_count(); - for (child= item_func->arguments(); child != item_end; child++) - { - if (!uses_index_fields_only(*child, tbl, keyno, other_tbls_ok)) - return FALSE; + if (item_func->argument_count() > 0) + { + Item **item_end= (item_func->arguments()) + item_func->argument_count(); + for (Item **child= item_func->arguments(); child != item_end; child++) + { + if (!uses_index_fields_only(*child, tbl, keyno, other_tbls_ok)) + return FALSE; + } } return TRUE; } --===============3129187821368547596== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/tor.didriksen@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: tor.didriksen@stripped\ # abx78zul0ey0o998 # target_branch: file:///export/home/didrik/repo/trunk-\ # bug59843valgrind/ # testament_sha1: e8c1824b39b659a79b0341f41f0fe39a91034760 # timestamp: 2011-02-24 09:57:59 +0100 # base_revision_id: vasil.dimov@stripped\ # x7gqnnenha8a8sje # # Begin bundle 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 --===============3129187821368547596==--