mirror of
https://github.com/MariaDB/server.git
synced 2025-01-21 22:34:18 +01:00
41f7d13853
Table maps are now written on aquiring locks to tables and released at the end of each logical statement. mysql-test/extra/binlog_tests/ctype_cp932.test: Disabling cleanup code mysql-test/r/binlog_row_blackhole.result: Result change mysql-test/r/binlog_row_mix_innodb_myisam.result: Result change mysql-test/r/binlog_stm_ctype_cp932.result: Result change mysql-test/r/rpl_row_charset.result: Result change mysql-test/r/rpl_row_create_table.result: Result change mysql-test/t/rpl_row_create_table.test: Binlog position change sql/handler.cc: Writing table map after external_lock() sql/handler.h: Adding class for table operation hooks. sql/log.cc: Adding binlog_write_table_map() to THD. Removing write_table_map() from MYSQL_LOG. sql/log.h: Minor interface changes to move table map writing. sql/log_event.cc: Removing pre-allocation of memory for buffers. Allowing ULONG_MAX as table id denoting an event to ignore (only used to transfer flags). Adding code to collect tables while seeing table maps and lock collected tables when seeing a binrow event. Debriding code as a result of the above changes. sql/log_event.h: Minor interface changes. sql/mysql_priv.h: Adding hooks argument to create_table_from_items(). sql/parse_file.cc: Minor fix to avoid crash in debug printout. sql/rpl_rli.h: Adding list of tables to lock to RLI structure. sql/slave.cc: Using list of tables to lock from RLI structure. sql/sql_acl.cc: Removing redundant pending events flush. sql/sql_base.cc: Moving pending event flush. Using flag to guard to clear statement transaction only if this is the original open tables state. sql/sql_class.cc: Adding flag for open tables state. Removing redundant pending events flushes. Write a dummy event to indicate that the tables to lock should be emptied on the slave. sql/sql_class.h: Adding open tables state flags. Adding binlog_write_table_map() function to THD. Changes to select_create() to support new locking scheme. sql/sql_insert.cc: Adding rollback of statement transaction on error. It can now contain events after locking tables. sql/sql_load.cc: Removing redundant pending event flush. sql/sql_table.cc: Adding hooks argument to create_table_from_items(). Calling prelock hook before starting to lock tables. sql/sql_update.cc: Removing a compiler warning. sql/table.h: Minor changes.
211 lines
6.5 KiB
Text
211 lines
6.5 KiB
Text
stop slave;
|
||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||
reset master;
|
||
reset slave;
|
||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||
start slave;
|
||
set timestamp=1000000000;
|
||
drop database if exists mysqltest2;
|
||
drop database if exists mysqltest3;
|
||
create database mysqltest2 character set latin2;
|
||
set @@character_set_server=latin5;
|
||
create database mysqltest3;
|
||
|
||
--- --master--
|
||
show create database mysqltest2;
|
||
Database Create Database
|
||
mysqltest2 CREATE DATABASE `mysqltest2` /*!40100 DEFAULT CHARACTER SET latin2 */
|
||
show create database mysqltest3;
|
||
Database Create Database
|
||
mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET latin5 */
|
||
|
||
--- --slave--
|
||
show create database mysqltest2;
|
||
Database Create Database
|
||
mysqltest2 CREATE DATABASE `mysqltest2` /*!40100 DEFAULT CHARACTER SET latin2 */
|
||
show create database mysqltest3;
|
||
Database Create Database
|
||
mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET latin5 */
|
||
set @@collation_server=armscii8_bin;
|
||
drop database mysqltest3;
|
||
create database mysqltest3;
|
||
|
||
--- --master--
|
||
show create database mysqltest3;
|
||
Database Create Database
|
||
mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET armscii8 COLLATE armscii8_bin */
|
||
|
||
--- --slave--
|
||
show create database mysqltest3;
|
||
Database Create Database
|
||
mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET armscii8 COLLATE armscii8_bin */
|
||
use mysqltest2;
|
||
create table t1 (a int auto_increment primary key, b varchar(100));
|
||
set character_set_client=cp850, collation_connection=latin2_croatian_ci;
|
||
insert into t1 (b) values(@@character_set_server);
|
||
insert into t1 (b) values(@@collation_server);
|
||
insert into t1 (b) values(@@character_set_client);
|
||
insert into t1 (b) values(@@character_set_connection);
|
||
insert into t1 (b) values(@@collation_connection);
|
||
|
||
--- --master--
|
||
select * from t1 order by a;
|
||
a b
|
||
1 armscii8
|
||
2 armscii8_bin
|
||
3 cp850
|
||
4 latin2
|
||
5 latin2_croatian_ci
|
||
|
||
--- --slave--
|
||
select * from mysqltest2.t1 order by a;
|
||
a b
|
||
1 armscii8
|
||
2 armscii8_bin
|
||
3 cp850
|
||
4 latin2
|
||
5 latin2_croatian_ci
|
||
select "--- --muller--" as "";
|
||
|
||
--- --muller--
|
||
set character_set_client=latin1, collation_connection=latin1_german1_ci;
|
||
truncate table t1;
|
||
insert into t1 (b) values(@@collation_connection);
|
||
insert into t1 (b) values(LEAST("M<>ller","Muffler"));
|
||
set collation_connection=latin1_german2_ci;
|
||
insert into t1 (b) values(@@collation_connection);
|
||
insert into t1 (b) values(LEAST("M<>ller","Muffler"));
|
||
|
||
--- --master--
|
||
select * from t1 order by a;
|
||
a b
|
||
1 latin1_german1_ci
|
||
2 Muffler
|
||
3 latin1_german2_ci
|
||
4 M<>ller
|
||
|
||
--- --slave--
|
||
select * from mysqltest2.t1 order by a;
|
||
a b
|
||
1 latin1_german1_ci
|
||
2 Muffler
|
||
3 latin1_german2_ci
|
||
4 M<>ller
|
||
select "--- --INSERT--" as "";
|
||
|
||
--- --INSERT--
|
||
set @a= _cp850 'M<>ller' collate cp850_general_ci;
|
||
truncate table t1;
|
||
insert into t1 (b) values(collation(@a));
|
||
|
||
--- --master--
|
||
select * from t1 order by a;
|
||
a b
|
||
1 cp850_general_ci
|
||
|
||
--- --slave--
|
||
select * from mysqltest2.t1 order by a;
|
||
a b
|
||
1 cp850_general_ci
|
||
drop database mysqltest2;
|
||
drop database mysqltest3;
|
||
show binlog events from 102;
|
||
Log_name Pos Event_type Server_id End_log_pos Info
|
||
master-bin.000001 # Query 1 # drop database if exists mysqltest2
|
||
master-bin.000001 # Table_map 1 # mysql.proc
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Query 1 # drop database if exists mysqltest3
|
||
master-bin.000001 # Table_map 1 # mysql.proc
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Query 1 # create database mysqltest2 character set latin2
|
||
master-bin.000001 # Query 1 # create database mysqltest3
|
||
master-bin.000001 # Query 1 # drop database mysqltest3
|
||
master-bin.000001 # Table_map 1 # mysql.proc
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Query 1 # create database mysqltest3
|
||
master-bin.000001 # Query 1 # use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100))
|
||
master-bin.000001 # Table_map 1 # mysqltest2.t1
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Table_map 1 # mysqltest2.t1
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Table_map 1 # mysqltest2.t1
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Table_map 1 # mysqltest2.t1
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Table_map 1 # mysqltest2.t1
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Query 1 # use `mysqltest2`; truncate table t1
|
||
master-bin.000001 # Table_map 1 # mysqltest2.t1
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Table_map 1 # mysqltest2.t1
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Table_map 1 # mysqltest2.t1
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Table_map 1 # mysqltest2.t1
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Query 1 # use `mysqltest2`; truncate table t1
|
||
master-bin.000001 # Table_map 1 # mysqltest2.t1
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Query 1 # drop database mysqltest2
|
||
master-bin.000001 # Table_map 1 # mysql.proc
|
||
master-bin.000001 # Write_rows 1 #
|
||
master-bin.000001 # Query 1 # drop database mysqltest3
|
||
master-bin.000001 # Table_map 1 # mysql.proc
|
||
master-bin.000001 # Write_rows 1 #
|
||
select "--- --global--" as "";
|
||
|
||
--- --global--
|
||
set global character_set_server=latin2;
|
||
set global character_set_server=latin1;
|
||
set global character_set_server=latin2;
|
||
set global character_set_server=latin1;
|
||
select "--- --oneshot--" as "";
|
||
|
||
--- --oneshot--
|
||
set one_shot @@character_set_server=latin5;
|
||
set @@max_join_size=1000;
|
||
select @@character_set_server;
|
||
@@character_set_server
|
||
latin5
|
||
select @@character_set_server;
|
||
@@character_set_server
|
||
latin1
|
||
set @@character_set_server=latin5;
|
||
select @@character_set_server;
|
||
@@character_set_server
|
||
latin5
|
||
select @@character_set_server;
|
||
@@character_set_server
|
||
latin5
|
||
set one_shot max_join_size=10;
|
||
ERROR HY000: The 'SET ONE_SHOT' syntax is reserved for purposes internal to the MySQL server
|
||
set character_set_client=9999999;
|
||
ERROR 42000: Unknown character set: '9999999'
|
||
set collation_server=9999998;
|
||
ERROR HY000: Unknown collation: '9999998'
|
||
select "--- --3943--" as "";
|
||
|
||
--- --3943--
|
||
use test;
|
||
CREATE TABLE t1 (c1 VARBINARY(255), c2 VARBINARY(255));
|
||
SET CHARACTER_SET_CLIENT=koi8r,
|
||
CHARACTER_SET_CONNECTION=cp1251,
|
||
CHARACTER_SET_RESULTS=koi8r;
|
||
INSERT INTO t1 (c1, c2) VALUES ('<27><>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>','<27><>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||
select hex(c1), hex(c2) from t1;
|
||
hex(c1) hex(c2)
|
||
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
||
select hex(c1), hex(c2) from t1;
|
||
hex(c1) hex(c2)
|
||
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
||
drop table t1;
|
||
select "--- --6676--" as "";
|
||
|
||
--- --6676--
|
||
create table `t1` (
|
||
`pk` varchar(10) not null default '',
|
||
primary key (`pk`)
|
||
) engine=myisam default charset=latin1;
|
||
set @p=_latin1 'test';
|
||
update t1 set pk='test' where pk=@p;
|
||
drop table t1;
|