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) | cbell | 12 Apr |