From: Ole John Aske Date: November 16 2010 1:31pm Subject: bzr push into mysql-5.1-telco-7.0-spj-scan-vs-scan branch (ole.john.aske:3370 to 3371) List-Archive: http://lists.mysql.com/commits/124038 Message-Id: <20101116133100.73092222@fimafeng09.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3371 Ole John Aske 2010-11-16 SPJ-scan-scan: Extended RQG grammar to also allow 'IS (not) NULL', general comparison predicates, IN predicates, and AND/OR combinations in join conditions. modified: storage/ndb/test/rqg/spj_test.yy 3370 Ole John Aske 2010-11-16 SPJ-scan-scan: Added handling and testcase for JT_SYSTEM optimized tables: A JT_SYSTEM table has already been read, or determined to contain no rows, by the optimizer. This table should therefore be excluded from pushability evaluation in ha_ndbcluster. modified: mysql-test/suite/ndb/r/ndb_join_pushdown.result mysql-test/suite/ndb/t/ndb_join_pushdown.test sql/abstract_query_plan.cc sql/abstract_query_plan.h sql/ha_ndbcluster.cc sql/sql_select.cc === modified file 'storage/ndb/test/rqg/spj_test.yy' --- a/storage/ndb/test/rqg/spj_test.yy 2010-11-12 08:14:52 +0000 +++ b/storage/ndb/test/rqg/spj_test.yy 2010-11-16 13:30:39 +0000 @@ -282,6 +282,7 @@ join_condition: | int_condition | int_condition | char_condition + | other_condition ; int_condition: @@ -308,8 +309,8 @@ int_multi_conditions: existing_left_table.col_int = existing_right_table.col_int AND existing_left_table.col_int_key = existing_right_table.col_int_key AND existing_left_table.col_int_unique = existing_right_table.col_int_unique - | - int_condition AND int_condition +#| +# int_condition AND int_condition ; char_condition: @@ -326,8 +327,18 @@ char_multi_conditions: # ix2(col_varchar_256,col_char_16_unique) existing_left_table.col_varchar_256 = existing_right_table.col_varchar_256 AND existing_left_table.col_varchar_10_unique = existing_right_table.col_varchar_10_unique - | - char_condition AND char_condition +#| +# char_condition AND char_condition + ; + +other_condition: + existing_left_table.col_int comparison_operator existing_right_table.col_int + | existing_left_table.col_int IS not NULL + | existing_right_table.col_int IS not NULL + | existing_left_table.col_int not IN (number_list) + | existing_right_table.col_int not IN (number_list) + | join_condition and_or join_condition + | not (join_condition) is_truth_value ; existing_left_table: No bundle (reason: useless for push emails).