polardbxengine/mysql-test/suite/x/t/stmtexecute_status_vars.test

937 lines
18 KiB
Plaintext

## ===================================================================
###
### Monitor CRUD Status variables :
# 1) Mysqlx_stmt_execute_sql
# 2) Mysqlx_stmt_execute_xplugin
# 3) Mysqlx_stmt_create_collection
# 4) Mysqlx_stmt_create_collection_index
# 5) Mysqlx_rows_sent
# 6) Mysqlx_bytes_sent
# 7) Mysqlx_bytes_received
# 8) Mysqlx_stmt_drop_collection
# 9) Mysqlx_stmt_drop_collection_index
# 10) Mysqlx_stmt_ping
# 11) Mysqlx_expect_close
# 12) Mysqlx_expect_open
# 13) Mysqlx_stmt_list_objects
#
###
### ===================================================================
#
# 1) Mysqlx_stmt_execute_sql
# 2) Mysqlx_stmt_execute_xplugin
# 13) Mysqlx_stmt_list_objects
#
## Preamble
--source include/xplugin_preamble.inc
--source include/xplugin_create_user.inc
--disable_query_log
--disable_warnings
DROP DATABASE IF EXISTS xplugintest;
DROP DATABASE IF EXISTS xplugintest_1;
CREATE DATABASE xplugintest;
CREATE DATABASE xplugintest_1;
USE xplugintest;
--enable_warnings
--enable_query_log
CREATE TABLE `scalar_types`(`number_uint` INTEGER UNSIGNED DEFAULT 10, `number_sint` INTEGER DEFAULT -10, `value_bool` BOOLEAN DEFAULT 0, `value_string` VARCHAR(255) default NULL, `number_float` FLOAT DEFAULT 1.1, `number_double` DOUBLE DEFAULT 2.2, `value_blob` TINYBLOB DEFAULT NULL);
--write_file $MYSQL_TMP_DIR/stmtexecute_insert.tmp
-->sql
SHOW STATUS like 'Mysqlx_stmt_execute_sql%';
SHOW STATUS like 'Mysqlx_stmt_execute_xplugin%';
-->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
Mysqlx.Sql.StmtExecute {
stmt: "INSERT INTO `xplugintest`.`scalar_types`(`number_sint`, `number_uint`, `value_string`) VALUES(0, ?, 'First inserted row'),(?, 1,'Second inserted row'), (-1, 0,?)"
args {
type: SCALAR
scalar {
type: V_UINT
v_unsigned_int: 1
}
}
args {
type: SCALAR
scalar {
type: V_SINT
v_signed_int: -1
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "\"Thrid\" inserted 'row'"
}
}
}
}
-->recvresult
Mysqlx.Sql.StmtExecute {
stmt: "INSERT INTO `xplugintest`.`scalar_types`(`number_float`, `number_double`, `value_blob`) VALUES(0.1, ?, 'First inserted blob'),(?, 200.01,'Second inserted blob'), (10.11, 2.2, ?), (111, 222, ?)"
args {
type: SCALAR
scalar {
type: V_DOUBLE
v_double: 200.01
}
}
args {
type: SCALAR
scalar {
type: V_DOUBLE
v_double: 10.11
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "\"Thrid\" inserted 'blob'"
}
}
}
args {
type: SCALAR
scalar {
type: V_NULL
}
}
}
-->recvresult
-->sql
SHOW STATUS like 'Mysqlx_stmt_execute_sql%';
SHOW STATUS like 'Mysqlx_stmt_execute_xplugin%';
-->endsql
EOF
--write_file $MYSQL_TMP_DIR/stmtexecute_select.tmp
-->sql
SHOW STATUS like 'Mysqlx_stmt_execute_sql%';
SHOW STATUS like 'Mysqlx_stmt_execute_xplugin%';
-->endsql
-->echo Filter data by unsigned int
Mysqlx.Sql.StmtExecute {
stmt: "SELECT * FROM `xplugintest`.`scalar_types` WHERE `number_uint`=?"
args {
type: SCALAR
scalar {
type: V_UINT
v_unsigned_int: 1
}
}
}
-->recvresult
-->echo Filter data by signed int
Mysqlx.Sql.StmtExecute {
stmt: "SELECT * FROM `xplugintest`.`scalar_types` WHERE `number_sint`=?"
args {
type: SCALAR
scalar {
type: V_SINT
v_signed_int: -1
}
}
}
-->recvresult
-->sql
SHOW STATUS like 'Mysqlx_stmt_execute_sql%';
SHOW STATUS like 'Mysqlx_stmt_execute_xplugin%';
-->endsql
EOF
## New session will not show values from other session
--exec $MYSQLXTEST -ux_root --password='' --mysql41-auth --file=$MYSQL_TMP_DIR/stmtexecute_insert.tmp 2>&1
--remove_file $MYSQL_TMP_DIR/stmtexecute_insert.tmp
--write_file $MYSQL_TMP_DIR/stmtexecute_second_client.tmp
-->sql
SHOW STATUS like 'Mysqlx_stmt_execute_sql%';
SHOW STATUS like 'Mysqlx_stmt_execute_xplugin%';
-->endsql
EOF
--exec $MYSQLXTEST -ux_root --password='' --mysql41-auth --file=$MYSQL_TMP_DIR/stmtexecute_second_client.tmp 2>&1
--remove_file $MYSQL_TMP_DIR/stmtexecute_second_client.tmp
SELECT * FROM `xplugintest`.`scalar_types`;
# Run command
--exec $MYSQLXTEST -ux_root --password='' --mysql41-auth --file=$MYSQL_TMP_DIR/stmtexecute_select.tmp 2>&1
--remove_file $MYSQL_TMP_DIR/stmtexecute_select.tmp
--write_file $MYSQL_TMP_DIR/stmtexecute_insert.tmp
-->sql
SHOW STATUS like 'Mysqlx_stmt_execute_sql%';
SHOW STATUS like 'Mysqlx_stmt_execute_xplugin%';
-->endsql
-->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
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
Mysqlx.Sql.StmtExecute {
stmt: "list_objects"
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "xplugintest"
}
}
}
namespace: "xplugin"
}
-->recvresult
#-- statement retunin error counted as well
Mysqlx.Sql.StmtExecute {
stmt: "list_objects"
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "nodatabase"
}
}
}
namespace: "xplugin"
}
#-- Invalid Mysqlx.Sql.StmtExecute operation conted
Mysqlx.Sql.StmtExecute {
stmt: "errorstatement"
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "nodatabase"
}
}
}
namespace: "xplugin"
}
-->expecterror 1049
-->recvresult
-->expecterror 5157
-->recvresult
-->sql
SHOW STATUS like 'Mysqlx_stmt_execute_sql%';
#-- "Insert not counted in Mysqlx_stmt_execute_xplugin"
SHOW STATUS like 'Mysqlx_stmt_execute_xplugin%';
#-- "Insert counted in Mysqlx_crud_insert"
SHOW STATUS like 'Mysqlx_crud_insert%';
SHOW STATUS like 'Mysqlx_stmt_list_objects%';
-->endsql
EOF
--exec $MYSQLXTEST -ux_root --password='' --mysql41-auth --file=$MYSQL_TMP_DIR/stmtexecute_insert.tmp 2>&1
--remove_file $MYSQL_TMP_DIR/stmtexecute_insert.tmp
## Cleanup
DROP DATABASE xplugintest;
DROP DATABASE xplugintest_1;
#-----------------------------------------------------------------------------
# Test more variable on clean data
# 3) Mysqlx_stmt_create_collection
# 4) Mysqlx_stmt_create_collection_index
# 5) Mysqlx_rows_sent
# 6) Mysqlx_bytes_sent
# 7) Mysqlx_bytes_received
# 8) Mysqlx_stmt_drop_collection
# 9) Mysqlx_stmt_drop_collection_index
# 10) Mysqlx_stmt_ping
# 11) Mysqlx_expect_close
# 12) Mysqlx_expect_open
#-----------------------------------------------------------------------------
--disable_query_log
--disable_warnings
DROP DATABASE IF EXISTS xplugintest;
DROP DATABASE IF EXISTS xplugintest_1;
CREATE DATABASE xplugintest;
CREATE DATABASE xplugintest_1;
USE xplugintest;
--enable_warnings
--enable_query_log
CREATE TABLE `scalar_types`(`number_uint` INTEGER UNSIGNED DEFAULT 10, `number_sint` INTEGER DEFAULT -10, `value_bool` BOOLEAN DEFAULT 0, `value_string` VARCHAR(255) default NULL, `number_float` FLOAT DEFAULT 1.1, `number_double` DOUBLE DEFAULT 2.2, `value_blob` TINYBLOB DEFAULT NULL);
--write_file $MYSQL_TMP_DIR/stmtexecute_insert.tmp
SHOW STATUS like 'Mysqlx_stmt_create_collection';
SHOW STATUS like 'Mysqlx_stmt_create_collection_index%';
SHOW STATUS like 'Mysqlx_rows_sent%';
SHOW STATUS like 'Mysqlx_bytes_sent';
#-- "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 Command is valid but returns error so its counted in status variable
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: ""
}
}
}
namespace: "xplugin"
}
-->expecterror 5113
-->recvresult
-->echo Parse error , so its not counted in status variable
Mysqlx.Sql.StmtExecute {
stmt: "create_collection"
}
-->recv
-->echo "Index with unique(true), index column NOT NULL (true)" counted in index status variable
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: "col1_index"
}
}
}
args {
type: SCALAR
scalar {
type: V_BOOL
v_bool: true
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: ".col1"
}
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "TEXT(13)"
}
}
}
args {
type: SCALAR
scalar {
type: V_BOOL
v_bool: true
}
}
namespace: "xplugin"
}
-->recv
-->echo Command is parsed , returns error. Counted in status variable
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: "table_non_existing"
}
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "col1_index"
}
}
}
args {
type: SCALAR
scalar {
type: V_BOOL
v_bool: true
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: ".col1"
}
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "TEXT(13)"
}
}
}
args {
type: SCALAR
scalar {
type: V_BOOL
v_bool: true
}
}
namespace: "xplugin"
}
-->recv
-->echo Invalid index command. Not able to parse so not counted in status variable
Mysqlx.Sql.StmtExecute {
stmt: "create_collection_index"
}
-->recv
-->echo "Create table table3 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: "table3"
}
}
}
namespace: "xplugin"
}
-->recvresult
Mysqlx.Sql.StmtExecute {
stmt: "INSERT INTO `xplugintest`.`scalar_types`(`number_sint`, `number_uint`, `value_string`) VALUES(0, ?, 'First inserted row'),(?, 1,'Second inserted row'), (-1, 0,?)"
args {
type: SCALAR
scalar {
type: V_UINT
v_unsigned_int: 1
}
}
args {
type: SCALAR
scalar {
type: V_SINT
v_signed_int: -1
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "\"Thrid\" inserted 'row'"
}
}
}
}
-->recvresult
Mysqlx.Sql.StmtExecute {
stmt: "INSERT INTO `xplugintest`.`scalar_types`(`number_float`, `number_double`, `value_blob`) VALUES(0.1, ?, 'First inserted blob'),(?, 200.01,'Second inserted blob'), (10.11, 2.2, ?), (111, 222, ?)"
args {
type: SCALAR
scalar {
type: V_DOUBLE
v_double: 200.01
}
}
args {
type: SCALAR
scalar {
type: V_DOUBLE
v_double: 10.11
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "\"Thrid\" inserted 'blob'"
}
}
}
args {
type: SCALAR
scalar {
type: V_NULL
}
}
}
-->recvresult
USE xplugintest;
SHOW STATUS like 'Mysqlx_stmt_create_collection';
# Create SQL not counted in Mysqlx_stmt_create_collection
CREATE TABLE `table4` (`number_uint` INTEGER UNSIGNED DEFAULT 10, `number_sint` INTEGER DEFAULT -10, `value_bool` BOOLEAN DEFAULT 0, `value_string` VARCHAR(255) default NULL, `number_float` FLOAT DEFAULT 1.1, `number_double` DOUBLE DEFAULT 2.2, `value_blob` TINYBLOB DEFAULT NULL);
# Create index not counted Mysqlx_stmt_create_collection_index
ALTER TABLE xplugintest.table4 ADD FULLTEXT INDEX `fulltext_idx_1` (value_string);
SHOW STATUS like 'Mysqlx_stmt_create_collection';
SHOW STATUS like 'Mysqlx_stmt_create_collection_index%';
SHOW STATUS like 'Mysqlx_rows_sent%';
SHOW STATUS like 'Mysqlx_bytes_sent';
-->echo Filter data by unsigned int
Mysqlx.Sql.StmtExecute {
stmt: "SELECT * FROM `xplugintest`.`scalar_types` WHERE `number_uint`=?"
args {
type: SCALAR
scalar {
type: V_UINT
v_unsigned_int: 1
}
}
}
-->recvresult
-->echo Filter data by signed int
Mysqlx.Sql.StmtExecute {
stmt: "SELECT * FROM `xplugintest`.`scalar_types` WHERE `number_sint`=?"
args {
type: SCALAR
scalar {
type: V_SINT
v_signed_int: -1
}
}
}
-->recvresult
SHOW STATUS like 'Mysqlx_stmt_create_collection';
SHOW STATUS like 'Mysqlx_stmt_create_collection_index%';
SHOW STATUS like 'Mysqlx_rows_sent%';
SHOW STATUS like 'Mysqlx_bytes_sent';
SHOW STATUS like 'Mysqlx_stmt_drop_collection';
SHOW STATUS like 'Mysqlx_stmt_drop_collection_index%';
SHOW STATUS like 'Mysqlx_stmt_ping%';
-->echo # drop index counted in status variable
Mysqlx.Sql.StmtExecute {
stmt: "drop_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: "col1_index"
}
}
}
namespace: "xplugin"
}
-->recv
-->echo "drop index with error counted in status variable"
Mysqlx.Sql.StmtExecute {
stmt: "drop_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: "non_existing_index"
}
}
}
namespace: "xplugin"
}
-->recv
-->echo "Parse error not counted in status variable"
Mysqlx.Sql.StmtExecute {
stmt: "drop_collection_index"
}
-->recv
-->echo # drop collection , index sql not counted in status variable
-->sql
DROP TABLE xplugintest.table3;
ALTER TABLE xplugintest.table4 DROP INDEX `fulltext_idx_1`;
-->endsql
-->echo "Drop table created using create_collection message"
Mysqlx.Sql.StmtExecute {
stmt: "drop_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 "Non existing Drop table counted in status variable"
Mysqlx.Sql.StmtExecute {
stmt: "drop_collection"
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "xplugintest"
}
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "table_non_existing"
}
}
}
namespace: "xplugin"
}
-->expecterror 1051
-->recvresult
-->echo "Drop table parse error NOT counted in status variable"
Mysqlx.Sql.StmtExecute {
stmt: "drop_collection"
}
-->recv
-->echo "Drop table created using create_collection message"
Mysqlx.Sql.StmtExecute {
stmt: "drop_collection"
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "xplugintest"
}
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "scalar_types"
}
}
}
namespace: "xplugin"
}
-->recvresult
-->sql
SHOW STATUS like 'Mysqlx_stmt_drop_collection';
SHOW STATUS like 'Mysqlx_stmt_drop_collection_index%';
-->endsql
Mysqlx.Sql.StmtExecute {
namespace : "xplugin"
stmt : "ping"
}
-->recv
Mysqlx.Sql.StmtExecute {
namespace : "bla"
stmt : "ping"
}
# error
-->recv
Mysqlx.Sql.StmtExecute {
namespace : "xplugin"
stmt : "ping"
}
-->recv
-->sql
SHOW STATUS like 'Mysqlx_stmt_ping%';
-->endsql
-->echo Check - expect.open and expect.close status variable
-->sql
SHOW STATUS like 'Mysqlx_expect_close%';
SHOW STATUS like 'Mysqlx_expect_open%';
-->endsql
Mysqlx.Expect.Open {
cond {
condition_key: 1
}
}
-->recv
Mysqlx.Expect.Open {
}
-->recv
-->sql
SHOW STATUS like 'Mysqlx_expect_close%';
SHOW STATUS like 'Mysqlx_expect_open%';
-->endsql
Mysqlx.Expect.Close {
}
-->recv
-->sql
SHOW STATUS like 'Mysqlx_expect_close%';
SHOW STATUS like 'Mysqlx_expect_open%';
-->endsql
Mysqlx.Expect.Close {
}
-->recv
-->sql
SHOW STATUS like 'Mysqlx_expect_close%';
SHOW STATUS like 'Mysqlx_expect_open%';
-->endsql
EOF
## Test starts here
--exec $MYSQLXTEST -ux_root --password='' --mysql41-auth --file=$MYSQL_TMP_DIR/stmtexecute_insert.tmp 2>&1
## Cleanup
DROP DATABASE xplugintest;
DROP DATABASE xplugintest_1;
--remove_file $MYSQL_TMP_DIR/stmtexecute_insert.tmp
--source include/xplugin_drop_user.inc