Commit 3f4d396d authored by unknown's avatar unknown

Fixed bug in table level privilege GRANT handling. (Bug #2178)

Portability fixes


mysql-test/r/rpl_until.result:
  Portability fix
mysql-test/t/rpl_until.test:
  Portability fix
sql/slave.cc:
  Write UNTIL position to logs (for debugging)
sql/slave.h:
  Write UNTIL position to logs (for debugging)
sql/sql_acl.cc:
  Fixed bug in table level privilege GRANT handling. (Bug #2178)
parent 73846938
...@@ -31,7 +31,7 @@ n ...@@ -31,7 +31,7 @@ n
4 4
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_MYPORT 1 master-bin.000001 561 slave-relay-bin.000002 332 master-bin.000001 Yes No 0 0 244 649 Master master-bin.000001 244 No # # 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 561 slave-relay-bin.000002 # master-bin.000001 Yes No 0 0 244 # Master master-bin.000001 244 No #
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291; start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
select * from t1; select * from t1;
n n
......
...@@ -29,7 +29,7 @@ sleep 2; ...@@ -29,7 +29,7 @@ sleep 2;
# here table should be still not deleted # here table should be still not deleted
select * from t1; select * from t1;
--replace_result $MASTER_MYPORT MASTER_MYPORT --replace_result $MASTER_MYPORT MASTER_MYPORT
--replace_column 1 # 33 # --replace_column 1 # 9 # 23 # 33 #
show slave status; show slave status;
# this should fail right after start # this should fail right after start
...@@ -59,9 +59,9 @@ stop slave; ...@@ -59,9 +59,9 @@ stop slave;
# this should stop immideately # this should stop immideately
start slave until master_log_file='master-bin.000001', master_log_pos=561; start slave until master_log_file='master-bin.000001', master_log_pos=561;
sleep 2; --real-sleep 2;
# here the sql slave thread should be stopped # here the sql slave thread should be stopped
--replace_result $MASTER_MYPORT MASTER_MYPORT --replace_result $MASTER_MYPORT MASTER_MYPORT bin.000005 bin.000004 bin.000006 bin.000004 bin.000007 bin.000004
--replace_column 1 # 9 # 23 # 33 # --replace_column 1 # 9 # 23 # 33 #
show slave status; show slave status;
......
...@@ -2682,7 +2682,7 @@ static int exec_relay_log_event(THD* thd, RELAY_LOG_INFO* rli) ...@@ -2682,7 +2682,7 @@ static int exec_relay_log_event(THD* thd, RELAY_LOG_INFO* rli)
rli->is_until_satisfied()) rli->is_until_satisfied())
{ {
sql_print_error("Slave SQL thread stopped because it reached its" sql_print_error("Slave SQL thread stopped because it reached its"
" UNTIL position"); " UNTIL position %ld", (long) rli->until_pos());
/* /*
Setting abort_slave flag because we do not want additional message about Setting abort_slave flag because we do not want additional message about
error in query execution to be printed. error in query execution to be printed.
......
...@@ -324,6 +324,11 @@ typedef struct st_relay_log_info ...@@ -324,6 +324,11 @@ typedef struct st_relay_log_info
/* Check if UNTIL condition is satisfied. See slave.cc for more. */ /* Check if UNTIL condition is satisfied. See slave.cc for more. */
bool is_until_satisfied(); bool is_until_satisfied();
inline ulonglong until_pos()
{
return ((until_condition == UNTIL_MASTER_POS) ? group_master_log_pos :
group_relay_log_pos);
}
} RELAY_LOG_INFO; } RELAY_LOG_INFO;
......
...@@ -2543,7 +2543,7 @@ my_bool grant_init(THD *org_thd) ...@@ -2543,7 +2543,7 @@ my_bool grant_init(THD *org_thd)
do do
{ {
GRANT_TABLE *mem_check; GRANT_TABLE *mem_check;
if (!(mem_check=new GRANT_TABLE(t_table,c_table)) || mem_check->ok()) if (!(mem_check=new GRANT_TABLE(t_table,c_table)) || !mem_check->ok())
{ {
/* This could only happen if we are out memory */ /* This could only happen if we are out memory */
grant_option= FALSE; /* purecov: deadcode */ grant_option= FALSE; /* purecov: deadcode */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment