config root man

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
Upload File :
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


Man Man