ALTER DATABASE test CHARACTER SET latin1 COLLATE latin1_swedish_ci;
#
# WL#8867: Add JSON_TABLE table function
#
select * from
json_table( '[{"a":"3"},{"a":2},{"b":1},{"a":0}]', '$[*]' columns (id for ordinality,
jpath varchar(100) path '\$.a',
jexst int exists path '\$.b')
) as tt;
id jpath jexst 130 220 3 NULL 1 400
select * from
json_table( '[{"x":"3"},{"a":2},{"b":1},{"a":0}]', '$[*]' columns (id for ordinality,
jpath varchar(100) path '$.a' default '[99]' on error,
jexst int exists path '$.b')
) as tt;
id jpath jexst 1 NULL 0 220 3 NULL 1 400
select * from
json_table( '[{"x":"3"},{"a":2},{"b":1},{"a":0},{"a":[1,2]}]', '$[*]' columns (id for ordinality,
jpath varchar(100) path '$.a'
default '33' on empty
default '66' on error,
jsn_path json path '\$.a' default '{"x":33}' on empty,
jexst int exists path '\$.b')
) as tt;
id jpath jsn_path jexst 133 {"x":33} 0 2220 333 {"x":33} 1 4000 566 [1,2] 0
select * from
json_table( '[{"a":"3"},{"a":2},{"b":1},{"a":0.33},{"a":"asd"}]', '$[*]' columns (id for ordinality,
jpath_i int path '$.a'
default '33' on empty
default '66' on error,
jpath_r real path '$.a'
default '33.3' on empty
default '77.7' on error,
jsn_path json path '$.a' default '{"x":33}' on empty,
jexst int exists path '$.b')
) as tt;
id jpath_i jpath_r jsn_path jexst 133"3"0 22220 33333.3 {"x":33} 1 400.330.330 500"asd"0
Warnings:
Warning 1366 Incorrect integer value: 'asd' for column `*any*`.`json_table`.`jpath_i` at row 5
Warning 1366 Incorrect double value: 'asd' for column `*any*`.`json_table`.`jpath_r` at row 5
select * from
json_table( '[{"x":"3"},{"a":2},{"b":1},{"a":0},{"a":[1,2]}]', '$[*]' columns (id for ordinality,
jpath varchar(100) path '$.a'
default '33' on empty
default '66' on error,
jsn_path json path '$.a' default '{"x":33}' on empty,
jexst int exists path '$.b')
) as tt;
id jpath jsn_path jexst 133 {"x":33} 0 2220 333 {"x":33} 1 4000 566 [1,2] 0
select * from
json_table( '[{"a":"3"},{"a":2},{"b":1},{"a":0}]', '$[*]' columns (id for ordinality,
jpath varchar(100) path '$.a',
json_path json path '$.a',
jexst int exists path '$.b')
) as tt;
id jpath json_path jexst 13"3"0 2220 3 NULL NULL 1 4000
select * from
json_table( '[{"a":"3"},{"a":2},{"b":1},{"a":0}]', '$[*]' columns (id for ordinality,
jpath varchar(100) path '$.a',
json_path json path '$.a',
jexst int exists path '$.b')
) as tt
where id = 3;
id jpath json_path jexst 3 NULL NULL 1
select * from
json_table( '[{"name":"Jeans","sizes":[32,34,36],"details":{"fit":"regular"},"flag":true,"jsnull":null},
{"name":"T-Shirt","sizes":["Medium","Large"],"details":{"fit":"loose"},"flag":false,"jsnull":null},
{"name":"Cellphone"}]', '$[*]' columns (name varchar(10) path '$.name',
sizes varchar(100) format json path '$.sizes',
details text format json path '$.details',
flag varchar(10) format json path '$.flag',
jsnull varchar(10) format json path '$.jsnull')
) as jt;
name sizes details flag jsnull
Jeans [32,34,36] {"fit":"regular"} true null
T-Shirt ["Medium","Large"] {"fit":"loose"} false null
Cellphone NULL NULL NULL NULL
select * from
json_table( '[{"doc":[1,2]},{"doc":{"k":"v"}},{"doc":null},{}]', '$[*]' columns (doc json format json path '$.doc' null on empty)
) as jt;
doc
[1,2]
{"k":"v"}
null
NULL
SELECT HEX(doc) FROM
json_table( '[{"doc":[1,2]},{}]', '$[*]' columns (doc blob format json path '$.doc' null on empty)
) as jt;
HEX(doc) 5B312C325D
NULL
select * from
json_table( '[{"name":"Jeans","sizes":[32,34,36]},{"name":"Cellphone"}]', '$[*]' columns (name varchar(10) path '$.name',
sizes varchar(100) format json path '$.sizes'
default '[99]' on empty)
) as jt;
name sizes
Jeans [32,34,36]
Cellphone [99]
select * from
json_table( '[{"a":[1]},{"a":[2]}]', '$' columns (a varchar(20) format json path '$[*].a'error on error)
) as jt; ERROR HY000: Can't store multiple matches of the path in the column 'a' of JSON_TABLE 'jt'.
select * from
json_table( '[{"a":[1,2,3]}]', '$[*]' columns (a int format json path '$.a')
) as jt; ERROR HY000: Incorrect usage of FORMAT JSON and non-string JSON_TABLE column
create view v_fmt as
select * from
json_table( '[{"sizes":[1,2]}]', '$[*]' columns (sizes varchar(20) format json path '$.sizes')
) as jt;
select * from v_fmt;
sizes
[1,2]
show create view v_fmt;
View Create View character_set_client collation_connection
v_fmt CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_fmt` AS select `jt`.`sizes` AS `sizes` from JSON_TABLE('[{"sizes":[1,2]}]', '$[*]' COLUMNS (`sizes` varchar(20) FORMAT JSON PATH '$.sizes')) `jt` latin1 latin1_swedish_ci
drop view v_fmt;
create view v_fmt_cs as
select * from
json_table( '[{"sizes":[1,2]}]', '$[*]' columns (
sizes varchar(20) character set utf8mb4 collate utf8mb4_bin
format json path '$.sizes')
) as jt;
show create view v_fmt_cs;
View Create View character_set_client collation_connection
v_fmt_cs CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_fmt_cs` AS select `jt`.`sizes` AS `sizes` from JSON_TABLE('[{"sizes":[1,2]}]', '$[*]'COLUMNS (`sizes` varchar(20) CHARSET utf8mb4 COLLATE utf8mb4_bin FORMAT JSON PATH '$.sizes')) `jt` latin1 latin1_swedish_ci
drop view v_fmt_cs;
select * from
json_table( '[{"a":"3"},{"a":2},{"b":1},{"a":0}]', '$[*]' columns (id for ordinality,
jpath varchar(100) path '$.a'error on empty,
jexst int exists path '$.b')
) as tt; ERROR HY000: Field 'jpath' can't be set for JSON_TABLE 'tt'.
select * from
json_table( '[{"a":"3"},{"a":2},{"a":1},{"a":[0,1]}]', '$[*]' columns (id for ordinality,
jpath varchar(100) path '$.a'error on error,
jexst int exists path '$.b')
) as tt; ERROR HY000: Can't store an array or an object in the scalar column 'jpath' of JSON_TABLE 'tt'.
select * from
json_table( '!#@$!@#$', '$[*]' columns (id for ordinality,
jpath varchar(100) path '$.a',
jexst int exists path '$.b')
) as tt; ERROR HY000: Syntax error in JSON text in argument 1 to function 'JSON_TABLE' at position 1
select * from
json_table( '[{"a":"3"},{"a":2},{"b":1},{"a":0}]', '$[*]' columns (id for ordinality,
id for ordinality)
) as tt; ERROR42S21: Duplicate column name 'id'
select * from
json_table( '[{"a":"3"},{"a":2},{"b":1},{"a":0}]', '$[*]' columns (id for ordinality,
_id for ordinality)
) as tt;
id _id 11 22 33 44
select * from
json_table( '[
{"a":"3", "n": { "l": 1}},
{"a":2, "n": { "l": 1}},
{"b":1, "n": { "l": 1}},
{"a":0, "n": { "l": 1}}
]', '$[*]' columns (
id for ordinality,
jpath varchar(100) path '$.a',
jexst int exists path '$.b',
nested path '$.n' columns (
id_n for ordinality,
jpath_n varchar(50) path '$.l')
)
) as tt;
id jpath jexst id_n jpath_n 13011 22011 3 NULL 111 40011
explain format=json
select * from
json_table( '[
{"a":"3", "n": { "l": 1}},
{"a":2, "n": { "l": 1}},
{"b":1, "n": { "l": 1}},
{"a":0, "n": { "l": 1}}
]', '$[*]' columns (
id for ordinality,
jpath varchar(100) path '$.a',
jexst int exists path '$.b',
nested path '$.n' columns (
id_n for ordinality,
jpath_n varchar(50) path '$.l')
)
) as tt;
EXPLAIN
{ "query_block": { "select_id": 1, "cost": "COST_REPLACED", "nested_loop": [
{ "table": { "table_name": "tt", "access_type": "ALL", "loops": 1, "rows": 40, "cost": "COST_REPLACED", "filtered": 100, "table_function": "json_table"
}
}
]
}
}
select * from
json_table( '[
{"a":2, "n": [{ "l": 1}, {"l": 11}]},
{"a":1, "n": [{ "l": 2}, {"l": 22}]}
]', '$[*]' columns (
id for ordinality,
jpath varchar(50) path '$.a',
nested path '$.n[*]' columns (
id_n for ordinality,
jpath_n varchar(50) path '$.l'),
nested path '$.n[*]' columns (
id_m for ordinality,
jpath_m varchar(50) path '$.l')
)
) as tt;
id jpath id_n jpath_n id_m jpath_m 1211 NULL NULL 12211 NULL NULL 12 NULL NULL 11 12 NULL NULL 211 2112 NULL NULL 21222 NULL NULL 21 NULL NULL 12 21 NULL NULL 222
select * from json_table( '[
{"a":"3", "n": ["b","a","c"]},
{"a":2, "n": [1,2]},
{"b":1, "n": ["zzz"]},
{"a":0, "n": [0.1, 0.02]}
]', '$[*]' columns (
id for ordinality,
jpath varchar(100) path '$.a',
jexst int exists path '$.b',
nested path '$.n[*]' columns (
id_n for ordinality,
jpath_n varchar(50) path '$')
)
) as tt;
id jpath jexst id_n jpath_n 1301 b 1302 a 1303 c 22011 22022 3 NULL 11 zzz 40010.1 40020.02
select * from json_table( '[
{"a":"3", "n": ["b","a","c"]},
{"a":2, "n": [1,2]},
{"b":1, "n": ["zzz"]},
{"a":0, "n": [0.1, 0.02]}
]', '$[*]' columns (
id for ordinality,
jpath varchar(100) path '$.a',
jexst int exists path '$.b',
nested path '$.n[*]' columns (
id_n1 for ordinality,
jpath_n1 varchar(50) path '$') ,
nested path '$.n[*]' columns (
id_n2 for ordinality,
jpath_n2 varchar(50) path '$')
)
) as tt;
id jpath jexst id_n1 jpath_n1 id_n2 jpath_n2 1301 b NULL NULL 1302 a NULL NULL 1303 c NULL NULL 130 NULL NULL 1 b 130 NULL NULL 2 a 130 NULL NULL 3 c 22011 NULL NULL 22022 NULL NULL 220 NULL NULL 11 220 NULL NULL 22 3 NULL 11 zzz NULL NULL 3 NULL 1 NULL NULL 1 zzz 40010.1 NULL NULL 40020.02 NULL NULL 400 NULL NULL 10.1 400 NULL NULL 20.02
select * from json_table( '[
{"a":"3", "n": [ {"ll":["b1","b2","b3"]}, {"ll": ["a1","a2"]},
{"ll":["c"]} ]},
{"a":2, "n": [{"ll":[1,11,111]},{"ll":[2]}]},
{"b":1, "n": [{"ll":["zzz"]}]},
{"a":0, "n": [{"ll":[0.1,0.01]}, {"ll":[0.02,0.002,0.0002]}]}
]', '$[*]' columns (
id1 for ordinality,
jpath varchar(100) path '$.a',
jexst int exists path '$.b',
nested path '$.n[*]' columns (
id2 for ordinality,
nested path '$.ll[*]' columns (
id3 for ordinality,
jpath_3 varchar(50) path '$')
),
nested path '$.n[*]' columns (
id4 for ordinality,
jpath_4 json path '$')
)
) as tt;
id1 jpath jexst id2 id3 jpath_3 id4 jpath_4 13011 b1 NULL NULL 13012 b2 NULL NULL 13013 b3 NULL NULL 13021 a1 NULL NULL 13022 a2 NULL NULL 13031 c NULL NULL 130 NULL NULL NULL 1 {"ll":["b1","b2","b3"]} 130 NULL NULL NULL 2 {"ll": ["a1","a2"]} 130 NULL NULL NULL 3 {"ll":["c"]} 220111 NULL NULL 2201211 NULL NULL 22013111 NULL NULL 220212 NULL NULL 220 NULL NULL NULL 1 {"ll":[1,11,111]} 220 NULL NULL NULL 2 {"ll":[2]} 3 NULL 111 zzz NULL NULL 3 NULL 1 NULL NULL NULL 1 {"ll":["zzz"]} 400110.1 NULL NULL 400120.01 NULL NULL 400210.02 NULL NULL 400220.002 NULL NULL 400230.0002 NULL NULL 400 NULL NULL NULL 1 {"ll":[0.1,0.01]} 400 NULL NULL NULL 2 {"ll":[0.02,0.002,0.0002]}
ord should be 1,1,1,2, which tells that first two values of 'l' are
from the same object, and next two are from different objects
SELECT *
FROM JSON_TABLE( '[{"a": "a_val", "b": [
{"c": "c_val", "l": [1,2]}
]
}, {"a": "a_val", "b": [
{"c": "c_val", "l": [11]},
{"c": "c_val", "l": [22]}
]
}]', '$[*]' COLUMNS (
apath VARCHAR(10) PATH '$.a',
NESTED PATH '$.b[*]' COLUMNS (
bpath VARCHAR(10) PATH '$.c',
ord FOR ORDINALITY,
NESTED PATH '$.l[*]' COLUMNS (
lpath varchar(10) PATH '$'
)
)
)) as jt;
apath bpath ord lpath
a_val c_val 11
a_val c_val 12
a_val c_val 111
a_val c_val 222
CREATE TABLE jt( i JSON );
SELECT * FROM jt, JSON_TABLE(jt.i, '$' COLUMNS (a INT PATH '$')) AS tt
WHERE a=1;
i a
EXPLAIN SELECT * FROM jt, JSON_TABLE(jt.i, '$' COLUMNS (a INT PATH '$')) AS tt
WHERE a=1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
SELECT * FROM (
SELECT * FROM jt, JSON_TABLE(jt.i, '$' COLUMNS (a INT PATH '$')) AS tt
WHERE a=1) AS ttt;
i a
EXPLAIN SELECT * FROM (
SELECT * FROM jt, JSON_TABLE(jt.i, '$' COLUMNS (a INT PATH '$')) AS tt
WHERE a=1) AS ttt;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
DROP TABLE jt;
CREATE VIEW v AS
SELECT * FROM JSON_TABLE('[1,2,3]', '$[*]' COLUMNS (num INT PATH '$.a'
DEFAULT '123' ON EMPTY
DEFAULT '456' ON ERROR)) AS jt;
SELECT * FROM v;
num 123 123 123
SHOW CREATE VIEW v;
View Create View character_set_client collation_connection
v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select `jt`.`num` AS `num` from JSON_TABLE('[1,2,3]', '$[*]' COLUMNS (`num` int(11) PATH '$.a' DEFAULT '123' ON EMPTY DEFAULT '456' ON ERROR)) `jt` latin1 latin1_swedish_ci
DROP VIEW v;
SELECT * FROM JSON_TABLE('"asdf"', '$' COLUMNS (a INT PATH '$'ERROR ON ERROR)) AS jt;
a 0
Warnings:
Warning 1366 Incorrect integer value: 'asdf' for column `*any*`.`json_table`.`a` at row 1
SELECT * FROM
JSON_TABLE('[{"a":1},{"a":2}]', '$' COLUMNS (a INT PATH '$[*].a'ERROR ON ERROR)) AS jt; ERROR HY000: Can't store multiple matches of the path in the column 'a' of JSON_TABLE 'jt'.
SELECT * FROM
JSON_TABLE('[{"a":1},{"a":2}]', '$' COLUMNS (a JSON PATH '$[*].a'ERROR ON ERROR)) AS jt; ERROR HY000: Can't store multiple matches of the path in the column 'a' of JSON_TABLE 'jt'.
SELECT * FROM
JSON_TABLE('123.456', '$' COLUMNS (a DECIMAL(2,1) PATH '$'ERROR ON ERROR)) AS jt;
a 9.9
Warnings:
Warning 1264 Out of range value for column 'a' at row 1
SELECT * FROM
JSON_TABLE('123.456', '$' COLUMNS (a DECIMAL(2,1) PATH '$')) AS jt;
a 9.9
Warnings:
Warning 1264 Out of range value for column 'a' at row 1
SELECT * FROM
JSON_TABLE('{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{"a":1,"b":{}}}}}}}}}}}}}}}}}}}', '$' COLUMNS (i0 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i1 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i2 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i3 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i4 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i5 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i6 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i7 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i8 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i9 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i10 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i11 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i12 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i13 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i14 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i15 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i16 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i17 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i18 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i19 INT PATH '$.a',
NESTED PATH '$.b' COLUMNS (i20 INT PATH '$.a'
)))))))))))))))))))))) jt;
i0 i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i13 i14 i15 i16 i17 i18 i19 i20 111111111111111111 NULL NULL NULL
CREATE TABLE t1(id int, jd JSON);
INSERT INTO t1 values (1, '[1,3,5]'),(2,'[2,4,6]');
SELECT id, jt.* FROM t1,
JSON_TABLE(jd, '$[*]' COLUMNS (jid FOR ORDINALITY,
val INT PATH '$')) AS jt;
id jid val 111 123 135 212 224 236
SELECT id, jt.*
FROM t1,
JSON_TABLE(jd, '$[*]' COLUMNS (jid FOR ORDINALITY,
val INT PATH '$')) AS jt;
id jid val 111 123 135 212 224 236
EXPLAIN SELECT id, jt.*
FROM t1,
JSON_TABLE(jd, '$[*]' COLUMNS (jid FOR ORDINALITY,
val INT PATH '$')) AS jt;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 1 SIMPLE jt ALL NULL NULL NULL NULL 40 Table function: json_table
SELECT t1.id, t2.id, jt.*
FROM t1,
JSON_TABLE(t1.jd, '$[*]' COLUMNS (jid FOR ORDINALITY,
val INT PATH '$')) AS jt,
t1 AS t2;
id id jid val 1111 1123 1135 1211 1223 1235 2112 2124 2136 2212 2224 2236
EXPLAIN SELECT t1.id, t2.id, jt.*
FROM t1,
JSON_TABLE(t1.jd, '$[*]' COLUMNS (jid FOR ORDINALITY,
val INT PATH '$')) AS jt,
t1 AS t2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 1 SIMPLE t2 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join) 1 SIMPLE jt ALL NULL NULL NULL NULL 40 Table function: json_table
EXPLAIN SELECT t1.id, t2.id, jt.*
FROM t1,
JSON_TABLE(t1.jd, '$[*]' COLUMNS (jid FOR ORDINALITY,
val INT PATH '$')) AS jt,
t1 AS t2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 1 SIMPLE t2 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join) 1 SIMPLE jt ALL NULL NULL NULL NULL 40 Table function: json_table
SELECT * FROM t1 WHERE id IN
(SELECT * FROM JSON_TABLE('[1,2]', '$[*]' COLUMNS
(id INT PATH '$')) AS jt);
id jd 1 [1,3,5] 2 [2,4,6]
EXPLAIN SELECT * FROM t1 WHERE id IN
(SELECT * FROM JSON_TABLE('[1,2]', '$[*]' COLUMNS
(id INT PATH '$')) AS jt);
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 2 1 PRIMARY jt ALL NULL NULL NULL NULL 40 Table function: json_table; Using where; FirstMatch(t1); Using join buffer (flat, BNL join)
DROP TABLE t1;
SELECT * FROM JSON_TABLE('"asdf"', '$' COLUMNS(
tm TIME PATH '$',
dt DATE PATH '$',
i INT PATH '$',
f FLOAT PATH '$',
d DECIMAL PATH '$')) AS jt;
tm dt i f d 00:00:000000-00-00000
Warnings:
Warning 1265 Data truncated for column 'tm' at row 1
Warning 1265 Data truncated for column 'dt' at row 1
Warning 1366 Incorrect integer value: 'asdf' for column `*any*`.`json_table`.`i` at row 1
Warning 1366 Incorrect double value: 'asdf' for column `*any*`.`json_table`.`f` at row 1
Warning 1366 Incorrect decimal value: 'asdf' for column `*any*`.`json_table`.`d` at row 1
SELECT * FROM
JSON_TABLE('{}', '$' COLUMNS (x INT PATH '$.x' DEFAULT NULL ON EMPTY)) jt;
x
NULL
SELECT * FROM
JSON_TABLE('{}', '$' COLUMNS (x INT PATH '$.x' DEFAULT NULL ON ERROR)) jt;
x
NULL
SELECT * FROM
JSON_TABLE('{}', '$' COLUMNS (x INT PATH '$.x' DEFAULT 0 ON EMPTY)) jt;
x 0
SELECT * FROM
JSON_TABLE('{}', '$' COLUMNS (x INT PATH '$.x' DEFAULT 0 ON ERROR)) jt;
x
NULL
SELECT * FROM
JSON_TABLE('{}', '$' COLUMNS (x DATE
PATH '$.x'
DEFAULT DATE'2020-01-01' ON EMPTY)) jt;
x 2020-01-01
SELECT * FROM
JSON_TABLE('{}', '$' COLUMNS (x DATE
PATH '$.x'
DEFAULT DATE'2020-01-01' ON ERROR)) jt;
x
NULL
#
# Bug#25413069: SIG11 IN CHECK_COLUMN_GRANT_IN_TABLE_REF
#
SELECT a FROM JSON_TABLE(abc, '$[*]' COLUMNS ( a int path '$.a')) AS jt; ERROR42S22: Unknown column 'abc' in 'JSON_TABLE'
#
# Bug#25420680: ASSERTION `THD->IS_ERROR()' FAILED IN SQL/SQL_SELECT.CC
#
SELECT * FROM JSON_TABLE('{"a":"2017-11-1"}', '$' COLUMNS (jpath DATE PATH '$.a')) AS jt;
jpath 2017-11-01
#
# Bug#25413826: ASSERTION `TABLE_LIST->ALIAS' FAILED
#
SELECT * FROM JSON_TABLE('[{"a": 1, "b": 2}]', '$[*]' COLUMNS ( a int path '$.b')); ERROR HY000: Every table function must have an alias.
#
# Bug#25421464: ASSERTION `!STRCMP(TABLE_REF->TABLE_NAME, ...
#
CREATE VIEW v1 AS
SELECT * FROM JSON_TABLE('[{"a": 1, "b": 2}]', '$[*]' COLUMNS ( a INT PATH '$.b')) AS jt;
SELECT * FROM v1;
a 2
SHOW CREATE VIEW v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `jt`.`a` AS `a` from JSON_TABLE('[{"a": 1, "b": 2}]', '$[*]' COLUMNS (`a` int(11) PATH '$.b')) `jt` latin1 latin1_swedish_ci
DROP VIEW v1;
#
# Bug#25427457: ASSERTION `!((*REG_FIELD)->FLAGS & 16)'
#
SELECT * FROM JSON_TABLE('{"a":"1"}', '$' COLUMNS (jpath JSON PATH '$.a',
o FOR ORDINALITY)) AS jt
WHERE o = 1;
jpath o "1"1
#
# Bug#25427982: ASSERTION `DERIVED' FAILED IN SQL/TABLE.H
#
SELECT je,o FROM JSON_TABLE('{"a":"1"}', '$' COLUMNS (o FOR ORDINALITY,
je BIGINT EXISTS PATH '$.a')) AS jt
GROUP BY je;
je o 11
SELECT je,COUNT(o) FROM JSON_TABLE('{"a":"1"}', '$' COLUMNS (o FOR ORDINALITY,
je BIGINT EXISTS PATH '$.a')) AS jt
GROUP BY je;
je COUNT(o) 11
#
# Bug#25413194: ASSERTION `!(WANT_PRIVILEGE & ~(GRANT->WANT_PRIVILEGE
#
CREATE TABLE t1 (j JSON);
SELECT * FROM t1,JSON_TABLE(t1.j, '$[*]' COLUMNS ( a int path '$.b')) AS jt;
j a
DROP TABLE t1;
#
# Bug#25460537:SIG 11 IN NEXT_FAST AT SQL/SQL_LIST.H
#
PREPARE STMT FROM "SELECT * FROM JSON_TABLE(
\'[{\"a\":\"3\"},{\"a\":2},{\"b\":1},{\"a\":0}]\',
\'$[*]\' COLUMNS (id
FOR ORDINALITY,
jpath VARCHAR(100) PATH \'$.a\',
jexst INT EXISTS PATH \'$.b\')
) as tt";
EXECUTE STMT;
id jpath jexst 130 220 3 NULL 1 400
EXECUTE STMT;
id jpath jexst 130 220 3 NULL 1 400
DEALLOCATE PREPARE stmt;
#
# Bug#25522353: SIG 11 IN JOIN::MAKE_JOIN_PLAN | SQL/SQL_OPTIMIZER.CC
#
CREATE TABLE t1 (id INT, jc JSON);
SELECT * FROM t1 RIGHT JOIN JSON_TABLE(t1.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt ON t1.jc=jt.id; ERROR42S22: Unknown column 't1.jc' in 'JSON_TABLE'
SELECT * FROM JSON_TABLE(t1.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt LEFT JOIN t1 ON t1.jc=jt.id; ERROR42S22: Unknown column 't1.jc' in 'JSON_TABLE'
SELECT * FROM JSON_TABLE(t1.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt RIGHT JOIN t1 ON t1.jc=jt.id;
id id jc
SELECT * FROM t1 LEFT JOIN JSON_TABLE(t1.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt ON t1.jc=jt.id;
id jc id
EXPLAIN SELECT * FROM t1 LEFT JOIN JSON_TABLE(t1.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt ON t1.jc=jt.id;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
SELECT * FROM t1 t1o RIGHT JOIN t1 ON t1o.id=t1.id
LEFT JOIN JSON_TABLE(t1.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt ON t1.jc=jt.id;
id jc id jc id
EXPLAIN SELECT * FROM t1 t1o RIGHT JOIN t1 ON t1o.id=t1.id
LEFT JOIN JSON_TABLE(t1.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt ON t1.jc=jt.id;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
SELECT * FROM t1 AS t1o RIGHT JOIN
(t1 AS t1i JOIN JSON_TABLE(t1o.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt ON t1i.jc=jt.id)
ON t1o.id=t1i.id; ERROR42S22: Unknown column 't1o.jc' in 'JSON_TABLE'
SELECT * FROM t1 AS t1o RIGHT JOIN
(t1 AS t1i RIGHT JOIN JSON_TABLE(t1o.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt ON t1i.jc=jt.id)
ON t1o.id=t1i.id; ERROR42S22: Unknown column 't1o.jc' in 'JSON_TABLE'
WITH qn AS
(SELECT jt.* FROM t1 RIGHT JOIN JSON_TABLE(t1.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt ON t1.jc=jt.id)
SELECT * from qn; ERROR42S22: Unknown column 't1.jc' in 'JSON_TABLE'
WITH qn AS
(SELECT 1 UNION
SELECT jt.id FROM t1 RIGHT JOIN JSON_TABLE(t1.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt ON t1.jc=jt.id)
SELECT * from qn; ERROR42S22: Unknown column 't1.jc' in 'JSON_TABLE'
SELECT * FROM t1 AS t1o RIGHT JOIN
(t1 AS t1i JOIN JSON_TABLE(t1o.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt ON t1i.jc=jt.id)
ON t1o.id=t1i.id; ERROR42S22: Unknown column 't1o.jc' in 'JSON_TABLE'
SELECT * FROM t1 AS t1o RIGHT JOIN
(t1 AS t1i RIGHT JOIN JSON_TABLE(t1o.jc, '$' COLUMNS
(id FOR ORDINALITY)) as jt ON t1i.jc=jt.id)
ON t1o.id=t1i.id; ERROR42S22: Unknown column 't1o.jc' in 'JSON_TABLE'
INSERT INTO t1 VALUES(1,"1"),(2,"4"),(3,"3");
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze Warning Engine-independent statistics are not collected for column 'jc'
test.t1 analyze status OK
SELECT * FROM t1 LEFT JOIN JSON_TABLE(t1.jc, '$' COLUMNS
(id INT PATH '$')) as jt ON t1.id=jt.id;
id jc id 111 24 NULL 333
EXPLAIN SELECT * FROM t1 LEFT JOIN JSON_TABLE(t1.jc, '$' COLUMNS
(id INT PATH '$')) as jt ON t1.id=jt.id;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 1 SIMPLE jt ALL NULL NULL NULL NULL 40 Table function: json_table; Using where
SELECT * FROM t1
LEFT JOIN
JSON_TABLE(t1.jc, '$' COLUMNS (id FOR ORDINALITY)) as jt ON t1.jc=jt.id
RIGHT JOIN
JSON_TABLE(jt.id, '$' COLUMNS (id FOR ORDINALITY)) as jt1 ON jt.id=jt1.id; ERROR42S22: Unknown column 'jt.id' in 'JSON_TABLE'
DROP TABLE t1;
#
# Bug#25525409: ASSERTION `TABLE_LIST->TABLE' FAILED IN SQL/SQL_BASE.CC
#
SELECT * FROM JSON_TABLE( ( SELECT a ) , '$.*' COLUMNS (col1 FOR ORDINALITY) )
AS alias1; ERROR42S22: Unknown column 'a' in 'SELECT'
SELECT * FROM JSON_TABLE( ( SELECT 1 ) , '$.*' COLUMNS (col1 FOR ORDINALITY) )
AS alias1;
col1
SELECT * FROM JSON_TABLE( ( SUM(1) ) , '$.*' COLUMNS (col1 FOR ORDINALITY) )
AS alias1; ERROR HY000: Invalid use of group function
#
# Bug# #25472875: ERROR SHOULD BE THROWN FOR INCORRECT VALUES
#
SELECT *
FROM JSON_TABLE('{"a":"1993-01-01"}', '$' COLUMNS (jp DATE PATH '$.b' DEFAULT '1000' ON EMPTY))
AS jt;
jp 0000-00-00
Warnings:
Warning 1265 Data truncated for column 'jp' at row 1
#
# Bug#25532429: INVALID JSON ERRORNOT THROWN WITH EMPTY TABLES JOIN
#
CREATE TABLE t1(j JSON);
SELECT * FROM t1,
JSON_TABLE( 'dqwfjqjf' , '$[*]' COLUMNS (col5 FOR ORDINALITY) ) AS alias7;
j col5
DROP TABLE t1;
#
# Bug#25540370: SIG 11 IN SHOW_SQL_TYPE|SQL/SQL_SHOW.CC:7063
#
SELECT * FROM
JSON_TABLE('[3.14159]', '$[*]' COLUMNS (col18 CHAR(70) PATH '$')
) AS alias2;
col18 3.14159
# Too short field causes truncation, errorand triggers ON ERROR clause
SELECT * FROM
JSON_TABLE('["3.14159"]', '$[*]' COLUMNS (col18 CHAR(6) PATH '$')
) AS alias2;
col18 3.1415
Warnings:
Warning 1265 Data truncated for column 'col18' at row 1
#Truncated space doesn't trigger ON ERROR
SELECT * FROM
JSON_TABLE('["3.14159 "]', '$[*]' COLUMNS (col18 CHAR(7) PATH '$')
) AS alias2;
col18 3.14159
SELECT * FROM
JSON_TABLE('[3.14159]', '$[*]' COLUMNS (col18 CHAR(255) PATH '$')
) AS alias2;
col18 3.14159
SELECT * FROM
JSON_TABLE('[3.14159]', '$[*]' COLUMNS (col18 VARCHAR(70) PATH '$')
) AS alias2;
col18 3.14159
SELECT * FROM
JSON_TABLE('[3.14159]', '$[*]' COLUMNS (col18 VARCHAR(255) PATH '$')
) AS alias2;
col18 3.14159
SELECT * FROM
JSON_TABLE('[3.14159]', '$[*]' COLUMNS (col18 FLOAT PATH '$')
) AS alias2;
col18 3.14159
SELECT * FROM
JSON_TABLE('[3.14159]', '$[*]' COLUMNS (col18 DOUBLE PATH '$')
) AS alias2;
col18 3.14159
SELECT * FROM
JSON_TABLE('[3.14159]', '$[*]' COLUMNS (col18 DECIMAL(3,3) PATH '$')
) AS alias2;
col18 0.999
Warnings:
Warning 1264 Out of range value for column 'col18' at row 1
SELECT * FROM
JSON_TABLE('[3.14159]', '$[*]' COLUMNS (col18 DECIMAL(3,3) PATH '$'ERROR ON ERROR)
) AS alias2;
col18 0.999
Warnings:
Warning 1264 Out of range value for column 'col18' at row 1
SELECT * FROM
JSON_TABLE('[0.9]', '$[*]' COLUMNS (col18 DECIMAL(3,3) PATH '$')
) AS alias2;
col18 0.900
SELECT * FROM
JSON_TABLE('["asdf","ghjk"]', '$[*]' COLUMNS (col18 DECIMAL(4,3) PATH '$'
DEFAULT "3.14159" ON ERROR)
) AS alias2;
col18 0.000 0.000
Warnings:
Warning 1366 Incorrect decimal value: 'asdf' for column `*any*`.`json_table`.`col18` at row 1
Warning 1366 Incorrect decimal value: 'ghjk' for column `*any*`.`json_table`.`col18` at row 2
CREATE TABLE t1(jd JSON);
INSERT INTO t1 VALUES('["asdf"]'),('["ghjk"]');
SELECT * FROM t1,
JSON_TABLE(jd, '$[*]' COLUMNS (col18 DECIMAL(4,3) PATH '$'
DEFAULT "3.14159" ON ERROR)
) AS alias2;
jd col18
["asdf"] 0.000
["ghjk"] 0.000
Warnings:
Warning 1366 Incorrect decimal value: 'asdf' for column `*any*`.`json_table`.`col18` at row 1
Warning 1366 Incorrect decimal value: 'ghjk' for column `*any*`.`json_table`.`col18` at row 1
DROP TABLE t1;
#
# Bug#25540027: SIG 11 IN FIND_FIELD_IN_TABLE | SQL/SQL_BASE.CC
#
CREATE TABLE t1(c1 JSON);
UPDATE t1, JSON_TABLE(t1.c1,'$[*]' COLUMNS (a INT PATH '$.a')) AS jt1 SET jt1.a=1; ERROR HY000: The target table jt1 of the UPDATE is not updatable
DELETE JSON_TABLE(t1.c1,'$[*]' COLUMNS (a INT PATH '$.a')) AS jt1
FROM t1; ERROR42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(t1.c1,'$[*]' COLUMNS (a INT PATH '$.a')) AS jt1
FROM t1' at line 1
DELETE t1, JSON_TABLE(t1.c1,'$[*]' COLUMNS (a INT PATH '$.a')) AS jt1
USING t1; ERROR42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(t1.c1,'$[*]' COLUMNS (a INT PATH '$.a')) AS jt1
USING t1' at line 1
DROP TABLE t1;
#
# Bug#25547244: ASSERTION `!TABLE || (!TABLE->READ_SET || BITMAP_IS_SET(
#
CREATE TABLE t1(i INT);
INSERT INTO t1 VALUES(1);
DROP TABLE t1;
#
# Bug#25540675: ASSERTION `!COL->CHILD_JDS->PRODUCING_RECORDS' FAILED
#
CREATE TABLE j1(j JSON);
INSERT INTO j1 VALUES('[1,2,3]'),('[1,2,4]');
SELECT * FROM j1,
JSON_TABLE( JSON_OBJECT('key1', j) , '$.*' COLUMNS (NESTED PATH '$.*' COLUMNS (col11 FOR ORDINALITY))) AS alias2;
j col11
[1,2,3] NULL
[1,2,4] NULL
DROP TABLE j1;
#
# Bug#25584335: SIG 11 IN TABLE_LIST::FETCH_NUMBER_OF_ROWS
#
CREATE TABLE t1(i INT);
PREPARE stmt FROM "SELECT alias1.i AS field1 FROM (
t1 AS alias1,
(SELECT * FROM
JSON_TABLE('[1,2,3]' , '$[*]' COLUMNS (`col_varchar` FOR ORDINALITY)) AS SQ1_alias1
) AS alias2 )";
EXECUTE stmt;
field1
DEALLOCATE PREPARE stmt;
DROP TABLE t1;
#
# Bug#25604048: COLUMN NAMES WITH SAME 33-CHAR PREFIX ARE EQUAL
#
SELECT * FROM JSON_TABLE( '{"key1": "test"}' , '$' COLUMNS(
column_name_is_thirty_four_or_more VARCHAR(17) PATH '$.key1',
column_name_is_thirty_four_or_more_yes_indeed VARCHAR(17) PATH '$.key1'
) ) AS alias1;
column_name_is_thirty_four_or_more column_name_is_thirty_four_or_more_yes_indeed
test test
SELECT * FROM JSON_TABLE( '{"key1": "test"}' , '$' COLUMNS(
`column_name_is_thirty_four_or_more ` VARCHAR(17) PATH '$.key1'
) ) AS alias1;
column_name_is_thirty_four_or_more
test
#
# Bug#25604404: JSON_TABLE MORE RESTRICTIVE WITH IDENTIFIERS THAN
# CREATE TABLE
#
SELECT * FROM JSON_TABLE( '[1, 2]', '$' COLUMNS(
one INT PATH '$[0]', two INT PATH '$[1]'
)) AS jt;
one two 12
#
# Bug#25588450: SIG 6 IN JSON_WRAPPER::SEEK|SQL/JSON_DOM.CC
#
CREATE TABLE t1(c VARCHAR(10)) ENGINE=MEMORY;
INSERT INTO t1 VALUES('fiheife');
SELECT * FROM `t1` AS alias1, JSON_TABLE( `c` , '$[*]' COLUMNS (jtcol1 JSON
PATH '$.*')) AS alias2 WHERE jtcol1 <= 'kjfh'; ERROR HY000: Syntax error in JSON text in argument 1 to function 'JSON_TABLE' at position 1
DROP TABLE t1;
#
# Bug#25587754: ASSERTION `FIXED == 0 || BASIC_CONST_ITEM()' FAILED
#
PREPARE stmt FROM "SELECT * FROM JSON_TABLE( '[1,2]', '$[*]'
COLUMNS (jtcol1 JSON PATH '$.*')) AS alias2";
EXECUTE stmt;
jtcol1
NULL
NULL
DEALLOCATE PREPARE stmt;
#
# Bug#25584593: UNABLE TO USE JSON_TABLE() ON TEXT/BLOB JSON DATA
#
SELECT * FROM JSON_TABLE(NULL, '$.k' COLUMNS (id FOR ORDINALITY)) AS aLias;
id
SELECT * FROM JSON_TABLE(@myjson, '$.k' COLUMNS (id FOR ORDINALITY)) AS alias;
id SET @myjson = '{"k": 42}';
SELECT * FROM JSON_TABLE(@myjson, '$.k' COLUMNS (id FOR ORDINALITY)) AS alias;
id 1
CREATE TABLE t1(
txt TEXT, ty TINYTEXT, tm MEDIUMTEXT, tl LONGTEXT);
INSERT INTO t1 values ( '{"k": "text"}','{"k": "tinytext"}','{"k": "mediumtext"}','{"k": "longtext"}');
SELECT alias.* FROM t1, JSON_TABLE(t1.txt,'$.k' COLUMNS (id VARCHAR(10) PATH '$')) AS alias;
id
text
SELECT alias.* FROM t1, JSON_TABLE(t1.ty, '$.k' COLUMNS (id VARCHAR(10) PATH '$')) AS alias;
id
tinytext
SELECT alias.* FROM t1, JSON_TABLE(t1.tm, '$.k' COLUMNS (id VARCHAR(10) PATH '$')) AS alias;
id
mediumtext
SELECT alias.* FROM t1, JSON_TABLE(t1.tl, '$.k' COLUMNS (id VARCHAR(10) PATH '$')) AS alias;
id
longtext
SELECT alias.* FROM t1, JSON_TABLE(t1.txt,'$.k' COLUMNS (id TEXT PATH '$')) AS alias;
id
text
SELECT alias.* FROM t1, JSON_TABLE(t1.txt,'$.k' COLUMNS (id TINYTEXT PATH '$')) AS alias;
id
text
SELECT alias.* FROM t1, JSON_TABLE(t1.txt,'$.k' COLUMNS (id MEDIUMTEXT PATH '$')) AS alias;
id
text
SELECT alias.* FROM t1, JSON_TABLE(t1.txt,'$.k' COLUMNS (id LONGTEXT PATH '$')) AS alias;
id
text
SELECT alias.* FROM JSON_TABLE('"asd123"', '$' COLUMNS (blb BLOB PATH '$')) as alias;
blb
asd123
EXPLAIN SELECT alias.* FROM JSON_TABLE('"asd123"', '$' COLUMNS (blb BLOB PATH '$')) as alias;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE alias ALL NULL NULL NULL NULL 40 Table function: json_table
EXPLAIN SELECT alias.* FROM JSON_TABLE('"asd123"', '$' COLUMNS (blb TINYBLOB PATH '$')) as alias;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE alias ALL NULL NULL NULL NULL 40 Table function: json_table
EXPLAIN SELECT alias.* FROM JSON_TABLE('"asd123"', '$' COLUMNS (blb MEDIUMBLOB PATH '$')) as alias;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE alias ALL NULL NULL NULL NULL 40 Table function: json_table
EXPLAIN SELECT alias.* FROM JSON_TABLE('"asd123"', '$' COLUMNS (blb LONGBLOB PATH '$')) as alias;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE alias ALL NULL NULL NULL NULL 40 Table function: json_table
EXPLAIN SELECT alias.* FROM JSON_TABLE('"asd123"', '$' COLUMNS (blb TEXT PATH '$')) as alias;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE alias ALL NULL NULL NULL NULL 40 Table function: json_table
EXPLAIN SELECT alias.* FROM JSON_TABLE('"asd123"', '$' COLUMNS (blb TINYTEXT PATH '$')) as alias;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE alias ALL NULL NULL NULL NULL 40 Table function: json_table
EXPLAIN SELECT alias.* FROM JSON_TABLE('"asd123"', '$' COLUMNS (blb MEDIUMTEXT PATH '$')) as alias;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE alias ALL NULL NULL NULL NULL 40 Table function: json_table
EXPLAIN SELECT alias.* FROM JSON_TABLE('"asd123"', '$' COLUMNS (blb LONGTEXT PATH '$')) as alias;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE alias ALL NULL NULL NULL NULL 40 Table function: json_table
SELECT * FROM
(SELECT CAST(blb AS JSON) jf FROM
JSON_TABLE('"asd123"', '$' COLUMNS (blb BLOB PATH '$')) AS jti) AS dt,
JSON_TABLE(jf, '$' COLUMNS (blb BLOB PATH '$')) AS jto; ERROR42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'JSON) jf FROM
JSON_TABLE('"asd123"', '$' COLUMNS (blb BLOB PATH '$')) AS jti)...' at line 2
DROP TABLE t1;
#
# Bug#26500384: ASSERT FAILURE IN QUERY WITH WINDOW FUNCTION AND
# JSON_TABLE
#
CREATE TABLE t (x INT);
INSERT INTO t VALUES (1), (2), (3);
SELECT MAX(t.x) OVER () m, jt.* FROM t,
JSON_TABLE(JSON_ARRAY(m), '$[*]' COLUMNS (i INT PATH '$')) jt; ERROR42S22: Unknown column 'm' in 'JSON_TABLE'
DROP TABLE t;
#
# Bug#26583283: ASSERTION `!THD->IS_ERROR()' FAILED IN SQL_RESOLVER.CC
#
EXPLAIN SELECT * FROM JSON_TABLE('null', '$' COLUMNS(AA DECIMAL PATH '$')) tt;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE tt ALL NULL NULL NULL NULL 40 Table function: json_table
CREATE VIEW v1 AS SELECT * FROM
JSON_TABLE( 'null', '$' COLUMNS (c1 DECIMAL PATH '$' ) ) AS jt;
SELECT * FROM v1;
c1
NULL
EXPLAIN SELECT * FROM v1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE jt ALL NULL NULL NULL NULL 40 Table function: json_table
DROP VIEW v1;
#
# Bug#25822408: ASSERTION `!COL->CHILD_JDS->PRODUCING_RECORDS' FAILED
#
PREPARE stmt FROM "SELECT * FROM
JSON_TABLE('{\"a\":1}','$' COLUMNS (c1 CHAR(20) PATH '$.b'ERROR ON EMPTY)) jt";
EXECUTE stmt; ERROR HY000: Field 'c1' can't be set for JSON_TABLE 'jt'.
EXECUTE stmt; ERROR HY000: Field 'c1' can't be set for JSON_TABLE 'jt'.
#
# Bug#25594571: CRASH AT ITEM::CONST_ITEM|SQL/ITEM.H
#
CREATE TABLE t1 (i INT);
INSERT INTO t1 VALUES(1),(2),(3),(4),(5),(6),(7);
PREPARE stmt FROM "SELECT * FROM t1 AS alias1 LEFT JOIN t1 AS alias2
LEFT JOIN JSON_TABLE('[1,2,3]', '$[*]' COLUMNS (i FOR ORDINALITY )) AS
alias3 ON alias2 . `i` = alias3 . `i` ON alias1 . `i` = alias2 . `i`";
EXECUTE stmt;
i i i 111 222 333 44 NULL 55 NULL 66 NULL 77 NULL
EXECUTE stmt;
i i i 111 222 333 44 NULL 55 NULL 66 NULL 77 NULL
DROP TABLE t1;
#
# Bug#26648617: ASSERTION `IS_VIEW_OR_DERIVED() &&
# USES_MATERIALIZATION()' FAILED.
#
CREATE TABLE t1 (
col_varchar_key varchar(1) DEFAULT NULL
) ENGINE=InnoDB;
INSERT INTO t1 VALUES(1),(4);
SELECT * FROM t1 WHERE col_varchar_key NOT IN (
SELECT col_varchar_key FROM JSON_TABLE( '[{"col_key": 1},{"col_key": 2}]', "$[*]" COLUMNS
(col_varchar_key VARCHAR(10) PATH "$.col_key")) AS innr1);
col_varchar_key 4
EXPLAIN SELECT * FROM t1 WHERE col_varchar_key NOT IN (
SELECT col_varchar_key FROM JSON_TABLE( '[{"col_key": 1},{"col_key": 2}]', "$[*]" COLUMNS
(col_varchar_key VARCHAR(10) PATH "$.col_key")) AS innr1);
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where 2 DEPENDENT SUBQUERY innr1 ALL NULL NULL NULL NULL 40 Table function: json_table; Using where
SELECT * FROM t1 WHERE col_varchar_key IN (
SELECT col_varchar_key FROM JSON_TABLE( '[{"col_key": 1},{"col_key": 2}]', "$[*]" COLUMNS
(col_varchar_key VARCHAR(10) PATH "$.col_key")) AS innr1);
col_varchar_key 1
EXPLAIN SELECT * FROM t1 WHERE col_varchar_key IN (
SELECT col_varchar_key FROM JSON_TABLE( '[{"col_key": 1},{"col_key": 2}]', "$[*]" COLUMNS
(col_varchar_key VARCHAR(10) PATH "$.col_key")) AS innr1);
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 2 1 PRIMARY innr1 ALL NULL NULL NULL NULL 40 Table function: json_table; Using where; FirstMatch(t1); Using join buffer (flat, BNL join)
DROP TABLE t1;
#
# Bug#26711551: WL8867:CONDITIONAL JUMP IN JSON_TABLE_COLUMN::CLEANUP
#
CREATE TABLE t(x int, y int);
INSERT INTO t(x) VALUES (1);
UPDATE t t1, JSON_TABLE('[2]', '$[*]' COLUMNS (x INT PATH '$')) t2 SET t1.y = t2.x;
SELECT * FROM t;
x y 12
DROP TABLE t;
#
# Bug#26679671: SIG 11 IN JSON_BINARY::PARSE_BINARY()
#
CREATE TABLE t1(id INT, f1 JSON);
INSERT INTO t1 VALUES (1, '{\"1\": 1}'), (2, '{\"1\": 2}'), (3, '{\"1\": 3}'),
(4, '{\"1\": 4}'), (5, '{\"1\": 5}'), (6, '{\"1\": 6}');
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze Warning Engine-independent statistics are not collected for column 'f1'
test.t1 analyze status OK
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze Warning Engine-independent statistics are not collected for column 'f1'
test.t1 analyze status Table is already up to date
SELECT * FROM t1 as jj1,
(SELECT tt2.* FROM t1 as tt2,
JSON_TABLE(f1, "$" COLUMNS (id FOR ORDINALITY)) AS tbl) dt;
id f1 id f1 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 2 {"1": 2} 1 {"1": 1} 3 {"1": 3} 1 {"1": 1} 4 {"1": 4} 1 {"1": 1} 5 {"1": 5} 1 {"1": 1} 6 {"1": 6} 2 {"1": 2} 1 {"1": 1} 2 {"1": 2} 2 {"1": 2} 2 {"1": 2} 3 {"1": 3} 2 {"1": 2} 4 {"1": 4} 2 {"1": 2} 5 {"1": 5} 2 {"1": 2} 6 {"1": 6} 3 {"1": 3} 1 {"1": 1} 3 {"1": 3} 2 {"1": 2} 3 {"1": 3} 3 {"1": 3} 3 {"1": 3} 4 {"1": 4} 3 {"1": 3} 5 {"1": 5} 3 {"1": 3} 6 {"1": 6} 4 {"1": 4} 1 {"1": 1} 4 {"1": 4} 2 {"1": 2} 4 {"1": 4} 3 {"1": 3} 4 {"1": 4} 4 {"1": 4} 4 {"1": 4} 5 {"1": 5} 4 {"1": 4} 6 {"1": 6} 5 {"1": 5} 1 {"1": 1} 5 {"1": 5} 2 {"1": 2} 5 {"1": 5} 3 {"1": 3} 5 {"1": 5} 4 {"1": 4} 5 {"1": 5} 5 {"1": 5} 5 {"1": 5} 6 {"1": 6} 6 {"1": 6} 1 {"1": 1} 6 {"1": 6} 2 {"1": 2} 6 {"1": 6} 3 {"1": 3} 6 {"1": 6} 4 {"1": 4} 6 {"1": 6} 5 {"1": 5} 6 {"1": 6} 6 {"1": 6}
EXPLAIN SELECT * FROM t1 as jj1,
(SELECT tt2.* FROM t1 as tt2,
JSON_TABLE(f1, "$" COLUMNS (id FOR ORDINALITY)) AS tbl) dt;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE jj1 ALL NULL NULL NULL NULL 6 1 SIMPLE tt2 ALL NULL NULL NULL NULL 6 Using join buffer (flat, BNL join) 1 SIMPLE tbl ALL NULL NULL NULL NULL 40 Table function: json_table
SELECT * FROM t1 as jj1,
(SELECT tt2.* FROM t1 as tt2,
JSON_TABLE(f1, "$" COLUMNS (id FOR ORDINALITY)) AS tbl STRAIGHT_JOIN
t1 AS tt3) dt ORDER BY 1,3 LIMIT 10;
id f1 id f1 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 1 {"1": 1} 2 {"1": 2} 1 {"1": 1} 2 {"1": 2} 1 {"1": 1} 2 {"1": 2} 1 {"1": 1} 2 {"1": 2}
EXPLAIN SELECT * FROM t1 as jj1,
(SELECT tt2.* FROM t1 as tt2,
JSON_TABLE(f1, "$" COLUMNS (id FOR ORDINALITY)) AS tbl STRAIGHT_JOIN
t1 AS tt3) dt ORDER BY 1,3 LIMIT 11;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE jj1 ALL NULL NULL NULL NULL 6 Using temporary; Using filesort 1 SIMPLE tt2 ALL NULL NULL NULL NULL 6 Using join buffer (flat, BNL join) 1 SIMPLE tbl ALL NULL NULL NULL NULL 40 Table function: json_table 1 SIMPLE tt3 ALL NULL NULL NULL NULL 6 Using join buffer (flat, BNL join)
SELECT * FROM t1 WHERE id IN
(SELECT id FROM t1 as tt2,
JSON_TABLE(f1, "$" COLUMNS (jf FOR ORDINALITY)) AS tbl);
id f1 1 {"1": 1} 2 {"1": 2} 3 {"1": 3} 4 {"1": 4} 5 {"1": 5} 6 {"1": 6}
EXPLAIN SELECT * FROM t1 WHERE id IN
(SELECT id FROM t1 as tt2,
JSON_TABLE(f1, "$" COLUMNS (jf FOR ORDINALITY)) AS tbl);
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 6 1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 2 MATERIALIZED tt2 ALL NULL NULL NULL NULL 6 2 MATERIALIZED tbl ALL NULL NULL NULL NULL 40 Table function: json_table
DROP TABLE t1;
#
# Bug#26760811: WL#8867: MEMORY LEAK REPORTED BY ASAN AND VALGRIND
#
CREATE TABLE t (j JSON);
INSERT INTO t VALUES
('[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]'),
('[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]');
SELECT COUNT(*) FROM t, JSON_TABLE(j, '$[*]' COLUMNS (i INT PATH '$')) AS jt;
COUNT(*) 34
PREPARE ps FROM 'SELECT COUNT(*) FROM t, JSON_TABLE(j, ''$[*]'' COLUMNS (i INT PATH ''$'')) AS jt';
EXECUTE ps;
COUNT(*) 34
EXECUTE ps;
COUNT(*) 34
DROP PREPARE ps;
DROP TABLE t;
#
# Bug #26781759: NON-UNIQUE ALIAS ERRORNOT BEING THROWN
#
SELECT * FROM JSON_TABLE(NULL, '$' COLUMNS(j1 FOR ORDINALITY)) AS jalias,
JSON_TABLE(NULL, '$' COLUMNS(j1 FOR ORDINALITY)) AS jalias; ERROR42000: Not unique table/alias: 'jalias'
#
# Bug#27152428 JSON_TABLE + PREPARED STATEMENT + VIEW HAS PROBLEM IN DURING RESOLUTION
#
CREATE TABLE t1 (a INT, b INT);
CREATE VIEW v2 AS SELECT * FROM t1 LIMIT 2;
DROP TABLE t1;
DROP VIEW v2;
#
# Bug#27189940: CREATE VIEW FAILS ON JSON_TABLE() IN SCHEMA-LESS CONNECTIONS
# BUG#27217897: JSON_TABLE() FAILS IF NO DATABASE SELECTED
#
connect conn1,localhost,root,,*NO-ONE*;
connection conn1;
CREATE VIEW test.v AS SELECT * FROM JSON_TABLE('[1,2,3]', '$[*]' COLUMNS (num INT PATH '$[0]')) AS jt;
SELECT * FROM JSON_TABLE('[1,2,3]', '$[*]' COLUMNS (num INT PATH '$[0]')) AS jt;
num 1 2 3
connection default;
disconnect conn1;
use test;
SHOW CREATE VIEW test.v;
View Create View character_set_client collation_connection
v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select `jt`.`num` AS `num` from JSON_TABLE('[1,2,3]', '$[*]' COLUMNS (`num` int(11) PATH '$[0]')) `jt` latin1 latin1_swedish_ci
SELECT * FROM test.v;
num 1 2 3
DROP VIEW test.v;
#
# Bug#27729112 JSON_TABLE SHOULD DECODE BASE64-ENCODED STRINGS
#
SELECT v
FROM JSON_TABLE(JSON_OBJECT('foo', _binary'bar'), '$'
COLUMNS(v VARCHAR(255) PATH '$.foo')) tbl;
v
bar
#
# Bug#28254268: JSON_TABLE() FUNCTION REJECTS SELECT PERMISSIONS
#
CREATE DATABASE db2;
USE db2;
CREATE TABLE t1 (c JSON);
INSERT INTO t1 VALUES('[1,2,3]');
CREATE USER user1@localhost;
GRANT SELECT ON db2.t1 TO user1@localhost;
connect conn1,localhost,user1,,;
connection conn1;
USE db2;
SELECT t1.c FROM t1;
c
[1,2,3]
SELECT jt.* FROM t1, JSON_TABLE(t1.c, '$[*]' COLUMNS (num INT PATH '$[0]'))
AS jt;
num 1 2 3
disconnect conn1;
connection default;
DROP USER user1@localhost;
DROP DATABASE db2;
#
# Bug#27856835 JSON_TABLE RETURNS WRONG DATATYPE WHEN INT-VALUE IS GRATER
# THAN (2^31-1)
#
SELECT id FROM JSON_TABLE('[{"id":"9223372036854775807"}]', '$[*]' COLUMNS
(id BIGINT PATH '$.id')) AS json;
id 9223372036854775807
# As we currently have no way of telling if a JSON string value is
# signed or unsigned, this value will overflow.
SELECT id FROM JSON_TABLE('[{"id":"9223372036854775808"}]', '$[*]' COLUMNS
(id BIGINT PATH '$.id')) AS json;
id 9223372036854775807
Warnings:
Warning 1264 Out of range value for column 'id' at row 1
# Here the JSON value is a NUMERIC value, and we thus know if the value
# is signed or unsigned.
SELECT id FROM JSON_TABLE('[{"id":9223372036854775808}]', '$[*]' COLUMNS
(id BIGINT PATH '$.id')) AS json;
id 9223372036854775807
Warnings:
Warning 1264 Out of range value for column 'id' at row 1
# If we tell the JSON table column to be unsigned, we get to store the
# full value correctly.
SELECT id FROM JSON_TABLE('[{"id":"9223372036854775808"}]', '$[*]' COLUMNS
(id BIGINT UNSIGNED PATH '$.id')) AS json;
id 9223372036854775808
SELECT id FROM JSON_TABLE('[{"id":"2147483648"}]', '$[*]' COLUMNS
(id INT UNSIGNED PATH '$.id')) AS json;
id 2147483648
# Check that we preserve the signedness of the columns.
USE test;
CREATE TABLE t1 AS SELECT id, value FROM
JSON_TABLE('[{"id":9223372036854775808, "value":9223372036854775807}]', '$[*]' COLUMNS (id BIGINT UNSIGNED PATH '$.id',
value BIGINT PATH '$.value'))
AS json;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` bigint(20) unsigned DEFAULT NULL,
`value` bigint(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
#
# Bug#28255453: VIEW USING JSON_TABLE FAILS IF NO SCHEMA IS SELECTED
#
connect conn1,localhost,root,,*NO-ONE*;
CREATE VIEW test.v AS SELECT * FROM JSON_TABLE('[1,2,3]', '$[*]' COLUMNS (num INT PATH '$[0]')) AS jt;
SELECT * FROM test.v;
num 1 2 3
DROP VIEW test.v;
# Check that a user with access to the schema 'foo' can do a SELECT with
# a JSON_TABLE function.
CREATE SCHEMA foo;
CREATE USER foo@localhost;
GRANT EXECUTE ON foo.* TO foo@localhost;
connect con1,localhost,foo,,foo;
SELECT 1 FROM JSON_TABLE('[1,2,3]', '$[*]' COLUMNS (num INT PATH '$.a')) AS jt; 1 1 1 1
connection default;
disconnect con1;
DROP USER foo@localhost;
DROP SCHEMA foo;
#
# Bug#27923406ERROR1142 (42000) WHEN USING JSON_TABLE
#
CREATE SCHEMA my_schema;
CREATE USER foo@localhost;
GRANT EXECUTE ON my_schema.* TO foo@localhost;
connect con1,localhost,foo,,my_schema;
SELECT
*
FROM
JSON_TABLE( '[{"x":2,"y":"8"},{"x":"3","y":"7"},{"x":"4","y":6}]', "$[*]" COLUMNS(
xval VARCHAR(100) PATH "$.x",
yval VARCHAR(100) PATH "$.y"
)
) AS jt1;
xval yval 28 37 46
connection default;
disconnect con1;
DROP USER foo@localhost;
DROP SCHEMA my_schema;
#
# Bug#28538315: JSON_TABLE() COLUMN TYPES DON'T SUPPORT COLLATE CLAUSE
#
CREATE TABLE t1 SELECT *
FROM JSON_TABLE('"test"', '$' COLUMNS(x VARCHAR(10)
CHARSET utf8mb4
PATH '$')) AS jt1;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`x` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
#
# Bug#28643862 JSON_TABLE'S "COLUMNS" CLAUSE USES
# GLOBAL.CHARACTER_SET_RESULTS DEFAULT CHARSET
# SET @@SESSION.character_set_connection = ascii;
CREATE TABLE t1 SELECT a.col
FROM JSON_TABLE('"test"', '$' COLUMNS(col VARCHAR(10) PATH '$')) AS a;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col` varchar(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci SET @@SESSION.collation_connection = latin1_bin;
CREATE TABLE t2 SELECT a.col
FROM JSON_TABLE('"test"', '$' COLUMNS(col VARCHAR(10) PATH '$')) AS a;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`col` varchar(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1, t2; SET @@SESSION.character_set_connection = DEFAULT;
#
# Bug#28851656: JSON_TABLE RETURN"UNKNOWN DATABASE ''" FROM A FUNCTION
#
CREATE FUNCTION FN_COUNT_ROWS(X JSON)
RETURNS INT DETERMINISTIC RETURN (
SELECT COUNT(*) FROM JSON_TABLE( X, '$[*]' COLUMNS( I INT PATH '$')) der
);
SELECT FN_COUNT_ROWS('[1, 2]') CNT;
CNT 2
SELECT FN_COUNT_ROWS('[1, 2, 3]') CNT;
CNT 3
SELECT FN_COUNT_ROWS('[1, 2, 3, 4]') CNT;
CNT 4
DROP FUNCTION FN_COUNT_ROWS;
#
# Bug#30310265: VIEWS LOSE THE CHARACTER SET OF JSON_TABLE'S
# PATH ARGUMENTS
#
CREATE VIEW v1 AS
SELECT * FROM JSON_TABLE('{"å":{"å":1}}', '$.å' COLUMNS (x INT PATH '$.å')) t;
SELECT * FROM v1;
x SET NAMES latin1;
SELECT * FROM v1;
x SET NAMES latin1;
DROP VIEW v1;
CREATE VIEW v2 AS
SELECT * FROM JSON_TABLE('{}', '$' COLUMNS (
x VARCHAR(10) PATH '$.a' DEFAULT '"isn''t here"' ON EMPTY)
) t;
DROP VIEW v2;
#
# Bug#30382156: STORED PROCEDURE, JSON_TABLE AND"CONST" JOIN TYPE
#
CREATE TABLE t (id INT PRIMARY KEY, j JSON);
INSERT INTO t VALUES (1, '{"x":1}');
CREATE PROCEDURE p()
SELECT * FROM t, JSON_TABLE(j, '$' COLUMNS (x INT PATH '$.x')) jt
WHERE id = 1;
CALL p();
id j x 1 {"x":1} 1
CALL p();
id j x 1 {"x":1} 1
CALL p();
id j x 1 {"x":1} 1
DROP PROCEDURE p;
DROP TABLE t;
#
# WL#13512: Deprecate ON ERROR before ON EMPTY in JSON_TABLE syntax
#
SELECT * FROM
JSON_TABLE('{}', '$' COLUMNS (x VARCHAR(10) PATH '$.x'
DEFAULT '"a"' ON ERROR DEFAULT '"b"' ON EMPTY)) jt;
x "b"
SELECT * FROM
JSON_TABLE('{}', '$' COLUMNS (x VARCHAR(10) PATH '$.x'
NULL ON ERROR NULL ON EMPTY)) jt;
x
NULL
SELECT * FROM
JSON_TABLE('{"x":"c"}', '$' COLUMNS (x VARCHAR(10) PATH '$.x' ERROR ON ERRORERROR ON EMPTY)) jt;
x
c
#
# Bug#30628330: INSERT WITH JSON_TABLE FAILS DUE TO WARNING INVOKED
# WITH ON ERROR CLAUSE
#
CREATE TABLE t(id INT, a TINYINT, b VARCHAR(3), c DATE, d DECIMAL);
INSERT INTO t SELECT * FROM
JSON_TABLE(JSON_ARRAY(JSON_OBJECT('a', 1, 'b', 'abc'),
JSON_OBJECT('a', 2, 'b', 'abcd'),
JSON_OBJECT('a', 1000, 'b', 'xyz'),
JSON_OBJECT('c', TIME'12:00:00', 'd', 1e308)), '$[*]' COLUMNS (id FOR ORDINALITY,
a TINYINT PATH '$.a' DEFAULT '111' ON ERROR,
b VARCHAR(3) PATH '$.b' DEFAULT '"ERR"' ON ERROR,
c DATE PATH '$.c' DEFAULT '"2001-01-01"' ON ERROR,
d DECIMAL PATH '$.c' DEFAULT '999' ON ERROR)
) AS jt;
Warnings:
Warning 1265 Data truncated for column 'b' at row 2
Warning 1264 Out of range value for column 'a' at row 3
Warning 1265 Data truncated for column 'd' at row 4
SELECT * FROM t ORDER BY id;
id a b c d 11 abc NULL NULL 22 abc NULL NULL 3127 xyz NULL NULL 4 NULL NULL 2012-00-0012
DROP TABLE t;
#
# Bug#30263373: INCORRECT OUTPUT FROM TABLE_FUNCTION_JSON::PRINT()
#
CREATE VIEW v AS SELECT * FROM
JSON_TABLE('[123]', '$[*]' COLUMNS (`name with space 1` INT PATH '$',
`name with space 2` FOR ORDINALITY)) jt;
SELECT * FROM v;
name with space 1 name with space 2 1231
DROP VIEW v;
CREATE VIEW v AS SELECT HEX(x), HEX(y) FROM
JSON_TABLE('["abc"]', '$[*]' COLUMNS (x BINARY(10) PATH '$',
y VARBINARY(10) PATH '$')) jt;
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'test'AND TABLE_NAME = 'v';
VIEW_DEFINITION
select hex(`jt`.`x`) AS `HEX(x)`,hex(`jt`.`y`) AS `HEX(y)` from JSON_TABLE('["abc"]', '$[*]' COLUMNS (`x` binary(10) PATH '$', `y` varbinary(10) PATH '$')) `jt`
SELECT * FROM v;
HEX(x) HEX(y) 61626300000000000000616263
DROP VIEW v;
CREATE VIEW v AS SELECT * FROM
JSON_TABLE('[123]', '$[*]' COLUMNS(ti TINYINT PATH '$',
si SMALLINT PATH '$',
mi MEDIUMINT PATH '$',
i INT PATH '$',
bi BIGINT PATH '$',
tiu TINYINT UNSIGNED PATH '$',
siu SMALLINT UNSIGNED PATH '$',
miu MEDIUMINT UNSIGNED PATH '$',
iu INT UNSIGNED PATH '$',
biu BIGINT UNSIGNED PATH '$')) jt;
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'test'AND TABLE_NAME = 'v';
VIEW_DEFINITION
select `jt`.`ti` AS `ti`,`jt`.`si` AS `si`,`jt`.`mi` AS `mi`,`jt`.`i` AS `i`,`jt`.`bi` AS `bi`,`jt`.`tiu` AS `tiu`,`jt`.`siu` AS `siu`,`jt`.`miu` AS `miu`,`jt`.`iu` AS `iu`,`jt`.`biu` AS `biu` from JSON_TABLE('[123]', '$[*]' COLUMNS (`ti` tinyint(4) PATH '$', `si` smallint(6) PATH '$', `mi` mediumint(9) PATH '$', `i` int(11) PATH '$', `bi` bigint(20) PATH '$', `tiu` tinyint(3) unsigned PATH '$', `siu` smallint(5) unsigned PATH '$', `miu` mediumint(8) unsigned PATH '$', `iu` int(10) unsigned PATH '$', `biu` bigint(20) unsigned PATH '$')) `jt`
SELECT * FROM v;
ti si mi i bi tiu siu miu iu biu 123123123123123123123123123123
DROP VIEW v;
#
# Bug#31345503 JSON_TABLE SHOULD RETURN SQL NULL FOR JSON NULL
#
SELECT *
FROM
JSON_TABLE( '[
{"c1": null, "c2": [{"c": "c_val", "l": [1,2]}], "c3": null},
{"c1": true, "c2": [{"c": "c_val","l": [11]}, {"c": "c_val", "l": [false]}], "c3": true},
{"c1": false, "c2": [{"c": null,"l": [true]}, {"c": "c_val", "l": [null]}], "c3": false}
]', '$[*]' COLUMNS(
top_ord FOR ORDINALITY,
c1path VARCHAR(10) PATH '$.c1'ERROR ON ERROR,
NESTED PATH '$.c2[*]' COLUMNS (
c2path VARCHAR(10) PATH '$.c'ERROR ON ERROR,
ord FOR ORDINALITY,
NESTED PATH '$.l[*]' COLUMNS (lpath_c VARCHAR(10) PATH '$'ERROR ON ERROR,
lpath_i INT PATH '$'ERROR ON ERROR)
),
c3path INT PATH '$.c3'ERROR ON ERROR
)
) as jt;
top_ord c1path c2path ord lpath_c lpath_i c3path 1 NULL c_val 111 NULL 1 NULL c_val 122 NULL 2 true c_val 111111 2 true c_val 2 false 01 3 false NULL 1 true 10 3 false c_val 2 NULL NULL 0
#
# Bug #31327187 UBSAN: JSON_TABLE: NULL POINTER PASSED AS ARGUMENT 2,
# WHICH IS DECLARED TO NEVER BE NULL
#
SELECT HEX(a) FROM JSON_TABLE( '[{"E":{"e":true,"~":1,"S3":"sTa"},"r":3,"":6.7},"",6.5]', '$'
COLUMNS(a BINARY(5) PATH '$[1]' NULL ON EMPTY)
) e;
HEX(a) 0000000000
ALTER DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.