summaryrefslogtreecommitdiffstats
path: root/yql/essentials/udfs/common
diff options
context:
space:
mode:
authoratarasov5 <[email protected]>2025-07-25 16:32:38 +0300
committeratarasov5 <[email protected]>2025-07-25 16:46:58 +0300
commit61fa5b71b806252aa81b83ae7a3f72f5d61497ac (patch)
tree3134c86e8cc6becf00cfbf9e8bb208779b7e55bb /yql/essentials/udfs/common
parent303501174f0a7f7d2091b3594023a8cffa1c331d (diff)
YQL-20231: Validate map keys for json serialization
commit_hash:307dbfb3413e806ce09a36736e79a5c7b80fd4ec
Diffstat (limited to 'yql/essentials/udfs/common')
-rw-r--r--yql/essentials/udfs/common/yson2/test/canondata/result.json10
-rw-r--r--yql/essentials/udfs/common/yson2/test/canondata/test.test_InvalidMapKey_/extracted8
-rw-r--r--yql/essentials/udfs/common/yson2/test/canondata/test.test_MapKeyEscape_/results.txt33
-rw-r--r--yql/essentials/udfs/common/yson2/test/cases/InvalidMapKey.cfg1
-rw-r--r--yql/essentials/udfs/common/yson2/test/cases/InvalidMapKey.sql1
-rw-r--r--yql/essentials/udfs/common/yson2/test/cases/MapKeyEscape.sql1
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})))