set default_storage_engine=ndb; # Test of the JSON functions used in SQL statements # ---------------------------------------------------------------------- SET NAMES utf8; Warnings: Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. CREATE TABLE t1 (pk int NOT NULL PRIMARY KEY AUTO_INCREMENT, i INT, j JSON); INSERT INTO t1(i, j) VALUES (0, NULL); INSERT INTO t1(i, j) VALUES (1, '{"a": 2}'); INSERT INTO t1(i, j) VALUES (2, '[1,2]'); INSERT INTO t1(i, j) VALUES (3, '{"a":"b", "c":"d","ab":"abc", "bc": ["x", "y"]}'); INSERT INTO t1(i, j) VALUES (4, '["here", ["I", "am"], "!!!"]'); INSERT INTO t1(i, j) VALUES (5, '"scalar string"'); INSERT INTO t1(i, j) VALUES (6, 'true'); INSERT INTO t1(i, j) VALUES (7, 'false'); INSERT INTO t1(i, j) VALUES (8, 'null'); INSERT INTO t1(i, j) VALUES (9, '-1'); INSERT INTO t1(i, j) VALUES (10, CAST(CAST(1 AS UNSIGNED) AS JSON)); INSERT INTO t1(i, j) VALUES (11, '32767'); INSERT INTO t1(i, j) VALUES (12, '32768'); INSERT INTO t1(i, j) VALUES (13, '-32768'); INSERT INTO t1(i, j) VALUES (14, '-32769'); INSERT INTO t1(i, j) VALUES (15, '2147483647'); INSERT INTO t1(i, j) VALUES (16, '2147483648'); INSERT INTO t1(i, j) VALUES (17, '-2147483648'); INSERT INTO t1(i, j) VALUES (18, '-2147483649'); INSERT INTO t1(i, j) VALUES (19, '18446744073709551615'); INSERT INTO t1(i, j) VALUES (20, '18446744073709551616'); INSERT INTO t1(i, j) VALUES (21, '3.14'); INSERT INTO t1(i, j) VALUES (22, '{}'); INSERT INTO t1(i, j) VALUES (23, '[]'); INSERT INTO t1(i, j) VALUES (24, CAST(CAST('2015-01-15 23:24:25' AS DATETIME) AS JSON)); INSERT INTO t1(i, j) VALUES (25, CAST(CAST('23:24:25' AS TIME) AS JSON)); INSERT INTO t1(i, j) VALUES (26, CAST(CAST('2015-01-15' AS DATE) AS JSON)); INSERT INTO t1(i, j) VALUES (27, CAST(TIMESTAMP'2015-01-15 23:24:25' AS JSON)); INSERT INTO t1(i, j) VALUES (28, CAST(ST_GeomFromText('POINT(1 1)') AS JSON)); INSERT INTO t1(i, j) VALUES (29, CAST('[]' AS CHAR CHARACTER SET 'ascii')); INSERT INTO t1(i, j) VALUES (30, CAST(x'cafe' AS JSON)); INSERT INTO t1(i, j) VALUES (31, CAST(x'cafebabe' AS JSON)); # # Test of JSON comparator. # SELECT i, (j = '"scalar string"') AS c1, (j = 'scalar string') AS c2, (j = CAST('"scalar string"' AS JSON)) AS c3, (j = CAST(CAST(j AS CHAR CHARACTER SET 'utf8mb4') AS JSON)) AS c4, (j = CAST(NULL AS JSON)) AS c5, (j = NULL) AS c6, (j <=> NULL) AS c7, (j <=> CAST(NULL AS JSON)) AS c8, (j IN (-1, 2, 32768, 3.14)) AS c9, (j IN (CAST('[1, 2]' AS JSON), CAST('{}' AS JSON), CAST(3.14 AS JSON))) AS c10, (j = (SELECT j FROM t1 WHERE j = CAST('null' AS JSON))) AS c11, (j = (SELECT j FROM t1 WHERE j IS NULL)) AS c12, (j = (SELECT j FROM t1 WHERE 1<>1)) AS c13, (j = DATE'2015-01-15') AS c14, (j = TIME'23:24:25') AS c15, (j = TIMESTAMP'2015-01-15 23:24:25') AS c16, (j = CURRENT_TIMESTAMP) AS c17, (j = ST_GeomFromText('POINT(1 1)')) AS c18, (JSON_EXTRACT(j, '$.a') = 2) AS c19 FROM t1 ORDER BY i; i c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 0 NULL NULL NULL NULL NULL NULL 1 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 1 2 0 0 0 1 NULL NULL 0 0 0 1 0 NULL NULL 0 0 0 0 0 NULL 3 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 0 4 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 5 0 1 1 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 6 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 7 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 8 0 0 0 1 NULL NULL 0 0 0 0 1 NULL NULL 0 0 0 0 0 NULL 9 0 0 0 1 NULL NULL 0 0 1 0 0 NULL NULL 0 0 0 0 0 NULL 10 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 11 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 12 0 0 0 1 NULL NULL 0 0 1 0 0 NULL NULL 0 0 0 0 0 NULL 13 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 14 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 15 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 16 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 17 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 18 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 19 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 20 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 21 0 0 0 1 NULL NULL 0 0 1 1 0 NULL NULL 0 0 0 0 0 NULL 22 0 0 0 1 NULL NULL 0 0 0 1 0 NULL NULL 0 0 0 0 0 NULL 23 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 24 0 0 0 0 NULL NULL 0 0 0 0 0 NULL NULL 0 0 1 0 0 NULL 25 0 0 0 0 NULL NULL 0 0 0 0 0 NULL NULL 0 1 0 0 0 NULL 26 0 0 0 0 NULL NULL 0 0 0 0 0 NULL NULL 1 0 0 0 0 NULL 27 0 0 0 0 NULL NULL 0 0 0 0 0 NULL NULL 0 0 1 0 0 NULL 28 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 1 NULL 29 0 0 0 1 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 30 0 0 0 0 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL 31 0 0 0 0 NULL NULL 0 0 0 0 0 NULL NULL 0 0 0 0 0 NULL SELECT i FROM t1 WHERE j = CAST(CAST(j AS CHAR CHARACTER SET 'utf8') AS JSON) ORDER BY i; i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 28 29 Warnings: Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. SELECT CAST(NULL AS UNSIGNED) = CAST(NULL AS JSON); CAST(NULL AS UNSIGNED) = CAST(NULL AS JSON) NULL SELECT CAST(NULL AS JSON) = CAST(NULL AS JSON); CAST(NULL AS JSON) = CAST(NULL AS JSON) NULL SELECT CAST(NULL AS JSON) = NULL; CAST(NULL AS JSON) = NULL NULL SELECT CAST(1 AS JSON) = NULL; CAST(1 AS JSON) = NULL NULL SELECT CAST('true' AS JSON) = 1; CAST('true' AS JSON) = 1 0 SELECT CAST('true' AS JSON) = true; CAST('true' AS JSON) = true 1 SELECT a.i, b.i, a.j < b.j, a.j = b.j, a.j > b.j, a.j <> b.j, a.j <=> b.j FROM t1 a, t1 b ORDER BY a.i, b.i; i i a.j < b.j a.j = b.j a.j > b.j a.j <> b.j a.j <=> b.j 0 0 NULL NULL NULL NULL 1 0 1 NULL NULL NULL NULL 0 0 2 NULL NULL NULL NULL 0 0 3 NULL NULL NULL NULL 0 0 4 NULL NULL NULL NULL 0 0 5 NULL NULL NULL NULL 0 0 6 NULL NULL NULL NULL 0 0 7 NULL NULL NULL NULL 0 0 8 NULL NULL NULL NULL 0 0 9 NULL NULL NULL NULL 0 0 10 NULL NULL NULL NULL 0 0 11 NULL NULL NULL NULL 0 0 12 NULL NULL NULL NULL 0 0 13 NULL NULL NULL NULL 0 0 14 NULL NULL NULL NULL 0 0 15 NULL NULL NULL NULL 0 0 16 NULL NULL NULL NULL 0 0 17 NULL NULL NULL NULL 0 0 18 NULL NULL NULL NULL 0 0 19 NULL NULL NULL NULL 0 0 20 NULL NULL NULL NULL 0 0 21 NULL NULL NULL NULL 0 0 22 NULL NULL NULL NULL 0 0 23 NULL NULL NULL NULL 0 0 24 NULL NULL NULL NULL 0 0 25 NULL NULL NULL NULL 0 0 26 NULL NULL NULL NULL 0 0 27 NULL NULL NULL NULL 0 0 28 NULL NULL NULL NULL 0 0 29 NULL NULL NULL NULL 0 0 30 NULL NULL NULL NULL 0 0 31 NULL NULL NULL NULL 0 1 0 NULL NULL NULL NULL 0 1 1 0 1 0 0 1 1 2 1 0 0 1 0 1 3 1 0 0 1 0 1 4 1 0 0 1 0 1 5 0 0 1 1 0 1 6 1 0 0 1 0 1 7 1 0 0 1 0 1 8 0 0 1 1 0 1 9 0 0 1 1 0 1 10 0 0 1 1 0 1 11 0 0 1 1 0 1 12 0 0 1 1 0 1 13 0 0 1 1 0 1 14 0 0 1 1 0 1 15 0 0 1 1 0 1 16 0 0 1 1 0 1 17 0 0 1 1 0 1 18 0 0 1 1 0 1 19 0 0 1 1 0 1 20 0 0 1 1 0 1 21 0 0 1 1 0 1 22 0 0 1 1 0 1 23 1 0 0 1 0 1 24 1 0 0 1 0 1 25 1 0 0 1 0 1 26 1 0 0 1 0 1 27 1 0 0 1 0 1 28 1 0 0 1 0 1 29 1 0 0 1 0 1 30 1 0 0 1 0 1 31 1 0 0 1 0 2 0 NULL NULL NULL NULL 0 2 1 0 0 1 1 0 2 2 0 1 0 0 1 2 3 0 0 1 1 0 2 4 1 0 0 1 0 2 5 0 0 1 1 0 2 6 1 0 0 1 0 2 7 1 0 0 1 0 2 8 0 0 1 1 0 2 9 0 0 1 1 0 2 10 0 0 1 1 0 2 11 0 0 1 1 0 2 12 0 0 1 1 0 2 13 0 0 1 1 0 2 14 0 0 1 1 0 2 15 0 0 1 1 0 2 16 0 0 1 1 0 2 17 0 0 1 1 0 2 18 0 0 1 1 0 2 19 0 0 1 1 0 2 20 0 0 1 1 0 2 21 0 0 1 1 0 2 22 0 0 1 1 0 2 23 0 0 1 1 0 2 24 1 0 0 1 0 2 25 1 0 0 1 0 2 26 1 0 0 1 0 2 27 1 0 0 1 0 2 28 0 0 1 1 0 2 29 0 0 1 1 0 2 30 1 0 0 1 0 2 31 1 0 0 1 0 3 0 NULL NULL NULL NULL 0 3 1 0 0 1 1 0 3 2 1 0 0 1 0 3 3 0 1 0 0 1 3 4 1 0 0 1 0 3 5 0 0 1 1 0 3 6 1 0 0 1 0 3 7 1 0 0 1 0 3 8 0 0 1 1 0 3 9 0 0 1 1 0 3 10 0 0 1 1 0 3 11 0 0 1 1 0 3 12 0 0 1 1 0 3 13 0 0 1 1 0 3 14 0 0 1 1 0 3 15 0 0 1 1 0 3 16 0 0 1 1 0 3 17 0 0 1 1 0 3 18 0 0 1 1 0 3 19 0 0 1 1 0 3 20 0 0 1 1 0 3 21 0 0 1 1 0 3 22 0 0 1 1 0 3 23 1 0 0 1 0 3 24 1 0 0 1 0 3 25 1 0 0 1 0 3 26 1 0 0 1 0 3 27 1 0 0 1 0 3 28 0 0 1 1 0 3 29 1 0 0 1 0 3 30 1 0 0 1 0 3 31 1 0 0 1 0 4 0 NULL NULL NULL NULL 0 4 1 0 0 1 1 0 4 2 0 0 1 1 0 4 3 0 0 1 1 0 4 4 0 1 0 0 1 4 5 0 0 1 1 0 4 6 1 0 0 1 0 4 7 1 0 0 1 0 4 8 0 0 1 1 0 4 9 0 0 1 1 0 4 10 0 0 1 1 0 4 11 0 0 1 1 0 4 12 0 0 1 1 0 4 13 0 0 1 1 0 4 14 0 0 1 1 0 4 15 0 0 1 1 0 4 16 0 0 1 1 0 4 17 0 0 1 1 0 4 18 0 0 1 1 0 4 19 0 0 1 1 0 4 20 0 0 1 1 0 4 21 0 0 1 1 0 4 22 0 0 1 1 0 4 23 0 0 1 1 0 4 24 1 0 0 1 0 4 25 1 0 0 1 0 4 26 1 0 0 1 0 4 27 1 0 0 1 0 4 28 0 0 1 1 0 4 29 0 0 1 1 0 4 30 1 0 0 1 0 4 31 1 0 0 1 0 5 0 NULL NULL NULL NULL 0 5 1 1 0 0 1 0 5 2 1 0 0 1 0 5 3 1 0 0 1 0 5 4 1 0 0 1 0 5 5 0 1 0 0 1 5 6 1 0 0 1 0 5 7 1 0 0 1 0 5 8 0 0 1 1 0 5 9 0 0 1 1 0 5 10 0 0 1 1 0 5 11 0 0 1 1 0 5 12 0 0 1 1 0 5 13 0 0 1 1 0 5 14 0 0 1 1 0 5 15 0 0 1 1 0 5 16 0 0 1 1 0 5 17 0 0 1 1 0 5 18 0 0 1 1 0 5 19 0 0 1 1 0 5 20 0 0 1 1 0 5 21 0 0 1 1 0 5 22 1 0 0 1 0 5 23 1 0 0 1 0 5 24 1 0 0 1 0 5 25 1 0 0 1 0 5 26 1 0 0 1 0 5 27 1 0 0 1 0 5 28 1 0 0 1 0 5 29 1 0 0 1 0 5 30 1 0 0 1 0 5 31 1 0 0 1 0 6 0 NULL NULL NULL NULL 0 6 1 0 0 1 1 0 6 2 0 0 1 1 0 6 3 0 0 1 1 0 6 4 0 0 1 1 0 6 5 0 0 1 1 0 6 6 0 1 0 0 1 6 7 0 0 1 1 0 6 8 0 0 1 1 0 6 9 0 0 1 1 0 6 10 0 0 1 1 0 6 11 0 0 1 1 0 6 12 0 0 1 1 0 6 13 0 0 1 1 0 6 14 0 0 1 1 0 6 15 0 0 1 1 0 6 16 0 0 1 1 0 6 17 0 0 1 1 0 6 18 0 0 1 1 0 6 19 0 0 1 1 0 6 20 0 0 1 1 0 6 21 0 0 1 1 0 6 22 0 0 1 1 0 6 23 0 0 1 1 0 6 24 1 0 0 1 0 6 25 1 0 0 1 0 6 26 1 0 0 1 0 6 27 1 0 0 1 0 6 28 0 0 1 1 0 6 29 0 0 1 1 0 6 30 1 0 0 1 0 6 31 1 0 0 1 0 7 0 NULL NULL NULL NULL 0 7 1 0 0 1 1 0 7 2 0 0 1 1 0 7 3 0 0 1 1 0 7 4 0 0 1 1 0 7 5 0 0 1 1 0 7 6 1 0 0 1 0 7 7 0 1 0 0 1 7 8 0 0 1 1 0 7 9 0 0 1 1 0 7 10 0 0 1 1 0 7 11 0 0 1 1 0 7 12 0 0 1 1 0 7 13 0 0 1 1 0 7 14 0 0 1 1 0 7 15 0 0 1 1 0 7 16 0 0 1 1 0 7 17 0 0 1 1 0 7 18 0 0 1 1 0 7 19 0 0 1 1 0 7 20 0 0 1 1 0 7 21 0 0 1 1 0 7 22 0 0 1 1 0 7 23 0 0 1 1 0 7 24 1 0 0 1 0 7 25 1 0 0 1 0 7 26 1 0 0 1 0 7 27 1 0 0 1 0 7 28 0 0 1 1 0 7 29 0 0 1 1 0 7 30 1 0 0 1 0 7 31 1 0 0 1 0 8 0 NULL NULL NULL NULL 0 8 1 1 0 0 1 0 8 2 1 0 0 1 0 8 3 1 0 0 1 0 8 4 1 0 0 1 0 8 5 1 0 0 1 0 8 6 1 0 0 1 0 8 7 1 0 0 1 0 8 8 0 1 0 0 1 8 9 1 0 0 1 0 8 10 1 0 0 1 0 8 11 1 0 0 1 0 8 12 1 0 0 1 0 8 13 1 0 0 1 0 8 14 1 0 0 1 0 8 15 1 0 0 1 0 8 16 1 0 0 1 0 8 17 1 0 0 1 0 8 18 1 0 0 1 0 8 19 1 0 0 1 0 8 20 1 0 0 1 0 8 21 1 0 0 1 0 8 22 1 0 0 1 0 8 23 1 0 0 1 0 8 24 1 0 0 1 0 8 25 1 0 0 1 0 8 26 1 0 0 1 0 8 27 1 0 0 1 0 8 28 1 0 0 1 0 8 29 1 0 0 1 0 8 30 1 0 0 1 0 8 31 1 0 0 1 0 9 0 NULL NULL NULL NULL 0 9 1 1 0 0 1 0 9 2 1 0 0 1 0 9 3 1 0 0 1 0 9 4 1 0 0 1 0 9 5 1 0 0 1 0 9 6 1 0 0 1 0 9 7 1 0 0 1 0 9 8 0 0 1 1 0 9 9 0 1 0 0 1 9 10 1 0 0 1 0 9 11 1 0 0 1 0 9 12 1 0 0 1 0 9 13 0 0 1 1 0 9 14 0 0 1 1 0 9 15 1 0 0 1 0 9 16 1 0 0 1 0 9 17 0 0 1 1 0 9 18 0 0 1 1 0 9 19 1 0 0 1 0 9 20 1 0 0 1 0 9 21 1 0 0 1 0 9 22 1 0 0 1 0 9 23 1 0 0 1 0 9 24 1 0 0 1 0 9 25 1 0 0 1 0 9 26 1 0 0 1 0 9 27 1 0 0 1 0 9 28 1 0 0 1 0 9 29 1 0 0 1 0 9 30 1 0 0 1 0 9 31 1 0 0 1 0 10 0 NULL NULL NULL NULL 0 10 1 1 0 0 1 0 10 2 1 0 0 1 0 10 3 1 0 0 1 0 10 4 1 0 0 1 0 10 5 1 0 0 1 0 10 6 1 0 0 1 0 10 7 1 0 0 1 0 10 8 0 0 1 1 0 10 9 0 0 1 1 0 10 10 0 1 0 0 1 10 11 1 0 0 1 0 10 12 1 0 0 1 0 10 13 0 0 1 1 0 10 14 0 0 1 1 0 10 15 1 0 0 1 0 10 16 1 0 0 1 0 10 17 0 0 1 1 0 10 18 0 0 1 1 0 10 19 1 0 0 1 0 10 20 1 0 0 1 0 10 21 1 0 0 1 0 10 22 1 0 0 1 0 10 23 1 0 0 1 0 10 24 1 0 0 1 0 10 25 1 0 0 1 0 10 26 1 0 0 1 0 10 27 1 0 0 1 0 10 28 1 0 0 1 0 10 29 1 0 0 1 0 10 30 1 0 0 1 0 10 31 1 0 0 1 0 11 0 NULL NULL NULL NULL 0 11 1 1 0 0 1 0 11 2 1 0 0 1 0 11 3 1 0 0 1 0 11 4 1 0 0 1 0 11 5 1 0 0 1 0 11 6 1 0 0 1 0 11 7 1 0 0 1 0 11 8 0 0 1 1 0 11 9 0 0 1 1 0 11 10 0 0 1 1 0 11 11 0 1 0 0 1 11 12 1 0 0 1 0 11 13 0 0 1 1 0 11 14 0 0 1 1 0 11 15 1 0 0 1 0 11 16 1 0 0 1 0 11 17 0 0 1 1 0 11 18 0 0 1 1 0 11 19 1 0 0 1 0 11 20 1 0 0 1 0 11 21 0 0 1 1 0 11 22 1 0 0 1 0 11 23 1 0 0 1 0 11 24 1 0 0 1 0 11 25 1 0 0 1 0 11 26 1 0 0 1 0 11 27 1 0 0 1 0 11 28 1 0 0 1 0 11 29 1 0 0 1 0 11 30 1 0 0 1 0 11 31 1 0 0 1 0 12 0 NULL NULL NULL NULL 0 12 1 1 0 0 1 0 12 2 1 0 0 1 0 12 3 1 0 0 1 0 12 4 1 0 0 1 0 12 5 1 0 0 1 0 12 6 1 0 0 1 0 12 7 1 0 0 1 0 12 8 0 0 1 1 0 12 9 0 0 1 1 0 12 10 0 0 1 1 0 12 11 0 0 1 1 0 12 12 0 1 0 0 1 12 13 0 0 1 1 0 12 14 0 0 1 1 0 12 15 1 0 0 1 0 12 16 1 0 0 1 0 12 17 0 0 1 1 0 12 18 0 0 1 1 0 12 19 1 0 0 1 0 12 20 1 0 0 1 0 12 21 0 0 1 1 0 12 22 1 0 0 1 0 12 23 1 0 0 1 0 12 24 1 0 0 1 0 12 25 1 0 0 1 0 12 26 1 0 0 1 0 12 27 1 0 0 1 0 12 28 1 0 0 1 0 12 29 1 0 0 1 0 12 30 1 0 0 1 0 12 31 1 0 0 1 0 13 0 NULL NULL NULL NULL 0 13 1 1 0 0 1 0 13 2 1 0 0 1 0 13 3 1 0 0 1 0 13 4 1 0 0 1 0 13 5 1 0 0 1 0 13 6 1 0 0 1 0 13 7 1 0 0 1 0 13 8 0 0 1 1 0 13 9 1 0 0 1 0 13 10 1 0 0 1 0 13 11 1 0 0 1 0 13 12 1 0 0 1 0 13 13 0 1 0 0 1 13 14 0 0 1 1 0 13 15 1 0 0 1 0 13 16 1 0 0 1 0 13 17 0 0 1 1 0 13 18 0 0 1 1 0 13 19 1 0 0 1 0 13 20 1 0 0 1 0 13 21 1 0 0 1 0 13 22 1 0 0 1 0 13 23 1 0 0 1 0 13 24 1 0 0 1 0 13 25 1 0 0 1 0 13 26 1 0 0 1 0 13 27 1 0 0 1 0 13 28 1 0 0 1 0 13 29 1 0 0 1 0 13 30 1 0 0 1 0 13 31 1 0 0 1 0 14 0 NULL NULL NULL NULL 0 14 1 1 0 0 1 0 14 2 1 0 0 1 0 14 3 1 0 0 1 0 14 4 1 0 0 1 0 14 5 1 0 0 1 0 14 6 1 0 0 1 0 14 7 1 0 0 1 0 14 8 0 0 1 1 0 14 9 1 0 0 1 0 14 10 1 0 0 1 0 14 11 1 0 0 1 0 14 12 1 0 0 1 0 14 13 1 0 0 1 0 14 14 0 1 0 0 1 14 15 1 0 0 1 0 14 16 1 0 0 1 0 14 17 0 0 1 1 0 14 18 0 0 1 1 0 14 19 1 0 0 1 0 14 20 1 0 0 1 0 14 21 1 0 0 1 0 14 22 1 0 0 1 0 14 23 1 0 0 1 0 14 24 1 0 0 1 0 14 25 1 0 0 1 0 14 26 1 0 0 1 0 14 27 1 0 0 1 0 14 28 1 0 0 1 0 14 29 1 0 0 1 0 14 30 1 0 0 1 0 14 31 1 0 0 1 0 15 0 NULL NULL NULL NULL 0 15 1 1 0 0 1 0 15 2 1 0 0 1 0 15 3 1 0 0 1 0 15 4 1 0 0 1 0 15 5 1 0 0 1 0 15 6 1 0 0 1 0 15 7 1 0 0 1 0 15 8 0 0 1 1 0 15 9 0 0 1 1 0 15 10 0 0 1 1 0 15 11 0 0 1 1 0 15 12 0 0 1 1 0 15 13 0 0 1 1 0 15 14 0 0 1 1 0 15 15 0 1 0 0 1 15 16 1 0 0 1 0 15 17 0 0 1 1 0 15 18 0 0 1 1 0 15 19 1 0 0 1 0 15 20 1 0 0 1 0 15 21 0 0 1 1 0 15 22 1 0 0 1 0 15 23 1 0 0 1 0 15 24 1 0 0 1 0 15 25 1 0 0 1 0 15 26 1 0 0 1 0 15 27 1 0 0 1 0 15 28 1 0 0 1 0 15 29 1 0 0 1 0 15 30 1 0 0 1 0 15 31 1 0 0 1 0 16 0 NULL NULL NULL NULL 0 16 1 1 0 0 1 0 16 2 1 0 0 1 0 16 3 1 0 0 1 0 16 4 1 0 0 1 0 16 5 1 0 0 1 0 16 6 1 0 0 1 0 16 7 1 0 0 1 0 16 8 0 0 1 1 0 16 9 0 0 1 1 0 16 10 0 0 1 1 0 16 11 0 0 1 1 0 16 12 0 0 1 1 0 16 13 0 0 1 1 0 16 14 0 0 1 1 0 16 15 0 0 1 1 0 16 16 0 1 0 0 1 16 17 0 0 1 1 0 16 18 0 0 1 1 0 16 19 1 0 0 1 0 16 20 1 0 0 1 0 16 21 0 0 1 1 0 16 22 1 0 0 1 0 16 23 1 0 0 1 0 16 24 1 0 0 1 0 16 25 1 0 0 1 0 16 26 1 0 0 1 0 16 27 1 0 0 1 0 16 28 1 0 0 1 0 16 29 1 0 0 1 0 16 30 1 0 0 1 0 16 31 1 0 0 1 0 17 0 NULL NULL NULL NULL 0 17 1 1 0 0 1 0 17 2 1 0 0 1 0 17 3 1 0 0 1 0 17 4 1 0 0 1 0 17 5 1 0 0 1 0 17 6 1 0 0 1 0 17 7 1 0 0 1 0 17 8 0 0 1 1 0 17 9 1 0 0 1 0 17 10 1 0 0 1 0 17 11 1 0 0 1 0 17 12 1 0 0 1 0 17 13 1 0 0 1 0 17 14 1 0 0 1 0 17 15 1 0 0 1 0 17 16 1 0 0 1 0 17 17 0 1 0 0 1 17 18 0 0 1 1 0 17 19 1 0 0 1 0 17 20 1 0 0 1 0 17 21 1 0 0 1 0 17 22 1 0 0 1 0 17 23 1 0 0 1 0 17 24 1 0 0 1 0 17 25 1 0 0 1 0 17 26 1 0 0 1 0 17 27 1 0 0 1 0 17 28 1 0 0 1 0 17 29 1 0 0 1 0 17 30 1 0 0 1 0 17 31 1 0 0 1 0 18 0 NULL NULL NULL NULL 0 18 1 1 0 0 1 0 18 2 1 0 0 1 0 18 3 1 0 0 1 0 18 4 1 0 0 1 0 18 5 1 0 0 1 0 18 6 1 0 0 1 0 18 7 1 0 0 1 0 18 8 0 0 1 1 0 18 9 1 0 0 1 0 18 10 1 0 0 1 0 18 11 1 0 0 1 0 18 12 1 0 0 1 0 18 13 1 0 0 1 0 18 14 1 0 0 1 0 18 15 1 0 0 1 0 18 16 1 0 0 1 0 18 17 1 0 0 1 0 18 18 0 1 0 0 1 18 19 1 0 0 1 0 18 20 1 0 0 1 0 18 21 1 0 0 1 0 18 22 1 0 0 1 0 18 23 1 0 0 1 0 18 24 1 0 0 1 0 18 25 1 0 0 1 0 18 26 1 0 0 1 0 18 27 1 0 0 1 0 18 28 1 0 0 1 0 18 29 1 0 0 1 0 18 30 1 0 0 1 0 18 31 1 0 0 1 0 19 0 NULL NULL NULL NULL 0 19 1 1 0 0 1 0 19 2 1 0 0 1 0 19 3 1 0 0 1 0 19 4 1 0 0 1 0 19 5 1 0 0 1 0 19 6 1 0 0 1 0 19 7 1 0 0 1 0 19 8 0 0 1 1 0 19 9 0 0 1 1 0 19 10 0 0 1 1 0 19 11 0 0 1 1 0 19 12 0 0 1 1 0 19 13 0 0 1 1 0 19 14 0 0 1 1 0 19 15 0 0 1 1 0 19 16 0 0 1 1 0 19 17 0 0 1 1 0 19 18 0 0 1 1 0 19 19 0 1 0 0 1 19 20 1 0 0 1 0 19 21 0 0 1 1 0 19 22 1 0 0 1 0 19 23 1 0 0 1 0 19 24 1 0 0 1 0 19 25 1 0 0 1 0 19 26 1 0 0 1 0 19 27 1 0 0 1 0 19 28 1 0 0 1 0 19 29 1 0 0 1 0 19 30 1 0 0 1 0 19 31 1 0 0 1 0 20 0 NULL NULL NULL NULL 0 20 1 1 0 0 1 0 20 2 1 0 0 1 0 20 3 1 0 0 1 0 20 4 1 0 0 1 0 20 5 1 0 0 1 0 20 6 1 0 0 1 0 20 7 1 0 0 1 0 20 8 0 0 1 1 0 20 9 0 0 1 1 0 20 10 0 0 1 1 0 20 11 0 0 1 1 0 20 12 0 0 1 1 0 20 13 0 0 1 1 0 20 14 0 0 1 1 0 20 15 0 0 1 1 0 20 16 0 0 1 1 0 20 17 0 0 1 1 0 20 18 0 0 1 1 0 20 19 0 0 1 1 0 20 20 0 1 0 0 1 20 21 0 0 1 1 0 20 22 1 0 0 1 0 20 23 1 0 0 1 0 20 24 1 0 0 1 0 20 25 1 0 0 1 0 20 26 1 0 0 1 0 20 27 1 0 0 1 0 20 28 1 0 0 1 0 20 29 1 0 0 1 0 20 30 1 0 0 1 0 20 31 1 0 0 1 0 21 0 NULL NULL NULL NULL 0 21 1 1 0 0 1 0 21 2 1 0 0 1 0 21 3 1 0 0 1 0 21 4 1 0 0 1 0 21 5 1 0 0 1 0 21 6 1 0 0 1 0 21 7 1 0 0 1 0 21 8 0 0 1 1 0 21 9 0 0 1 1 0 21 10 0 0 1 1 0 21 11 1 0 0 1 0 21 12 1 0 0 1 0 21 13 0 0 1 1 0 21 14 0 0 1 1 0 21 15 1 0 0 1 0 21 16 1 0 0 1 0 21 17 0 0 1 1 0 21 18 0 0 1 1 0 21 19 1 0 0 1 0 21 20 1 0 0 1 0 21 21 0 1 0 0 1 21 22 1 0 0 1 0 21 23 1 0 0 1 0 21 24 1 0 0 1 0 21 25 1 0 0 1 0 21 26 1 0 0 1 0 21 27 1 0 0 1 0 21 28 1 0 0 1 0 21 29 1 0 0 1 0 21 30 1 0 0 1 0 21 31 1 0 0 1 0 22 0 NULL NULL NULL NULL 0 22 1 1 0 0 1 0 22 2 1 0 0 1 0 22 3 1 0 0 1 0 22 4 1 0 0 1 0 22 5 0 0 1 1 0 22 6 1 0 0 1 0 22 7 1 0 0 1 0 22 8 0 0 1 1 0 22 9 0 0 1 1 0 22 10 0 0 1 1 0 22 11 0 0 1 1 0 22 12 0 0 1 1 0 22 13 0 0 1 1 0 22 14 0 0 1 1 0 22 15 0 0 1 1 0 22 16 0 0 1 1 0 22 17 0 0 1 1 0 22 18 0 0 1 1 0 22 19 0 0 1 1 0 22 20 0 0 1 1 0 22 21 0 0 1 1 0 22 22 0 1 0 0 1 22 23 1 0 0 1 0 22 24 1 0 0 1 0 22 25 1 0 0 1 0 22 26 1 0 0 1 0 22 27 1 0 0 1 0 22 28 1 0 0 1 0 22 29 1 0 0 1 0 22 30 1 0 0 1 0 22 31 1 0 0 1 0 23 0 NULL NULL NULL NULL 0 23 1 0 0 1 1 0 23 2 1 0 0 1 0 23 3 0 0 1 1 0 23 4 1 0 0 1 0 23 5 0 0 1 1 0 23 6 1 0 0 1 0 23 7 1 0 0 1 0 23 8 0 0 1 1 0 23 9 0 0 1 1 0 23 10 0 0 1 1 0 23 11 0 0 1 1 0 23 12 0 0 1 1 0 23 13 0 0 1 1 0 23 14 0 0 1 1 0 23 15 0 0 1 1 0 23 16 0 0 1 1 0 23 17 0 0 1 1 0 23 18 0 0 1 1 0 23 19 0 0 1 1 0 23 20 0 0 1 1 0 23 21 0 0 1 1 0 23 22 0 0 1 1 0 23 23 0 1 0 0 1 23 24 1 0 0 1 0 23 25 1 0 0 1 0 23 26 1 0 0 1 0 23 27 1 0 0 1 0 23 28 0 0 1 1 0 23 29 0 1 0 0 1 23 30 1 0 0 1 0 23 31 1 0 0 1 0 24 0 NULL NULL NULL NULL 0 24 1 0 0 1 1 0 24 2 0 0 1 1 0 24 3 0 0 1 1 0 24 4 0 0 1 1 0 24 5 0 0 1 1 0 24 6 0 0 1 1 0 24 7 0 0 1 1 0 24 8 0 0 1 1 0 24 9 0 0 1 1 0 24 10 0 0 1 1 0 24 11 0 0 1 1 0 24 12 0 0 1 1 0 24 13 0 0 1 1 0 24 14 0 0 1 1 0 24 15 0 0 1 1 0 24 16 0 0 1 1 0 24 17 0 0 1 1 0 24 18 0 0 1 1 0 24 19 0 0 1 1 0 24 20 0 0 1 1 0 24 21 0 0 1 1 0 24 22 0 0 1 1 0 24 23 0 0 1 1 0 24 24 0 1 0 0 1 24 25 0 0 1 1 0 24 26 0 0 1 1 0 24 27 0 1 0 0 1 24 28 0 0 1 1 0 24 29 0 0 1 1 0 24 30 1 0 0 1 0 24 31 1 0 0 1 0 25 0 NULL NULL NULL NULL 0 25 1 0 0 1 1 0 25 2 0 0 1 1 0 25 3 0 0 1 1 0 25 4 0 0 1 1 0 25 5 0 0 1 1 0 25 6 0 0 1 1 0 25 7 0 0 1 1 0 25 8 0 0 1 1 0 25 9 0 0 1 1 0 25 10 0 0 1 1 0 25 11 0 0 1 1 0 25 12 0 0 1 1 0 25 13 0 0 1 1 0 25 14 0 0 1 1 0 25 15 0 0 1 1 0 25 16 0 0 1 1 0 25 17 0 0 1 1 0 25 18 0 0 1 1 0 25 19 0 0 1 1 0 25 20 0 0 1 1 0 25 21 0 0 1 1 0 25 22 0 0 1 1 0 25 23 0 0 1 1 0 25 24 1 0 0 1 0 25 25 0 1 0 0 1 25 26 0 0 1 1 0 25 27 1 0 0 1 0 25 28 0 0 1 1 0 25 29 0 0 1 1 0 25 30 1 0 0 1 0 25 31 1 0 0 1 0 26 0 NULL NULL NULL NULL 0 26 1 0 0 1 1 0 26 2 0 0 1 1 0 26 3 0 0 1 1 0 26 4 0 0 1 1 0 26 5 0 0 1 1 0 26 6 0 0 1 1 0 26 7 0 0 1 1 0 26 8 0 0 1 1 0 26 9 0 0 1 1 0 26 10 0 0 1 1 0 26 11 0 0 1 1 0 26 12 0 0 1 1 0 26 13 0 0 1 1 0 26 14 0 0 1 1 0 26 15 0 0 1 1 0 26 16 0 0 1 1 0 26 17 0 0 1 1 0 26 18 0 0 1 1 0 26 19 0 0 1 1 0 26 20 0 0 1 1 0 26 21 0 0 1 1 0 26 22 0 0 1 1 0 26 23 0 0 1 1 0 26 24 1 0 0 1 0 26 25 1 0 0 1 0 26 26 0 1 0 0 1 26 27 1 0 0 1 0 26 28 0 0 1 1 0 26 29 0 0 1 1 0 26 30 1 0 0 1 0 26 31 1 0 0 1 0 27 0 NULL NULL NULL NULL 0 27 1 0 0 1 1 0 27 2 0 0 1 1 0 27 3 0 0 1 1 0 27 4 0 0 1 1 0 27 5 0 0 1 1 0 27 6 0 0 1 1 0 27 7 0 0 1 1 0 27 8 0 0 1 1 0 27 9 0 0 1 1 0 27 10 0 0 1 1 0 27 11 0 0 1 1 0 27 12 0 0 1 1 0 27 13 0 0 1 1 0 27 14 0 0 1 1 0 27 15 0 0 1 1 0 27 16 0 0 1 1 0 27 17 0 0 1 1 0 27 18 0 0 1 1 0 27 19 0 0 1 1 0 27 20 0 0 1 1 0 27 21 0 0 1 1 0 27 22 0 0 1 1 0 27 23 0 0 1 1 0 27 24 0 1 0 0 1 27 25 0 0 1 1 0 27 26 0 0 1 1 0 27 27 0 1 0 0 1 27 28 0 0 1 1 0 27 29 0 0 1 1 0 27 30 1 0 0 1 0 27 31 1 0 0 1 0 28 0 NULL NULL NULL NULL 0 28 1 0 0 1 1 0 28 2 1 0 0 1 0 28 3 1 0 0 1 0 28 4 1 0 0 1 0 28 5 0 0 1 1 0 28 6 1 0 0 1 0 28 7 1 0 0 1 0 28 8 0 0 1 1 0 28 9 0 0 1 1 0 28 10 0 0 1 1 0 28 11 0 0 1 1 0 28 12 0 0 1 1 0 28 13 0 0 1 1 0 28 14 0 0 1 1 0 28 15 0 0 1 1 0 28 16 0 0 1 1 0 28 17 0 0 1 1 0 28 18 0 0 1 1 0 28 19 0 0 1 1 0 28 20 0 0 1 1 0 28 21 0 0 1 1 0 28 22 0 0 1 1 0 28 23 1 0 0 1 0 28 24 1 0 0 1 0 28 25 1 0 0 1 0 28 26 1 0 0 1 0 28 27 1 0 0 1 0 28 28 0 1 0 0 1 28 29 1 0 0 1 0 28 30 1 0 0 1 0 28 31 1 0 0 1 0 29 0 NULL NULL NULL NULL 0 29 1 0 0 1 1 0 29 2 1 0 0 1 0 29 3 0 0 1 1 0 29 4 1 0 0 1 0 29 5 0 0 1 1 0 29 6 1 0 0 1 0 29 7 1 0 0 1 0 29 8 0 0 1 1 0 29 9 0 0 1 1 0 29 10 0 0 1 1 0 29 11 0 0 1 1 0 29 12 0 0 1 1 0 29 13 0 0 1 1 0 29 14 0 0 1 1 0 29 15 0 0 1 1 0 29 16 0 0 1 1 0 29 17 0 0 1 1 0 29 18 0 0 1 1 0 29 19 0 0 1 1 0 29 20 0 0 1 1 0 29 21 0 0 1 1 0 29 22 0 0 1 1 0 29 23 0 1 0 0 1 29 24 1 0 0 1 0 29 25 1 0 0 1 0 29 26 1 0 0 1 0 29 27 1 0 0 1 0 29 28 0 0 1 1 0 29 29 0 1 0 0 1 29 30 1 0 0 1 0 29 31 1 0 0 1 0 30 0 NULL NULL NULL NULL 0 30 1 0 0 1 1 0 30 2 0 0 1 1 0 30 3 0 0 1 1 0 30 4 0 0 1 1 0 30 5 0 0 1 1 0 30 6 0 0 1 1 0 30 7 0 0 1 1 0 30 8 0 0 1 1 0 30 9 0 0 1 1 0 30 10 0 0 1 1 0 30 11 0 0 1 1 0 30 12 0 0 1 1 0 30 13 0 0 1 1 0 30 14 0 0 1 1 0 30 15 0 0 1 1 0 30 16 0 0 1 1 0 30 17 0 0 1 1 0 30 18 0 0 1 1 0 30 19 0 0 1 1 0 30 20 0 0 1 1 0 30 21 0 0 1 1 0 30 22 0 0 1 1 0 30 23 0 0 1 1 0 30 24 0 0 1 1 0 30 25 0 0 1 1 0 30 26 0 0 1 1 0 30 27 0 0 1 1 0 30 28 0 0 1 1 0 30 29 0 0 1 1 0 30 30 0 1 0 0 1 30 31 1 0 0 1 0 31 0 NULL NULL NULL NULL 0 31 1 0 0 1 1 0 31 2 0 0 1 1 0 31 3 0 0 1 1 0 31 4 0 0 1 1 0 31 5 0 0 1 1 0 31 6 0 0 1 1 0 31 7 0 0 1 1 0 31 8 0 0 1 1 0 31 9 0 0 1 1 0 31 10 0 0 1 1 0 31 11 0 0 1 1 0 31 12 0 0 1 1 0 31 13 0 0 1 1 0 31 14 0 0 1 1 0 31 15 0 0 1 1 0 31 16 0 0 1 1 0 31 17 0 0 1 1 0 31 18 0 0 1 1 0 31 19 0 0 1 1 0 31 20 0 0 1 1 0 31 21 0 0 1 1 0 31 22 0 0 1 1 0 31 23 0 0 1 1 0 31 24 0 0 1 1 0 31 25 0 0 1 1 0 31 26 0 0 1 1 0 31 27 0 0 1 1 0 31 28 0 0 1 1 0 31 29 0 0 1 1 0 31 30 0 0 1 1 0 31 31 0 1 0 0 1 # Verify that the index on the int column is not used when # comparing the int column to a JSON column. The two columns # should be compared using the JSON comparator. CREATE TABLE t2(i int, j json); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' CREATE INDEX t2_i ON t2(i); INSERT INTO t2 values (1, CAST(1 AS JSON)); INSERT INTO t2 values (1, CAST('"1"' AS JSON)); ANALYZE TABLE t2; Table Op Msg_type Msg_text test.t2 analyze status OK EXPLAIN SELECT * FROM t2 where i = j; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 p0,p1,p2,p3,p4,p5,p6,p7 ALL NULL NULL NULL NULL 2 50.00 Using where Warnings: Note 1003 /* select#1 */ select `test`.`t2`.`i` AS `i`,`test`.`t2`.`j` AS `j` from `test`.`t2` where (`test`.`t2`.`i` = `test`.`t2`.`j`) SELECT * FROM t2 where i = j; i j 1 1 DROP TABLE t2; CREATE TABLE numbers(id INT NOT NULL AUTO_INCREMENT, `rank` INT, j JSON, PRIMARY KEY(id)); INSERT INTO numbers(`rank`, j) VALUES (1, '-1e100'), (2, '-1e65'), # smallest DECIMAL (negative with 65 digits) (3, CAST(-99999999999999999999999999999999999999999999999999999999999999999 AS JSON)), (4, CAST(-9223372036854776001 AS JSON)), (5, CAST(-9223372036854776000 AS JSON)), # closest DOUBLE approximation of the smallest SIGNED BIGINT (5 /* same rank as previous */, '-9.223372036854776e18'), (6, CAST(-9223372036854775999 AS JSON)), (7, CAST(-9223372036854775809 AS JSON)), # smallest SIGNED BIGINT - 1 (8, CAST(-9223372036854775808 AS JSON)), # smallest SIGNED BIGINT (9, CAST(-9223372036854775807 AS JSON)), # smallest SIGNED BIGINT + 1 (10, '-1e-50'), # close to zero, fits in a DECIMAL (11, '-1.2345678901234e-71'), # has to be truncated to fit in a DECIMAL (12, CAST(-0.000000000000000000000000000000000000000000000000000000000000000000000012 AS JSON)), (12 /* same rank as previous */, '-1.2e-71'), (13, '-1.0345678901234e-71'), # has to be truncated to fit in a DECIMAL (14, '-1e-100'), # too close to zero to fit in a DECIMAL (15, '0'), (15 /* same rank as previous */, '0.0'), (15 /* same rank as previous */, '-0.0'), (15 /* same rank as previous */, CAST(0.0 AS JSON)), (15 /* same rank as previous */, CAST(CAST(-0.0e0 AS DECIMAL) AS JSON)), (16, '1e-100'), # too close to zero to fit in a DECIMAL (17, '1.0345678901234e-71'), # has to be truncated to fit in a DECIMAL (18, CAST(0.000000000000000000000000000000000000000000000000000000000000000000000012 AS JSON)), (18 /* same rank as previous */, '1.2e-71'), (19, '1.2345678901234e-71'), # has to be truncated to fit in a DECIMAL (20, '1e-50'), # close to zero, fits in a DECIMAL (21, CAST(9223372036854775806 AS JSON)), # largest SIGNED BIGINT - 1 (22, CAST(9223372036854775807 AS JSON)), # largest SIGNED BIGINT (23, CAST(9223372036854775808 AS JSON)), # largest SIGNED BIGINT + 1 (24, CAST(9223372036854775999 AS JSON)), # closest DOUBLE approximation of the largest SIGNED BIGINT (25, '9.223372036854776e18'), (25 /* same rank as previous */, CAST(9223372036854776000 AS JSON)), (26, CAST(9223372036854776001 AS JSON)), (27, CAST(18446744073709551614 AS JSON)), # largest UNSIGNED BIGINT - 1 (28, CAST(18446744073709551615 AS JSON)), # largest UNSIGNED BIGINT (29, CAST(18446744073709551616 AS JSON)), # largest UNSIGNED BIGINT + 1 # Gets converted to the closest DOUBLE approximation of UNSIGNED BIGINT + 1 # by the JSON parser (30, '18446744073709551616'), # biggest DECIMAL (65 digits) (31, CAST(99999999999999999999999999999999999999999999999999999999999999999 AS JSON)), (32, CAST('1e65' AS JSON)), (33, CAST('1e100' AS JSON)); SELECT *, JSON_TYPE(j) FROM numbers ORDER BY id; id rank j JSON_TYPE(j) 1 1 -1e100 DOUBLE 2 2 -1e65 DOUBLE 3 3 -99999999999999999999999999999999999999999999999999999999999999999 DECIMAL 4 4 -9223372036854776001 DECIMAL 5 5 -9223372036854776000 DECIMAL 6 5 -9.223372036854776e18 DOUBLE 7 6 -9223372036854775999 DECIMAL 8 7 -9223372036854775809 DECIMAL 9 8 -9223372036854775808 INTEGER 10 9 -9223372036854775807 INTEGER 11 10 -9.999999999999999e-51 DOUBLE 12 11 -1.2345678901233999e-71 DOUBLE 13 12 -0.000000000000000000000000000000000000000000000000000000000000000000000012 DECIMAL 14 12 -1.2e-71 DOUBLE 15 13 -1.0345678901234e-71 DOUBLE 16 14 -1e-100 DOUBLE 17 15 0 INTEGER 18 15 0.0 DOUBLE 19 15 -0.0 DOUBLE 20 15 0.0 DECIMAL 21 15 0 DECIMAL 22 16 1e-100 DOUBLE 23 17 1.0345678901234e-71 DOUBLE 24 18 0.000000000000000000000000000000000000000000000000000000000000000000000012 DECIMAL 25 18 1.2e-71 DOUBLE 26 19 1.2345678901233999e-71 DOUBLE 27 20 9.999999999999999e-51 DOUBLE 28 21 9223372036854775806 INTEGER 29 22 9223372036854775807 INTEGER 30 23 9223372036854775808 UNSIGNED INTEGER 31 24 9223372036854775999 UNSIGNED INTEGER 32 25 9.223372036854776e18 DOUBLE 33 25 9223372036854776000 UNSIGNED INTEGER 34 26 9223372036854776001 UNSIGNED INTEGER 35 27 18446744073709551614 UNSIGNED INTEGER 36 28 18446744073709551615 UNSIGNED INTEGER 37 29 18446744073709551616 DECIMAL 38 30 1.8446744073709552e19 DOUBLE 39 31 99999999999999999999999999999999999999999999999999999999999999999 DECIMAL 40 32 1e65 DOUBLE 41 33 1e100 DOUBLE SELECT a.j, b.j, a.j < b.j, a.j = b.j, a.j > b.j, a.j <=> b.j FROM numbers a, numbers b WHERE ((a.j < b.j) <> (a.`rank` < b.`rank`)) OR ((a.j = b.j) <> (a.`rank` = b.`rank`)) OR ((a.j > b.j) <> (a.`rank` > b.`rank`)) OR ((a.j <=> b.j) <> (a.`rank` <=> b.`rank`)); j j a.j < b.j a.j = b.j a.j > b.j a.j <=> b.j DROP TABLE numbers; CREATE TABLE t(txt TEXT); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' INSERT INTO t VALUES (''); SELECT COUNT(*) FROM t WHERE JSON_EXTRACT(txt, '$') = 5; ERROR 22032: Invalid JSON text in argument 1 to function json_extract: "The document is empty." at position 0. SELECT COUNT(*) FROM t WHERE 5 = JSON_EXTRACT(txt, '$'); ERROR 22032: Invalid JSON text in argument 1 to function json_extract: "The document is empty." at position 0. DROP TABLE t; # # WL#8539 - Ordering of scalar JSON values # CREATE TABLE timestamps (ts TIMESTAMP(6)); INSERT INTO timestamps VALUES ('2000-01-01 00:00:00'), ('2000-01-01 00:00:00.01'), ('2000-01-01 00:00:00.001'), ('2000-01-01 00:00:00.002'), ('2000-01-01 00:00:00.02'), ('2000-01-01 23:59:59.999999'), ('2000-01-02 00:00:00'), ('2000-02-01 00:00:00'), ('2010-12-02 01:00:00'), ('2010-12-02 01:02:00'), ('2010-12-02 01:02:03'), ('2010-12-02 02:01:00'), ('1970-01-02 00:00:01'), ('1970-01-02 00:00:01.000001'); SELECT * FROM timestamps ORDER BY CAST(ts AS JSON); ts 1970-01-02 00:00:01.000000 1970-01-02 00:00:01.000001 2000-01-01 00:00:00.000000 2000-01-01 00:00:00.001000 2000-01-01 00:00:00.002000 2000-01-01 00:00:00.010000 2000-01-01 00:00:00.020000 2000-01-01 23:59:59.999999 2000-01-02 00:00:00.000000 2000-02-01 00:00:00.000000 2010-12-02 01:00:00.000000 2010-12-02 01:02:00.000000 2010-12-02 01:02:03.000000 2010-12-02 02:01:00.000000 CREATE TABLE datetimes (dt DATETIME(6)); INSERT INTO datetimes SELECT ts FROM timestamps; INSERT INTO datetimes VALUES ('1960-01-02 03:04:05'), ('1960-01-02 03:04:06'), ('1000-01-01 00:00:00'), ('9999-12-31 23:59:59.999999'); SELECT * FROM datetimes ORDER BY CAST(dt AS JSON); dt 1000-01-01 00:00:00.000000 1960-01-02 03:04:05.000000 1960-01-02 03:04:06.000000 1970-01-02 00:00:01.000000 1970-01-02 00:00:01.000001 2000-01-01 00:00:00.000000 2000-01-01 00:00:00.001000 2000-01-01 00:00:00.002000 2000-01-01 00:00:00.010000 2000-01-01 00:00:00.020000 2000-01-01 23:59:59.999999 2000-01-02 00:00:00.000000 2000-02-01 00:00:00.000000 2010-12-02 01:00:00.000000 2010-12-02 01:02:00.000000 2010-12-02 01:02:03.000000 2010-12-02 02:01:00.000000 9999-12-31 23:59:59.999999 CREATE TABLE times (t TIME(6)); INSERT INTO times SELECT DISTINCT TIME(dt) FROM datetimes; INSERT INTO times VALUES ('-838:59:59'), ('838:59:59'), ('-00:00:00.000001'), ('-00:00:00'), ('24:00:00'), ('-12:00:00'), ('-24:00:00'); SELECT * FROM times ORDER BY CAST(t AS JSON); t -838:59:59.000000 -24:00:00.000000 -12:00:00.000000 -00:00:00.000001 00:00:00.000000 00:00:00.000000 00:00:00.001000 00:00:00.002000 00:00:00.010000 00:00:00.020000 00:00:01.000000 00:00:01.000001 01:00:00.000000 01:02:00.000000 01:02:03.000000 02:01:00.000000 03:04:05.000000 03:04:06.000000 23:59:59.999999 24:00:00.000000 838:59:59.000000 CREATE TABLE dates(d DATE); INSERT INTO dates SELECT DISTINCT DATE(dt) FROM datetimes; CREATE TABLE signed_integers(i BIGINT); INSERT INTO signed_integers VALUES (0), (1), (2), (3), (4), (5), (10), (11), (12), (20), (21), (22), (99), (100), (101), (999), (1000), (1001), (9223372036854775806), (9223372036854775807); INSERT INTO signed_integers SELECT -i FROM signed_integers; INSERT INTO signed_integers VALUES (-9223372036854775808); SELECT * FROM signed_integers ORDER BY CAST(i AS JSON); i -9223372036854775808 -9223372036854775807 -9223372036854775806 -1001 -1000 -999 -101 -100 -99 -22 -21 -20 -12 -11 -10 -5 -4 -3 -2 -1 0 0 1 2 3 4 5 10 11 12 20 21 22 99 100 101 999 1000 1001 9223372036854775806 9223372036854775807 CREATE TABLE unsigned_integers(i BIGINT UNSIGNED); INSERT INTO unsigned_integers SELECT i FROM signed_integers where i >= 0; INSERT INTO unsigned_integers VALUES (9223372036854775808), (18446744073709551614), (18446744073709551615); SELECT * FROM unsigned_integers ORDER BY CAST(i AS JSON); i 0 0 1 2 3 4 5 10 11 12 20 21 22 99 100 101 999 1000 1001 9223372036854775806 9223372036854775807 9223372036854775808 18446744073709551614 18446744073709551615 CREATE TABLE decimals (d DECIMAL(25,3)); INSERT INTO decimals SELECT i FROM signed_integers; INSERT INTO decimals SELECT i FROM unsigned_integers; INSERT INTO decimals VALUES (9223372036854776000), (-9223372036854776000), (9223372036854776001), (-9223372036854776001), (3.13), (3.14), (3.15), (-3.13), (-3.14), (-3.15), (3.131), (3.141), (3.151), (-3.131), (-3.141), (-3.151), (3.129), (3.139), (3.149), (-3.129), (-3.139), (-3.149), (0.1), (0.01), (0.001), (-0.1), (-0.01), (-0.001); SELECT * FROM decimals ORDER BY CAST(d AS JSON); d -9223372036854776001.000 -9223372036854776000.000 -9223372036854775808.000 -9223372036854775807.000 -9223372036854775806.000 -1001.000 -1000.000 -999.000 -101.000 -100.000 -99.000 -22.000 -21.000 -20.000 -12.000 -11.000 -10.000 -5.000 -4.000 -3.151 -3.150 -3.149 -3.141 -3.140 -3.139 -3.131 -3.130 -3.129 -3.000 -2.000 -1.000 -0.100 -0.010 -0.001 0.000 0.000 0.000 0.000 0.001 0.010 0.100 1.000 1.000 2.000 2.000 3.000 3.000 3.129 3.130 3.131 3.139 3.140 3.141 3.149 3.150 3.151 4.000 4.000 5.000 5.000 10.000 10.000 11.000 11.000 12.000 12.000 20.000 20.000 21.000 21.000 22.000 22.000 99.000 99.000 100.000 100.000 101.000 101.000 999.000 999.000 1000.000 1000.000 1001.000 1001.000 9223372036854775806.000 9223372036854775806.000 9223372036854775807.000 9223372036854775807.000 9223372036854775808.000 9223372036854776000.000 9223372036854776001.000 18446744073709551614.000 18446744073709551615.000 CREATE TABLE doubles (d DOUBLE); INSERT INTO doubles SELECT d FROM decimals; INSERT INTO doubles VALUES (1.5E-200), (1.5E200), (-1.5E-200), (-1.5E200), (-1E-323), (-1E-322), (-1E-321), (1E-323), (1E-322), (1E-321), (-1E308), (-1E307), (-1E306), (1E308), (1E307), (1E306); SELECT * FROM doubles ORDER BY CAST(d AS JSON); d -1e308 -1e307 -1e306 -1.5e200 -9.223372036854776e18 -9.223372036854776e18 -9.223372036854776e18 -9.223372036854776e18 -9.223372036854776e18 -1001 -1000 -999 -101 -100 -99 -22 -21 -20 -12 -11 -10 -5 -4 -3.151 -3.15 -3.149 -3.141 -3.14 -3.139 -3.131 -3.13 -3.129 -3 -2 -1 -0.1 -0.01 -0.001 -1.5e-200 -1e-321 -1e-322 -1e-323 0 0 0 0 1e-323 1e-322 1e-321 1.5e-200 0.001 0.01 0.1 1 1 2 2 3 3 3.129 3.13 3.131 3.139 3.14 3.141 3.149 3.15 3.151 4 4 5 5 10 10 11 11 12 12 20 20 21 21 22 22 99 99 100 100 101 101 999 999 1000 1000 1001 1001 9.223372036854776e18 9.223372036854776e18 9.223372036854776e18 9.223372036854776e18 9.223372036854776e18 9.223372036854776e18 9.223372036854776e18 1.8446744073709552e19 1.8446744073709552e19 1.5e200 1e306 1e307 1e308 CREATE TABLE t(id INT PRIMARY KEY AUTO_INCREMENT, j JSON); INSERT INTO t(j) SELECT CAST(ts AS JSON) FROM timestamps ORDER BY ts; INSERT INTO t(j) SELECT CAST(dt AS JSON) FROM datetimes ORDER BY dt; INSERT INTO t(j) SELECT CAST(t AS JSON) FROM times ORDER BY t; INSERT INTO t(j) SELECT CAST(d AS JSON) FROM dates ORDER BY d; INSERT INTO t(j) SELECT CAST(i AS JSON) FROM signed_integers ORDER BY i; INSERT INTO t(j) SELECT CAST(i AS JSON) FROM unsigned_integers ORDER BY i; INSERT INTO t(j) SELECT CAST(d AS JSON) FROM decimals ORDER BY d; INSERT INTO t(j) SELECT CAST(d AS JSON) FROM doubles ORDER BY d; INSERT INTO t(j) VALUES (NULL), (NULL), ('true'), ('false'), ('null'), ('"abc"'), ('""'), ('"abcd"'), ('"bc"'), ('"abc\\u0000\\u0000"'), ('"abc\\u0000"'), ('0.0'), ('-0.0'), ('9223372036854776000'), ('1.0e-1'), ('1.0e-2'), (CAST(0.000000000000001 AS JSON)), (CAST(0.00000000000000115 AS JSON)), (CAST(0.0000000000000001 AS JSON)), (CAST(0.000000000000000116 AS JSON)), (CAST(0.0 AS JSON)), (CAST(-999999999999999999999999999999999999999999999999999999999999999999999999999999999 AS JSON)), (CAST(-999999999999999999999999999999999999999999999999999999999999999999999999999999998 AS JSON)), (CAST(-999999999999999999999999999999999999999999999999999999999999999999999999999999997 AS JSON)), (CAST(999999999999999999999999999999999999999999999999999999999999999999999999999999997 AS JSON)), (CAST(999999999999999999999999999999999999999999999999999999999999999999999999999999998 AS JSON)), (CAST(999999999999999999999999999999999999999999999999999999999999999999999999999999999 AS JSON)), (CAST(-1E81 AS JSON)), (CAST(-9.99E80 AS JSON)), (CAST(9.99E80 AS JSON)), (CAST(1E81 AS JSON)), (JSON_ARRAY('an array')), (JSON_ARRAY('another array')), (JSON_OBJECT('an', 'object')), (JSON_OBJECT('another', 'object')), (CAST(ST_GeomFromText('POINT(0 0)') AS JSON)), (CAST(ST_GeomFromText('POINT(0 1)') AS JSON)), (CAST(CAST('1234abcd' AS BINARY) AS JSON)); SELECT j, JSON_TYPE(j) AS tp FROM t ORDER BY j, id; j tp NULL NULL NULL NULL null NULL -1e308 DOUBLE -1e307 DOUBLE -1e306 DOUBLE -1.5e200 DOUBLE -1e81 DOUBLE -999999999999999999999999999999999999999999999999999999999999999999999999999999999 DECIMAL -999999999999999999999999999999999999999999999999999999999999999999999999999999998 DECIMAL -999999999999999999999999999999999999999999999999999999999999999999999999999999997 DECIMAL -9.99e80 DOUBLE -9223372036854776001.000 DECIMAL -9223372036854776000.000 DECIMAL -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9223372036854775808 INTEGER -9223372036854775808.000 DECIMAL -9223372036854775807 INTEGER -9223372036854775807.000 DECIMAL -9223372036854775806 INTEGER -9223372036854775806.000 DECIMAL -1001 INTEGER -1001.000 DECIMAL -1001.0 DOUBLE -1000 INTEGER -1000.000 DECIMAL -1000.0 DOUBLE -999 INTEGER -999.000 DECIMAL -999.0 DOUBLE -101 INTEGER -101.000 DECIMAL -101.0 DOUBLE -100 INTEGER -100.000 DECIMAL -100.0 DOUBLE -99 INTEGER -99.000 DECIMAL -99.0 DOUBLE -22 INTEGER -22.000 DECIMAL -22.0 DOUBLE -21 INTEGER -21.000 DECIMAL -21.0 DOUBLE -20 INTEGER -20.000 DECIMAL -20.0 DOUBLE -12 INTEGER -12.000 DECIMAL -12.0 DOUBLE -11 INTEGER -11.000 DECIMAL -11.0 DOUBLE -10 INTEGER -10.000 DECIMAL -10.0 DOUBLE -5 INTEGER -5.000 DECIMAL -5.0 DOUBLE -4 INTEGER -4.000 DECIMAL -4.0 DOUBLE -3.151 DECIMAL -3.151 DOUBLE -3.150 DECIMAL -3.15 DOUBLE -3.149 DECIMAL -3.149 DOUBLE -3.141 DECIMAL -3.141 DOUBLE -3.140 DECIMAL -3.14 DOUBLE -3.139 DECIMAL -3.139 DOUBLE -3.131 DECIMAL -3.131 DOUBLE -3.130 DECIMAL -3.13 DOUBLE -3.129 DECIMAL -3.129 DOUBLE -3 INTEGER -3.000 DECIMAL -3.0 DOUBLE -2 INTEGER -2.000 DECIMAL -2.0 DOUBLE -1 INTEGER -1.000 DECIMAL -1.0 DOUBLE -0.100 DECIMAL -0.1 DOUBLE -0.010 DECIMAL -0.01 DOUBLE -0.001 DECIMAL -0.001 DOUBLE -1.5e-200 DOUBLE -1e-321 DOUBLE -1e-322 DOUBLE -1e-323 DOUBLE 0 INTEGER 0 INTEGER 0 UNSIGNED INTEGER 0 UNSIGNED INTEGER 0.000 DECIMAL 0.000 DECIMAL 0.000 DECIMAL 0.000 DECIMAL 0.0 DOUBLE 0.0 DOUBLE 0.0 DOUBLE 0.0 DOUBLE 0.0 DOUBLE -0.0 DOUBLE 0.0 DECIMAL 1e-323 DOUBLE 1e-322 DOUBLE 1e-321 DOUBLE 1.5e-200 DOUBLE 0.0000000000000001 DECIMAL 0.000000000000000116 DECIMAL 0.000000000000001 DECIMAL 0.00000000000000115 DECIMAL 0.001 DECIMAL 0.001 DOUBLE 0.010 DECIMAL 0.01 DOUBLE 0.01 DOUBLE 0.100 DECIMAL 0.1 DOUBLE 0.1 DOUBLE 1 INTEGER 1 UNSIGNED INTEGER 1.000 DECIMAL 1.000 DECIMAL 1.0 DOUBLE 1.0 DOUBLE 2 INTEGER 2 UNSIGNED INTEGER 2.000 DECIMAL 2.000 DECIMAL 2.0 DOUBLE 2.0 DOUBLE 3 INTEGER 3 UNSIGNED INTEGER 3.000 DECIMAL 3.000 DECIMAL 3.0 DOUBLE 3.0 DOUBLE 3.129 DECIMAL 3.129 DOUBLE 3.130 DECIMAL 3.13 DOUBLE 3.131 DECIMAL 3.131 DOUBLE 3.139 DECIMAL 3.139 DOUBLE 3.140 DECIMAL 3.14 DOUBLE 3.141 DECIMAL 3.141 DOUBLE 3.149 DECIMAL 3.149 DOUBLE 3.150 DECIMAL 3.15 DOUBLE 3.151 DECIMAL 3.151 DOUBLE 4 INTEGER 4 UNSIGNED INTEGER 4.000 DECIMAL 4.000 DECIMAL 4.0 DOUBLE 4.0 DOUBLE 5 INTEGER 5 UNSIGNED INTEGER 5.000 DECIMAL 5.000 DECIMAL 5.0 DOUBLE 5.0 DOUBLE 10 INTEGER 10 UNSIGNED INTEGER 10.000 DECIMAL 10.000 DECIMAL 10.0 DOUBLE 10.0 DOUBLE 11 INTEGER 11 UNSIGNED INTEGER 11.000 DECIMAL 11.000 DECIMAL 11.0 DOUBLE 11.0 DOUBLE 12 INTEGER 12 UNSIGNED INTEGER 12.000 DECIMAL 12.000 DECIMAL 12.0 DOUBLE 12.0 DOUBLE 20 INTEGER 20 UNSIGNED INTEGER 20.000 DECIMAL 20.000 DECIMAL 20.0 DOUBLE 20.0 DOUBLE 21 INTEGER 21 UNSIGNED INTEGER 21.000 DECIMAL 21.000 DECIMAL 21.0 DOUBLE 21.0 DOUBLE 22 INTEGER 22 UNSIGNED INTEGER 22.000 DECIMAL 22.000 DECIMAL 22.0 DOUBLE 22.0 DOUBLE 99 INTEGER 99 UNSIGNED INTEGER 99.000 DECIMAL 99.000 DECIMAL 99.0 DOUBLE 99.0 DOUBLE 100 INTEGER 100 UNSIGNED INTEGER 100.000 DECIMAL 100.000 DECIMAL 100.0 DOUBLE 100.0 DOUBLE 101 INTEGER 101 UNSIGNED INTEGER 101.000 DECIMAL 101.000 DECIMAL 101.0 DOUBLE 101.0 DOUBLE 999 INTEGER 999 UNSIGNED INTEGER 999.000 DECIMAL 999.000 DECIMAL 999.0 DOUBLE 999.0 DOUBLE 1000 INTEGER 1000 UNSIGNED INTEGER 1000.000 DECIMAL 1000.000 DECIMAL 1000.0 DOUBLE 1000.0 DOUBLE 1001 INTEGER 1001 UNSIGNED INTEGER 1001.000 DECIMAL 1001.000 DECIMAL 1001.0 DOUBLE 1001.0 DOUBLE 9223372036854775806 INTEGER 9223372036854775806 UNSIGNED INTEGER 9223372036854775806.000 DECIMAL 9223372036854775806.000 DECIMAL 9223372036854775807 INTEGER 9223372036854775807 UNSIGNED INTEGER 9223372036854775807.000 DECIMAL 9223372036854775807.000 DECIMAL 9223372036854775808 UNSIGNED INTEGER 9223372036854775808.000 DECIMAL 9223372036854776000.000 DECIMAL 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9223372036854776000 UNSIGNED INTEGER 9223372036854776001.000 DECIMAL 18446744073709551614 UNSIGNED INTEGER 18446744073709551614.000 DECIMAL 18446744073709551615 UNSIGNED INTEGER 18446744073709551615.000 DECIMAL 1.8446744073709552e19 DOUBLE 1.8446744073709552e19 DOUBLE 9.99e80 DOUBLE 999999999999999999999999999999999999999999999999999999999999999999999999999999997 DECIMAL 999999999999999999999999999999999999999999999999999999999999999999999999999999998 DECIMAL 999999999999999999999999999999999999999999999999999999999999999999999999999999999 DECIMAL 1e81 DOUBLE 1.5e200 DOUBLE 1e306 DOUBLE 1e307 DOUBLE 1e308 DOUBLE "" STRING "abc" STRING "abc\u0000" STRING "abc\u0000\u0000" STRING "abcd" STRING "bc" STRING {"an": "object"} OBJECT {"another": "object"} OBJECT {"type": "Point", "coordinates": [0.0, 0.0]} OBJECT {"type": "Point", "coordinates": [0.0, 1.0]} OBJECT ["an array"] ARRAY ["another array"] ARRAY false BOOLEAN true BOOLEAN "1000-01-01" DATE "1960-01-02" DATE "1970-01-02" DATE "2000-01-01" DATE "2000-01-02" DATE "2000-02-01" DATE "2010-12-02" DATE "9999-12-31" DATE "-630:59:59.000000" TIME "-24:00:00.000000" TIME "-12:00:00.000000" TIME "-00:00:00.000001" TIME "00:00:00.000000" TIME "00:00:00.000000" TIME "00:00:00.001000" TIME "00:00:00.002000" TIME "00:00:00.010000" TIME "00:00:00.020000" TIME "00:00:01.000000" TIME "00:00:01.000001" TIME "01:00:00.000000" TIME "01:02:00.000000" TIME "01:02:03.000000" TIME "02:01:00.000000" TIME "03:04:05.000000" TIME "03:04:06.000000" TIME "23:59:59.999999" TIME "24:00:00.000000" TIME "630:59:59.000000" TIME "1000-01-01 00:00:00.000000" DATETIME "1960-01-02 03:04:05.000000" DATETIME "1960-01-02 03:04:06.000000" DATETIME "1970-01-02 00:00:01.000000" TIMESTAMP "1970-01-02 00:00:01.000000" DATETIME "1970-01-02 00:00:01.000001" TIMESTAMP "1970-01-02 00:00:01.000001" DATETIME "2000-01-01 00:00:00.000000" TIMESTAMP "2000-01-01 00:00:00.000000" DATETIME "2000-01-01 00:00:00.001000" TIMESTAMP "2000-01-01 00:00:00.001000" DATETIME "2000-01-01 00:00:00.002000" TIMESTAMP "2000-01-01 00:00:00.002000" DATETIME "2000-01-01 00:00:00.010000" TIMESTAMP "2000-01-01 00:00:00.010000" DATETIME "2000-01-01 00:00:00.020000" TIMESTAMP "2000-01-01 00:00:00.020000" DATETIME "2000-01-01 23:59:59.999999" TIMESTAMP "2000-01-01 23:59:59.999999" DATETIME "2000-01-02 00:00:00.000000" TIMESTAMP "2000-01-02 00:00:00.000000" DATETIME "2000-02-01 00:00:00.000000" TIMESTAMP "2000-02-01 00:00:00.000000" DATETIME "2010-12-02 01:00:00.000000" TIMESTAMP "2010-12-02 01:00:00.000000" DATETIME "2010-12-02 01:02:00.000000" TIMESTAMP "2010-12-02 01:02:00.000000" DATETIME "2010-12-02 01:02:03.000000" TIMESTAMP "2010-12-02 01:02:03.000000" DATETIME "2010-12-02 02:01:00.000000" TIMESTAMP "2010-12-02 02:01:00.000000" DATETIME "9999-12-31 23:59:59.999999" DATETIME "base64:type15:MTIzNGFiY2Q=" BLOB Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' SELECT j, JSON_TYPE(j) AS tp FROM t ORDER BY j, id limit 2 offset 2; j tp null NULL -1e308 DOUBLE Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' SELECT j, JSON_TYPE(j) AS tp FROM t ORDER BY j DESC, id; j tp "base64:type15:MTIzNGFiY2Q=" BLOB "9999-12-31 23:59:59.999999" DATETIME "2010-12-02 02:01:00.000000" TIMESTAMP "2010-12-02 02:01:00.000000" DATETIME "2010-12-02 01:02:03.000000" TIMESTAMP "2010-12-02 01:02:03.000000" DATETIME "2010-12-02 01:02:00.000000" TIMESTAMP "2010-12-02 01:02:00.000000" DATETIME "2010-12-02 01:00:00.000000" TIMESTAMP "2010-12-02 01:00:00.000000" DATETIME "2000-02-01 00:00:00.000000" TIMESTAMP "2000-02-01 00:00:00.000000" DATETIME "2000-01-02 00:00:00.000000" TIMESTAMP "2000-01-02 00:00:00.000000" DATETIME "2000-01-01 23:59:59.999999" TIMESTAMP "2000-01-01 23:59:59.999999" DATETIME "2000-01-01 00:00:00.020000" TIMESTAMP "2000-01-01 00:00:00.020000" DATETIME "2000-01-01 00:00:00.010000" TIMESTAMP "2000-01-01 00:00:00.010000" DATETIME "2000-01-01 00:00:00.002000" TIMESTAMP "2000-01-01 00:00:00.002000" DATETIME "2000-01-01 00:00:00.001000" TIMESTAMP "2000-01-01 00:00:00.001000" DATETIME "2000-01-01 00:00:00.000000" TIMESTAMP "2000-01-01 00:00:00.000000" DATETIME "1970-01-02 00:00:01.000001" TIMESTAMP "1970-01-02 00:00:01.000001" DATETIME "1970-01-02 00:00:01.000000" TIMESTAMP "1970-01-02 00:00:01.000000" DATETIME "1960-01-02 03:04:06.000000" DATETIME "1960-01-02 03:04:05.000000" DATETIME "1000-01-01 00:00:00.000000" DATETIME "630:59:59.000000" TIME "24:00:00.000000" TIME "23:59:59.999999" TIME "03:04:06.000000" TIME "03:04:05.000000" TIME "02:01:00.000000" TIME "01:02:03.000000" TIME "01:02:00.000000" TIME "01:00:00.000000" TIME "00:00:01.000001" TIME "00:00:01.000000" TIME "00:00:00.020000" TIME "00:00:00.010000" TIME "00:00:00.002000" TIME "00:00:00.001000" TIME "00:00:00.000000" TIME "00:00:00.000000" TIME "-00:00:00.000001" TIME "-12:00:00.000000" TIME "-24:00:00.000000" TIME "-630:59:59.000000" TIME "9999-12-31" DATE "2010-12-02" DATE "2000-02-01" DATE "2000-01-02" DATE "2000-01-01" DATE "1970-01-02" DATE "1960-01-02" DATE "1000-01-01" DATE true BOOLEAN false BOOLEAN ["an array"] ARRAY ["another array"] ARRAY {"type": "Point", "coordinates": [0.0, 0.0]} OBJECT {"type": "Point", "coordinates": [0.0, 1.0]} OBJECT {"an": "object"} OBJECT {"another": "object"} OBJECT "bc" STRING "abcd" STRING "abc\u0000\u0000" STRING "abc\u0000" STRING "abc" STRING "" STRING 1e308 DOUBLE 1e307 DOUBLE 1e306 DOUBLE 1.5e200 DOUBLE 1e81 DOUBLE 999999999999999999999999999999999999999999999999999999999999999999999999999999999 DECIMAL 999999999999999999999999999999999999999999999999999999999999999999999999999999998 DECIMAL 999999999999999999999999999999999999999999999999999999999999999999999999999999997 DECIMAL 9.99e80 DOUBLE 1.8446744073709552e19 DOUBLE 1.8446744073709552e19 DOUBLE 18446744073709551615 UNSIGNED INTEGER 18446744073709551615.000 DECIMAL 18446744073709551614 UNSIGNED INTEGER 18446744073709551614.000 DECIMAL 9223372036854776001.000 DECIMAL 9223372036854776000.000 DECIMAL 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9223372036854776000 UNSIGNED INTEGER 9223372036854775808 UNSIGNED INTEGER 9223372036854775808.000 DECIMAL 9223372036854775807 INTEGER 9223372036854775807 UNSIGNED INTEGER 9223372036854775807.000 DECIMAL 9223372036854775807.000 DECIMAL 9223372036854775806 INTEGER 9223372036854775806 UNSIGNED INTEGER 9223372036854775806.000 DECIMAL 9223372036854775806.000 DECIMAL 1001 INTEGER 1001 UNSIGNED INTEGER 1001.000 DECIMAL 1001.000 DECIMAL 1001.0 DOUBLE 1001.0 DOUBLE 1000 INTEGER 1000 UNSIGNED INTEGER 1000.000 DECIMAL 1000.000 DECIMAL 1000.0 DOUBLE 1000.0 DOUBLE 999 INTEGER 999 UNSIGNED INTEGER 999.000 DECIMAL 999.000 DECIMAL 999.0 DOUBLE 999.0 DOUBLE 101 INTEGER 101 UNSIGNED INTEGER 101.000 DECIMAL 101.000 DECIMAL 101.0 DOUBLE 101.0 DOUBLE 100 INTEGER 100 UNSIGNED INTEGER 100.000 DECIMAL 100.000 DECIMAL 100.0 DOUBLE 100.0 DOUBLE 99 INTEGER 99 UNSIGNED INTEGER 99.000 DECIMAL 99.000 DECIMAL 99.0 DOUBLE 99.0 DOUBLE 22 INTEGER 22 UNSIGNED INTEGER 22.000 DECIMAL 22.000 DECIMAL 22.0 DOUBLE 22.0 DOUBLE 21 INTEGER 21 UNSIGNED INTEGER 21.000 DECIMAL 21.000 DECIMAL 21.0 DOUBLE 21.0 DOUBLE 20 INTEGER 20 UNSIGNED INTEGER 20.000 DECIMAL 20.000 DECIMAL 20.0 DOUBLE 20.0 DOUBLE 12 INTEGER 12 UNSIGNED INTEGER 12.000 DECIMAL 12.000 DECIMAL 12.0 DOUBLE 12.0 DOUBLE 11 INTEGER 11 UNSIGNED INTEGER 11.000 DECIMAL 11.000 DECIMAL 11.0 DOUBLE 11.0 DOUBLE 10 INTEGER 10 UNSIGNED INTEGER 10.000 DECIMAL 10.000 DECIMAL 10.0 DOUBLE 10.0 DOUBLE 5 INTEGER 5 UNSIGNED INTEGER 5.000 DECIMAL 5.000 DECIMAL 5.0 DOUBLE 5.0 DOUBLE 4 INTEGER 4 UNSIGNED INTEGER 4.000 DECIMAL 4.000 DECIMAL 4.0 DOUBLE 4.0 DOUBLE 3.151 DECIMAL 3.151 DOUBLE 3.150 DECIMAL 3.15 DOUBLE 3.149 DECIMAL 3.149 DOUBLE 3.141 DECIMAL 3.141 DOUBLE 3.140 DECIMAL 3.14 DOUBLE 3.139 DECIMAL 3.139 DOUBLE 3.131 DECIMAL 3.131 DOUBLE 3.130 DECIMAL 3.13 DOUBLE 3.129 DECIMAL 3.129 DOUBLE 3 INTEGER 3 UNSIGNED INTEGER 3.000 DECIMAL 3.000 DECIMAL 3.0 DOUBLE 3.0 DOUBLE 2 INTEGER 2 UNSIGNED INTEGER 2.000 DECIMAL 2.000 DECIMAL 2.0 DOUBLE 2.0 DOUBLE 1 INTEGER 1 UNSIGNED INTEGER 1.000 DECIMAL 1.000 DECIMAL 1.0 DOUBLE 1.0 DOUBLE 0.100 DECIMAL 0.1 DOUBLE 0.1 DOUBLE 0.010 DECIMAL 0.01 DOUBLE 0.01 DOUBLE 0.001 DECIMAL 0.001 DOUBLE 0.00000000000000115 DECIMAL 0.000000000000001 DECIMAL 0.000000000000000116 DECIMAL 0.0000000000000001 DECIMAL 1.5e-200 DOUBLE 1e-321 DOUBLE 1e-322 DOUBLE 1e-323 DOUBLE 0 INTEGER 0 INTEGER 0 UNSIGNED INTEGER 0 UNSIGNED INTEGER 0.000 DECIMAL 0.000 DECIMAL 0.000 DECIMAL 0.000 DECIMAL 0.0 DOUBLE 0.0 DOUBLE 0.0 DOUBLE 0.0 DOUBLE 0.0 DOUBLE -0.0 DOUBLE 0.0 DECIMAL -1e-323 DOUBLE -1e-322 DOUBLE -1e-321 DOUBLE -1.5e-200 DOUBLE -0.001 DECIMAL -0.001 DOUBLE -0.010 DECIMAL -0.01 DOUBLE -0.100 DECIMAL -0.1 DOUBLE -1 INTEGER -1.000 DECIMAL -1.0 DOUBLE -2 INTEGER -2.000 DECIMAL -2.0 DOUBLE -3 INTEGER -3.000 DECIMAL -3.0 DOUBLE -3.129 DECIMAL -3.129 DOUBLE -3.130 DECIMAL -3.13 DOUBLE -3.131 DECIMAL -3.131 DOUBLE -3.139 DECIMAL -3.139 DOUBLE -3.140 DECIMAL -3.14 DOUBLE -3.141 DECIMAL -3.141 DOUBLE -3.149 DECIMAL -3.149 DOUBLE -3.150 DECIMAL -3.15 DOUBLE -3.151 DECIMAL -3.151 DOUBLE -4 INTEGER -4.000 DECIMAL -4.0 DOUBLE -5 INTEGER -5.000 DECIMAL -5.0 DOUBLE -10 INTEGER -10.000 DECIMAL -10.0 DOUBLE -11 INTEGER -11.000 DECIMAL -11.0 DOUBLE -12 INTEGER -12.000 DECIMAL -12.0 DOUBLE -20 INTEGER -20.000 DECIMAL -20.0 DOUBLE -21 INTEGER -21.000 DECIMAL -21.0 DOUBLE -22 INTEGER -22.000 DECIMAL -22.0 DOUBLE -99 INTEGER -99.000 DECIMAL -99.0 DOUBLE -100 INTEGER -100.000 DECIMAL -100.0 DOUBLE -101 INTEGER -101.000 DECIMAL -101.0 DOUBLE -999 INTEGER -999.000 DECIMAL -999.0 DOUBLE -1000 INTEGER -1000.000 DECIMAL -1000.0 DOUBLE -1001 INTEGER -1001.000 DECIMAL -1001.0 DOUBLE -9223372036854775806 INTEGER -9223372036854775806.000 DECIMAL -9223372036854775807 INTEGER -9223372036854775807.000 DECIMAL -9223372036854775808 INTEGER -9223372036854775808.000 DECIMAL -9223372036854776000.000 DECIMAL -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9223372036854776001.000 DECIMAL -9.99e80 DOUBLE -999999999999999999999999999999999999999999999999999999999999999999999999999999997 DECIMAL -999999999999999999999999999999999999999999999999999999999999999999999999999999998 DECIMAL -999999999999999999999999999999999999999999999999999999999999999999999999999999999 DECIMAL -1e81 DOUBLE -1.5e200 DOUBLE -1e306 DOUBLE -1e307 DOUBLE -1e308 DOUBLE null NULL NULL NULL NULL NULL Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' SELECT j, JSON_TYPE(j) AS tp FROM t ORDER BY j DESC, id limit 2 offset 2; j tp "2010-12-02 02:01:00.000000" TIMESTAMP "2010-12-02 02:01:00.000000" DATETIME Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' SELECT JSON_EXTRACT(j, '$') AS je, JSON_TYPE(j) AS tp FROM t ORDER BY je, id; je tp NULL NULL NULL NULL null NULL -1e308 DOUBLE -1e307 DOUBLE -1e306 DOUBLE -1.5e200 DOUBLE -1e81 DOUBLE -999999999999999999999999999999999999999999999999999999999999999999999999999999999 DECIMAL -999999999999999999999999999999999999999999999999999999999999999999999999999999998 DECIMAL -999999999999999999999999999999999999999999999999999999999999999999999999999999997 DECIMAL -9.99e80 DOUBLE -9223372036854776001.000 DECIMAL -9223372036854776000.000 DECIMAL -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9.223372036854776e18 DOUBLE -9223372036854775808 INTEGER -9223372036854775808.000 DECIMAL -9223372036854775807 INTEGER -9223372036854775807.000 DECIMAL -9223372036854775806 INTEGER -9223372036854775806.000 DECIMAL -1001 INTEGER -1001.000 DECIMAL -1001.0 DOUBLE -1000 INTEGER -1000.000 DECIMAL -1000.0 DOUBLE -999 INTEGER -999.000 DECIMAL -999.0 DOUBLE -101 INTEGER -101.000 DECIMAL -101.0 DOUBLE -100 INTEGER -100.000 DECIMAL -100.0 DOUBLE -99 INTEGER -99.000 DECIMAL -99.0 DOUBLE -22 INTEGER -22.000 DECIMAL -22.0 DOUBLE -21 INTEGER -21.000 DECIMAL -21.0 DOUBLE -20 INTEGER -20.000 DECIMAL -20.0 DOUBLE -12 INTEGER -12.000 DECIMAL -12.0 DOUBLE -11 INTEGER -11.000 DECIMAL -11.0 DOUBLE -10 INTEGER -10.000 DECIMAL -10.0 DOUBLE -5 INTEGER -5.000 DECIMAL -5.0 DOUBLE -4 INTEGER -4.000 DECIMAL -4.0 DOUBLE -3.151 DECIMAL -3.151 DOUBLE -3.150 DECIMAL -3.15 DOUBLE -3.149 DECIMAL -3.149 DOUBLE -3.141 DECIMAL -3.141 DOUBLE -3.140 DECIMAL -3.14 DOUBLE -3.139 DECIMAL -3.139 DOUBLE -3.131 DECIMAL -3.131 DOUBLE -3.130 DECIMAL -3.13 DOUBLE -3.129 DECIMAL -3.129 DOUBLE -3 INTEGER -3.000 DECIMAL -3.0 DOUBLE -2 INTEGER -2.000 DECIMAL -2.0 DOUBLE -1 INTEGER -1.000 DECIMAL -1.0 DOUBLE -0.100 DECIMAL -0.1 DOUBLE -0.010 DECIMAL -0.01 DOUBLE -0.001 DECIMAL -0.001 DOUBLE -1.5e-200 DOUBLE -1e-321 DOUBLE -1e-322 DOUBLE -1e-323 DOUBLE 0 INTEGER 0 INTEGER 0 UNSIGNED INTEGER 0 UNSIGNED INTEGER 0.000 DECIMAL 0.000 DECIMAL 0.000 DECIMAL 0.000 DECIMAL 0.0 DOUBLE 0.0 DOUBLE 0.0 DOUBLE 0.0 DOUBLE 0.0 DOUBLE -0.0 DOUBLE 0.0 DECIMAL 1e-323 DOUBLE 1e-322 DOUBLE 1e-321 DOUBLE 1.5e-200 DOUBLE 0.0000000000000001 DECIMAL 0.000000000000000116 DECIMAL 0.000000000000001 DECIMAL 0.00000000000000115 DECIMAL 0.001 DECIMAL 0.001 DOUBLE 0.010 DECIMAL 0.01 DOUBLE 0.01 DOUBLE 0.100 DECIMAL 0.1 DOUBLE 0.1 DOUBLE 1 INTEGER 1 UNSIGNED INTEGER 1.000 DECIMAL 1.000 DECIMAL 1.0 DOUBLE 1.0 DOUBLE 2 INTEGER 2 UNSIGNED INTEGER 2.000 DECIMAL 2.000 DECIMAL 2.0 DOUBLE 2.0 DOUBLE 3 INTEGER 3 UNSIGNED INTEGER 3.000 DECIMAL 3.000 DECIMAL 3.0 DOUBLE 3.0 DOUBLE 3.129 DECIMAL 3.129 DOUBLE 3.130 DECIMAL 3.13 DOUBLE 3.131 DECIMAL 3.131 DOUBLE 3.139 DECIMAL 3.139 DOUBLE 3.140 DECIMAL 3.14 DOUBLE 3.141 DECIMAL 3.141 DOUBLE 3.149 DECIMAL 3.149 DOUBLE 3.150 DECIMAL 3.15 DOUBLE 3.151 DECIMAL 3.151 DOUBLE 4 INTEGER 4 UNSIGNED INTEGER 4.000 DECIMAL 4.000 DECIMAL 4.0 DOUBLE 4.0 DOUBLE 5 INTEGER 5 UNSIGNED INTEGER 5.000 DECIMAL 5.000 DECIMAL 5.0 DOUBLE 5.0 DOUBLE 10 INTEGER 10 UNSIGNED INTEGER 10.000 DECIMAL 10.000 DECIMAL 10.0 DOUBLE 10.0 DOUBLE 11 INTEGER 11 UNSIGNED INTEGER 11.000 DECIMAL 11.000 DECIMAL 11.0 DOUBLE 11.0 DOUBLE 12 INTEGER 12 UNSIGNED INTEGER 12.000 DECIMAL 12.000 DECIMAL 12.0 DOUBLE 12.0 DOUBLE 20 INTEGER 20 UNSIGNED INTEGER 20.000 DECIMAL 20.000 DECIMAL 20.0 DOUBLE 20.0 DOUBLE 21 INTEGER 21 UNSIGNED INTEGER 21.000 DECIMAL 21.000 DECIMAL 21.0 DOUBLE 21.0 DOUBLE 22 INTEGER 22 UNSIGNED INTEGER 22.000 DECIMAL 22.000 DECIMAL 22.0 DOUBLE 22.0 DOUBLE 99 INTEGER 99 UNSIGNED INTEGER 99.000 DECIMAL 99.000 DECIMAL 99.0 DOUBLE 99.0 DOUBLE 100 INTEGER 100 UNSIGNED INTEGER 100.000 DECIMAL 100.000 DECIMAL 100.0 DOUBLE 100.0 DOUBLE 101 INTEGER 101 UNSIGNED INTEGER 101.000 DECIMAL 101.000 DECIMAL 101.0 DOUBLE 101.0 DOUBLE 999 INTEGER 999 UNSIGNED INTEGER 999.000 DECIMAL 999.000 DECIMAL 999.0 DOUBLE 999.0 DOUBLE 1000 INTEGER 1000 UNSIGNED INTEGER 1000.000 DECIMAL 1000.000 DECIMAL 1000.0 DOUBLE 1000.0 DOUBLE 1001 INTEGER 1001 UNSIGNED INTEGER 1001.000 DECIMAL 1001.000 DECIMAL 1001.0 DOUBLE 1001.0 DOUBLE 9223372036854775806 INTEGER 9223372036854775806 UNSIGNED INTEGER 9223372036854775806.000 DECIMAL 9223372036854775806.000 DECIMAL 9223372036854775807 INTEGER 9223372036854775807 UNSIGNED INTEGER 9223372036854775807.000 DECIMAL 9223372036854775807.000 DECIMAL 9223372036854775808 UNSIGNED INTEGER 9223372036854775808.000 DECIMAL 9223372036854776000.000 DECIMAL 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9.223372036854776e18 DOUBLE 9223372036854776000 UNSIGNED INTEGER 9223372036854776001.000 DECIMAL 18446744073709551614 UNSIGNED INTEGER 18446744073709551614.000 DECIMAL 18446744073709551615 UNSIGNED INTEGER 18446744073709551615.000 DECIMAL 1.8446744073709552e19 DOUBLE 1.8446744073709552e19 DOUBLE 9.99e80 DOUBLE 999999999999999999999999999999999999999999999999999999999999999999999999999999997 DECIMAL 999999999999999999999999999999999999999999999999999999999999999999999999999999998 DECIMAL 999999999999999999999999999999999999999999999999999999999999999999999999999999999 DECIMAL 1e81 DOUBLE 1.5e200 DOUBLE 1e306 DOUBLE 1e307 DOUBLE 1e308 DOUBLE "" STRING "abc" STRING "abc\u0000" STRING "abc\u0000\u0000" STRING "abcd" STRING "bc" STRING {"an": "object"} OBJECT {"another": "object"} OBJECT {"type": "Point", "coordinates": [0.0, 0.0]} OBJECT {"type": "Point", "coordinates": [0.0, 1.0]} OBJECT ["an array"] ARRAY ["another array"] ARRAY false BOOLEAN true BOOLEAN "1000-01-01" DATE "1960-01-02" DATE "1970-01-02" DATE "2000-01-01" DATE "2000-01-02" DATE "2000-02-01" DATE "2010-12-02" DATE "9999-12-31" DATE "-630:59:59.000000" TIME "-24:00:00.000000" TIME "-12:00:00.000000" TIME "-00:00:00.000001" TIME "00:00:00.000000" TIME "00:00:00.000000" TIME "00:00:00.001000" TIME "00:00:00.002000" TIME "00:00:00.010000" TIME "00:00:00.020000" TIME "00:00:01.000000" TIME "00:00:01.000001" TIME "01:00:00.000000" TIME "01:02:00.000000" TIME "01:02:03.000000" TIME "02:01:00.000000" TIME "03:04:05.000000" TIME "03:04:06.000000" TIME "23:59:59.999999" TIME "24:00:00.000000" TIME "630:59:59.000000" TIME "1000-01-01 00:00:00.000000" DATETIME "1960-01-02 03:04:05.000000" DATETIME "1960-01-02 03:04:06.000000" DATETIME "1970-01-02 00:00:01.000000" TIMESTAMP "1970-01-02 00:00:01.000000" DATETIME "1970-01-02 00:00:01.000001" TIMESTAMP "1970-01-02 00:00:01.000001" DATETIME "2000-01-01 00:00:00.000000" TIMESTAMP "2000-01-01 00:00:00.000000" DATETIME "2000-01-01 00:00:00.001000" TIMESTAMP "2000-01-01 00:00:00.001000" DATETIME "2000-01-01 00:00:00.002000" TIMESTAMP "2000-01-01 00:00:00.002000" DATETIME "2000-01-01 00:00:00.010000" TIMESTAMP "2000-01-01 00:00:00.010000" DATETIME "2000-01-01 00:00:00.020000" TIMESTAMP "2000-01-01 00:00:00.020000" DATETIME "2000-01-01 23:59:59.999999" TIMESTAMP "2000-01-01 23:59:59.999999" DATETIME "2000-01-02 00:00:00.000000" TIMESTAMP "2000-01-02 00:00:00.000000" DATETIME "2000-02-01 00:00:00.000000" TIMESTAMP "2000-02-01 00:00:00.000000" DATETIME "2010-12-02 01:00:00.000000" TIMESTAMP "2010-12-02 01:00:00.000000" DATETIME "2010-12-02 01:02:00.000000" TIMESTAMP "2010-12-02 01:02:00.000000" DATETIME "2010-12-02 01:02:03.000000" TIMESTAMP "2010-12-02 01:02:03.000000" DATETIME "2010-12-02 02:01:00.000000" TIMESTAMP "2010-12-02 02:01:00.000000" DATETIME "9999-12-31 23:59:59.999999" DATETIME "base64:type15:MTIzNGFiY2Q=" BLOB Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' ANALYZE TABLE t; Table Op Msg_type Msg_text test.t analyze status OK EXPLAIN SELECT j, COUNT(*) FROM t GROUP BY j ORDER BY j; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t p0,p1,p2,p3,p4,p5,p6,p7 ALL NULL NULL NULL NULL 366 100.00 Using temporary; Using filesort Warnings: Note 1003 /* select#1 */ select `test`.`t`.`j` AS `j`,count(0) AS `COUNT(*)` from `test`.`t` group by `test`.`t`.`j` order by `test`.`t`.`j` EXPLAIN SELECT j, COUNT(*) FROM t GROUP BY j WITH ROLLUP; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t p0,p1,p2,p3,p4,p5,p6,p7 ALL NULL NULL NULL NULL 366 100.00 Using filesort Warnings: Note 1003 /* select#1 */ select `test`.`t`.`j` AS `j`,count(0) AS `COUNT(*)` from `test`.`t` group by `test`.`t`.`j` with rollup SELECT j, COUNT(*) FROM t GROUP BY j ORDER BY j; j COUNT(*) NULL 2 null 1 -1e308 1 -1e307 1 -1e306 1 -1.5e200 1 -1e81 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999999 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999998 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999997 1 -9.99e80 1 -9223372036854776001 1 -9223372036854776000 6 -9223372036854775808 2 -9223372036854775807 2 -9223372036854775806 2 -1001 3 -1000 3 -999 3 -101 3 -100 3 -99 3 -22 3 -21 3 -20 3 -12 3 -11 3 -10 3 -5 3 -4 3 -3.151 2 -3.15 2 -3.149 2 -3.141 2 -3.14 2 -3.139 2 -3.131 2 -3.13 2 -3.129 2 -3 3 -2 3 -1 3 0.1 2 01 2 001 2 -1.5e-200 1 -1e-321 1 -1e-322 1 -1e-323 1 0 15 1e-323 1 1e-322 1 1e-321 1 1.5e-200 1 00000000000001 1 0000000000000116 1 0000000000001 1 000000000000115 1 001 2 01 3 0.1 3 1 6 2 6 3 6 3.129 2 3.13 2 3.131 2 3.139 2 3.14 2 3.141 2 3.149 2 3.15 2 3.151 2 4 6 5 6 10 6 11 6 12 6 20 6 21 6 22 6 99 6 100 6 101 6 999 6 1000 6 1001 6 9223372036854775806 4 9223372036854775807 4 9223372036854775808 2 9223372036854776000 9 9223372036854776001 1 18446744073709551614 2 18446744073709551615 2 1.8446744073709552e19 2 9.99e80 1 999999999999999999999999999999999999999999999999999999999999999999999999999999997 1 999999999999999999999999999999999999999999999999999999999999999999999999999999998 1 999999999999999999999999999999999999999999999999999999999999999999999999999999999 1 1e81 1 1.5e200 1 1e306 1 1e307 1 1e308 1 "" 1 "abc" 1 "abc\u0000" 1 "abc\u0000\u0000" 1 "abcd" 1 "bc" 1 {"an": "object"} 1 {"another": "object"} 1 {"type": "Point", "coordinates": [0, 0]} 1 {"type": "Point", "coordinates": [0, 1]} 1 ["an array"] 1 ["another array"] 1 false 1 true 1 "10000101" 1 "19600102" 1 "19700102" 1 "20000101" 1 "20000102" 1 "20000201" 1 "2010-1202" 1 "9999-12-31" 1 "-630:59:59000" 1 "-24:00:00000" 1 "-12:00:00000" 1 "00:00:00001" 1 "00:00:00000" 2 "00:00:0001000" 1 "00:00:0002000" 1 "00:00:001000" 1 "00:00:0020000" 1 "00:00:01000" 1 "00:00:01001" 1 "01:00:00000" 1 "01:02:00000" 1 "01:02:03000" 1 "02:01:00000" 1 "03:04:05000" 1 "03:04:06000" 1 "23:59:59.999999" 1 "24:00:00000" 1 "630:59:59000" 1 "10000101 00:00:00000" 1 "19600102 03:04:05000" 1 "19600102 03:04:06000" 1 "19700102 00:00:01000" 2 "19700102 00:00:01001" 2 "20000101 00:00:00000" 2 "20000101 00:00:0001000" 2 "20000101 00:00:0002000" 2 "20000101 00:00:001000" 2 "20000101 00:00:0020000" 2 "20000101 23:59:59.999999" 2 "20000102 00:00:00000" 2 "20000201 00:00:00000" 2 "2010-1202 01:00:00000" 2 "2010-1202 01:02:00000" 2 "2010-1202 01:02:03000" 2 "2010-1202 02:01:00000" 2 "9999-12-31 23:59:59.999999" 1 "base64:type15:MTIzNGFiY2Q=" 1 Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' SELECT JSON_EXTRACT(j, '$') AS je, COUNT(*) FROM t GROUP BY je ORDER BY je; je COUNT(*) NULL 2 null 1 -1e308 1 -1e307 1 -1e306 1 -1.5e200 1 -1e81 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999999 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999998 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999997 1 -9.99e80 1 -9223372036854776001 1 -9223372036854776000 6 -9223372036854775808 2 -9223372036854775807 2 -9223372036854775806 2 -1001 3 -1000 3 -999 3 -101 3 -100 3 -99 3 -22 3 -21 3 -20 3 -12 3 -11 3 -10 3 -5 3 -4 3 -3.151 2 -3.15 2 -3.149 2 -3.141 2 -3.14 2 -3.139 2 -3.131 2 -3.13 2 -3.129 2 -3 3 -2 3 -1 3 0.1 2 01 2 001 2 -1.5e-200 1 -1e-321 1 -1e-322 1 -1e-323 1 0 15 1e-323 1 1e-322 1 1e-321 1 1.5e-200 1 00000000000001 1 0000000000000116 1 0000000000001 1 000000000000115 1 001 2 01 3 0.1 3 1 6 2 6 3 6 3.129 2 3.13 2 3.131 2 3.139 2 3.14 2 3.141 2 3.149 2 3.15 2 3.151 2 4 6 5 6 10 6 11 6 12 6 20 6 21 6 22 6 99 6 100 6 101 6 999 6 1000 6 1001 6 9223372036854775806 4 9223372036854775807 4 9223372036854775808 2 9223372036854776000 9 9223372036854776001 1 18446744073709551614 2 18446744073709551615 2 1.8446744073709552e19 2 9.99e80 1 999999999999999999999999999999999999999999999999999999999999999999999999999999997 1 999999999999999999999999999999999999999999999999999999999999999999999999999999998 1 999999999999999999999999999999999999999999999999999999999999999999999999999999999 1 1e81 1 1.5e200 1 1e306 1 1e307 1 1e308 1 "" 1 "abc" 1 "abc\u0000" 1 "abc\u0000\u0000" 1 "abcd" 1 "bc" 1 {"an": "object"} 1 {"another": "object"} 1 {"type": "Point", "coordinates": [0, 0]} 1 {"type": "Point", "coordinates": [0, 1]} 1 ["an array"] 1 ["another array"] 1 false 1 true 1 "10000101" 1 "19600102" 1 "19700102" 1 "20000101" 1 "20000102" 1 "20000201" 1 "2010-1202" 1 "9999-12-31" 1 "-630:59:59000" 1 "-24:00:00000" 1 "-12:00:00000" 1 "00:00:00001" 1 "00:00:00000" 2 "00:00:0001000" 1 "00:00:0002000" 1 "00:00:001000" 1 "00:00:0020000" 1 "00:00:01000" 1 "00:00:01001" 1 "01:00:00000" 1 "01:02:00000" 1 "01:02:03000" 1 "02:01:00000" 1 "03:04:05000" 1 "03:04:06000" 1 "23:59:59.999999" 1 "24:00:00000" 1 "630:59:59000" 1 "10000101 00:00:00000" 1 "19600102 03:04:05000" 1 "19600102 03:04:06000" 1 "19700102 00:00:01000" 2 "19700102 00:00:01001" 2 "20000101 00:00:00000" 2 "20000101 00:00:0001000" 2 "20000101 00:00:0002000" 2 "20000101 00:00:001000" 2 "20000101 00:00:0020000" 2 "20000101 23:59:59.999999" 2 "20000102 00:00:00000" 2 "20000201 00:00:00000" 2 "2010-1202 01:00:00000" 2 "2010-1202 01:02:00000" 2 "2010-1202 01:02:03000" 2 "2010-1202 02:01:00000" 2 "9999-12-31 23:59:59.999999" 1 "base64:type15:MTIzNGFiY2Q=" 1 Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' SELECT j, COUNT(*) FROM t GROUP BY j WITH ROLLUP; j COUNT(*) NULL 2 null 1 -1e308 1 -1e307 1 -1e306 1 -1.5e200 1 -1e81 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999999 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999998 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999997 1 -9.99e80 1 -9223372036854776001 1 -9223372036854776000 6 -9223372036854775808 2 -9223372036854775807 2 -9223372036854775806 2 -1001 3 -1000 3 -999 3 -101 3 -100 3 -99 3 -22 3 -21 3 -20 3 -12 3 -11 3 -10 3 -5 3 -4 3 -3.151 2 -3.15 2 -3.149 2 -3.141 2 -3.14 2 -3.139 2 -3.131 2 -3.13 2 -3.129 2 -3 3 -2 3 -1 3 0.1 2 01 2 001 2 -1.5e-200 1 -1e-321 1 -1e-322 1 -1e-323 1 0 15 1e-323 1 1e-322 1 1e-321 1 1.5e-200 1 00000000000001 1 0000000000000116 1 0000000000001 1 000000000000115 1 001 2 01 3 0.1 3 1 6 2 6 3 6 3.129 2 3.13 2 3.131 2 3.139 2 3.14 2 3.141 2 3.149 2 3.15 2 3.151 2 4 6 5 6 10 6 11 6 12 6 20 6 21 6 22 6 99 6 100 6 101 6 999 6 1000 6 1001 6 9223372036854775806 4 9223372036854775807 4 9223372036854775808 2 9223372036854776000 9 9223372036854776001 1 18446744073709551614 2 18446744073709551615 2 1.8446744073709552e19 2 9.99e80 1 999999999999999999999999999999999999999999999999999999999999999999999999999999997 1 999999999999999999999999999999999999999999999999999999999999999999999999999999998 1 999999999999999999999999999999999999999999999999999999999999999999999999999999999 1 1e81 1 1.5e200 1 1e306 1 1e307 1 1e308 1 "" 1 "abc" 1 "abc\u0000" 1 "abc\u0000\u0000" 1 "abcd" 1 "bc" 1 {"an": "object"} 1 {"another": "object"} 1 {"type": "Point", "coordinates": [0, 0]} 1 {"type": "Point", "coordinates": [0, 1]} 1 ["an array"] 1 ["another array"] 1 false 1 true 1 "10000101" 1 "19600102" 1 "19700102" 1 "20000101" 1 "20000102" 1 "20000201" 1 "2010-1202" 1 "9999-12-31" 1 "-630:59:59000" 1 "-24:00:00000" 1 "-12:00:00000" 1 "00:00:00001" 1 "00:00:00000" 2 "00:00:0001000" 1 "00:00:0002000" 1 "00:00:001000" 1 "00:00:0020000" 1 "00:00:01000" 1 "00:00:01001" 1 "01:00:00000" 1 "01:02:00000" 1 "01:02:03000" 1 "02:01:00000" 1 "03:04:05000" 1 "03:04:06000" 1 "23:59:59.999999" 1 "24:00:00000" 1 "630:59:59000" 1 "10000101 00:00:00000" 1 "19600102 03:04:05000" 1 "19600102 03:04:06000" 1 "19700102 00:00:01000" 2 "19700102 00:00:01001" 2 "20000101 00:00:00000" 2 "20000101 00:00:0001000" 2 "20000101 00:00:0002000" 2 "20000101 00:00:001000" 2 "20000101 00:00:0020000" 2 "20000101 23:59:59.999999" 2 "20000102 00:00:00000" 2 "20000201 00:00:00000" 2 "2010-1202 01:00:00000" 2 "2010-1202 01:02:00000" 2 "2010-1202 01:02:03000" 2 "2010-1202 02:01:00000" 2 "9999-12-31 23:59:59.999999" 1 "base64:type15:MTIzNGFiY2Q=" 1 NULL 366 Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' SELECT JSON_EXTRACT(j, '$') AS je, COUNT(*) FROM t GROUP BY je WITH ROLLUP; je COUNT(*) NULL 2 null 1 -1e308 1 -1e307 1 -1e306 1 -1.5e200 1 -1e81 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999999 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999998 1 -999999999999999999999999999999999999999999999999999999999999999999999999999999997 1 -9.99e80 1 -9223372036854776001 1 -9223372036854776000 6 -9223372036854775808 2 -9223372036854775807 2 -9223372036854775806 2 -1001 3 -1000 3 -999 3 -101 3 -100 3 -99 3 -22 3 -21 3 -20 3 -12 3 -11 3 -10 3 -5 3 -4 3 -3.151 2 -3.15 2 -3.149 2 -3.141 2 -3.14 2 -3.139 2 -3.131 2 -3.13 2 -3.129 2 -3 3 -2 3 -1 3 0.1 2 01 2 001 2 -1.5e-200 1 -1e-321 1 -1e-322 1 -1e-323 1 0 15 1e-323 1 1e-322 1 1e-321 1 1.5e-200 1 00000000000001 1 0000000000000116 1 0000000000001 1 000000000000115 1 001 2 01 3 0.1 3 1 6 2 6 3 6 3.129 2 3.13 2 3.131 2 3.139 2 3.14 2 3.141 2 3.149 2 3.15 2 3.151 2 4 6 5 6 10 6 11 6 12 6 20 6 21 6 22 6 99 6 100 6 101 6 999 6 1000 6 1001 6 9223372036854775806 4 9223372036854775807 4 9223372036854775808 2 9223372036854776000 9 9223372036854776001 1 18446744073709551614 2 18446744073709551615 2 1.8446744073709552e19 2 9.99e80 1 999999999999999999999999999999999999999999999999999999999999999999999999999999997 1 999999999999999999999999999999999999999999999999999999999999999999999999999999998 1 999999999999999999999999999999999999999999999999999999999999999999999999999999999 1 1e81 1 1.5e200 1 1e306 1 1e307 1 1e308 1 "" 1 "abc" 1 "abc\u0000" 1 "abc\u0000\u0000" 1 "abcd" 1 "bc" 1 {"an": "object"} 1 {"another": "object"} 1 {"type": "Point", "coordinates": [0, 0]} 1 {"type": "Point", "coordinates": [0, 1]} 1 ["an array"] 1 ["another array"] 1 false 1 true 1 "10000101" 1 "19600102" 1 "19700102" 1 "20000101" 1 "20000102" 1 "20000201" 1 "2010-1202" 1 "9999-12-31" 1 "-630:59:59000" 1 "-24:00:00000" 1 "-12:00:00000" 1 "00:00:00001" 1 "00:00:00000" 2 "00:00:0001000" 1 "00:00:0002000" 1 "00:00:001000" 1 "00:00:0020000" 1 "00:00:01000" 1 "00:00:01001" 1 "01:00:00000" 1 "01:02:00000" 1 "01:02:03000" 1 "02:01:00000" 1 "03:04:05000" 1 "03:04:06000" 1 "23:59:59.999999" 1 "24:00:00000" 1 "630:59:59000" 1 "10000101 00:00:00000" 1 "19600102 03:04:05000" 1 "19600102 03:04:06000" 1 "19700102 00:00:01000" 2 "19700102 00:00:01001" 2 "20000101 00:00:00000" 2 "20000101 00:00:0001000" 2 "20000101 00:00:0002000" 2 "20000101 00:00:001000" 2 "20000101 00:00:0020000" 2 "20000101 23:59:59.999999" 2 "20000102 00:00:00000" 2 "20000201 00:00:00000" 2 "2010-1202 01:00:00000" 2 "2010-1202 01:02:00000" 2 "2010-1202 01:02:03000" 2 "2010-1202 02:01:00000" 2 "9999-12-31 23:59:59.999999" 1 "base64:type15:MTIzNGFiY2Q=" 1 NULL 366 Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' DROP TABLE t, timestamps, datetimes, times, dates, signed_integers, unsigned_integers, decimals, doubles; CREATE TABLE t(j JSON NOT NULL); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' INSERT INTO t VALUES ('1'), ('2'), ('10'), ('"1"'), ('"2"'), ('"10"'), ('true'), ('false'), ('null'); SELECT j FROM t ORDER BY j; j null 1 2 10 "1" "10" "2" false true SELECT j FROM t ORDER BY JSON_EXTRACT(j, '$'); j null 1 2 10 "1" "10" "2" false true SELECT JSON_EXTRACT(j, '$') FROM t ORDER BY 1; JSON_EXTRACT(j, '$') null 1 2 10 "1" "10" "2" false true SELECT j FROM t ORDER BY j+1, JSON_TYPE(j); j false null true 1 "1" 2 "2" 10 "10" Warnings: Warning 3156 Invalid JSON value for CAST to DOUBLE from column j at row 1 DROP TABLE t; CREATE TABLE t(vc varchar(10)); INSERT INTO t VALUES ('["abc"]'), ('[1'); SELECT * FROM t ORDER BY CAST(vc AS JSON); ERROR 22032: Invalid JSON text in argument 1 to function cast_as_json: "Missing a comma or ']' after an array element." at position 2. SELECT * FROM t ORDER BY JSON_EXTRACT(vc, '$[0]'); ERROR 22032: Invalid JSON text in argument 1 to function json_extract: "Missing a comma or ']' after an array element." at position 2. SELECT CAST(vc AS JSON) AS j FROM t ORDER BY j; ERROR 22032: Invalid JSON text in argument 1 to function cast_as_json: "Missing a comma or ']' after an array element." at position 2. SELECT JSON_EXTRACT(vc, '$[0]') AS j FROM t ORDER BY j; ERROR 22032: Invalid JSON text in argument 1 to function json_extract: "Missing a comma or ']' after an array element." at position 2. SELECT CAST(vc AS JSON) FROM t ORDER BY 1; ERROR 22032: Invalid JSON text in argument 1 to function cast_as_json: "Missing a comma or ']' after an array element." at position 2. SELECT JSON_EXTRACT(vc, '$[0]') FROM t ORDER BY 1; ERROR 22032: Invalid JSON text in argument 1 to function json_extract: "Missing a comma or ']' after an array element." at position 2. DROP TABLE t; # # Internal ordering of arrays and objects. Ordered by cardinality. # CREATE TABLE t(i int, j json); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' INSERT INTO t VALUES (1, '{}'), (2, '{"a":1}'), (3, '{"ab":2}'), (4, '{"a":1,"b":2}'), (5, '{"c":3,"d":4}'), (6, '{"a":1,"b":2,"c":3,"d":4}'); INSERT INTO t VALUES (1, '[]'), (2, '[1]'), (3, '[2]'), (4, '[1,2]'), (5, '[2,1]'), (6, '[1,2,3]'), (7, '[1,2,3,4]'), (8, '[4,3,2,1]'), (9, '[1,2,3,4,5]'); INSERT INTO t SELECT i+100, j FROM t; SELECT * FROM t ORDER BY j, i; i j 1 {} 101 {} 2 {"a": 1} 3 {"ab": 2} 102 {"a": 1} 103 {"ab": 2} 4 {"a": 1, "b": 2} 5 {"c": 3, "d": 4} 104 {"a": 1, "b": 2} 105 {"c": 3, "d": 4} 6 {"a": 1, "b": 2, "c": 3, "d": 4} 106 {"a": 1, "b": 2, "c": 3, "d": 4} 1 [] 101 [] 2 [1] 3 [2] 102 [1] 103 [2] 4 [1, 2] 5 [2, 1] 104 [1, 2] 105 [2, 1] 6 [1, 2, 3] 106 [1, 2, 3] 7 [1, 2, 3, 4] 8 [4, 3, 2, 1] 107 [1, 2, 3, 4] 108 [4, 3, 2, 1] 9 [1, 2, 3, 4, 5] 109 [1, 2, 3, 4, 5] Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' SELECT * FROM t ORDER BY j DESC, i; i j 9 [1, 2, 3, 4, 5] 109 [1, 2, 3, 4, 5] 7 [1, 2, 3, 4] 8 [4, 3, 2, 1] 107 [1, 2, 3, 4] 108 [4, 3, 2, 1] 6 [1, 2, 3] 106 [1, 2, 3] 4 [1, 2] 5 [2, 1] 104 [1, 2] 105 [2, 1] 2 [1] 3 [2] 102 [1] 103 [2] 1 [] 101 [] 6 {"a": 1, "b": 2, "c": 3, "d": 4} 106 {"a": 1, "b": 2, "c": 3, "d": 4} 4 {"a": 1, "b": 2} 5 {"c": 3, "d": 4} 104 {"a": 1, "b": 2} 105 {"c": 3, "d": 4} 2 {"a": 1} 3 {"ab": 2} 102 {"a": 1} 103 {"ab": 2} 1 {} 101 {} Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' SELECT j, COUNT(*) FROM t GROUP BY j WITH ROLLUP; j COUNT(*) {} 2 {"a": 1} 2 {"ab": 2} 2 {"c": 3, "d": 4} 2 {"a": 1, "b": 2} 2 {"a": 1, "b": 2, "c": 3, "d": 4} 2 [] 2 [2] 2 [1] 2 [1, 2] 2 [2, 1] 2 [1, 2, 3] 2 [1, 2, 3, 4] 2 [4, 3, 2, 1] 2 [1, 2, 3, 4, 5] 2 NULL 30 Warnings: Warning 1235 This version of MySQL doesn't yet support 'sorting of non-scalar JSON values' DROP TABLE t; # Test NULLs sorting. CREATE TABLE t(i int, j json); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' INSERT INTO t(i) VALUES (1),(2),(3),(2),(1); SELECT * FROM t ORDER BY j, i; i j 1 NULL 1 NULL 2 NULL 2 NULL 3 NULL SELECT * FROM t ORDER BY j DESC, i; i j 1 NULL 1 NULL 2 NULL 2 NULL 3 NULL SELECT i, JSON_EXTRACT(j, '$') AS je FROM t ORDER BY je, i; i je 1 NULL 1 NULL 2 NULL 2 NULL 3 NULL SELECT i, JSON_EXTRACT(j, '$') AS je FROM t ORDER BY je DESC, i; i je 1 NULL 1 NULL 2 NULL 2 NULL 3 NULL INSERT INTO t(i, j) VALUES (1, '1'); SELECT * FROM t ORDER BY j, i; i j 1 NULL 1 NULL 2 NULL 2 NULL 3 NULL 1 1 SELECT * FROM t ORDER BY j DESC, i; i j 1 1 1 NULL 1 NULL 2 NULL 2 NULL 3 NULL SELECT i, JSON_EXTRACT(j, '$') AS je FROM t ORDER BY je, i; i je 1 NULL 1 NULL 2 NULL 2 NULL 3 NULL 1 1 SELECT i, JSON_EXTRACT(j, '$') AS je FROM t ORDER BY je DESC, i; i je 1 1 1 NULL 1 NULL 2 NULL 2 NULL 3 NULL DROP TABLE t; CREATE TABLE t(vc TEXT, j JSON); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' INSERT INTO t (vc) VALUES ('a'), ('b'), ('c'); INSERT INTO t SELECT * FROM t; INSERT INTO t SELECT * FROM t; INSERT INTO t SELECT * FROM t; INSERT INTO t SELECT * FROM t; INSERT INTO t SELECT * FROM t; INSERT INTO t SELECT * FROM t; INSERT INTO t SELECT * FROM t; SELECT * FROM t ORDER BY vc, j; vc j a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL a NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL b NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL c NULL DROP TABLE t; # ---------------------------------------------------------------------- # Test of JSON_VALID function. # ---------------------------------------------------------------------- # Table - Json string column - utf-8, NULL Note: 'utf8' is a subset of internal 'utf8mb4' create table utf8_t (c varchar(20)) CHARACTER SET 'utf8'; Warnings: Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. insert into utf8_t values (NULL); # Expect NULL: select JSON_VALID(c) from utf8_t; JSON_VALID(c) NULL delete from utf8_t; # Table - Json string column - utf-8, valid insert into utf8_t values ('[123]'); select JSON_VALID(c) from utf8_t; JSON_VALID(c) 1 delete from utf8_t; # Table - Json string column - utf-8, non-utf8 insert into utf8_t values ('[123'); expect 0 (false) select JSON_VALID(c) from utf8_t; JSON_VALID(c) 0 delete from utf8_t; # Table - Try to extract JSON from TIMESTAMP column ALTER TABLE utf8_t ADD d TIMESTAMP; # Should give false; not string or JSON type # and we do not convert automatically from TIMESTAMP to JSON insert into utf8_t values (NULL, '2014-11-25 18:00'); select JSON_VALID(d) from utf8_t; JSON_VALID(d) 0 # Explicit cast to a character data type # allows MySQL to parse this is a JSON text # The string isn't a legal JSON document, tho, so not valid. select JSON_VALID(CAST(d as CHAR)) from utf8_t; JSON_VALID(CAST(d as CHAR)) 0 # Should give true select JSON_VALID(CONCAT( CONCAT('"', CAST(d as CHAR)), '"')) from utf8_t; JSON_VALID(CONCAT( CONCAT('"', CAST(d as CHAR)), '"')) 1 delete from utf8_t; drop table utf8_t; # Table - JSON type; should give true by definition create table json_t(t json); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' insert into json_t values ('[123]'); select json_VALID(t) from json_t; json_VALID(t) 1 # Function result - JSON select JSON_VALID( JSON_ARRAY(t, t) ) from json_t; JSON_VALID( JSON_ARRAY(t, t) ) 1 drop table json_t; # ---------------------------------------------------------------------- # Test of JSON_LENGTH function. # ---------------------------------------------------------------------- create table utf8_mj_length (a int, c varchar(20)) CHARACTER SET 'utf8'; Warnings: Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. insert into utf8_mj_length values( 1, null ); insert into utf8_mj_length values( 2, '1' ); insert into utf8_mj_length values( 3, 'abc' ); insert into utf8_mj_length values( 4, '"abc"' ); insert into utf8_mj_length values ( 5, 'true' ); insert into utf8_mj_length values ( 6, 'false' ); insert into utf8_mj_length values ( 7, 'null' ); select a, c, json_length( c ) from utf8_mj_length where a = 1; a c json_length( c ) 1 NULL NULL select a, c, json_length( c ) from utf8_mj_length where a = 2; a c json_length( c ) 2 1 1 # invalid json text select a, c, json_length( c ) from utf8_mj_length where a = 3; ERROR 22032: Invalid JSON text in argument 1 to function json_length: "Invalid value." at position 0. select a, c, json_length( c ) from utf8_mj_length where a = 4; a c json_length( c ) 4 "abc" 1 select a, c, json_length( c ) from utf8_mj_length where a = 5; a c json_length( c ) 5 true 1 select a, c, json_length( c ) from utf8_mj_length where a = 6; a c json_length( c ) 6 false 1 select a, c, json_length( c ) from utf8_mj_length where a = 7; a c json_length( c ) 7 null 1 create table json_mj_length( a int, b json ); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' insert into json_mj_length values( 1, NULL ); select a, b, json_length( b ) from json_mj_length where a = 1; a b json_length( b ) 1 NULL NULL set names 'ascii'; # path auto-converted to a utf8 string from ascii select a, c, json_length( c, '$' ) from utf8_mj_length where a = 2; a c json_length( c, '$' ) 2 1 1 set names 'utf8'; Warnings: Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. select a, c, json_length( c, '$' ) from utf8_mj_length where a = 1; a c json_length( c, '$' ) 1 NULL NULL select a, c, json_length( c, '$' ) from utf8_mj_length where a = 2; a c json_length( c, '$' ) 2 1 1 # invalid json text select a, c, json_length( c, '$' ) from utf8_mj_length where a = 3; ERROR 22032: Invalid JSON text in argument 1 to function json_length: "Invalid value." at position 0. select a, c, json_length( c, '$' ) from utf8_mj_length where a = 4; a c json_length( c, '$' ) 4 "abc" 1 select a, c, json_length( c, '$' ) from utf8_mj_length where a = 5; a c json_length( c, '$' ) 5 true 1 select a, c, json_length( c, '$' ) from utf8_mj_length where a = 6; a c json_length( c, '$' ) 6 false 1 select a, c, json_length( c, '$' ) from utf8_mj_length where a = 7; a c json_length( c, '$' ) 7 null 1 select a, b, json_length( b, '$' ) from json_mj_length where a = 1; a b json_length( b, '$' ) 1 NULL NULL drop table utf8_mj_length; drop table json_mj_length; CREATE TABLE json_remove_t(j JSON, p TEXT); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' INSERT INTO json_remove_t(p) VALUES ('$.a'), ('$.b'), ('$.c'); UPDATE json_remove_t SET j = '{"a":1,"b":2,"c":3}'; SELECT j, p, json_remove(j, p) FROM json_remove_t ORDER BY p; j p json_remove(j, p) {"a": 1, "b": 2, "c": 3} $.a {"b": 2, "c": 3} {"a": 1, "b": 2, "c": 3} $.b {"a": 1, "c": 3} {"a": 1, "b": 2, "c": 3} $.c {"a": 1, "b": 2} DROP TABLE json_remove_t; CREATE TABLE json_merge_t(i INT, j JSON); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' INSERT INTO json_merge_t VALUES (0, NULL), (1, 'true'), (2, '5'), (3, '[1,2]'), (4, '{"a":["x", "y"]}'), (5, '{"a":"b","c":"d"}'); SELECT t1.j, t2.j, JSON_MERGE_PRESERVE(t1.j, t2.j) AS m1, JSON_MERGE_PRESERVE(t2.j, t1.j) AS m2 FROM json_merge_t t1, json_merge_t t2 ORDER BY t1.i, t2.i; j j m1 m2 NULL NULL NULL NULL NULL true NULL NULL NULL 5 NULL NULL NULL [1, 2] NULL NULL NULL {"a": ["x", "y"]} NULL NULL NULL {"a": "b", "c": "d"} NULL NULL true NULL NULL NULL true true [true, true] [true, true] true 5 [true, 5] [5, true] true [1, 2] [true, 1, 2] [1, 2, true] true {"a": ["x", "y"]} [true, {"a": ["x", "y"]}] [{"a": ["x", "y"]}, true] true {"a": "b", "c": "d"} [true, {"a": "b", "c": "d"}] [{"a": "b", "c": "d"}, true] 5 NULL NULL NULL 5 true [5, true] [true, 5] 5 5 [5, 5] [5, 5] 5 [1, 2] [5, 1, 2] [1, 2, 5] 5 {"a": ["x", "y"]} [5, {"a": ["x", "y"]}] [{"a": ["x", "y"]}, 5] 5 {"a": "b", "c": "d"} [5, {"a": "b", "c": "d"}] [{"a": "b", "c": "d"}, 5] [1, 2] NULL NULL NULL [1, 2] true [1, 2, true] [true, 1, 2] [1, 2] 5 [1, 2, 5] [5, 1, 2] [1, 2] [1, 2] [1, 2, 1, 2] [1, 2, 1, 2] [1, 2] {"a": ["x", "y"]} [1, 2, {"a": ["x", "y"]}] [{"a": ["x", "y"]}, 1, 2] [1, 2] {"a": "b", "c": "d"} [1, 2, {"a": "b", "c": "d"}] [{"a": "b", "c": "d"}, 1, 2] {"a": ["x", "y"]} NULL NULL NULL {"a": ["x", "y"]} true [{"a": ["x", "y"]}, true] [true, {"a": ["x", "y"]}] {"a": ["x", "y"]} 5 [{"a": ["x", "y"]}, 5] [5, {"a": ["x", "y"]}] {"a": ["x", "y"]} [1, 2] [{"a": ["x", "y"]}, 1, 2] [1, 2, {"a": ["x", "y"]}] {"a": ["x", "y"]} {"a": ["x", "y"]} {"a": ["x", "y", "x", "y"]} {"a": ["x", "y", "x", "y"]} {"a": ["x", "y"]} {"a": "b", "c": "d"} {"a": ["x", "y", "b"], "c": "d"} {"a": ["b", "x", "y"], "c": "d"} {"a": "b", "c": "d"} NULL NULL NULL {"a": "b", "c": "d"} true [{"a": "b", "c": "d"}, true] [true, {"a": "b", "c": "d"}] {"a": "b", "c": "d"} 5 [{"a": "b", "c": "d"}, 5] [5, {"a": "b", "c": "d"}] {"a": "b", "c": "d"} [1, 2] [{"a": "b", "c": "d"}, 1, 2] [1, 2, {"a": "b", "c": "d"}] {"a": "b", "c": "d"} {"a": ["x", "y"]} {"a": ["b", "x", "y"], "c": "d"} {"a": ["x", "y", "b"], "c": "d"} {"a": "b", "c": "d"} {"a": "b", "c": "d"} {"a": ["b", "b"], "c": ["d", "d"]} {"a": ["b", "b"], "c": ["d", "d"]} DROP TABLE json_merge_t; create table keys1(i int, j json); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' insert into keys1 select i, j from t1; DROP TABLE t1; create table rawOrders( orderID int, doc json ); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' insert into rawOrders values ( 1, '100' ), ( 2, '{ "id": 2, "quantity": 200 }' ); create table orders( orderID int, quantity int unsigned ); INSERT INTO orders( orderID, quantity ) SELECT r.orderID, CASE( JSON_TYPE( r.doc ) ) WHEN "INTEGER" THEN CAST( r.doc AS UNSIGNED INT ) WHEN "OBJECT" THEN CAST( JSON_EXTRACT( r.doc, '$.quantity' ) AS UNSIGNED INT ) ELSE NULL END FROM rawOrders r; select * from rawOrders order by orderID; orderID doc 1 100 2 {"id": 2, "quantity": 200} select * from orders order by orderID; orderID quantity 1 100 2 200 drop table rawOrders; drop table orders; select charset(json_type('{}')); charset(json_type('{}')) utf8mb4 # ---------------------------------------------------------------------- # Test of CAST( AS JSON) # ---------------------------------------------------------------------- create table t1(dati datetime, da date, tim time, ts timestamp, y year, -- ti tinyint, tiu tinyint unsigned, si smallint, siu smallint unsigned, mi mediumint, miu mediumint unsigned, i int, iu int unsigned, bi bigint, biu bigint unsigned, boo boolean, -- dc decimal(5,2), n numeric(5,2), -- f float, d double, bitt bit(10), blb blob, bin binary(10), en enum('a','b','c'), se set('a','b','c'), -- ge geometry, po point, ls linestring, py polygon, js json ); Warnings: Warning 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' insert into t1 values('2014-11-25 18:00', '2014-11-25', '18:00:59', '2014-11-25 18:00', '1999', -- 127, 255, 32767, 65535, 8388607, 16777215, -- 3 bytes 2147483647, 4294967295, -- 4 bytes 9223372036854775807, 18446744073709551615, true, -- 3.14, 3.14, -- 3.14, 3.14, b'10101', '10101abcde', '10101abcde', 'b', 'a,c', -- ST_GeomFromText('POINT(1 1)'), ST_GeomFromText('POINT(1 1)'), ST_GeomFromText('LINESTRING(0 0,1 1,2 2)'), ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0), (5 5,7 5,7 7,5 7, 5 5))'), '[123]' ); select json_type(cast(dati as json)) from t1; json_type(cast(dati as json)) DATETIME select json_type(cast(da as json)) from t1; json_type(cast(da as json)) DATE select json_type(cast(tim as json)) from t1; json_type(cast(tim as json)) TIME select json_type(cast(ts as json)) from t1; json_type(cast(ts as json)) TIMESTAMP select json_type(cast(y as json)) from t1; json_type(cast(y as json)) UNSIGNED INTEGER select json_type(cast(ti as json)) from t1; json_type(cast(ti as json)) INTEGER select json_type(cast(tiu as json)) from t1; json_type(cast(tiu as json)) UNSIGNED INTEGER select json_type(cast(si as json)) from t1; json_type(cast(si as json)) INTEGER select json_type(cast(siu as json)) from t1; json_type(cast(siu as json)) UNSIGNED INTEGER select json_type(cast(mi as json)) from t1; json_type(cast(mi as json)) INTEGER select json_type(cast(miu as json)) from t1; json_type(cast(miu as json)) UNSIGNED INTEGER select json_type(cast(i as json)) from t1; json_type(cast(i as json)) INTEGER select json_type(cast(iu as json)) from t1; json_type(cast(iu as json)) UNSIGNED INTEGER select json_type(cast(bi as json)) from t1; json_type(cast(bi as json)) INTEGER select json_type(cast(biu as json)) from t1; json_type(cast(biu as json)) UNSIGNED INTEGER select json_type(cast(boo as json)) from t1; json_type(cast(boo as json)) INTEGER select json_type(cast(dc as json)) from t1; json_type(cast(dc as json)) DECIMAL select json_type(cast(f as json)) from t1; json_type(cast(f as json)) DOUBLE select json_type(cast(d as json)) from t1; json_type(cast(d as json)) DOUBLE select json_type(cast(bitt as json)) from t1; json_type(cast(bitt as json)) BIT select json_type(cast(blb as json)) from t1; json_type(cast(blb as json)) BLOB select json_type(cast(bin as json)) from t1; json_type(cast(bin as json)) BLOB select json_type(cast(en as json)) from t1; json_type(cast(en as json)) STRING select json_type(cast(se as json)) from t1; json_type(cast(se as json)) STRING select json_type(cast(ge as json)) from t1; json_type(cast(ge as json)) OBJECT select json_type(cast(po as json)) from t1; json_type(cast(po as json)) OBJECT select json_type(cast(ls as json)) from t1; json_type(cast(ls as json)) OBJECT select json_type(cast(py as json)) from t1; json_type(cast(py as json)) OBJECT select json_type(cast(js as json)) from t1; json_type(cast(js as json)) ARRAY select cast(dati as json) from t1; cast(dati as json) "2014-11-25 18:00:00.000000" select cast(da as json) from t1; cast(da as json) "2014-11-25" select cast(tim as json) from t1; cast(tim as json) "18:00:59.000000" select cast(ts as json) from t1; cast(ts as json) "2014-11-25 18:00:00.000000" select cast(y as json) from t1; cast(y as json) 1999 select cast(ti as json) from t1; cast(ti as json) 127 select cast(tiu as json) from t1; cast(tiu as json) 255 select cast(si as json) from t1; cast(si as json) 32767 select cast(siu as json) from t1; cast(siu as json) 65535 select cast(mi as json) from t1; cast(mi as json) 8388607 select cast(miu as json) from t1; cast(miu as json) 16777215 select cast(i as json) from t1; cast(i as json) 2147483647 select cast(iu as json) from t1; cast(iu as json) 4294967295 select cast(bi as json) from t1; cast(bi as json) 9223372036854775807 select cast(biu as json) from t1; cast(biu as json) 18446744073709551615 select cast(boo as json) from t1; cast(boo as json) 1 select cast(dc as json) from t1; cast(dc as json) 3.14 select cast(f as json) from t1; cast(f as json) 3.140000104904175 select cast(d as json) from t1; cast(d as json) 3.14 select cast(bitt as json) from t1; cast(bitt as json) "base64:type16:ABU=" select cast(blb as json) from t1; cast(blb as json) "base64:type252:MTAxMDFhYmNkZQ==" select cast(bin as json) from t1; cast(bin as json) "base64:type254:MTAxMDFhYmNkZQ==" select cast(en as json) from t1; cast(en as json) "b" select cast(se as json) from t1; cast(se as json) "a,c" select cast(ge as json) from t1; cast(ge as json) {"type": "Point", "coordinates": [1.0, 1.0]} select cast(po as json) from t1; cast(po as json) {"type": "Point", "coordinates": [1.0, 1.0]} select cast(ls as json) from t1; cast(ls as json) {"type": "LineString", "coordinates": [[0.0, 0.0], [1.0, 1.0], [2.0, 2.0]]} select cast(py as json) from t1; cast(py as json) {"type": "Polygon", "coordinates": [[[0.0, 0.0], [10.0, 0.0], [10.0, 10.0], [0.0, 10.0], [0.0, 0.0]], [[5.0, 5.0], [7.0, 5.0], [7.0, 7.0], [5.0, 7.0], [5.0, 5.0]]]} select cast(js as json) from t1; cast(js as json) [123] # # Bug#21442878 INCORRECT RETURN STATUS FROM # ITEM_JSON_TYPECAST::VAL_JSON() ON PARSE ERRORS # select json_extract(en, '$') from t1; ERROR 22032: Invalid data type for JSON data in argument 1 to function json_extract; a JSON string or JSON type is required. drop table t1; create table t1 ( c1 varchar(200) character set 'latin1', c2 varchar(200) character set 'utf8' ); Warnings: Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. insert into t1 values ('[1,2]', # legal json, but not utf-8 '[1,2 '); select cast(c1 as json) from t1; cast(c1 as json) [1, 2] select cast(c2 as json) from t1; ERROR 22032: Invalid JSON text in argument 1 to function cast_as_json: "Missing a comma or ']' after an array element." at position 5. select cast(c2 as json) is null from t1; ERROR 22032: Invalid JSON text in argument 1 to function cast_as_json: "Missing a comma or ']' after an array element." at position 5. drop table t1; create table t2(x int); insert into t2 values (1), (2); select x, cast(y as json) from (select x, cast(x as json) as y from t2) s order by x; x cast(y as json) 1 1 2 2 select x, cast(y as json) from (select x, cast(cast(x as json) as char charset utf8) as y from t2) s order by x; x cast(y as json) 1 1 2 2 Warnings: Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. drop table t2; # ---------------------------------------------------------------------- # Test of CAST(