diff options
| author | imunkin <[email protected]> | 2024-11-08 10:00:23 +0300 |
|---|---|---|
| committer | imunkin <[email protected]> | 2024-11-08 10:12:13 +0300 |
| commit | a784a2f943d6e15caa6241e2e96d80aac6dbf375 (patch) | |
| tree | 05f1e5366c916b988a8afb75bdab8ddeee0f6e6d /yql/essentials/udfs/common/json2/test/cases | |
| parent | d70137a7b530ccaa52834274913bbb5a3d1ca06e (diff) | |
Move yql/udfs/common/ to /yql/essentials YQL-19206
Except the following directories:
* clickhouse/client
* datetime
* knn
* roaring
commit_hash:c7da95636144d28db109d6b17ddc762e9bacb59f
Diffstat (limited to 'yql/essentials/udfs/common/json2/test/cases')
10 files changed, 223 insertions, 0 deletions
diff --git a/yql/essentials/udfs/common/json2/test/cases/AsJsonNode.sql b/yql/essentials/udfs/common/json2/test/cases/AsJsonNode.sql new file mode 100644 index 00000000000..2d85d5576ce --- /dev/null +++ b/yql/essentials/udfs/common/json2/test/cases/AsJsonNode.sql @@ -0,0 +1,9 @@ +SELECT + Json2::Utf8AsJsonNode(CAST("string" as Utf8)), + Json2::Utf8AsJsonNode(NULL), + Json2::DoubleAsJsonNode(1.2345), + Json2::DoubleAsJsonNode(NULL), + Json2::BoolAsJsonNode(true), + Json2::BoolAsJsonNode(NULL), + Json2::JsonAsJsonNode(CAST(@@{"key": 28}@@ as Json)), + Json2::JsonAsJsonNode(NULL); diff --git a/yql/essentials/udfs/common/json2/test/cases/SerializeParse.sql b/yql/essentials/udfs/common/json2/test/cases/SerializeParse.sql new file mode 100644 index 00000000000..1d5eb42d0cf --- /dev/null +++ b/yql/essentials/udfs/common/json2/test/cases/SerializeParse.sql @@ -0,0 +1,15 @@ +$id = ($json) -> { RETURN Json2::Serialize(Json2::Parse($json)); }; + +SELECT + $id("[]"), + $id("{}"), + $id("[1, 3, 4, 5, 6]"), + $id(@@{"x": 1234}@@); + +$id_jd = ($json) -> { RETURN Json2::SerializeToJsonDocument(Json2::Parse($json)); }; + +SELECT + $id_jd("[]"), + $id_jd("{}"), + $id_jd("[1, 3, 4, 5, 6]"), + $id_jd(@@{"x": 1234}@@); diff --git a/yql/essentials/udfs/common/json2/test/cases/SqlExists.sql b/yql/essentials/udfs/common/json2/test/cases/SqlExists.sql new file mode 100644 index 00000000000..34f475fe5a8 --- /dev/null +++ b/yql/essentials/udfs/common/json2/test/cases/SqlExists.sql @@ -0,0 +1,25 @@ +/* syntax version 1 */ + +$path = Json2::CompilePath("strict $.x"); + +-- Key exists +SELECT + Json2::SqlExists(CAST(@@{"x": 123}@@ as Json), $path, AsDict(), false), + Json2::SqlExists(CAST(@@{"x": {"key": "value"}}@@ as Json), $path, AsDict(), false), + Json2::SqlExists(CAST(@@{"x": [1, 2, 3]}@@ as Json), $path, AsDict(), false), + Json2::SqlExists(CAST(@@{"x": null}@@ as Json), $path, AsDict(), false); + +-- Key is missing +SELECT + Json2::SqlExists(NULL, $path, AsDict(), false), + Json2::SqlExists(CAST(@@{"not_x": 123}@@ as Json), $path, AsDict(), false), + Json2::SqlExists(CAST("{}" as Json), $path, AsDict(), false), + Json2::SqlExists(CAST("[]" as Json), $path, AsDict(), false); + +-- Error handling +$json = CAST("[]" as Json); + +SELECT + Json2::SqlExists($json, $path, AsDict(), false), + Json2::SqlExists($json, $path, AsDict(), true), + Json2::SqlExists($json, $path, AsDict(), NULL);
\ No newline at end of file diff --git a/yql/essentials/udfs/common/json2/test/cases/SqlQuery.sql b/yql/essentials/udfs/common/json2/test/cases/SqlQuery.sql new file mode 100644 index 00000000000..38750aec512 --- /dev/null +++ b/yql/essentials/udfs/common/json2/test/cases/SqlQuery.sql @@ -0,0 +1,52 @@ +/* syntax version 1 */ + +$path = Json2::CompilePath("strict $.x"); +$array = CAST("[]" as Json); +$object = CAST("{}" as Json); + +-- Valid cases +$nested_object = CAST(@@{"x": {"y": 123}}@@ as Json); +$nested_array = CAST(@@{"x": [123, 456]}@@ as Json); +SELECT + Json2::SqlQuery($nested_object, $path, AsDict(), false, $array, false, $object), + Json2::SqlQuery($nested_array, $path, AsDict(), false, $array, false, $object); + +-- Null handling +SELECT + Json2::SqlQuery(NULL, $path, AsDict(), false, $array, false, $object); + +-- Errors +$jsonpath_error = CAST(@@{"y": []}@@ as Json); +SELECT + Json2::SqlQuery($jsonpath_error, $path, AsDict(), false, $array, false, NULL), + Json2::SqlQuery($jsonpath_error, $path, AsDict(), false, $array, false, $object), + Json2::SqlQuery($jsonpath_error, $path, AsDict(), false, $object, false, $array); + +$mismatch_error = CAST(@@{"x": 123}@@ as Json); +SELECT + Json2::SqlQuery($mismatch_error, $path, AsDict(), false, $array, false, NULL), + Json2::SqlQuery($mismatch_error, $path, AsDict(), false, $array, false, $object), + Json2::SqlQuery($mismatch_error, $path, AsDict(), false, $object, false, $array); + +-- Wrap +$nested_value = CAST(@@{"x": 123}@@ as Json); +SELECT + Json2::SqlQueryWrap($nested_value, $path, AsDict(), false, $object, false, $array), + Json2::SqlQueryConditionalWrap($nested_value, $path, AsDict(), false, $object, false, $array); + +SELECT + Json2::SqlQuery($nested_object, $path, AsDict(), false, $object, false, $array), + Json2::SqlQueryWrap($nested_object, $path, AsDict(), false, $object, false, $array), + Json2::SqlQueryConditionalWrap($nested_object, $path, AsDict(), false, $object, false, $array); + +SELECT + Json2::SqlQuery($nested_array, $path, AsDict(), false, $object, false, $array), + Json2::SqlQueryWrap($nested_array, $path, AsDict(), false, $object, false, $array), + Json2::SqlQueryConditionalWrap($nested_array, $path, AsDict(), false, $object, false, $array); + +-- Wrap empty result +$path_lax = Json2::CompilePath("lax $.x"); +SELECT + Json2::SqlQuery($object, $path_lax, AsDict(), false, $object, false, $object), + Json2::SqlQueryWrap($object, $path_lax, AsDict(), false, $object, false, $object), + Json2::SqlQueryConditionalWrap($object, $path_lax, AsDict(), false, $object, false, $object);
\ No newline at end of file diff --git a/yql/essentials/udfs/common/json2/test/cases/SqlQueryError.cfg b/yql/essentials/udfs/common/json2/test/cases/SqlQueryError.cfg new file mode 100644 index 00000000000..eb2e5315d1e --- /dev/null +++ b/yql/essentials/udfs/common/json2/test/cases/SqlQueryError.cfg @@ -0,0 +1 @@ +xfail
\ No newline at end of file diff --git a/yql/essentials/udfs/common/json2/test/cases/SqlQueryError.sql b/yql/essentials/udfs/common/json2/test/cases/SqlQueryError.sql new file mode 100644 index 00000000000..4aaa329fc06 --- /dev/null +++ b/yql/essentials/udfs/common/json2/test/cases/SqlQueryError.sql @@ -0,0 +1,7 @@ +/* syntax version 1 */ + +$path = Json2::CompilePath("strict $.x"); + +$jsonpath_error = CAST(@@{"y": []}@@ as Json); +SELECT + Json2::SqlQuery($jsonpath_error, $path, AsDict(), false, NULL, true, NULL);
\ No newline at end of file diff --git a/yql/essentials/udfs/common/json2/test/cases/SqlTryExists.sql b/yql/essentials/udfs/common/json2/test/cases/SqlTryExists.sql new file mode 100644 index 00000000000..f42bd5628db --- /dev/null +++ b/yql/essentials/udfs/common/json2/test/cases/SqlTryExists.sql @@ -0,0 +1,11 @@ +/* syntax version 1 */ + +$path = Json2::CompilePath("strict $.x"); + +-- Key exists +SELECT + Json2::SqlTryExists(NULL, $path, AsDict()), + Json2::SqlTryExists(CAST(@@{"x": 123}@@ as Json), $path, AsDict()), + Json2::SqlTryExists(CAST(@@{"x": {"key": "value"}}@@ as Json), $path, AsDict()), + Json2::SqlTryExists(CAST(@@{"x": [1, 2, 3]}@@ as Json), $path, AsDict()), + Json2::SqlTryExists(CAST(@@{"x": null}@@ as Json), $path, AsDict()); diff --git a/yql/essentials/udfs/common/json2/test/cases/SqlTryExistsError.cfg b/yql/essentials/udfs/common/json2/test/cases/SqlTryExistsError.cfg new file mode 100644 index 00000000000..eb2e5315d1e --- /dev/null +++ b/yql/essentials/udfs/common/json2/test/cases/SqlTryExistsError.cfg @@ -0,0 +1 @@ +xfail
\ No newline at end of file diff --git a/yql/essentials/udfs/common/json2/test/cases/SqlTryExistsError.sql b/yql/essentials/udfs/common/json2/test/cases/SqlTryExistsError.sql new file mode 100644 index 00000000000..3d0440b3cad --- /dev/null +++ b/yql/essentials/udfs/common/json2/test/cases/SqlTryExistsError.sql @@ -0,0 +1,7 @@ +/* syntax version 1 */ + +$path = Json2::CompilePath("strict $.x"); +$json = CAST("[]" as Json); + +SELECT + Json2::SqlTryExists($json, $path, AsDict());
\ No newline at end of file diff --git a/yql/essentials/udfs/common/json2/test/cases/SqlValue.sql b/yql/essentials/udfs/common/json2/test/cases/SqlValue.sql new file mode 100644 index 00000000000..8f86edee795 --- /dev/null +++ b/yql/essentials/udfs/common/json2/test/cases/SqlValue.sql @@ -0,0 +1,95 @@ +/* syntax version 1 */ + +-- Plain cases +$path = Json2::CompilePath("strict $.x"); +$empty_object = CAST("{}" as Json); +$empty_array = CAST("[]" as Json); +$null_key = CAST(@@{ + "x": null +}@@ as Json); + +$string_json = CAST(@@{ + "x": "some string value" +}@@ as Json); +SELECT + Json2::SqlValueUtf8($string_json, $path, AsDict()), + Json2::SqlValueUtf8($empty_object, $path, AsDict()), + Json2::SqlValueUtf8($empty_array, $path, AsDict()), + Json2::SqlValueUtf8($null_key, $path, AsDict()), + Json2::SqlValueUtf8(NULL, $path, AsDict()); + +$int64_json = CAST(@@{ + "x": 2856 +}@@ as Json); +SELECT + Json2::SqlValueInt64($int64_json, $path, AsDict()), + Json2::SqlValueInt64($empty_object, $path, AsDict()), + Json2::SqlValueInt64($empty_array, $path, AsDict()), + Json2::SqlValueInt64($null_key, $path, AsDict()), + Json2::SqlValueInt64(NULL, $path, AsDict()); + +$double_json = CAST(@@{ + "x": 2.71828 +}@@ as Json); +SELECT + Json2::SqlValueNumber($double_json, $path, AsDict()), + Json2::SqlValueNumber($empty_object, $path, AsDict()), + Json2::SqlValueNumber($empty_array, $path, AsDict()), + Json2::SqlValueNumber($null_key, $path, AsDict()), + Json2::SqlValueNumber(NULL, $path, AsDict()); + +$bool_json = CAST(@@{ + "x": true +}@@ as Json); +SELECT + Json2::SqlValueBool($bool_json, $path, AsDict()), + Json2::SqlValueBool($empty_object, $path, AsDict()), + Json2::SqlValueBool($empty_array, $path, AsDict()), + Json2::SqlValueBool($null_key, $path, AsDict()), + Json2::SqlValueBool(NULL, $path, AsDict()); + +-- Convert cases +SELECT + Json2::SqlValueConvertToUtf8($string_json, $path, AsDict()), + Json2::SqlValueConvertToUtf8($int64_json, $path, AsDict()), + Json2::SqlValueConvertToUtf8($double_json, $path, AsDict()), + Json2::SqlValueConvertToUtf8($bool_json, $path, AsDict()), + -- NOTE: Here SQL null must be returned, not "null" string + Json2::SqlValueConvertToUtf8($null_key, $path, AsDict()), + Json2::SqlValueConvertToUtf8(NULL, $path, AsDict()); + +-- Error cases +SELECT + Json2::SqlValueUtf8($int64_json, $path, AsDict()), + Json2::SqlValueUtf8($double_json, $path, AsDict()), + Json2::SqlValueUtf8($bool_json, $path, AsDict()); + +SELECT + Json2::SqlValueInt64($string_json, $path, AsDict()), + Json2::SqlValueInt64($double_json, $path, AsDict()), + Json2::SqlValueInt64($bool_json, $path, AsDict()); + +SELECT + Json2::SqlValueNumber($string_json, $path, AsDict()), + -- NOTE: Here int64 is automatically converted to double as it is possible without precision loss + Json2::SqlValueNumber($int64_json, $path, AsDict()), + Json2::SqlValueNumber($bool_json, $path, AsDict()); + +SELECT + Json2::SqlValueBool($string_json, $path, AsDict()), + Json2::SqlValueBool($int64_json, $path, AsDict()), + Json2::SqlValueBool($double_json, $path, AsDict()); + +$nested_object_json = CAST(@@{ + "x": { + "a": 1 + } +}@@ as Json); + +$nested_array_json = CAST(@@{ + "x": [29, 32, "some string"] +}@@ as Json); + +SELECT + Json2::SqlValueBool($nested_object_json, $path, AsDict()), + Json2::SqlValueBool($nested_array_json, $path, AsDict());
\ No newline at end of file |
