summaryrefslogtreecommitdiff
path: root/sql/log_event.cc
diff options
context:
space:
mode:
author <Dao-Gang.Qu@sun.com>2010-12-29 11:52:57 +0800
committer <Dao-Gang.Qu@sun.com>2010-12-29 11:52:57 +0800
commitdbb832c02e5282e2703e08065f5288aabfebd9ba (patch)
tree0161431412597db7b807408f0051f720a2433b7e /sql/log_event.cc
parent920d185fd8551b9737161ee903b2d0bc24dda2f8 (diff)
downloadmariadb-git-dbb832c02e5282e2703e08065f5288aabfebd9ba.tar.gz
Bug #50914 mysqlbinlog not handling drop of current default database
mysqlbinlog only prints "use $database" statements to its output stream when the active default database changes between events. This will cause "No Database Selected" error when dropping and recreating that database. To fix the problem, we clear print_event_info->db when printing an event of CREATE/DROP/ALTER database statements, so that the Query_log_event after such statements will be printed with the use 'db' anyway except transaction keywords.
Diffstat (limited to 'sql/log_event.cc')
-rw-r--r--sql/log_event.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc
index eb7c9c30567..0b938df1987 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -2894,7 +2894,12 @@ void Query_log_event::print_query_header(IO_CACHE* file,
error_code);
}
- if (!(flags & LOG_EVENT_SUPPRESS_USE_F) && db)
+ if ((flags & LOG_EVENT_SUPPRESS_USE_F))
+ {
+ if (!is_trans_keyword())
+ print_event_info->db[0]= '\0';
+ }
+ else if (db)
{
different_db= memcmp(print_event_info->db, db, db_len + 1);
if (different_db)