List:Commits« Previous MessageNext Message »
From:Roy Lyseng Date:November 6 2012 1:25pm
Subject:bzr push into mysql-trunk branch (roy.lyseng:4914 to 4915)
View as plain text  
 4915 Roy Lyseng	2012-11-06 [merge]
      Merge from 5.6

    modified:
      sql/item.cc
      sql/item.h
      sql/item_cmpfunc.cc
      sql/item_cmpfunc.h
      sql/item_func.cc
      sql/item_func.h
      sql/item_row.cc
      sql/item_row.h
      sql/item_subselect.cc
      sql/item_subselect.h
      sql/sql_optimizer.cc
 4914 Tor Didriksen	2012-11-06 [merge]
      merge 5.6 => trunk

    modified:
      include/m_ctype.h
      regex/my_regex.h
      regex/regcomp.c
      sql/mysqld.cc
      sql/mysqld.h
      strings/ctype-bin.c
      strings/ctype-mb.c
      strings/ctype-simple.c
      strings/ctype-uca.c
      strings/ctype-utf8.c
      strings/ctype.c
=== modified file 'sql/item.cc'
--- a/sql/item.cc	2012-11-01 11:46:09 +0000
+++ b/sql/item.cc	2012-11-06 13:24:50 +0000
@@ -2874,8 +2874,7 @@ table_map Item_field::resolved_used_tabl
 }
 
 void Item_ident::fix_after_pullout(st_select_lex *parent_select,
-                                   st_select_lex *removed_select,
-                                   Item **ref)
+                                   st_select_lex *removed_select)
 {
   /*
     Some field items may be created for use in execution only, without
@@ -7887,25 +7886,23 @@ bool Item_outer_ref::fix_fields(THD *thd
 }
 
 void Item_outer_ref::fix_after_pullout(st_select_lex *parent_select,
-                                       st_select_lex *removed_select,
-                                       Item **ref_arg)
+                                       st_select_lex *removed_select)
 {
   if (depended_from == parent_select)
   {
-    *ref_arg= outer_ref;
-    outer_ref->fix_after_pullout(parent_select, removed_select, ref_arg);
+    //*ref_arg= outer_ref;
+    outer_ref->fix_after_pullout(parent_select, removed_select);
   }
   // @todo: Find an actual test case for this funcion.
   DBUG_ASSERT(false);
 }
 
 void Item_ref::fix_after_pullout(st_select_lex *parent_select,
-                                 st_select_lex *removed_select,
-                                 Item **ref_arg)
+                                 st_select_lex *removed_select)
 {
-  (*ref)->fix_after_pullout(parent_select, removed_select, ref);
+  (*ref)->fix_after_pullout(parent_select, removed_select);
 
-  Item_ident::fix_after_pullout(parent_select, removed_select, ref_arg);
+  Item_ident::fix_after_pullout(parent_select, removed_select);
 }
 
 

=== modified file 'sql/item.h'
--- a/sql/item.h	2012-11-01 11:46:09 +0000
+++ b/sql/item.h	2012-11-06 13:24:50 +0000
@@ -775,12 +775,10 @@ public:
     @param parent_select  select_lex that tables are moved to.
     @param removed_select select_lex that tables are moved away from,
                           child of parent_select.
-    @param ref            updated with new ref whenever the function substitutes
-                          this item with another.
   */
   virtual void fix_after_pullout(st_select_lex *parent_select,
-                                 st_select_lex *removed_select,
-                                 Item **ref) {};
+                                 st_select_lex *removed_select)
+  {};
   /*
     should be used in case where we are sure that we do not need
     complete fix_fields() procedure.
@@ -2076,7 +2074,7 @@ public:
   virtual table_map resolved_used_tables() const= 0;
   const char *full_name() const;
   virtual void fix_after_pullout(st_select_lex *parent_select,
-                                 st_select_lex *removed_select, Item **ref);
+                                 st_select_lex *removed_select);
   void cleanup();
   bool remove_dependence_processor(uchar * arg);
   virtual void print(String *str, enum_query_type query_type);
@@ -3159,7 +3157,7 @@ public:
   void make_field(Send_field *field);
   bool fix_fields(THD *, Item **);
   void fix_after_pullout(st_select_lex *parent_select,
-                         st_select_lex *removed_select, Item **ref);
+                         st_select_lex *removed_select);
   type_conversion_status save_in_field(Field *field, bool no_conversions);
   void save_org_in_field(Field *field);
   enum Item_result result_type () const { return (*ref)->result_type(); }
@@ -3405,7 +3403,7 @@ public:
   }
   bool fix_fields(THD *, Item **);
   void fix_after_pullout(st_select_lex *parent_select,
-                         st_select_lex *removed_select, Item **ref);
+                         st_select_lex *removed_select);
   table_map used_tables() const
   {
     return (*ref)->const_item() ? 0 : OUTER_REF_TABLE_BIT;

=== modified file 'sql/item_cmpfunc.cc'
--- a/sql/item_cmpfunc.cc	2012-11-01 11:46:09 +0000
+++ b/sql/item_cmpfunc.cc	2012-11-06 13:24:50 +0000
@@ -1917,8 +1917,7 @@ bool Item_in_optimizer::fix_fields(THD *
 
 
 void Item_in_optimizer::fix_after_pullout(st_select_lex *parent_select,
-                                          st_select_lex *removed_select,
-                                          Item **ref)
+                                          st_select_lex *removed_select)
 {
   used_tables_cache= get_initial_pseudo_tables();
   not_null_tables_cache= 0;
@@ -1930,7 +1929,7 @@ void Item_in_optimizer::fix_after_pullou
     So, just forward the call to the Item_in_subselect object.
   */
 
-  args[1]->fix_after_pullout(parent_select, removed_select, &args[1]);
+  args[1]->fix_after_pullout(parent_select, removed_select);
 
   used_tables_cache|= args[1]->used_tables();
   not_null_tables_cache|= args[1]->not_null_tables();
@@ -4836,8 +4835,7 @@ Item_cond::fix_fields(THD *thd, Item **r
 
 
 void Item_cond::fix_after_pullout(st_select_lex *parent_select,
-                                  st_select_lex *removed_select,
-                                  Item **ref)
+                                  st_select_lex *removed_select)
 {
   List_iterator<Item> li(list);
   Item *item;
@@ -4852,8 +4850,7 @@ void Item_cond::fix_after_pullout(st_sel
 
   while ((item=li++))
   {
-    item->fix_after_pullout(parent_select, removed_select, li.ref());
-    item= *li.ref();
+    item->fix_after_pullout(parent_select, removed_select);
     used_tables_cache|= item->used_tables();
     const_item_cache&= item->const_item();
     if (functype() == COND_AND_FUNC && abort_on_null)

=== modified file 'sql/item_cmpfunc.h'
--- a/sql/item_cmpfunc.h	2012-11-01 11:46:09 +0000
+++ b/sql/item_cmpfunc.h	2012-11-06 13:24:50 +0000
@@ -283,7 +283,7 @@ public:
   bool fix_fields(THD *, Item **);
   bool fix_left(THD *thd, Item **ref);
   void fix_after_pullout(st_select_lex *parent_select,
-                         st_select_lex *removed_select, Item **ref);
+                         st_select_lex *removed_select);
   bool is_null();
   longlong val_int();
   void cleanup();
@@ -1666,7 +1666,7 @@ public:
   }
   bool fix_fields(THD *, Item **ref);
   void fix_after_pullout(st_select_lex *parent_select,
-                         st_select_lex *removed_select, Item **ref);
+                         st_select_lex *removed_select);
 
   enum Type type() const { return COND_ITEM; }
   List<Item>* argument_list() { return &list; }

=== modified file 'sql/item_func.cc'
--- a/sql/item_func.cc	2012-11-01 11:46:09 +0000
+++ b/sql/item_func.cc	2012-11-06 13:24:50 +0000
@@ -237,8 +237,7 @@ Item_func::fix_fields(THD *thd, Item **r
 
 
 void Item_func::fix_after_pullout(st_select_lex *parent_select,
-                                  st_select_lex *removed_select,
-                                  Item **ref)
+                                  st_select_lex *removed_select)
 {
   Item **arg,**arg_end;
 
@@ -250,8 +249,8 @@ void Item_func::fix_after_pullout(st_sel
   {
     for (arg=args, arg_end=args+arg_count; arg != arg_end ; arg++)
     {
-      (*arg)->fix_after_pullout(parent_select, removed_select, arg);
-      Item *item= *arg;
+      Item *const item= *arg;
+      item->fix_after_pullout(parent_select, removed_select);
 
       used_tables_cache|=     item->used_tables();
       not_null_tables_cache|= item->not_null_tables();

=== modified file 'sql/item_func.h'
--- a/sql/item_func.h	2012-11-01 11:46:09 +0000
+++ b/sql/item_func.h	2012-11-06 13:24:50 +0000
@@ -122,7 +122,7 @@ public:
   Item_func(THD *thd, Item_func *item);
   bool fix_fields(THD *, Item **ref);
   void fix_after_pullout(st_select_lex *parent_select,
-                         st_select_lex *removed_select, Item **ref);
+                         st_select_lex *removed_select);
   table_map used_tables() const;
   /**
      Returns the pseudo tables depended upon in order to evaluate this

=== modified file 'sql/item_row.cc'
--- a/sql/item_row.cc	2012-10-04 12:44:07 +0000
+++ b/sql/item_row.cc	2012-11-06 13:24:50 +0000
@@ -140,14 +140,13 @@ void Item_row::update_used_tables()
 }
 
 void Item_row::fix_after_pullout(st_select_lex *parent_select,
-                                 st_select_lex *removed_select,
-                                 Item **ref)
+                                 st_select_lex *removed_select)
 {
   used_tables_cache= 0;
   const_item_cache= 1;
   for (uint i= 0; i < arg_count; i++)
   {
-    items[i]->fix_after_pullout(parent_select, removed_select, &items[i]);
+    items[i]->fix_after_pullout(parent_select, removed_select);
     used_tables_cache|= items[i]->used_tables();
     const_item_cache&= items[i]->const_item();
   }

=== modified file 'sql/item_row.h'
--- a/sql/item_row.h	2012-03-28 18:48:25 +0000
+++ b/sql/item_row.h	2012-11-06 13:24:50 +0000
@@ -75,7 +75,7 @@ public:
 
   bool fix_fields(THD *thd, Item **ref);
   void fix_after_pullout(st_select_lex *parent_select,
-                         st_select_lex *removed_select, Item **ref);
+                         st_select_lex *removed_select);
   void cleanup();
   void split_sum_func(THD *thd, Ref_ptr_array ref_pointer_array,
                       List<Item> &fields);

=== modified file 'sql/item_subselect.cc'
--- a/sql/item_subselect.cc	2012-11-01 11:46:09 +0000
+++ b/sql/item_subselect.cc	2012-11-06 13:24:50 +0000
@@ -627,8 +627,7 @@ bool Item_subselect::exec()
 */
 
 void Item_subselect::fix_after_pullout(st_select_lex *parent_select,
-                                       st_select_lex *removed_select,
-                                       Item **ref)
+                                       st_select_lex *removed_select)
 
 {
   /* Clear usage information for this subquery predicate object */
@@ -641,17 +640,15 @@ void Item_subselect::fix_after_pullout(s
   for (SELECT_LEX *sel= unit->first_select(); sel; sel= sel->next_select())
   {
     if (sel->where)
-      sel->where->fix_after_pullout(parent_select, removed_select,
-                                    &sel->where);
+      sel->where->fix_after_pullout(parent_select, removed_select);
 
     if (sel->having)
-      sel->having->fix_after_pullout(parent_select, removed_select,
-                                     &sel->having);
+      sel->having->fix_after_pullout(parent_select, removed_select);
 
     List_iterator<Item> li(sel->item_list);
     Item *item;
     while ((item=li++))
-      item->fix_after_pullout(parent_select, removed_select, li.ref());
+      item->fix_after_pullout(parent_select, removed_select);
 
     /*
       No need to call fix_after_pullout() for outer-join conditions, as these
@@ -663,14 +660,12 @@ void Item_subselect::fix_after_pullout(s
     for (ORDER *order= (ORDER*) sel->order_list.first;
          order;
          order= order->next)
-      (*order->item)->fix_after_pullout(parent_select, removed_select,
-                                        order->item);
+      (*order->item)->fix_after_pullout(parent_select, removed_select);
 
     for (ORDER *group= (ORDER*) sel->group_list.first;
          group;
          group= group->next)
-      (*group->item)->fix_after_pullout(parent_select, removed_select,
-                                        group->item);
+      (*group->item)->fix_after_pullout(parent_select, removed_select);
   }
 }
 
@@ -2327,12 +2322,11 @@ bool Item_in_subselect::fix_fields(THD *
 
 
 void Item_in_subselect::fix_after_pullout(st_select_lex *parent_select,
-                                          st_select_lex *removed_select,
-                                          Item **ref)
+                                          st_select_lex *removed_select)
 {
-  Item_subselect::fix_after_pullout(parent_select, removed_select, ref);
+  Item_subselect::fix_after_pullout(parent_select, removed_select);
 
-  left_expr->fix_after_pullout(parent_select, removed_select, &left_expr);
+  left_expr->fix_after_pullout(parent_select, removed_select);
 
   used_tables_cache|= left_expr->used_tables();
 }

=== modified file 'sql/item_subselect.h'
--- a/sql/item_subselect.h	2012-10-04 12:44:07 +0000
+++ b/sql/item_subselect.h	2012-11-06 13:24:50 +0000
@@ -130,7 +130,7 @@ public:
   }
   bool fix_fields(THD *thd, Item **ref);
   void fix_after_pullout(st_select_lex *parent_select,
-                         st_select_lex *removed_select, Item **ref);
+                         st_select_lex *removed_select);
   virtual bool exec();
   virtual void fix_length_and_dec();
   table_map used_tables() const;
@@ -176,8 +176,7 @@ public:
   friend int  Item_field::fix_outer_field(THD *, Field **, Item **);
   friend bool Item_ref::fix_fields(THD *, Item **);
   friend void Item_ident::fix_after_pullout(st_select_lex *parent_select,
-                                            st_select_lex *removed_select,
-                                            Item **ref);
+                                            st_select_lex *removed_selec);
   friend void mark_select_range_as_dependent(THD*,
                                              st_select_lex*, st_select_lex*,
                                              Field*, Item*, Item_ident*);
@@ -469,7 +468,7 @@ public:
   virtual void print(String *str, enum_query_type query_type);
   bool fix_fields(THD *thd, Item **ref);
   void fix_after_pullout(st_select_lex *parent_select,
-                         st_select_lex *removed_select, Item **ref);
+                         st_select_lex *removed_select);
   bool init_left_expr_cache();
 
   /**

=== modified file 'sql/sql_optimizer.cc'
--- a/sql/sql_optimizer.cc	2012-11-01 11:46:09 +0000
+++ b/sql/sql_optimizer.cc	2012-11-06 13:24:50 +0000
@@ -6427,8 +6427,7 @@ static void fix_list_after_tbl_changes(s
   while ((table= it++))
   {
     if (table->join_cond())
-      table->join_cond()->fix_after_pullout(parent_select, removed_select,
-                                            table->join_cond_ref());
+      table->join_cond()->fix_after_pullout(parent_select, removed_select);
     if (table->nested_join)
       fix_list_after_tbl_changes(parent_select, removed_select,
                                  &table->nested_join->join_list);
@@ -6762,8 +6761,7 @@ static bool convert_subquery_to_semijoin
     Walk through sj nest's WHERE and ON expressions and call
     item->fix_table_changes() for all items.
   */
-  sj_nest->sj_on_expr->fix_after_pullout(parent_lex, subq_lex,
-                                         &sj_nest->sj_on_expr);
+  sj_nest->sj_on_expr->fix_after_pullout(parent_lex, subq_lex);
   fix_list_after_tbl_changes(parent_lex, subq_lex,
                              &sj_nest->nested_join->join_list);
 

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-trunk branch (roy.lyseng:4914 to 4915) Roy Lyseng7 Nov