@@ -232,7 +232,7 @@ static int process_selected_tables(char *db, char **table_names, int tables);
232
232
static int process_all_tables_in_db (char * database );
233
233
static int process_one_db (char * database );
234
234
static int use_db (char * database );
235
- static int handle_request_for_tables (char * tables , size_t length , my_bool view );
235
+ static int handle_request_for_tables (char * , size_t , my_bool , my_bool );
236
236
static int dbConnect (char * host , char * user ,char * passwd );
237
237
static void dbDisconnect (char * host );
238
238
static void DBerror (MYSQL * mysql , const char * when );
@@ -566,7 +566,7 @@ static int process_selected_tables(char *db, char **table_names, int tables)
566
566
}
567
567
* -- end = 0 ;
568
568
handle_request_for_tables (table_names_comma_sep + 1 , tot_length - 1 ,
569
- opt_do_views != 0 );
569
+ opt_do_views != 0 , opt_all_in_1 );
570
570
my_free (table_names_comma_sep );
571
571
}
572
572
else
@@ -577,7 +577,7 @@ static int process_selected_tables(char *db, char **table_names, int tables)
577
577
view = is_view (table );
578
578
if (view < 0 )
579
579
continue ;
580
- handle_request_for_tables (table , table_len , ( view == 1 ) );
580
+ handle_request_for_tables (table , table_len , view == 1 , opt_all_in_1 );
581
581
}
582
582
DBUG_RETURN (0 );
583
583
} /* process_selected_tables */
@@ -605,13 +605,9 @@ static char *fix_table_name(char *dest, char *src)
605
605
* dest ++ = '`' ;
606
606
for (; * src ; src ++ )
607
607
{
608
- switch (* src ) {
609
- case '`' : /* escape backtick character */
608
+ if (* src == '`' )
610
609
* dest ++ = '`' ;
611
- /* fall through */
612
- default :
613
- * dest ++ = * src ;
614
- }
610
+ * dest ++ = * src ;
615
611
}
616
612
* dest ++ = '`' ;
617
613
@@ -700,9 +696,9 @@ static int process_all_tables_in_db(char *database)
700
696
* -- end = 0 ;
701
697
* -- views_end = 0 ;
702
698
if (tot_length )
703
- handle_request_for_tables (tables + 1 , tot_length - 1 , FALSE);
699
+ handle_request_for_tables (tables + 1 , tot_length - 1 , FALSE, opt_all_in_1 );
704
700
if (tot_views_length )
705
- handle_request_for_tables (views + 1 , tot_views_length - 1 , TRUE);
701
+ handle_request_for_tables (views + 1 , tot_views_length - 1 , TRUE, opt_all_in_1 );
706
702
my_free (tables );
707
703
my_free (views );
708
704
}
@@ -728,7 +724,7 @@ static int process_all_tables_in_db(char *database)
728
724
!strcmp (row [0 ], "slow_log" )))
729
725
continue ; /* Skip logging tables */
730
726
731
- handle_request_for_tables (row [0 ], fixed_name_length (row [0 ]), view );
727
+ handle_request_for_tables (row [0 ], fixed_name_length (row [0 ]), view , opt_all_in_1 );
732
728
}
733
729
}
734
730
mysql_free_result (res );
@@ -756,7 +752,7 @@ static int fix_table_storage_name(const char *name)
756
752
757
753
if (strncmp (name , "#mysql50#" , 9 ))
758
754
DBUG_RETURN (1 );
759
- my_snprintf (qbuf , sizeof (qbuf ), "RENAME TABLE `%s` TO `%s` " ,
755
+ my_snprintf (qbuf , sizeof (qbuf ), "RENAME TABLE %`s TO %`s " ,
760
756
name , name + 9 );
761
757
762
758
rc = run_query (qbuf );
@@ -773,7 +769,7 @@ static int fix_database_storage_name(const char *name)
773
769
774
770
if (strncmp (name , "#mysql50#" , 9 ))
775
771
DBUG_RETURN (1 );
776
- my_snprintf (qbuf , sizeof (qbuf ), "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY "
772
+ my_snprintf (qbuf , sizeof (qbuf ), "ALTER DATABASE %`s UPGRADE DATA DIRECTORY "
777
773
"NAME" , name );
778
774
rc = run_query (qbuf );
779
775
if (verbose )
@@ -787,13 +783,11 @@ static int rebuild_table(char *name)
787
783
int rc = 0 ;
788
784
DBUG_ENTER ("rebuild_table" );
789
785
790
- query = (char * )my_malloc (sizeof (char ) * (12 + fixed_name_length (name ) + 6 + 1 ),
786
+ query = (char * )my_malloc (sizeof (char ) * (12 + strlen (name ) + 6 + 1 ),
791
787
MYF (MY_WME ));
792
788
if (!query )
793
789
DBUG_RETURN (1 );
794
- ptr = strmov (query , "ALTER TABLE " );
795
- ptr = fix_table_name (ptr , name );
796
- ptr = strxmov (ptr , " FORCE" , NullS );
790
+ ptr = strxmov (query , "ALTER TABLE " , name , " FORCE" , NullS );
797
791
if (mysql_real_query (sock , query , (ulong )(ptr - query )))
798
792
{
799
793
fprintf (stderr , "Failed to %s\n" , query );
@@ -855,7 +849,8 @@ static int disable_binlog()
855
849
return run_query (stmt );
856
850
}
857
851
858
- static int handle_request_for_tables (char * tables , size_t length , my_bool view )
852
+ static int handle_request_for_tables (char * tables , size_t length ,
853
+ my_bool view , my_bool dont_quote )
859
854
{
860
855
char * query , * end , options [100 ], message [100 ];
861
856
char table_name_buff [NAME_CHAR_LEN * 2 * 2 + 1 ], * table_name ;
@@ -913,7 +908,7 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
913
908
914
909
if (!(query = (char * ) my_malloc (query_size , MYF (MY_WME ))))
915
910
DBUG_RETURN (1 );
916
- if (opt_all_in_1 )
911
+ if (dont_quote )
917
912
{
918
913
DBUG_ASSERT (strlen (op )+ strlen (tables )+ strlen (options )+ 8 + 1 <= query_size );
919
914
@@ -956,23 +951,27 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
956
951
DBUG_RETURN (0 );
957
952
}
958
953
954
+ static void insert_table_name (DYNAMIC_ARRAY * arr , char * in , size_t dblen )
955
+ {
956
+ char buf [NAME_LEN * 2 + 2 ];
957
+ in [dblen ]= 0 ;
958
+ my_snprintf (buf , sizeof (buf ), "%`s.%`s" , in , in + dblen + 1 );
959
+ insert_dynamic (arr , (uchar * ) buf );
960
+ }
959
961
960
962
static void print_result ()
961
963
{
962
964
MYSQL_RES * res ;
963
965
MYSQL_ROW row ;
964
966
char prev [(NAME_LEN + 9 )* 3 + 2 ];
965
967
char prev_alter [MAX_ALTER_STR_SIZE ];
966
- char * db_name ;
967
- uint length_of_db ;
968
+ size_t length_of_db = strlen (sock -> db );
968
969
uint i ;
969
970
my_bool found_error = 0 , table_rebuild = 0 ;
970
971
DYNAMIC_ARRAY * array4repair = & tables4repair ;
971
972
DBUG_ENTER ("print_result" );
972
973
973
974
res = mysql_use_result (sock );
974
- db_name = sock -> db ;
975
- length_of_db = strlen (db_name );
976
975
977
976
prev [0 ] = '\0' ;
978
977
prev_alter [0 ]= 0 ;
@@ -996,16 +995,10 @@ static void print_result()
996
995
if (prev_alter [0 ])
997
996
insert_dynamic (& alter_table_cmds , (uchar * ) prev_alter );
998
997
else
999
- {
1000
- char * table_name = prev + (length_of_db + 1 );
1001
- insert_dynamic (& tables4rebuild , (uchar * ) table_name );
1002
- }
998
+ insert_table_name (& tables4rebuild , prev , length_of_db );
1003
999
}
1004
1000
else
1005
- {
1006
- char * table_name = prev + (length_of_db + 1 );
1007
- insert_dynamic (array4repair , (uchar * ) table_name );
1008
- }
1001
+ insert_table_name (array4repair , prev , length_of_db );
1009
1002
}
1010
1003
array4repair = & tables4repair ;
1011
1004
found_error = 0 ;
@@ -1072,16 +1065,10 @@ static void print_result()
1072
1065
if (prev_alter [0 ])
1073
1066
insert_dynamic (& alter_table_cmds , (uchar * ) prev_alter );
1074
1067
else
1075
- {
1076
- char * table_name = prev + (length_of_db + 1 );
1077
- insert_dynamic (& tables4rebuild , (uchar * ) table_name );
1078
- }
1068
+ insert_table_name (& tables4rebuild , prev , length_of_db );
1079
1069
}
1080
1070
else
1081
- {
1082
- char * table_name = prev + (length_of_db + 1 );
1083
- insert_dynamic (array4repair , (uchar * ) table_name );
1084
- }
1071
+ insert_table_name (array4repair , prev , length_of_db );
1085
1072
}
1086
1073
mysql_free_result (res );
1087
1074
DBUG_VOID_RETURN ;
@@ -1215,7 +1202,7 @@ int main(int argc, char **argv)
1215
1202
for (i = 0 ; i < tables4repair .elements ; i ++ )
1216
1203
{
1217
1204
char * name = (char * ) dynamic_array_ptr (& tables4repair , i );
1218
- handle_request_for_tables (name , fixed_name_length (name ), FALSE);
1205
+ handle_request_for_tables (name , fixed_name_length (name ), FALSE, TRUE );
1219
1206
}
1220
1207
for (i = 0 ; i < tables4rebuild .elements ; i ++ )
1221
1208
rebuild_table ((char * ) dynamic_array_ptr (& tables4rebuild , i ));
@@ -1226,7 +1213,7 @@ int main(int argc, char **argv)
1226
1213
for (i = 0 ; i < views4repair .elements ; i ++ )
1227
1214
{
1228
1215
char * name = (char * ) dynamic_array_ptr (& views4repair , i );
1229
- handle_request_for_tables (name , fixed_name_length (name ), TRUE);
1216
+ handle_request_for_tables (name , fixed_name_length (name ), TRUE, TRUE );
1230
1217
}
1231
1218
}
1232
1219
ret = test (first_error );
0 commit comments