Loading client/mysqldump.c +47 −1 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ static char *add_load_option(char *ptr, const char *object, const char *statement); static ulong find_set(TYPELIB *lib, const char *x, uint length, char **err_pos, uint *err_len); static char *alloc_query_str(ulong size); static char *field_escape(char *to,const char *from,uint length); static my_bool verbose=0,tFlag=0,dFlag=0,quick= 1, extended_insert= 1, Loading Loading @@ -1313,19 +1314,64 @@ static uint dump_routines_for_db(char *db) routine_name, row[2], strlen(row[2]))); if (strlen(row[2])) { char *query_str= NULL; char *definer_begin; if (opt_drop) fprintf(sql_file, "/*!50003 DROP %s IF EXISTS %s */;;\n", routine_type[i], routine_name); /* Cover DEFINER-clause in version-specific comments. TODO: this is definitely a BAD IDEA to parse SHOW CREATE output. We should user INFORMATION_SCHEMA instead. The only problem is that now INFORMATION_SCHEMA does not provide information about routine parameters. */ definer_begin= strstr(row[2], " DEFINER"); if (definer_begin) { char *definer_end= strstr(definer_begin, " PROCEDURE"); if (!definer_end) definer_end= strstr(definer_begin, " FUNCTION"); if (definer_end) { char *query_str_tail; /* Allocate memory for new query string: original string from SHOW statement and version-specific comments. */ query_str= alloc_query_str(strlen(row[2]) + 23); query_str_tail= strnmov(query_str, row[2], definer_begin - row[2]); query_str_tail= strmov(query_str_tail, "*/ /*!50019"); query_str_tail= strnmov(query_str_tail, definer_begin, definer_end - definer_begin); query_str_tail= strxmov(query_str_tail, "*/ /*!50003", definer_end, NullS); } } /* we need to change sql_mode only for the CREATE PROCEDURE/FUNCTION otherwise we may need to re-quote routine_name */; fprintf(sql_file, "/*!50003 SET SESSION SQL_MODE=\"%s\"*/;;\n", row[1] /* sql_mode */); fprintf(sql_file, "/*!50003 %s */;;\n", row[2]); fprintf(sql_file, "/*!50003 %s */;;\n", (query_str != NULL ? query_str : row[2])); fprintf(sql_file, "/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE*/" ";;\n"); my_free(query_str, MYF(MY_ALLOW_ZERO_PTR)); } } /* end of routine printing */ } /* end of list of routines */ Loading mysql-test/include/ndb_restore_slave_eoption.inc 0 → 100644 +11 −0 Original line number Diff line number Diff line ###################################################### # By JBM 2006-03-08 So that the code is not repeated # # in test cases and can be reused. # ###################################################### --exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT_SLAVE" -p 8 -b $the_backup_id -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT --exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT_SLAVE" -p 8 -b $the_backup_id -n 2 -r -e --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT mysql-test/lib/mtr_cases.pl +6 −0 Original line number Diff line number Diff line Loading @@ -262,6 +262,12 @@ sub collect_one_test_case($$$$$$$) { $tinfo->{'skip'}= 1; return; } if ( ! $::opt_with_ndbcluster ) { # Ndb is not supported, skip them $tinfo->{'skip'}= 1; return; } } else { Loading mysql-test/mysql-test-run.pl +2 −2 Original line number Diff line number Diff line Loading @@ -2034,7 +2034,7 @@ sub run_testcase ($) { if ( $tinfo->{'master_restart'} or $master->[0]->{'running_master_is_special'} or # Stop if cluster is started but test cases does not need cluster ( $tinfo->{'ndb_test'} != $using_ndbcluster_master ) ) ( $opt_with_ndbcluster && $tinfo->{'ndb_test'} != $using_ndbcluster_master ) ) { stop_masters(); $master->[0]->{'running_master_is_special'}= 0; # Forget why we stopped Loading Loading @@ -2087,7 +2087,7 @@ sub run_testcase ($) { if ( $tinfo->{'component_id'} eq 'mysqld' and ! $opt_local_master ) { if ( $master->[0]->{'ndbcluster'} ) if ( $opt_with_ndbcluster and $master->[0]->{'ndbcluster'} ) { # Cluster is not started Loading mysql-test/r/gis.result +1 −1 Original line number Diff line number Diff line Loading @@ -680,7 +680,7 @@ drop procedure if exists fn3; create function fn3 () returns point return GeomFromText("point(1 1)"); show create function fn3; Function sql_mode Create Function fn3 CREATE FUNCTION `fn3`() RETURNS point fn3 CREATE DEFINER=`root`@`localhost` FUNCTION `fn3`() RETURNS point return GeomFromText("point(1 1)") select astext(fn3()); astext(fn3()) Loading Loading
client/mysqldump.c +47 −1 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ static char *add_load_option(char *ptr, const char *object, const char *statement); static ulong find_set(TYPELIB *lib, const char *x, uint length, char **err_pos, uint *err_len); static char *alloc_query_str(ulong size); static char *field_escape(char *to,const char *from,uint length); static my_bool verbose=0,tFlag=0,dFlag=0,quick= 1, extended_insert= 1, Loading Loading @@ -1313,19 +1314,64 @@ static uint dump_routines_for_db(char *db) routine_name, row[2], strlen(row[2]))); if (strlen(row[2])) { char *query_str= NULL; char *definer_begin; if (opt_drop) fprintf(sql_file, "/*!50003 DROP %s IF EXISTS %s */;;\n", routine_type[i], routine_name); /* Cover DEFINER-clause in version-specific comments. TODO: this is definitely a BAD IDEA to parse SHOW CREATE output. We should user INFORMATION_SCHEMA instead. The only problem is that now INFORMATION_SCHEMA does not provide information about routine parameters. */ definer_begin= strstr(row[2], " DEFINER"); if (definer_begin) { char *definer_end= strstr(definer_begin, " PROCEDURE"); if (!definer_end) definer_end= strstr(definer_begin, " FUNCTION"); if (definer_end) { char *query_str_tail; /* Allocate memory for new query string: original string from SHOW statement and version-specific comments. */ query_str= alloc_query_str(strlen(row[2]) + 23); query_str_tail= strnmov(query_str, row[2], definer_begin - row[2]); query_str_tail= strmov(query_str_tail, "*/ /*!50019"); query_str_tail= strnmov(query_str_tail, definer_begin, definer_end - definer_begin); query_str_tail= strxmov(query_str_tail, "*/ /*!50003", definer_end, NullS); } } /* we need to change sql_mode only for the CREATE PROCEDURE/FUNCTION otherwise we may need to re-quote routine_name */; fprintf(sql_file, "/*!50003 SET SESSION SQL_MODE=\"%s\"*/;;\n", row[1] /* sql_mode */); fprintf(sql_file, "/*!50003 %s */;;\n", row[2]); fprintf(sql_file, "/*!50003 %s */;;\n", (query_str != NULL ? query_str : row[2])); fprintf(sql_file, "/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE*/" ";;\n"); my_free(query_str, MYF(MY_ALLOW_ZERO_PTR)); } } /* end of routine printing */ } /* end of list of routines */ Loading
mysql-test/include/ndb_restore_slave_eoption.inc 0 → 100644 +11 −0 Original line number Diff line number Diff line ###################################################### # By JBM 2006-03-08 So that the code is not repeated # # in test cases and can be reused. # ###################################################### --exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT_SLAVE" -p 8 -b $the_backup_id -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT --exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT_SLAVE" -p 8 -b $the_backup_id -n 2 -r -e --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT
mysql-test/lib/mtr_cases.pl +6 −0 Original line number Diff line number Diff line Loading @@ -262,6 +262,12 @@ sub collect_one_test_case($$$$$$$) { $tinfo->{'skip'}= 1; return; } if ( ! $::opt_with_ndbcluster ) { # Ndb is not supported, skip them $tinfo->{'skip'}= 1; return; } } else { Loading
mysql-test/mysql-test-run.pl +2 −2 Original line number Diff line number Diff line Loading @@ -2034,7 +2034,7 @@ sub run_testcase ($) { if ( $tinfo->{'master_restart'} or $master->[0]->{'running_master_is_special'} or # Stop if cluster is started but test cases does not need cluster ( $tinfo->{'ndb_test'} != $using_ndbcluster_master ) ) ( $opt_with_ndbcluster && $tinfo->{'ndb_test'} != $using_ndbcluster_master ) ) { stop_masters(); $master->[0]->{'running_master_is_special'}= 0; # Forget why we stopped Loading Loading @@ -2087,7 +2087,7 @@ sub run_testcase ($) { if ( $tinfo->{'component_id'} eq 'mysqld' and ! $opt_local_master ) { if ( $master->[0]->{'ndbcluster'} ) if ( $opt_with_ndbcluster and $master->[0]->{'ndbcluster'} ) { # Cluster is not started Loading
mysql-test/r/gis.result +1 −1 Original line number Diff line number Diff line Loading @@ -680,7 +680,7 @@ drop procedure if exists fn3; create function fn3 () returns point return GeomFromText("point(1 1)"); show create function fn3; Function sql_mode Create Function fn3 CREATE FUNCTION `fn3`() RETURNS point fn3 CREATE DEFINER=`root`@`localhost` FUNCTION `fn3`() RETURNS point return GeomFromText("point(1 1)") select astext(fn3()); astext(fn3()) Loading