Current Path : /home/usr.opt/mysql57/mysql-test/suite/x/t/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //home/usr.opt/mysql57/mysql-test/suite/x/t/crud_rpl.test |
########### ../t/crud_rpl.test ######### ## # ## This test aims to run crud message on replication setup. # ## Test runs following message on master and checks data on slave # ## - create_collection message # ## - Insert message # ## - create_collection_index # ## - update message # ## - delete message # ####################################################################### --source include/have_innodb.inc --source include/master-slave.inc --source include/count_sessions.inc # Use master connection --connection master --source ../include/xplugin_preamble.inc call mtr.add_suppression("Error parsing message of type 12: args"); call mtr.add_suppression("Error handling message: args"); ## Test starts here --write_file $MYSQL_TMP_DIR/mysqlx-in.tmp -->sql -- "Creating database for testcase" DROP DATABASE IF EXISTS xplugintest; CREATE DATABASE xplugintest; USE xplugintest; CREATE TABLE table1 ( _id INT PRIMARY KEY, doc JSON ) ; -->endsql -- "Create table table2 in xplugintest " Mysqlx.Sql.StmtExecute { stmt: "create_collection" args { type: SCALAR scalar { type: V_STRING v_string { value: "xplugintest" } } } args { type: SCALAR scalar { type: V_STRING v_string { value: "table2" } } } namespace: "xplugin" } -->recvresult -->echo Insert multiple rows into a Document column Mysqlx.Crud.Insert { collection { name: "table2" schema: "xplugintest" } data_model: DOCUMENT row { field { type: LITERAL literal { type: V_STRING v_string { value: "\n{\n \"_id\": \"1\",\n \"name\": \"Omar Bras\", \"id\": \"1\"\n}" } } } } row { field { type: LITERAL literal { type: V_STRING v_string { value: "\n{\n \"_id\": \"2\",\n \"name\": \"Omar Mex\", \"id\": \"2\"\n}" } } } } } -->recvresult -->sql SELECT * FROM xplugintest.table2; -->endsql -- "Index with unique(true), index column NOT NULL (true)" Mysqlx.Sql.StmtExecute { stmt: "create_collection_index" args { type: SCALAR scalar { type: V_STRING v_string { value: "xplugintest" } } } args { type: SCALAR scalar { type: V_STRING v_string { value: "table2" } } } args { type: SCALAR scalar { type: V_STRING v_string { value: "name_index" } } } args { type: SCALAR scalar { type: V_BOOL v_bool: true } } args { type: SCALAR scalar { type: V_STRING v_string { value: "$.name" } } } args { type: SCALAR scalar { type: V_STRING v_string { value: "TEXT(50)" } } } args { type: SCALAR scalar { type: V_BOOL v_bool: true } } namespace: "xplugin" } -->recvresult -->sql SHOW CREATE TABLE xplugintest.table2; SELECT * FROM xplugintest.table2; -->endsql -->echo Update decimal value with a corner value plus 1 Mysqlx.Crud.Update { collection { name: "table2" schema: "xplugintest" } data_model: DOCUMENT criteria { type: OPERATOR operator { name: "==" param { type: IDENT identifier { name: "_id" } } param { type: LITERAL literal { type: V_SINT v_signed_int: 2 } } } } operation { source { document_path { type: MEMBER value: "name" } } operation: ITEM_SET value { type: LITERAL literal { type: V_STRING v_string { value: "\"Omar Argentina\"" } } } } } -->recvresult -->sql SHOW CREATE TABLE xplugintest.table2; SELECT JSON_EXTRACT(doc,'$.name') FROM xplugintest.table2; SELECT * FROM xplugintest.table2; -->endsql -->echo Delete with == operator Mysqlx.Crud.Delete { collection { name: "table2" schema: "xplugintest" } data_model: DOCUMENT criteria { type: OPERATOR operator { name: "==" param { type: IDENT identifier { name: "_id" } } param { type: LITERAL literal { type: V_SINT v_signed_int: 2 } } } } } -->recvresult -->sql SELECT JSON_EXTRACT(doc,'$.name') FROM xplugintest.table2; SELECT * FROM xplugintest.table2; -->endsql Mysqlx.Crud.Insert { collection { name: "table2" schema: "xplugintest" } data_model: DOCUMENT row { field { type: LITERAL literal { type: V_STRING v_string { value: "\n{\n \"_id\": \"3\",\n \"name\": \"Omar Peru\", \"id\": \"3\"\n}" } } } } } -->recvresult # Insert fail due to non unique _id doc member Mysqlx.Crud.Insert { collection { name: "table2" schema: "xplugintest" } data_model: DOCUMENT row { field { type: LITERAL literal { type: V_STRING v_string { value: "\n{\n \"_id\": \"1\",\n \"name\": \"Omar Colombia\", \"id\": \"3\"\n}" } } } } } # Error -->expecterror 5116 -->recvresult -->sql SELECT * FROM xplugintest.table2; -->endsql # Insert into table1 -->sql INSERT INTO xplugintest.table1 VALUES (1,'{"a":["x", "y"]}'), (2,'{"b":["x", "y"]}'); -->endsql -->expecterror 1062 -->sql INSERT INTO xplugintest.table1 VALUES (3,'{"c":["x", "y"]}'), (2,'{"d":["x", "y"]}'); SELECT * FROM xplugintest.table1 ; UPDATE xplugintest.table1 SET doc= '{"m":["x", "y"]}' WHERE _id=1; SELECT * FROM xplugintest.table1 ; -->endsql EOF --exec $MYSQLXTEST -u root --password='' --file=$MYSQL_TMP_DIR/mysqlx-in.tmp 2>&1 --remove_file $MYSQL_TMP_DIR/mysqlx-in.tmp --source include/sync_slave_sql_with_master.inc -- connection slave --echo # Connection:slave - Row with value 2 is expected on slave. USE xplugintest; SHOW CREATE TABLE xplugintest.table2; SELECT * FROM xplugintest.table2; SELECT * FROM xplugintest.table1; --let $diff_tables= master:xplugintest.table1, slave:xplugintest.table1 --let $diff_tables= master:xplugintest.table2, slave:xplugintest.table2 --source include/diff_tables.inc #cleanup -- connection master DROP DATABASE IF EXISTS xplugintest; ## Postamble UNINSTALL PLUGIN mysqlx; --source include/wait_until_count_sessions.inc --source include/sync_slave_sql_with_master.inc --source include/rpl_end.inc