--source ../include/have_columnstore.inc --disable_warnings DROP DATABASE IF EXISTS json_extract_db; --enable_warnings CREATE DATABASE json_extract_db; USE json_extract_db; --echo # ---------------------------------------------------------------------- --echo # Test of JSON_EXTRACT function. --echo # ---------------------------------------------------------------------- --echo --echo # Single path expression --echo CREATE TABLE t1(j LONGTEXT, p LONGTEXT) ENGINE = COLUMNSTORE; SET @json = '[1, "val2", [3.1, -4]]'; INSERT INTO t1 VALUES (@json, '$[0]'); INSERT INTO t1 VALUES (@json, '$[1]'); INSERT INTO t1 VALUES (@json, '$[2]'); INSERT INTO t1 VALUES (@json, '$[3]'); INSERT INTO t1 VALUES (@json, '$[2][0]'); INSERT INTO t1 VALUES (@json, '$[2][1]'); INSERT INTO t1 VALUES (@json, '$[2][10]'); INSERT INTO t1 VALUES (@json, '$'); INSERT INTO t1 VALUES ('1', '$'); INSERT INTO t1 VALUES ('[10, 20, [30, 40], 1, 10]', '$[1]'); INSERT INTO t1 VALUES ('{"key1":"asd", "key2":[2,3]}', "$.key1"); INSERT INTO t1 VALUES ('{"key0":true, "key1":"qwe"}', "$.key1"); INSERT INTO t1 VALUES ('[10, 20, [30, 40]]', '$[2][*]'); INSERT INTO t1 VALUES ('[10, 20, [{"a":3}, 30, 40]]', '$[2][*]'); INSERT INTO t1 VALUES (json_object('foo', 'foobar'), '$'); SELECT j, p, JSON_EXTRACT(j, p) AS result FROM t1; --echo --echo # Multiple path expression --echo CREATE TABLE t2(j LONGTEXT, p1 LONGTEXT, p2 LONGTEXT) ENGINE = COLUMNSTORE; INSERT INTO t2 VALUES ('{"key1":"asd", "key2":[2,3]}', "$.keyX", "$.keyY"); INSERT INTO t2 VALUES ('{"key1":"asd", "key2":[2,3]}', "$.key1", "$.key2"); INSERT INTO t2 VALUES ('{"key1":5, "key2":[2,3]}', "$.key1", "$.key2"); INSERT INTO t2 VALUES ('[10, 20, [30, 40], 1, 10]', '$[1]', '$[25]'); INSERT INTO t2 VALUES ('[{"a": [3, 4]}, {"b": 2}]', '$[0].a', '$[1].a'); SELECT j, p1, p2, JSON_EXTRACT(j, p1, p2) AS result FROM t2; DROP TABLE t2; DROP TABLE t1; DROP DATABASE json_extract_db;