201 lines
4.9 KiB
Plaintext
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;
|