List:Commits« Previous MessageNext Message »
From:Sergey Petrunia Date:October 14 2008 2:19am
Subject:bzr push into mysql-6.0-opt-subqueries branch (sergefp:2698 to 2699)
View as plain text  
 2699 Sergey Petrunia	2008-10-14
      Fix the problem introduced in the previous cset: don't buypass subquery rewrite for non-IN subqueries.
modified:
  sql/sql_select.cc

 2698 Sergey Petrunia	2008-10-14
      WL#3985: Subqueries: smart choice between semi-join and materialization
      - Code cleanup, adding comments
modified:
  sql/sql_lex.h
  sql/sql_select.cc

=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc	2008-10-13 22:27:26 +0000
+++ b/sql/sql_select.cc	2008-10-14 02:07:59 +0000
@@ -564,13 +564,14 @@ JOIN::prepare(Item ***rref_pointer_array
     TODO: for PS, make the whole block execute only on the first execution
   */
   Item_subselect *subselect;
-  if (!thd->lex->view_prepare_mode && 
-      (subselect= select_lex->master_unit()->item) && 
-      subselect->substype() == Item_subselect::IN_SUBS)
+  if (!thd->lex->view_prepare_mode &&
+      (subselect= select_lex->master_unit()->item))
   {
-    Item_in_subselect *in_subs= (Item_in_subselect*)subselect;
+    Item_in_subselect *in_subs= NULL;
     bool do_semijoin= !test(thd->variables.optimizer_switch &
                             OPTIMIZER_SWITCH_NO_SEMIJOIN);
+    if (subselect->substype() == Item_subselect::IN_SUBS)
+      in_subs= (Item_in_subselect*)subselect;
     DBUG_PRINT("info", ("Checking if subq can be converted to semi-join"));
     /*
       Check if we're in subquery that is a candidate for flattening into a

Thread
bzr push into mysql-6.0-opt-subqueries branch (sergefp:2698 to 2699)Sergey Petrunia14 Oct