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

234 lines
4.6 KiB
Plaintext

## Admin command: ensure_collection
--source include/xplugin_preamble.inc
--source include/xplugin_create_user.inc
CREATE SCHEMA xtest DEFAULT CHARSET 'utf8mb4';
## Test starts here
--let $xtest_file= $MYSQL_TMP_DIR/admin_ensure_collection.tmp
--write_file $xtest_file
-->quiet
-->macro Make_stmt %CMD% %SCHEMA%
Mysqlx.Sql.StmtExecute {
stmt: "%CMD%"
args {
%SCHEMA%
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "books"
}
}
}
namespace: "xplugin"
}
-->endmacro
-->macro Make_collection_with_schema %CMD% %SCHEMA% %ERROR%
-->callmacro Make_stmt %CMD% type: SCALAR scalar { type: V_STRING v_string { value: "%SCHEMA%" } }
-->expecterror %ERROR%
-->recvresult
-->stmtsql SHOW TABLES FROM xtest;
-->recvresult
-->endmacro
-->macro Make_collection_without_schema %CMD% %ERROR%
-->callmacro Make_stmt %CMD% type: SCALAR scalar { type: V_NULL }
-->expecterror %ERROR%
-->recvresult
-->stmtsql SHOW TABLES FROM xtest;
-->recvresult
-->endmacro
-->macro Make_collection %CMD% %ERROR%
-->callmacro Make_collection_with_schema %CMD% xtest %ERROR%
-->endmacro
-->macro Make_table %DEF% %TEMP%
-->sql
CREATE %TEMP% TABLE xtest.books %DEF%;
-->endsql
-->endmacro
-->macro Drop_table
-->sql
DROP TABLE xtest.books;
-->endsql
-->endmacro
-->macro Make_index %NAME% %TYPE%
Mysqlx.Sql.StmtExecute {
stmt: "create_collection_index"
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "xtest"
}
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "books"
}
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "%NAME%"
}
}
}
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: "%TYPE%"
}
}
}
args {
type: SCALAR
scalar {
type: V_BOOL
v_bool: false
}
}
namespace: "xplugin"
}
-->recvresult
-->endmacro
-->callmacro Make_collection create_collection 0
-->callmacro Make_collection create_collection 1050
-->callmacro Make_collection ensure_collection 0
-->callmacro Make_index isbn TEXT(13)
-->callmacro Make_collection ensure_collection 0
-->callmacro Make_index pages INT
-->callmacro Make_collection ensure_collection 0
-->sql
ALTER TABLE xtest.books ADD COLUMN (nothing INT)
-->endsql
-->callmacro Make_collection ensure_collection 5156
-->callmacro Drop_table
-->callmacro Make_collection ensure_collection 0
-->callmacro Drop_table
-->callmacro Make_collection create_collection 0
-->sql
ALTER TABLE xtest.books DROP _id
-->endsql
-->callmacro Make_collection ensure_collection 5156
-->callmacro Drop_table
-->callmacro Make_table (doc JSON, _id VARBINARY(32))
-->callmacro Make_collection ensure_collection 5156
-->callmacro Drop_table
-->callmacro Make_table (doc INT, _id VARBINARY(32))
-->callmacro Make_collection ensure_collection 5156
-->callmacro Drop_table
-->callmacro Make_table (doc JSON, _id INT)
-->callmacro Make_collection ensure_collection 5156
-->callmacro Make_collection_with_schema ensure_collection nowhere 1049
-->callmacro Drop_table
-->callmacro Make_collection_without_schema ensure_collection 1046
-->stmtsql USE xtest
-->recvresult
-->callmacro Make_collection_without_schema ensure_collection 0
-->callmacro Drop_table
-->newsession temp
-->callmacro Make_table (it_is_not_collection INT) TEMPORARY
-->callmacro Make_collection ensure_collection 0
-->stmtsql SHOW COLUMNS FROM xtest.books
-->recvresult
-->closesession
-->stmtsql SHOW COLUMNS FROM xtest.books
-->recvresult
-->callmacro Drop_table
-->sql
CREATE USER unpriv;
SET PASSWORD FOR unpriv = 'x';
GRANT SELECT ON xtest.* TO unpriv;
-->endsql
-->newsession unable_to_create unpriv x
-->callmacro Make_collection ensure_collection 1142
-->closesession
-->stmtsql DROP USER unpriv;
-->recvresult
-->callmacro Make_table (it_is_not_collection INT)
-->stmtsql LOCK TABLE xtest.books WRITE;
-->recvresult
-->newsession lock
-->callmacro Make_collection ensure_collection 5156
-->closesession
-->stmtsql UNLOCK TABLES
-->recvresult
EOF
--exec $MYSQLXTEST -ux_root --password='' --file=$xtest_file 2>&1
SHOW STATUS like 'Mysqlx_stmt_create_collection';
SHOW STATUS like 'Mysqlx_stmt_ensure_collection';
## Cleanup
DROP SCHEMA IF EXISTS xtest;
--remove_file $xtest_file
--source include/xplugin_drop_user.inc