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

187 lines
7.8 KiB
Plaintext

CREATE SCHEMA xtest;
USE xtest;
CREATE TABLE util(f INT);
INSERT INTO util(f) VALUES(1),(2),(3),(4),(5);
SELECT mysqlx_generate_document_id() FROM util;
mysqlx_generate_document_id()
0000XXXXXXXX0000000000000001
0000XXXXXXXX0000000000000002
0000XXXXXXXX0000000000000003
0000XXXXXXXX0000000000000004
0000XXXXXXXX0000000000000005
SELECT mysqlx_generate_document_id(16) FROM util;
mysqlx_generate_document_id(16)
0000XXXXXXXX0000000000000006
0000XXXXXXXX0000000000000007
0000XXXXXXXX0000000000000008
0000XXXXXXXX0000000000000009
0000XXXXXXXX000000000000000a
SELECT mysqlx_generate_document_id(16, 8) FROM util;
mysqlx_generate_document_id(16, 8)
0000XXXXXXXX0000000000000010
0000XXXXXXXX0000000000000018
0000XXXXXXXX0000000000000020
0000XXXXXXXX0000000000000028
0000XXXXXXXX0000000000000030
SELECT mysqlx_generate_document_id(16, 8, 0) FROM util;
mysqlx_generate_document_id(16, 8, 0)
0000XXXXXXXX0000000000000038
0000XXXXXXXX0000000000000040
0000XXXXXXXX0000000000000048
0000XXXXXXXX0000000000000050
0000XXXXXXXX0000000000000058
SELECT mysqlx_generate_document_id(16, 8, 1) FROM util;
mysqlx_generate_document_id(16, 8, 1)
NULL
NULL
NULL
NULL
NULL
set auto_increment_offset = 16;
set auto_increment_increment = 8;
SELECT mysqlx_generate_document_id(@@auto_increment_offset, @@auto_increment_increment) FROM util;
mysqlx_generate_document_id(@@auto_increment_offset, @@auto_increment_increment)
0000XXXXXXXX0000000000000060
0000XXXXXXXX0000000000000068
0000XXXXXXXX0000000000000070
0000XXXXXXXX0000000000000078
0000XXXXXXXX0000000000000080
DO mysqlx_generate_document_id();
CALL mysqlx_generate_document_id();
ERROR 42000: PROCEDURE xtest.mysqlx_generate_document_id does not exist
DO mysqlx_generate_document_id('abc');
ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument
DO mysqlx_generate_document_id(NULL);
ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument
DO mysqlx_generate_document_id(123.45);
ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument
DO mysqlx_generate_document_id(1, 'abc');
ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments
DO mysqlx_generate_document_id(1, NULL);
ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments
DO mysqlx_generate_document_id(1, 123.45);
ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments
DO mysqlx_generate_document_id(1, 1, 'abc');
ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments
DO mysqlx_generate_document_id(1, 1, NULL);
ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments
DO mysqlx_generate_document_id(1, 1, 123.45);
ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments
DO mysqlx_generate_document_id(1, 1, 1, 1);
ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect up to three integer arguments
DO mysqlx_generate_document_id(1, 1, 1, 1, 1);
ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect up to three integer arguments
CREATE PROCEDURE my_procedure(IN offset INT, IN increment INT)
BEGIN
SELECT mysqlx_generate_document_id(offset, increment) AS document_id;
END ||
CALL my_procedure(16, 8);
document_id
0000XXXXXXXX0000000000000088
RUN SELECT mysqlx_generate_document_id() FROM xtest.util;
mysqlx_generate_document_id()
0000XXXXXXXX0000000000000089
0000XXXXXXXX000000000000008a
0000XXXXXXXX000000000000008b
0000XXXXXXXX000000000000008c
0000XXXXXXXX000000000000008d
0 rows affected
RUN SELECT mysqlx_generate_document_id(16) FROM xtest.util;
mysqlx_generate_document_id(16)
0000XXXXXXXX000000000000008e
0000XXXXXXXX000000000000008f
0000XXXXXXXX0000000000000090
0000XXXXXXXX0000000000000091
0000XXXXXXXX0000000000000092
0 rows affected
RUN SELECT mysqlx_generate_document_id(16, 8) FROM xtest.util;
mysqlx_generate_document_id(16, 8)
0000XXXXXXXX0000000000000098
0000XXXXXXXX00000000000000a0
0000XXXXXXXX00000000000000a8
0000XXXXXXXX00000000000000b0
0000XXXXXXXX00000000000000b8
0 rows affected
RUN SELECT mysqlx_generate_document_id(16, 8, 0) FROM xtest.util;
mysqlx_generate_document_id(16, 8, 0)
0000XXXXXXXX00000000000000c0
0000XXXXXXXX00000000000000c8
0000XXXXXXXX00000000000000d0
0000XXXXXXXX00000000000000d8
0000XXXXXXXX00000000000000e0
0 rows affected
RUN SELECT mysqlx_generate_document_id(16, 8, 1) FROM xtest.util;
mysqlx_generate_document_id(16, 8, 1)
null
null
null
null
null
0 rows affected
RUN set auto_increment_offset = 16
0 rows affected
RUN set auto_increment_increment = 8
0 rows affected
RUN SELECT mysqlx_generate_document_id(@@auto_increment_offset, @@auto_increment_increment) FROM xtest.util;
mysqlx_generate_document_id(@@auto_increment_offset, @@auto_increment_increment)
0000XXXXXXXX00000000000000e8
0000XXXXXXXX00000000000000f0
0000XXXXXXXX00000000000000f8
0000XXXXXXXX0000000000000100
0000XXXXXXXX0000000000000108
0 rows affected
RUN DO mysqlx_generate_document_id();
0 rows affected
RUN CALL mysqlx_generate_document_id();
Got expected error: No database selected (code 1046)
RUN USE xtest;
0 rows affected
RUN CALL mysqlx_generate_document_id();
Got expected error: PROCEDURE xtest.mysqlx_generate_document_id does not exist (code 1305)
RUN DO mysqlx_generate_document_id('abc');
Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument (code 1123)
RUN DO mysqlx_generate_document_id(NULL);
Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument (code 1123)
RUN DO mysqlx_generate_document_id(123.45);
Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument (code 1123)
RUN DO mysqlx_generate_document_id(1, 'abc');
Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments (code 1123)
RUN DO mysqlx_generate_document_id(1, NULL);
Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments (code 1123)
RUN DO mysqlx_generate_document_id(1, 123.45);
Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments (code 1123)
RUN DO mysqlx_generate_document_id(1, 1, 'abc');
Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments (code 1123)
RUN DO mysqlx_generate_document_id(1, 1, NULL);
Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments (code 1123)
RUN DO mysqlx_generate_document_id(1, 1, 123.45);
Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments (code 1123)
RUN DO mysqlx_generate_document_id(1, 1, 1, 1);
Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect up to three integer arguments (code 1123)
RUN DO mysqlx_generate_document_id(1, 1, 1, 1, 1);
Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect up to three integer arguments (code 1123)
RUN CALL my_procedure(16, 8);
document_id
0000XXXXXXXX0000000000000110
0 rows affected
Mysqlx.Ok {
msg: "bye!"
}
ok
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;
doc
{"a": 1}
SELECT JSON_INSERT(@doc, '$.b', CONVERT(mysqlx_generate_document_id(1,1,JSON_CONTAINS_PATH(@doc, 'one', '$.b')) USING utf8mb4)) as doc;
doc
{"a": 1, "b": "0000XXXXXXXX0000000000000111"}
DROP SCHEMA xtest;
set auto_increment_increment = DEFAULT;
set auto_increment_offset = DEFAULT;