List:Commits« Previous MessageNext Message »
From:cbell Date:April 12 2007 6:32pm
Subject:bk commit into 5.1 tree (cbell:1.2512)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of cbell. When cbell does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-04-12 14:31:42-04:00, cbell@mysql_cab_desk. +1 -0
  WL#3327 : Online Backup Plan - Phase 2
        
  This patch corrects the metadata for saving SQL CREATE strings for 
  CREATE PROCEDURE and CREATE FUNCTION.

  sql/backup/meta_backup.cc@stripped, 2007-04-12 14:31:39-04:00, cbell@mysql_cab_desk. +32 -16
    WL#3327 : Online Backup Plan - Phase 2
          
    This patch contains changes to the metadata methods to allow for larger
    metadata strings (by using one chunk per string) and corrects a flaw
    in the stored procedure SQL string creation.

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	cbell
# Host:	mysql_cab_desk.
# Root:	C:/source/c++/mysql-5.1-backup-phase2

--- 1.10/sql/backup/meta_backup.cc	2007-04-12 14:31:55 -04:00
+++ 1.11/sql/backup/meta_backup.cc	2007-04-12 14:31:55 -04:00
@@ -8,6 +8,7 @@
 #include "backup_aux.h"
 #include "sp.h"
 #include "sql_trigger.h"
+#include "log.h"
 
 namespace backup {
 
@@ -118,8 +119,10 @@
       String *s;
       List_iterator<String> tbl_meta(t->table_metadata);
       while ((s= tbl_meta++))
+      {
         str.writestr(s->c_ptr());                // write table metadata string
-      str.end_chunk();
+        str.end_chunk();
+      }
     }
   }
 
@@ -244,9 +247,9 @@
         s->length(0);
         res= str.readstr(*s);                // read table metadata string
         TEST_RD_RES(res);
+        res= str.next_chunk();
         ti->table_metadata.push_back(s);
       }
-      res= str.next_chunk();
       cat->tables.push_back(ti);
     }
     info.catalog.push_back(cat);             // add db data to catalog
@@ -475,8 +478,13 @@
                     ("constructing the CREATE TRIGGER statement"));
           tbl_sql= new (current_thd->mem_root) String();
           tbl_sql->length(0);
-          tbl_sql->append("CREATE DEFINER = ");
-          tbl_sql->append(definer_buffer.str);
+          if (definer_buffer.length)
+          {
+            tbl_sql->append("CREATE DEFINER = ");
+            tbl_sql->append(definer_buffer.str);
+          }
+          else
+            tbl_sql->append("CREATE");
           tbl_sql->append(" TRIGGER ");
           tbl_sql->append(trigger_name.str);
           tbl_sql->append(" ");
@@ -552,6 +560,7 @@
   DBUG_PRINT("metadata_backup", ("checking the database"));
   db_name.str= thd->alloc(strlen(db) + 2);
   db_name.length= strlen(db);
+  strcpy(db_name.str, db);
   if (check_db_name(&db_name))
   {
     DBUG_PRINT("metadata_backup", ("error with database name"));
@@ -596,6 +605,7 @@
   proc_table->file->ha_index_init(0, 1);
   while (!proc_table->file->index_next(proc_table->record[0]))
   {
+    db_sql= new (current_thd->mem_root) String();
     get_field(thd->mem_root, proc_table->field[0], &tmp);
     if (my_strcasecmp(system_charset_info, tmp.c_ptr(), db) == 0)
     {
@@ -607,22 +617,31 @@
                 ("constructing the CREATE PROCEDURE/FUNCION statement"));
       db_sql->length(0);
       db_sql->append("CREATE ");
-      get_field(thd->mem_root, proc_table->field[7], &tmp);
-      db_sql->append(tmp);
       get_field(thd->mem_root, proc_table->field[11], &tmp);
-      db_sql->append(" = ");
-      db_sql->append(tmp);
+      if (tmp.length())
+      {
+        get_field(thd->mem_root, proc_table->field[7], &tmp);
+        db_sql->append(tmp);
+        get_field(thd->mem_root, proc_table->field[11], &tmp);
+        db_sql->append(" = ");
+        db_sql->append(tmp);
+        db_sql->append(" ");
+      }
       get_field(thd->mem_root, proc_table->field[2], &tmp);
+      db_sql->append(tmp);
       db_sql->append(" ");
+      get_field(thd->mem_root, proc_table->field[0], &tmp);
+      db_sql->append(tmp);
+      db_sql->append(".");
+      get_field(thd->mem_root, proc_table->field[1], &tmp);
       db_sql->append(tmp);
+      db_sql->append(" ");
+      get_field(thd->mem_root, proc_table->field[2], &tmp);
       if (!my_strcasecmp(system_charset_info, tmp.c_ptr(), "PROCEDURE"))
       {
         /* It's a procedure */
-        get_field(thd->mem_root, proc_table->field[1], &tmp);
-        db_sql->append(" ");
-        db_sql->append(tmp);
         get_field(thd->mem_root, proc_table->field[8], &tmp);
-        db_sql->append(" (");
+        db_sql->append("(");
         db_sql->append(tmp);
         get_field(thd->mem_root, proc_table->field[10], &tmp);
         db_sql->append(") \n");
@@ -631,11 +650,8 @@
       else
       {
         /* It's a function */
-        get_field(thd->mem_root, proc_table->field[1], &tmp);
-        db_sql->append(" ");
-        db_sql->append(tmp);
         get_field(thd->mem_root, proc_table->field[8], &tmp);
-        db_sql->append(" (");
+        db_sql->append("(");
         db_sql->append(tmp);
         db_sql->append(") \nRETURNS ");
         get_field(thd->mem_root, proc_table->field[9], &tmp);

Thread
bk commit into 5.1 tree (cbell:1.2512)cbell12 Apr