Merge mysql.com:/home/ram/work/mysql-5.1-maint

into  mysql.com:/home/ram/work/b26842/b26842.5.1
parents 9d225361 1af7eea5
......@@ -9,8 +9,7 @@ EXECUTE stmt1 USING @var1;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; CREATE TABLE t1(f1 blob)
master-bin.000001 # User var # # @`var1`=_binary 0x8300 COLLATE binary
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES(@'var1')
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES('\0')
SELECT HEX(f1) FROM t1;
HEX(f1)
8300
......@@ -30,17 +29,17 @@ HEX(s1) HEX(s2) d
466F6F2773206120426172 ED40ED41ED42 47.93
DROP PROCEDURE bug18293|
DROP TABLE t4|
SHOW BINLOG EVENTS FROM 410|
SHOW BINLOG EVENTS FROM 369|
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 410 Query 1 576 use `test`; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
master-bin.000001 369 Query 1 535 use `test`; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
s2 CHAR(50) CHARACTER SET cp932,
d DECIMAL(10,2))
master-bin.000001 576 Query 1 824 use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE bug18293 (IN ins1 CHAR(50),
master-bin.000001 535 Query 1 783 use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE bug18293 (IN ins1 CHAR(50),
IN ins2 CHAR(50) CHARACTER SET cp932,
IN ind DECIMAL(10,2))
BEGIN
INSERT INTO t4 VALUES (ins1, ins2, ind);
END
master-bin.000001 824 Query 1 1043 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172), NAME_CONST('ins2',_cp932 0xED40ED41ED42), NAME_CONST('ind',47.93))
master-bin.000001 1043 Query 1 1132 use `test`; DROP PROCEDURE bug18293
master-bin.000001 1132 Query 1 1211 use `test`; DROP TABLE t4
master-bin.000001 783 Query 1 1002 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172), NAME_CONST('ins2',_cp932 0xED40ED41ED42), NAME_CONST('ind',47.93))
master-bin.000001 1002 Query 1 1091 use `test`; DROP PROCEDURE bug18293
master-bin.000001 1091 Query 1 1170 use `test`; DROP TABLE t4
......@@ -425,19 +425,15 @@ master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("work_8_")
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F375F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_7_'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("work_9_")
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F375F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_7_'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("for_10_")
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select "yesterday_11_"
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("work_13_")
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F31325F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_12_'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("work_14_")
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F31325F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_12_'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("for_15_")
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select "yesterday_16_"
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("work_18_")
......@@ -445,15 +441,13 @@ master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F31375F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_17_'
master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select "yesterday_21_"
master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F31375F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_17_'
master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select "yesterday_24_"
......@@ -735,19 +729,15 @@ master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("work_8_")
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F375F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_7_'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("work_9_")
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F375F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_7_'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("for_10_")
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select "yesterday_11_"
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("work_13_")
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F31325F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_12_'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("work_14_")
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F31325F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_12_'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("for_15_")
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select "yesterday_16_"
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values("work_18_")
......@@ -755,15 +745,13 @@ master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F31375F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_17_'
master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select "yesterday_21_"
master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # User var # # @`string`=_latin1 0x656D657267656E63795F31375F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select @'string'
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select 'emergency_17_'
master-bin.000001 # Table_map # # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `mysqltest1`; insert into t1 select "yesterday_24_"
......
......@@ -223,10 +223,44 @@ SELECT * from t2;
k
100
42
drop table t1, t2;
reset master;
create table t1 (a int);
prepare s from "insert into t1 values (@a),(?)";
set @a=98;
execute s using @a;
prepare s from "insert into t1 values (?)";
set @a=99;
execute s using @a;
prepare s from "insert into t1 select 100 limit ?";
set @a=100;
execute s using @a;
show binlog events limit 1,100;
Log_name Pos Event_type Server_id End_log_pos Info
slave-bin.000001 106 Query 1 192 use `test`; create table t1 (a int)
slave-bin.000001 192 User var 2 234 @`a`=98
slave-bin.000001 234 Query 1 328 use `test`; insert into t1 values (@a),(98)
slave-bin.000001 328 Query 1 417 use `test`; insert into t1 values (99)
slave-bin.000001 417 Query 1 515 use `test`; insert into t1 select 100 limit 100
select * from t1;
a
98
98
99
100
drop table t1;
create table t1(a int, b int);
prepare s1 from 'insert into t1 values (@x:=@x+1, ?)';
set @x=1;
execute s1 using @x;
select * from t1;
a b
2 1
select * from t1;
a b
2 1
drop table t1;
End of 5.0 tests.
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE IF EXISTS t1;
DROP FUNCTION IF EXISTS f1;
DROP FUNCTION IF EXISTS f2;
CREATE TABLE t1 (i INT);
......
......@@ -22,7 +22,7 @@ CALL bug18293("Foo's a Bar", _cp932 0xED40ED41ED42, 47.93)|
SELECT HEX(s1),HEX(s2),d FROM t4|
DROP PROCEDURE bug18293|
DROP TABLE t4|
SHOW BINLOG EVENTS FROM 410|
SHOW BINLOG EVENTS FROM 369|
delimiter ;|
# End of 5.0 tests
......
......@@ -290,13 +290,48 @@ SELECT * from t1;
SELECT * from t2;
connection master;
drop table t1, t2;
--echo End of 5.0 tests.
#
# Bug #26842: master binary log contains invalid queries - replication fails
#
save_master_pos;
connection slave;
sync_with_master;
reset master;
# Cleanup
connection master;
create table t1 (a int);
prepare s from "insert into t1 values (@a),(?)";
set @a=98; execute s using @a;
prepare s from "insert into t1 values (?)";
set @a=99; execute s using @a;
prepare s from "insert into t1 select 100 limit ?";
set @a=100; execute s using @a;
DROP TABLE t1;
DROP TABLE t2;
save_master_pos;
connection slave;
sync_with_master;
show binlog events limit 1,100;
select * from t1;
connection master;
drop table t1;
#
# Bug #12826: Possible to get inconsistent slave using SQL syntax Prepared Statements
#
connection master;
create table t1(a int, b int);
prepare s1 from 'insert into t1 values (@x:=@x+1, ?)';
set @x=1; execute s1 using @x;
select * from t1;
sync_slave_with_master;
connection slave;
select * from t1;
connection master;
drop table t1;
--echo End of 5.0 tests.
# This test uses a stored function that uses user-defined variables to return data
# The test ensures the value of the user-defined variable is replicated correctly
......@@ -305,7 +340,6 @@ DROP TABLE t2;
# This test was constructed for BUG#20141
--disable_warnings
DROP TABLE IF EXISTS t1;
DROP FUNCTION IF EXISTS f1;
DROP FUNCTION IF EXISTS f2;
--enable_warnings
......@@ -351,4 +385,3 @@ DROP TABLE t1;
sync_slave_with_master;
stop slave;
......@@ -981,6 +981,7 @@ static bool insert_params_from_vars_with_log(Prepared_statement *stmt,
String buf;
const String *val;
uint32 length= 0;
THD *thd= stmt->thd;
DBUG_ENTER("insert_params_from_vars");
......@@ -991,34 +992,20 @@ static bool insert_params_from_vars_with_log(Prepared_statement *stmt,
{
Item_param *param= *it;
varname= var_it++;
if (get_var_with_binlog(stmt->thd, stmt->lex->sql_command,
*varname, &entry))
DBUG_RETURN(1);
if (param->set_from_user_var(stmt->thd, entry))
entry= (user_var_entry *) hash_search(&thd->user_vars, (byte*) varname->str,
varname->length);
/*
We have to call the setup_one_conversion_function() here to set
the parameter's members that might be needed further
(e.g. value.cs_info.character_set_client is used in the query_val_str()).
*/
setup_one_conversion_function(thd, param, param->param_type);
if (param->set_from_user_var(thd, entry))
DBUG_RETURN(1);
/* Insert @'escaped-varname' instead of parameter in the query */
if (entry)
{
char *start, *ptr;
buf.length(0);
if (buf.reserve(entry->name.length*2+3))
DBUG_RETURN(1);
val= param->query_val_str(&buf);
start= ptr= buf.c_ptr_quick();
*ptr++= '@';
*ptr++= '\'';
ptr+= escape_string_for_mysql(&my_charset_utf8_general_ci,
ptr, 0, entry->name.str,
entry->name.length);
*ptr++= '\'';
buf.length(ptr - start);
val= &buf;
}
else
val= &my_null_string;
if (param->convert_str_value(stmt->thd))
if (param->convert_str_value(thd))
DBUG_RETURN(1); /* out of memory */
if (query->replace(param->pos_in_query+length, 1, *val))
......
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