From: Date: August 25 2008 3:45pm Subject: bzr push into mysql-6.0 branch (serg:2691 to 2692) Bug#38492 List-Archive: http://lists.mysql.com/commits/52459 X-Bug: 38492 Message-Id: <20080825134523.10613.qmail@janus.mylan> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 2692 Sergei Golubchik 2008-08-25 different fix for Bug#38492 assert in ha_maria.cc::external_lock that makes no changes outside of ha_maria.cc and also works in embedded modified: sql/sql_class.cc sql/sql_class.h sql/sql_parse.cc storage/maria/ha_maria.cc 2691 Sergei Golubchik 2008-08-24 update maria for WL#4164: Two-byte collation IDs modified: storage/maria/ma_open.c === modified file 'sql/sql_class.cc' --- a/sql/sql_class.cc 2008-08-20 15:02:09 +0000 +++ b/sql/sql_class.cc 2008-08-25 12:25:07 +0000 @@ -391,7 +391,6 @@ Diagnostics_area::reset_diagnostics_area m_total_warn_count= 0; #endif is_sent= FALSE; - is_quit= FALSE; /** Tiny reset in debug mode to see garbage right away */ m_status= DA_EMPTY; DBUG_VOID_RETURN; === modified file 'sql/sql_class.h' --- a/sql/sql_class.h 2008-08-20 15:02:09 +0000 +++ b/sql/sql_class.h 2008-08-25 12:25:07 +0000 @@ -1141,8 +1141,6 @@ public: }; /** True if status information is sent to the client. */ bool is_sent; - /** True if connection is closed */ - bool is_quit; /** Set to make set_error_status after set_{ok,eof}_status possible. */ bool can_overwrite_status; === modified file 'sql/sql_parse.cc' --- a/sql/sql_parse.cc 2008-08-24 17:52:42 +0000 +++ b/sql/sql_parse.cc 2008-08-25 12:25:07 +0000 @@ -1242,7 +1242,6 @@ bool dispatch_command(enum enum_server_c general_log_print(thd, command, NullS); net->error=0; // Don't give 'abort' message thd->main_da.disable_status(); // Don't send anything back - thd->main_da.is_quit= TRUE; // Connection is closed error=TRUE; // End server break; @@ -1317,7 +1316,6 @@ bool dispatch_command(enum enum_server_c (long) pos); mysql_binlog_send(thd, thd->strdup(packet + 10), (my_off_t) pos, flags); unregister_slave(thd,1,1); - thd->main_da.is_quit= TRUE; // Connection is closed /* fake COM_QUIT -- if we get here, the thread needs to terminate */ error = TRUE; break; @@ -1366,7 +1364,6 @@ bool dispatch_command(enum enum_server_c my_eof(thd); close_thread_tables(thd); // Free before kill kill_mysql(); - thd->main_da.is_quit= TRUE; // Connection is closed error=TRUE; break; } === modified file 'storage/maria/ha_maria.cc' --- a/storage/maria/ha_maria.cc 2008-08-20 15:02:09 +0000 +++ b/storage/maria/ha_maria.cc 2008-08-25 12:25:07 +0000 @@ -2236,7 +2236,8 @@ int ha_maria::external_lock(THD *thd, in This is a bit excessive, ACID requires this only if there are some changes to commit (rollback shouldn't be tested). */ - DBUG_ASSERT(!thd->main_da.is_sent || thd->main_da.is_quit); + DBUG_ASSERT(!thd->main_da.is_sent || + thd->killed == THD::KILL_CONNECTION); /* autocommit ? rollback a transaction */ #ifdef MARIA_CANNOT_ROLLBACK if (ma_commit(trn))