mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0
into sanja.is.com.ua:/home/bell/mysql/bk/work-bug3-5.0 sql/sql_parse.cc: Auto merged
This commit is contained in:
@ -97,12 +97,6 @@ tags:
|
|||||||
support-files/build-tags
|
support-files/build-tags
|
||||||
.PHONY: init-db bin-dist
|
.PHONY: init-db bin-dist
|
||||||
|
|
||||||
# Test installation
|
|
||||||
|
|
||||||
test:
|
|
||||||
cd mysql-test; \
|
|
||||||
./mysql-test-run && ./mysql-test-run --ps-protocol
|
|
||||||
|
|
||||||
# Test installation. Ports are configurable from the environment.
|
# Test installation. Ports are configurable from the environment.
|
||||||
|
|
||||||
MYSQL_TEST_MANAGER_PORT = 9305
|
MYSQL_TEST_MANAGER_PORT = 9305
|
||||||
|
@ -179,9 +179,7 @@ source database
|
|||||||
echo message echo message
|
echo message echo message
|
||||||
|
|
||||||
mysqltest: At line 1: Empty variable
|
mysqltest: At line 1: Empty variable
|
||||||
sh: -c: line 0: syntax error near unexpected token `;'
|
mysqltest: At line 1: command "';' 2> /dev/null" failed
|
||||||
sh: -c: line 0: `;'
|
|
||||||
mysqltest: At line 1: command ";" failed
|
|
||||||
mysqltest: At line 1: Missing argument in exec
|
mysqltest: At line 1: Missing argument in exec
|
||||||
MySQL
|
MySQL
|
||||||
"MySQL"
|
"MySQL"
|
||||||
@ -303,8 +301,7 @@ mysqltest: At line 1: First argument to dec must be a variable (start with $)
|
|||||||
mysqltest: At line 1: End of line junk detected: "1000"
|
mysqltest: At line 1: End of line junk detected: "1000"
|
||||||
mysqltest: At line 1: Missing arguments to system, nothing to do!
|
mysqltest: At line 1: Missing arguments to system, nothing to do!
|
||||||
mysqltest: At line 1: Missing arguments to system, nothing to do!
|
mysqltest: At line 1: Missing arguments to system, nothing to do!
|
||||||
sh: NonExistsinfComamdn: command not found
|
mysqltest: At line 1: system command 'NonExistsinfComamdn 2> /dev/null' failed
|
||||||
mysqltest: At line 1: system command 'NonExistsinfComamdn' failed
|
|
||||||
test
|
test
|
||||||
test2
|
test2
|
||||||
test3
|
test3
|
||||||
|
@ -29,3 +29,14 @@ drop table if exists t1,t2,t11;
|
|||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1658 # # master-bin.000001 Yes Yes test.t1 0 0 1658 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1658 # # master-bin.000001 Yes Yes test.t1 0 0 1658 # None 0 No #
|
||||||
|
create table t1 (ts timestamp);
|
||||||
|
set one_shot time_zone='met';
|
||||||
|
insert into t1 values('2005-08-12 00:00:00');
|
||||||
|
set one_shot time_zone='met';
|
||||||
|
select * from t1;
|
||||||
|
ts
|
||||||
|
2005-08-12 00:00:00
|
||||||
|
set one_shot time_zone='met';
|
||||||
|
select * from t1;
|
||||||
|
ts
|
||||||
|
2005-08-12 00:00:00
|
||||||
|
@ -424,7 +424,7 @@ echo ;
|
|||||||
|
|
||||||
# Illegal use of exec
|
# Illegal use of exec
|
||||||
--error 1
|
--error 1
|
||||||
--exec echo "--exec ;" | $MYSQL_TEST 2>&1
|
--exec echo "--exec ';' 2> /dev/null" | $MYSQL_TEST 2>&1
|
||||||
|
|
||||||
--error 1
|
--error 1
|
||||||
--exec echo "--exec " | $MYSQL_TEST 2>&1
|
--exec echo "--exec " | $MYSQL_TEST 2>&1
|
||||||
@ -672,7 +672,7 @@ system echo "hej" > /dev/null;
|
|||||||
--error 1
|
--error 1
|
||||||
--exec echo "system $NONEXISTSINFVAREABLI;" | $MYSQL_TEST 2>&1
|
--exec echo "system $NONEXISTSINFVAREABLI;" | $MYSQL_TEST 2>&1
|
||||||
--error 1
|
--error 1
|
||||||
--exec echo "system NonExistsinfComamdn;" | $MYSQL_TEST 2>&1
|
--exec echo "system NonExistsinfComamdn 2> /dev/null;" | $MYSQL_TEST 2>&1
|
||||||
|
|
||||||
--disable_abort_on_error
|
--disable_abort_on_error
|
||||||
system NonExistsinfComamdn;
|
system NonExistsinfComamdn;
|
||||||
|
@ -36,4 +36,22 @@ sync_with_master;
|
|||||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||||
show slave status;
|
show slave status;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#12542
|
||||||
|
# TEST: "SET ONE_SHOT should always be executed on slave"
|
||||||
|
#
|
||||||
|
# We could use any timezone different than server default in this test
|
||||||
|
#
|
||||||
|
connection master;
|
||||||
|
create table t1 (ts timestamp);
|
||||||
|
set one_shot time_zone='met';
|
||||||
|
insert into t1 values('2005-08-12 00:00:00');
|
||||||
|
set one_shot time_zone='met';
|
||||||
|
select * from t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
set one_shot time_zone='met';
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -222,5 +222,6 @@ GSN_PRINT_SIGNATURE(printSCAN_FRAGREQ);
|
|||||||
|
|
||||||
GSN_PRINT_SIGNATURE(printCONTINUEB_NDBFS);
|
GSN_PRINT_SIGNATURE(printCONTINUEB_NDBFS);
|
||||||
GSN_PRINT_SIGNATURE(printCONTINUEB_DBDIH);
|
GSN_PRINT_SIGNATURE(printCONTINUEB_DBDIH);
|
||||||
|
GSN_PRINT_SIGNATURE(printSTART_FRAG_REQ);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -32,6 +32,8 @@ class StartFragReq {
|
|||||||
public:
|
public:
|
||||||
STATIC_CONST( SignalLength = 19 );
|
STATIC_CONST( SignalLength = 19 );
|
||||||
|
|
||||||
|
friend bool printSTART_FRAG_REQ(FILE *, const Uint32 *, Uint32, Uint16);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Uint32 userPtr;
|
Uint32 userPtr;
|
||||||
Uint32 userRef;
|
Uint32 userRef;
|
||||||
|
@ -33,7 +33,6 @@ EventLoggerBase::~EventLoggerBase()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define QQQQ char *m_text, size_t m_text_len, const Uint32* theData
|
#define QQQQ char *m_text, size_t m_text_len, const Uint32* theData
|
||||||
|
|
||||||
void getTextConnected(QQQQ) {
|
void getTextConnected(QQQQ) {
|
||||||
@ -434,10 +433,12 @@ void getTextNR_CopyFragsCompleted(QQQQ) {
|
|||||||
void getTextLCPFragmentCompleted(QQQQ) {
|
void getTextLCPFragmentCompleted(QQQQ) {
|
||||||
BaseString::snprintf(m_text, m_text_len,
|
BaseString::snprintf(m_text, m_text_len,
|
||||||
"Table ID = %u, fragment ID = %u has completed LCP "
|
"Table ID = %u, fragment ID = %u has completed LCP "
|
||||||
"on Node %u",
|
"on Node %u maxGciStarted: %d maxGciCompleted: %d",
|
||||||
theData[2],
|
theData[2],
|
||||||
theData[3],
|
theData[3],
|
||||||
theData[1]);
|
theData[1],
|
||||||
|
theData[4],
|
||||||
|
theData[5]);
|
||||||
}
|
}
|
||||||
void getTextTransReportCounters(QQQQ) {
|
void getTextTransReportCounters(QQQQ) {
|
||||||
// -------------------------------------------------------------------
|
// -------------------------------------------------------------------
|
||||||
|
@ -198,6 +198,7 @@ SignalDataPrintFunctions[] = {
|
|||||||
,{ GSN_ACC_LOCKREQ, printACC_LOCKREQ }
|
,{ GSN_ACC_LOCKREQ, printACC_LOCKREQ }
|
||||||
,{ GSN_LQH_TRANSCONF, printLQH_TRANSCONF }
|
,{ GSN_LQH_TRANSCONF, printLQH_TRANSCONF }
|
||||||
,{ GSN_SCAN_FRAGREQ, printSCAN_FRAGREQ }
|
,{ GSN_SCAN_FRAGREQ, printSCAN_FRAGREQ }
|
||||||
|
,{ GSN_START_FRAGREQ, printSTART_FRAG_REQ }
|
||||||
,{ 0, 0 }
|
,{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include <RefConvert.hpp>
|
#include <RefConvert.hpp>
|
||||||
#include <signaldata/StartRec.hpp>
|
#include <signaldata/StartRec.hpp>
|
||||||
|
#include <signaldata/StartFragReq.hpp>
|
||||||
|
|
||||||
bool
|
bool
|
||||||
printSTART_REC_REQ(FILE * output,
|
printSTART_REC_REQ(FILE * output,
|
||||||
@ -50,3 +51,27 @@ printSTART_REC_CONF(FILE * output,
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
printSTART_FRAG_REQ(FILE * output,
|
||||||
|
const Uint32 * theData,
|
||||||
|
Uint32 len,
|
||||||
|
Uint16 recBlockNo)
|
||||||
|
{
|
||||||
|
StartFragReq* sig = (StartFragReq*)theData;
|
||||||
|
|
||||||
|
fprintf(output, " table: %d frag: %d lcpId: %d lcpNo: %d #nodes: %d \n",
|
||||||
|
sig->tableId, sig->fragId, sig->lcpId, sig->lcpNo,
|
||||||
|
sig->noOfLogNodes);
|
||||||
|
|
||||||
|
for(Uint32 i = 0; i<sig->noOfLogNodes; i++)
|
||||||
|
{
|
||||||
|
fprintf(output, " (node: %d startGci: %d lastGci: %d)",
|
||||||
|
sig->lqhLogNode[i],
|
||||||
|
sig->startGci[i],
|
||||||
|
sig->lastGci[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(output, "\n");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
@ -9673,6 +9673,9 @@ void Dbdih::execLCP_FRAG_REP(Signal* signal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool tableDone = reportLcpCompletion(lcpReport);
|
bool tableDone = reportLcpCompletion(lcpReport);
|
||||||
|
|
||||||
|
Uint32 started = lcpReport->maxGciStarted;
|
||||||
|
Uint32 completed = lcpReport->maxGciCompleted;
|
||||||
|
|
||||||
if(tableDone){
|
if(tableDone){
|
||||||
jam();
|
jam();
|
||||||
@ -9706,7 +9709,9 @@ void Dbdih::execLCP_FRAG_REP(Signal* signal)
|
|||||||
signal->theData[1] = nodeId;
|
signal->theData[1] = nodeId;
|
||||||
signal->theData[2] = tableId;
|
signal->theData[2] = tableId;
|
||||||
signal->theData[3] = fragId;
|
signal->theData[3] = fragId;
|
||||||
sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 4, JBB);
|
signal->theData[4] = started;
|
||||||
|
signal->theData[5] = completed;
|
||||||
|
sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 6, JBB);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
@ -10903,7 +10908,9 @@ void Dbdih::findMinGci(ReplicaRecordPtr fmgReplicaPtr,
|
|||||||
lcpNo = fmgReplicaPtr.p->nextLcp;
|
lcpNo = fmgReplicaPtr.p->nextLcp;
|
||||||
do {
|
do {
|
||||||
ndbrequire(lcpNo < MAX_LCP_STORED);
|
ndbrequire(lcpNo < MAX_LCP_STORED);
|
||||||
if (fmgReplicaPtr.p->lcpStatus[lcpNo] == ZVALID) {
|
if (fmgReplicaPtr.p->lcpStatus[lcpNo] == ZVALID &&
|
||||||
|
fmgReplicaPtr.p->maxGciStarted[lcpNo] <= coldgcp)
|
||||||
|
{
|
||||||
jam();
|
jam();
|
||||||
keepGci = fmgReplicaPtr.p->maxGciCompleted[lcpNo];
|
keepGci = fmgReplicaPtr.p->maxGciCompleted[lcpNo];
|
||||||
oldestRestorableGci = fmgReplicaPtr.p->maxGciStarted[lcpNo];
|
oldestRestorableGci = fmgReplicaPtr.p->maxGciStarted[lcpNo];
|
||||||
@ -10911,7 +10918,6 @@ void Dbdih::findMinGci(ReplicaRecordPtr fmgReplicaPtr,
|
|||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
jam();
|
jam();
|
||||||
ndbrequire(fmgReplicaPtr.p->lcpStatus[lcpNo] == ZINVALID);
|
|
||||||
if (fmgReplicaPtr.p->createGci[0] == fmgReplicaPtr.p->initialGci) {
|
if (fmgReplicaPtr.p->createGci[0] == fmgReplicaPtr.p->initialGci) {
|
||||||
jam();
|
jam();
|
||||||
/*-------------------------------------------------------------------
|
/*-------------------------------------------------------------------
|
||||||
|
@ -4454,7 +4454,7 @@ Dbtc::DIVER_node_fail_handling(Signal* signal, UintR Tgci)
|
|||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
tabortInd = ZFALSE;
|
tabortInd = ZFALSE;
|
||||||
setupFailData(signal);
|
setupFailData(signal);
|
||||||
if (tabortInd == ZFALSE) {
|
if (false && tabortInd == ZFALSE) {
|
||||||
jam();
|
jam();
|
||||||
commitGciHandling(signal, Tgci);
|
commitGciHandling(signal, Tgci);
|
||||||
toCommitHandlingLab(signal);
|
toCommitHandlingLab(signal);
|
||||||
|
@ -1554,6 +1554,16 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli, const char *query
|
|||||||
|
|
||||||
clear_all_errors(thd, rli);
|
clear_all_errors(thd, rli);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Note: We do not need to execute reset_one_shot_variables() if this
|
||||||
|
db_ok() test fails.
|
||||||
|
Reason: The db stored in binlog events is the same for SET and for
|
||||||
|
its companion query. If the SET is ignored because of
|
||||||
|
db_ok(), the companion query will also be ignored, and if
|
||||||
|
the companion query is ignored in the db_ok() test of
|
||||||
|
::exec_event(), then the companion SET also have so we
|
||||||
|
don't need to reset_one_shot_variables().
|
||||||
|
*/
|
||||||
if (db_ok(thd->db, replicate_do_db, replicate_ignore_db))
|
if (db_ok(thd->db, replicate_do_db, replicate_ignore_db))
|
||||||
{
|
{
|
||||||
thd->set_time((time_t)when);
|
thd->set_time((time_t)when);
|
||||||
@ -2703,6 +2713,16 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli,
|
|||||||
Create_file_log_event::exec_event() and then discarding Append_block and
|
Create_file_log_event::exec_event() and then discarding Append_block and
|
||||||
al. Another way is do the filtering in the I/O thread (more efficient: no
|
al. Another way is do the filtering in the I/O thread (more efficient: no
|
||||||
disk writes at all).
|
disk writes at all).
|
||||||
|
|
||||||
|
|
||||||
|
Note: We do not need to execute reset_one_shot_variables() if this
|
||||||
|
db_ok() test fails.
|
||||||
|
Reason: The db stored in binlog events is the same for SET and for
|
||||||
|
its companion query. If the SET is ignored because of
|
||||||
|
db_ok(), the companion query will also be ignored, and if
|
||||||
|
the companion query is ignored in the db_ok() test of
|
||||||
|
::exec_event(), then the companion SET also have so we
|
||||||
|
don't need to reset_one_shot_variables().
|
||||||
*/
|
*/
|
||||||
if (db_ok(thd->db, replicate_do_db, replicate_ignore_db))
|
if (db_ok(thd->db, replicate_do_db, replicate_ignore_db))
|
||||||
{
|
{
|
||||||
|
@ -174,6 +174,9 @@ static bool begin_trans(THD *thd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_REPLICATION
|
#ifdef HAVE_REPLICATION
|
||||||
|
/*
|
||||||
|
Returns true if all tables should be ignored
|
||||||
|
*/
|
||||||
inline bool all_tables_not_ok(THD *thd, TABLE_LIST *tables)
|
inline bool all_tables_not_ok(THD *thd, TABLE_LIST *tables)
|
||||||
{
|
{
|
||||||
return (table_rules_on && tables && !tables_ok(thd,tables) &&
|
return (table_rules_on && tables && !tables_ok(thd,tables) &&
|
||||||
@ -2252,6 +2255,22 @@ bool alloc_query(THD *thd, char *packet, ulong packet_length)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void reset_one_shot_variables(THD *thd)
|
||||||
|
{
|
||||||
|
thd->variables.character_set_client=
|
||||||
|
global_system_variables.character_set_client;
|
||||||
|
thd->variables.collation_connection=
|
||||||
|
global_system_variables.collation_connection;
|
||||||
|
thd->variables.collation_database=
|
||||||
|
global_system_variables.collation_database;
|
||||||
|
thd->variables.collation_server=
|
||||||
|
global_system_variables.collation_server;
|
||||||
|
thd->update_charset();
|
||||||
|
thd->variables.time_zone=
|
||||||
|
global_system_variables.time_zone;
|
||||||
|
thd->one_shot_set= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
** mysql_execute_command
|
** mysql_execute_command
|
||||||
@ -2335,16 +2354,22 @@ mysql_execute_command(THD *thd)
|
|||||||
/*
|
/*
|
||||||
Skip if we are in the slave thread, some table rules have been
|
Skip if we are in the slave thread, some table rules have been
|
||||||
given and the table list says the query should not be replicated.
|
given and the table list says the query should not be replicated.
|
||||||
Exception is DROP TEMPORARY TABLE IF EXISTS: we always execute it
|
|
||||||
(otherwise we have stale files on slave caused by exclusion of one tmp
|
Exceptions are:
|
||||||
table).
|
- SET: we always execute it (Not that many SET commands exists in
|
||||||
|
the binary log anyway -- only 4.1 masters write SET statements,
|
||||||
|
in 5.0 there are no SET statements in the binary log)
|
||||||
|
- DROP TEMPORARY TABLE IF EXISTS: we always execute it (otherwise we
|
||||||
|
have stale files on slave caused by exclusion of one tmp table).
|
||||||
*/
|
*/
|
||||||
if (!(lex->sql_command == SQLCOM_DROP_TABLE &&
|
if (!(lex->sql_command == SQLCOM_SET_OPTION) &&
|
||||||
|
!(lex->sql_command == SQLCOM_DROP_TABLE &&
|
||||||
lex->drop_temporary && lex->drop_if_exists) &&
|
lex->drop_temporary && lex->drop_if_exists) &&
|
||||||
all_tables_not_ok(thd, all_tables))
|
all_tables_not_ok(thd, all_tables))
|
||||||
{
|
{
|
||||||
/* we warn the slave SQL thread */
|
/* we warn the slave SQL thread */
|
||||||
my_message(ER_SLAVE_IGNORED_TABLE, ER(ER_SLAVE_IGNORED_TABLE), MYF(0));
|
my_message(ER_SLAVE_IGNORED_TABLE, ER(ER_SLAVE_IGNORED_TABLE), MYF(0));
|
||||||
|
reset_one_shot_variables(thd);
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
#ifndef TO_BE_DELETED
|
#ifndef TO_BE_DELETED
|
||||||
@ -3576,6 +3601,7 @@ end_with_restore_list:
|
|||||||
!db_ok_with_wild_table(lex->name)))
|
!db_ok_with_wild_table(lex->name)))
|
||||||
{
|
{
|
||||||
my_message(ER_SLAVE_IGNORED_TABLE, ER(ER_SLAVE_IGNORED_TABLE), MYF(0));
|
my_message(ER_SLAVE_IGNORED_TABLE, ER(ER_SLAVE_IGNORED_TABLE), MYF(0));
|
||||||
|
reset_one_shot_variables(thd);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -3610,6 +3636,7 @@ end_with_restore_list:
|
|||||||
!db_ok_with_wild_table(lex->name)))
|
!db_ok_with_wild_table(lex->name)))
|
||||||
{
|
{
|
||||||
my_message(ER_SLAVE_IGNORED_TABLE, ER(ER_SLAVE_IGNORED_TABLE), MYF(0));
|
my_message(ER_SLAVE_IGNORED_TABLE, ER(ER_SLAVE_IGNORED_TABLE), MYF(0));
|
||||||
|
reset_one_shot_variables(thd);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -3650,6 +3677,7 @@ end_with_restore_list:
|
|||||||
!db_ok_with_wild_table(db)))
|
!db_ok_with_wild_table(db)))
|
||||||
{
|
{
|
||||||
my_message(ER_SLAVE_IGNORED_TABLE, ER(ER_SLAVE_IGNORED_TABLE), MYF(0));
|
my_message(ER_SLAVE_IGNORED_TABLE, ER(ER_SLAVE_IGNORED_TABLE), MYF(0));
|
||||||
|
reset_one_shot_variables(thd);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -4706,30 +4734,19 @@ end_with_restore_list:
|
|||||||
}
|
}
|
||||||
thd->proc_info="query end";
|
thd->proc_info="query end";
|
||||||
/* Two binlog-related cleanups: */
|
/* Two binlog-related cleanups: */
|
||||||
if (thd->one_shot_set)
|
|
||||||
{
|
/*
|
||||||
/*
|
Reset system variables temporarily modified by SET ONE SHOT.
|
||||||
If this is a SET, do nothing. This is to allow mysqlbinlog to print
|
|
||||||
many SET commands (in this case we want the charset temp setting to
|
Exception: If this is a SET, do nothing. This is to allow
|
||||||
live until the real query). This is also needed so that SET
|
mysqlbinlog to print many SET commands (in this case we want the
|
||||||
CHARACTER_SET_CLIENT... does not cancel itself immediately.
|
charset temp setting to live until the real query). This is also
|
||||||
*/
|
needed so that SET CHARACTER_SET_CLIENT... does not cancel itself
|
||||||
if (lex->sql_command != SQLCOM_SET_OPTION)
|
immediately.
|
||||||
{
|
*/
|
||||||
thd->variables.character_set_client=
|
if (thd->one_shot_set && lex->sql_command != SQLCOM_SET_OPTION)
|
||||||
global_system_variables.character_set_client;
|
reset_one_shot_variables(thd);
|
||||||
thd->variables.collation_connection=
|
|
||||||
global_system_variables.collation_connection;
|
|
||||||
thd->variables.collation_database=
|
|
||||||
global_system_variables.collation_database;
|
|
||||||
thd->variables.collation_server=
|
|
||||||
global_system_variables.collation_server;
|
|
||||||
thd->update_charset();
|
|
||||||
thd->variables.time_zone=
|
|
||||||
global_system_variables.time_zone;
|
|
||||||
thd->one_shot_set= 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The return value for ROW_COUNT() is "implementation dependent" if
|
The return value for ROW_COUNT() is "implementation dependent" if
|
||||||
|
Reference in New Issue
Block a user