From: Tor Didriksen Date: February 25 2011 9:02am Subject: bzr commit into mysql-trunk branch (tor.didriksen:3710) Bug#11766678 List-Archive: http://lists.mysql.com/commits/132046 X-Bug: 11766678 Message-Id: <20110225090227.8A0B73791@atum07.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1014289290511985952==" --===============1014289290511985952== 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:tor.didriksen@stripped 3710 Tor Didriksen 2011-02-25 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-25 09:02:19 +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-25 09:02:19 +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-25 09:02:19 +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-25 09:02:19 +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-25 09:02:19 +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-25 09:02:19 +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-25 09:02:19 +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-25 09:02:19 +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; } --===============1014289290511985952== 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\ # idu095dui134fbpx # target_branch: file:///export/home/didrik/repo/trunk-\ # bug59843valgrind/ # testament_sha1: e5d8230d796bb8301e6559357624c35f1b6f1217 # timestamp: 2011-02-25 10:02:27 +0100 # base_revision_id: tor.didriksen@stripped\ # asncm330rif3v000 # # Begin bundle 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 --===============1014289290511985952==--