diff options
author | unknown <serg@serg.mylan> | 2004-09-07 21:30:28 +0200 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2004-09-07 21:30:28 +0200 |
commit | 2f96e073d287fdf58f03eca3bf20f7467f757f81 (patch) | |
tree | e1cbd7bc7ac5fa0739864e430b898343bdfa631e /sql/log_event.cc | |
parent | 49d90b09f558b30adf1578dfcaf7d094e51609bd (diff) | |
parent | 419ca7152f30c6cbb8c8e8c4920a3d6e90e076a8 (diff) | |
download | mariadb-git-2f96e073d287fdf58f03eca3bf20f7467f757f81.tar.gz |
merged
mysql-test/r/rpl_set_charset.result:
Auto merged
mysql-test/r/select.result:
Auto merged
mysql-test/t/rpl_set_charset.test:
Auto merged
mysql-test/t/select.test:
Auto merged
sql/slave.cc:
Auto merged
Diffstat (limited to 'sql/log_event.cc')
-rw-r--r-- | sql/log_event.cc | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc index ef77aa6603b..1f30e932c01 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -977,7 +977,7 @@ void Query_log_event::print(FILE* file, bool short_form, char* last_db) int Query_log_event::exec_event(struct st_relay_log_info* rli) { int expected_error,actual_error= 0; - thd->db= (char*) rewrite_db(db); + thd->db= (char*) rewrite_db(db); // thd->db_length is set later if needed /* InnoDB internally stores the master log position it has processed so far; @@ -995,6 +995,11 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli) if (db_ok(thd->db, replicate_do_db, replicate_ignore_db)) { thd->set_time((time_t)when); + /* + We cannot use db_len from event to fill thd->db_length, because + rewrite_db() may have changed db. + */ + thd->db_length= thd->db ? strlen(thd->db) : 0; thd->query_length= q_len; thd->query = (char*)query; VOID(pthread_mutex_lock(&LOCK_thread_count)); @@ -1082,7 +1087,7 @@ end: VOID(pthread_mutex_lock(&LOCK_thread_count)); thd->db= 0; // prevent db from being freed thd->query= 0; // just to be sure - thd->query_length= 0; + thd->query_length= thd->db_length =0; VOID(pthread_mutex_unlock(&LOCK_thread_count)); close_thread_tables(thd); free_root(&thd->mem_root,MYF(MY_KEEP_PREALLOC)); @@ -1693,7 +1698,7 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli, bool use_rli_only_for_errors) { char *load_data_query= 0; - thd->db= (char*) rewrite_db(db); + thd->db= (char*) rewrite_db(db); // thd->db_length is set later if needed DBUG_ASSERT(thd->query == 0); thd->query_length= 0; // Should not be needed thd->query_error= 0; @@ -1728,6 +1733,7 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli, if (db_ok(thd->db, replicate_do_db, replicate_ignore_db)) { thd->set_time((time_t)when); + thd->db_length= thd->db ? strlen(thd->db) : 0; VOID(pthread_mutex_lock(&LOCK_thread_count)); thd->query_id = query_id++; VOID(pthread_mutex_unlock(&LOCK_thread_count)); @@ -1854,7 +1860,7 @@ Slave: load data infile on table '%s' at log position %s in log \ VOID(pthread_mutex_lock(&LOCK_thread_count)); thd->db= 0; thd->query= 0; - thd->query_length= 0; + thd->query_length= thd->db_length= 0; VOID(pthread_mutex_unlock(&LOCK_thread_count)); close_thread_tables(thd); if (load_data_query) |