--source ../include/have_columnstore.inc --disable_warnings DROP DATABASE IF EXISTS json_object_db; --enable_warnings CREATE DATABASE json_object_db; USE json_object_db; --echo # ---------------------------------------------------------------------- --echo # Test of JSON_OBJECT function. --echo # ---------------------------------------------------------------------- CREATE TABLE t1(l TEXT) ENGINE = COLUMNSTORE; INSERT INTO t1 VALUES('a'); --error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT SELECT json_object(l) FROM t1; --error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT SELECT json_object(l, 1, 'b') FROM t1; --echo # Null arg TRUNCATE t1; INSERT INTO t1 values(null); SELECT JSON_OBJECT(l, 1) FROM t1; SELECT JSON_OBJECT(1, l) FROM t1; --echo # Valid arg TRUNCATE t1; INSERT INTO t1 values('a'); SELECT JSON_OBJECT(l, null) FROM t1; SELECT JSON_OBJECT(l, 1) FROM t1; SELECT JSON_OBJECT(l, 1, 'b', 'foo') FROM t1; SELECT JSON_OBJECT(l, 1, 'b', 'foo','c','{ "d": "e" }') FROM t1; SELECT JSON_OBJECT(l, true, 'b', false, 'c', null ) FROM t1; SELECT JSON_OBJECT(l, 'true', 'b', 'false', 'c', null ) FROM t1; SELECT JSON_VALID(json_object(l, 1 )) from t1; --echo # Long key TRUNCATE t1; INSERT INTO t1 values('a'); --echo # SELECT JSON_OBJECT(REPEAT(l, 64 * 1024), 1) FROM t1; --echo # Non-string keys are cast to CHAR TRUNCATE t1; INSERT INTO t1 values('a'); SELECT JSON_OBJECT(1, l) FROM t1; SELECT JSON_OBJECT(CAST(1 AS CHAR), l) FROM t1; SELECT JSON_OBJECT(true, l) FROM t1; SELECT JSON_OBJECT(CAST(true AS CHAR), l) FROM t1; SELECT JSON_OBJECT(false, l) FROM t1; SELECT JSON_OBJECT(CAST(false AS CHAR), l) FROM t1; DROP TABLE t1; DROP DATABASE json_object_db;