diff options
| author | atarasov5 <[email protected]> | 2025-07-25 16:32:38 +0300 |
|---|---|---|
| committer | atarasov5 <[email protected]> | 2025-07-25 16:46:58 +0300 |
| commit | 61fa5b71b806252aa81b83ae7a3f72f5d61497ac (patch) | |
| tree | 3134c86e8cc6becf00cfbf9e8bb208779b7e55bb /yql/essentials/udfs/common | |
| parent | 303501174f0a7f7d2091b3594023a8cffa1c331d (diff) | |
YQL-20231: Validate map keys for json serialization
commit_hash:307dbfb3413e806ce09a36736e79a5c7b80fd4ec
Diffstat (limited to 'yql/essentials/udfs/common')
6 files changed, 54 insertions, 0 deletions
diff --git a/yql/essentials/udfs/common/yson2/test/canondata/result.json b/yql/essentials/udfs/common/yson2/test/canondata/result.json index 32f8b40ce4d..efb3d3a0045 100644 --- a/yql/essentials/udfs/common/yson2/test/canondata/result.json +++ b/yql/essentials/udfs/common/yson2/test/canondata/result.json @@ -109,6 +109,11 @@ "uri": "file://test.test_ImplicitFromRes_/results.txt" } ], + "test.test[InvalidMapKey]": [ + { + "uri": "file://test.test_InvalidMapKey_/extracted" + } + ], "test.test[IsType]": [ { "uri": "file://test.test_IsType_/results.txt" @@ -139,6 +144,11 @@ "uri": "file://test.test_Lookup_/results.txt" } ], + "test.test[MapKeyEscape]": [ + { + "uri": "file://test.test_MapKeyEscape_/results.txt" + } + ], "test.test[NegativeArrayIndex]": [ { "uri": "file://test.test_NegativeArrayIndex_/results.txt" diff --git a/yql/essentials/udfs/common/yson2/test/canondata/test.test_InvalidMapKey_/extracted b/yql/essentials/udfs/common/yson2/test/canondata/test.test_InvalidMapKey_/extracted new file mode 100644 index 00000000000..b30b115217f --- /dev/null +++ b/yql/essentials/udfs/common/yson2/test/canondata/test.test_InvalidMapKey_/extracted @@ -0,0 +1,8 @@ +<tmp_path>/program.sql:<main>: Error: Execution + + <tmp_path>/program.sql:<main>:2:1: Error: Execution of node: Result + select ToBytes(Yson::SerializeJson(Yson::From({"\xff":1}))) + ^ + <tmp_path>/program.sql:<main>:2:22: Error: JSON writer: invalid UTF-8 + select ToBytes(Yson::SerializeJson(Yson::From({"\xff":1}))) + ^
\ No newline at end of file diff --git a/yql/essentials/udfs/common/yson2/test/canondata/test.test_MapKeyEscape_/results.txt b/yql/essentials/udfs/common/yson2/test/canondata/test.test_MapKeyEscape_/results.txt new file mode 100644 index 00000000000..3cdc772441e --- /dev/null +++ b/yql/essentials/udfs/common/yson2/test/canondata/test.test_MapKeyEscape_/results.txt @@ -0,0 +1,33 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\":\\\"\":1}" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/yql/essentials/udfs/common/yson2/test/cases/InvalidMapKey.cfg b/yql/essentials/udfs/common/yson2/test/cases/InvalidMapKey.cfg new file mode 100644 index 00000000000..5dae597903c --- /dev/null +++ b/yql/essentials/udfs/common/yson2/test/cases/InvalidMapKey.cfg @@ -0,0 +1 @@ +xfail diff --git a/yql/essentials/udfs/common/yson2/test/cases/InvalidMapKey.sql b/yql/essentials/udfs/common/yson2/test/cases/InvalidMapKey.sql new file mode 100644 index 00000000000..e662a410ea7 --- /dev/null +++ b/yql/essentials/udfs/common/yson2/test/cases/InvalidMapKey.sql @@ -0,0 +1 @@ +select ToBytes(Yson::SerializeJson(Yson::From({"\xff":1}))) diff --git a/yql/essentials/udfs/common/yson2/test/cases/MapKeyEscape.sql b/yql/essentials/udfs/common/yson2/test/cases/MapKeyEscape.sql new file mode 100644 index 00000000000..1d4e0447c78 --- /dev/null +++ b/yql/essentials/udfs/common/yson2/test/cases/MapKeyEscape.sql @@ -0,0 +1 @@ +select ToBytes(Yson::SerializeJson(Yson::From({":\"":1}))) |
