diff options
Diffstat (limited to 'mysql-test/main/json_equals.test')
-rw-r--r-- | mysql-test/main/json_equals.test | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/mysql-test/main/json_equals.test b/mysql-test/main/json_equals.test new file mode 100644 index 00000000..943906e6 --- /dev/null +++ b/mysql-test/main/json_equals.test @@ -0,0 +1,72 @@ + +select json_equals("{}", "{}"); + +select json_equals("{}", "[]"); + +select json_equals("{}", NULL); + +select json_equals("", ""); + +select json_equals("", 1); + +select json_equals(now(), now()); + +select json_equals('{"a":[1, 2, 3]}', '{"a":[1, 2, 3, 4]}'); + +select json_equals('{"a":[1, 2, 3]}', '{"a":[1, 2, 3]}'); + +#enable after fix MDEV-27871 +--disable_view_protocol +select json_equals('{"țanțoș":[1, 2, "ț", {"some uâ߀":"uâßr"}]}', + '{"țanțoș":[1, 2, "ț", {"some uâ߀":"uâßr"}]}'); + +select json_equals('{"a" : [0.123456789123456789], "b" : [1, 2, 3]}', + '{"b" : [1, 2, 3], "a" : [0.123456789123456789]}'); +--enable_view_protocol + +--echo # +--echo # Test max json depth for json_equals. +--echo # +with recursive rec_json (step, obj) as ( + select 1, cast('{"key":"value"}' as varchar(1000)) + union + select r.step + 1, JSON_INSERT('{}', '$.obj', JSON_QUERY(r.obj, '$')) + from rec_json r + where r.step < 10 +) +select step, obj, json_equals(obj, obj) from rec_json; + +--echo # +--echo # 31 levels of nesting. +--echo # +select json_equals('{"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"key": "value"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}', +'{"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"key": "value"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}') as 31_levels; + +--echo # +--echo # 32 Levels of nesting. This should hit max json depth. +--echo # +select json_equals('{"obj":{"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"key": "value"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}', +'{"obj":{"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"obj": {"key": "value"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}') as 32_levels; + + +--echo # +--echo # test values from different charset +--echo # (UTF-8 two-bytes vs. latin1 single high-byte) +--echo # +create table t1 (a varchar(200) character set latin1); +create table t2 (a varchar(200) character set utf8); +insert into t1 values (UNHEX('22CA22')); +set names utf8; +insert into t2 values (UNHEX('22C38A22')); + +select a from t1; +select hex(a) from t1; +select a from t2; +select hex(a) from t2; + +select t1.a, t2.a, t1.a = t2.a, + json_valid(t1.a), json_valid(t2.a), json_equals(t1.a, t2.a) +from t1, t2; + +drop table t1; +drop table t2; |