mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #40877: multi statement execution fails in 5.1.30
Implemented the server infrastructure for the fix: 1. Added a function LEX_STRING *thd_query_string(THD) to return a LEX_STRING structure instead of char *. This is the function that must be called in innodb instead of thd_query() 2. Did some encapsulation in THD : aggregated thd_query and thd_query_length into a LEX_STRING and made accessor and mutator methods for easy code updating. 3. Updated the server code to use the new methods where applicable.
This commit is contained in:
@ -703,7 +703,7 @@ not_silent:
|
||||
char *query;
|
||||
uint query_length;
|
||||
|
||||
if (!thd->query) // Only in replication
|
||||
if (!thd->query()) // Only in replication
|
||||
{
|
||||
query= tmp_query;
|
||||
query_length= (uint) (strxmov(tmp_query,"create database `",
|
||||
@ -711,8 +711,8 @@ not_silent:
|
||||
}
|
||||
else
|
||||
{
|
||||
query= thd->query;
|
||||
query_length= thd->query_length;
|
||||
query= thd->query();
|
||||
query_length= thd->query_length();
|
||||
}
|
||||
|
||||
ha_binlog_log_query(thd, 0, LOGCOM_CREATE_DB,
|
||||
@ -805,13 +805,13 @@ bool mysql_alter_db(THD *thd, const char *db, HA_CREATE_INFO *create_info)
|
||||
}
|
||||
|
||||
ha_binlog_log_query(thd, 0, LOGCOM_ALTER_DB,
|
||||
thd->query, thd->query_length,
|
||||
thd->query(), thd->query_length(),
|
||||
db, "");
|
||||
|
||||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
int errcode= query_error_code(thd, TRUE);
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length, 0,
|
||||
Query_log_event qinfo(thd, thd->query(), thd->query_length(), 0,
|
||||
/* suppress_use */ TRUE, errcode);
|
||||
|
||||
/*
|
||||
@ -948,7 +948,7 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
|
||||
{
|
||||
const char *query;
|
||||
ulong query_length;
|
||||
if (!thd->query)
|
||||
if (!thd->query())
|
||||
{
|
||||
/* The client used the old obsolete mysql_drop_db() call */
|
||||
query= path;
|
||||
@ -957,8 +957,8 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
|
||||
}
|
||||
else
|
||||
{
|
||||
query =thd->query;
|
||||
query_length= thd->query_length;
|
||||
query= thd->query();
|
||||
query_length= thd->query_length();
|
||||
}
|
||||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
@ -1964,7 +1964,7 @@ bool mysql_upgrade_db(THD *thd, LEX_STRING *old_db)
|
||||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
int errcode= query_error_code(thd, TRUE);
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length,
|
||||
Query_log_event qinfo(thd, thd->query(), thd->query_length(),
|
||||
0, TRUE, errcode);
|
||||
thd->clear_error();
|
||||
mysql_bin_log.write(&qinfo);
|
||||
|
Reference in New Issue
Block a user