MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Konstantin Osipov Date:December 3 2009 11:47am
Subject:bzr commit into mysql-5.6-next-mr branch (kostja:2980) Bug#26141
View as plain text  
#At file:///opt/local/work/next-4284/ based on revid:kostja@stripped

 2980 Konstantin Osipov	2009-12-03
      Backport of:
      ----------------------------------------------------------
      revno: 2630.2.7
      committer: Konstantin Osipov <konstantin@stripped>
      branch nick: mysql-6.0-runtime
      timestamp: Wed 2008-06-04 15:18:52 +0400
      message:
        Fix a code regression (not observable externally) that I introduced
        in the fix for Bug#26141
      
      (backporting as part of all patches related to WL#3726)

    modified:
      sql/sp.cc
=== modified file 'sql/sp.cc'
--- a/sql/sp.cc	2009-11-19 23:48:08 +0000
+++ b/sql/sp.cc	2009-12-03 11:47:05 +0000
@@ -1693,6 +1693,12 @@ sp_cache_routines_and_add_tables_aux(THD
     int type= rt->key.str[0];
     sp_head *sp;
 
+    /*
+      Triggers can't happen here: their bodies are always processed
+      in sp_cache_routines_and_add_tables_for_triggers().
+    */
+    DBUG_ASSERT(type == TYPE_ENUM_FUNCTION || type == TYPE_ENUM_PROCEDURE);
+
     if (!(sp= sp_cache_lookup((type == TYPE_ENUM_FUNCTION ?
                               &thd->sp_func_cache : &thd->sp_proc_cache),
                               &name)))
@@ -1836,11 +1842,6 @@ int
 sp_cache_routines_and_add_tables_for_triggers(THD *thd, LEX *lex,
                                               TABLE_LIST *table)
 {
-  int ret= 0;
-
-  Sroutine_hash_entry **last_cached_routine_ptr=
-    (Sroutine_hash_entry **)lex->sroutines_list.next;
-
   if (static_cast<int>(table->lock_type) >=
       static_cast<int>(TL_WRITE_ALLOW_WRITE))
   {
@@ -1857,21 +1858,29 @@ sp_cache_routines_and_add_tables_for_tri
               add_used_routine(lex, thd->stmt_arena, &trigger->m_sroutines_key,
                                table->belong_to_view))
           {
+            int ret;
+            /* Sic: excludes the trigger key from processing */
+            Sroutine_hash_entry **last_cached_routine_ptr=
+              (Sroutine_hash_entry **)lex->sroutines_list.next;
+
             trigger->add_used_tables_to_table_list(thd, &lex->query_tables_last,
                                                    table->belong_to_view);
             trigger->propagate_attributes(lex);
             sp_update_stmt_used_routines(thd, lex,
                                          &trigger->m_sroutines,
                                          table->belong_to_view);
+
+            ret= sp_cache_routines_and_add_tables_aux(thd, lex,
+                                                      *last_cached_routine_ptr,
+                                                      FALSE);
+            if (ret)
+              return ret;
           }
         }
       }
     }
   }
-  ret= sp_cache_routines_and_add_tables_aux(thd, lex,
-                                            *last_cached_routine_ptr,
-                                            FALSE);
-  return ret;
+  return 0;
 }
 
 


Attachment: [text/bzr-bundle] bzr/kostja@sun.com-20091203114705-mleuhz52to8e0jpu.bundle
Thread
bzr commit into mysql-5.6-next-mr branch (kostja:2980) Bug#26141Konstantin Osipov3 Dec