diff options
author | unknown <monty@mishka.local> | 2005-08-24 19:37:27 +0300 |
---|---|---|
committer | unknown <monty@mishka.local> | 2005-08-24 19:37:27 +0300 |
commit | 7b39b01b9a7d607e19212812a5b718357c08ff04 (patch) | |
tree | cb2aadadd8b6dfb062e15f1c6bff7c54ab764e71 /sql/sql_db.cc | |
parent | b977af8ace45a57abf4d1046d750997a275c4b9e (diff) | |
download | mariadb-git-7b39b01b9a7d607e19212812a5b718357c08ff04.tar.gz |
Review fixes
mysql-test/r/ctype_cp932.result:
Remove first event to make things portable
mysql-test/r/rpl_drop_db.result:
Use 'mysqltest' as database instead of 'd1'
Made test faster by using longer table names instead of lots of tables
mysql-test/t/ctype_cp932.test:
Remove first event to make things portable
mysql-test/t/rpl_drop_db.test:
Use 'mysqltest' as database instead of 'd1'
Made test faster by using longer table names instead of lots of tables
sql/sql_db.cc:
Indentation & style fixes
Simple optimization (remove constant and boolean variable)
Diffstat (limited to 'sql/sql_db.cc')
-rw-r--r-- | sql/sql_db.cc | 94 |
1 files changed, 46 insertions, 48 deletions
diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 6dcc7be0904..a279fae93a9 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -33,12 +33,8 @@ static TYPELIB deletable_extentions= static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *db, const char *path, uint level, - TABLE_LIST** dropped_tables); + TABLE_LIST **dropped_tables); - -static inline void write_to_binlog(THD* thd, char* query, uint q_len, - char* db, uint db_len); - /* Database options hash */ static HASH dboptions; static my_bool dboptions_init= 0; @@ -56,6 +52,7 @@ typedef struct my_dbopt_st /* Function we use in the creation of our hash to get key. */ + static byte* dboptions_get_key(my_dbopt_t *opt, uint *length, my_bool not_used __attribute__((unused))) { @@ -63,17 +60,19 @@ static byte* dboptions_get_key(my_dbopt_t *opt, uint *length, return (byte*) opt->name; } + /* - Helper function to write a query to binlog used by mysql_rm_db() - */ -static inline void write_to_binlog(THD* thd, char* query, uint q_len, - char* db, uint db_len) + Helper function to write a query to binlog used by mysql_rm_db() +*/ + +static inline void write_to_binlog(THD *thd, char *query, uint q_len, + char *db, uint db_len) { - Query_log_event qinfo(thd, query, q_len, 0, 0); - qinfo.error_code= 0; - qinfo.db= db; - qinfo.db_len= db_len; - mysql_bin_log.write(&qinfo); + Query_log_event qinfo(thd, query, q_len, 0, 0); + qinfo.error_code= 0; + qinfo.db= db; + qinfo.db_len= db_len; + mysql_bin_log.write(&qinfo); } @@ -644,7 +643,7 @@ int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent) error= -1; if ((deleted= mysql_rm_known_files(thd, dirp, db, path, 0, - &dropped_tables)) >= 0) + &dropped_tables)) >= 0) { ha_drop_database(path); query_cache_invalidate1(db); @@ -696,42 +695,40 @@ int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent) } else if (mysql_bin_log.is_open()) { - char* query= thd->alloc(MAX_DROP_TABLE_Q_LEN); - - if (!query) - goto exit; /* not much else we can do */ - char* p= strmov(query,"drop table "); - char* p_end= query + MAX_DROP_TABLE_Q_LEN; - TABLE_LIST* tbl; - bool last_query_needs_write= 0; - uint db_len= strlen(db); + char *query, *query_pos, *query_end, *query_data_start; + TABLE_LIST *tbl; + uint db_len; + + if (!(query= thd->alloc(MAX_DROP_TABLE_Q_LEN))) + goto exit; /* not much else we can do */ + query_pos= query_data_start= strmov(query,"drop table "); + query_end= query + MAX_DROP_TABLE_Q_LEN; + db_len= strlen(db); - for (tbl= dropped_tables;tbl;tbl= tbl->next) - { - if (!tbl->was_dropped) - continue; + for (tbl= dropped_tables; tbl; tbl= tbl->next) + { + uint tbl_name_len; + if (!tbl->was_dropped) + continue; - /* 3 for the quotes and the comma*/ - uint tbl_name_len= strlen(tbl->real_name) + 3; - if (p + tbl_name_len + 1 >= p_end) - { - *--p= 0; /* kill , */ - write_to_binlog(thd, query, p - query, db, db_len); - p= query + 11; /* reuse the initial "drop table" */ - } + /* 3 for the quotes and the comma*/ + tbl_name_len= strlen(tbl->real_name) + 3; + if (query_pos + tbl_name_len + 1 >= query_end) + { + write_to_binlog(thd, query, query_pos -1 - query, db, db_len); + query_pos= query_data_start; + } - *p++ = '`'; - p= strmov(p,tbl->real_name); - *p++ = '`'; - *p++ = ','; - last_query_needs_write= 1; - } + *query_pos++ = '`'; + query_pos= strmov(query_pos,tbl->real_name); + *query_pos++ = '`'; + *query_pos++ = ','; + } - if (last_query_needs_write) - { - *--p= 0; - write_to_binlog(thd, query, p - query, db, db_len); - } + if (query_pos != query_data_start) + { + write_to_binlog(thd, query, query_pos -1 - query, db, db_len); + } } exit: @@ -777,7 +774,8 @@ exit2: */ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *db, - const char *org_path, uint level, TABLE_LIST** dropped_tables) + const char *org_path, uint level, + TABLE_LIST **dropped_tables) { long deleted=0; ulong found_other_files=0; |