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

201 lines
4.9 KiB
Plaintext

## Test of user defined function mysqlx_generate_document_id
## Preamble
--source include/xplugin_preamble.inc
--source include/xplugin_create_user.inc
## Test starts here
--write_file $MYSQL_TMP_DIR/udf_mysqlx_generate_document_id.xpl
-->stmtsql SELECT mysqlx_generate_document_id() FROM xtest.util;
-->recvresult
-->stmtsql SELECT mysqlx_generate_document_id(16) FROM xtest.util;
-->recvresult
-->stmtsql SELECT mysqlx_generate_document_id(16, 8) FROM xtest.util;
-->recvresult
-->stmtsql SELECT mysqlx_generate_document_id(16, 8, 0) FROM xtest.util;
-->recvresult
-->stmtsql SELECT mysqlx_generate_document_id(16, 8, 1) FROM xtest.util;
-->recvresult
-->sql
set auto_increment_offset = 16;
set auto_increment_increment = 8;
-->endsql
-->stmtsql SELECT mysqlx_generate_document_id(@@auto_increment_offset, @@auto_increment_increment) FROM xtest.util;
-->recvresult
-->stmtsql DO mysqlx_generate_document_id();
-->recvresult
-->stmtsql CALL mysqlx_generate_document_id();
-->expecterror ER_NO_DB_ERROR
-->recvresult
-->stmtsql USE xtest;
-->recvresult
-->stmtsql CALL mysqlx_generate_document_id();
-->expecterror ER_SP_DOES_NOT_EXIST
-->recvresult
-->stmtsql DO mysqlx_generate_document_id('abc');
-->expecterror ER_CANT_INITIALIZE_UDF
-->recvresult
-->stmtsql DO mysqlx_generate_document_id(NULL);
-->expecterror ER_CANT_INITIALIZE_UDF
-->recvresult
-->stmtsql DO mysqlx_generate_document_id(123.45);
-->expecterror ER_CANT_INITIALIZE_UDF
-->recvresult
-->stmtsql DO mysqlx_generate_document_id(1, 'abc');
-->expecterror ER_CANT_INITIALIZE_UDF
-->recvresult
-->stmtsql DO mysqlx_generate_document_id(1, NULL);
-->expecterror ER_CANT_INITIALIZE_UDF
-->recvresult
-->stmtsql DO mysqlx_generate_document_id(1, 123.45);
-->expecterror ER_CANT_INITIALIZE_UDF
-->recvresult
-->stmtsql DO mysqlx_generate_document_id(1, 1, 'abc');
-->expecterror ER_CANT_INITIALIZE_UDF
-->recvresult
-->stmtsql DO mysqlx_generate_document_id(1, 1, NULL);
-->expecterror ER_CANT_INITIALIZE_UDF
-->recvresult
-->stmtsql DO mysqlx_generate_document_id(1, 1, 123.45);
-->expecterror ER_CANT_INITIALIZE_UDF
-->recvresult
-->stmtsql DO mysqlx_generate_document_id(1, 1, 1, 1);
-->expecterror ER_CANT_INITIALIZE_UDF
-->recvresult
-->stmtsql DO mysqlx_generate_document_id(1, 1, 1, 1, 1);
-->expecterror ER_CANT_INITIALIZE_UDF
-->recvresult
-->sql
DELIMITER ||;
CREATE PROCEDURE my_procedure(IN offset INT, IN increment INT)
BEGIN
SELECT mysqlx_generate_document_id(offset, increment) AS document_id;
END ||
DELIMITER ;||
CALL my_procedure(16, 8);
-->endsql
EOF
--let DOC_ID_TIME_MASK= /([0-9a-f]{4})[0-9a-f]{8}([0-9a-f]{16})/\1XXXXXXXX\2/
CREATE SCHEMA xtest;
USE xtest;
CREATE TABLE util(f INT);
INSERT INTO util(f) VALUES(1),(2),(3),(4),(5);
--replace_regex $DOC_ID_TIME_MASK
SELECT mysqlx_generate_document_id() FROM util;
--replace_regex $DOC_ID_TIME_MASK
SELECT mysqlx_generate_document_id(16) FROM util;
--replace_regex $DOC_ID_TIME_MASK
SELECT mysqlx_generate_document_id(16, 8) FROM util;
--replace_regex $DOC_ID_TIME_MASK
SELECT mysqlx_generate_document_id(16, 8, 0) FROM util;
--replace_regex $DOC_ID_TIME_MASK
SELECT mysqlx_generate_document_id(16, 8, 1) FROM util;
set auto_increment_offset = 16;
set auto_increment_increment = 8;
--replace_regex $DOC_ID_TIME_MASK
SELECT mysqlx_generate_document_id(@@auto_increment_offset, @@auto_increment_increment) FROM util;
DO mysqlx_generate_document_id();
--error 1305
CALL mysqlx_generate_document_id();
--error 1123
DO mysqlx_generate_document_id('abc');
--error 1123
DO mysqlx_generate_document_id(NULL);
--error 1123
DO mysqlx_generate_document_id(123.45);
--error 1123
DO mysqlx_generate_document_id(1, 'abc');
--error 1123
DO mysqlx_generate_document_id(1, NULL);
--error 1123
DO mysqlx_generate_document_id(1, 123.45);
--error 1123
DO mysqlx_generate_document_id(1, 1, 'abc');
--error 1123
DO mysqlx_generate_document_id(1, 1, NULL);
--error 1123
DO mysqlx_generate_document_id(1, 1, 123.45);
--error 1123
DO mysqlx_generate_document_id(1, 1, 1, 1);
--error 1123
DO mysqlx_generate_document_id(1, 1, 1, 1, 1);
DELIMITER ||;
CREATE PROCEDURE my_procedure(IN offset INT, IN increment INT)
BEGIN
SELECT mysqlx_generate_document_id(offset, increment) AS document_id;
END ||
DELIMITER ;||
--replace_regex $DOC_ID_TIME_MASK
CALL my_procedure(16, 8);
--replace_regex $DOC_ID_TIME_MASK
exec $MYSQLXTEST
-ux_root --password=''
--file=$MYSQL_TMP_DIR/udf_mysqlx_generate_document_id.xpl 2>&1;
SET @doc = '{"a":1}';
SELECT JSON_INSERT(@doc, '$.a', CONVERT(mysqlx_generate_document_id(1,1,JSON_CONTAINS_PATH(@doc, 'one', '$.a')) USING utf8mb4)) as doc;
--replace_regex $DOC_ID_TIME_MASK
SELECT JSON_INSERT(@doc, '$.b', CONVERT(mysqlx_generate_document_id(1,1,JSON_CONTAINS_PATH(@doc, 'one', '$.b')) USING utf8mb4)) as doc;
## Cleanup
--remove_files_wildcard $MYSQL_TMP_DIR *.xpl
--source include/xplugin_drop_user.inc
DROP SCHEMA xtest;
set auto_increment_increment = DEFAULT;
set auto_increment_offset = DEFAULT;