1+
2+ ## 1.a. Verify that basic usage of `mysqlx_generate_document_id`
3+ ## works correctly using classic protocol.
4+ ## 1.b. Usage of `mysqlx_generate_document_id` with
5+ ## invalid arguments using classic protocol.
6+ ## 2.a. Handling of NULL values in DO (classic)
7+ ## 2.b. Handling of NULL values in SELECT (classic)
8+ ## 2.c. Handling of FUNCTION returning NULL values in DO (classic)
9+ ## 2.d. Handling of FUNCTION returning NULL values in SELECT (classic)
10+ ## 3.a. Verify that basic usage of `mysqlx_generate_document_id`
11+ ## works correctly using x protocol.
12+ ## 3.b. Usage of `mysqlx_generate_document_id` with
13+ ## invalid arguments using X protocol.
14+ ## 4.a. Handling of NULL values in DO (x)
15+ ## 4.b. Handling of NULL values in SELECT (x)
16+ ## 4.c. Handling of FUNCTION returning NULL values in DO (x)
17+ ## 4.d. Handling of FUNCTION returning NULL values in SELECT (x)
118CREATE SCHEMA xtest;
219USE xtest;
320CREATE TABLE util(f INT);
421INSERT INTO util(f) VALUES(1),(2),(3),(4),(5);
22+
23+ #
24+ ## Ad 1.a. Verify that basic usage of `mysqlx_generate_document_id`
25+ ## works correctly using classic protocol.
526SELECT mysqlx_generate_document_id() FROM util;
627mysqlx_generate_document_id()
7280000XXXXXXXX0000000000000001
@@ -46,71 +67,115 @@ mysqlx_generate_document_id(@@auto_increment_offset, @@auto_increment_increment)
46670000XXXXXXXX0000000000000070
47680000XXXXXXXX0000000000000078
48690000XXXXXXXX0000000000000080
70+ CREATE PROCEDURE my_procedure(IN offset INT, IN increment INT)
71+ BEGIN
72+ SELECT mysqlx_generate_document_id(offset, increment) AS document_id;
73+ END ||
74+ CALL my_procedure(16, 8);
75+ document_id
76+ 0000XXXXXXXX0000000000000088
77+
78+ #
79+ ## Ad 1.b. Usage of `mysqlx_generate_document_id` with
80+ ## invalid arguments using classic protocol.
4981DO mysqlx_generate_document_id();
5082CALL mysqlx_generate_document_id();
5183ERROR 42000: PROCEDURE xtest.mysqlx_generate_document_id does not exist
5284DO mysqlx_generate_document_id('abc');
53- ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument
85+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects integer argument
5486DO mysqlx_generate_document_id(NULL);
55- ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument
87+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects integer argument
5688DO mysqlx_generate_document_id(123.45);
57- ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument
89+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects integer argument
5890DO mysqlx_generate_document_id(1, 'abc');
59- ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments
91+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects two integer arguments
6092DO mysqlx_generate_document_id(1, NULL);
61- ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments
93+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects two integer arguments
6294DO mysqlx_generate_document_id(1, 123.45);
63- ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments
95+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects two integer arguments
6496DO mysqlx_generate_document_id(1, 1, 'abc');
65- ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments
97+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments
6698DO mysqlx_generate_document_id(1, 1, NULL);
67- ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments
99+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments
68100DO mysqlx_generate_document_id(1, 1, 123.45);
69- ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments
101+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments
70102DO mysqlx_generate_document_id(1, 1, 1, 1);
71- ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect up to three integer arguments
103+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects up to three integer arguments
72104DO mysqlx_generate_document_id(1, 1, 1, 1, 1);
73- ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expect up to three integer arguments
74- CREATE PROCEDURE my_procedure(IN offset INT, IN increment INT)
75- BEGIN
76- SELECT mysqlx_generate_document_id(offset, increment) AS document_id;
77- END ||
78- CALL my_procedure(16, 8);
79- document_id
80- 0000XXXXXXXX0000000000000088
81- RUN SELECT mysqlx_generate_document_id() FROM xtest.util;
82- mysqlx_generate_document_id()
83- 0000XXXXXXXX0000000000000089
84- 0000XXXXXXXX000000000000008a
85- 0000XXXXXXXX000000000000008b
86- 0000XXXXXXXX000000000000008c
105+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects up to three integer arguments
106+
107+ #
108+ ## Ad 2.a. Handling of NULL values in DO
109+ DO mysqlx_generate_document_id(NULL, 1, 1);
110+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments
111+ DO mysqlx_generate_document_id(1, NULL, 1);
112+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments
113+ DO mysqlx_generate_document_id(1, 1, NULL);
114+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments
115+
116+ #
117+ ## Ad 2.b. Handling of NULL values in SELECT
118+ SELECT mysqlx_generate_document_id(NULL,1,1);
119+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments
120+ SELECT mysqlx_generate_document_id(1,NULL,1);
121+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments
122+ SELECT mysqlx_generate_document_id(1,1,NULL);
123+ ERROR HY000: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments
124+
125+ #
126+ ## Ad 2.c. Handling of FUNCTION returning NULL values in DO
127+ DO mysqlx_generate_document_id(IF(1=2,1,NULL), 1, 0);
128+ DO mysqlx_generate_document_id(1, IF(1=2,1,NULL), 0);
129+ DO mysqlx_generate_document_id(1, 1, IF(1=2,1,NULL));
130+
131+ #
132+ ## Ad 2.d. Handling of FUNCTION returning NULL values in SELECT
133+ SELECT mysqlx_generate_document_id(IF(1=2,1,NULL),1,0);
134+ mysqlx_generate_document_id(IF(1=2,1,NULL),1,0)
871350000XXXXXXXX000000000000008d
88- 0 rows affected
89- RUN SELECT mysqlx_generate_document_id(16) FROM xtest.util;
90- mysqlx_generate_document_id(16)
136+ SELECT mysqlx_generate_document_id(1,IF(1=2,1,NULL),0);
137+ mysqlx_generate_document_id(1,IF(1=2,1,NULL),0)
911380000XXXXXXXX000000000000008e
139+ SELECT mysqlx_generate_document_id(1,1,IF(1=2,1,NULL));
140+ mysqlx_generate_document_id(1,1,IF(1=2,1,NULL))
921410000XXXXXXXX000000000000008f
142+
143+ #
144+ ## Ad 3.a. Verify that basic usage of `mysqlx_generate_document_id`
145+ ## works correctly using x protocol.
146+ RUN SELECT mysqlx_generate_document_id() FROM xtest.util
147+ mysqlx_generate_document_id()
931480000XXXXXXXX0000000000000090
941490000XXXXXXXX0000000000000091
951500000XXXXXXXX0000000000000092
151+ 0000XXXXXXXX0000000000000093
152+ 0000XXXXXXXX0000000000000094
961530 rows affected
97- RUN SELECT mysqlx_generate_document_id(16, 8) FROM xtest.util;
98- mysqlx_generate_document_id(16, 8)
154+ RUN SELECT mysqlx_generate_document_id(16) FROM xtest.util
155+ mysqlx_generate_document_id(16)
156+ 0000XXXXXXXX0000000000000095
157+ 0000XXXXXXXX0000000000000096
158+ 0000XXXXXXXX0000000000000097
991590000XXXXXXXX0000000000000098
160+ 0000XXXXXXXX0000000000000099
161+ 0 rows affected
162+ RUN SELECT mysqlx_generate_document_id(16, 8) FROM xtest.util
163+ mysqlx_generate_document_id(16, 8)
1001640000XXXXXXXX00000000000000a0
1011650000XXXXXXXX00000000000000a8
1021660000XXXXXXXX00000000000000b0
1031670000XXXXXXXX00000000000000b8
168+ 0000XXXXXXXX00000000000000c0
1041690 rows affected
105- RUN SELECT mysqlx_generate_document_id(16, 8, 0) FROM xtest.util;
170+ RUN SELECT mysqlx_generate_document_id(16, 8, 0) FROM xtest.util
106171mysqlx_generate_document_id(16, 8, 0)
107- 0000XXXXXXXX00000000000000c0
1081720000XXXXXXXX00000000000000c8
1091730000XXXXXXXX00000000000000d0
1101740000XXXXXXXX00000000000000d8
1111750000XXXXXXXX00000000000000e0
176+ 0000XXXXXXXX00000000000000e8
1121770 rows affected
113- RUN SELECT mysqlx_generate_document_id(16, 8, 1) FROM xtest.util;
178+ RUN SELECT mysqlx_generate_document_id(16, 8, 1) FROM xtest.util
114179mysqlx_generate_document_id(16, 8, 1)
115180null
116181null
@@ -124,51 +189,99 @@ RUN set auto_increment_offset = 16
124189RUN set auto_increment_increment = 8
125190
1261910 rows affected
127- RUN SELECT mysqlx_generate_document_id(@@auto_increment_offset, @@auto_increment_increment) FROM xtest.util;
128- mysqlx_generate_document_id(@@auto_increment_offset, @@auto_increment_increment)
129- 0000XXXXXXXX00000000000000e8
192+ RUN CALL xtest.my_procedure(16, 8)
193+ document_id
1301940000XXXXXXXX00000000000000f0
195+
196+ 0 rows affected
197+ RUN SELECT mysqlx_generate_document_id(@@auto_increment_offset, @@auto_increment_increment) FROM xtest.util
198+ mysqlx_generate_document_id(@@auto_increment_offset, @@auto_increment_increment)
1311990000XXXXXXXX00000000000000f8
1322000000XXXXXXXX0000000000000100
1332010000XXXXXXXX0000000000000108
202+ 0000XXXXXXXX0000000000000110
203+ 0000XXXXXXXX0000000000000118
1342040 rows affected
135- RUN DO mysqlx_generate_document_id();
205+ RUN DO mysqlx_generate_document_id()
136206
1372070 rows affected
208+
209+ #
210+ ## Ad 3.b. Usage of `mysqlx_generate_document_id` with
211+ ## invalid arguments using X protocol.
138212RUN CALL mysqlx_generate_document_id();
139213Got expected error: No database selected (code 1046)
140- RUN USE xtest;
214+ RUN use xtest
141215
1422160 rows affected
143217RUN CALL mysqlx_generate_document_id();
144218Got expected error: PROCEDURE xtest.mysqlx_generate_document_id does not exist (code 1305)
145219RUN DO mysqlx_generate_document_id('abc');
146- Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument (code 1123)
220+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects integer argument (code 1123)
147221RUN DO mysqlx_generate_document_id(NULL);
148- Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument (code 1123)
222+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects integer argument (code 1123)
149223RUN DO mysqlx_generate_document_id(123.45);
150- Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect integer argument (code 1123)
224+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects integer argument (code 1123)
151225RUN DO mysqlx_generate_document_id(1, 'abc');
152- Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments (code 1123)
226+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects two integer arguments (code 1123)
153227RUN DO mysqlx_generate_document_id(1, NULL);
154- Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments (code 1123)
228+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects two integer arguments (code 1123)
155229RUN DO mysqlx_generate_document_id(1, 123.45);
156- Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect two integer arguments (code 1123)
230+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects two integer arguments (code 1123)
157231RUN DO mysqlx_generate_document_id(1, 1, 'abc');
158- Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments (code 1123)
232+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments (code 1123)
159233RUN DO mysqlx_generate_document_id(1, 1, NULL);
160- Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments (code 1123)
234+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments (code 1123)
161235RUN DO mysqlx_generate_document_id(1, 1, 123.45);
162- Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect three integer arguments (code 1123)
236+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments (code 1123)
163237RUN DO mysqlx_generate_document_id(1, 1, 1, 1);
164- Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect up to three integer arguments (code 1123)
238+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects up to three integer arguments (code 1123)
165239RUN DO mysqlx_generate_document_id(1, 1, 1, 1, 1);
166- Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expect up to three integer arguments (code 1123)
167- RUN CALL my_procedure(16, 8);
240+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects up to three integer arguments (code 1123)
168241
169- document_id
170- 0000XXXXXXXX0000000000000110
242+ #
243+ ## Ad 4.a. Handling of NULL values in DO
244+ RUN DO mysqlx_generate_document_id(NULL, 1, 1);
245+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments (code 1123)
246+ RUN DO mysqlx_generate_document_id(1, NULL, 1);
247+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments (code 1123)
248+ RUN DO mysqlx_generate_document_id(1, 1, NULL);
249+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments (code 1123)
250+
251+ #
252+ ## Ad 4.b. Handling of NULL values in SELECT
253+ RUN SELECT mysqlx_generate_document_id(NULL,1,1);
254+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments (code 1123)
255+ RUN SELECT mysqlx_generate_document_id(1,NULL,1);
256+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments (code 1123)
257+ RUN SELECT mysqlx_generate_document_id(1,1,NULL);
258+ Got expected error: Can't initialize function 'mysqlx_generate_document_id'; Function expects three integer arguments (code 1123)
259+
260+ #
261+ ## Ad 4.c. Handling of FUNCTION returning NULL values in DO
262+ RUN DO mysqlx_generate_document_id(IF(1=2,1,NULL), 1, 0);
263+
264+ 0 rows affected
265+ RUN DO mysqlx_generate_document_id(1, IF(1=2,1,NULL), 0);
171266
267+ 0 rows affected
268+ RUN DO mysqlx_generate_document_id(1, 1, IF(1=2,1,NULL));
269+
270+ 0 rows affected
271+
272+ #
273+ ## Ad 4.d. Handling of FUNCTION returning NULL values in SELECT
274+ RUN SELECT mysqlx_generate_document_id(IF(1=2,1,NULL),1,0);
275+ mysqlx_generate_document_id(IF(1=2,1,NULL),1,0)
276+ 0000XXXXXXXX000000000000011d
277+ 0 rows affected
278+ RUN SELECT mysqlx_generate_document_id(1,IF(1=2,1,NULL),0);
279+ mysqlx_generate_document_id(1,IF(1=2,1,NULL),0)
280+ 0000XXXXXXXX000000000000011e
281+ 0 rows affected
282+ RUN SELECT mysqlx_generate_document_id(1,1,IF(1=2,1,NULL));
283+ mysqlx_generate_document_id(1,1,IF(1=2,1,NULL))
284+ 0000XXXXXXXX000000000000011f
1722850 rows affected
173286Mysqlx.Ok {
174287 msg: "bye!"
180293{"a": 1}
181294SELECT JSON_INSERT(@doc, '$.b', CONVERT(mysqlx_generate_document_id(1,1,JSON_CONTAINS_PATH(@doc, 'one', '$.b')) USING utf8mb4)) as doc;
182295doc
183- {"a": 1, "b": "0000XXXXXXXX0000000000000111 "}
296+ {"a": 1, "b": "0000XXXXXXXX0000000000000120 "}
184297set auto_increment_increment = DEFAULT;
185298set auto_increment_offset = DEFAULT;
0 commit comments