diff options
author | vvvv <vvvv@ydb.tech> | 2023-09-01 20:50:25 +0300 |
---|---|---|
committer | vvvv <vvvv@ydb.tech> | 2023-09-01 21:05:22 +0300 |
commit | 9328299988a7a924459808b2ec896db5939038af (patch) | |
tree | 4cca87264bf4460ef7880693dcffe5503836b34d | |
parent | 3e1bd942be74d55745b29634b9555abd8c1441e6 (diff) | |
download | ydb-9328299988a7a924459808b2ec896db5939038af.tar.gz |
Moved tests for most of OSS udfs
476 files changed, 40776 insertions, 0 deletions
diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/result.json b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/result.json new file mode 100644 index 0000000000..3e535d26fa --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/result.json @@ -0,0 +1,37 @@ +{ + "test.test[ParseFromYdb]": [ + { + "uri": "file://test.test_ParseFromYdb_/results.txt" + } + ], + "test.test[SerializeCSVWithNames]": [ + { + "uri": "file://test.test_SerializeCSVWithNames_/results.txt" + } + ], + "test.test[SerializeJSONEachRow]": [ + { + "uri": "file://test.test_SerializeJSONEachRow_/results.txt" + } + ], + "test.test[SerializeParquetPartitioned]": [ + { + "uri": "file://test.test_SerializeParquetPartitioned_/results.txt" + } + ], + "test.test[SerializeParquet]": [ + { + "uri": "file://test.test_SerializeParquet_/results.txt" + } + ], + "test.test[SerializeTSVWithNames]": [ + { + "uri": "file://test.test_SerializeTSVWithNames_/results.txt" + } + ], + "test.test[YqlType]": [ + { + "uri": "file://test.test_YqlType_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_ParseFromYdb_/results.txt b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_ParseFromYdb_/results.txt new file mode 100644 index 0000000000..deb2ea4846 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_ParseFromYdb_/results.txt @@ -0,0 +1,142 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "release_date"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "series_id"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "series_info"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "title"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "13182" + ]; + [ + "1" + ]; + [ + "The IT Crowd is a British sitcom produced by Channel 4, written by Graham Linehan, produced by Ash Atalla and starring Chris O'Dowd, Richard Ayoade, Katherine Parkinson, and Matt Berry." + ]; + [ + "IT Crowd" + ] + ]; + [ + [ + "16166" + ]; + [ + "2" + ]; + [ + "Silicon Valley is an American comedy television series created by Mike Judge, John Altschuler and Dave Krinsky. The series focuses on five young men who founded a startup company in Silicon Valley." + ]; + [ + "Silicon Valley" + ] + ]; + [ + [ + "13182" + ]; + [ + "1" + ]; + [ + "The IT Crowd is a British sitcom produced by Channel 4, written by Graham Linehan, produced by Ash Atalla and starring Chris O'Dowd, Richard Ayoade, Katherine Parkinson, and Matt Berry." + ]; + [ + "IT Crowd" + ] + ]; + [ + [ + "16166" + ]; + [ + "2" + ]; + [ + "Silicon Valley is an American comedy television series created by Mike Judge, John Altschuler and Dave Krinsky. The series focuses on five young men who founded a startup company in Silicon Valley." + ]; + [ + "Silicon Valley" + ] + ]; + [ + [ + "13182" + ]; + [ + "1" + ]; + [ + "The IT Crowd is a British sitcom produced by Channel 4, written by Graham Linehan, produced by Ash Atalla and starring Chris O'Dowd, Richard Ayoade, Katherine Parkinson, and Matt Berry." + ]; + [ + "IT Crowd" + ] + ]; + [ + [ + "16166" + ]; + [ + "2" + ]; + [ + "Silicon Valley is an American comedy television series created by Mike Judge, John Altschuler and Dave Krinsky. The series focuses on five young men who founded a startup company in Silicon Valley." + ]; + [ + "Silicon Valley" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeCSVWithNames_/results.txt b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeCSVWithNames_/results.txt new file mode 100644 index 0000000000..3058fe33cd --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeCSVWithNames_/results.txt @@ -0,0 +1,107 @@ +[ + { + "Label" = "Simple"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "\"boolean\",\"number\",\"signed\",\"unsigned\",\"utf\"\n1,0,100,23,\"aaa\"\n\\N,3.14159,-5,\\N,\"ddd\"\n1,2.5,\\N,75,\"abc\"\n\\N,-23.3,-666,150,\"aaa\"\n1,333.3,777,150,\"iii\"\n0,-6.6,-13,150,\"zzz\"\n0,-17,15,200,\"qqq\"\n\\N,1,-200,\\N,\"bbb\"\n\\N,2,\\N,761,\"ccc\"\n0,-5.555,-9,911,\"kkk\"\n" + ] + ]; + [ + # + ] + ] + } + ] + }; + { + "Label" = "Tuples"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "\"many\"\n23,100,\"aaa\",0,1\n\\N,-5,\"ddd\",3.14159,\\N\n75,\\N,\"abc\",2.5,1\n150,-666,\"aaa\",-23.3,\\N\n150,777,\"iii\",333.3,1\n150,-13,\"zzz\",-6.6,0\n200,15,\"qqq\",-17,0\n\\N,-200,\"bbb\",1,\\N\n761,\\N,\"ccc\",2,\\N\n911,-9,\"kkk\",-5.555,0\n" + ] + ]; + [ + # + ] + ] + } + ] + }; + { + "Label" = "Lists"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "\"boolean\",\"number\",\"signed\",\"unsigned\",\"utf\"\n\"[1,1,1,0,0,0]\",\"[0,3.14159,2.5,-23.3,333.3,-6.6,-17,1,2,-5.555]\",\"[100,-5,-666,777,-13,15,-200,-9]\",\"[23,75,150,150,150,200,761,911]\",\"['aaa','ddd','abc','aaa','iii','zzz','qqq','bbb','ccc','kkk']\"\n" + ] + ]; + [ + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeJSONEachRow_/results.txt b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeJSONEachRow_/results.txt new file mode 100644 index 0000000000..71d1b62f4f --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeJSONEachRow_/results.txt @@ -0,0 +1,107 @@ +[ + { + "Label" = "Simple"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"boolean\":1,\"number\":0,\"signed\":100,\"unsigned\":23,\"utf\":\"aaa\"}\n{\"boolean\":null,\"number\":3.14159,\"signed\":-5,\"unsigned\":null,\"utf\":\"ddd\"}\n{\"boolean\":1,\"number\":2.5,\"signed\":null,\"unsigned\":75,\"utf\":\"abc\"}\n{\"boolean\":null,\"number\":-23.3,\"signed\":-666,\"unsigned\":150,\"utf\":\"aaa\"}\n{\"boolean\":1,\"number\":333.3,\"signed\":777,\"unsigned\":150,\"utf\":\"iii\"}\n{\"boolean\":0,\"number\":-6.6,\"signed\":-13,\"unsigned\":150,\"utf\":\"zzz\"}\n{\"boolean\":0,\"number\":-17,\"signed\":15,\"unsigned\":200,\"utf\":\"qqq\"}\n{\"boolean\":null,\"number\":1,\"signed\":-200,\"unsigned\":null,\"utf\":\"bbb\"}\n{\"boolean\":null,\"number\":2,\"signed\":null,\"unsigned\":761,\"utf\":\"ccc\"}\n{\"boolean\":0,\"number\":-5.555,\"signed\":-9,\"unsigned\":911,\"utf\":\"kkk\"}\n" + ] + ]; + [ + # + ] + ] + } + ] + }; + { + "Label" = "Tuples"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"many\":[23,100,\"aaa\",0,1]}\n{\"many\":[null,-5,\"ddd\",3.14159,null]}\n{\"many\":[75,null,\"abc\",2.5,1]}\n{\"many\":[150,-666,\"aaa\",-23.3,null]}\n{\"many\":[150,777,\"iii\",333.3,1]}\n{\"many\":[150,-13,\"zzz\",-6.6,0]}\n{\"many\":[200,15,\"qqq\",-17,0]}\n{\"many\":[null,-200,\"bbb\",1,null]}\n{\"many\":[761,null,\"ccc\",2,null]}\n{\"many\":[911,-9,\"kkk\",-5.555,0]}\n" + ] + ]; + [ + # + ] + ] + } + ] + }; + { + "Label" = "Lists"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"boolean\":[1,1,1,0,0,0],\"number\":[0,3.14159,2.5,-23.3,333.3,-6.6,-17,1,2,-5.555],\"signed\":[100,-5,-666,777,-13,15,-200,-9],\"unsigned\":[23,75,150,150,150,200,761,911],\"utf\":[\"aaa\",\"ddd\",\"abc\",\"aaa\",\"iii\",\"zzz\",\"qqq\",\"bbb\",\"ccc\",\"kkk\"]}\n" + ] + ]; + [ + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeParquetPartitioned_/results.txt b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeParquetPartitioned_/results.txt new file mode 100644 index 0000000000..710e4225d1 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeParquetPartitioned_/results.txt @@ -0,0 +1,356 @@ +[ + { + "Label" = "Simple"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "aaa"; + [ + [ + "UEFSMRUEFQgVDEwVAhUEEgAABAwBAAAAFQAVEhUWLBUEFQQVBhUGHDYCKAQBAAAAGAQBAAAAAAAACSACAAAAAwEBAgAmiAEcFQIZNQQABhkYB2Jvb2xlYW4VAhYEFngWgAEmMCYIHDYCKAQBAAAAGAQBAAAAABksFQQVBBUCABUAFQQVAgAAABUEFSAVJEwVBBUEEgAAEDwAAAAAAAAAAM3MzMzMTDfAFQAVBhUKLBUEFQQVBhUGHBgIAAAAAAAAAAAYCM3MzMzMTDfAFgAoCAAAAAAAAAAAGAjNzMzMzEw3wAAAAAMIAQMCJtQDHBUKGTUEAAYZGAZudW1iZXIVAhYEFrwBFsQBJtACJpACHBgIAAAAAAAAAAAYCM3MzMzMTDfAFgAoCAAAAAAAAAAAGAjNzMzMzEw3wAAZLBUEFQQVAgAVABUEFQIAAAAVBBUQFRRMFQQVBBIAAAgcZAAAAGb9//8VABUSFRYsFQQVBBUGFQYcGARkAAAAGARm/f//FgAoBGQAAAAYBGb9//8AAAAJIAIAAAAEAQEDAia4BhwVAhk1BAAGGRgGc2lnbmVkFQIWBBaYARagASbIBSaYBRwYBGQAAAAYBGb9//8WACgEZAAAABgEZv3//wAZLBUEFQQVAgAVABUEFQIAAAAVBBUgFSRMFQQVBBIAABA8FwAAAAAAAACWAAAAAAAAABUAFRIVFiwVBBUEFQYVBhwYCJYAAAAAAAAAGAgXAAAAAAAAABYAKAiWAAAAAAAAABgIFwAAAAAAAAAAAAAJIAIAAAAEAQEDAiasCRwVBBk1BAAGGRgIdW5zaWduZWQVAhYEFsgBFtABJpwIJtwHHBgIlgAAAAAAAAAYCBcAAAAAAAAAFgAoCJYAAAAAAAAAGAgXAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAVAhlcNQAYBnNjaGVtYRUIABUCJQIYB2Jvb2xlYW4lFkysEwgSAAAAFQolABgGbnVtYmVyABUCJQIYBnNpZ25lZAAVBCUCGAh1bnNpZ25lZAAWBBkcGUwmiAEcFQIZNQQABhkYB2Jvb2xlYW4VAhYEFngWgAEmMCYIHDYCKAQBAAAAGAQBAAAAABksFQQVBBUCABUAFQQVAgAAACbUAxwVChk1BAAGGRgGbnVtYmVyFQIWBBa8ARbEASbQAiaQAhwYCAAAAAAAAAAAGAjNzMzMzEw3wBYAKAgAAAAAAAAAABgIzczMzMxMN8AAGSwVBBUEFQIAFQAVBBUCAAAAJrgGHBUCGTUEAAYZGAZzaWduZWQVAhYEFpgBFqABJsgFJpgFHBgEZAAAABgEZv3//xYAKARkAAAAGARm/f//ABksFQQVBBUCABUAFQQVAgAAACasCRwVBBk1BAAGGRgIdW5zaWduZWQVAhYEFsgBFtABJpwIJtwHHBgIlgAAAAAAAAAYCBcAAAAAAAAAFgAoCJYAAAAAAAAAGAgXAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAWlAUWBCaIARa0BRQAACgfcGFycXVldC1jcHAtYXJyb3cgdmVyc2lvbiA1LjAuMBlMHAAAHAAAHAAAHAAAAPEBAABQQVIx" + ] + ] + ]; + [ + "aaa"; + # + ]; + [ + "bbb"; + [ + [ + "UEFSMRUEFQAVAkwVABUEEgAAABUAFQ4VEiwVAhUEFQYVBhw2AgAAAAcYAgAAAAIAACZiHBUCGTUEAAYZGAdib29sZWFuFQIWAhZUFlomJiYIHDYCABksFQQVBBUCABUAFQQVAgAAABUEFRAVFEwVAhUEEgAACBwAAAAAAADwPxUAFQYVCiwVAhUEFQYVBhwYCAAAAAAAAPA/GAgAAAAAAADwPxYAKAgAAAAAAADwPxgIAAAAAAAA8D8AAAADCAECACaCAxwVChk1BAAGGRgGbnVtYmVyFQIWAhasARa0ASb+ASbOARwYCAAAAAAAAPA/GAgAAAAAAADwPxYAKAgAAAAAAADwPxgIAAAAAAAA8D8AGSwVBBUEFQIAFQAVBBUCAAAAFQQVCBUMTBUCFQQSAAAEDDj///8VABUSFRYsFQIVBBUGFQYcGAQ4////GAQ4////FgAoBDj///8YBDj///8AAAAJIAIAAAACAQECACbeBRwVAhk1BAAGGRgGc2lnbmVkFQIWAhaQARaYASbuBCbGBBwYBDj///8YBDj///8WACgEOP///xgEOP///wAZLBUEFQQVAgAVABUEFQIAAAAVBBUAFQJMFQAVBBIAAAAVABUOFRIsFQIVBBUGFQYcNgIAAAAHGAIAAAACAAAm3AccFQQZNQQABhkYCHVuc2lnbmVkFQIWAhZUFlomoAcmggccNgIAGSwVBBUEFQIAFQAVBBUCAAAAFQIZXDUAGAZzY2hlbWEVCAAVAiUCGAdib29sZWFuJRZMrBMIEgAAABUKJQAYBm51bWJlcgAVAiUCGAZzaWduZWQAFQQlAhgIdW5zaWduZWQAFgIZHBlMJmIcFQIZNQQABhkYB2Jvb2xlYW4VAhYCFlQWWiYmJggcNgIAGSwVBBUEFQIAFQAVBBUCAAAAJoIDHBUKGTUEAAYZGAZudW1iZXIVAhYCFqwBFrQBJv4BJs4BHBgIAAAAAAAA8D8YCAAAAAAAAPA/FgAoCAAAAAAAAPA/GAgAAAAAAADwPwAZLBUEFQQVAgAVABUEFQIAAAAm3gUcFQIZNQQABhkYBnNpZ25lZBUCFgIWkAEWmAEm7gQmxgQcGAQ4////GAQ4////FgAoBDj///8YBDj///8AGSwVBBUEFQIAFQAVBBUCAAAAJtwHHBUEGTUEAAYZGAh1bnNpZ25lZBUCFgIWVBZaJqAHJoIHHDYCABksFQQVBBUCABUAFQQVAgAAABbkAxYCJmIWgAQUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAAC4AQAAUEFSMQ==" + ] + ] + ]; + [ + "bbb"; + # + ]; + [ + "ccc"; + [ + [ + "UEFSMRUEFQgVDEwVAhUEEgAABAwBAAAAFQAVEhUWLBUEFQQVBhUGHDYCKAQBAAAAGAQBAAAAAAAACSACAAAAAwEBAgAmiAEcFQIZNQQABhkYB2Jvb2xlYW4VAhYEFngWgAEmMCYIHDYCKAQBAAAAGAQBAAAAABksFQQVBBUCABUAFQQVAgAAABUEFSAVJEwVBBUEEgAAEDwAAAAAAAAEQAAAAAAAAABAFQAVBhUKLBUEFQQVBhUGHBgIAAAAAAAABEAYCAAAAAAAAABAFgAoCAAAAAAAAARAGAgAAAAAAAAAQAAAAAMIAQMCJtQDHBUKGTUEAAYZGAZudW1iZXIVAhYEFrwBFsQBJtACJpACHBgIAAAAAAAABEAYCAAAAAAAAABAFgAoCAAAAAAAAARAGAgAAAAAAAAAQAAZLBUEFQQVAgAVABUEFQIAAAAVBBUAFQJMFQAVBBIAAAAVABUOFRIsFQQVBBUGFQYcNgQAAAAHGAIAAAAEAAAm8gUcFQIZNQQABhkYBnNpZ25lZBUCFgQWVBZaJrYFJpgFHDYEABksFQQVBBUCABUAFQQVAgAAABUEFSAVJEwVBBUEEgAAEDxLAAAAAAAAAPkCAAAAAAAAFQAVEhUWLBUEFQQVBhUGHBgI+QIAAAAAAAAYCEsAAAAAAAAAFgAoCPkCAAAAAAAAGAhLAAAAAAAAAAAAAAkgAgAAAAQBAQMCJrIIHBUEGTUEAAYZGAh1bnNpZ25lZBUCFgQWyAEW0AEmogcm4gYcGAj5AgAAAAAAABgISwAAAAAAAAAWACgI+QIAAAAAAAAYCEsAAAAAAAAAABksFQQVBBUCABUAFQQVAgAAABUCGVw1ABgGc2NoZW1hFQgAFQIlAhgHYm9vbGVhbiUWTKwTCBIAAAAVCiUAGAZudW1iZXIAFQIlAhgGc2lnbmVkABUEJQIYCHVuc2lnbmVkABYEGRwZTCaIARwVAhk1BAAGGRgHYm9vbGVhbhUCFgQWeBaAASYwJggcNgIoBAEAAAAYBAEAAAAAGSwVBBUEFQIAFQAVBBUCAAAAJtQDHBUKGTUEAAYZGAZudW1iZXIVAhYEFrwBFsQBJtACJpACHBgIAAAAAAAABEAYCAAAAAAAAABAFgAoCAAAAAAAAARAGAgAAAAAAAAAQAAZLBUEFQQVAgAVABUEFQIAAAAm8gUcFQIZNQQABhkYBnNpZ25lZBUCFgQWVBZaJrYFJpgFHDYEABksFQQVBBUCABUAFQQVAgAAACayCBwVBBk1BAAGGRgIdW5zaWduZWQVAhYEFsgBFtABJqIHJuIGHBgI+QIAAAAAAAAYCEsAAAAAAAAAFgAoCPkCAAAAAAAAGAhLAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAW0AQWBCaIARbuBBQAACgfcGFycXVldC1jcHAtYXJyb3cgdmVyc2lvbiA1LjAuMBlMHAAAHAAAHAAAHAAAANcBAABQQVIx" + ] + ] + ]; + [ + "ccc"; + # + ]; + [ + "ddd"; + [ + [ + "UEFSMRUEFQAVAkwVABUEEgAAABUAFQ4VEiwVAhUEFQYVBhw2AgAAAAcYAgAAAAIAACZiHBUCGTUEAAYZGAdib29sZWFuFQIWAhZUFlomJiYIHDYCABksFQQVBBUCABUAFQQVAgAAABUEFRAVFEwVAhUEEgAACBxuhhvw+SEJQBUAFQYVCiwVAhUEFQYVBhwYCG6GG/D5IQlAGAhuhhvw+SEJQBYAKAhuhhvw+SEJQBgIboYb8PkhCUAAAAADCAECACaCAxwVChk1BAAGGRgGbnVtYmVyFQIWAhasARa0ASb+ASbOARwYCG6GG/D5IQlAGAhuhhvw+SEJQBYAKAhuhhvw+SEJQBgIboYb8PkhCUAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVCBUMTBUCFQQSAAAEDPv///8VABUSFRYsFQIVBBUGFQYcGAT7////GAT7////FgAoBPv///8YBPv///8AAAAJIAIAAAACAQECACbeBRwVAhk1BAAGGRgGc2lnbmVkFQIWAhaQARaYASbuBCbGBBwYBPv///8YBPv///8WACgE+////xgE+////wAZLBUEFQQVAgAVABUEFQIAAAAVBBUAFQJMFQAVBBIAAAAVABUOFRIsFQIVBBUGFQYcNgIAAAAHGAIAAAACAAAm3AccFQQZNQQABhkYCHVuc2lnbmVkFQIWAhZUFlomoAcmggccNgIAGSwVBBUEFQIAFQAVBBUCAAAAFQIZXDUAGAZzY2hlbWEVCAAVAiUCGAdib29sZWFuJRZMrBMIEgAAABUKJQAYBm51bWJlcgAVAiUCGAZzaWduZWQAFQQlAhgIdW5zaWduZWQAFgIZHBlMJmIcFQIZNQQABhkYB2Jvb2xlYW4VAhYCFlQWWiYmJggcNgIAGSwVBBUEFQIAFQAVBBUCAAAAJoIDHBUKGTUEAAYZGAZudW1iZXIVAhYCFqwBFrQBJv4BJs4BHBgIboYb8PkhCUAYCG6GG/D5IQlAFgAoCG6GG/D5IQlAGAhuhhvw+SEJQAAZLBUEFQQVAgAVABUEFQIAAAAm3gUcFQIZNQQABhkYBnNpZ25lZBUCFgIWkAEWmAEm7gQmxgQcGAT7////GAT7////FgAoBPv///8YBPv///8AGSwVBBUEFQIAFQAVBBUCAAAAJtwHHBUEGTUEAAYZGAh1bnNpZ25lZBUCFgIWVBZaJqAHJoIHHDYCABksFQQVBBUCABUAFQQVAgAAABbkAxYCJmIWgAQUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAAC4AQAAUEFSMQ==" + ] + ] + ]; + [ + "ddd"; + # + ]; + [ + "iii"; + [ + [ + "UEFSMRUEFQgVDEwVAhUEEgAABAwBAAAAFQAVEhUWLBUCFQQVBhUGHDYAKAQBAAAAGAQBAAAAAAAACSACAAAAAgEBAgAmiAEcFQIZNQQABhkYB2Jvb2xlYW4VAhYCFngWgAEmMCYIHDYAKAQBAAAAGAQBAAAAABksFQQVBBUCABUAFQQVAgAAABUEFRAVFEwVAhUEEgAACBzNzMzMzNR0QBUAFQYVCiwVAhUEFQYVBhwYCM3MzMzM1HRAGAjNzMzMzNR0QBYAKAjNzMzMzNR0QBgIzczMzMzUdEAAAAADCAECACbEAxwVChk1BAAGGRgGbnVtYmVyFQIWAhasARa0ASbAAiaQAhwYCM3MzMzM1HRAGAjNzMzMzNR0QBYAKAjNzMzMzNR0QBgIzczMzMzUdEAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVCBUMTBUCFQQSAAAEDAkDAAAVABUSFRYsFQIVBBUGFQYcGAQJAwAAGAQJAwAAFgAoBAkDAAAYBAkDAAAAAAAJIAIAAAACAQECACagBhwVAhk1BAAGGRgGc2lnbmVkFQIWAhaQARaYASawBSaIBRwYBAkDAAAYBAkDAAAWACgECQMAABgECQMAAAAZLBUEFQQVAgAVABUEFQIAAAAVBBUQFRRMFQIVBBIAAAgclgAAAAAAAAAVABUSFRYsFQIVBBUGFQYcGAiWAAAAAAAAABgIlgAAAAAAAAAWACgIlgAAAAAAAAAYCJYAAAAAAAAAAAAACSACAAAAAgEBAgAmhAkcFQQZNQQABhkYCHVuc2lnbmVkFQIWAha4ARbAASb0BybEBxwYCJYAAAAAAAAAGAiWAAAAAAAAABYAKAiWAAAAAAAAABgIlgAAAAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQIZXDUAGAZzY2hlbWEVCAAVAiUCGAdib29sZWFuJRZMrBMIEgAAABUKJQAYBm51bWJlcgAVAiUCGAZzaWduZWQAFQQlAhgIdW5zaWduZWQAFgIZHBlMJogBHBUCGTUEAAYZGAdib29sZWFuFQIWAhZ4FoABJjAmCBw2ACgEAQAAABgEAQAAAAAZLBUEFQQVAgAVABUEFQIAAAAmxAMcFQoZNQQABhkYBm51bWJlchUCFgIWrAEWtAEmwAImkAIcGAjNzMzMzNR0QBgIzczMzMzUdEAWACgIzczMzMzUdEAYCM3MzMzM1HRAABksFQQVBBUCABUAFQQVAgAAACagBhwVAhk1BAAGGRgGc2lnbmVkFQIWAhaQARaYASawBSaIBRwYBAkDAAAYBAkDAAAWACgECQMAABgECQMAAAAZLBUEFQQVAgAVABUEFQIAAAAmhAkcFQQZNQQABhkYCHVuc2lnbmVkFQIWAha4ARbAASb0BybEBxwYCJYAAAAAAAAAGAiWAAAAAAAAABYAKAiWAAAAAAAAABgIlgAAAAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFuwEFgImiAEWjAUUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAADxAQAAUEFSMQ==" + ] + ] + ]; + [ + "iii"; + # + ]; + [ + "kkk"; + [ + [ + "UEFSMRUEFQgVDEwVAhUEEgAABAwAAAAAFQAVEhUWLBUEFQQVBhUGHDYAKAQAAAAAGAQAAAAAAAAACSACAAAABAEBBAAmiAEcFQIZNQQABhkYB2Jvb2xlYW4VAhYEFngWgAEmMCYIHDYAKAQAAAAAGAQAAAAAABksFQQVBBUCABUAFQQVAgAAABUEFSAVJEwVBBUEEgAAEDxmZmZmZmYawLgehetROBbAFQAVBhUKLBUEFQQVBhUGHBgIuB6F61E4FsAYCGZmZmZmZhrAFgAoCLgehetROBbAGAhmZmZmZmYawAAAAAMIAQMCJtQDHBUKGTUEAAYZGAZudW1iZXIVAhYEFrwBFsQBJtACJpACHBgIuB6F61E4FsAYCGZmZmZmZhrAFgAoCLgehetROBbAGAhmZmZmZmYawAAZLBUEFQQVAgAVABUEFQIAAAAVBBUQFRRMFQQVBBIAAAgc8/////f///8VABUSFRYsFQQVBBUGFQYcGAT3////GATz////FgAoBPf///8YBPP///8AAAAJIAIAAAAEAQEDAia4BhwVAhk1BAAGGRgGc2lnbmVkFQIWBBaYARagASbIBSaYBRwYBPf///8YBPP///8WACgE9////xgE8////wAZLBUEFQQVAgAVABUEFQIAAAAVBBUgFSRMFQQVBBIAABA8lgAAAAAAAACPAwAAAAAAABUAFRIVFiwVBBUEFQYVBhwYCI8DAAAAAAAAGAiWAAAAAAAAABYAKAiPAwAAAAAAABgIlgAAAAAAAAAAAAAJIAIAAAAEAQEDAiasCRwVBBk1BAAGGRgIdW5zaWduZWQVAhYEFsgBFtABJpwIJtwHHBgIjwMAAAAAAAAYCJYAAAAAAAAAFgAoCI8DAAAAAAAAGAiWAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAVAhlcNQAYBnNjaGVtYRUIABUCJQIYB2Jvb2xlYW4lFkysEwgSAAAAFQolABgGbnVtYmVyABUCJQIYBnNpZ25lZAAVBCUCGAh1bnNpZ25lZAAWBBkcGUwmiAEcFQIZNQQABhkYB2Jvb2xlYW4VAhYEFngWgAEmMCYIHDYAKAQAAAAAGAQAAAAAABksFQQVBBUCABUAFQQVAgAAACbUAxwVChk1BAAGGRgGbnVtYmVyFQIWBBa8ARbEASbQAiaQAhwYCLgehetROBbAGAhmZmZmZmYawBYAKAi4HoXrUTgWwBgIZmZmZmZmGsAAGSwVBBUEFQIAFQAVBBUCAAAAJrgGHBUCGTUEAAYZGAZzaWduZWQVAhYEFpgBFqABJsgFJpgFHBgE9////xgE8////xYAKAT3////GATz////ABksFQQVBBUCABUAFQQVAgAAACasCRwVBBk1BAAGGRgIdW5zaWduZWQVAhYEFsgBFtABJpwIJtwHHBgIjwMAAAAAAAAYCJYAAAAAAAAAFgAoCI8DAAAAAAAAGAiWAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAWlAUWBCaIARa0BRQAACgfcGFycXVldC1jcHAtYXJyb3cgdmVyc2lvbiA1LjAuMBlMHAAAHAAAHAAAHAAAAPEBAABQQVIx" + ] + ] + ]; + [ + "kkk"; + # + ]; + [ + "qqq"; + [ + [ + "UEFSMRUEFQgVDEwVAhUEEgAABAwAAAAAFQAVEhUWLBUCFQQVBhUGHDYAKAQAAAAAGAQAAAAAAAAACSACAAAAAgEBAgAmiAEcFQIZNQQABhkYB2Jvb2xlYW4VAhYCFngWgAEmMCYIHDYAKAQAAAAAGAQAAAAAABksFQQVBBUCABUAFQQVAgAAABUEFRAVFEwVAhUEEgAACBwAAAAAAAAxwBUAFQYVCiwVAhUEFQYVBhwYCAAAAAAAADHAGAgAAAAAAAAxwBYAKAgAAAAAAAAxwBgIAAAAAAAAMcAAAAADCAECACbEAxwVChk1BAAGGRgGbnVtYmVyFQIWAhasARa0ASbAAiaQAhwYCAAAAAAAADHAGAgAAAAAAAAxwBYAKAgAAAAAAAAxwBgIAAAAAAAAMcAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVCBUMTBUCFQQSAAAEDA8AAAAVABUSFRYsFQIVBBUGFQYcGAQPAAAAGAQPAAAAFgAoBA8AAAAYBA8AAAAAAAAJIAIAAAACAQECACagBhwVAhk1BAAGGRgGc2lnbmVkFQIWAhaQARaYASawBSaIBRwYBA8AAAAYBA8AAAAWACgEDwAAABgEDwAAAAAZLBUEFQQVAgAVABUEFQIAAAAVBBUQFRRMFQIVBBIAAAgcyAAAAAAAAAAVABUSFRYsFQIVBBUGFQYcGAjIAAAAAAAAABgIyAAAAAAAAAAWACgIyAAAAAAAAAAYCMgAAAAAAAAAAAAACSACAAAAAgEBAgAmhAkcFQQZNQQABhkYCHVuc2lnbmVkFQIWAha4ARbAASb0BybEBxwYCMgAAAAAAAAAGAjIAAAAAAAAABYAKAjIAAAAAAAAABgIyAAAAAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQIZXDUAGAZzY2hlbWEVCAAVAiUCGAdib29sZWFuJRZMrBMIEgAAABUKJQAYBm51bWJlcgAVAiUCGAZzaWduZWQAFQQlAhgIdW5zaWduZWQAFgIZHBlMJogBHBUCGTUEAAYZGAdib29sZWFuFQIWAhZ4FoABJjAmCBw2ACgEAAAAABgEAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAmxAMcFQoZNQQABhkYBm51bWJlchUCFgIWrAEWtAEmwAImkAIcGAgAAAAAAAAxwBgIAAAAAAAAMcAWACgIAAAAAAAAMcAYCAAAAAAAADHAABksFQQVBBUCABUAFQQVAgAAACagBhwVAhk1BAAGGRgGc2lnbmVkFQIWAhaQARaYASawBSaIBRwYBA8AAAAYBA8AAAAWACgEDwAAABgEDwAAAAAZLBUEFQQVAgAVABUEFQIAAAAmhAkcFQQZNQQABhkYCHVuc2lnbmVkFQIWAha4ARbAASb0BybEBxwYCMgAAAAAAAAAGAjIAAAAAAAAABYAKAjIAAAAAAAAABgIyAAAAAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFuwEFgImiAEWjAUUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAADxAQAAUEFSMQ==" + ] + ] + ]; + [ + "qqq"; + # + ] + ] + } + ] + }; + { + "Label" = "Tuples"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "aaa"; + [ + [ + "UEFSMRUEFSAVJEwVBBUEEgAAEDwXAAAAAAAAAJYAAAAAAAAAFQAVEhUWLBUEFQQVBhUGHBgIlgAAAAAAAAAYCBcAAAAAAAAAFgAoCJYAAAAAAAAAGAgXAAAAAAAAAAAAAAkgAgAAAAQCAQMCJtgBHBUEGTUEAAYZKARtYW55Bm1hbnkuMBUCFgQWyAEW0AEmSCYIHBgIlgAAAAAAAAAYCBcAAAAAAAAAFgAoCJYAAAAAAAAAGAgXAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAVBBUQFRRMFQQVBBIAAAgcZAAAAGb9//8VABUSFRYsFQQVBBUGFQYcGARkAAAAGARm/f//FgAoBGQAAAAYBGb9//8AAAAJIAIAAAAEAgEDAibCBBwVAhk1BAAGGSgEbWFueQZtYW55LjEVAhYEFpgBFqABJtIDJqIDHBgEZAAAABgEZv3//xYAKARkAAAAGARm/f//ABksFQQVBBUCABUAFQQVAgAAABUEFSAVJEwVBBUEEgAAEDwAAAAAAAAAAM3MzMzMTDfAFQAVEhUWLBUEFQQVBhUGHBgIAAAAAAAAAAAYCM3MzMzMTDfAFgAoCAAAAAAAAAAAGAjNzMzMzEw3wAAAAAkgAgAAAAQCAQMCJsAHHBUKGTUEAAYZKARtYW55Bm1hbnkuMhUCFgQWyAEW0AEmsAYm8AUcGAgAAAAAAAAAABgIzczMzMxMN8AWACgIAAAAAAAAAAAYCM3MzMzMTDfAABksFQQVBBUCABUAFQQVAgAAABUEFQgVDEwVAhUEEgAABAwBAAAAFQAVFBUYLBUEFQQVBhUGHDYCKAQBAAAAGAQBAAAAAAAACiQDAAAAAwYAAQIAJpAKHBUCGTUEAAYZKARtYW55Bm1hbnkuMxUCFgQWehaCASa2CSaOCRw2AigEAQAAABgEAQAAAAAZLBUEFQQVAgAVABUEFQIAAAAVAhlsNQAYBnNjaGVtYRUCADUCGARtYW55FQgAFQQlAhgGbWFueS4wABUCJQIYBm1hbnkuMQAVCiUCGAZtYW55LjIAFQIlAhgGbWFueS4zJRZMrBMIEgAAABYEGRwZTCbYARwVBBk1BAAGGSgEbWFueQZtYW55LjAVAhYEFsgBFtABJkgmCBwYCJYAAAAAAAAAGAgXAAAAAAAAABYAKAiWAAAAAAAAABgIFwAAAAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAJsIEHBUCGTUEAAYZKARtYW55Bm1hbnkuMRUCFgQWmAEWoAEm0gMmogMcGARkAAAAGARm/f//FgAoBGQAAAAYBGb9//8AGSwVBBUEFQIAFQAVBBUCAAAAJsAHHBUKGTUEAAYZKARtYW55Bm1hbnkuMhUCFgQWyAEW0AEmsAYm8AUcGAgAAAAAAAAAABgIzczMzMxMN8AWACgIAAAAAAAAAAAYCM3MzMzMTDfAABksFQQVBBUCABUAFQQVAgAAACaQChwVAhk1BAAGGSgEbWFueQZtYW55LjMVAhYEFnoWggEmtgkmjgkcNgIoBAEAAAAYBAEAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFqIFFgQm2AEWwgUUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAAAKAgAAUEFSMQ==" + ] + ] + ]; + [ + "aaa"; + # + ]; + [ + "bbb"; + [ + [ + "UEFSMRUEFQAVAkwVABUEEgAAABUAFQ4VEiwVAhUEFQYVBhw2AgAAAAcYAgAAAAIBACZiHBUEGTUEAAYZKARtYW55Bm1hbnkuMBUCFgIWVBZaJiYmCBw2AgAZLBUEFQQVAgAVABUEFQIAAAAVBBUIFQxMFQIVBBIAAAQMOP///xUAFRIVFiwVAhUEFQYVBhwYBDj///8YBDj///8WACgEOP///xgEOP///wAAAAkgAgAAAAICAQIAJu4CHBUCGTUEAAYZKARtYW55Bm1hbnkuMRUCFgIWkAEWmAEm/gEm1gEcGAQ4////GAQ4////FgAoBDj///8YBDj///8AGSwVBBUEFQIAFQAVBBUCAAAAFQQVEBUUTBUCFQQSAAAIHAAAAAAAAPA/FQAVEhUWLBUCFQQVBhUGHBgIAAAAAAAA8D8YCAAAAAAAAPA/FgAoCAAAAAAAAPA/GAgAAAAAAADwPwAAAAkgAgAAAAICAQIAJtwFHBUKGTUEAAYZKARtYW55Bm1hbnkuMhUCFgIWuAEWwAEmzAQmnAQcGAgAAAAAAADwPxgIAAAAAAAA8D8WACgIAAAAAAAA8D8YCAAAAAAAAPA/ABksFQQVBBUCABUAFQQVAgAAABUEFQAVAkwVABUEEgAAABUAFQ4VEiwVAhUEFQYVBhw2AgAAAAcYAgAAAAIBACaECBwVAhk1BAAGGSgEbWFueQZtYW55LjMVAhYCFlQWWibIByaqBxw2AgAZLBUEFQQVAgAVABUEFQIAAAAVAhlsNQAYBnNjaGVtYRUCADUCGARtYW55FQgAFQQlAhgGbWFueS4wABUCJQIYBm1hbnkuMQAVCiUCGAZtYW55LjIAFQIlAhgGbWFueS4zJRZMrBMIEgAAABYCGRwZTCZiHBUEGTUEAAYZKARtYW55Bm1hbnkuMBUCFgIWVBZaJiYmCBw2AgAZLBUEFQQVAgAVABUEFQIAAAAm7gIcFQIZNQQABhkoBG1hbnkGbWFueS4xFQIWAhaQARaYASb+ASbWARwYBDj///8YBDj///8WACgEOP///xgEOP///wAZLBUEFQQVAgAVABUEFQIAAAAm3AUcFQoZNQQABhkoBG1hbnkGbWFueS4yFQIWAha4ARbAASbMBCacBBwYCAAAAAAAAPA/GAgAAAAAAADwPxYAKAgAAAAAAADwPxgIAAAAAAAA8D8AGSwVBBUEFQIAFQAVBBUCAAAAJoQIHBUCGTUEAAYZKARtYW55Bm1hbnkuMxUCFgIWVBZaJsgHJqoHHDYCABksFQQVBBUCABUAFQQVAgAAABbwAxYCJmIWjAQUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAADRAQAAUEFSMQ==" + ] + ] + ]; + [ + "bbb"; + # + ]; + [ + "ccc"; + [ + [ + "UEFSMRUEFSAVJEwVBBUEEgAAEDxLAAAAAAAAAPkCAAAAAAAAFQAVEhUWLBUEFQQVBhUGHBgI+QIAAAAAAAAYCEsAAAAAAAAAFgAoCPkCAAAAAAAAGAhLAAAAAAAAAAAAAAkgAgAAAAQCAQMCJtgBHBUEGTUEAAYZKARtYW55Bm1hbnkuMBUCFgQWyAEW0AEmSCYIHBgI+QIAAAAAAAAYCEsAAAAAAAAAFgAoCPkCAAAAAAAAGAhLAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAVBBUAFQJMFQAVBBIAAAAVABUOFRIsFQQVBBUGFQYcNgQAAAAHGAIAAAAEAQAm/AMcFQIZNQQABhkoBG1hbnkGbWFueS4xFQIWBBZUFlomwAMmogMcNgQAGSwVBBUEFQIAFQAVBBUCAAAAFQQVIBUkTBUEFQQSAAAQPAAAAAAAAARAAAAAAAAAAEAVABUSFRYsFQQVBBUGFQYcGAgAAAAAAAAEQBgIAAAAAAAAAEAWACgIAAAAAAAABEAYCAAAAAAAAABAAAAACSACAAAABAIBAwImxgYcFQoZNQQABhkoBG1hbnkGbWFueS4yFQIWBBbIARbQASa2BSb2BBwYCAAAAAAAAARAGAgAAAAAAAAAQBYAKAgAAAAAAAAEQBgIAAAAAAAAAEAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVCBUMTBUCFQQSAAAEDAEAAAAVABUUFRgsFQQVBBUGFQYcNgIoBAEAAAAYBAEAAAAAAAAKJAMAAAADBgABAgAmlgkcFQIZNQQABhkoBG1hbnkGbWFueS4zFQIWBBZ6FoIBJrwIJpQIHDYCKAQBAAAAGAQBAAAAABksFQQVBBUCABUAFQQVAgAAABUCGWw1ABgGc2NoZW1hFQIANQIYBG1hbnkVCAAVBCUCGAZtYW55LjAAFQIlAhgGbWFueS4xABUKJQIYBm1hbnkuMgAVAiUCGAZtYW55LjMlFkysEwgSAAAAFgQZHBlMJtgBHBUEGTUEAAYZKARtYW55Bm1hbnkuMBUCFgQWyAEW0AEmSCYIHBgI+QIAAAAAAAAYCEsAAAAAAAAAFgAoCPkCAAAAAAAAGAhLAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAm/AMcFQIZNQQABhkoBG1hbnkGbWFueS4xFQIWBBZUFlomwAMmogMcNgQAGSwVBBUEFQIAFQAVBBUCAAAAJsYGHBUKGTUEAAYZKARtYW55Bm1hbnkuMhUCFgQWyAEW0AEmtgUm9gQcGAgAAAAAAAAEQBgIAAAAAAAAAEAWACgIAAAAAAAABEAYCAAAAAAAAABAABksFQQVBBUCABUAFQQVAgAAACaWCRwVAhk1BAAGGSgEbWFueQZtYW55LjMVAhYEFnoWggEmvAgmlAgcNgIoBAEAAAAYBAEAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFt4EFgQm2AEW/AQUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAADwAQAAUEFSMQ==" + ] + ] + ]; + [ + "ccc"; + # + ]; + [ + "ddd"; + [ + [ + "UEFSMRUEFQAVAkwVABUEEgAAABUAFQ4VEiwVAhUEFQYVBhw2AgAAAAcYAgAAAAIBACZiHBUEGTUEAAYZKARtYW55Bm1hbnkuMBUCFgIWVBZaJiYmCBw2AgAZLBUEFQQVAgAVABUEFQIAAAAVBBUIFQxMFQIVBBIAAAQM+////xUAFRIVFiwVAhUEFQYVBhwYBPv///8YBPv///8WACgE+////xgE+////wAAAAkgAgAAAAICAQIAJu4CHBUCGTUEAAYZKARtYW55Bm1hbnkuMRUCFgIWkAEWmAEm/gEm1gEcGAT7////GAT7////FgAoBPv///8YBPv///8AGSwVBBUEFQIAFQAVBBUCAAAAFQQVEBUUTBUCFQQSAAAIHG6GG/D5IQlAFQAVEhUWLBUCFQQVBhUGHBgIboYb8PkhCUAYCG6GG/D5IQlAFgAoCG6GG/D5IQlAGAhuhhvw+SEJQAAAAAkgAgAAAAICAQIAJtwFHBUKGTUEAAYZKARtYW55Bm1hbnkuMhUCFgIWuAEWwAEmzAQmnAQcGAhuhhvw+SEJQBgIboYb8PkhCUAWACgIboYb8PkhCUAYCG6GG/D5IQlAABksFQQVBBUCABUAFQQVAgAAABUEFQAVAkwVABUEEgAAABUAFQ4VEiwVAhUEFQYVBhw2AgAAAAcYAgAAAAIBACaECBwVAhk1BAAGGSgEbWFueQZtYW55LjMVAhYCFlQWWibIByaqBxw2AgAZLBUEFQQVAgAVABUEFQIAAAAVAhlsNQAYBnNjaGVtYRUCADUCGARtYW55FQgAFQQlAhgGbWFueS4wABUCJQIYBm1hbnkuMQAVCiUCGAZtYW55LjIAFQIlAhgGbWFueS4zJRZMrBMIEgAAABYCGRwZTCZiHBUEGTUEAAYZKARtYW55Bm1hbnkuMBUCFgIWVBZaJiYmCBw2AgAZLBUEFQQVAgAVABUEFQIAAAAm7gIcFQIZNQQABhkoBG1hbnkGbWFueS4xFQIWAhaQARaYASb+ASbWARwYBPv///8YBPv///8WACgE+////xgE+////wAZLBUEFQQVAgAVABUEFQIAAAAm3AUcFQoZNQQABhkoBG1hbnkGbWFueS4yFQIWAha4ARbAASbMBCacBBwYCG6GG/D5IQlAGAhuhhvw+SEJQBYAKAhuhhvw+SEJQBgIboYb8PkhCUAAGSwVBBUEFQIAFQAVBBUCAAAAJoQIHBUCGTUEAAYZKARtYW55Bm1hbnkuMxUCFgIWVBZaJsgHJqoHHDYCABksFQQVBBUCABUAFQQVAgAAABbwAxYCJmIWjAQUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAADRAQAAUEFSMQ==" + ] + ] + ]; + [ + "ddd"; + # + ]; + [ + "iii"; + [ + [ + "UEFSMRUEFRAVFEwVAhUEEgAACByWAAAAAAAAABUAFRIVFiwVAhUEFQYVBhwYCJYAAAAAAAAAGAiWAAAAAAAAABYAKAiWAAAAAAAAABgIlgAAAAAAAAAAAAAJIAIAAAACAgECACbIARwVBBk1BAAGGSgEbWFueQZtYW55LjAVAhYCFrgBFsABJjgmCBwYCJYAAAAAAAAAGAiWAAAAAAAAABYAKAiWAAAAAAAAABgIlgAAAAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVCBUMTBUCFQQSAAAEDAkDAAAVABUSFRYsFQIVBBUGFQYcGAQJAwAAGAQJAwAAFgAoBAkDAAAYBAkDAAAAAAAJIAIAAAACAgECACaqBBwVAhk1BAAGGSgEbWFueQZtYW55LjEVAhYCFpABFpgBJroDJpIDHBgECQMAABgECQMAABYAKAQJAwAAGAQJAwAAABksFQQVBBUCABUAFQQVAgAAABUEFRAVFEwVAhUEEgAACBzNzMzMzNR0QBUAFRIVFiwVAhUEFQYVBhwYCM3MzMzM1HRAGAjNzMzMzNR0QBYAKAjNzMzMzNR0QBgIzczMzMzUdEAAAAAJIAIAAAACAgECACaYBxwVChk1BAAGGSgEbWFueQZtYW55LjIVAhYCFrgBFsABJogGJtgFHBgIzczMzMzUdEAYCM3MzMzM1HRAFgAoCM3MzMzM1HRAGAjNzMzMzNR0QAAZLBUEFQQVAgAVABUEFQIAAAAVBBUIFQxMFQIVBBIAAAQMAQAAABUAFRIVFiwVAhUEFQYVBhw2ACgEAQAAABgEAQAAAAAAAAkgAgAAAAICAQIAJuYJHBUCGTUEAAYZKARtYW55Bm1hbnkuMxUCFgIWeBaAASaOCSbmCBw2ACgEAQAAABgEAQAAAAAZLBUEFQQVAgAVABUEFQIAAAAVAhlsNQAYBnNjaGVtYRUCADUCGARtYW55FQgAFQQlAhgGbWFueS4wABUCJQIYBm1hbnkuMQAVCiUCGAZtYW55LjIAFQIlAhgGbWFueS4zJRZMrBMIEgAAABYCGRwZTCbIARwVBBk1BAAGGSgEbWFueQZtYW55LjAVAhYCFrgBFsABJjgmCBwYCJYAAAAAAAAAGAiWAAAAAAAAABYAKAiWAAAAAAAAABgIlgAAAAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAJqoEHBUCGTUEAAYZKARtYW55Bm1hbnkuMRUCFgIWkAEWmAEmugMmkgMcGAQJAwAAGAQJAwAAFgAoBAkDAAAYBAkDAAAAGSwVBBUEFQIAFQAVBBUCAAAAJpgHHBUKGTUEAAYZKARtYW55Bm1hbnkuMhUCFgIWuAEWwAEmiAYm2AUcGAjNzMzMzNR0QBgIzczMzMzUdEAWACgIzczMzMzUdEAYCM3MzMzM1HRAABksFQQVBBUCABUAFQQVAgAAACbmCRwVAhk1BAAGGSgEbWFueQZtYW55LjMVAhYCFngWgAEmjgkm5ggcNgAoBAEAAAAYBAEAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFvgEFgImyAEWmAUUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAAAKAgAAUEFSMQ==" + ] + ] + ]; + [ + "iii"; + # + ]; + [ + "kkk"; + [ + [ + "UEFSMRUEFSAVJEwVBBUEEgAAEDyWAAAAAAAAAI8DAAAAAAAAFQAVEhUWLBUEFQQVBhUGHBgIjwMAAAAAAAAYCJYAAAAAAAAAFgAoCI8DAAAAAAAAGAiWAAAAAAAAAAAAAAkgAgAAAAQCAQMCJtgBHBUEGTUEAAYZKARtYW55Bm1hbnkuMBUCFgQWyAEW0AEmSCYIHBgIjwMAAAAAAAAYCJYAAAAAAAAAFgAoCI8DAAAAAAAAGAiWAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAVBBUQFRRMFQQVBBIAAAgc8/////f///8VABUSFRYsFQQVBBUGFQYcGAT3////GATz////FgAoBPf///8YBPP///8AAAAJIAIAAAAEAgEDAibCBBwVAhk1BAAGGSgEbWFueQZtYW55LjEVAhYEFpgBFqABJtIDJqIDHBgE9////xgE8////xYAKAT3////GATz////ABksFQQVBBUCABUAFQQVAgAAABUEFSAVJEwVBBUEEgAAEDxmZmZmZmYawLgehetROBbAFQAVEhUWLBUEFQQVBhUGHBgIuB6F61E4FsAYCGZmZmZmZhrAFgAoCLgehetROBbAGAhmZmZmZmYawAAAAAkgAgAAAAQCAQMCJsAHHBUKGTUEAAYZKARtYW55Bm1hbnkuMhUCFgQWyAEW0AEmsAYm8AUcGAi4HoXrUTgWwBgIZmZmZmZmGsAWACgIuB6F61E4FsAYCGZmZmZmZhrAABksFQQVBBUCABUAFQQVAgAAABUEFQgVDEwVAhUEEgAABAwAAAAAFQAVEhUWLBUEFQQVBhUGHDYAKAQAAAAAGAQAAAAAAAAACSACAAAABAIBBAAmjgocFQIZNQQABhkoBG1hbnkGbWFueS4zFQIWBBZ4FoABJrYJJo4JHDYAKAQAAAAAGAQAAAAAABksFQQVBBUCABUAFQQVAgAAABUCGWw1ABgGc2NoZW1hFQIANQIYBG1hbnkVCAAVBCUCGAZtYW55LjAAFQIlAhgGbWFueS4xABUKJQIYBm1hbnkuMgAVAiUCGAZtYW55LjMlFkysEwgSAAAAFgQZHBlMJtgBHBUEGTUEAAYZKARtYW55Bm1hbnkuMBUCFgQWyAEW0AEmSCYIHBgIjwMAAAAAAAAYCJYAAAAAAAAAFgAoCI8DAAAAAAAAGAiWAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAmwgQcFQIZNQQABhkoBG1hbnkGbWFueS4xFQIWBBaYARagASbSAyaiAxwYBPf///8YBPP///8WACgE9////xgE8////wAZLBUEFQQVAgAVABUEFQIAAAAmwAccFQoZNQQABhkoBG1hbnkGbWFueS4yFQIWBBbIARbQASawBibwBRwYCLgehetROBbAGAhmZmZmZmYawBYAKAi4HoXrUTgWwBgIZmZmZmZmGsAAGSwVBBUEFQIAFQAVBBUCAAAAJo4KHBUCGTUEAAYZKARtYW55Bm1hbnkuMxUCFgQWeBaAASa2CSaOCRw2ACgEAAAAABgEAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAWoAUWBCbYARbABRQAACgfcGFycXVldC1jcHAtYXJyb3cgdmVyc2lvbiA1LjAuMBlMHAAAHAAAHAAAHAAAAAoCAABQQVIx" + ] + ] + ]; + [ + "kkk"; + # + ]; + [ + "qqq"; + [ + [ + "UEFSMRUEFRAVFEwVAhUEEgAACBzIAAAAAAAAABUAFRIVFiwVAhUEFQYVBhwYCMgAAAAAAAAAGAjIAAAAAAAAABYAKAjIAAAAAAAAABgIyAAAAAAAAAAAAAAJIAIAAAACAgECACbIARwVBBk1BAAGGSgEbWFueQZtYW55LjAVAhYCFrgBFsABJjgmCBwYCMgAAAAAAAAAGAjIAAAAAAAAABYAKAjIAAAAAAAAABgIyAAAAAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVCBUMTBUCFQQSAAAEDA8AAAAVABUSFRYsFQIVBBUGFQYcGAQPAAAAGAQPAAAAFgAoBA8AAAAYBA8AAAAAAAAJIAIAAAACAgECACaqBBwVAhk1BAAGGSgEbWFueQZtYW55LjEVAhYCFpABFpgBJroDJpIDHBgEDwAAABgEDwAAABYAKAQPAAAAGAQPAAAAABksFQQVBBUCABUAFQQVAgAAABUEFRAVFEwVAhUEEgAACBwAAAAAAAAxwBUAFRIVFiwVAhUEFQYVBhwYCAAAAAAAADHAGAgAAAAAAAAxwBYAKAgAAAAAAAAxwBgIAAAAAAAAMcAAAAAJIAIAAAACAgECACaYBxwVChk1BAAGGSgEbWFueQZtYW55LjIVAhYCFrgBFsABJogGJtgFHBgIAAAAAAAAMcAYCAAAAAAAADHAFgAoCAAAAAAAADHAGAgAAAAAAAAxwAAZLBUEFQQVAgAVABUEFQIAAAAVBBUIFQxMFQIVBBIAAAQMAAAAABUAFRIVFiwVAhUEFQYVBhw2ACgEAAAAABgEAAAAAAAAAAkgAgAAAAICAQIAJuYJHBUCGTUEAAYZKARtYW55Bm1hbnkuMxUCFgIWeBaAASaOCSbmCBw2ACgEAAAAABgEAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAVAhlsNQAYBnNjaGVtYRUCADUCGARtYW55FQgAFQQlAhgGbWFueS4wABUCJQIYBm1hbnkuMQAVCiUCGAZtYW55LjIAFQIlAhgGbWFueS4zJRZMrBMIEgAAABYCGRwZTCbIARwVBBk1BAAGGSgEbWFueQZtYW55LjAVAhYCFrgBFsABJjgmCBwYCMgAAAAAAAAAGAjIAAAAAAAAABYAKAjIAAAAAAAAABgIyAAAAAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAJqoEHBUCGTUEAAYZKARtYW55Bm1hbnkuMRUCFgIWkAEWmAEmugMmkgMcGAQPAAAAGAQPAAAAFgAoBA8AAAAYBA8AAAAAGSwVBBUEFQIAFQAVBBUCAAAAJpgHHBUKGTUEAAYZKARtYW55Bm1hbnkuMhUCFgIWuAEWwAEmiAYm2AUcGAgAAAAAAAAxwBgIAAAAAAAAMcAWACgIAAAAAAAAMcAYCAAAAAAAADHAABksFQQVBBUCABUAFQQVAgAAACbmCRwVAhk1BAAGGSgEbWFueQZtYW55LjMVAhYCFngWgAEmjgkm5ggcNgAoBAAAAAAYBAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFvgEFgImyAEWmAUUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAAAKAgAAUEFSMQ==" + ] + ] + ]; + [ + "qqq"; + # + ] + ] + } + ] + }; + { + "Label" = "Lists"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "aaa"; + [ + [ + "UEFSMRUEFQgVDEwVAhUEEgAABAwBAAAAFQAVHhUiLBUCFQQVBhUGHDYAKAQBAAAAGAQBAAAAAAAADzgCAAAAAgACAAAAAgIBAgAmlAEcFQIZNQQABhk4B2Jvb2xlYW4EbGlzdARpdGVtFQIWAhaEARaMASYwJggcNgAoBAEAAAAYBAEAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVIBUkTBUEFQQSAAAQPAAAAAAAAAAAzczMzMxMN8AVABUeFSIsFQQVBBUGFQYcGAgAAAAAAAAAABgIzczMzMxMN8AWACgIAAAAAAAAAAAYCM3MzMzMTDfAAAAADzgCAAAAAwICAAAABAIBAwImjgQcFQoZNQQABhk4Bm51bWJlcgRsaXN0BGl0ZW0VAhYEFtQBFtwBJvICJrICHBgIAAAAAAAAAAAYCM3MzMzMTDfAFgAoCAAAAAAAAAAAGAjNzMzMzEw3wAAZLBUEFQQVAgAVABUEFQIAAAAVBBUQFRRMFQQVBBIAAAgcZAAAAGb9//8VABUeFSIsFQQVBBUGFQYcGARkAAAAGARm/f//FgAoBGQAAAAYBGb9//8AAAAPOAIAAAADAgIAAAAEAgEDAiaSBxwVAhk1BAAGGTgGc2lnbmVkBGxpc3QEaXRlbRUCFgQWpAEWrAEmlgYm5gUcGARkAAAAGARm/f//FgAoBGQAAAAYBGb9//8AGSwVBBUEFQIAFQAVBBUCAAAAFQQVIBUkTBUEFQQSAAAQPBcAAAAAAAAAlgAAAAAAAAAVABUeFSIsFQQVBBUGFQYcGAiWAAAAAAAAABgIFwAAAAAAAAAWACgIlgAAAAAAAAAYCBcAAAAAAAAAAAAADzgCAAAAAwICAAAABAIBAwImpgocFQQZNQQABhk4CHVuc2lnbmVkBGxpc3QEaXRlbRUCFgQW1AEW3AEmigkmyggcGAiWAAAAAAAAABgIFwAAAAAAAAAWACgIlgAAAAAAAAAYCBcAAAAAAAAAABksFQQVBBUCABUAFQQVAgAAABUCGdw1ABgGc2NoZW1hFQgANQAYB2Jvb2xlYW4VAhUGTDwAAAA1BBgEbGlzdBUCABUCJQIYBGl0ZW0lFkysEwgSAAAANQAYBm51bWJlchUCFQZMPAAAADUEGARsaXN0FQIAFQolAhgEaXRlbQA1ABgGc2lnbmVkFQIVBkw8AAAANQQYBGxpc3QVAgAVAiUCGARpdGVtADUAGAh1bnNpZ25lZBUCFQZMPAAAADUEGARsaXN0FQIAFQQlAhgEaXRlbQAWAhkcGUwmlAEcFQIZNQQABhk4B2Jvb2xlYW4EbGlzdARpdGVtFQIWAhaEARaMASYwJggcNgAoBAEAAAAYBAEAAAAAGSwVBBUEFQIAFQAVBBUCAAAAJo4EHBUKGTUEAAYZOAZudW1iZXIEbGlzdARpdGVtFQIWBBbUARbcASbyAiayAhwYCAAAAAAAAAAAGAjNzMzMzEw3wBYAKAgAAAAAAAAAABgIzczMzMxMN8AAGSwVBBUEFQIAFQAVBBUCAAAAJpIHHBUCGTUEAAYZOAZzaWduZWQEbGlzdARpdGVtFQIWBBakARasASaWBibmBRwYBGQAAAAYBGb9//8WACgEZAAAABgEZv3//wAZLBUEFQQVAgAVABUEFQIAAAAmpgocFQQZNQQABhk4CHVuc2lnbmVkBGxpc3QEaXRlbRUCFgQW1AEW3AEmigkmyggcGAiWAAAAAAAAABgIFwAAAAAAAAAWACgIlgAAAAAAAAAYCBcAAAAAAAAAABksFQQVBBUCABUAFQQVAgAAABbQBRYCJpQBFvAFFAAAKB9wYXJxdWV0LWNwcC1hcnJvdyB2ZXJzaW9uIDUuMC4wGUwcAAAcAAAcAAAcAAAAigIAAFBBUjE=" + ] + ] + ]; + [ + "aaa"; + # + ]; + [ + "bbb"; + [ + [ + "UEFSMRUEFQAVAkwVABUEEgAAABUAFRoVHiwVAhUEFQYVBhw2AgAAAA0wAgAAAAIAAgAAAAIAACZuHBUCGTUEAAYZOAdib29sZWFuBGxpc3QEaXRlbRUCFgIWYBZmJiYmCBw2AgAZLBUEFQQVAgAVABUEFQIAAAAVBBUQFRRMFQIVBBIAAAgcAAAAAAAA8D8VABUeFSIsFQIVBBUGFQYcGAgAAAAAAADwPxgIAAAAAAAA8D8WACgIAAAAAAAA8D8YCAAAAAAAAPA/AAAADzgCAAAAAgACAAAAAgIBAgAmugMcFQoZNQQABhk4Bm51bWJlcgRsaXN0BGl0ZW0VAhYCFsQBFswBJp4CJu4BHBgIAAAAAAAA8D8YCAAAAAAAAPA/FgAoCAAAAAAAAPA/GAgAAAAAAADwPwAZLBUEFQQVAgAVABUEFQIAAAAVBBUIFQxMFQIVBBIAAAQMOP///xUAFR4VIiwVAhUEFQYVBhwYBDj///8YBDj///8WACgEOP///xgEOP///wAAAA84AgAAAAIAAgAAAAICAQIAJrYGHBUCGTUEAAYZOAZzaWduZWQEbGlzdARpdGVtFQIWAhacARakASa6BSaSBRwYBDj///8YBDj///8WACgEOP///xgEOP///wAZLBUEFQQVAgAVABUEFQIAAAAVBBUAFQJMFQAVBBIAAAAVABUaFR4sFQIVBBUGFQYcNgIAAAANMAIAAAACAAIAAAACAAAm1AgcFQQZNQQABhk4CHVuc2lnbmVkBGxpc3QEaXRlbRUCFgIWYBZmJowIJu4HHDYCABksFQQVBBUCABUAFQQVAgAAABUCGdw1ABgGc2NoZW1hFQgANQAYB2Jvb2xlYW4VAhUGTDwAAAA1BBgEbGlzdBUCABUCJQIYBGl0ZW0lFkysEwgSAAAANQAYBm51bWJlchUCFQZMPAAAADUEGARsaXN0FQIAFQolAhgEaXRlbQA1ABgGc2lnbmVkFQIVBkw8AAAANQQYBGxpc3QVAgAVAiUCGARpdGVtADUAGAh1bnNpZ25lZBUCFQZMPAAAADUEGARsaXN0FQIAFQQlAhgEaXRlbQAWAhkcGUwmbhwVAhk1BAAGGTgHYm9vbGVhbgRsaXN0BGl0ZW0VAhYCFmAWZiYmJggcNgIAGSwVBBUEFQIAFQAVBBUCAAAAJroDHBUKGTUEAAYZOAZudW1iZXIEbGlzdARpdGVtFQIWAhbEARbMASaeAibuARwYCAAAAAAAAPA/GAgAAAAAAADwPxYAKAgAAAAAAADwPxgIAAAAAAAA8D8AGSwVBBUEFQIAFQAVBBUCAAAAJrYGHBUCGTUEAAYZOAZzaWduZWQEbGlzdARpdGVtFQIWAhacARakASa6BSaSBRwYBDj///8YBDj///8WACgEOP///xgEOP///wAZLBUEFQQVAgAVABUEFQIAAAAm1AgcFQQZNQQABhk4CHVuc2lnbmVkBGxpc3QEaXRlbRUCFgIWYBZmJowIJu4HHDYCABksFQQVBBUCABUAFQQVAgAAABagBBYCJm4WvAQUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAABQAgAAUEFSMQ==" + ] + ] + ]; + [ + "bbb"; + # + ]; + [ + "ccc"; + [ + [ + "UEFSMRUEFQgVDEwVAhUEEgAABAwBAAAAFQAVHhUiLBUCFQQVBhUGHDYAKAQBAAAAGAQBAAAAAAAADzgCAAAAAgACAAAAAgIBAgAmlAEcFQIZNQQABhk4B2Jvb2xlYW4EbGlzdARpdGVtFQIWAhaEARaMASYwJggcNgAoBAEAAAAYBAEAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVIBUkTBUEFQQSAAAQPAAAAAAAAARAAAAAAAAAAEAVABUeFSIsFQQVBBUGFQYcGAgAAAAAAAAEQBgIAAAAAAAAAEAWACgIAAAAAAAABEAYCAAAAAAAAABAAAAADzgCAAAAAwICAAAABAIBAwImjgQcFQoZNQQABhk4Bm51bWJlcgRsaXN0BGl0ZW0VAhYEFtQBFtwBJvICJrICHBgIAAAAAAAABEAYCAAAAAAAAABAFgAoCAAAAAAAAARAGAgAAAAAAAAAQAAZLBUEFQQVAgAVABUEFQIAAAAVBBUAFQJMFQAVBBIAAAAVABUaFR4sFQIVBBUGFQYcNgIAAAANMAIAAAACAAIAAAACAAAmzAYcFQIZNQQABhk4BnNpZ25lZARsaXN0BGl0ZW0VAhYCFmAWZiaEBibmBRw2AgAZLBUEFQQVAgAVABUEFQIAAAAVBBUgFSRMFQQVBBIAABA8SwAAAAAAAAD5AgAAAAAAABUAFR4VIiwVBBUEFQYVBhwYCPkCAAAAAAAAGAhLAAAAAAAAABYAKAj5AgAAAAAAABgISwAAAAAAAAAAAAAPOAIAAAADAgIAAAAEAgEDAiasCRwVBBk1BAAGGTgIdW5zaWduZWQEbGlzdARpdGVtFQIWBBbUARbcASaQCCbQBxwYCPkCAAAAAAAAGAhLAAAAAAAAABYAKAj5AgAAAAAAABgISwAAAAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQIZ3DUAGAZzY2hlbWEVCAA1ABgHYm9vbGVhbhUCFQZMPAAAADUEGARsaXN0FQIAFQIlAhgEaXRlbSUWTKwTCBIAAAA1ABgGbnVtYmVyFQIVBkw8AAAANQQYBGxpc3QVAgAVCiUCGARpdGVtADUAGAZzaWduZWQVAhUGTDwAAAA1BBgEbGlzdBUCABUCJQIYBGl0ZW0ANQAYCHVuc2lnbmVkFQIVBkw8AAAANQQYBGxpc3QVAgAVBCUCGARpdGVtABYCGRwZTCaUARwVAhk1BAAGGTgHYm9vbGVhbgRsaXN0BGl0ZW0VAhYCFoQBFowBJjAmCBw2ACgEAQAAABgEAQAAAAAZLBUEFQQVAgAVABUEFQIAAAAmjgQcFQoZNQQABhk4Bm51bWJlcgRsaXN0BGl0ZW0VAhYEFtQBFtwBJvICJrICHBgIAAAAAAAABEAYCAAAAAAAAABAFgAoCAAAAAAAAARAGAgAAAAAAAAAQAAZLBUEFQQVAgAVABUEFQIAAAAmzAYcFQIZNQQABhk4BnNpZ25lZARsaXN0BGl0ZW0VAhYCFmAWZiaEBibmBRw2AgAZLBUEFQQVAgAVABUEFQIAAAAmrAkcFQQZNQQABhk4CHVuc2lnbmVkBGxpc3QEaXRlbRUCFgQW1AEW3AEmkAgm0AccGAj5AgAAAAAAABgISwAAAAAAAAAWACgI+QIAAAAAAAAYCEsAAAAAAAAAABksFQQVBBUCABUAFQQVAgAAABaMBRYCJpQBFqoFFAAAKB9wYXJxdWV0LWNwcC1hcnJvdyB2ZXJzaW9uIDUuMC4wGUwcAAAcAAAcAAAcAAAAcAIAAFBBUjE=" + ] + ] + ]; + [ + "ccc"; + # + ]; + [ + "ddd"; + [ + [ + "UEFSMRUEFQAVAkwVABUEEgAAABUAFRoVHiwVAhUEFQYVBhw2AgAAAA0wAgAAAAIAAgAAAAIAACZuHBUCGTUEAAYZOAdib29sZWFuBGxpc3QEaXRlbRUCFgIWYBZmJiYmCBw2AgAZLBUEFQQVAgAVABUEFQIAAAAVBBUQFRRMFQIVBBIAAAgcboYb8PkhCUAVABUeFSIsFQIVBBUGFQYcGAhuhhvw+SEJQBgIboYb8PkhCUAWACgIboYb8PkhCUAYCG6GG/D5IQlAAAAADzgCAAAAAgACAAAAAgIBAgAmugMcFQoZNQQABhk4Bm51bWJlcgRsaXN0BGl0ZW0VAhYCFsQBFswBJp4CJu4BHBgIboYb8PkhCUAYCG6GG/D5IQlAFgAoCG6GG/D5IQlAGAhuhhvw+SEJQAAZLBUEFQQVAgAVABUEFQIAAAAVBBUIFQxMFQIVBBIAAAQM+////xUAFR4VIiwVAhUEFQYVBhwYBPv///8YBPv///8WACgE+////xgE+////wAAAA84AgAAAAIAAgAAAAICAQIAJrYGHBUCGTUEAAYZOAZzaWduZWQEbGlzdARpdGVtFQIWAhacARakASa6BSaSBRwYBPv///8YBPv///8WACgE+////xgE+////wAZLBUEFQQVAgAVABUEFQIAAAAVBBUAFQJMFQAVBBIAAAAVABUaFR4sFQIVBBUGFQYcNgIAAAANMAIAAAACAAIAAAACAAAm1AgcFQQZNQQABhk4CHVuc2lnbmVkBGxpc3QEaXRlbRUCFgIWYBZmJowIJu4HHDYCABksFQQVBBUCABUAFQQVAgAAABUCGdw1ABgGc2NoZW1hFQgANQAYB2Jvb2xlYW4VAhUGTDwAAAA1BBgEbGlzdBUCABUCJQIYBGl0ZW0lFkysEwgSAAAANQAYBm51bWJlchUCFQZMPAAAADUEGARsaXN0FQIAFQolAhgEaXRlbQA1ABgGc2lnbmVkFQIVBkw8AAAANQQYBGxpc3QVAgAVAiUCGARpdGVtADUAGAh1bnNpZ25lZBUCFQZMPAAAADUEGARsaXN0FQIAFQQlAhgEaXRlbQAWAhkcGUwmbhwVAhk1BAAGGTgHYm9vbGVhbgRsaXN0BGl0ZW0VAhYCFmAWZiYmJggcNgIAGSwVBBUEFQIAFQAVBBUCAAAAJroDHBUKGTUEAAYZOAZudW1iZXIEbGlzdARpdGVtFQIWAhbEARbMASaeAibuARwYCG6GG/D5IQlAGAhuhhvw+SEJQBYAKAhuhhvw+SEJQBgIboYb8PkhCUAAGSwVBBUEFQIAFQAVBBUCAAAAJrYGHBUCGTUEAAYZOAZzaWduZWQEbGlzdARpdGVtFQIWAhacARakASa6BSaSBRwYBPv///8YBPv///8WACgE+////xgE+////wAZLBUEFQQVAgAVABUEFQIAAAAm1AgcFQQZNQQABhk4CHVuc2lnbmVkBGxpc3QEaXRlbRUCFgIWYBZmJowIJu4HHDYCABksFQQVBBUCABUAFQQVAgAAABagBBYCJm4WvAQUAAAoH3BhcnF1ZXQtY3BwLWFycm93IHZlcnNpb24gNS4wLjAZTBwAABwAABwAABwAAABQAgAAUEFSMQ==" + ] + ] + ]; + [ + "ddd"; + # + ]; + [ + "iii"; + [ + [ + "UEFSMRUEFQgVDEwVAhUEEgAABAwBAAAAFQAVHhUiLBUCFQQVBhUGHDYAKAQBAAAAGAQBAAAAAAAADzgCAAAAAgACAAAAAgIBAgAmlAEcFQIZNQQABhk4B2Jvb2xlYW4EbGlzdARpdGVtFQIWAhaEARaMASYwJggcNgAoBAEAAAAYBAEAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVEBUUTBUCFQQSAAAIHM3MzMzM1HRAFQAVHhUiLBUCFQQVBhUGHBgIzczMzMzUdEAYCM3MzMzM1HRAFgAoCM3MzMzM1HRAGAjNzMzMzNR0QAAAAA84AgAAAAIAAgAAAAICAQIAJv4DHBUKGTUEAAYZOAZudW1iZXIEbGlzdARpdGVtFQIWAhbEARbMASbiAiayAhwYCM3MzMzM1HRAGAjNzMzMzNR0QBYAKAjNzMzMzNR0QBgIzczMzMzUdEAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVCBUMTBUCFQQSAAAEDAkDAAAVABUeFSIsFQIVBBUGFQYcGAQJAwAAGAQJAwAAFgAoBAkDAAAYBAkDAAAAAAAPOAIAAAACAAIAAAACAgECACb6BhwVAhk1BAAGGTgGc2lnbmVkBGxpc3QEaXRlbRUCFgIWnAEWpAEm/gUm1gUcGAQJAwAAGAQJAwAAFgAoBAkDAAAYBAkDAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVEBUUTBUCFQQSAAAIHJYAAAAAAAAAFQAVHhUiLBUCFQQVBhUGHBgIlgAAAAAAAAAYCJYAAAAAAAAAFgAoCJYAAAAAAAAAGAiWAAAAAAAAAAAAAA84AgAAAAIAAgAAAAICAQIAJv4JHBUEGTUEAAYZOAh1bnNpZ25lZARsaXN0BGl0ZW0VAhYCFsQBFswBJuIIJrIIHBgIlgAAAAAAAAAYCJYAAAAAAAAAFgAoCJYAAAAAAAAAGAiWAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAVAhncNQAYBnNjaGVtYRUIADUAGAdib29sZWFuFQIVBkw8AAAANQQYBGxpc3QVAgAVAiUCGARpdGVtJRZMrBMIEgAAADUAGAZudW1iZXIVAhUGTDwAAAA1BBgEbGlzdBUCABUKJQIYBGl0ZW0ANQAYBnNpZ25lZBUCFQZMPAAAADUEGARsaXN0FQIAFQIlAhgEaXRlbQA1ABgIdW5zaWduZWQVAhUGTDwAAAA1BBgEbGlzdBUCABUEJQIYBGl0ZW0AFgIZHBlMJpQBHBUCGTUEAAYZOAdib29sZWFuBGxpc3QEaXRlbRUCFgIWhAEWjAEmMCYIHDYAKAQBAAAAGAQBAAAAABksFQQVBBUCABUAFQQVAgAAACb+AxwVChk1BAAGGTgGbnVtYmVyBGxpc3QEaXRlbRUCFgIWxAEWzAEm4gImsgIcGAjNzMzMzNR0QBgIzczMzMzUdEAWACgIzczMzMzUdEAYCM3MzMzM1HRAABksFQQVBBUCABUAFQQVAgAAACb6BhwVAhk1BAAGGTgGc2lnbmVkBGxpc3QEaXRlbRUCFgIWnAEWpAEm/gUm1gUcGAQJAwAAGAQJAwAAFgAoBAkDAAAYBAkDAAAAGSwVBBUEFQIAFQAVBBUCAAAAJv4JHBUEGTUEAAYZOAh1bnNpZ25lZARsaXN0BGl0ZW0VAhYCFsQBFswBJuIIJrIIHBgIlgAAAAAAAAAYCJYAAAAAAAAAFgAoCJYAAAAAAAAAGAiWAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAWqAUWAiaUARbIBRQAACgfcGFycXVldC1jcHAtYXJyb3cgdmVyc2lvbiA1LjAuMBlMHAAAHAAAHAAAHAAAAIoCAABQQVIx" + ] + ] + ]; + [ + "iii"; + # + ]; + [ + "kkk"; + [ + [ + "UEFSMRUEFQgVDEwVAhUEEgAABAwAAAAAFQAVHhUiLBUEFQQVBhUGHDYAKAQAAAAAGAQAAAAAAAAADzgCAAAAAwICAAAABAIBBAAmlAEcFQIZNQQABhk4B2Jvb2xlYW4EbGlzdARpdGVtFQIWBBaEARaMASYwJggcNgAoBAAAAAAYBAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVIBUkTBUEFQQSAAAQPGZmZmZmZhrAuB6F61E4FsAVABUeFSIsFQQVBBUGFQYcGAi4HoXrUTgWwBgIZmZmZmZmGsAWACgIuB6F61E4FsAYCGZmZmZmZhrAAAAADzgCAAAAAwICAAAABAIBAwImjgQcFQoZNQQABhk4Bm51bWJlcgRsaXN0BGl0ZW0VAhYEFtQBFtwBJvICJrICHBgIuB6F61E4FsAYCGZmZmZmZhrAFgAoCLgehetROBbAGAhmZmZmZmYawAAZLBUEFQQVAgAVABUEFQIAAAAVBBUQFRRMFQQVBBIAAAgc8/////f///8VABUeFSIsFQQVBBUGFQYcGAT3////GATz////FgAoBPf///8YBPP///8AAAAPOAIAAAADAgIAAAAEAgEDAiaSBxwVAhk1BAAGGTgGc2lnbmVkBGxpc3QEaXRlbRUCFgQWpAEWrAEmlgYm5gUcGAT3////GATz////FgAoBPf///8YBPP///8AGSwVBBUEFQIAFQAVBBUCAAAAFQQVIBUkTBUEFQQSAAAQPJYAAAAAAAAAjwMAAAAAAAAVABUeFSIsFQQVBBUGFQYcGAiPAwAAAAAAABgIlgAAAAAAAAAWACgIjwMAAAAAAAAYCJYAAAAAAAAAAAAADzgCAAAAAwICAAAABAIBAwImpgocFQQZNQQABhk4CHVuc2lnbmVkBGxpc3QEaXRlbRUCFgQW1AEW3AEmigkmyggcGAiPAwAAAAAAABgIlgAAAAAAAAAWACgIjwMAAAAAAAAYCJYAAAAAAAAAABksFQQVBBUCABUAFQQVAgAAABUCGdw1ABgGc2NoZW1hFQgANQAYB2Jvb2xlYW4VAhUGTDwAAAA1BBgEbGlzdBUCABUCJQIYBGl0ZW0lFkysEwgSAAAANQAYBm51bWJlchUCFQZMPAAAADUEGARsaXN0FQIAFQolAhgEaXRlbQA1ABgGc2lnbmVkFQIVBkw8AAAANQQYBGxpc3QVAgAVAiUCGARpdGVtADUAGAh1bnNpZ25lZBUCFQZMPAAAADUEGARsaXN0FQIAFQQlAhgEaXRlbQAWAhkcGUwmlAEcFQIZNQQABhk4B2Jvb2xlYW4EbGlzdARpdGVtFQIWBBaEARaMASYwJggcNgAoBAAAAAAYBAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAJo4EHBUKGTUEAAYZOAZudW1iZXIEbGlzdARpdGVtFQIWBBbUARbcASbyAiayAhwYCLgehetROBbAGAhmZmZmZmYawBYAKAi4HoXrUTgWwBgIZmZmZmZmGsAAGSwVBBUEFQIAFQAVBBUCAAAAJpIHHBUCGTUEAAYZOAZzaWduZWQEbGlzdARpdGVtFQIWBBakARasASaWBibmBRwYBPf///8YBPP///8WACgE9////xgE8////wAZLBUEFQQVAgAVABUEFQIAAAAmpgocFQQZNQQABhk4CHVuc2lnbmVkBGxpc3QEaXRlbRUCFgQW1AEW3AEmigkmyggcGAiPAwAAAAAAABgIlgAAAAAAAAAWACgIjwMAAAAAAAAYCJYAAAAAAAAAABksFQQVBBUCABUAFQQVAgAAABbQBRYCJpQBFvAFFAAAKB9wYXJxdWV0LWNwcC1hcnJvdyB2ZXJzaW9uIDUuMC4wGUwcAAAcAAAcAAAcAAAAigIAAFBBUjE=" + ] + ] + ]; + [ + "kkk"; + # + ]; + [ + "qqq"; + [ + [ + "UEFSMRUEFQgVDEwVAhUEEgAABAwAAAAAFQAVHhUiLBUCFQQVBhUGHDYAKAQAAAAAGAQAAAAAAAAADzgCAAAAAgACAAAAAgIBAgAmlAEcFQIZNQQABhk4B2Jvb2xlYW4EbGlzdARpdGVtFQIWAhaEARaMASYwJggcNgAoBAAAAAAYBAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVEBUUTBUCFQQSAAAIHAAAAAAAADHAFQAVHhUiLBUCFQQVBhUGHBgIAAAAAAAAMcAYCAAAAAAAADHAFgAoCAAAAAAAADHAGAgAAAAAAAAxwAAAAA84AgAAAAIAAgAAAAICAQIAJv4DHBUKGTUEAAYZOAZudW1iZXIEbGlzdARpdGVtFQIWAhbEARbMASbiAiayAhwYCAAAAAAAADHAGAgAAAAAAAAxwBYAKAgAAAAAAAAxwBgIAAAAAAAAMcAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVCBUMTBUCFQQSAAAEDA8AAAAVABUeFSIsFQIVBBUGFQYcGAQPAAAAGAQPAAAAFgAoBA8AAAAYBA8AAAAAAAAPOAIAAAACAAIAAAACAgECACb6BhwVAhk1BAAGGTgGc2lnbmVkBGxpc3QEaXRlbRUCFgIWnAEWpAEm/gUm1gUcGAQPAAAAGAQPAAAAFgAoBA8AAAAYBA8AAAAAGSwVBBUEFQIAFQAVBBUCAAAAFQQVEBUUTBUCFQQSAAAIHMgAAAAAAAAAFQAVHhUiLBUCFQQVBhUGHBgIyAAAAAAAAAAYCMgAAAAAAAAAFgAoCMgAAAAAAAAAGAjIAAAAAAAAAAAAAA84AgAAAAIAAgAAAAICAQIAJv4JHBUEGTUEAAYZOAh1bnNpZ25lZARsaXN0BGl0ZW0VAhYCFsQBFswBJuIIJrIIHBgIyAAAAAAAAAAYCMgAAAAAAAAAFgAoCMgAAAAAAAAAGAjIAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAVAhncNQAYBnNjaGVtYRUIADUAGAdib29sZWFuFQIVBkw8AAAANQQYBGxpc3QVAgAVAiUCGARpdGVtJRZMrBMIEgAAADUAGAZudW1iZXIVAhUGTDwAAAA1BBgEbGlzdBUCABUKJQIYBGl0ZW0ANQAYBnNpZ25lZBUCFQZMPAAAADUEGARsaXN0FQIAFQIlAhgEaXRlbQA1ABgIdW5zaWduZWQVAhUGTDwAAAA1BBgEbGlzdBUCABUEJQIYBGl0ZW0AFgIZHBlMJpQBHBUCGTUEAAYZOAdib29sZWFuBGxpc3QEaXRlbRUCFgIWhAEWjAEmMCYIHDYAKAQAAAAAGAQAAAAAABksFQQVBBUCABUAFQQVAgAAACb+AxwVChk1BAAGGTgGbnVtYmVyBGxpc3QEaXRlbRUCFgIWxAEWzAEm4gImsgIcGAgAAAAAAAAxwBgIAAAAAAAAMcAWACgIAAAAAAAAMcAYCAAAAAAAADHAABksFQQVBBUCABUAFQQVAgAAACb6BhwVAhk1BAAGGTgGc2lnbmVkBGxpc3QEaXRlbRUCFgIWnAEWpAEm/gUm1gUcGAQPAAAAGAQPAAAAFgAoBA8AAAAYBA8AAAAAGSwVBBUEFQIAFQAVBBUCAAAAJv4JHBUEGTUEAAYZOAh1bnNpZ25lZARsaXN0BGl0ZW0VAhYCFsQBFswBJuIIJrIIHBgIyAAAAAAAAAAYCMgAAAAAAAAAFgAoCMgAAAAAAAAAGAjIAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAWqAUWAiaUARbIBRQAACgfcGFycXVldC1jcHAtYXJyb3cgdmVyc2lvbiA1LjAuMBlMHAAAHAAAHAAAHAAAAIoCAABQQVIx" + ] + ] + ]; + [ + "qqq"; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeParquet_/results.txt b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeParquet_/results.txt new file mode 100644 index 0000000000..6662cdb27e --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeParquet_/results.txt @@ -0,0 +1,113 @@ +[ + { + "Label" = "Simple"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "UEFSMRUEFRAVFEwVBBUEEgAACBwBAAAAAAAAABUAFRQVGCwVFBUEFQYVBhw2CCgEAQAAABgEAAAAAAAAAAokAwAAAAV1AgEDOCaSARwVAhk1BAAGGRgHYm9vbGVhbhUCFhQWggEWigEmOCYIHDYIKAQBAAAAGAQAAAAAABksFQQVBBUCABUAFQQVAgAAABUEFaABFXpMFRQVBBIAAFAAAA0BHG6GG/D5IQlACQ8kBEDNzMzMzEw3wAUIDNR0QGYFAQQawAkgADENCATwPwkQJABAuB6F61E4FsAVABUUFRgsFRQVBBUGFQYcGAjNzMzMzNR0QBgIzczMzMxMN8AWACgIzczMzMzUdEAYCM3MzMzMTDfAAAAACiQEBRAyVHaYAAAAJsYEHBUKGTUEAAYZGAZudW1iZXIVAhYUFswCFqoCJrQDJpwCHBgIzczMzMzUdEAYCM3MzMzMTDfAFgAoCM3MzMzM1HRAGAjNzMzMzEw3wAAZLBUEFQQVAgAVABUEFQIAAAAVBBVAFURMFRAVBBIAACB8ZAAAAPv///9m/f//CQMAAPP///8PAAAAOP////f///8VABUYFRwsFRQVBBUGFQYcGAQJAwAAGARm/f//FgQoBAkDAAAYBGb9//8AAAAMLAMAAAAF+wIDA4jG+ibgBxwVAhk1BAAGGRgGc2lnbmVkFQIWFBbOARbWASbqBiaKBhwYBAkDAAAYBGb9//8WBCgECQMAABgEZv3//wAZLBUEFQQVAgAVABUEFQIAAAAVBBVgFUhMFQwVBBIAADAEFwAJAQBLCQcEAJYNCADIDQg8+QIAAAAAAACPAwAAAAAAABUAFRgVHCwVFBUEFQYVBhwYCI8DAAAAAAAAGAgXAAAAAAAAABYEKAiPAwAAAAAAABgIFwAAAAAAAAAAAAAMLAMAAAAFfQMDA4iksSb+ChwVBBk1BAAGGRgIdW5zaWduZWQVAhYUFo4CFvoBJugJJoQJHBgIjwMAAAAAAAAYCBcAAAAAAAAAFgQoCI8DAAAAAAAAGAgXAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAVBBV+FXZMFRIVBBIAAD8YAwAAAGFhYQEHCGRkZAEHCGFiYwEHCGlpaQEHCHp6egEHCHFxcQEHQGJiYgMAAABjY2MDAAAAa2trFQAVFBUYLBUUFQQVBhUGHDYAKAN6enoYA2FhYQAAAAokBAUQAkNlhwAAACauDhwVDBk1BAAGGRgDdXRmFQIWFBbsARboASbYDSbGDBw2ACgDenp6GANhYWEAGSwVBBUEFQIAFQAVBBUCAAAAFQIZbDUAGAZzY2hlbWEVCgAVAiUCGAdib29sZWFuJRZMrBMIEgAAABUKJQAYBm51bWJlcgAVAiUCGAZzaWduZWQAFQQlAhgIdW5zaWduZWQAFQwlABgDdXRmABYUGRwZXCaSARwVAhk1BAAGGRgHYm9vbGVhbhUCFhQWggEWigEmOCYIHDYIKAQBAAAAGAQAAAAAABksFQQVBBUCABUAFQQVAgAAACbGBBwVChk1BAAGGRgGbnVtYmVyFQIWFBbMAhaqAia0AyacAhwYCM3MzMzM1HRAGAjNzMzMzEw3wBYAKAjNzMzMzNR0QBgIzczMzMxMN8AAGSwVBBUEFQIAFQAVBBUCAAAAJuAHHBUCGTUEAAYZGAZzaWduZWQVAhYUFs4BFtYBJuoGJooGHBgECQMAABgEZv3//xYEKAQJAwAAGARm/f//ABksFQQVBBUCABUAFQQVAgAAACb+ChwVBBk1BAAGGRgIdW5zaWduZWQVAhYUFo4CFvoBJugJJoQJHBgIjwMAAAAAAAAYCBcAAAAAAAAAFgQoCI8DAAAAAAAAGAgXAAAAAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAmrg4cFQwZNQQABhkYA3V0ZhUCFhQW7AEW6AEm2A0mxgwcNgAoA3p6ehgDYWFhABksFQQVBBUCABUAFQQVAgAAABaWCRYUJpIBFuwIFAAAKB9wYXJxdWV0LWNwcC1hcnJvdyB2ZXJzaW9uIDUuMC4wGVwcAAAcAAAcAAAcAAAcAAAAQAIAAFBBUjE=" + ] + ] + ]; + [ + # + ] + ] + } + ] + }; + { + "Label" = "Tuples"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "UEFSMRUEFWAVSEwVDBUEEgAAMAQXAAkBAEsJBwQAlg0IAMgNCDz5AgAAAAAAAI8DAAAAAAAAFQAVHBUgLBUUFQQVBhUGHBgIjwMAAAAAAAAYCBcAAAAAAAAAFgQoCI8DAAAAAAAAGAgXAAAAAAAAAAAAAA40BQAAAAWmagoAAwOIpLEmhgIcFQQZNQQABhkoBG1hbnkGbWFueS4wFQIWFBaSAhb+ASZsJggcGAiPAwAAAAAAABgIFwAAAAAAAAAWBCgIjwMAAAAAAAAYCBcAAAAAAAAAABksFQQVBBUCABUAFQQVAgAAABUEFUAVREwVEBUEEgAAIHxkAAAA+////2b9//8JAwAA8////w8AAAA4////9////xUAFRwVICwVFBUEFQYVBhwYBAkDAAAYBGb9//8WBCgECQMAABgEZv3//wAAAA40BQAAAAWaqgkAAwOIxvomqgUcFQIZNQQABhkoBG1hbnkGbWFueS4xFQIWFBbSARbaASawBCbQAxwYBAkDAAAYBGb9//8WBCgECQMAABgEZv3//wAZLBUEFQQVAgAVABUEFQIAAAAVBBV+FXZMFRIVBBIAAD8YAwAAAGFhYQEHCGRkZAEHCGFiYwEHCGlpaQEHCHp6egEHCHFxcQEHQGJiYgMAAABjY2MDAAAAa2trFQAVIBUkLBUUFQQVBhUGHDYAKAN6enoYA2FhYQAAABA8AgAAABQCBAUQAkNlhwAAACbMCBwVDBk1BAAGGSgEbWFueQZtYW55LjIVAhYUFvgBFvQBJuoHJtgGHDYAKAN6enoYA2FhYQAZLBUEFQQVAgAVABUEFQIAAAAVBBWgARV6TBUUFQQSAABQAAANARxuhhvw+SEJQAkPJARAzczMzMxMN8AFCAzUdEBmBQEEGsAJIAAxDQgE8D8JECQAQLgehetROBbAFQAVIBUkLBUUFQQVBhUGHBgIzczMzMzUdEAYCM3MzMzMTDfAFgAoCM3MzMzM1HRAGAjNzMzMzEw3wAAAABA8AgAAABQCBAUQMlR2mAAAACaUDBwVChk1BAAGGSgEbWFueQZtYW55LjMVAhYUFtgCFrYCJvYKJt4JHBgIzczMzMzUdEAYCM3MzMzMTDfAFgAoCM3MzMzM1HRAGAjNzMzMzEw3wAAZLBUEFQQVAgAVABUEFQIAAAAVBBUQFRRMFQQVBBIAAAgcAQAAAAAAAAAVABUYFRwsFRQVBBUGFQYcNggoBAEAAAAYBAAAAAAAAAAMLAUAAAAFZmoJAAEDOCbwDhwVAhk1BAAGGSgEbWFueQZtYW55LjQVAhYUFoYBFo4BJpIOJuINHDYIKAQBAAAAGAQAAAAAABksFQQVBBUCABUAFQQVAgAAABUCGXw1ABgGc2NoZW1hFQIANQIYBG1hbnkVCgAVBCUCGAZtYW55LjAAFQIlAhgGbWFueS4xABUMJQIYBm1hbnkuMgAVCiUCGAZtYW55LjMAFQIlAhgGbWFueS40JRZMrBMIEgAAABYUGRwZXCaGAhwVBBk1BAAGGSgEbWFueQZtYW55LjAVAhYUFpICFv4BJmwmCBwYCI8DAAAAAAAAGAgXAAAAAAAAABYEKAiPAwAAAAAAABgIFwAAAAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAJqoFHBUCGTUEAAYZKARtYW55Bm1hbnkuMRUCFhQW0gEW2gEmsAQm0AMcGAQJAwAAGARm/f//FgQoBAkDAAAYBGb9//8AGSwVBBUEFQIAFQAVBBUCAAAAJswIHBUMGTUEAAYZKARtYW55Bm1hbnkuMhUCFhQW+AEW9AEm6gcm2AYcNgAoA3p6ehgDYWFhABksFQQVBBUCABUAFQQVAgAAACaUDBwVChk1BAAGGSgEbWFueQZtYW55LjMVAhYUFtgCFrYCJvYKJt4JHBgIzczMzMzUdEAYCM3MzMzMTDfAFgAoCM3MzMzM1HRAGAjNzMzMzEw3wAAZLBUEFQQVAgAVABUEFQIAAAAm8A4cFQIZNQQABhkoBG1hbnkGbWFueS40FQIWFBaGARaOASaSDibiDRw2CCgEAQAAABgEAAAAAAAZLBUEFQQVAgAVABUEFQIAAAAWugkWFCaGAhaQCRQAACgfcGFycXVldC1jcHAtYXJyb3cgdmVyc2lvbiA1LjAuMBlcHAAAHAAAHAAAHAAAHAAAAGQCAABQQVIx" + ] + ] + ]; + [ + # + ] + ] + } + ] + }; + { + "Label" = "Lists"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "UEFSMRUEFRAVFEwVBBUEEgAACBwBAAAAAAAAABUAFR4VIiwVDBUEFQYVBhw2ACgEAQAAABgEAAAAAAAAAA84AgAAAAM+AgAAAAwCAQM4JpwBHBUCGTUEAAYZOAdib29sZWFuBGxpc3QEaXRlbRUCFgwWjAEWlAEmOCYIHDYAKAQBAAAAGAQAAAAAABksFQQVBBUCABUAFQQVAgAAABUEFaABFXpMFRQVBBIAAFAAAA0BHG6GG/D5IQlACQ8kBEDNzMzMzEw3wAUIDNR0QGYFAQQawAkgADENCATwPwkQJABAuB6F61E4FsAVABUuFTIsFRQVBBUGFQYcGAjNzMzMzNR0QBgIzczMzMxMN8AWACgIzczMzMzUdEAYCM3MzMzMTDfAAAAAF1gDAAAABf4DAgAAABQCBAUQMlR2mAAAACb+BBwVChk1BAAGGTgGbnVtYmVyBGxpc3QEaXRlbRUCFhQW5gIWxAIm0gMmugIcGAjNzMzMzNR0QBgIzczMzMxMN8AWACgIzczMzMzUdEAYCM3MzMzMTDfAABksFQQVBBUCABUAFQQVAgAAABUEFUAVREwVEBUEEgAAIHxkAAAA+////2b9//8JAwAA8////w8AAAA4////9////xUAFSIVJiwVEBUEFQYVBhwYBAkDAAAYBGb9//8WACgECQMAABgEZv3//wAAABFAAgAAAAP+AgAAABACAwOIxvomtggcFQIZNQQABhk4BnNpZ25lZARsaXN0BGl0ZW0VAhYQFtgBFuABJrYHJtYGHBgECQMAABgEZv3//xYAKAQJAwAAGARm/f//ABksFQQVBBUCABUAFQQVAgAAABUEFWAVSEwVDBUEEgAAMAQXAAkBAEsJBwQAlg0IAMgNCDz5AgAAAAAAAI8DAAAAAAAAFQAVIhUmLBUQFQQVBhUGHBgIjwMAAAAAAAAYCBcAAAAAAAAAFgAoCI8DAAAAAAAAGAgXAAAAAAAAAAAAABFAAgAAAAP+AgAAABACAwOIpLEm8gscFQQZNQQABhk4CHVuc2lnbmVkBGxpc3QEaXRlbRUCFhAWmAIWhAIm0gom7gkcGAiPAwAAAAAAABgIFwAAAAAAAAAWACgIjwMAAAAAAAAYCBcAAAAAAAAAABksFQQVBBUCABUAFQQVAgAAABUEFX4VdkwVEhUEEgAAPxgDAAAAYWFhAQcIZGRkAQcIYWJjAQcIaWlpAQcIenp6AQcIcXFxAQdAYmJiAwAAAGNjYwMAAABra2sVABUuFTIsFRQVBBUGFQYcNgAoA3p6ehgDYWFhAAAAF1gDAAAABf4DAgAAABQCBAUQAkNlhwAAACbQDxwVDBk1BAAGGTgDdXRmBGxpc3QEaXRlbRUCFhQWhgIWggIm4A4mzg0cNgAoA3p6ehgDYWFhABksFQQVBBUCABUAFQQVAgAAABUCGfwQNQAYBnNjaGVtYRUKADUAGAdib29sZWFuFQIVBkw8AAAANQQYBGxpc3QVAgAVAiUCGARpdGVtJRZMrBMIEgAAADUAGAZudW1iZXIVAhUGTDwAAAA1BBgEbGlzdBUCABUKJQIYBGl0ZW0ANQAYBnNpZ25lZBUCFQZMPAAAADUEGARsaXN0FQIAFQIlAhgEaXRlbQA1ABgIdW5zaWduZWQVAhUGTDwAAAA1BBgEbGlzdBUCABUEJQIYBGl0ZW0ANQAYA3V0ZhUCFQZMPAAAADUEGARsaXN0FQIAFQwlAhgEaXRlbQAWAhkcGVwmnAEcFQIZNQQABhk4B2Jvb2xlYW4EbGlzdARpdGVtFQIWDBaMARaUASY4JggcNgAoBAEAAAAYBAAAAAAAGSwVBBUEFQIAFQAVBBUCAAAAJv4EHBUKGTUEAAYZOAZudW1iZXIEbGlzdARpdGVtFQIWFBbmAhbEAibSAya6AhwYCM3MzMzM1HRAGAjNzMzMzEw3wBYAKAjNzMzMzNR0QBgIzczMzMxMN8AAGSwVBBUEFQIAFQAVBBUCAAAAJrYIHBUCGTUEAAYZOAZzaWduZWQEbGlzdARpdGVtFQIWEBbYARbgASa2BybWBhwYBAkDAAAYBGb9//8WACgECQMAABgEZv3//wAZLBUEFQQVAgAVABUEFQIAAAAm8gscFQQZNQQABhk4CHVuc2lnbmVkBGxpc3QEaXRlbRUCFhAWmAIWhAIm0gom7gkcGAiPAwAAAAAAABgIFwAAAAAAAAAWACgIjwMAAAAAAAAYCBcAAAAAAAAAABksFQQVBBUCABUAFQQVAgAAACbQDxwVDBk1BAAGGTgDdXRmBGxpc3QEaXRlbRUCFhQWhgIWggIm4A4mzg0cNgAoA3p6ehgDYWFhABksFQQVBBUCABUAFQQVAgAAABboCRYCJpwBFr4JFAAAKB9wYXJxdWV0LWNwcC1hcnJvdyB2ZXJzaW9uIDUuMC4wGVwcAAAcAAAcAAAcAAAcAAAA/wIAAFBBUjE=" + ] + ] + ]; + [ + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeTSVWithNames_/results.txt b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeTSVWithNames_/results.txt new file mode 100644 index 0000000000..b3a8e88e1c --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_SerializeTSVWithNames_/results.txt @@ -0,0 +1,107 @@ +[ + { + "Label" = "Simple"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "boolean\tnumber\tsigned\tunsigned\tutf\n1\t0\t100\t23\taaa\n\\N\t3.14159\t-5\t\\N\tddd\n1\t2.5\t\\N\t75\tabc\n\\N\t-23.3\t-666\t150\taaa\n1\t333.3\t777\t150\tiii\n0\t-6.6\t-13\t150\tzzz\n0\t-17\t15\t200\tqqq\n\\N\t1\t-200\t\\N\tbbb\n\\N\t2\t\\N\t761\tccc\n0\t-5.555\t-9\t911\tkkk\n" + ] + ]; + [ + # + ] + ] + } + ] + }; + { + "Label" = "Tuples"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "many\n(23,100,'aaa',0,1)\n(NULL,-5,'ddd',3.14159,NULL)\n(75,NULL,'abc',2.5,1)\n(150,-666,'aaa',-23.3,NULL)\n(150,777,'iii',333.3,1)\n(150,-13,'zzz',-6.6,0)\n(200,15,'qqq',-17,0)\n(NULL,-200,'bbb',1,NULL)\n(761,NULL,'ccc',2,NULL)\n(911,-9,'kkk',-5.555,0)\n" + ] + ]; + [ + # + ] + ] + } + ] + }; + { + "Label" = "Lists"; + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "out"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "boolean\tnumber\tsigned\tunsigned\tutf\n[1,1,1,0,0,0]\t[0,3.14159,2.5,-23.3,333.3,-6.6,-17,1,2,-5.555]\t[100,-5,-666,777,-13,15,-200,-9]\t[23,75,150,150,150,200,761,911]\t['aaa','ddd','abc','aaa','iii','zzz','qqq','bbb','ccc','kkk']\n" + ] + ]; + [ + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_YqlType_/results.txt b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_YqlType_/results.txt new file mode 100644 index 0000000000..b861d5dfc2 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/canondata/test.test_YqlType_/results.txt @@ -0,0 +1,460 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column1"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column2"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column3"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column4"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column5"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column6"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column7"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column8"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column9"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column10"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column11"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column12"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column13"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column14"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column15"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column16"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column17"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column18"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column19"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column20"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column21"; + [ + "TupleType"; + [ + [ + "DataType"; + "Utf8" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "Int8"; + "Int8" + ]; + [ + "Uint8"; + "Uint8" + ]; + [ + "Int16"; + "Int16" + ]; + [ + "Uint16"; + "Uint16" + ]; + [ + "Int32"; + "Int32" + ]; + [ + "Uint32"; + "Uint32" + ]; + [ + "Int64"; + "Int64" + ]; + [ + "Uint64"; + "Uint64" + ]; + [ + "Float"; + "Float" + ]; + [ + "Double"; + "Double" + ]; + [ + "String"; + "String" + ]; + [ + "String"; + "String" + ]; + [ + "TzDate"; + "TzDate" + ]; + [ + "TzDatetime"; + "TzDatetime" + ]; + [ + "Uuid"; + "Uuid" + ]; + [ + "Optional<Int8>"; + "Optional<Int8>" + ]; + [ + "Null"; + "Null" + ]; + [ + "List<Int8>"; + "List<Int8>" + ]; + [ + "EmptyList"; + "EmptyList" + ]; + [ + "Tuple<Int32,String>"; + "Tuple<Int32,String>" + ]; + [ + "Enum<'a'>"; + "Enum<'a'>" + ]; + [ + "Enum<'b'>"; + "Enum<'b'>" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/ParseFromYdb.in b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/ParseFromYdb.in new file mode 100644 index 0000000000..ccc0a6fa8b --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/ParseFromYdb.in @@ -0,0 +1,2 @@ +{"key"="Single";"subkey"="3";"value"="\x01\x00\x02\xFF\xFF\xFF\xFF\x00\x04\x02\x0C\x72\x65\x6C\x65\x61\x73\x65\x5F\x64\x61\x74\x65\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x55\x49\x6E\x74\x36\x34\x29\x00\x00\x7E\x33\x00\x00\x00\x00\x00\x00\x26\x3F\x00\x00\x00\x00\x00\x00\x09\x73\x65\x72\x69\x65\x73\x5F\x69\x64\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x55\x49\x6E\x74\x36\x34\x29\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x0B\x73\x65\x72\x69\x65\x73\x5F\x69\x6E\x66\x6F\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x53\x74\x72\x69\x6E\x67\x29\x00\x00\xB9\x01\x54\x68\x65\x20\x49\x54\x20\x43\x72\x6F\x77\x64\x20\x69\x73\x20\x61\x20\x42\x72\x69\x74\x69\x73\x68\x20\x73\x69\x74\x63\x6F\x6D\x20\x70\x72\x6F\x64\x75\x63\x65\x64\x20\x62\x79\x20\x43\x68\x61\x6E\x6E\x65\x6C\x20\x34\x2C\x20\x77\x72\x69\x74\x74\x65\x6E\x20\x62\x79\x20\x47\x72\x61\x68\x61\x6D\x20\x4C\x69\x6E\x65\x68\x61\x6E\x2C\x20\x70\x72\x6F\x64\x75\x63\x65\x64\x20\x62\x79\x20\x41\x73\x68\x20\x41\x74\x61\x6C\x6C\x61\x20\x61\x6E\x64\x20\x73\x74\x61\x72\x72\x69\x6E\x67\x20\x43\x68\x72\x69\x73\x20\x4F\x27\x44\x6F\x77\x64\x2C\x20\x52\x69\x63\x68\x61\x72\x64\x20\x41\x79\x6F\x61\x64\x65\x2C\x20\x4B\x61\x74\x68\x65\x72\x69\x6E\x65\x20\x50\x61\x72\x6B\x69\x6E\x73\x6F\x6E\x2C\x20\x61\x6E\x64\x20\x4D\x61\x74\x74\x20\x42\x65\x72\x72\x79\x2E\xC5\x01\x53\x69\x6C\x69\x63\x6F\x6E\x20\x56\x61\x6C\x6C\x65\x79\x20\x69\x73\x20\x61\x6E\x20\x41\x6D\x65\x72\x69\x63\x61\x6E\x20\x63\x6F\x6D\x65\x64\x79\x20\x74\x65\x6C\x65\x76\x69\x73\x69\x6F\x6E\x20\x73\x65\x72\x69\x65\x73\x20\x63\x72\x65\x61\x74\x65\x64\x20\x62\x79\x20\x4D\x69\x6B\x65\x20\x4A\x75\x64\x67\x65\x2C\x20\x4A\x6F\x68\x6E\x20\x41\x6C\x74\x73\x63\x68\x75\x6C\x65\x72\x20\x61\x6E\x64\x20\x44\x61\x76\x65\x20\x4B\x72\x69\x6E\x73\x6B\x79\x2E\x20\x54\x68\x65\x20\x73\x65\x72\x69\x65\x73\x20\x66\x6F\x63\x75\x73\x65\x73\x20\x6F\x6E\x20\x66\x69\x76\x65\x20\x79\x6F\x75\x6E\x67\x20\x6D\x65\x6E\x20\x77\x68\x6F\x20\x66\x6F\x75\x6E\x64\x65\x64\x20\x61\x20\x73\x74\x61\x72\x74\x75\x70\x20\x63\x6F\x6D\x70\x61\x6E\x79\x20\x69\x6E\x20\x53\x69\x6C\x69\x63\x6F\x6E\x20\x56\x61\x6C\x6C\x65\x79\x2E\x05\x74\x69\x74\x6C\x65\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x53\x74\x72\x69\x6E\x67\x29\x00\x00\x08\x49\x54\x20\x43\x72\x6F\x77\x64\x0E\x53\x69\x6C\x69\x63\x6F\x6E\x20\x56\x61\x6C\x6C\x65\x79"}; +{"key"="Double";"subkey"="4";"value"="\x01\x00\x02\xFF\xFF\xFF\xFF\x00\x04\x02\x0C\x72\x65\x6C\x65\x61\x73\x65\x5F\x64\x61\x74\x65\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x55\x49\x6E\x74\x36\x34\x29\x00\x00\x7E\x33\x00\x00\x00\x00\x00\x00\x26\x3F\x00\x00\x00\x00\x00\x00\x09\x73\x65\x72\x69\x65\x73\x5F\x69\x64\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x55\x49\x6E\x74\x36\x34\x29\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x0B\x73\x65\x72\x69\x65\x73\x5F\x69\x6E\x66\x6F\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x53\x74\x72\x69\x6E\x67\x29\x00\x00\xB9\x01\x54\x68\x65\x20\x49\x54\x20\x43\x72\x6F\x77\x64\x20\x69\x73\x20\x61\x20\x42\x72\x69\x74\x69\x73\x68\x20\x73\x69\x74\x63\x6F\x6D\x20\x70\x72\x6F\x64\x75\x63\x65\x64\x20\x62\x79\x20\x43\x68\x61\x6E\x6E\x65\x6C\x20\x34\x2C\x20\x77\x72\x69\x74\x74\x65\x6E\x20\x62\x79\x20\x47\x72\x61\x68\x61\x6D\x20\x4C\x69\x6E\x65\x68\x61\x6E\x2C\x20\x70\x72\x6F\x64\x75\x63\x65\x64\x20\x62\x79\x20\x41\x73\x68\x20\x41\x74\x61\x6C\x6C\x61\x20\x61\x6E\x64\x20\x73\x74\x61\x72\x72\x69\x6E\x67\x20\x43\x68\x72\x69\x73\x20\x4F\x27\x44\x6F\x77\x64\x2C\x20\x52\x69\x63\x68\x61\x72\x64\x20\x41\x79\x6F\x61\x64\x65\x2C\x20\x4B\x61\x74\x68\x65\x72\x69\x6E\x65\x20\x50\x61\x72\x6B\x69\x6E\x73\x6F\x6E\x2C\x20\x61\x6E\x64\x20\x4D\x61\x74\x74\x20\x42\x65\x72\x72\x79\x2E\xC5\x01\x53\x69\x6C\x69\x63\x6F\x6E\x20\x56\x61\x6C\x6C\x65\x79\x20\x69\x73\x20\x61\x6E\x20\x41\x6D\x65\x72\x69\x63\x61\x6E\x20\x63\x6F\x6D\x65\x64\x79\x20\x74\x65\x6C\x65\x76\x69\x73\x69\x6F\x6E\x20\x73\x65\x72\x69\x65\x73\x20\x63\x72\x65\x61\x74\x65\x64\x20\x62\x79\x20\x4D\x69\x6B\x65\x20\x4A\x75\x64\x67\x65\x2C\x20\x4A\x6F\x68\x6E\x20\x41\x6C\x74\x73\x63\x68\x75\x6C\x65\x72\x20\x61\x6E\x64\x20\x44\x61\x76\x65\x20\x4B\x72\x69\x6E\x73\x6B\x79\x2E\x20\x54\x68\x65\x20\x73\x65\x72\x69\x65\x73\x20\x66\x6F\x63\x75\x73\x65\x73\x20\x6F\x6E\x20\x66\x69\x76\x65\x20\x79\x6F\x75\x6E\x67\x20\x6D\x65\x6E\x20\x77\x68\x6F\x20\x66\x6F\x75\x6E\x64\x65\x64\x20\x61\x20\x73\x74\x61\x72\x74\x75\x70\x20\x63\x6F\x6D\x70\x61\x6E\x79\x20\x69\x6E\x20\x53\x69\x6C\x69\x63\x6F\x6E\x20\x56\x61\x6C\x6C\x65\x79\x2E\x05\x74\x69\x74\x6C\x65\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x53\x74\x72\x69\x6E\x67\x29\x00\x00\x08\x49\x54\x20\x43\x72\x6F\x77\x64\x0E\x53\x69\x6C\x69\x63\x6F\x6E\x20\x56\x61\x6C\x6C\x65\x79\x01\x00\x02\xFF\xFF\xFF\xFF\x00\x04\x02\x0C\x72\x65\x6C\x65\x61\x73\x65\x5F\x64\x61\x74\x65\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x55\x49\x6E\x74\x36\x34\x29\x00\x00\x7E\x33\x00\x00\x00\x00\x00\x00\x26\x3F\x00\x00\x00\x00\x00\x00\x09\x73\x65\x72\x69\x65\x73\x5F\x69\x64\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x55\x49\x6E\x74\x36\x34\x29\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x0B\x73\x65\x72\x69\x65\x73\x5F\x69\x6E\x66\x6F\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x53\x74\x72\x69\x6E\x67\x29\x00\x00\xB9\x01\x54\x68\x65\x20\x49\x54\x20\x43\x72\x6F\x77\x64\x20\x69\x73\x20\x61\x20\x42\x72\x69\x74\x69\x73\x68\x20\x73\x69\x74\x63\x6F\x6D\x20\x70\x72\x6F\x64\x75\x63\x65\x64\x20\x62\x79\x20\x43\x68\x61\x6E\x6E\x65\x6C\x20\x34\x2C\x20\x77\x72\x69\x74\x74\x65\x6E\x20\x62\x79\x20\x47\x72\x61\x68\x61\x6D\x20\x4C\x69\x6E\x65\x68\x61\x6E\x2C\x20\x70\x72\x6F\x64\x75\x63\x65\x64\x20\x62\x79\x20\x41\x73\x68\x20\x41\x74\x61\x6C\x6C\x61\x20\x61\x6E\x64\x20\x73\x74\x61\x72\x72\x69\x6E\x67\x20\x43\x68\x72\x69\x73\x20\x4F\x27\x44\x6F\x77\x64\x2C\x20\x52\x69\x63\x68\x61\x72\x64\x20\x41\x79\x6F\x61\x64\x65\x2C\x20\x4B\x61\x74\x68\x65\x72\x69\x6E\x65\x20\x50\x61\x72\x6B\x69\x6E\x73\x6F\x6E\x2C\x20\x61\x6E\x64\x20\x4D\x61\x74\x74\x20\x42\x65\x72\x72\x79\x2E\xC5\x01\x53\x69\x6C\x69\x63\x6F\x6E\x20\x56\x61\x6C\x6C\x65\x79\x20\x69\x73\x20\x61\x6E\x20\x41\x6D\x65\x72\x69\x63\x61\x6E\x20\x63\x6F\x6D\x65\x64\x79\x20\x74\x65\x6C\x65\x76\x69\x73\x69\x6F\x6E\x20\x73\x65\x72\x69\x65\x73\x20\x63\x72\x65\x61\x74\x65\x64\x20\x62\x79\x20\x4D\x69\x6B\x65\x20\x4A\x75\x64\x67\x65\x2C\x20\x4A\x6F\x68\x6E\x20\x41\x6C\x74\x73\x63\x68\x75\x6C\x65\x72\x20\x61\x6E\x64\x20\x44\x61\x76\x65\x20\x4B\x72\x69\x6E\x73\x6B\x79\x2E\x20\x54\x68\x65\x20\x73\x65\x72\x69\x65\x73\x20\x66\x6F\x63\x75\x73\x65\x73\x20\x6F\x6E\x20\x66\x69\x76\x65\x20\x79\x6F\x75\x6E\x67\x20\x6D\x65\x6E\x20\x77\x68\x6F\x20\x66\x6F\x75\x6E\x64\x65\x64\x20\x61\x20\x73\x74\x61\x72\x74\x75\x70\x20\x63\x6F\x6D\x70\x61\x6E\x79\x20\x69\x6E\x20\x53\x69\x6C\x69\x63\x6F\x6E\x20\x56\x61\x6C\x6C\x65\x79\x2E\x05\x74\x69\x74\x6C\x65\x10\x4E\x75\x6C\x6C\x61\x62\x6C\x65\x28\x53\x74\x72\x69\x6E\x67\x29\x00\x00\x08\x49\x54\x20\x43\x72\x6F\x77\x64\x0E\x53\x69\x6C\x69\x63\x6F\x6E\x20\x56\x61\x6C\x6C\x65\x79"} diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/ParseFromYdb.sql b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/ParseFromYdb.sql new file mode 100644 index 0000000000..6e2a292b62 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/ParseFromYdb.sql @@ -0,0 +1,7 @@ +/* syntax version 1 */ +$callable = ($input)->{ + $parse = YQL::Udf(AsAtom("ClickHouseClient.ParseFromYdb"), Void(), Struct<'release_date':Uint64?,'series_id':Uint64?,'series_info':String?,'title':Utf8?>); + return $parse(YQL::Map($input, ($i)->($i.value)) ) +}; + +select * from ( process Input using $callable(TableRows())); diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeCSVWithNames.in b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeCSVWithNames.in new file mode 100644 index 0000000000..97ea9221aa --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeCSVWithNames.in @@ -0,0 +1,11 @@ +{"unsigned"=023u;"signed"=100;"utf"="aaa";"number"=0.;"boolean"=%true}; +{"unsigned"=#;"signed"=-5;"utf"="ddd";"number"=3.14159;"boolean"=#}; +{"unsigned"=075u;"signed"=#;"utf"="abc";"number"=2.5;"boolean"=%true}; +{"unsigned"=150u;"signed"=-666;"utf"="aaa";"number"=-23.3;"boolean"=#}; +{"unsigned"=150u;"signed"=777;"utf"="iii";"number"=333.3;"boolean"=%true}; +{"unsigned"=150u;"signed"=-13;"utf"="zzz";"number"=-6.6;"boolean"=%false}; +{"unsigned"=200u;"signed"=15;"utf"="qqq";"number"=-17.;"boolean"=%false}; +{"unsigned"=#;"signed"=-200;"utf"="bbb";"number"=1.;"boolean"=#}; +{"unsigned"=761u;"signed"=#;"utf"="ccc";"number"=2.;"boolean"=#}; +{"unsigned"=911u;"signed"=-9;"utf"="kkk";"number"=-5.555;"boolean"=%false}; + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeCSVWithNames.in.attr b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeCSVWithNames.in.attr new file mode 100644 index 0000000000..21e3f1cb98 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeCSVWithNames.in.attr @@ -0,0 +1,10 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["unsigned";["OptionalType";["DataType";"Uint32"]]]; + ["signed";["OptionalType";["DataType";"Int32"]]]; + ["utf";["DataType";"Utf8"]]; + ["number";["DataType";"Double"]]; + ["boolean";["OptionalType";["DataType";"Bool"]]] + ]]; +}} + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeCSVWithNames.sql b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeCSVWithNames.sql new file mode 100644 index 0000000000..0ce8339ea8 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeCSVWithNames.sql @@ -0,0 +1,18 @@ +/* syntax version 1 */ +$callable = ($input)->{ + $serialize = YQL::Udf(AsAtom("ClickHouseClient.SerializeFormat"), Void(), TupleType(TupleType(TypeOf($input))), AsAtom("csv_with_names")); + return Yql::Map($serialize($input), ($out)->(<|out:$out|>)); +}; + +process Input +using $callable(TableRows()) +into result `Simple`; + +process (select (unsigned, signed, utf, number, boolean) as many from Input) +using $callable(TableRows()) +into result `Tuples`; + +process (select AGG_LIST(unsigned) as unsigned, AGG_LIST(signed) as signed, AGG_LIST(utf) as utf, AGG_LIST(number) as number, AGG_LIST(boolean) as boolean from Input) +using $callable(TableRows()) +into result `Lists`; + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeJSONEachRow.in b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeJSONEachRow.in new file mode 100644 index 0000000000..97ea9221aa --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeJSONEachRow.in @@ -0,0 +1,11 @@ +{"unsigned"=023u;"signed"=100;"utf"="aaa";"number"=0.;"boolean"=%true}; +{"unsigned"=#;"signed"=-5;"utf"="ddd";"number"=3.14159;"boolean"=#}; +{"unsigned"=075u;"signed"=#;"utf"="abc";"number"=2.5;"boolean"=%true}; +{"unsigned"=150u;"signed"=-666;"utf"="aaa";"number"=-23.3;"boolean"=#}; +{"unsigned"=150u;"signed"=777;"utf"="iii";"number"=333.3;"boolean"=%true}; +{"unsigned"=150u;"signed"=-13;"utf"="zzz";"number"=-6.6;"boolean"=%false}; +{"unsigned"=200u;"signed"=15;"utf"="qqq";"number"=-17.;"boolean"=%false}; +{"unsigned"=#;"signed"=-200;"utf"="bbb";"number"=1.;"boolean"=#}; +{"unsigned"=761u;"signed"=#;"utf"="ccc";"number"=2.;"boolean"=#}; +{"unsigned"=911u;"signed"=-9;"utf"="kkk";"number"=-5.555;"boolean"=%false}; + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeJSONEachRow.in.attr b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeJSONEachRow.in.attr new file mode 100644 index 0000000000..21e3f1cb98 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeJSONEachRow.in.attr @@ -0,0 +1,10 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["unsigned";["OptionalType";["DataType";"Uint32"]]]; + ["signed";["OptionalType";["DataType";"Int32"]]]; + ["utf";["DataType";"Utf8"]]; + ["number";["DataType";"Double"]]; + ["boolean";["OptionalType";["DataType";"Bool"]]] + ]]; +}} + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeJSONEachRow.sql b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeJSONEachRow.sql new file mode 100644 index 0000000000..ef16d5c101 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeJSONEachRow.sql @@ -0,0 +1,18 @@ +/* syntax version 1 */ +$callable = ($input)->{ + $serialize = YQL::Udf(AsAtom("ClickHouseClient.SerializeFormat"), Void(), TupleType(TupleType(TypeOf($input))), AsAtom("json_each_row")); + return Yql::Map($serialize($input), ($out)->(<|out:$out|>)); +}; + +process Input +using $callable(TableRows()) +into result `Simple`; + +process (select (unsigned, signed, utf, number, boolean) as many from Input) +using $callable(TableRows()) +into result `Tuples`; + +process (select AGG_LIST(unsigned) as unsigned, AGG_LIST(signed) as signed, AGG_LIST(utf) as utf, AGG_LIST(number) as number, AGG_LIST(boolean) as boolean from Input) +using $callable(TableRows()) +into result `Lists`; + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquet.in b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquet.in new file mode 100644 index 0000000000..97ea9221aa --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquet.in @@ -0,0 +1,11 @@ +{"unsigned"=023u;"signed"=100;"utf"="aaa";"number"=0.;"boolean"=%true}; +{"unsigned"=#;"signed"=-5;"utf"="ddd";"number"=3.14159;"boolean"=#}; +{"unsigned"=075u;"signed"=#;"utf"="abc";"number"=2.5;"boolean"=%true}; +{"unsigned"=150u;"signed"=-666;"utf"="aaa";"number"=-23.3;"boolean"=#}; +{"unsigned"=150u;"signed"=777;"utf"="iii";"number"=333.3;"boolean"=%true}; +{"unsigned"=150u;"signed"=-13;"utf"="zzz";"number"=-6.6;"boolean"=%false}; +{"unsigned"=200u;"signed"=15;"utf"="qqq";"number"=-17.;"boolean"=%false}; +{"unsigned"=#;"signed"=-200;"utf"="bbb";"number"=1.;"boolean"=#}; +{"unsigned"=761u;"signed"=#;"utf"="ccc";"number"=2.;"boolean"=#}; +{"unsigned"=911u;"signed"=-9;"utf"="kkk";"number"=-5.555;"boolean"=%false}; + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquet.in.attr b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquet.in.attr new file mode 100644 index 0000000000..21e3f1cb98 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquet.in.attr @@ -0,0 +1,10 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["unsigned";["OptionalType";["DataType";"Uint32"]]]; + ["signed";["OptionalType";["DataType";"Int32"]]]; + ["utf";["DataType";"Utf8"]]; + ["number";["DataType";"Double"]]; + ["boolean";["OptionalType";["DataType";"Bool"]]] + ]]; +}} + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquet.sql b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquet.sql new file mode 100644 index 0000000000..84ebf0349a --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquet.sql @@ -0,0 +1,18 @@ +/* syntax version 1 */ +$callable = ($input)->{ + $serialize = YQL::Udf(AsAtom("ClickHouseClient.SerializeFormat"), Void(), TupleType(TupleType(TypeOf($input))), AsAtom("parquet")); + return Yql::Map($serialize($input), ($out)->(<|out:$out|>)); +}; + +process Input +using $callable(TableRows()) +into result `Simple`; + +process (select (unsigned, signed, utf, number, boolean) as many from Input) +using $callable(TableRows()) +into result `Tuples`; + +process (select AGG_LIST(unsigned) as unsigned, AGG_LIST(signed) as signed, AGG_LIST(utf) as utf, AGG_LIST(number) as number, AGG_LIST(boolean) as boolean from Input) +using $callable(TableRows()) +into result `Lists`; + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquetPartitioned.in b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquetPartitioned.in new file mode 100644 index 0000000000..2d3054a24a --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquetPartitioned.in @@ -0,0 +1,10 @@ +{"unsigned"=023u;"signed"=100;"utf"="aaa";"number"=0.;"boolean"=%true}; +{"unsigned"=#;"signed"=-5;"utf"="ddd";"number"=3.14159;"boolean"=#}; +{"unsigned"=075u;"signed"=#;"utf"="ccc";"number"=2.5;"boolean"=%true}; +{"unsigned"=150u;"signed"=-666;"utf"="aaa";"number"=-23.3;"boolean"=#}; +{"unsigned"=150u;"signed"=777;"utf"="iii";"number"=333.3;"boolean"=%true}; +{"unsigned"=150u;"signed"=-13;"utf"="kkk";"number"=-6.6;"boolean"=%false}; +{"unsigned"=200u;"signed"=15;"utf"="qqq";"number"=-17.;"boolean"=%false}; +{"unsigned"=#;"signed"=-200;"utf"="bbb";"number"=1.;"boolean"=#}; +{"unsigned"=761u;"signed"=#;"utf"="ccc";"number"=2.;"boolean"=#}; +{"unsigned"=911u;"signed"=-9;"utf"="kkk";"number"=-5.555;"boolean"=%false}; diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquetPartitioned.in.attr b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquetPartitioned.in.attr new file mode 100644 index 0000000000..d2a523c853 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquetPartitioned.in.attr @@ -0,0 +1,9 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["unsigned";["OptionalType";["DataType";"Uint32"]]]; + ["signed";["OptionalType";["DataType";"Int32"]]]; + ["utf";["DataType";"Utf8"]]; + ["number";["DataType";"Double"]]; + ["boolean";["OptionalType";["DataType";"Bool"]]] + ]]; +}} diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquetPartitioned.sql b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquetPartitioned.sql new file mode 100644 index 0000000000..4f6c94ec53 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeParquetPartitioned.sql @@ -0,0 +1,27 @@ +/* syntax version 1 */ +$callable = ($input)->{ + $serialize = YQL::Udf(AsAtom("ClickHouseClient.SerializeFormat"), Void(), TupleType(TupleType(TypeOf($input))), AsAtom('parquet{"keys":["utf"]}')); + return Yql::Map($serialize($input), ($out)->(<|out:$out.0, key:$out.1|>)); +}; + +$i1 = process Input +using $callable(TableRows()); + +select * from $i1 +order by key +into result `Simple`; + +$i2 = process (select (unsigned, signed, number, boolean) as many, utf from Input) +using $callable(TableRows()); + +select * from $i2 +order by key +into result `Tuples`; + +$i3 = process (select AGG_LIST(unsigned) as unsigned, AGG_LIST(signed) as signed, utf, AGG_LIST(number) as number, AGG_LIST(boolean) as boolean from Input group by utf) +using $callable(TableRows()); + +select * from $i3 +order by key +into result `Lists`; + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeTSVWithNames.in b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeTSVWithNames.in new file mode 100644 index 0000000000..97ea9221aa --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeTSVWithNames.in @@ -0,0 +1,11 @@ +{"unsigned"=023u;"signed"=100;"utf"="aaa";"number"=0.;"boolean"=%true}; +{"unsigned"=#;"signed"=-5;"utf"="ddd";"number"=3.14159;"boolean"=#}; +{"unsigned"=075u;"signed"=#;"utf"="abc";"number"=2.5;"boolean"=%true}; +{"unsigned"=150u;"signed"=-666;"utf"="aaa";"number"=-23.3;"boolean"=#}; +{"unsigned"=150u;"signed"=777;"utf"="iii";"number"=333.3;"boolean"=%true}; +{"unsigned"=150u;"signed"=-13;"utf"="zzz";"number"=-6.6;"boolean"=%false}; +{"unsigned"=200u;"signed"=15;"utf"="qqq";"number"=-17.;"boolean"=%false}; +{"unsigned"=#;"signed"=-200;"utf"="bbb";"number"=1.;"boolean"=#}; +{"unsigned"=761u;"signed"=#;"utf"="ccc";"number"=2.;"boolean"=#}; +{"unsigned"=911u;"signed"=-9;"utf"="kkk";"number"=-5.555;"boolean"=%false}; + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeTSVWithNames.in.attr b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeTSVWithNames.in.attr new file mode 100644 index 0000000000..21e3f1cb98 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeTSVWithNames.in.attr @@ -0,0 +1,10 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["unsigned";["OptionalType";["DataType";"Uint32"]]]; + ["signed";["OptionalType";["DataType";"Int32"]]]; + ["utf";["DataType";"Utf8"]]; + ["number";["DataType";"Double"]]; + ["boolean";["OptionalType";["DataType";"Bool"]]] + ]]; +}} + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeTSVWithNames.sql b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeTSVWithNames.sql new file mode 100644 index 0000000000..3fe2a3b086 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/SerializeTSVWithNames.sql @@ -0,0 +1,18 @@ +/* syntax version 1 */ +$callable = ($input)->{ + $serialize = YQL::Udf(AsAtom("ClickHouseClient.SerializeFormat"), Void(), TupleType(TupleType(TypeOf($input))), AsAtom("tsv_with_names")); + return Yql::Map($serialize($input), ($out)->(<|out:$out|>)); +}; + +process Input +using $callable(TableRows()) +into result `Simple`; + +process (select (unsigned, signed, utf, number, boolean) as many from Input) +using $callable(TableRows()) +into result `Tuples`; + +process (select AGG_LIST(unsigned) as unsigned, AGG_LIST(signed) as signed, AGG_LIST(utf) as utf, AGG_LIST(number) as number, AGG_LIST(boolean) as boolean from Input) +using $callable(TableRows()) +into result `Lists`; + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/YqlType.in b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/YqlType.in new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/YqlType.in diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/cases/YqlType.sql b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/YqlType.sql new file mode 100644 index 0000000000..60dfff679f --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/cases/YqlType.sql @@ -0,0 +1,30 @@ +/* syntax version 1 */ +$f = ($name)->{ + $type = Unwrap(ClickHouseClient::ToYqlType($name,"UTC"u), $name); + return ($type, FormatType(ParseTypeHandle(CAST($type AS String)))); +}; + +select + $f("Int8"u), + $f("UInt8"u), + $f("Int16"u), + $f("UInt16"u), + $f("Int32"u), + $f("UInt32"u), + $f("Int64"u), + $f("UInt64"u), + $f("Float32"u), + $f("Float64"u), + $f("String"u), + $f("FixedString(10)"u), + $f("Date"u), + $f("Datetime"u), + $f("UUID"u), + $f("Nullable(Int8)"u), + $f("Nullable(Nothing)"u), + $f("Array(Int8)"u), + $f("Array(Nothing)"u), + $f("Tuple(Int32,String)"u), + $f("Enum8('a'=1)"u), + $f("Enum16('b'=1000)"u) +; diff --git a/ydb/library/yql/udfs/common/clickhouse/client/test/ya.make b/ydb/library/yql/udfs/common/clickhouse/client/test/ya.make new file mode 100644 index 0000000000..a225d1f1ff --- /dev/null +++ b/ydb/library/yql/udfs/common/clickhouse/client/test/ya.make @@ -0,0 +1,18 @@ +IF (OS_LINUX AND CLANG AND NOT WITH_VALGRIND) + +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/clickhouse/client) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() + +ENDIF() + diff --git a/ydb/library/yql/udfs/common/clickhouse/client/ya.make b/ydb/library/yql/udfs/common/clickhouse/client/ya.make index 5b4510b478..1d6b728e46 100644 --- a/ydb/library/yql/udfs/common/clickhouse/client/ya.make +++ b/ydb/library/yql/udfs/common/clickhouse/client/ya.make @@ -442,3 +442,7 @@ ELSE() LIBRARY() END() ENDIF() + +RECURSE_FOR_TESTS( + test +)
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/result.json b/ydb/library/yql/udfs/common/datetime/test/canondata/result.json new file mode 100644 index 0000000000..8357acf5bb --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/result.json @@ -0,0 +1,62 @@ +{ + "test.test[FromStringFormat]": [ + { + "uri": "file://test.test_FromStringFormat_/results.txt" + } + ], + "test.test[FromString]": [ + { + "uri": "file://test.test_FromString_/results.txt" + } + ], + "test.test[From]": [ + { + "uri": "file://test.test_From_/results.txt" + } + ], + "test.test[Get]": [ + { + "uri": "file://test.test_Get_/results.txt" + } + ], + "test.test[RoundTrip]": [ + { + "uri": "file://test.test_RoundTrip_/results.txt" + } + ], + "test.test[StartOfDay]": [ + { + "uri": "file://test.test_StartOfDay_/results.txt" + } + ], + "test.test[StartOf]": [ + { + "uri": "file://test.test_StartOf_/results.txt" + } + ], + "test.test[Timezone]": [ + { + "uri": "file://test.test_Timezone_/results.txt" + } + ], + "test.test[ToString]": [ + { + "uri": "file://test.test_ToString_/results.txt" + } + ], + "test.test[To]": [ + { + "uri": "file://test.test_To_/results.txt" + } + ], + "test.test[TypedFromString]": [ + { + "uri": "file://test.test_TypedFromString_/results.txt" + } + ], + "test.test[TypedStartOf]": [ + { + "uri": "file://test.test_TypedStartOf_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_FromStringFormat_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_FromStringFormat_/results.txt new file mode 100644 index 0000000000..d72caeef36 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_FromStringFormat_/results.txt @@ -0,0 +1,46 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "2017-02-01T00:00:00Z" + ]; + [ + "2017-01-01T00:00:00Z" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_FromString_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_FromString_/results.txt new file mode 100644 index 0000000000..fdaa824df4 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_FromString_/results.txt @@ -0,0 +1,48 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0" + ] + ]; + [ + [ + "1" + ] + ]; + [ + [ + "144542035790076" + ] + ]; + [ + [ + "1479854322000000" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_From_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_From_/results.txt new file mode 100644 index 0000000000..99530a468c --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_From_/results.txt @@ -0,0 +1,88 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "uint"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "timestamp"; + [ + "OptionalType"; + [ + "DataType"; + "Timestamp" + ] + ] + ]; + [ + "interval"; + [ + "OptionalType"; + [ + "DataType"; + "Interval" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ] + ]; + [ + [ + "3600000000" + ]; + [ + "3600000000" + ]; + [ + "3600000000" + ] + ]; + [ + [ + "44442000000000" + ]; + [ + "44442000000000" + ]; + [ + "44442000000000" + ] + ]; + [ + [ + "4444444404000000000" + ]; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_Get_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_Get_/results.txt new file mode 100644 index 0000000000..70a98fa86a --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_Get_/results.txt @@ -0,0 +1,124 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "second"; + [ + "DataType"; + "Uint8" + ] + ]; + [ + "minute"; + [ + "DataType"; + "Uint8" + ] + ]; + [ + "hour"; + [ + "DataType"; + "Uint8" + ] + ]; + [ + "day"; + [ + "DataType"; + "Uint8" + ] + ]; + [ + "month"; + [ + "DataType"; + "Uint8" + ] + ]; + [ + "year"; + [ + "DataType"; + "Uint32" + ] + ]; + [ + "is_weekend"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1970-01-01T00:00:00.000000Z"; + "0"; + "0"; + "0"; + "1"; + "1"; + "1970"; + %false + ]; + [ + "1970-01-02T23:59:59.000001Z"; + "59"; + "59"; + "23"; + "2"; + "1"; + "1970"; + %false + ]; + [ + "1974-07-31T22:33:55.790076Z"; + "55"; + "33"; + "22"; + "31"; + "7"; + "1974"; + %false + ]; + [ + "2015-10-09T23:57:23.000000Z"; + "23"; + "57"; + "23"; + "9"; + "10"; + "2015"; + %false + ]; + [ + "2016-08-13T10:00:00.000000Z"; + "0"; + "0"; + "10"; + "13"; + "8"; + "2016"; + %true + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_RoundTrip_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_RoundTrip_/results.txt new file mode 100644 index 0000000000..d3b233ef52 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_RoundTrip_/results.txt @@ -0,0 +1,139 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "result"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1970-01-01T00:00:00.000001Z"; + [ + "1970-01-01T00:00:00.000001Z" + ] + ]; + [ + "2000-01-01T00:00:00.000000Z"; + [ + "2000-01-01T00:00:00.000000Z" + ] + ]; + [ + "Sun, 06 Nov 1994 08:49:37 GMT"; + [ + "1994-11-06T08:49:37.000000Z" + ] + ]; + [ + "Sun Nov 6 08:49:37 1994"; + [ + "1994-11-06T08:49:37.000000Z" + ] + ]; + [ + "Wed, 02 Oct 2002 08:00:00 EST"; + [ + "2002-10-02T13:00:00.000000Z" + ] + ]; + [ + "Wed, 02 Oct 2002 15:00:00 +0200"; + [ + "2002-10-02T13:00:00.000000Z" + ] + ]; + [ + "20161122"; + [ + "2016-11-22T00:00:00.000000Z" + ] + ]; + [ + "2016-11-22"; + [ + "2016-11-22T00:00:00.000000Z" + ] + ]; + [ + "2016-11-22 22:38"; + [ + "2016-11-22T22:38:00.000000Z" + ] + ]; + [ + "2016-11-22 22:38:42"; + [ + "2016-11-22T22:38:42.000000Z" + ] + ]; + [ + "1990-03-15t15:16:17z"; + [ + "1990-03-15T15:16:17.000000Z" + ] + ]; + [ + "20091014165533Z"; + [ + "2009-10-14T16:55:33.000000Z" + ] + ]; + [ + "2016-11-22 22:38:42.006000"; + [ + "2016-11-22T22:38:42.006000Z" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "seconds"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "123456789" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_StartOfDay_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_StartOfDay_/results.txt new file mode 100644 index 0000000000..01fe567503 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_StartOfDay_/results.txt @@ -0,0 +1,85 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "ts"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "start_d"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "start_dt"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "start_ts"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "day_time"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "2016-11-22T18:38:42.123456Z" + ]; + [ + "2016-11-22" + ]; + [ + "2016-11-22T00:00:00Z" + ]; + [ + "2016-11-22T00:00:00Z" + ]; + [ + "PT18H38M42.123456S" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_StartOf_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_StartOf_/results.txt new file mode 100644 index 0000000000..9973c1d232 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_StartOf_/results.txt @@ -0,0 +1,109 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "Date"; + [ + "DataType"; + "String" + ] + ]; + [ + "Week"; + [ + "DataType"; + "String" + ] + ]; + [ + "Month"; + [ + "DataType"; + "String" + ] + ]; + [ + "Quarter"; + [ + "DataType"; + "String" + ] + ]; + [ + "Year"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1970-01-01"; + "1970-01-01"; + "1970-01-01"; + "1970-01-01"; + "1970-01-01" + ]; + [ + "1970-01-01"; + "1970-01-01"; + "1970-01-01"; + "1970-01-01"; + "1970-01-01" + ]; + [ + "2015-10-21"; + "2015-10-19"; + "2015-10-01"; + "2015-10-01"; + "2015-01-01" + ]; + [ + "2015-09-05"; + "2015-08-31"; + "2015-09-01"; + "2015-07-01"; + "2015-01-01" + ]; + [ + "2012-04-26"; + "2012-04-23"; + "2012-04-01"; + "2012-04-01"; + "2012-01-01" + ]; + [ + "2015-10-28"; + "2015-10-26"; + "2015-10-01"; + "2015-10-01"; + "2015-01-01" + ]; + [ + "2015-12-20"; + "2015-12-14"; + "2015-12-01"; + "2015-10-01"; + "2015-01-01" + ]; + [ + "2016-02-29"; + "2016-02-29"; + "2016-02-01"; + "2016-01-01"; + "2016-01-01" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_Timezone_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_Timezone_/results.txt new file mode 100644 index 0000000000..d7aaa2d9d1 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_Timezone_/results.txt @@ -0,0 +1,59 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "absolute"; + [ + "DataType"; + "String" + ] + ]; + [ + "civil"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1970-01-02T23:59:59.000001Z"; + "1970-01-02T20:59:59.000001Z"; + "1970-01-03T02:59:59.000001Z" + ]; + [ + "1974-07-31T22:33:55.790076Z"; + "1974-07-31T19:33:55.790076Z"; + "1974-08-01T01:33:55.790076Z" + ]; + [ + "2015-10-09T23:57:23.000000Z"; + "2015-10-09T20:57:23.000000Z"; + "2015-10-10T02:57:23.000000Z" + ]; + [ + "2016-08-13T10:00:00.000000Z"; + "2016-08-13T07:00:00.000000Z"; + "2016-08-13T13:00:00.000000Z" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_ToString_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_ToString_/results.txt new file mode 100644 index 0000000000..af5142d4c8 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_ToString_/results.txt @@ -0,0 +1,34 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1970-01-01T00:00:00.000000Z" + ]; + [ + "1970-01-01T00:00:00.000001Z" + ]; + [ + "1974-07-31T22:33:55.790076Z" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_To_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_To_/results.txt new file mode 100644 index 0000000000..f07569183a --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_To_/results.txt @@ -0,0 +1,119 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "hours"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "timestamp"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "interval"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "negative_interval"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "negative_interval_double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ] + ]; + [ + [ + "0" + ]; + [ + "0.000002" + ]; + [ + "0" + ]; + [ + "-3" + ]; + [ + "-0.000003" + ] + ]; + [ + [ + "0" + ]; + [ + "617.283945" + ]; + [ + "617" + ]; + [ + "-617283945" + ]; + [ + "-617.283945" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_TypedFromString_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_TypedFromString_/results.txt new file mode 100644 index 0000000000..8eed8b7152 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_TypedFromString_/results.txt @@ -0,0 +1,48 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1970-01-01T00:00:00Z" + ] + ]; + [ + [ + "1970-01-01T00:00:00.000001Z" + ] + ]; + [ + [ + "1974-07-31T22:33:55.790076Z" + ] + ]; + [ + [ + "2016-11-22T22:38:42Z" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_TypedStartOf_/results.txt b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_TypedStartOf_/results.txt new file mode 100644 index 0000000000..730ab7540a --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/canondata/test.test_TypedStartOf_/results.txt @@ -0,0 +1,184 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column9"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column10"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column11"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column12"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "2017-11-16"; + [ + "2017-11-13" + ]; + [ + "2017-11-13T00:00:00Z" + ]; + [ + "2017-11-13T00:00:00Z" + ]; + [ + "2017-11-01" + ]; + [ + "2017-11-01T00:00:00Z" + ]; + [ + "2017-11-01T00:00:00Z" + ]; + [ + "2017-10-01" + ]; + [ + "2017-10-01T00:00:00Z" + ]; + [ + "2017-10-01T00:00:00Z" + ]; + [ + "2017-01-01" + ]; + [ + "2017-01-01T00:00:00Z" + ]; + [ + "2017-01-01T00:00:00Z" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/From.in b/ydb/library/yql/udfs/common/datetime/test/cases/From.in new file mode 100644 index 0000000000..bc6dfd9700 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/From.in @@ -0,0 +1,4 @@ +{"key"="1";"subkey"="2";"value"="0"}; +{"key"="2";"subkey"="2";"value"="1"}; +{"key"="3";"subkey"="3";"value"="12345"}; +{"key"="3";"subkey"="3";"value"="1234567890"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/From.sql b/ydb/library/yql/udfs/common/datetime/test/cases/From.sql new file mode 100644 index 0000000000..22224c02be --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/From.sql @@ -0,0 +1,8 @@ +/* syntax version 0 */ +$value = CAST(value AS Uint64); +SELECT + DateTime::FromHours($value) AS uint, + DateTime::TimestampFromHours($value) AS timestamp, + DateTime::IntervalFromHours($value) AS interval +FROM Input; + diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/FromString.in b/ydb/library/yql/udfs/common/datetime/test/cases/FromString.in new file mode 100644 index 0000000000..4812e498e6 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/FromString.in @@ -0,0 +1,4 @@ +{"key"="1";"subkey"="1";"value"="1970-01-01T00:00:00.000000Z"}; +{"key"="2";"subkey"="2";"value"="1970-01-01T00:00:00.000001Z"}; +{"key"="3";"subkey"="3";"value"="1974-07-31T22:33:55.790076Z"}; +{"key"="4";"subkey"="4";"value"="2016-11-22 22:38:42"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/FromString.sql b/ydb/library/yql/udfs/common/datetime/test/cases/FromString.sql new file mode 100644 index 0000000000..8d9eba2811 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/FromString.sql @@ -0,0 +1,2 @@ +/* syntax version 0 */ +SELECT DateTime::FromString(value) FROM Input; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/FromStringFormat.in b/ydb/library/yql/udfs/common/datetime/test/cases/FromStringFormat.in new file mode 100644 index 0000000000..44a4cf835e --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/FromStringFormat.in @@ -0,0 +1 @@ +{"key"="1";"subkey"="1";"value"="20170203"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/FromStringFormat.sql b/ydb/library/yql/udfs/common/datetime/test/cases/FromStringFormat.sql new file mode 100644 index 0000000000..c126e846ff --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/FromStringFormat.sql @@ -0,0 +1,5 @@ +/* syntax version 0 */ +SELECT + CAST(DateTime::TimestampFromStringFormat(value, '%Y%m') AS String), + CAST(DateTime::TimestampFromStringFormat(value, '%Y') as String) +FROM Input; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/Get.in b/ydb/library/yql/udfs/common/datetime/test/cases/Get.in new file mode 100644 index 0000000000..8fa829b173 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/Get.in @@ -0,0 +1,5 @@ +{"key"="1";"subkey"="1";"value"="1970-01-01T00:00:00.000000Z"}; +{"key"="2";"subkey"="2";"value"="1970-01-02T23:59:59.000001Z"}; +{"key"="3";"subkey"="3";"value"="1974-07-31T22:33:55.790076Z"}; +{"key"="4";"subkey"="4";"value"="2015-10-09T23:57:23.000000Z"}; +{"key"="1";"subkey"="1";"value"="2016-08-13T10:00:00.000000Z"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/Get.sql b/ydb/library/yql/udfs/common/datetime/test/cases/Get.sql new file mode 100644 index 0000000000..5ec67142e3 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/Get.sql @@ -0,0 +1,12 @@ +/* syntax version 0 */ +$ts = COALESCE(DateTime::FromString(value), 0); +SELECT + value, + DateTime::GetSecond($ts) AS second, + DateTime::GetMinute($ts) AS minute, + DateTime::GetHour($ts) AS hour, + DateTime::GetDayOfMonth($ts) AS day, + DateTime::GetMonth($ts) AS month, + DateTime::GetYear($ts) AS year, + DateTime::IsWeekend($ts) AS is_weekend +FROM Input; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/RoundTrip.in b/ydb/library/yql/udfs/common/datetime/test/cases/RoundTrip.in new file mode 100644 index 0000000000..8b4319c244 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/RoundTrip.in @@ -0,0 +1,13 @@ +{"key"="";"subkey"="";"value"="1970-01-01T00:00:00.000001Z"}; +{"key"="";"subkey"="";"value"="2000-01-01T00:00:00.000000Z"}; +{"key"="Http";"subkey"="";"value"="Sun, 06 Nov 1994 08:49:37 GMT"}; +{"key"="Http";"subkey"="";"value"="Sun Nov 6 08:49:37 1994"}; +{"key"="Rfc822";"subkey"="";"value"="Wed, 02 Oct 2002 08:00:00 EST"}; +{"key"="Rfc822";"subkey"="";"value"="Wed, 02 Oct 2002 15:00:00 +0200"}; +{"key"="Iso8601";"subkey"="";"value"="20161122"}; +{"key"="Iso8601";"subkey"="";"value"="2016-11-22"}; +{"key"="Iso8601";"subkey"="";"value"="2016-11-22 22:38"}; +{"key"="Iso8601";"subkey"="";"value"="2016-11-22 22:38:42"}; +{"key"="Iso8601";"subkey"="";"value"="1990-03-15t15:16:17z"}; +{"key"="X509";"subkey"="";"value"="20091014165533Z"}; +{"key"="YQL-2273";"subkey"="";"value"="2016-11-22 22:38:42.006000"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/RoundTrip.sql b/ydb/library/yql/udfs/common/datetime/test/cases/RoundTrip.sql new file mode 100644 index 0000000000..5fd08e1fc5 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/RoundTrip.sql @@ -0,0 +1,12 @@ +/* syntax version 0 */ +$result = DateTime::ToString(DateTime::FromString(value)); + +SELECT + value, + $result AS result +FROM Input; + +SELECT + DateTime::ToSeconds( + DateTime::FromSeconds(123456789) + ) AS seconds; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/StartOf.in b/ydb/library/yql/udfs/common/datetime/test/cases/StartOf.in new file mode 100644 index 0000000000..6e184dd238 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/StartOf.in @@ -0,0 +1,8 @@ +{"key"="1";"subkey"="1";"value"="0"}; +{"key"="2";"subkey"="2";"value"="1"}; +{"key"="3";"subkey"="3";"value"="1445420357900760"}; +{"key"="4";"subkey"="4";"value"="1441421357900760"}; +{"key"="5";"subkey"="5";"value"="1335421457900760"}; +{"key"="6";"subkey"="6";"value"="1446044144000000"}; +{"key"="7";"subkey"="7";"value"="1450626268481094"}; +{"key"="8";"subkey"="8";"value"="1456782839000000"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/StartOf.sql b/ydb/library/yql/udfs/common/datetime/test/cases/StartOf.sql new file mode 100644 index 0000000000..65c1787203 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/StartOf.sql @@ -0,0 +1,9 @@ +/* syntax version 0 */ +$ts = COALESCE(CAST(value AS Uint64), 0); +SELECT + DateTime::ToDate($ts) as Date, + DateTime::ToDate(DateTime::StartOfWeek($ts)) as Week, + DateTime::ToDate(DateTime::StartOfMonth($ts)) as Month, + DateTime::ToDate(DateTime::StartOfQuarter($ts)) as Quarter, + DateTime::ToDate(DateTime::StartOfYear($ts)) as Year +FROM Input; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/StartOfDay.in b/ydb/library/yql/udfs/common/datetime/test/cases/StartOfDay.in new file mode 100644 index 0000000000..8719171754 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/StartOfDay.in @@ -0,0 +1 @@ +{"key"="1";"subkey"="1";"value"="2016-11-22T22:38:42.123456"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/StartOfDay.sql b/ydb/library/yql/udfs/common/datetime/test/cases/StartOfDay.sql new file mode 100644 index 0000000000..d13bcc777d --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/StartOfDay.sql @@ -0,0 +1,8 @@ +/* syntax version 0 */ +SELECT + cast(DateTime::TimestampFromString(value) as string) as ts, + cast(DateTime::DateStartOfDay(cast(DateTime::TimestampFromString(value) as date)) as string) as start_d, + cast(DateTime::DatetimeStartOfDay(cast(DateTime::TimestampFromString(value) as datetime)) as string) as start_dt, + cast(DateTime::TimestampStartOfDay(DateTime::TimestampFromString(value)) as string) as start_ts, + cast(DateTime::GetTimeOfDay(DateTime::TimestampFromString(value)) as string) as day_time +FROM Input; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/Timezone.in b/ydb/library/yql/udfs/common/datetime/test/cases/Timezone.in new file mode 100644 index 0000000000..ada23d3a4d --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/Timezone.in @@ -0,0 +1,4 @@ +{"key"="2";"subkey"="2";"value"="1970-01-02T23:59:59.000001Z"}; +{"key"="3";"subkey"="3";"value"="1974-07-31T22:33:55.790076Z"}; +{"key"="4";"subkey"="4";"value"="2015-10-09T23:57:23.000000Z"}; +{"key"="1";"subkey"="1";"value"="2016-08-13T10:00:00.000000Z"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/Timezone.sql b/ydb/library/yql/udfs/common/datetime/test/cases/Timezone.sql new file mode 100644 index 0000000000..e93518c0fc --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/Timezone.sql @@ -0,0 +1,7 @@ +/* syntax version 0 */ +$ts = COALESCE(DateTime::FromString(value), 0); +SELECT + value, + DateTime::ToString(DateTime::FromTimeZone($ts, "Europe/Moscow")) AS absolute, + DateTime::ToString(DateTime::ToTimeZone($ts, "Europe/Moscow")) AS civil +FROM Input; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/To.in b/ydb/library/yql/udfs/common/datetime/test/cases/To.in new file mode 100644 index 0000000000..9b211df1b9 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/To.in @@ -0,0 +1,3 @@ +{"key"="1";"subkey"="2";"value"="0"}; +{"key"="2";"subkey"="2";"value"="5"}; +{"key"="3";"subkey"="3";"value"="1234567890"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/To.sql b/ydb/library/yql/udfs/common/datetime/test/cases/To.sql new file mode 100644 index 0000000000..075b451d50 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/To.sql @@ -0,0 +1,12 @@ +/* syntax version 0 */ +$value = CAST(CAST(value AS Uint64) AS Timestamp); +$half_value = CAST(CAST(value AS Uint64) / 2 AS Timestamp); + +SELECT + DateTime::ToHours($value) AS hours, + DateTime::ToSecondsFloat($half_value) AS timestamp, + DateTime::IntervalToSeconds($value - $half_value) AS interval, + DateTime::IntervalToMicroSeconds($half_value - $value) AS negative_interval, + DateTime::IntervalToSecondsFloat($half_value - $value) AS negative_interval_double +FROM Input; + diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/ToString.in b/ydb/library/yql/udfs/common/datetime/test/cases/ToString.in new file mode 100644 index 0000000000..9a9ae5af3b --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/ToString.in @@ -0,0 +1,3 @@ +{"key"="1";"subkey"="1";"value"="0"}; +{"key"="2";"subkey"="2";"value"="1"}; +{"key"="3";"subkey"="3";"value"="144542035790076"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/ToString.sql b/ydb/library/yql/udfs/common/datetime/test/cases/ToString.sql new file mode 100644 index 0000000000..ec4e6fee6d --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/ToString.sql @@ -0,0 +1,2 @@ +/* syntax version 0 */ +SELECT DateTime::ToString(COALESCE(CAST(value AS Uint64), CAST(0 as Uint64))) FROM Input; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/TypedFromString.in b/ydb/library/yql/udfs/common/datetime/test/cases/TypedFromString.in new file mode 100644 index 0000000000..4812e498e6 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/TypedFromString.in @@ -0,0 +1,4 @@ +{"key"="1";"subkey"="1";"value"="1970-01-01T00:00:00.000000Z"}; +{"key"="2";"subkey"="2";"value"="1970-01-01T00:00:00.000001Z"}; +{"key"="3";"subkey"="3";"value"="1974-07-31T22:33:55.790076Z"}; +{"key"="4";"subkey"="4";"value"="2016-11-22 22:38:42"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/TypedFromString.sql b/ydb/library/yql/udfs/common/datetime/test/cases/TypedFromString.sql new file mode 100644 index 0000000000..f7fa482ce1 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/TypedFromString.sql @@ -0,0 +1,2 @@ +/* syntax version 0 */ +SELECT cast(DateTime::TimestampFromString(value) as string) FROM Input; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/TypedStartOf.in b/ydb/library/yql/udfs/common/datetime/test/cases/TypedStartOf.in new file mode 100644 index 0000000000..6668c4f728 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/TypedStartOf.in @@ -0,0 +1 @@ +{"key"="1";"subkey"="1";"value"="2017-11-16"}; diff --git a/ydb/library/yql/udfs/common/datetime/test/cases/TypedStartOf.sql b/ydb/library/yql/udfs/common/datetime/test/cases/TypedStartOf.sql new file mode 100644 index 0000000000..1b5af700bc --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/cases/TypedStartOf.sql @@ -0,0 +1,17 @@ +/* syntax version 0 */ +$ts = cast(value as Date); +SELECT + value, + cast(DateTime::DateStartOfWeek($ts) as string), + cast(DateTime::DatetimeStartOfWeek($ts) as string), + cast(DateTime::TimestampStartOfWeek($ts) as string), + cast(DateTime::DateStartOfMonth($ts) as string), + cast(DateTime::DatetimeStartOfMonth($ts) as string), + cast(DateTime::TimestampStartOfMonth($ts) as string), + cast(DateTime::DateStartOfQuarter($ts) as string), + cast(DateTime::DatetimeStartOfQuarter($ts) as string), + cast(DateTime::TimestampStartOfQuarter($ts) as string), + cast(DateTime::DateStartOfYear($ts) as string), + cast(DateTime::DatetimeStartOfYear($ts) as string), + cast(DateTime::TimestampStartOfYear($ts) as string) +FROM Input; diff --git a/ydb/library/yql/udfs/common/datetime/test/ya.make b/ydb/library/yql/udfs/common/datetime/test/ya.make new file mode 100644 index 0000000000..c7b1268b46 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime/test/ya.make @@ -0,0 +1,15 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/datetime) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +REQUIREMENTS(ram:10) + +END() diff --git a/ydb/library/yql/udfs/common/datetime/ya.make b/ydb/library/yql/udfs/common/datetime/ya.make index 1cbaddbb08..741db27251 100644 --- a/ydb/library/yql/udfs/common/datetime/ya.make +++ b/ydb/library/yql/udfs/common/datetime/ya.make @@ -16,3 +16,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +)
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/result.json b/ydb/library/yql/udfs/common/datetime2/test/canondata/result.json new file mode 100644 index 0000000000..4291f7e1fa --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/result.json @@ -0,0 +1,102 @@ +{ + "test.test[BlockGet]": [ + { + "uri": "file://test.test_BlockGet_/results.txt" + } + ], + "test.test[BlockTo]": [ + { + "uri": "file://test.test_BlockTo_/results.txt" + } + ], + "test.test[Format]": [ + { + "uri": "file://test.test_Format_/results.txt" + } + ], + "test.test[From]": [ + { + "uri": "file://test.test_From_/results.txt" + } + ], + "test.test[Get]": [ + { + "uri": "file://test.test_Get_/results.txt" + } + ], + "test.test[ImplicitSplit]": [ + { + "uri": "file://test.test_ImplicitSplit_/results.txt" + } + ], + "test.test[ParseIso8601]": [ + { + "uri": "file://test.test_ParseIso8601_/results.txt" + } + ], + "test.test[ParseLim]": [ + { + "uri": "file://test.test_ParseLim_/results.txt" + } + ], + "test.test[Parse]": [ + { + "uri": "file://test.test_Parse_/results.txt" + } + ], + "test.test[Repr]": [ + { + "uri": "file://test.test_Repr_/results.txt" + } + ], + "test.test[Shift]": [ + { + "uri": "file://test.test_Shift_/results.txt" + } + ], + "test.test[SplitMake1969]": [ + { + "uri": "file://test.test_SplitMake1969_/results.txt" + } + ], + "test.test[SplitMake]": [ + { + "uri": "file://test.test_SplitMake_/results.txt" + } + ], + "test.test[StartOf1969]": [ + { + "uri": "file://test.test_StartOf1969_/results.txt" + } + ], + "test.test[StartOf]": [ + { + "uri": "file://test.test_StartOf_/results.txt" + } + ], + "test.test[To]": [ + { + "uri": "file://test.test_To_/results.txt" + } + ], + "test.test[TzToDate]": [ + { + "uri": "file://test.test_TzToDate_/results.txt" + } + ], + "test.test[UpdateTz]": [ + { + "uri": "file://test.test_UpdateTz_/results.txt" + } + ], + "test.test[Update]": [ + { + "uri": "file://test.test_Update_/results.txt" + } + ], + "test.test[yql-14977]": [ + { + "uri": "file://test.test_yql-14977_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_BlockGet_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_BlockGet_/results.txt new file mode 100644 index 0000000000..f9bad3c80b --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_BlockGet_/results.txt @@ -0,0 +1,215 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "date_hour"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "date_minute"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "date_second"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "date_milli"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "date_micro"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "datetime_hour"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "datetime_minute"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "datetime_second"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "datetime_milli"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "datetime_micro"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "timestamp_hour"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "timestamp_minute"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "timestamp_second"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "timestamp_milli"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "timestamp_micro"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "21" + ]; + [ + "20" + ]; + [ + "19" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "21" + ]; + [ + "20" + ]; + [ + "19" + ]; + [ + "345" + ]; + [ + "345678" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_BlockTo_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_BlockTo_/results.txt new file mode 100644 index 0000000000..d6e44b6327 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_BlockTo_/results.txt @@ -0,0 +1,293 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "interval_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Int32" + ] + ] + ]; + [ + "interval_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "interval_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "date_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "datetime_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "timestamp_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "tzdate_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "tzdatetime_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "tztimestamp_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "date_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "datetime_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "timestamp_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tzdate_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tzdatetime_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tztimestamp_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "date_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "datetime_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "timestamp_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tzdate_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tzdatetime_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tztimestamp_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "208800" + ]; + [ + "208800000" + ]; + [ + "208800000000" + ]; + [ + "1542844800" + ]; + [ + "1542921619" + ]; + [ + "1542921619" + ]; + [ + "1542758400" + ]; + [ + "1542910819" + ]; + [ + "1542910819" + ]; + [ + "1542844800000" + ]; + [ + "1542921619000" + ]; + [ + "1542921619345" + ]; + [ + "1542758400000" + ]; + [ + "1542910819000" + ]; + [ + "1542910819345" + ]; + [ + "1542844800000000" + ]; + [ + "1542921619000000" + ]; + [ + "1542921619345678" + ]; + [ + "1542758400000000" + ]; + [ + "1542910819000000" + ]; + [ + "1542910819345678" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Format_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Format_/results.txt new file mode 100644 index 0000000000..31b8439bc9 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Format_/results.txt @@ -0,0 +1,48 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "% year 1970 monthFullName January monthShortName Jan month 01 day 01 hours 00 minutes 00 seconds 00 tz +0000 tzname GMT text" + ] + ]; + [ + [ + "% year 2018 monthFullName December monthShortName Dec month 12 day 01 hours 01 minutes 02 seconds 03.456789 tz +0300 tzname Europe/Moscow text" + ] + ]; + [ + [ + "% year 2011 monthFullName March monthShortName Mar month 03 day 13 hours 03 minutes 15 seconds 00 tz -0700 tzname America/Los_Angeles text" + ] + ]; + [ + [ + "% year 2011 monthFullName November monthShortName Nov month 11 day 06 hours 01 minutes 15 seconds 00 tz -0700 tzname America/Los_Angeles text" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_From_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_From_/results.txt new file mode 100644 index 0000000000..2c503563e1 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_From_/results.txt @@ -0,0 +1,148 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "ts_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Timestamp" + ] + ] + ]; + [ + "ts_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Timestamp" + ] + ] + ]; + [ + "ts_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Timestamp" + ] + ] + ]; + [ + "ts_empty"; + [ + "OptionalType"; + [ + "DataType"; + "Timestamp" + ] + ] + ]; + [ + "interval_days"; + [ + "OptionalType"; + [ + "DataType"; + "Interval" + ] + ] + ]; + [ + "interval_hours"; + [ + "OptionalType"; + [ + "DataType"; + "Interval" + ] + ] + ]; + [ + "interval_minutes"; + [ + "OptionalType"; + [ + "DataType"; + "Interval" + ] + ] + ]; + [ + "interval_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Interval" + ] + ] + ]; + [ + "interval_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Interval" + ] + ] + ]; + [ + "interval_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Interval" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "3875345000000" + ]; + [ + "3875345000000" + ]; + [ + "3875345000000" + ]; + #; + [ + "604800000000" + ]; + [ + "604800000000" + ]; + [ + "604800000000" + ]; + [ + "604800000000" + ]; + [ + "604800000000" + ]; + [ + "-604800000000" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Get_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Get_/results.txt new file mode 100644 index 0000000000..262c45b597 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Get_/results.txt @@ -0,0 +1,628 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "ryear"; + [ + "OptionalType"; + [ + "DataType"; + "Uint16" + ] + ] + ]; + [ + "rdayofyear"; + [ + "OptionalType"; + [ + "DataType"; + "Uint16" + ] + ] + ]; + [ + "rmonth"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "rmonthname"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "rweekofyear"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "rweekofyeariso8601"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "rdayofmonth"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "rdayofweek"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "rdayofweekname"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "rhour"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "rminute"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "rsecond"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "rmsec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "rusec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "rtz"; + [ + "OptionalType"; + [ + "DataType"; + "Uint16" + ] + ] + ]; + [ + "rtzname"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1970" + ]; + [ + "1" + ]; + [ + "1" + ]; + [ + "January" + ]; + [ + "1" + ]; + [ + "1" + ]; + [ + "1" + ]; + [ + "4" + ]; + [ + "Thursday" + ]; + [ + "11" + ]; + [ + "14" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "GMT" + ] + ]; + [ + [ + "1970" + ]; + [ + "2" + ]; + [ + "1" + ]; + [ + "January" + ]; + [ + "1" + ]; + [ + "1" + ]; + [ + "2" + ]; + [ + "5" + ]; + [ + "Friday" + ]; + [ + "14" + ]; + [ + "8" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "GMT" + ] + ]; + [ + [ + "1970" + ]; + [ + "32" + ]; + [ + "2" + ]; + [ + "February" + ]; + [ + "5" + ]; + [ + "5" + ]; + [ + "1" + ]; + [ + "7" + ]; + [ + "Sunday" + ]; + [ + "17" + ]; + [ + "3" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "GMT" + ] + ]; + [ + [ + "1970" + ]; + [ + "246" + ]; + [ + "9" + ]; + [ + "September" + ]; + [ + "36" + ]; + [ + "36" + ]; + [ + "3" + ]; + [ + "4" + ]; + [ + "Thursday" + ]; + [ + "7" + ]; + [ + "22" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "GMT" + ] + ]; + [ + [ + "1970" + ]; + [ + "365" + ]; + [ + "12" + ]; + [ + "December" + ]; + [ + "53" + ]; + [ + "53" + ]; + [ + "31" + ]; + [ + "4" + ]; + [ + "Thursday" + ]; + [ + "23" + ]; + [ + "59" + ]; + [ + "59" + ]; + [ + "999" + ]; + [ + "999999" + ]; + [ + "0" + ]; + [ + "GMT" + ] + ]; + [ + [ + "1971" + ]; + [ + "1" + ]; + [ + "1" + ]; + [ + "January" + ]; + [ + "1" + ]; + [ + "53" + ]; + [ + "1" + ]; + [ + "5" + ]; + [ + "Friday" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "GMT" + ] + ]; + [ + [ + "1971" + ]; + [ + "14" + ]; + [ + "1" + ]; + [ + "January" + ]; + [ + "3" + ]; + [ + "2" + ]; + [ + "14" + ]; + [ + "4" + ]; + [ + "Thursday" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "GMT" + ] + ]; + [ + [ + "1978" + ]; + [ + "25" + ]; + [ + "1" + ]; + [ + "January" + ]; + [ + "5" + ]; + [ + "4" + ]; + [ + "25" + ]; + [ + "3" + ]; + [ + "Wednesday" + ]; + [ + "16" + ]; + [ + "15" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "0" + ]; + [ + "477" + ]; + [ + "Europe/Uzhgorod" + ] + ]; + [ + [ + "2018" + ]; + [ + "335" + ]; + [ + "12" + ]; + [ + "December" + ]; + [ + "48" + ]; + [ + "48" + ]; + [ + "1" + ]; + [ + "6" + ]; + [ + "Saturday" + ]; + [ + "1" + ]; + [ + "2" + ]; + [ + "3" + ]; + [ + "456" + ]; + [ + "456789" + ]; + [ + "1" + ]; + [ + "Europe/Moscow" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_ImplicitSplit_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_ImplicitSplit_/results.txt new file mode 100644 index 0000000000..ff03b0fa5d --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_ImplicitSplit_/results.txt @@ -0,0 +1,98 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "20181215 000000 GMT" + ]; + [ + "20181215 010203 GMT" + ]; + [ + "20181215 010203.456789 GMT" + ]; + [ + "20181215 000000 Europe/Moscow" + ]; + [ + "20181215 010203 Europe/Moscow" + ]; + [ + "20181215 010203.456789 Europe/Moscow" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_ParseIso8601_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_ParseIso8601_/results.txt new file mode 100644 index 0000000000..5f312e8bd8 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_ParseIso8601_/results.txt @@ -0,0 +1,53 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_ParseLim_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_ParseLim_/results.txt new file mode 100644 index 0000000000..a4687cfa88 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_ParseLim_/results.txt @@ -0,0 +1,238 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column9"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column10"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column11"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column12"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column13"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column14"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column15"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column16"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column17"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "2105-12-31T00:00:00,GMT" + ]; + #; + [ + "2105-12-31T23:59:59,GMT" + ]; + #; + [ + "2105-12-31T23:59:59.999999,GMT" + ]; + #; + [ + "2105-12-31T00:00:00,Etc/GMT+11" + ]; + [ + "2106-01-01T00:00:00,Etc/GMT-1" + ]; + #; + [ + "2105-12-31T22:59:59.999999,Etc/GMT+1" + ]; + [ + "1970-01-01T00:00:00,GMT" + ]; + #; + [ + "1970-01-01T00:00:00,GMT" + ]; + #; + #; + [ + "1970-01-01T00:00:00,GMT" + ]; + [ + "1969-12-31T23:00:00,Etc/GMT+1" + ]; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Parse_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Parse_/results.txt new file mode 100644 index 0000000000..14c088137b --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Parse_/results.txt @@ -0,0 +1,242 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column9"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "2011-03-08T01:02:03,Europe/Moscow" + ]; + [ + "20110308 010203 +0300" + ]; + [ + "2022-02-23T12:00:00,GMT" + ]; + [ + "20220223 120000 +0000" + ]; + [ + "20110308" + ]; + [ + "20110308" + ]; + [ + "2005-03-05T00:34:45,GMT" + ]; + [ + "2009-02-13T23:31:30,GMT" + ]; + [ + "1994-11-06T08:49:37,GMT" + ]; + [ + "2009-10-14T16:55:33,GMT" + ] + ]; + [ + [ + "2011-03-08T01:02:03.22,Europe/Moscow" + ]; + [ + "20110308 010203.22 +0300" + ]; + [ + "2022-02-23T12:00:00.666666,GMT" + ]; + [ + "20220223 120000.666666 +0000" + ]; + [ + "20111108" + ]; + [ + "20111108" + ]; + [ + "2005-03-04T23:04:00,GMT" + ]; + [ + "2009-09-18T23:37:03.012331,GMT" + ]; + [ + "1994-11-06T08:49:37,GMT" + ]; + [ + "1999-01-04T07:42:12,GMT" + ] + ]; + [ + #; + #; + [ + "2022-02-23T12:00:00.999999,GMT" + ]; + [ + "20220223 120000.999999 +0000" + ]; + [ + "20110108" + ]; + [ + "20110108" + ]; + #; + #; + #; + # + ]; + [ + #; + #; + [ + "2022-02-23T12:00:00.42,GMT" + ]; + [ + "20220223 120000.42 +0000" + ]; + [ + "20110108" + ]; + [ + "20110108" + ]; + #; + #; + #; + # + ]; + [ + #; + #; + [ + "2022-02-23T12:00:00.823874,GMT" + ]; + [ + "20220223 120000.823874 +0000" + ]; + [ + "20110108" + ]; + [ + "20110208" + ]; + #; + #; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Repr_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Repr_/results.txt new file mode 100644 index 0000000000..f4ff733c50 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Repr_/results.txt @@ -0,0 +1,46 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "2016-08-15T00:00:00,GMT" + ]; + [ + "2017-01-01T13:00:00,Europe/Moscow" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Shift_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Shift_/results.txt new file mode 100644 index 0000000000..a7d9edbd5a --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Shift_/results.txt @@ -0,0 +1,459 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column9"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column10"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column11"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column12"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column13"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column14"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "2011-11-17T21:20:19.345678,GMT" + ]; + [ + "2011-11-17T21:20:19.345678,GMT" + ]; + [ + "2005-11-17T21:20:19.345678,GMT" + ]; + [ + "1997-11-17T21:20:19.345678,GMT" + ]; + [ + "2001-11-17T21:20:19.345678,GMT" + ]; + [ + "2001-12-17T21:20:19.345678,GMT" + ]; + [ + "2002-02-17T21:20:19.345678,GMT" + ]; + [ + "2002-10-17T21:20:19.345678,GMT" + ]; + [ + "2002-11-17T21:20:19.345678,GMT" + ]; + [ + "2012-02-17T21:20:19.345678,GMT" + ]; + [ + "2001-10-17T21:20:19.345678,GMT" + ]; + [ + "2001-08-17T21:20:19.345678,GMT" + ]; + [ + "2000-12-17T21:20:19.345678,GMT" + ]; + [ + "2000-11-17T21:20:19.345678,GMT" + ]; + [ + "1991-08-17T21:20:19.345678,GMT" + ] + ]; + [ + [ + "1980-01-01T11:14:00,GMT" + ]; + [ + "1980-01-01T11:14:00,GMT" + ]; + [ + "1974-01-01T11:14:00,GMT" + ]; + #; + [ + "1970-01-01T11:14:00,GMT" + ]; + [ + "1970-02-01T11:14:00,GMT" + ]; + [ + "1970-04-01T11:14:00,GMT" + ]; + [ + "1970-12-01T11:14:00,GMT" + ]; + [ + "1971-01-01T11:14:00,GMT" + ]; + [ + "1980-04-01T11:14:00,GMT" + ]; + #; + #; + #; + #; + # + ]; + [ + #; + #; + #; + [ + "2101-12-01T01:08:00,Europe/Moscow" + ]; + [ + "2105-12-01T01:08:00,Europe/Moscow" + ]; + [ + "2106-01-01T01:08:00,Europe/Moscow" + ]; + #; + #; + #; + #; + [ + "2105-11-01T01:08:00,Europe/Moscow" + ]; + [ + "2105-09-01T01:08:00,Europe/Moscow" + ]; + [ + "2105-01-01T01:08:00,Europe/Moscow" + ]; + [ + "2104-12-01T01:08:00,Europe/Moscow" + ]; + [ + "2095-09-01T01:08:00,Europe/Moscow" + ] + ]; + [ + [ + "2059-06-13T00:00:00,GMT" + ]; + [ + "2059-06-13T00:00:00,GMT" + ]; + [ + "2053-06-13T00:00:00,GMT" + ]; + [ + "2045-06-13T00:00:00,GMT" + ]; + [ + "2049-06-13T00:00:00,GMT" + ]; + [ + "2049-07-13T00:00:00,GMT" + ]; + [ + "2049-09-13T00:00:00,GMT" + ]; + [ + "2050-05-13T00:00:00,GMT" + ]; + [ + "2050-06-13T00:00:00,GMT" + ]; + [ + "2059-09-13T00:00:00,GMT" + ]; + [ + "2049-05-13T00:00:00,GMT" + ]; + [ + "2049-03-13T00:00:00,GMT" + ]; + [ + "2048-07-13T00:00:00,GMT" + ]; + [ + "2048-06-13T00:00:00,GMT" + ]; + [ + "2039-03-13T00:00:00,GMT" + ] + ]; + [ + [ + "2010-01-31T16:15:00,Europe/Uzhgorod" + ]; + [ + "2010-01-31T16:15:00,Europe/Uzhgorod" + ]; + [ + "2004-01-31T16:15:00,Europe/Uzhgorod" + ]; + [ + "1996-01-31T16:15:00,Europe/Uzhgorod" + ]; + [ + "2000-01-31T16:15:00,Europe/Uzhgorod" + ]; + [ + "2000-02-29T16:15:00,Europe/Uzhgorod" + ]; + [ + "2000-04-30T16:15:00,Europe/Uzhgorod" + ]; + [ + "2000-12-31T16:15:00,Europe/Uzhgorod" + ]; + [ + "2001-01-31T16:15:00,Europe/Uzhgorod" + ]; + [ + "2010-04-30T16:15:00,Europe/Uzhgorod" + ]; + [ + "1999-12-31T16:15:00,Europe/Uzhgorod" + ]; + [ + "1999-10-31T16:15:00,Europe/Uzhgorod" + ]; + [ + "1999-02-28T16:15:00,Europe/Uzhgorod" + ]; + [ + "1999-01-31T16:15:00,Europe/Uzhgorod" + ]; + [ + "1989-10-31T16:15:00,Europe/Uzhgorod" + ] + ]; + [ + [ + "2034-02-28T01:02:03.456789,Europe/Moscow" + ]; + [ + "2034-02-28T01:02:03.456789,Europe/Moscow" + ]; + [ + "2028-02-29T01:02:03.456789,Europe/Moscow" + ]; + [ + "2020-02-29T01:02:03.456789,Europe/Moscow" + ]; + [ + "2024-02-29T01:02:03.456789,Europe/Moscow" + ]; + [ + "2024-03-29T01:02:03.456789,Europe/Moscow" + ]; + [ + "2024-05-29T01:02:03.456789,Europe/Moscow" + ]; + [ + "2025-01-29T01:02:03.456789,Europe/Moscow" + ]; + [ + "2025-02-28T01:02:03.456789,Europe/Moscow" + ]; + [ + "2034-05-29T01:02:03.456789,Europe/Moscow" + ]; + [ + "2024-01-29T01:02:03.456789,Europe/Moscow" + ]; + [ + "2023-11-29T01:02:03.456789,Europe/Moscow" + ]; + [ + "2023-03-29T01:02:03.456789,Europe/Moscow" + ]; + [ + "2023-02-28T01:02:03.456789,Europe/Moscow" + ]; + [ + "2013-11-29T01:02:03.456789,Europe/Moscow" + ] + ]; + [ + [ + "1980-02-01T02:00:00.444123,Europe/Moscow" + ]; + [ + "1980-02-01T02:00:00.444123,Europe/Moscow" + ]; + [ + "1974-02-01T02:00:00.444123,Europe/Moscow" + ]; + #; + [ + "1970-02-01T02:00:00.444123,Europe/Moscow" + ]; + [ + "1970-03-01T02:00:00.444123,Europe/Moscow" + ]; + [ + "1970-05-01T02:00:00.444123,Europe/Moscow" + ]; + [ + "1971-01-01T02:00:00.444123,Europe/Moscow" + ]; + [ + "1971-02-01T02:00:00.444123,Europe/Moscow" + ]; + [ + "1980-05-01T02:00:00.444123,Europe/Moscow" + ]; + #; + #; + #; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_SplitMake1969_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_SplitMake1969_/results.txt new file mode 100644 index 0000000000..eb32dc98f6 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_SplitMake1969_/results.txt @@ -0,0 +1,88 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "rdate"; + [ + "OptionalType"; + [ + "DataType"; + "Date" + ] + ] + ]; + [ + "rdatetime"; + [ + "OptionalType"; + [ + "DataType"; + "Datetime" + ] + ] + ]; + [ + "rtimestamp"; + [ + "OptionalType"; + [ + "DataType"; + "Timestamp" + ] + ] + ]; + [ + "rtzdate"; + [ + "OptionalType"; + [ + "DataType"; + "TzDate" + ] + ] + ]; + [ + "rtzdatetime"; + [ + "OptionalType"; + [ + "DataType"; + "TzDatetime" + ] + ] + ]; + [ + "rtztimestamp"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + #; + #; + #; + #; + [ + "1969-12-31T23:00:00,Canada/Central" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_SplitMake_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_SplitMake_/results.txt new file mode 100644 index 0000000000..01b159b33d --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_SplitMake_/results.txt @@ -0,0 +1,160 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "rdate"; + [ + "OptionalType"; + [ + "DataType"; + "Date" + ] + ] + ]; + [ + "rdatetime"; + [ + "OptionalType"; + [ + "DataType"; + "Datetime" + ] + ] + ]; + [ + "rtimestamp"; + [ + "OptionalType"; + [ + "DataType"; + "Timestamp" + ] + ] + ]; + [ + "rtzdate"; + [ + "OptionalType"; + [ + "DataType"; + "TzDate" + ] + ] + ]; + [ + "rtzdatetime"; + [ + "OptionalType"; + [ + "DataType"; + "TzDatetime" + ] + ] + ]; + [ + "rtztimestamp"; + [ + "OptionalType"; + [ + "DataType"; + "TzTimestamp" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + #; + #; + #; + #; + # + ]; + [ + [ + "0" + ]; + [ + "1800" + ]; + [ + "1800000000" + ]; + #; + #; + [ + "1970-01-01T05:00:00,Europe/Moscow" + ] + ]; + [ + [ + "17880" + ]; + [ + "1544835723" + ]; + [ + "1544835723456789" + ]; + [ + "2018-12-15,Europe/Moscow" + ]; + [ + "2018-12-15T01:02:03,Europe/Moscow" + ]; + [ + "2018-12-15T01:02:03.456789,Europe/Moscow" + ] + ]; + [ + [ + "49672" + ]; + [ + "4291747199" + ]; + [ + "4291747199999999" + ]; + [ + "2105-12-31,Canada/Central" + ]; + [ + "2105-12-31T16:00:00,Canada/Central" + ]; + # + ]; + [ + #; + #; + #; + [ + "2106-01-01,Europe/Moscow" + ]; + [ + "2106-01-01T01:00:00,Europe/Moscow" + ]; + # + ]; + [ + #; + #; + #; + #; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_StartOf1969_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_StartOf1969_/results.txt new file mode 100644 index 0000000000..54614afb16 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_StartOf1969_/results.txt @@ -0,0 +1,151 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column9"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column10"; + [ + "OptionalType"; + [ + "DataType"; + "Interval" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + #; + #; + #; + #; + #; + [ + "1969-12-31 20:00:00 Canada/Central" + ]; + [ + "1969-12-31 23:00:00 Canada/Central" + ]; + [ + "1969-12-31 23:00:00 Canada/Central" + ]; + [ + "1969-12-31 22:59:56 Canada/Central" + ]; + [ + "82800000000" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_StartOf_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_StartOf_/results.txt new file mode 100644 index 0000000000..622ad731d9 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_StartOf_/results.txt @@ -0,0 +1,291 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column9"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column10"; + [ + "OptionalType"; + [ + "DataType"; + "Interval" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + #; + #; + #; + #; + #; + [ + "1970-01-01 04:00:00 Europe/Moscow" + ]; + [ + "1970-01-01 05:00:00 Europe/Moscow" + ]; + [ + "1970-01-01 05:00:00 Europe/Moscow" + ]; + [ + "1970-01-01 04:59:57 Europe/Moscow" + ]; + [ + "18000000000" + ] + ]; + [ + [ + "2018-01-01 00:00:00 Europe/Moscow" + ]; + [ + "2018-10-01 00:00:00 Europe/Moscow" + ]; + [ + "2018-12-01 00:00:00 Europe/Moscow" + ]; + [ + "2018-12-10 00:00:00 Europe/Moscow" + ]; + [ + "2018-12-15 00:00:00 Europe/Moscow" + ]; + [ + "2018-12-15 00:00:00 Europe/Moscow" + ]; + [ + "2018-12-15 00:00:00 Europe/Moscow" + ]; + [ + "2018-12-15 01:00:00 Europe/Moscow" + ]; + [ + "2018-12-15 01:02:00 Europe/Moscow" + ]; + [ + "2018-12-15 01:01:57 Europe/Moscow" + ]; + [ + "3723456789" + ] + ]; + [ + [ + "2105-01-01 00:00:00 GMT" + ]; + [ + "2105-10-01 00:00:00 GMT" + ]; + [ + "2105-12-01 00:00:00 GMT" + ]; + [ + "2105-12-28 00:00:00 GMT" + ]; + [ + "2105-12-31 00:00:00 GMT" + ]; + [ + "2105-12-31 13:00:00 GMT" + ]; + [ + "2105-12-31 16:00:00 GMT" + ]; + [ + "2105-12-31 16:15:00 GMT" + ]; + [ + "2105-12-31 16:23:40 GMT" + ]; + [ + "2105-12-31 16:23:44 GMT" + ]; + [ + "59025000000" + ] + ]; + [ + [ + "2106-01-01 00:00:00 Europe/Moscow" + ]; + [ + "2106-01-01 00:00:00 Europe/Moscow" + ]; + [ + "2106-01-01 00:00:00 Europe/Moscow" + ]; + [ + "2105-12-28 00:00:00 Europe/Moscow" + ]; + [ + "2106-01-01 00:00:00 Europe/Moscow" + ]; + [ + "2106-01-01 00:00:00 Europe/Moscow" + ]; + [ + "2106-01-01 00:00:00 Europe/Moscow" + ]; + [ + "2106-01-01 01:00:00 Europe/Moscow" + ]; + [ + "2106-01-01 01:00:00 Europe/Moscow" + ]; + [ + "2106-01-01 00:59:58 Europe/Moscow" + ]; + [ + "3600000000" + ] + ]; + [ + [ + "2019-01-01 00:00:00 Europe/Moscow" + ]; + [ + "2019-07-01 00:00:00 Europe/Moscow" + ]; + [ + "2019-07-01 00:00:00 Europe/Moscow" + ]; + [ + "2019-07-22 00:00:00 Europe/Moscow" + ]; + [ + "2019-07-24 00:00:00 Europe/Moscow" + ]; + [ + "2019-07-24 00:00:00 Europe/Moscow" + ]; + [ + "2019-07-24 12:00:00 Europe/Moscow" + ]; + [ + "2019-07-24 12:00:00 Europe/Moscow" + ]; + [ + "2019-07-24 12:00:00 Europe/Moscow" + ]; + [ + "2019-07-24 11:59:57 Europe/Moscow" + ]; + [ + "43200000000" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_To_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_To_/results.txt new file mode 100644 index 0000000000..eb4422e211 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_To_/results.txt @@ -0,0 +1,332 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "interval_to_days"; + [ + "OptionalType"; + [ + "DataType"; + "Int32" + ] + ] + ]; + [ + "interval_to_hours"; + [ + "OptionalType"; + [ + "DataType"; + "Int32" + ] + ] + ]; + [ + "interval_to_minutes"; + [ + "OptionalType"; + [ + "DataType"; + "Int32" + ] + ] + ]; + [ + "interval_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Int32" + ] + ] + ]; + [ + "interval_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "interval_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "date_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "datetime_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "timestamp_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "tzdate_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "tzdatetime_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "tztimestamp_to_seconds"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "date_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "datetime_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "timestamp_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tzdate_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tzdatetime_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tztimestamp_to_msec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "date_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "datetime_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "timestamp_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tzdate_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tzdatetime_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "tztimestamp_to_usec"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "2" + ]; + [ + "58" + ]; + [ + "3480" + ]; + [ + "208800" + ]; + [ + "208800000" + ]; + [ + "208800000000" + ]; + [ + "1542844800" + ]; + [ + "1542921619" + ]; + [ + "1542921619" + ]; + [ + "1542758400" + ]; + [ + "1542910819" + ]; + [ + "1542910819" + ]; + [ + "1542844800000" + ]; + [ + "1542921619000" + ]; + [ + "1542921619345" + ]; + [ + "1542758400000" + ]; + [ + "1542910819000" + ]; + [ + "1542910819345" + ]; + [ + "1542844800000000" + ]; + [ + "1542921619000000" + ]; + [ + "1542921619345678" + ]; + [ + "1542758400000000" + ]; + [ + "1542910819000000" + ]; + [ + "1542910819345678" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_TzToDate_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_TzToDate_/results.txt new file mode 100644 index 0000000000..c6fd6ea8b9 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_TzToDate_/results.txt @@ -0,0 +1,52 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "DataType"; + "String" + ] + ]; + [ + "column2"; + [ + "DataType"; + "String" + ] + ]; + [ + "column3"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "2000-01-01"; + "2000-01-01,Europe/Moscow"; + "1999-12-31"; + "2000-01-01,Europe/Moscow" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_UpdateTz_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_UpdateTz_/results.txt new file mode 100644 index 0000000000..9ebcadb565 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_UpdateTz_/results.txt @@ -0,0 +1,64 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1999-12-31T21:00:00Z" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1999-12-31T21:00:00Z" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Update_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Update_/results.txt new file mode 100644 index 0000000000..75dfcd0b39 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_Update_/results.txt @@ -0,0 +1,236 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column9"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column10"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column11"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column12"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column13"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column14"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column15"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column16"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column17"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "2005-12-01T21:20:19.345678,GMT" + ]; + #; + [ + "2001-07-01T21:20:19.345678,GMT" + ]; + #; + [ + "2001-12-20T21:20:19.345678,GMT" + ]; + #; + #; + [ + "2001-12-01T11:10:09.345678,GMT" + ]; + [ + "2001-12-01T11:20:19.345678,GMT" + ]; + #; + [ + "2001-12-01T21:10:19.345678,GMT" + ]; + #; + [ + "2001-12-01T21:20:09.345678,GMT" + ]; + #; + [ + "2001-12-01T21:20:19.123456,GMT" + ]; + #; + [ + "2001-12-01T21:20:19.345678,America/Creston" + ]; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_yql-14977_/results.txt b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_yql-14977_/results.txt new file mode 100644 index 0000000000..c2ee1b5e2e --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/canondata/test.test_yql-14977_/results.txt @@ -0,0 +1,33 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "May/15/2022" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/BlockGet.in b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockGet.in new file mode 100644 index 0000000000..bd5a96985b --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockGet.in @@ -0,0 +1,6 @@ +{ + "fdate"="2018-11-22"; + "fdatetime"="2018-11-22T21:20:19Z"; + "ftimestamp"="2018-11-22T21:20:19.345678Z"; +}; + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/BlockGet.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockGet.in.attr new file mode 100644 index 0000000000..d9a16bcd3d --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockGet.in.attr @@ -0,0 +1,31 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "fdate"; + [ + "DataType"; + "String" + ] + ]; + [ + "fdatetime"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftimestamp"; + [ + "DataType"; + "String" + ] + ]; + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/BlockGet.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockGet.sql new file mode 100644 index 0000000000..c7e442629c --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockGet.sql @@ -0,0 +1,30 @@ +/* syntax version 1 */ +pragma UseBlocks; +insert into @t + select + cast(fdate as Date) as `date`, + cast(fdatetime as Datetime) as `datetime`, + cast(ftimestamp as Timestamp) as `timestamp`, + from Input; + +commit; +SELECT + DateTime::GetHour(`date`) as date_hour, + DateTime::GetMinute(`date`) as date_minute, + DateTime::GetSecond(`date`) as date_second, + DateTime::GetMillisecondOfSecond(`date`) as date_milli, + DateTime::GetMicrosecondOfSecond(`date`) as date_micro, + + DateTime::GetHour(`datetime`) as datetime_hour, + DateTime::GetMinute(`datetime`) as datetime_minute, + DateTime::GetSecond(`datetime`) as datetime_second, + DateTime::GetMillisecondOfSecond(`datetime`) as datetime_milli, + DateTime::GetMicrosecondOfSecond(`datetime`) as datetime_micro, + + DateTime::GetHour(`timestamp`) as timestamp_hour, + DateTime::GetMinute(`timestamp`) as timestamp_minute, + DateTime::GetSecond(`timestamp`) as timestamp_second, + DateTime::GetMillisecondOfSecond(`timestamp`) as timestamp_milli, + DateTime::GetMicrosecondOfSecond(`timestamp`) as timestamp_micro, +FROM @t; + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/BlockTo.in b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockTo.in new file mode 100644 index 0000000000..df7d2d91ab --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockTo.in @@ -0,0 +1,10 @@ +{ + "fdate"="2018-11-22"; + "fdatetime"="2018-11-22T21:20:19Z"; + "ftimestamp"="2018-11-22T21:20:19.345678Z"; + "finterval"="P2DT10H"; + "ftzdate"="2018-11-22,Europe/Moscow"; + "ftzdatetime"="2018-11-22T21:20:19,Europe/Moscow"; + "ftztimestamp"="2018-11-22T21:20:19.345678,Europe/Moscow" +}; + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/BlockTo.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockTo.in.attr new file mode 100644 index 0000000000..d239a6ed78 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockTo.in.attr @@ -0,0 +1,59 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "fdate"; + [ + "DataType"; + "String" + ] + ]; + [ + "fdatetime"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftimestamp"; + [ + "DataType"; + "String" + ] + ]; + [ + "finterval"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftzdate"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftzdatetime"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftztimestamp"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/BlockTo.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockTo.sql new file mode 100644 index 0000000000..243c4d2b4d --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/BlockTo.sql @@ -0,0 +1,41 @@ +/* syntax version 1 */ +pragma UseBlocks; +insert into @t + select + cast(fdate as Date) as `date`, + cast(fdatetime as Datetime) as `datetime`, + cast(ftimestamp as Timestamp) as `timestamp`, + cast(finterval as Interval) as `interval`, + cast(ftzdate as TzDate) as `tzdate`, + cast(ftzdatetime as TzDatetime) as `tzdatetime`, + cast(ftztimestamp as TzTimestamp) as `tztimestamp` + from Input; + +commit; +select + DateTime::ToSeconds(`interval`) as interval_to_seconds, + DateTime::ToMilliseconds(`interval`) as interval_to_msec, + DateTime::ToMicroseconds(`interval`) as interval_to_usec, + + DateTime::ToSeconds(`date`) as date_to_seconds, + DateTime::ToSeconds(`datetime`) as datetime_to_seconds, + DateTime::ToSeconds(`timestamp`) as timestamp_to_seconds, + DateTime::ToSeconds(`tzdate`) as tzdate_to_seconds, + DateTime::ToSeconds(`tzdatetime`) as tzdatetime_to_seconds, + DateTime::ToSeconds(`tztimestamp`) as tztimestamp_to_seconds, + + DateTime::ToMilliseconds(`date`) as date_to_msec, + DateTime::ToMilliseconds(`datetime`) as datetime_to_msec, + DateTime::ToMilliseconds(`timestamp`) as timestamp_to_msec, + DateTime::ToMilliseconds(`tzdate`) as tzdate_to_msec, + DateTime::ToMilliseconds(`tzdatetime`) as tzdatetime_to_msec, + DateTime::ToMilliseconds(`tztimestamp`) as tztimestamp_to_msec, + + DateTime::ToMicroseconds(`date`) as date_to_usec, + DateTime::ToMicroseconds(`datetime`) as datetime_to_usec, + DateTime::ToMicroseconds(`timestamp`) as timestamp_to_usec, + DateTime::ToMicroseconds(`tzdate`) as tzdate_to_usec, + DateTime::ToMicroseconds(`tzdatetime`) as tzdatetime_to_usec, + DateTime::ToMicroseconds(`tztimestamp`) as tztimestamp_to_usec +from @t; + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Format.in b/ydb/library/yql/udfs/common/datetime2/test/cases/Format.in new file mode 100644 index 0000000000..f9390e7c2b --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Format.in @@ -0,0 +1,4 @@ +{"ftztimestamp" = "1970-01-01T00:00:00,GMT"}; +{"ftztimestamp" = "2018-12-01T01:02:03.456789,Europe/Moscow"}; +{"ftztimestamp" = "2011-03-13T02:15:00,America/Los_Angeles"}; +{"ftztimestamp" = "2011-11-06T01:15:00,America/Los_Angeles"}; diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Format.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/Format.in.attr new file mode 100644 index 0000000000..2cc4f8c0d6 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Format.in.attr @@ -0,0 +1,17 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "ftztimestamp"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Format.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/Format.sql new file mode 100644 index 0000000000..25daf1105d --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Format.sql @@ -0,0 +1,6 @@ +/* syntax version 1 */ +$format = DateTime::Format("%% year %Y monthFullName %B monthShortName %b month %m day %d hours %H minutes %M seconds %S tz %z tzname %Z text"); + +select + $format(DateTime::Split(cast(ftztimestamp as TzTimestamp))) +from Input diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/From.in b/ydb/library/yql/udfs/common/datetime2/test/cases/From.in new file mode 100644 index 0000000000..dd293eaaa7 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/From.in @@ -0,0 +1,12 @@ +{ + "fts_seconds" = 3875345u; + "fts_msec" = 3875345000u; + "fts_usec" = 3875345000000u; + + "fdays" = 7; + "fhours" = 168; + "fminutes" = 10080; + "fseconds" = 604800; + "fmsec" = 604800000; + "fusec" = -604800000000; +}; diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/From.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/From.in.attr new file mode 100644 index 0000000000..538f83ab72 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/From.in.attr @@ -0,0 +1,73 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "fts_seconds"; + [ + "DataType"; + "Uint32" + ] + ]; + [ + "fts_msec"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "fts_usec"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "fdays"; + [ + "DataType"; + "Int16" + ] + ]; + [ + "fhours"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "fminutes"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "fseconds"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "fmsec"; + [ + "DataType"; + "Int64" + ] + ]; + [ + "fusec"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/From.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/From.sql new file mode 100644 index 0000000000..c596e33f58 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/From.sql @@ -0,0 +1,14 @@ +/* syntax version 1 */ +select + DateTime::FromSeconds(fts_seconds) as ts_seconds, + DateTime::FromMilliseconds(fts_msec) as ts_msec, + DateTime::FromMicroseconds(fts_usec) as ts_usec, + DateTime::FromMicroseconds(fts_msec * fts_msec) as ts_empty, + + DateTime::IntervalFromDays(fdays) as interval_days, + DateTime::IntervalFromHours(fhours) as interval_hours, + DateTime::IntervalFromMinutes(fminutes) as interval_minutes, + DateTime::IntervalFromSeconds(fseconds) as interval_seconds, + DateTime::IntervalFromMilliseconds(fmsec) as interval_msec, + DateTime::IntervalFromMicroseconds(fusec) as interval_usec +from Input diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Get.in b/ydb/library/yql/udfs/common/datetime2/test/cases/Get.in new file mode 100644 index 0000000000..06d6029580 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Get.in @@ -0,0 +1,10 @@ +{"ftztimestamp"="1970-01-01T11:14:00.000000,GMT"}; +{"ftztimestamp"="1970-01-02T14:08:00.000000,GMT"}; +{"ftztimestamp"="1970-02-01T17:03:00.000000,GMT"}; +{"ftztimestamp"="1970-09-03T07:22:00.000000,GMT"}; +{"ftztimestamp"="1970-12-31T23:59:59.999999,GMT"}; +{"ftztimestamp"="1971-01-01T00:00:00.000000,GMT"}; +{"ftztimestamp"="1971-01-14T00:00:00.000000,GMT"}; +{"ftztimestamp"="1978-01-25T16:15:00.000000,Europe/Uzhgorod"}; +{"ftztimestamp"="2018-12-01T01:02:03.456789,Europe/Moscow"}; + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Get.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/Get.in.attr new file mode 100644 index 0000000000..2cc4f8c0d6 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Get.in.attr @@ -0,0 +1,17 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "ftztimestamp"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Get.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/Get.sql new file mode 100644 index 0000000000..99ec9528fc --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Get.sql @@ -0,0 +1,23 @@ +/* syntax version 1 */ +SELECT + DateTime::GetYear(tm) as ryear, + DateTime::GetDayOfYear(tm) as rdayofyear, + DateTime::GetMonth(tm) as rmonth, + DateTime::GetMonthName(tm) as rmonthname, + DateTime::GetWeekOfYear(tm) as rweekofyear, + DateTime::GetWeekOfYearIso8601(tm) as rweekofyeariso8601, + DateTime::GetDayOfMonth(tm) as rdayofmonth, + DateTime::GetDayOfWeek(tm) as rdayofweek, + DateTime::GetDayOfWeekName(tm) as rdayofweekname, + DateTime::GetHour(tm) as rhour, + DateTime::GetMinute(tm) as rminute, + DateTime::GetSecond(tm) as rsecond, + DateTime::GetMillisecondOfSecond(tm) as rmsec, + DateTime::GetMicrosecondOfSecond(tm) as rusec, + DateTime::GetTimezoneId(tm) as rtz, + DateTime::GetTimezoneName(tm) as rtzname +FROM ( + SELECT + DateTime::Split(CAST(ftztimestamp as TzTimestamp)) as tm + FROM Input +); diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/ImplicitSplit.in b/ydb/library/yql/udfs/common/datetime2/test/cases/ImplicitSplit.in new file mode 100644 index 0000000000..26f8d00679 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/ImplicitSplit.in @@ -0,0 +1,9 @@ +{ + "fdate"="2018-12-15"; + "fdatetime"="2018-12-15T01:02:03Z"; + "ftimestamp"="2018-12-15T01:02:03.456789Z"; + "ftzdate"="2018-12-15,Europe/Moscow"; + "ftzdatetime"="2018-12-15T01:02:03,Europe/Moscow"; + "ftztimestamp"="2018-12-15T01:02:03.456789,Europe/Moscow" +}; + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/ImplicitSplit.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/ImplicitSplit.in.attr new file mode 100644 index 0000000000..876e4f8a19 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/ImplicitSplit.in.attr @@ -0,0 +1,52 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "fdate"; + [ + "DataType"; + "String" + ] + ]; + [ + "fdatetime"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftimestamp"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftzdate"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftzdatetime"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftztimestamp"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/ImplicitSplit.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/ImplicitSplit.sql new file mode 100644 index 0000000000..df19228e82 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/ImplicitSplit.sql @@ -0,0 +1,20 @@ +/* syntax version 1 */ +$format = DateTime::Format("%Y%m%d %H%M%S %Z"); + +select + $format(`date`), + $format(`datetime`), + $format(`timestamp`), + $format(`tzdate`), + $format(`tzdatetime`), + $format(`tztimestamp`) +from ( + select + cast(fdate as Date) as `date`, + cast(fdatetime as Datetime) as `datetime`, + cast(ftimestamp as Timestamp) as `timestamp`, + cast(ftzdate as TzDate) as `tzdate`, + cast(ftzdatetime as TzDatetime) as `tzdatetime`, + cast(ftztimestamp as TzTimestamp) as `tztimestamp` + from Input +); diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Parse.in b/ydb/library/yql/udfs/common/datetime2/test/cases/Parse.in new file mode 100644 index 0000000000..fa560d488c --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Parse.in @@ -0,0 +1,55 @@ +{ + "fdatetime1"="2011 03 08 010203 Europe/Moscow text"; + "fdatetime2"="%text% 02/23/2022 12:00:00."; + "fdatetime3"="march/08/2011"; + "fdatetime4"="mar/08/2011"; + + "frfc822"="Fri, 4 Mar 2005 19:34:45 EST"; + "fiso8601"="2009-02-14T02:31:30+0300"; + "fhttp"="Sunday, 06-Nov-94 08:49:37 GMT"; + "fx509"="20091014165533Z"; +}; +{ + "fdatetime1"="2011 03 08 010203.22 Europe/Moscow text"; + "fdatetime2"="%text% 02/23/2022 12:00:00.666666"; + "fdatetime3"="November/08/2011"; + "fdatetime4"="Nov/08/2011"; + + "frfc822"="4 Mar 05 19:34 -0330"; + "fiso8601"="2009-09-19 03:37:03.012331+04:00"; + "fhttp"="Sun Nov 6 08:49:37 1994"; + "fx509"="990104074212Z"; +}; +{ + "fdatetime1"="2011 03 08 010203 Europe/Moscow bar"; + "fdatetime2"="%text% 02/23/2022 12:00:00.999999999"; + "fdatetime3"="JanUAry/08/2011"; + "fdatetime4"="jAN/08/2011"; + + "frfc822"="17 Nov 2008 19:34:45"; + "fiso8601"="1990-03-151Y15:16:17.18"; + "fhttp"="1990-03-151Y15:16:17.18"; + "fx509"="500101000000Z"; +}; +{ + "fdatetime1"="2011 03 08 010203 Europe/Moscow bar"; + "fdatetime2"="%text% 02/23/2022 12:00:00.42"; + "fdatetime3"="JanUArY/08/2011"; + "fdatetime4"="JAN/08/2011"; + + "frfc822"="17 Nov 2008 19:34:45"; + "fiso8601"="1990-03-151Y15:16:17.182"; + "fhttp"="1990-03-151Y15:16:17.182"; + "fx509"="500101000000Z"; +}; +{ + "fdatetime1"="2011 03 08 010203 Europe/Moscow bar"; + "fdatetime2"="%text% 02/23/2022 12:00:00.82387468293473839939483932923"; + "fdatetime3"="JanUArY/08/2011"; + "fdatetime4"="feb/08/2011"; + + "frfc822"="17 Nov 2008 19:34:45"; + "fiso8601"="1990-03-151Y15:16:17.182"; + "fhttp"="1990-03-151Y15:16:17.182"; + "fx509"="500101000000Z"; +}; diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Parse.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/Parse.in.attr new file mode 100644 index 0000000000..935646e0df --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Parse.in.attr @@ -0,0 +1,66 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "fdatetime1"; + [ + "DataType"; + "String" + ] + ]; + [ + "fdatetime2"; + [ + "DataType"; + "String" + ] + ]; + [ + "fdatetime3"; + [ + "DataType"; + "String" + ] + ]; + [ + "fdatetime4"; + [ + "DataType"; + "String" + ] + ]; + [ + "frfc822"; + [ + "DataType"; + "String" + ] + ]; + [ + "fiso8601"; + [ + "DataType"; + "String" + ] + ]; + [ + "fhttp"; + [ + "DataType"; + "String" + ] + ]; + [ + "fx509"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Parse.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/Parse.sql new file mode 100644 index 0000000000..b39fc6c244 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Parse.sql @@ -0,0 +1,25 @@ +/* syntax version 1 */ +$parse1 = DateTime::Parse("%Y %m %d %H%M%S %Z text"); +$parse2 = DateTime::Parse("%%text%% %m/%d/%Y %H:%M:%S"); +$parse3 = DateTime::Parse("%B/%d/%Y"); +$parse4 = DateTime::Parse("%b/%d/%Y"); + + +$format1 = DateTime::Format("%Y-%m-%dT%H:%M:%S,%Z"); +$format2 = DateTime::Format("%Y%m%d %H%M%S %z"); +$format3 = DateTime::Format("%Y%m%d"); + +select + $format1($parse1(fdatetime1)), + $format2($parse1(fdatetime1)), + $format1($parse2(fdatetime2)), + $format2($parse2(fdatetime2)), + + $format3($parse3(fdatetime3)), + $format3($parse4(fdatetime4)), + + $format1(DateTime::ParseRfc822(frfc822)), + $format1(DateTime::ParseIso8601(fiso8601)), + $format1(DateTime::ParseHttp(fhttp)), + $format1(DateTime::ParseX509(fx509)) +from Input diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/ParseIso8601.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/ParseIso8601.sql new file mode 100644 index 0000000000..c79bdbf5f1 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/ParseIso8601.sql @@ -0,0 +1 @@ +select DateTime::ParseIso8601("2106-01-01T00:00:00"), DateTime::ParseIso8601("2200-01-01T00:00:00"), DateTime::ParseIso8601("2106-02-01T00:00:00");
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/ParseLim.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/ParseLim.sql new file mode 100644 index 0000000000..2ecd70fcbb --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/ParseLim.sql @@ -0,0 +1,19 @@ +$dt_parser1 = DateTime::Parse('%Y-%m-%d'); +$dt_parser2 = DateTime::Parse('%Y-%m-%d %H:%M:%S'); +$dt_parser1z = DateTime::Parse('%Y-%m-%d %Z'); +$dt_parser2z = DateTime::Parse('%Y-%m-%d %H:%M:%S %Z'); + +SELECT + $dt_parser1("2105-12-31"), $dt_parser1("2106-01-01"), + $dt_parser2("2105-12-31 23:59:59"), $dt_parser2("2106-01-01 00:00:00"), + $dt_parser2("2105-12-31 23:59:59.999999"), $dt_parser2("2106-01-01 00:00:00.000000"), + $dt_parser1z("2105-12-31 Etc/GMT+11"), + $dt_parser1z("2106-01-01 Etc/GMT-1"), + $dt_parser2z("2105-12-31 23:00:00 Etc/GMT+1"), + $dt_parser2z("2105-12-31 22:59:59.999999 Etc/GMT+1"), + $dt_parser1("1970-01-01"), $dt_parser1("1969-12-31"), + $dt_parser2("1970-01-01 00:00:00"), $dt_parser2("1969-12-31 23:59:59"), + $dt_parser2("1969-12-31 23:59:59.999999"), $dt_parser2("1970-01-01 00:00:00.000000"), + $dt_parser2z("1969-12-31 23:00:00 Etc/GMT+1"), + $dt_parser2z("1969-12-31 22:59:59.999999 Etc/GMT+1"); + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Repr.in b/ydb/library/yql/udfs/common/datetime2/test/cases/Repr.in new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Repr.in diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Repr.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/Repr.sql new file mode 100644 index 0000000000..d92b0ade4e --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Repr.sql @@ -0,0 +1,4 @@ +/* syntax version 1 */ +select + DateTime::Parse("%Y.%m.%d")("2016.08.15"), + DateTime::Split(AddTimezone(DateTime("2017-01-01T10:00:00Z"),"Europe/Moscow")) diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Shift.in b/ydb/library/yql/udfs/common/datetime2/test/cases/Shift.in new file mode 100644 index 0000000000..7f81c5d074 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Shift.in @@ -0,0 +1,8 @@ +{"ftztimestamp"="2001-11-17T21:20:19.345678,GMT"; }; +{"ftztimestamp"="1970-01-01T11:14:00.000000,GMT"}; +{"ftztimestamp"="2105-12-01T01:08:00.000000,Europe/Moscow"}; +{"ftztimestamp"="2049-06-13T00:00:00.000000,GMT"}; +{"ftztimestamp"="2000-01-31T16:15:00.000000,Europe/Uzhgorod"}; +{"ftztimestamp"="2024-02-29T01:02:03.456789,Europe/Moscow"}; +{"ftztimestamp"="1970-02-01T02:00:00.444123,Europe/Moscow"}; + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Shift.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/Shift.in.attr new file mode 100644 index 0000000000..3915337be3 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Shift.in.attr @@ -0,0 +1,17 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "ftztimestamp"; + [ + "DataType"; + "String" + ] + ]; + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Shift.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/Shift.sql new file mode 100644 index 0000000000..b421c55868 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Shift.sql @@ -0,0 +1,22 @@ +SELECT + cast(DateTime::MakeTzTimestamp(DateTime::ShiftYears(tm, 10)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftYears(tm, 10)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftQuarters(tm, 16)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftQuarters(tm, -16)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftMonths(tm, 0)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftMonths(tm, 1)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftMonths(tm, 3)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftMonths(tm, 11)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftMonths(tm, 12)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftMonths(tm, 123)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftMonths(tm, -1)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftMonths(tm, -3)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftMonths(tm, -11)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftMonths(tm, -12)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::ShiftMonths(tm, -123)) as String) +from ( + select + cast(ftztimestamp as TzTimestamp) as tm + from Input +); + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake.in b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake.in new file mode 100644 index 0000000000..580acf3f86 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake.in @@ -0,0 +1,49 @@ +{ + "fdate"="1945-05-09"; + "fdatetime"="1945-05-09T00:00:00Z"; + "ftimestamp"="1945-05-09T00:00:00.000000Z"; + "ftzdate"="1945-05-09,Europe/Moscow"; + "ftzdatetime"="1945-05-09T00:00:00,Europe/Moscow"; + "ftztimestamp"="1945-05-09T00:00:00.000000,Europe/Moscow" +}; +{ + "fdate"="1970-01-01"; + "fdatetime"="1970-01-01T00:30:00Z"; + "ftimestamp"="1970-01-01T00:30:00.000000Z"; + "ftzdate"="1970-01-01,Europe/Moscow"; + "ftzdatetime"="1970-01-01T01:00:00,Europe/Moscow"; + "ftztimestamp"="1970-01-01T05:00:00.000000,Europe/Moscow" +}; +{ + "fdate"="2018-12-15"; + "fdatetime"="2018-12-15T01:02:03Z"; + "ftimestamp"="2018-12-15T01:02:03.456789Z"; + "ftzdate"="2018-12-15,Europe/Moscow"; + "ftzdatetime"="2018-12-15T01:02:03,Europe/Moscow"; + "ftztimestamp"="2018-12-15T01:02:03.456789,Europe/Moscow" +}; +{ + "fdate"="2105-12-31"; + "fdatetime"="2105-12-31T23:59:59Z"; + "ftimestamp"="2105-12-31T23:59:59.999999Z"; + "ftzdate"="2105-12-31,Canada/Central"; + "ftzdatetime"="2105-12-31T16:00:00,Canada/Central"; + "ftztimestamp"="2105-12-31T23:00:00.000000,Canada/Central" +}; +{ + "fdate"="2106-01-01"; + "fdatetime"="2106-01-01T00:00:00Z"; + "ftimestamp"="2106-01-01T00:00:00.000000Z"; + "ftzdate"="2106-01-01,Europe/Moscow"; + "ftzdatetime"="2106-01-01T01:00:00,Europe/Moscow"; + "ftztimestamp"="2106-01-01T05:00:00.000000,Europe/Moscow" +}; +{ + "fdate"="2117-11-07"; + "fdatetime"="2117-11-07T00:00:00Z"; + "ftimestamp"="2117-11-07T00:00:00.000000Z"; + "ftzdate"="2117-11-07,Europe/Moscow"; + "ftzdatetime"="2117-11-07T00:00:00,Europe/Moscow"; + "ftztimestamp"="2117-11-07T00:00:00.000000,Europe/Moscow" +}; + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake.in.attr new file mode 100644 index 0000000000..876e4f8a19 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake.in.attr @@ -0,0 +1,52 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "fdate"; + [ + "DataType"; + "String" + ] + ]; + [ + "fdatetime"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftimestamp"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftzdate"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftzdatetime"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftztimestamp"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake.sql new file mode 100644 index 0000000000..9a8c08a8db --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake.sql @@ -0,0 +1,18 @@ +/* syntax version 1 */ +select + DateTime::MakeDate(DateTime::Split(`date`)) as rdate, + DateTime::MakeDatetime(DateTime::Split(`datetime`)) as rdatetime, + DateTime::MakeTimestamp(DateTime::Split(`timestamp`)) as rtimestamp, + DateTime::MakeTzDate(DateTime::Split(`tzdate`)) as rtzdate, + DateTime::MakeTzDatetime(DateTime::Split(`tzdatetime`)) as rtzdatetime, + DateTime::MakeTzTimestamp(DateTime::Split(`tztimestamp`)) as rtztimestamp +from ( + select + cast(fdate as Date) as `date`, + cast(fdatetime as Datetime) as `datetime`, + cast(ftimestamp as Timestamp) as `timestamp`, + cast(ftzdate as TzDate) as `tzdate`, + cast(ftzdatetime as TzDatetime) as `tzdatetime`, + cast(ftztimestamp as TzTimestamp) as `tztimestamp` + from Input +); diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.cfg b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.cfg new file mode 100644 index 0000000000..b5a6eac7ad --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.cfg @@ -0,0 +1 @@ +in plato.Input SplitMake1969.in diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.in b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.in new file mode 100644 index 0000000000..70a53282f3 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.in @@ -0,0 +1,8 @@ +{ + "fdate"="1969-12-31"; + "fdatetime"="1969-12-31T23:00:00Z"; + "ftimestamp"="1969-12-31T23:00:00.000000Z"; + "ftzdate"="1969-12-31,Canada/Central"; + "ftzdatetime"="1969-12-31T16:00:00,Canada/Central"; + "ftztimestamp"="1969-12-31T23:00:00.000000,Canada/Central" +};
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.in.attr new file mode 100644 index 0000000000..876e4f8a19 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.in.attr @@ -0,0 +1,52 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "fdate"; + [ + "DataType"; + "String" + ] + ]; + [ + "fdatetime"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftimestamp"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftzdate"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftzdatetime"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftztimestamp"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.sql new file mode 100644 index 0000000000..9a8c08a8db --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/SplitMake1969.sql @@ -0,0 +1,18 @@ +/* syntax version 1 */ +select + DateTime::MakeDate(DateTime::Split(`date`)) as rdate, + DateTime::MakeDatetime(DateTime::Split(`datetime`)) as rdatetime, + DateTime::MakeTimestamp(DateTime::Split(`timestamp`)) as rtimestamp, + DateTime::MakeTzDate(DateTime::Split(`tzdate`)) as rtzdate, + DateTime::MakeTzDatetime(DateTime::Split(`tzdatetime`)) as rtzdatetime, + DateTime::MakeTzTimestamp(DateTime::Split(`tztimestamp`)) as rtztimestamp +from ( + select + cast(fdate as Date) as `date`, + cast(fdatetime as Datetime) as `datetime`, + cast(ftimestamp as Timestamp) as `timestamp`, + cast(ftzdate as TzDate) as `tzdate`, + cast(ftzdatetime as TzDatetime) as `tzdatetime`, + cast(ftztimestamp as TzTimestamp) as `tztimestamp` + from Input +); diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf.in b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf.in new file mode 100644 index 0000000000..f482585e72 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf.in @@ -0,0 +1,15 @@ +{ + "ftztimestamp"="1970-01-01T05:00:00.000000,Europe/Moscow" +}; +{ + "ftztimestamp"="2018-12-15T01:02:03.456789,Europe/Moscow" +}; +{ + "ftztimestamp"="2105-12-31T16:23:45.000000,GMT" +}; +{ + "ftztimestamp"="2106-01-01T01:00:00.000000,Europe/Moscow" +}; +{ + "ftztimestamp"="2019-07-24T12:00:00,Europe/Moscow" +}; diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf.in.attr new file mode 100644 index 0000000000..2cc4f8c0d6 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf.in.attr @@ -0,0 +1,17 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "ftztimestamp"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf.sql new file mode 100644 index 0000000000..81fad12632 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf.sql @@ -0,0 +1,20 @@ +/* syntax version 1 */ +$format = DateTime::Format("%Y-%m-%d %H:%M:%S %Z"); + +select + $format(DateTime::StartOfYear(`tztimestamp`)), + $format(DateTime::StartOfQuarter(`tztimestamp`)), + $format(DateTime::StartOfMonth(`tztimestamp`)), + $format(DateTime::StartOfWeek(`tztimestamp`)), + $format(DateTime::StartOfDay(`tztimestamp`)), + $format(DateTime::StartOf(`tztimestamp`, Interval("PT13H"))), + $format(DateTime::StartOf(`tztimestamp`, Interval("PT4H"))), + $format(DateTime::StartOf(`tztimestamp`, Interval("PT15M"))), + $format(DateTime::StartOf(`tztimestamp`, Interval("PT20S"))), + $format(DateTime::StartOf(`tztimestamp`, Interval("PT7S"))), + DateTime::TimeOfDay(`tztimestamp`) +from ( + select + cast(ftztimestamp as TzTimestamp) as `tztimestamp` + from Input +); diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.cfg b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.cfg new file mode 100644 index 0000000000..d012f94fa2 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.cfg @@ -0,0 +1 @@ +in plato.Input StartOf1969.in diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.in b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.in new file mode 100644 index 0000000000..1711aa3813 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.in @@ -0,0 +1,3 @@ +{ + "ftztimestamp"="1969-12-31T23:00:00.000000,Canada/Central" +};
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.in.attr new file mode 100644 index 0000000000..2cc4f8c0d6 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.in.attr @@ -0,0 +1,17 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "ftztimestamp"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.sql new file mode 100644 index 0000000000..81fad12632 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/StartOf1969.sql @@ -0,0 +1,20 @@ +/* syntax version 1 */ +$format = DateTime::Format("%Y-%m-%d %H:%M:%S %Z"); + +select + $format(DateTime::StartOfYear(`tztimestamp`)), + $format(DateTime::StartOfQuarter(`tztimestamp`)), + $format(DateTime::StartOfMonth(`tztimestamp`)), + $format(DateTime::StartOfWeek(`tztimestamp`)), + $format(DateTime::StartOfDay(`tztimestamp`)), + $format(DateTime::StartOf(`tztimestamp`, Interval("PT13H"))), + $format(DateTime::StartOf(`tztimestamp`, Interval("PT4H"))), + $format(DateTime::StartOf(`tztimestamp`, Interval("PT15M"))), + $format(DateTime::StartOf(`tztimestamp`, Interval("PT20S"))), + $format(DateTime::StartOf(`tztimestamp`, Interval("PT7S"))), + DateTime::TimeOfDay(`tztimestamp`) +from ( + select + cast(ftztimestamp as TzTimestamp) as `tztimestamp` + from Input +); diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/To.in b/ydb/library/yql/udfs/common/datetime2/test/cases/To.in new file mode 100644 index 0000000000..df7d2d91ab --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/To.in @@ -0,0 +1,10 @@ +{ + "fdate"="2018-11-22"; + "fdatetime"="2018-11-22T21:20:19Z"; + "ftimestamp"="2018-11-22T21:20:19.345678Z"; + "finterval"="P2DT10H"; + "ftzdate"="2018-11-22,Europe/Moscow"; + "ftzdatetime"="2018-11-22T21:20:19,Europe/Moscow"; + "ftztimestamp"="2018-11-22T21:20:19.345678,Europe/Moscow" +}; + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/To.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/To.in.attr new file mode 100644 index 0000000000..d239a6ed78 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/To.in.attr @@ -0,0 +1,59 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "fdate"; + [ + "DataType"; + "String" + ] + ]; + [ + "fdatetime"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftimestamp"; + [ + "DataType"; + "String" + ] + ]; + [ + "finterval"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftzdate"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftzdatetime"; + [ + "DataType"; + "String" + ] + ]; + [ + "ftztimestamp"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/To.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/To.sql new file mode 100644 index 0000000000..6031c7559a --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/To.sql @@ -0,0 +1,40 @@ +/* syntax version 1 */ +select + DateTime::ToDays(`interval`) as interval_to_days, + DateTime::ToHours(`interval`) as interval_to_hours, + DateTime::ToMinutes(`interval`) as interval_to_minutes, + DateTime::ToSeconds(`interval`) as interval_to_seconds, + DateTime::ToMilliseconds(`interval`) as interval_to_msec, + DateTime::ToMicroseconds(`interval`) as interval_to_usec, + + DateTime::ToSeconds(`date`) as date_to_seconds, + DateTime::ToSeconds(`datetime`) as datetime_to_seconds, + DateTime::ToSeconds(`timestamp`) as timestamp_to_seconds, + DateTime::ToSeconds(`tzdate`) as tzdate_to_seconds, + DateTime::ToSeconds(`tzdatetime`) as tzdatetime_to_seconds, + DateTime::ToSeconds(`tztimestamp`) as tztimestamp_to_seconds, + + DateTime::ToMilliseconds(`date`) as date_to_msec, + DateTime::ToMilliseconds(`datetime`) as datetime_to_msec, + DateTime::ToMilliseconds(`timestamp`) as timestamp_to_msec, + DateTime::ToMilliseconds(`tzdate`) as tzdate_to_msec, + DateTime::ToMilliseconds(`tzdatetime`) as tzdatetime_to_msec, + DateTime::ToMilliseconds(`tztimestamp`) as tztimestamp_to_msec, + + DateTime::ToMicroseconds(`date`) as date_to_usec, + DateTime::ToMicroseconds(`datetime`) as datetime_to_usec, + DateTime::ToMicroseconds(`timestamp`) as timestamp_to_usec, + DateTime::ToMicroseconds(`tzdate`) as tzdate_to_usec, + DateTime::ToMicroseconds(`tzdatetime`) as tzdatetime_to_usec, + DateTime::ToMicroseconds(`tztimestamp`) as tztimestamp_to_usec +from ( + select + cast(fdate as Date) as `date`, + cast(fdatetime as Datetime) as `datetime`, + cast(ftimestamp as Timestamp) as `timestamp`, + cast(finterval as Interval) as `interval`, + cast(ftzdate as TzDate) as `tzdate`, + cast(ftzdatetime as TzDatetime) as `tzdatetime`, + cast(ftztimestamp as TzTimestamp) as `tztimestamp` + from Input +); diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/TzToDate.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/TzToDate.sql new file mode 100644 index 0000000000..383e2d831e --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/TzToDate.sql @@ -0,0 +1,7 @@ +/* syntax version 1 */ +select +cast(DateTime::MakeDate(TzDatetime("2000-01-01T12:00:00,Europe/Moscow") ) as String), +cast(DateTime::MakeTzDate(TzDatetime("2000-01-01T12:00:00,Europe/Moscow") ) as String), + +cast(DateTime::MakeDate(TzDatetime("2000-01-01T00:00:00,Europe/Moscow") ) as String), +cast(DateTime::MakeTzDate(TzDatetime("2000-01-01T00:00:00,Europe/Moscow") ) as String); diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Update.in b/ydb/library/yql/udfs/common/datetime2/test/cases/Update.in new file mode 100644 index 0000000000..07ac535051 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Update.in @@ -0,0 +1 @@ +{ "ftztimestamp"="2001-12-01T21:20:19.345678,GMT"; }; diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Update.in.attr b/ydb/library/yql/udfs/common/datetime2/test/cases/Update.in.attr new file mode 100644 index 0000000000..3915337be3 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Update.in.attr @@ -0,0 +1,17 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "ftztimestamp"; + [ + "DataType"; + "String" + ] + ]; + ] + ] + } +} + diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/Update.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/Update.sql new file mode 100644 index 0000000000..59221221b3 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/Update.sql @@ -0,0 +1,25 @@ +/* syntax version 1 */ +SELECT + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 2005)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 2200 as Year)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, NULL, 7)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 13 as Month)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, NULL, NULL, 20)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 32 as Day)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 2018, 2, 30)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, NULL, NULL, NULL, 11, 10, 9)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 11 as Hour)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 24 as Hour)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 10 as Minute)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 60 as Minute)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 9 as Second)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 60 as Second)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 123456 as Microsecond)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 2000000 as Microsecond)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 100 as TimezoneId)) as String), + cast(DateTime::MakeTzTimestamp(DateTime::Update(tm, 1000 as TimezoneId)) as String) +from ( + select + cast(ftztimestamp as TzTimestamp) as tm + from Input +); diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/UpdateTz.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/UpdateTz.sql new file mode 100644 index 0000000000..b756270ef7 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/UpdateTz.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +pragma warning("disable","4510"); +select cast(DateTime::MakeDatetime( + DateTime::Update(Datetime("2000-01-01T00:00:00Z"), Yql::TimezoneId("Europe/Moscow") as TimezoneId) +) as string); + +select cast(DateTime::MakeDatetime( + DateTime::Update(Datetime("2000-01-01T00:00:00Z"), "Europe/Moscow" as Timezone) +) as string); diff --git a/ydb/library/yql/udfs/common/datetime2/test/cases/yql-14977.sql b/ydb/library/yql/udfs/common/datetime2/test/cases/yql-14977.sql new file mode 100644 index 0000000000..92d2660425 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/cases/yql-14977.sql @@ -0,0 +1,6 @@ +/* syntax version 1 */ +$parse = DateTime::Parse("%B/%d/%Y"); +$format = DateTime::Format("%b/%d/%Y"); + +select $format($parse("mAy/15/2022")); + diff --git a/ydb/library/yql/udfs/common/datetime2/test/ya.make b/ydb/library/yql/udfs/common/datetime2/test/ya.make new file mode 100644 index 0000000000..070b15beb7 --- /dev/null +++ b/ydb/library/yql/udfs/common/datetime2/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/datetime2) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/datetime2/ya.make b/ydb/library/yql/udfs/common/datetime2/ya.make index 369ddea268..be6ed9c2c1 100644 --- a/ydb/library/yql/udfs/common/datetime2/ya.make +++ b/ydb/library/yql/udfs/common/datetime2/ya.make @@ -19,3 +19,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +) diff --git a/ydb/library/yql/udfs/common/digest/test/canondata/result.json b/ydb/library/yql/udfs/common/digest/test/canondata/result.json new file mode 100644 index 0000000000..fb6112fc5b --- /dev/null +++ b/ydb/library/yql/udfs/common/digest/test/canondata/result.json @@ -0,0 +1,7 @@ +{ + "test.test[Basic]": [ + { + "uri": "file://test.test_Basic_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/digest/test/canondata/test.test_Basic_/results.txt b/ydb/library/yql/udfs/common/digest/test/canondata/test.test_Basic_/results.txt new file mode 100644 index 0000000000..0ffb24b87b --- /dev/null +++ b/ydb/library/yql/udfs/common/digest/test/canondata/test.test_Basic_/results.txt @@ -0,0 +1,495 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "crc32c"; + [ + "DataType"; + "Uint32" + ] + ]; + [ + "crc64"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "fnv32"; + [ + "DataType"; + "Uint32" + ] + ]; + [ + "fnv64"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "murmur"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "murmur32"; + [ + "DataType"; + "Uint32" + ] + ]; + [ + "murmur2a"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "murmur2a32"; + [ + "DataType"; + "Uint32" + ] + ]; + [ + "city"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "city128"; + [ + "TupleType"; + [ + [ + "DataType"; + "Uint64" + ]; + [ + "DataType"; + "Uint64" + ] + ] + ] + ]; + [ + "numeric"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "md5hex"; + [ + "DataType"; + "String" + ] + ]; + [ + "md5raw"; + [ + "DataType"; + "String" + ] + ]; + [ + "md5halfmix"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "argon2"; + [ + "DataType"; + "String" + ] + ]; + [ + "blake2b"; + [ + "DataType"; + "String" + ] + ]; + [ + "blake2bunkeyed"; + [ + "DataType"; + "String" + ] + ]; + [ + "blake2bkeyed"; + [ + "DataType"; + "String" + ] + ]; + [ + "sip"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "highway"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "farmfing"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "farmfing2"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "farmfing32"; + [ + "DataType"; + "Uint32" + ] + ]; + [ + "farmfing64"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "farmfing128"; + [ + "TupleType"; + [ + [ + "DataType"; + "Uint64" + ]; + [ + "DataType"; + "Uint64" + ] + ] + ] + ]; + [ + "sfh"; + [ + "DataType"; + "Uint32" + ] + ]; + [ + "sha1"; + [ + "DataType"; + "String" + ] + ]; + [ + "sha256"; + [ + "DataType"; + "String" + ] + ]; + [ + "inthash64"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "xxhash"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "xxhash128"; + [ + "TupleType"; + [ + [ + "DataType"; + "Uint64" + ]; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "2432014819"; + "17728638330159804320"; + "84696366"; + "12638153115695167470"; + "746762829127501960"; + "1228156847"; + "5654386555365545660"; + "1466639702"; + "11413460447292444913"; + [ + "125830901799957853"; + "7569582475522398857" + ]; + "2320827452992767577"; + "c4ca4238a0b923820dcc509a6f75849b"; + [ + "xMpCOKC5I4INzFCab3WEmw==" + ]; + "14973526590288695970"; + [ + "vjqkEHgWMA9RlnF/Dlkiqoxsc4vOI5/ULLMuB4GuMME=" + ]; + [ + "ks31eMRwhaWZIlbw3Pl9Cxnx8cneTV/jDDrOYZG25ds=" + ]; + [ + "ks31eMRwhaWZIlbw3Pl9Cxnx8cneTV/jDDrOYZG25ds=" + ]; + [ + "j04DEIdeE9LFquAFu4i7Q2YAyca0FDA3J8r1atHQF58=" + ]; + "1602385837086584249"; + "5348322356177288628"; + "10105606910506535461"; + [ + "2871837063151915165" + ]; + "2552028077"; + "9304157803607034849"; + [ + "5308794677172709703"; + "4629402678501957187" + ]; + "3927678806"; + [ + "NWoZK3kTsExUV00Ywo1G5jlUKKs=" + ]; + [ + "a4ayc/80/OGda4BO/1o/V0etpOqiLx1JwB5S3beHW0s=" + ]; + "10577349846663553072"; + "7335560060985733464"; + [ + "7335560060985733464"; + "16085986526811796301" + ] + ]; + [ + "2208655895"; + "4363576337578352290"; + "84696365"; + "12638153115695167469"; + "602994839685422785"; + "772897149"; + "16472888669357673283"; + "2351653828"; + "17472595041006102391"; + [ + "13426016195983081906"; + "17051066397148972982" + ]; + "6174653592142994962"; + "c81e728d9d4c2f636f067f89cc14862c"; + [ + "yB5yjZ1ML2NvBn+JzBSGLA==" + ]; + "5861621074593582340"; + [ + "ixHhYBlEBiZ446+zgg0hd5Eocp+xgMpVyaLfhjJqxV8=" + ]; + [ + "MSN823muHfp/+4fN5+qKgDUtMA7lrHWKbN3RnWcZJew=" + ]; + [ + "MSN823muHfp/+4fN5+qKgDUtMA7lrHWKbN3RnWcZJew=" + ]; + [ + "NBaDJdCQRJye6B+WJdI/OX/mIxQk3AgEHm4hM9qmLu8=" + ]; + "8789615690042391357"; + "17360383380415224727"; + "970024650806116628"; + [ + "5310514165246837948" + ]; + "3946386795"; + "6920640749119438759"; + [ + "2374933113219823160"; + "4520448414947048260" + ]; + "2190005025"; + [ + "2kuSN7rMzfGcB2DKt67EqDWQELA=" + ]; + [ + "1HNeOiZeFu7gP1lxi5tdAwGcB9i2xR+Q2jpmbuwTqzU=" + ]; + "18198135717204167749"; + "18128579709034668820"; + [ + "18128579709034668820"; + "14642767882163838550" + ] + ]; + [ + "1909385492"; + "15694391695266948643"; + "84696364"; + "12638153115695167468"; + "15180167692696242062"; + "2292183779"; + "6734453432295282525"; + "2128480519"; + "11275350073939794026"; + [ + "15168680716710346397"; + "13490672353767795293" + ]; + "13529992206878991808"; + "eccbc87e4b5ce2fe28308fd9f2a7baf3"; + [ + "7MvIfktc4v4oMI/Z8qe68w==" + ]; + "13401401932333664167"; + [ + "kRpsyYine3lH5Es1XuUlgXRBY6HLMD001QCPKqdjG7w=" + ]; + [ + "WBNIM3sPPhSGIBc9qqX5TQDYgXBdy/Cqg+/aumHS7eE=" + ]; + [ + "WBNIM3sPPhSGIBc9qqX5TQDYgXBdy/Cqg+/aumHS7eE=" + ]; + [ + "BQK9GdKOJxlDH7wMrQ1gHOPyviB18JDuIg2i0JFwkL4=" + ]; + "2874396847657928730"; + "6919389025651885183"; + "14522245769643814311"; + [ + "9221007817131939736" + ]; + "1678875853"; + "11991475895402502921"; + [ + "9295019677823677360"; + "3668607519738437716" + ]; + "2634537178"; + [ + "d95o2uzYI7q7tY7bHI4U1xBug7s=" + ]; + [ + "TgdAhWK+24tgzgXB3s/jrRa3IjCWfeAfZAt+Rym0n84=" + ]; + "9624464864560415994"; + "8296998437054084336"; + [ + "8296998437054084336"; + "6903416366538802245" + ] + ]; + [ + "0"; + "18446744073709551615"; + "2166136261"; + "14695981039346656037"; + "0"; + "0"; + "0"; + "0"; + "11160318154034397263"; + [ + "18085479540095642321"; + "11079402499652051579" + ]; + "7654268697807496793"; + "d41d8cd98f00b204e9800998ecf8427e"; + [ + "1B2M2Y8AsgTpgAmY7PhCfg==" + ]; + "7203772011789518145"; + [ + "sW8qMzZE+95eqaAsJqn4Ne3l7QwOAklHIexxpYMRsPo=" + ]; + [ + "DldRwCblQ7Loqy6wYJnaodHl30d3j3eH+qtFzfEv46g=" + ]; + [ + "DldRwCblQ7Loqy6wYJnaodHl30d3j3eH+qtFzfEv46g=" + ]; + [ + "gtMZwEiUXpGivpA1k/ith+ZulxJ3iI6tC6aVNsDsnk0=" + ]; + "16558958598623574096"; + "9185752494698444901"; + "0"; + #; + "3696677242"; + "11160318154034397263"; + [ + "4463240938071824939"; + "4374473821787594281" + ]; + "0"; + [ + "2jmj7l5rSw0yVb/vlWAYkK/YBwk=" + ]; + [ + "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" + ]; + "4761183170873013810"; + "3244421341483603138"; + [ + "6918025063187695999"; + "11072670137173121240" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/digest/test/cases/Basic.in b/ydb/library/yql/udfs/common/digest/test/cases/Basic.in new file mode 100644 index 0000000000..c90696db42 --- /dev/null +++ b/ydb/library/yql/udfs/common/digest/test/cases/Basic.in @@ -0,0 +1,4 @@ +{"key"="1";"subkey"="1";"value"=""}; +{"key"="2";"subkey"="2";"value"=""}; +{"key"="3";"subkey"="3";"value"=""}; +{"key"="";"subkey"="";"value"=""}; diff --git a/ydb/library/yql/udfs/common/digest/test/cases/Basic.sql b/ydb/library/yql/udfs/common/digest/test/cases/Basic.sql new file mode 100644 index 0000000000..ce850bc44f --- /dev/null +++ b/ydb/library/yql/udfs/common/digest/test/cases/Basic.sql @@ -0,0 +1,34 @@ +/* syntax version 1 */ +SELECT + Digest::Crc32c(key) AS crc32c, + Digest::Crc64(key) AS crc64, + Digest::Fnv32(key) AS fnv32, + Digest::Fnv64(key) AS fnv64, + Digest::MurMurHash(key) AS murmur, + Digest::MurMurHash32(key) AS murmur32, + Digest::MurMurHash2A(key) AS murmur2a, + Digest::MurMurHash2A32(key) AS murmur2a32, + Digest::CityHash(key) AS city, + Digest::CityHash128(key) AS city128, + Digest::NumericHash(COALESCE(CAST(key AS Uint64), 0)) AS numeric, + Digest::Md5Hex(key) AS md5hex, + Digest::Md5Raw(key) AS md5raw, + Digest::Md5HalfMix(key) AS md5halfmix, + Digest::Argon2(key, "12345678") AS argon2, + Digest::Blake2B(key) AS blake2b, + Digest::Blake2B(key, "") AS blake2bunkeyed, + Digest::Blake2B(key, "12345678") AS blake2bkeyed, + Digest::SipHash(111, 222, key) AS sip, + Digest::HighwayHash(111, 222, 333, 444, key) AS highway, + Digest::FarmHashFingerprint(COALESCE(CAST(key AS Uint64), 0u)) AS farmfing, + Digest::FarmHashFingerprint2(123ul, CAST(key AS Uint64)) AS farmfing2, + Digest::FarmHashFingerprint32(key) AS farmfing32, + Digest::FarmHashFingerprint64(key) AS farmfing64, + Digest::FarmHashFingerprint128(key) AS farmfing128, + Digest::SuperFastHash(key) AS sfh, + Digest::Sha1(key) as sha1, + Digest::Sha256(key) as sha256, + Digest::IntHash64(COALESCE(CAST(key AS Uint64), 0)) AS inthash64, + Digest::XXH3(key) AS xxhash, + Digest::XXH3_128(key) AS xxhash128 +FROM Input; diff --git a/ydb/library/yql/udfs/common/digest/test/ya.make b/ydb/library/yql/udfs/common/digest/test/ya.make new file mode 100644 index 0000000000..adbb143471 --- /dev/null +++ b/ydb/library/yql/udfs/common/digest/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/digest) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/digest/ya.make b/ydb/library/yql/udfs/common/digest/ya.make index 24d9cec833..ff396a71f8 100644 --- a/ydb/library/yql/udfs/common/digest/ya.make +++ b/ydb/library/yql/udfs/common/digest/ya.make @@ -25,3 +25,7 @@ PEERDIR( ADDINCL(contrib/libs/highwayhash) END() + +RECURSE_FOR_TESTS( + test +) diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/result.json b/ydb/library/yql/udfs/common/histogram/test/canondata/result.json new file mode 100644 index 0000000000..06f9e726a9 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/result.json @@ -0,0 +1,57 @@ +{ + "test.test[Algorithms]": [ + { + "uri": "file://test.test_Algorithms_/results.txt" + } + ], + "test.test[Basic]": [ + { + "uri": "file://test.test_Basic_/results.txt" + } + ], + "test.test[Distinct]": [ + { + "uri": "file://test.test_Distinct_/results.txt" + } + ], + "test.test[Intervals]": [ + { + "uri": "file://test.test_Intervals_/results.txt" + } + ], + "test.test[Linear]": [ + { + "uri": "file://test.test_Linear_/results.txt" + } + ], + "test.test[Logarithmic]": [ + { + "uri": "file://test.test_Logarithmic_/results.txt" + } + ], + "test.test[Methods]": [ + { + "uri": "file://test.test_Methods_/results.txt" + } + ], + "test.test[Normalize]": [ + { + "uri": "file://test.test_Normalize_/results.txt" + } + ], + "test.test[Print]": [ + { + "uri": "file://test.test_Print_/results.txt" + } + ], + "test.test[ToCumulativeDistributionFunction]": [ + { + "uri": "file://test.test_ToCumulativeDistributionFunction_/results.txt" + } + ], + "test.test[Weights]": [ + { + "uri": "file://test.test_Weights_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Algorithms_/results.txt b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Algorithms_/results.txt new file mode 100644 index 0000000000..37e9d6a36a --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Algorithms_/results.txt @@ -0,0 +1,476 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "adaptive_distance"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "adaptive_weight"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "adaptive_ward"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "block_weight"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "block_ward"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "algo_equality_check"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "quality_equality_check"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + [ + "8"; + "2" + ]; + [ + "3"; + "5" + ]; + [ + "5"; + "7" + ] + ]; + "AdaptiveDistance"; + "7"; + "0"; + "16" + ] + ]; + [ + [ + [ + [ + "6"; + "2" + ]; + [ + "5"; + "3.799999952316284" + ]; + [ + "5"; + "7" + ] + ]; + "AdaptiveWeight"; + "7"; + "0"; + "16" + ] + ]; + [ + [ + [ + [ + "2"; + "0.5" + ]; + [ + "6"; + "2.5" + ]; + [ + "8"; + "6.25" + ] + ]; + "AdaptiveWard"; + "7"; + "0"; + "16" + ] + ]; + [ + [ + [ + [ + "5"; + "1.399999976158142" + ]; + [ + "6"; + "4" + ]; + [ + "5"; + "7" + ] + ]; + "BlockWeight"; + "7"; + "0"; + "16" + ] + ]; + [ + [ + [ + [ + "8"; + "2" + ]; + [ + "3"; + "5" + ]; + [ + "5"; + "7" + ] + ]; + "BlockWard"; + "7"; + "0"; + "16" + ] + ]; + [ + %true + ]; + [ + %true + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Basic_/results.txt b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Basic_/results.txt new file mode 100644 index 0000000000..75ce4f96b2 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Basic_/results.txt @@ -0,0 +1,338 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "subkey_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "value_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + [ + "1"; + "0" + ]; + [ + "1"; + "1" + ]; + [ + "3"; + "2" + ]; + [ + "3"; + "3" + ]; + [ + "1"; + "4" + ]; + [ + "1"; + "5" + ]; + [ + "1"; + "6" + ]; + [ + "5"; + "7" + ] + ]; + "AdaptiveWard"; + "7"; + "0"; + "16" + ] + ]; + [ + [ + [ + [ + "1"; + "0" + ]; + [ + "1"; + "1" + ]; + [ + "3"; + "2" + ]; + [ + "3"; + "4" + ]; + [ + "1"; + "8" + ]; + [ + "1"; + "16" + ]; + [ + "1"; + "32" + ]; + [ + "5"; + "64" + ] + ]; + "AdaptiveWard"; + "64"; + "0"; + "16" + ] + ]; + [ + [ + [ + [ + "1"; + "-1" + ]; + [ + "1"; + "1" + ]; + [ + "1"; + "2" + ]; + [ + "1"; + "8" + ]; + [ + "1"; + "32" + ]; + [ + "1"; + "128" + ]; + [ + "1"; + "512" + ]; + [ + "9"; + "2048" + ] + ]; + "AdaptiveWard"; + "2048"; + "-1"; + "16" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Distinct_/results.txt b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Distinct_/results.txt new file mode 100644 index 0000000000..721c3a7f66 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Distinct_/results.txt @@ -0,0 +1,139 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "is_different"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + [ + "1"; + "0" + ]; + [ + "1"; + "1" + ]; + [ + "1"; + "2" + ]; + [ + "1"; + "3" + ]; + [ + "1"; + "4" + ]; + [ + "1"; + "5" + ]; + [ + "1"; + "6" + ]; + [ + "1"; + "7" + ] + ]; + "AdaptiveWard"; + "7"; + "0"; + "8" + ] + ]; + [ + %true + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Intervals_/results.txt b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Intervals_/results.txt new file mode 100644 index 0000000000..b19e1b600c --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Intervals_/results.txt @@ -0,0 +1,290 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "subkey_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "value_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + [ + "16"; + "4.125" + ] + ]; + "AdaptiveWard"; + "4.124999999999999"; + "4.124999999999999"; + "16" + ] + ]; + [ + [ + [ + [ + "9"; + "3" + ]; + [ + "2"; + "24" + ]; + [ + "5"; + "64" + ] + ]; + "AdaptiveWard"; + "64"; + "0"; + "16" + ] + ]; + [ + [ + [ + [ + "1"; + "-1" + ]; + [ + "1"; + "1" + ]; + [ + "1"; + "2" + ]; + [ + "1"; + "8" + ]; + [ + "1"; + "32" + ]; + [ + "1"; + "128" + ]; + [ + "1"; + "512" + ]; + [ + "9"; + "2048" + ] + ]; + "AdaptiveWard"; + "2048"; + "-1"; + "16" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Linear_/results.txt b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Linear_/results.txt new file mode 100644 index 0000000000..4ec10ae8d3 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Linear_/results.txt @@ -0,0 +1,330 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "default"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "linear_size"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "linear_min_max"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + [ + "1"; + "-2150" + ]; + [ + "1"; + "-2050" + ]; + [ + "1"; + "-50" + ]; + [ + "2"; + "0" + ]; + [ + "1"; + "10" + ]; + [ + "1"; + "30" + ]; + [ + "1"; + "90" + ]; + [ + "1"; + "130" + ]; + [ + "1"; + "510" + ]; + [ + "9"; + "2050" + ] + ]; + "Linear"; + "2050"; + "-2150"; + "19" + ] + ]; + [ + [ + [ + [ + "1"; + "-2145" + ]; + [ + "1"; + "-2046" + ]; + [ + "1"; + "-33" + ]; + [ + "3"; + "0" + ]; + [ + "1"; + "33" + ]; + [ + "1"; + "99" + ]; + [ + "1"; + "132" + ]; + [ + "1"; + "528" + ]; + [ + "9"; + "2046" + ] + ]; + "Linear"; + "2046"; + "-2145"; + "19" + ] + ]; + [ + [ + [ + [ + "9"; + "100" + ]; + [ + "1"; + "500" + ]; + [ + "9"; + "1000" + ] + ]; + "Linear"; + "1000"; + "100"; + "19" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Logarithmic_/results.txt b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Logarithmic_/results.txt new file mode 100644 index 0000000000..f465dcea21 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Logarithmic_/results.txt @@ -0,0 +1,310 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "default"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "log_size"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "log_min_max"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + [ + "1"; + "1" + ]; + [ + "2"; + "10" + ]; + [ + "3"; + "100" + ]; + [ + "9"; + "1000" + ] + ]; + "Logarithmic"; + "1000"; + "1"; + "15" + ] + ]; + [ + [ + [ + [ + "1"; + "2" + ]; + [ + "1"; + "8" + ]; + [ + "1"; + "32" + ]; + [ + "1"; + "64" + ]; + [ + "1"; + "128" + ]; + [ + "1"; + "512" + ]; + [ + "9"; + "2048" + ] + ]; + "Logarithmic"; + "2048"; + "2"; + "15" + ] + ]; + [ + [ + [ + [ + "2"; + "10" + ]; + [ + "1"; + "32" + ]; + [ + "1"; + "64" + ]; + [ + "1"; + "128" + ]; + [ + "1"; + "512" + ]; + [ + "9"; + "2048" + ] + ]; + "Logarithmic"; + "2048"; + "10"; + "15" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Methods_/results.txt b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Methods_/results.txt new file mode 100644 index 0000000000..0f0b131b12 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Methods_/results.txt @@ -0,0 +1,85 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "GetSumAboveBound"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "GetSumBelowBound"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "CalcUpperBound"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "CalcLowerBound"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "GetSumInRange"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "6.5" + ]; + [ + "9.5" + ]; + [ + "2.5" + ]; + [ + "6.166666666666667" + ]; + [ + "6.5" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Normalize_/results.txt b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Normalize_/results.txt new file mode 100644 index 0000000000..c81b76c18a --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Normalize_/results.txt @@ -0,0 +1,338 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "subkey_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "value_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + [ + "6.25"; + "0" + ]; + [ + "6.25"; + "1" + ]; + [ + "18.75"; + "2" + ]; + [ + "18.75"; + "3" + ]; + [ + "6.25"; + "4" + ]; + [ + "6.25"; + "5" + ]; + [ + "6.25"; + "6" + ]; + [ + "31.25"; + "7" + ] + ]; + "AdaptiveWard"; + "7"; + "0"; + "100" + ] + ]; + [ + [ + [ + [ + "0.0625"; + "0" + ]; + [ + "0.0625"; + "1" + ]; + [ + "0.1875"; + "2" + ]; + [ + "0.1875"; + "4" + ]; + [ + "0.0625"; + "8" + ]; + [ + "0.0625"; + "16" + ]; + [ + "0.0625"; + "32" + ]; + [ + "0.3125"; + "64" + ] + ]; + "AdaptiveWard"; + "64"; + "0"; + "1" + ] + ]; + [ + [ + [ + [ + "-0.0625"; + "-1" + ]; + [ + "-0.0625"; + "1" + ]; + [ + "-0.0625"; + "2" + ]; + [ + "-0.0625"; + "8" + ]; + [ + "-0.0625"; + "32" + ]; + [ + "-0.0625"; + "128" + ]; + [ + "-0.0625"; + "512" + ]; + [ + "-0.5625"; + "2048" + ] + ]; + "AdaptiveWard"; + "2048"; + "-1"; + "-1" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Print_/results.txt b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Print_/results.txt new file mode 100644 index 0000000000..bab67bf3e8 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Print_/results.txt @@ -0,0 +1,59 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key_histogram"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "subkey_histogram"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value_histogram"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "Kind: AdaptiveWard Bins: 8 WeightsSum: 16.000 Min: 0.000 Max: 7.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 0.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 1.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 2.000 F: 3.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 3.000 F: 3.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 4.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 5.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 6.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88 P: 7.000 F: 5.000" + ]; + [ + "Kind: AdaptiveWard Bins: 8 WeightsSum: 16.000 Min: 0.000 Max: 64.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 0.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 1.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 2.000 F: 3.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 4.000 F: 3.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 8.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 16.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 32.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88 P: 64.000 F: 5.000" + ]; + [ + "Kind: AdaptiveWard Bins: 8 WeightsSum: 16.000 Min: -1.000 Max: 2048.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: -1.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 1.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 2.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 8.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 32.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 128.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91\xE2\x96\x91 P: 512.000 F: 1.000\n\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88\xE2\x96\x88 P: 2048.000 F: 9.000" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_ToCumulativeDistributionFunction_/results.txt b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_ToCumulativeDistributionFunction_/results.txt new file mode 100644 index 0000000000..9e2b2a9689 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_ToCumulativeDistributionFunction_/results.txt @@ -0,0 +1,444 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "subkey_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "value_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "subkey_norm_cdf_histogram"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + [ + "1"; + "0" + ]; + [ + "2"; + "1" + ]; + [ + "5"; + "2" + ]; + [ + "8"; + "3" + ]; + [ + "9"; + "4" + ]; + [ + "10"; + "5" + ]; + [ + "11"; + "6" + ]; + [ + "16"; + "7" + ] + ]; + "AdaptiveWardCdf"; + "7"; + "0"; + "62" + ] + ]; + [ + [ + [ + [ + "1"; + "0" + ]; + [ + "2"; + "1" + ]; + [ + "5"; + "2" + ]; + [ + "8"; + "4" + ]; + [ + "9"; + "8" + ]; + [ + "10"; + "16" + ]; + [ + "11"; + "32" + ]; + [ + "16"; + "64" + ] + ]; + "AdaptiveWardCdf"; + "64"; + "0"; + "62" + ] + ]; + [ + [ + [ + [ + "1"; + "-1" + ]; + [ + "2"; + "1" + ]; + [ + "3"; + "2" + ]; + [ + "4"; + "8" + ]; + [ + "5"; + "32" + ]; + [ + "6"; + "128" + ]; + [ + "7"; + "512" + ]; + [ + "16"; + "2048" + ] + ]; + "AdaptiveWardCdf"; + "2048"; + "-1"; + "44" + ] + ]; + [ + [ + [ + [ + "6.25"; + "0" + ]; + [ + "12.5"; + "1" + ]; + [ + "31.25"; + "2" + ]; + [ + "50"; + "4" + ]; + [ + "56.25"; + "8" + ]; + [ + "62.5"; + "16" + ]; + [ + "68.75"; + "32" + ]; + [ + "100"; + "64" + ] + ]; + "AdaptiveWardCdfCdf"; + "64"; + "0"; + "387.5" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Weights_/results.txt b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Weights_/results.txt new file mode 100644 index 0000000000..6b9aac15ec --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/canondata/test.test_Weights_/results.txt @@ -0,0 +1,221 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "basic_weight"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "weight_and_bins"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "Bins"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Position"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "Kind"; + [ + "DataType"; + "String" + ] + ]; + [ + "Max"; + [ + "DataType"; + "Double" + ] + ]; + [ + "Min"; + [ + "DataType"; + "Double" + ] + ]; + [ + "WeightsSum"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "equality_check"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + [ + "1"; + "1" + ]; + [ + "2049"; + "2" + ]; + [ + "1026"; + "3" + ]; + [ + "4"; + "4" + ]; + [ + "8"; + "5" + ]; + [ + "16"; + "6" + ]; + [ + "160"; + "7" + ] + ]; + "AdaptiveWard"; + "7"; + "1"; + "3264" + ] + ]; + [ + [ + [ + [ + "8192"; + "2.5" + ]; + [ + "683"; + "5.664714336395264" + ]; + [ + "10240"; + "7" + ] + ]; + "AdaptiveWard"; + "7"; + "1"; + "19115" + ] + ]; + [ + %true + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Algorithms.sql b/ydb/library/yql/udfs/common/histogram/test/cases/Algorithms.sql new file mode 100644 index 0000000000..02b2bf65fc --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Algorithms.sql @@ -0,0 +1,16 @@ +/* syntax version 1 */ +SELECT + ADAPTIVE_DISTANCE_HISTOGRAM(key, 3) AS adaptive_distance, + ADAPTIVE_WEIGHT_HISTOGRAM(key, 3) AS adaptive_weight, + ADAPTIVE_WARD_HISTOGRAM(key, 3) AS adaptive_ward, + BLOCK_WEIGHT_HISTOGRAM(key, 3) AS block_weight, + BLOCK_WARD_HISTOGRAM(key, 3) AS block_ward, + Histogram::Print(ADAPTIVE_WEIGHT_HISTOGRAM(key, 3)) <> Histogram::Print(BLOCK_WEIGHT_HISTOGRAM(key, 3)) AS algo_equality_check, + Histogram::Print(ADAPTIVE_WEIGHT_HISTOGRAM(key, 3)) <> Histogram::Print(ADAPTIVE_WARD_HISTOGRAM(key, 3)) AS quality_equality_check +FROM ( + SELECT + CAST(key AS Double) AS key, + CAST(subkey AS Double) AS subkey, + CAST(value AS Double) AS value + FROM Input +); diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Basic.sql b/ydb/library/yql/udfs/common/histogram/test/cases/Basic.sql new file mode 100644 index 0000000000..2e080bd2ba --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Basic.sql @@ -0,0 +1,12 @@ +/* syntax version 1 */ +SELECT + HISTOGRAM(key) AS key_histogram, + HISTOGRAM(subkey) AS subkey_histogram, + HISTOGRAM(value) AS value_histogram +FROM ( + SELECT + CAST(key AS Double) AS key, + CAST(subkey AS Double) AS subkey, + CAST(value AS Double) AS value + FROM Input +); diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Distinct.sql b/ydb/library/yql/udfs/common/histogram/test/cases/Distinct.sql new file mode 100644 index 0000000000..347ffe76f2 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Distinct.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +SELECT + HISTOGRAM(DISTINCT key) AS key_histogram, + Histogram::Print(HISTOGRAM(key)) <> Histogram::Print(HISTOGRAM(DISTINCT key)) AS is_different +FROM ( + SELECT + CAST(key AS Double) AS key + FROM Input +); diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Intervals.sql b/ydb/library/yql/udfs/common/histogram/test/cases/Intervals.sql new file mode 100644 index 0000000000..eaceab0578 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Intervals.sql @@ -0,0 +1,12 @@ +/* syntax version 1 */ +SELECT + HISTOGRAM(key, 1) AS key_histogram, + HISTOGRAM(subkey, 3) AS subkey_histogram, + HISTOGRAM(value, 1000000) AS value_histogram +FROM ( + SELECT + CAST(key AS Double) AS key, + CAST(subkey AS Double) AS subkey, + CAST(value AS Double) AS value + FROM Input +); diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Linear.in b/ydb/library/yql/udfs/common/histogram/test/cases/Linear.in new file mode 100644 index 0000000000..22a04e936f --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Linear.in @@ -0,0 +1,19 @@ +{"key"="0";"subkey"="0";"value"="-3"}; +{"key"="0";"subkey"="0";"value"="-49"}; +{"key"="2";"subkey"="2";"value"="2"}; +{"key"="3";"subkey"="4";"value"="8"}; +{"key"="4";"subkey"="8";"value"="32"}; +{"key"="5";"subkey"="16";"value"="88"}; +{"key"="5";"subkey"="16";"value"="128"}; +{"key"="6";"subkey"="32";"value"="512"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="2";"subkey"="2";"value"="2048"}; +{"key"="3";"subkey"="4";"value"="2048"}; +{"key"="2";"subkey"="2";"value"="2048"}; +{"key"="3";"subkey"="4";"value"="2048"}; +{"key"="0";"subkey"="0";"value"="-2049"}; +{"key"="0";"subkey"="0";"value"="-2149"}; diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Linear.sql b/ydb/library/yql/udfs/common/histogram/test/cases/Linear.sql new file mode 100644 index 0000000000..08af7fc301 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Linear.sql @@ -0,0 +1,10 @@ +/* syntax version 1 */ +SELECT + LinearHistogram(value) AS default, + LinearHistogram(value, 33) AS linear_size, + LinearHistogram(value, 100, 100, 1000) AS linear_min_max +FROM ( + SELECT + CAST(value AS Double) AS value + FROM Input +); diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Logarithmic.in b/ydb/library/yql/udfs/common/histogram/test/cases/Logarithmic.in new file mode 100644 index 0000000000..22a04e936f --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Logarithmic.in @@ -0,0 +1,19 @@ +{"key"="0";"subkey"="0";"value"="-3"}; +{"key"="0";"subkey"="0";"value"="-49"}; +{"key"="2";"subkey"="2";"value"="2"}; +{"key"="3";"subkey"="4";"value"="8"}; +{"key"="4";"subkey"="8";"value"="32"}; +{"key"="5";"subkey"="16";"value"="88"}; +{"key"="5";"subkey"="16";"value"="128"}; +{"key"="6";"subkey"="32";"value"="512"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="2";"subkey"="2";"value"="2048"}; +{"key"="3";"subkey"="4";"value"="2048"}; +{"key"="2";"subkey"="2";"value"="2048"}; +{"key"="3";"subkey"="4";"value"="2048"}; +{"key"="0";"subkey"="0";"value"="-2049"}; +{"key"="0";"subkey"="0";"value"="-2149"}; diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Logarithmic.sql b/ydb/library/yql/udfs/common/histogram/test/cases/Logarithmic.sql new file mode 100644 index 0000000000..216488e91e --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Logarithmic.sql @@ -0,0 +1,10 @@ +/* syntax version 1 */ +SELECT + LogarithmicHistogram(value) AS default, + LogHistogram(value, 2) AS log_size, + LogHistogram(value, 0.5, 10, 10000) AS log_min_max +FROM ( + SELECT + CAST(value AS Double) AS value + FROM Input +); diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Methods.sql b/ydb/library/yql/udfs/common/histogram/test/cases/Methods.sql new file mode 100644 index 0000000000..8c351f8070 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Methods.sql @@ -0,0 +1,12 @@ +/* syntax version 1 */ +SELECT + Histogram::GetSumAboveBound(histo, 5.0) AS GetSumAboveBound, + Histogram::GetSumBelowBound(histo, 5.0) AS GetSumBelowBound, + Histogram::CalcUpperBound(histo, 5.0) AS CalcUpperBound, + Histogram::CalcLowerBound(histo, 5.0) AS CalcLowerBound, + Histogram::GetSumInRange(histo, 5.0, 20.0) AS GetSumInRange +FROM ( + SELECT + HISTOGRAM(CAST(key AS Double)) AS histo + FROM Input +); diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Normalize.sql b/ydb/library/yql/udfs/common/histogram/test/cases/Normalize.sql new file mode 100644 index 0000000000..3dd4a12621 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Normalize.sql @@ -0,0 +1,12 @@ +/* syntax version 1 */ +SELECT + Histogram::Normalize(HISTOGRAM(key)) AS key_histogram, + Histogram::Normalize(HISTOGRAM(subkey), 1.0) AS subkey_histogram, + Histogram::Normalize(HISTOGRAM(value), -1.0) AS value_histogram +FROM ( + SELECT + CAST(key AS Double) AS key, + CAST(subkey AS Double) AS subkey, + CAST(value AS Double) AS value + FROM Input +); diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Print.sql b/ydb/library/yql/udfs/common/histogram/test/cases/Print.sql new file mode 100644 index 0000000000..5434e8dea3 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Print.sql @@ -0,0 +1,12 @@ +/* syntax version 1 */ +SELECT + Histogram::Print(HISTOGRAM(key)) AS key_histogram, + Histogram::Print(HISTOGRAM(subkey)) AS subkey_histogram, + Histogram::Print(HISTOGRAM(value), 50) AS value_histogram +FROM ( + SELECT + CAST(key AS Double) AS key, + CAST(subkey AS Double) AS subkey, + CAST(value AS Double) AS value + FROM Input +); diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/ToCumulativeDistributionFunction.sql b/ydb/library/yql/udfs/common/histogram/test/cases/ToCumulativeDistributionFunction.sql new file mode 100644 index 0000000000..e71db5c68f --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/ToCumulativeDistributionFunction.sql @@ -0,0 +1,13 @@ +/* syntax version 1 */ +SELECT + Histogram::ToCumulativeDistributionFunction(HISTOGRAM(key)) AS key_histogram, + Histogram::ToCumulativeDistributionFunction(HISTOGRAM(subkey)) AS subkey_histogram, + Histogram::ToCumulativeDistributionFunction(HISTOGRAM(value)) AS value_histogram, + Histogram::Normalize(Histogram::ToCumulativeDistributionFunction(HISTOGRAM(subkey)), 100, True) AS subkey_norm_cdf_histogram +FROM ( + SELECT + CAST(key AS Double) AS key, + CAST(subkey AS Double) AS subkey, + CAST(value AS Double) AS value + FROM Input +); diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Weights.in b/ydb/library/yql/udfs/common/histogram/test/cases/Weights.in new file mode 100644 index 0000000000..0f50051d06 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Weights.in @@ -0,0 +1,16 @@ +{"key"="0";"subkey"="1000";"value"="-1"}; +{"key"="1";"subkey"="1";"value"="1"}; +{"key"="2";"subkey"="2";"value"="2"}; +{"key"="3";"subkey"="4";"value"="8"}; +{"key"="4";"subkey"="8";"value"="32"}; +{"key"="5";"subkey"="16";"value"="128"}; +{"key"="6";"subkey"="32";"value"="512"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="2";"subkey"="2";"value"="2048"}; +{"key"="3";"subkey"="4";"value"="2048"}; +{"key"="2";"subkey"="2";"value"="2048"}; +{"key"="3";"subkey"="4";"value"="2048"}; diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/Weights.sql b/ydb/library/yql/udfs/common/histogram/test/cases/Weights.sql new file mode 100644 index 0000000000..77229008f6 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/Weights.sql @@ -0,0 +1,12 @@ +/* syntax version 1 */ +SELECT + HISTOGRAM(key, value / subkey) AS basic_weight, + HISTOGRAM(key, value, 3) AS weight_and_bins, + Histogram::Print(HISTOGRAM(key)) <> Histogram::Print(HISTOGRAM(key, value)) AS equality_check +FROM ( + SELECT + CAST(key AS Double) AS key, + COALESCE(CAST(subkey AS Double), 1.0) AS subkey, + COALESCE(CAST(value AS Double), 1.0) AS value + FROM Input +); diff --git a/ydb/library/yql/udfs/common/histogram/test/cases/default.in b/ydb/library/yql/udfs/common/histogram/test/cases/default.in new file mode 100644 index 0000000000..494ea1402e --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/cases/default.in @@ -0,0 +1,16 @@ +{"key"="0";"subkey"="0";"value"="-1"}; +{"key"="1";"subkey"="1";"value"="1"}; +{"key"="2";"subkey"="2";"value"="2"}; +{"key"="3";"subkey"="4";"value"="8"}; +{"key"="4";"subkey"="8";"value"="32"}; +{"key"="5";"subkey"="16";"value"="128"}; +{"key"="6";"subkey"="32";"value"="512"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="7";"subkey"="64";"value"="2048"}; +{"key"="2";"subkey"="2";"value"="2048"}; +{"key"="3";"subkey"="4";"value"="2048"}; +{"key"="2";"subkey"="2";"value"="2048"}; +{"key"="3";"subkey"="4";"value"="2048"}; diff --git a/ydb/library/yql/udfs/common/histogram/test/ya.make b/ydb/library/yql/udfs/common/histogram/test/ya.make new file mode 100644 index 0000000000..cc130454f9 --- /dev/null +++ b/ydb/library/yql/udfs/common/histogram/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +TIMEOUT(600) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +DEPENDS(ydb/library/yql/udfs/common/histogram) + +END() diff --git a/ydb/library/yql/udfs/common/histogram/ya.make b/ydb/library/yql/udfs/common/histogram/ya.make index 6e20f1eddf..f7efeed182 100644 --- a/ydb/library/yql/udfs/common/histogram/ya.make +++ b/ydb/library/yql/udfs/common/histogram/ya.make @@ -15,3 +15,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +)
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/hyperloglog/test/canondata/result.json b/ydb/library/yql/udfs/common/hyperloglog/test/canondata/result.json new file mode 100644 index 0000000000..fb6112fc5b --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperloglog/test/canondata/result.json @@ -0,0 +1,7 @@ +{ + "test.test[Basic]": [ + { + "uri": "file://test.test_Basic_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/hyperloglog/test/canondata/test.test_Basic_/results.txt b/ydb/library/yql/udfs/common/hyperloglog/test/canondata/test.test_Basic_/results.txt new file mode 100644 index 0000000000..8a7a259e2d --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperloglog/test/canondata/test.test_Basic_/results.txt @@ -0,0 +1,59 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "str"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "double"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "int"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "5972" + ]; + [ + "1200" + ]; + [ + "5988" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/hyperloglog/test/cases/Basic.in b/ydb/library/yql/udfs/common/hyperloglog/test/cases/Basic.in new file mode 100644 index 0000000000..d212651343 --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperloglog/test/cases/Basic.in @@ -0,0 +1,6000 @@ +{"key"="-1000";"subkey"="-200";"value"="-11512"}; +{"key"="-999";"subkey"="-200";"value"="-11501"}; +{"key"="-998";"subkey"="-200";"value"="-11489"}; +{"key"="-997";"subkey"="-200";"value"="-11478"}; +{"key"="-996";"subkey"="-200";"value"="-11466"}; +{"key"="-995";"subkey"="-199";"value"="-11455"}; +{"key"="-994";"subkey"="-199";"value"="-11443"}; +{"key"="-993";"subkey"="-199";"value"="-11432"}; +{"key"="-992";"subkey"="-199";"value"="-11420"}; +{"key"="-991";"subkey"="-199";"value"="-11409"}; +{"key"="-990";"subkey"="-198";"value"="-11397"}; +{"key"="-989";"subkey"="-198";"value"="-11386"}; +{"key"="-988";"subkey"="-198";"value"="-11374"}; +{"key"="-987";"subkey"="-198";"value"="-11363"}; +{"key"="-986";"subkey"="-198";"value"="-11351"}; +{"key"="-985";"subkey"="-197";"value"="-11340"}; +{"key"="-984";"subkey"="-197";"value"="-11328"}; +{"key"="-983";"subkey"="-197";"value"="-11317"}; +{"key"="-982";"subkey"="-197";"value"="-11305"}; +{"key"="-981";"subkey"="-197";"value"="-11294"}; +{"key"="-980";"subkey"="-196";"value"="-11282"}; +{"key"="-979";"subkey"="-196";"value"="-11271"}; +{"key"="-978";"subkey"="-196";"value"="-11259"}; +{"key"="-977";"subkey"="-196";"value"="-11248"}; +{"key"="-976";"subkey"="-196";"value"="-11236"}; +{"key"="-975";"subkey"="-195";"value"="-11225"}; +{"key"="-974";"subkey"="-195";"value"="-11213"}; +{"key"="-973";"subkey"="-195";"value"="-11202"}; +{"key"="-972";"subkey"="-195";"value"="-11190"}; +{"key"="-971";"subkey"="-195";"value"="-11179"}; +{"key"="-970";"subkey"="-194";"value"="-11167"}; +{"key"="-969";"subkey"="-194";"value"="-11156"}; +{"key"="-968";"subkey"="-194";"value"="-11144"}; +{"key"="-967";"subkey"="-194";"value"="-11132"}; +{"key"="-966";"subkey"="-194";"value"="-11121"}; +{"key"="-965";"subkey"="-193";"value"="-11109"}; +{"key"="-964";"subkey"="-193";"value"="-11098"}; +{"key"="-963";"subkey"="-193";"value"="-11086"}; +{"key"="-962";"subkey"="-193";"value"="-11075"}; +{"key"="-961";"subkey"="-193";"value"="-11063"}; +{"key"="-960";"subkey"="-192";"value"="-11052"}; +{"key"="-959";"subkey"="-192";"value"="-11040"}; +{"key"="-958";"subkey"="-192";"value"="-11029"}; +{"key"="-957";"subkey"="-192";"value"="-11017"}; +{"key"="-956";"subkey"="-192";"value"="-11006"}; +{"key"="-955";"subkey"="-191";"value"="-10994"}; +{"key"="-954";"subkey"="-191";"value"="-10983"}; +{"key"="-953";"subkey"="-191";"value"="-10971"}; +{"key"="-952";"subkey"="-191";"value"="-10960"}; +{"key"="-951";"subkey"="-191";"value"="-10948"}; +{"key"="-950";"subkey"="-190";"value"="-10937"}; +{"key"="-949";"subkey"="-190";"value"="-10925"}; +{"key"="-948";"subkey"="-190";"value"="-10914"}; +{"key"="-947";"subkey"="-190";"value"="-10902"}; +{"key"="-946";"subkey"="-190";"value"="-10891"}; +{"key"="-945";"subkey"="-189";"value"="-10879"}; +{"key"="-944";"subkey"="-189";"value"="-10868"}; +{"key"="-943";"subkey"="-189";"value"="-10856"}; +{"key"="-942";"subkey"="-189";"value"="-10845"}; +{"key"="-941";"subkey"="-189";"value"="-10833"}; +{"key"="-940";"subkey"="-188";"value"="-10822"}; +{"key"="-939";"subkey"="-188";"value"="-10810"}; +{"key"="-938";"subkey"="-188";"value"="-10799"}; +{"key"="-937";"subkey"="-188";"value"="-10787"}; +{"key"="-936";"subkey"="-188";"value"="-10776"}; +{"key"="-935";"subkey"="-187";"value"="-10764"}; +{"key"="-934";"subkey"="-187";"value"="-10753"}; +{"key"="-933";"subkey"="-187";"value"="-10741"}; +{"key"="-932";"subkey"="-187";"value"="-10730"}; +{"key"="-931";"subkey"="-187";"value"="-10718"}; +{"key"="-930";"subkey"="-186";"value"="-10707"}; +{"key"="-929";"subkey"="-186";"value"="-10695"}; +{"key"="-928";"subkey"="-186";"value"="-10683"}; +{"key"="-927";"subkey"="-186";"value"="-10672"}; +{"key"="-926";"subkey"="-186";"value"="-10660"}; +{"key"="-925";"subkey"="-185";"value"="-10649"}; +{"key"="-924";"subkey"="-185";"value"="-10637"}; +{"key"="-923";"subkey"="-185";"value"="-10626"}; +{"key"="-922";"subkey"="-185";"value"="-10614"}; +{"key"="-921";"subkey"="-185";"value"="-10603"}; +{"key"="-920";"subkey"="-184";"value"="-10591"}; +{"key"="-919";"subkey"="-184";"value"="-10580"}; +{"key"="-918";"subkey"="-184";"value"="-10568"}; +{"key"="-917";"subkey"="-184";"value"="-10557"}; +{"key"="-916";"subkey"="-184";"value"="-10545"}; +{"key"="-915";"subkey"="-183";"value"="-10534"}; +{"key"="-914";"subkey"="-183";"value"="-10522"}; +{"key"="-913";"subkey"="-183";"value"="-10511"}; +{"key"="-912";"subkey"="-183";"value"="-10499"}; +{"key"="-911";"subkey"="-183";"value"="-10488"}; +{"key"="-910";"subkey"="-182";"value"="-10476"}; +{"key"="-909";"subkey"="-182";"value"="-10465"}; +{"key"="-908";"subkey"="-182";"value"="-10453"}; +{"key"="-907";"subkey"="-182";"value"="-10442"}; +{"key"="-906";"subkey"="-182";"value"="-10430"}; +{"key"="-905";"subkey"="-181";"value"="-10419"}; +{"key"="-904";"subkey"="-181";"value"="-10407"}; +{"key"="-903";"subkey"="-181";"value"="-10396"}; +{"key"="-902";"subkey"="-181";"value"="-10384"}; +{"key"="-901";"subkey"="-181";"value"="-10373"}; +{"key"="-900";"subkey"="-180";"value"="-10361"}; +{"key"="-899";"subkey"="-180";"value"="-10350"}; +{"key"="-898";"subkey"="-180";"value"="-10338"}; +{"key"="-897";"subkey"="-180";"value"="-10327"}; +{"key"="-896";"subkey"="-180";"value"="-10315"}; +{"key"="-895";"subkey"="-179";"value"="-10304"}; +{"key"="-894";"subkey"="-179";"value"="-10292"}; +{"key"="-893";"subkey"="-179";"value"="-10281"}; +{"key"="-892";"subkey"="-179";"value"="-10269"}; +{"key"="-891";"subkey"="-179";"value"="-10258"}; +{"key"="-890";"subkey"="-178";"value"="-10246"}; +{"key"="-889";"subkey"="-178";"value"="-10234"}; +{"key"="-888";"subkey"="-178";"value"="-10223"}; +{"key"="-887";"subkey"="-178";"value"="-10211"}; +{"key"="-886";"subkey"="-178";"value"="-10200"}; +{"key"="-885";"subkey"="-177";"value"="-10188"}; +{"key"="-884";"subkey"="-177";"value"="-10177"}; +{"key"="-883";"subkey"="-177";"value"="-10165"}; +{"key"="-882";"subkey"="-177";"value"="-10154"}; +{"key"="-881";"subkey"="-177";"value"="-10142"}; +{"key"="-880";"subkey"="-176";"value"="-10131"}; +{"key"="-879";"subkey"="-176";"value"="-10119"}; +{"key"="-878";"subkey"="-176";"value"="-10108"}; +{"key"="-877";"subkey"="-176";"value"="-10096"}; +{"key"="-876";"subkey"="-176";"value"="-10085"}; +{"key"="-875";"subkey"="-175";"value"="-10073"}; +{"key"="-874";"subkey"="-175";"value"="-10062"}; +{"key"="-873";"subkey"="-175";"value"="-10050"}; +{"key"="-872";"subkey"="-175";"value"="-10039"}; +{"key"="-871";"subkey"="-175";"value"="-10027"}; +{"key"="-870";"subkey"="-174";"value"="-10016"}; +{"key"="-869";"subkey"="-174";"value"="-10004"}; +{"key"="-868";"subkey"="-174";"value"="-9993"}; +{"key"="-867";"subkey"="-174";"value"="-9981"}; +{"key"="-866";"subkey"="-174";"value"="-9970"}; +{"key"="-865";"subkey"="-173";"value"="-9958"}; +{"key"="-864";"subkey"="-173";"value"="-9947"}; +{"key"="-863";"subkey"="-173";"value"="-9935"}; +{"key"="-862";"subkey"="-173";"value"="-9924"}; +{"key"="-861";"subkey"="-173";"value"="-9912"}; +{"key"="-860";"subkey"="-172";"value"="-9901"}; +{"key"="-859";"subkey"="-172";"value"="-9889"}; +{"key"="-858";"subkey"="-172";"value"="-9878"}; +{"key"="-857";"subkey"="-172";"value"="-9866"}; +{"key"="-856";"subkey"="-172";"value"="-9855"}; +{"key"="-855";"subkey"="-171";"value"="-9843"}; +{"key"="-854";"subkey"="-171";"value"="-9832"}; +{"key"="-853";"subkey"="-171";"value"="-9820"}; +{"key"="-852";"subkey"="-171";"value"="-9809"}; +{"key"="-851";"subkey"="-171";"value"="-9797"}; +{"key"="-850";"subkey"="-170";"value"="-9785"}; +{"key"="-849";"subkey"="-170";"value"="-9774"}; +{"key"="-848";"subkey"="-170";"value"="-9762"}; +{"key"="-847";"subkey"="-170";"value"="-9751"}; +{"key"="-846";"subkey"="-170";"value"="-9739"}; +{"key"="-845";"subkey"="-169";"value"="-9728"}; +{"key"="-844";"subkey"="-169";"value"="-9716"}; +{"key"="-843";"subkey"="-169";"value"="-9705"}; +{"key"="-842";"subkey"="-169";"value"="-9693"}; +{"key"="-841";"subkey"="-169";"value"="-9682"}; +{"key"="-840";"subkey"="-168";"value"="-9670"}; +{"key"="-839";"subkey"="-168";"value"="-9659"}; +{"key"="-838";"subkey"="-168";"value"="-9647"}; +{"key"="-837";"subkey"="-168";"value"="-9636"}; +{"key"="-836";"subkey"="-168";"value"="-9624"}; +{"key"="-835";"subkey"="-167";"value"="-9613"}; +{"key"="-834";"subkey"="-167";"value"="-9601"}; +{"key"="-833";"subkey"="-167";"value"="-9590"}; +{"key"="-832";"subkey"="-167";"value"="-9578"}; +{"key"="-831";"subkey"="-167";"value"="-9567"}; +{"key"="-830";"subkey"="-166";"value"="-9555"}; +{"key"="-829";"subkey"="-166";"value"="-9544"}; +{"key"="-828";"subkey"="-166";"value"="-9532"}; +{"key"="-827";"subkey"="-166";"value"="-9521"}; +{"key"="-826";"subkey"="-166";"value"="-9509"}; +{"key"="-825";"subkey"="-165";"value"="-9498"}; +{"key"="-824";"subkey"="-165";"value"="-9486"}; +{"key"="-823";"subkey"="-165";"value"="-9475"}; +{"key"="-822";"subkey"="-165";"value"="-9463"}; +{"key"="-821";"subkey"="-165";"value"="-9452"}; +{"key"="-820";"subkey"="-164";"value"="-9440"}; +{"key"="-819";"subkey"="-164";"value"="-9429"}; +{"key"="-818";"subkey"="-164";"value"="-9417"}; +{"key"="-817";"subkey"="-164";"value"="-9406"}; +{"key"="-816";"subkey"="-164";"value"="-9394"}; +{"key"="-815";"subkey"="-163";"value"="-9383"}; +{"key"="-814";"subkey"="-163";"value"="-9371"}; +{"key"="-813";"subkey"="-163";"value"="-9360"}; +{"key"="-812";"subkey"="-163";"value"="-9348"}; +{"key"="-811";"subkey"="-163";"value"="-9336"}; +{"key"="-810";"subkey"="-162";"value"="-9325"}; +{"key"="-809";"subkey"="-162";"value"="-9313"}; +{"key"="-808";"subkey"="-162";"value"="-9302"}; +{"key"="-807";"subkey"="-162";"value"="-9290"}; +{"key"="-806";"subkey"="-162";"value"="-9279"}; +{"key"="-805";"subkey"="-161";"value"="-9267"}; +{"key"="-804";"subkey"="-161";"value"="-9256"}; +{"key"="-803";"subkey"="-161";"value"="-9244"}; +{"key"="-802";"subkey"="-161";"value"="-9233"}; +{"key"="-801";"subkey"="-161";"value"="-9221"}; +{"key"="-800";"subkey"="-160";"value"="-9210"}; +{"key"="-799";"subkey"="-160";"value"="-9198"}; +{"key"="-798";"subkey"="-160";"value"="-9187"}; +{"key"="-797";"subkey"="-160";"value"="-9175"}; +{"key"="-796";"subkey"="-160";"value"="-9164"}; +{"key"="-795";"subkey"="-159";"value"="-9152"}; +{"key"="-794";"subkey"="-159";"value"="-9141"}; +{"key"="-793";"subkey"="-159";"value"="-9129"}; +{"key"="-792";"subkey"="-159";"value"="-9118"}; +{"key"="-791";"subkey"="-159";"value"="-9106"}; +{"key"="-790";"subkey"="-158";"value"="-9095"}; +{"key"="-789";"subkey"="-158";"value"="-9083"}; +{"key"="-788";"subkey"="-158";"value"="-9072"}; +{"key"="-787";"subkey"="-158";"value"="-9060"}; +{"key"="-786";"subkey"="-158";"value"="-9049"}; +{"key"="-785";"subkey"="-157";"value"="-9037"}; +{"key"="-784";"subkey"="-157";"value"="-9026"}; +{"key"="-783";"subkey"="-157";"value"="-9014"}; +{"key"="-782";"subkey"="-157";"value"="-9003"}; +{"key"="-781";"subkey"="-157";"value"="-8991"}; +{"key"="-780";"subkey"="-156";"value"="-8980"}; +{"key"="-779";"subkey"="-156";"value"="-8968"}; +{"key"="-778";"subkey"="-156";"value"="-8957"}; +{"key"="-777";"subkey"="-156";"value"="-8945"}; +{"key"="-776";"subkey"="-156";"value"="-8934"}; +{"key"="-775";"subkey"="-155";"value"="-8922"}; +{"key"="-774";"subkey"="-155";"value"="-8911"}; +{"key"="-773";"subkey"="-155";"value"="-8899"}; +{"key"="-772";"subkey"="-155";"value"="-8887"}; +{"key"="-771";"subkey"="-155";"value"="-8876"}; +{"key"="-770";"subkey"="-154";"value"="-8864"}; +{"key"="-769";"subkey"="-154";"value"="-8853"}; +{"key"="-768";"subkey"="-154";"value"="-8841"}; +{"key"="-767";"subkey"="-154";"value"="-8830"}; +{"key"="-766";"subkey"="-154";"value"="-8818"}; +{"key"="-765";"subkey"="-153";"value"="-8807"}; +{"key"="-764";"subkey"="-153";"value"="-8795"}; +{"key"="-763";"subkey"="-153";"value"="-8784"}; +{"key"="-762";"subkey"="-153";"value"="-8772"}; +{"key"="-761";"subkey"="-153";"value"="-8761"}; +{"key"="-760";"subkey"="-152";"value"="-8749"}; +{"key"="-759";"subkey"="-152";"value"="-8738"}; +{"key"="-758";"subkey"="-152";"value"="-8726"}; +{"key"="-757";"subkey"="-152";"value"="-8715"}; +{"key"="-756";"subkey"="-152";"value"="-8703"}; +{"key"="-755";"subkey"="-151";"value"="-8692"}; +{"key"="-754";"subkey"="-151";"value"="-8680"}; +{"key"="-753";"subkey"="-151";"value"="-8669"}; +{"key"="-752";"subkey"="-151";"value"="-8657"}; +{"key"="-751";"subkey"="-151";"value"="-8646"}; +{"key"="-750";"subkey"="-150";"value"="-8634"}; +{"key"="-749";"subkey"="-150";"value"="-8623"}; +{"key"="-748";"subkey"="-150";"value"="-8611"}; +{"key"="-747";"subkey"="-150";"value"="-8600"}; +{"key"="-746";"subkey"="-150";"value"="-8588"}; +{"key"="-745";"subkey"="-149";"value"="-8577"}; +{"key"="-744";"subkey"="-149";"value"="-8565"}; +{"key"="-743";"subkey"="-149";"value"="-8554"}; +{"key"="-742";"subkey"="-149";"value"="-8542"}; +{"key"="-741";"subkey"="-149";"value"="-8531"}; +{"key"="-740";"subkey"="-148";"value"="-8519"}; +{"key"="-739";"subkey"="-148";"value"="-8508"}; +{"key"="-738";"subkey"="-148";"value"="-8496"}; +{"key"="-737";"subkey"="-148";"value"="-8485"}; +{"key"="-736";"subkey"="-148";"value"="-8473"}; +{"key"="-735";"subkey"="-147";"value"="-8462"}; +{"key"="-734";"subkey"="-147";"value"="-8450"}; +{"key"="-733";"subkey"="-147";"value"="-8438"}; +{"key"="-732";"subkey"="-147";"value"="-8427"}; +{"key"="-731";"subkey"="-147";"value"="-8415"}; +{"key"="-730";"subkey"="-146";"value"="-8404"}; +{"key"="-729";"subkey"="-146";"value"="-8392"}; +{"key"="-728";"subkey"="-146";"value"="-8381"}; +{"key"="-727";"subkey"="-146";"value"="-8369"}; +{"key"="-726";"subkey"="-146";"value"="-8358"}; +{"key"="-725";"subkey"="-145";"value"="-8346"}; +{"key"="-724";"subkey"="-145";"value"="-8335"}; +{"key"="-723";"subkey"="-145";"value"="-8323"}; +{"key"="-722";"subkey"="-145";"value"="-8312"}; +{"key"="-721";"subkey"="-145";"value"="-8300"}; +{"key"="-720";"subkey"="-144";"value"="-8289"}; +{"key"="-719";"subkey"="-144";"value"="-8277"}; +{"key"="-718";"subkey"="-144";"value"="-8266"}; +{"key"="-717";"subkey"="-144";"value"="-8254"}; +{"key"="-716";"subkey"="-144";"value"="-8243"}; +{"key"="-715";"subkey"="-143";"value"="-8231"}; +{"key"="-714";"subkey"="-143";"value"="-8220"}; +{"key"="-713";"subkey"="-143";"value"="-8208"}; +{"key"="-712";"subkey"="-143";"value"="-8197"}; +{"key"="-711";"subkey"="-143";"value"="-8185"}; +{"key"="-710";"subkey"="-142";"value"="-8174"}; +{"key"="-709";"subkey"="-142";"value"="-8162"}; +{"key"="-708";"subkey"="-142";"value"="-8151"}; +{"key"="-707";"subkey"="-142";"value"="-8139"}; +{"key"="-706";"subkey"="-142";"value"="-8128"}; +{"key"="-705";"subkey"="-141";"value"="-8116"}; +{"key"="-704";"subkey"="-141";"value"="-8105"}; +{"key"="-703";"subkey"="-141";"value"="-8093"}; +{"key"="-702";"subkey"="-141";"value"="-8082"}; +{"key"="-701";"subkey"="-141";"value"="-8070"}; +{"key"="-700";"subkey"="-140";"value"="-8059"}; +{"key"="-699";"subkey"="-140";"value"="-8047"}; +{"key"="-698";"subkey"="-140";"value"="-8036"}; +{"key"="-697";"subkey"="-140";"value"="-8024"}; +{"key"="-696";"subkey"="-140";"value"="-8012"}; +{"key"="-695";"subkey"="-139";"value"="-8001"}; +{"key"="-694";"subkey"="-139";"value"="-7989"}; +{"key"="-693";"subkey"="-139";"value"="-7978"}; +{"key"="-692";"subkey"="-139";"value"="-7966"}; +{"key"="-691";"subkey"="-139";"value"="-7955"}; +{"key"="-690";"subkey"="-138";"value"="-7943"}; +{"key"="-689";"subkey"="-138";"value"="-7932"}; +{"key"="-688";"subkey"="-138";"value"="-7920"}; +{"key"="-687";"subkey"="-138";"value"="-7909"}; +{"key"="-686";"subkey"="-138";"value"="-7897"}; +{"key"="-685";"subkey"="-137";"value"="-7886"}; +{"key"="-684";"subkey"="-137";"value"="-7874"}; +{"key"="-683";"subkey"="-137";"value"="-7863"}; +{"key"="-682";"subkey"="-137";"value"="-7851"}; +{"key"="-681";"subkey"="-137";"value"="-7840"}; +{"key"="-680";"subkey"="-136";"value"="-7828"}; +{"key"="-679";"subkey"="-136";"value"="-7817"}; +{"key"="-678";"subkey"="-136";"value"="-7805"}; +{"key"="-677";"subkey"="-136";"value"="-7794"}; +{"key"="-676";"subkey"="-136";"value"="-7782"}; +{"key"="-675";"subkey"="-135";"value"="-7771"}; +{"key"="-674";"subkey"="-135";"value"="-7759"}; +{"key"="-673";"subkey"="-135";"value"="-7748"}; +{"key"="-672";"subkey"="-135";"value"="-7736"}; +{"key"="-671";"subkey"="-135";"value"="-7725"}; +{"key"="-670";"subkey"="-134";"value"="-7713"}; +{"key"="-669";"subkey"="-134";"value"="-7702"}; +{"key"="-668";"subkey"="-134";"value"="-7690"}; +{"key"="-667";"subkey"="-134";"value"="-7679"}; +{"key"="-666";"subkey"="-134";"value"="-7667"}; +{"key"="-665";"subkey"="-133";"value"="-7656"}; +{"key"="-664";"subkey"="-133";"value"="-7644"}; +{"key"="-663";"subkey"="-133";"value"="-7633"}; +{"key"="-662";"subkey"="-133";"value"="-7621"}; +{"key"="-661";"subkey"="-133";"value"="-7610"}; +{"key"="-660";"subkey"="-132";"value"="-7598"}; +{"key"="-659";"subkey"="-132";"value"="-7587"}; +{"key"="-658";"subkey"="-132";"value"="-7575"}; +{"key"="-657";"subkey"="-132";"value"="-7563"}; +{"key"="-656";"subkey"="-132";"value"="-7552"}; +{"key"="-655";"subkey"="-131";"value"="-7540"}; +{"key"="-654";"subkey"="-131";"value"="-7529"}; +{"key"="-653";"subkey"="-131";"value"="-7517"}; +{"key"="-652";"subkey"="-131";"value"="-7506"}; +{"key"="-651";"subkey"="-131";"value"="-7494"}; +{"key"="-650";"subkey"="-130";"value"="-7483"}; +{"key"="-649";"subkey"="-130";"value"="-7471"}; +{"key"="-648";"subkey"="-130";"value"="-7460"}; +{"key"="-647";"subkey"="-130";"value"="-7448"}; +{"key"="-646";"subkey"="-130";"value"="-7437"}; +{"key"="-645";"subkey"="-129";"value"="-7425"}; +{"key"="-644";"subkey"="-129";"value"="-7414"}; +{"key"="-643";"subkey"="-129";"value"="-7402"}; +{"key"="-642";"subkey"="-129";"value"="-7391"}; +{"key"="-641";"subkey"="-129";"value"="-7379"}; +{"key"="-640";"subkey"="-128";"value"="-7368"}; +{"key"="-639";"subkey"="-128";"value"="-7356"}; +{"key"="-638";"subkey"="-128";"value"="-7345"}; +{"key"="-637";"subkey"="-128";"value"="-7333"}; +{"key"="-636";"subkey"="-128";"value"="-7322"}; +{"key"="-635";"subkey"="-127";"value"="-7310"}; +{"key"="-634";"subkey"="-127";"value"="-7299"}; +{"key"="-633";"subkey"="-127";"value"="-7287"}; +{"key"="-632";"subkey"="-127";"value"="-7276"}; +{"key"="-631";"subkey"="-127";"value"="-7264"}; +{"key"="-630";"subkey"="-126";"value"="-7253"}; +{"key"="-629";"subkey"="-126";"value"="-7241"}; +{"key"="-628";"subkey"="-126";"value"="-7230"}; +{"key"="-627";"subkey"="-126";"value"="-7218"}; +{"key"="-626";"subkey"="-126";"value"="-7207"}; +{"key"="-625";"subkey"="-125";"value"="-7195"}; +{"key"="-624";"subkey"="-125";"value"="-7184"}; +{"key"="-623";"subkey"="-125";"value"="-7172"}; +{"key"="-622";"subkey"="-125";"value"="-7161"}; +{"key"="-621";"subkey"="-125";"value"="-7149"}; +{"key"="-620";"subkey"="-124";"value"="-7138"}; +{"key"="-619";"subkey"="-124";"value"="-7126"}; +{"key"="-618";"subkey"="-124";"value"="-7114"}; +{"key"="-617";"subkey"="-124";"value"="-7103"}; +{"key"="-616";"subkey"="-124";"value"="-7091"}; +{"key"="-615";"subkey"="-123";"value"="-7080"}; +{"key"="-614";"subkey"="-123";"value"="-7068"}; +{"key"="-613";"subkey"="-123";"value"="-7057"}; +{"key"="-612";"subkey"="-123";"value"="-7045"}; +{"key"="-611";"subkey"="-123";"value"="-7034"}; +{"key"="-610";"subkey"="-122";"value"="-7022"}; +{"key"="-609";"subkey"="-122";"value"="-7011"}; +{"key"="-608";"subkey"="-122";"value"="-6999"}; +{"key"="-607";"subkey"="-122";"value"="-6988"}; +{"key"="-606";"subkey"="-122";"value"="-6976"}; +{"key"="-605";"subkey"="-121";"value"="-6965"}; +{"key"="-604";"subkey"="-121";"value"="-6953"}; +{"key"="-603";"subkey"="-121";"value"="-6942"}; +{"key"="-602";"subkey"="-121";"value"="-6930"}; +{"key"="-601";"subkey"="-121";"value"="-6919"}; +{"key"="-600";"subkey"="-120";"value"="-6907"}; +{"key"="-599";"subkey"="-120";"value"="-6896"}; +{"key"="-598";"subkey"="-120";"value"="-6884"}; +{"key"="-597";"subkey"="-120";"value"="-6873"}; +{"key"="-596";"subkey"="-120";"value"="-6861"}; +{"key"="-595";"subkey"="-119";"value"="-6850"}; +{"key"="-594";"subkey"="-119";"value"="-6838"}; +{"key"="-593";"subkey"="-119";"value"="-6827"}; +{"key"="-592";"subkey"="-119";"value"="-6815"}; +{"key"="-591";"subkey"="-119";"value"="-6804"}; +{"key"="-590";"subkey"="-118";"value"="-6792"}; +{"key"="-589";"subkey"="-118";"value"="-6781"}; +{"key"="-588";"subkey"="-118";"value"="-6769"}; +{"key"="-587";"subkey"="-118";"value"="-6758"}; +{"key"="-586";"subkey"="-118";"value"="-6746"}; +{"key"="-585";"subkey"="-117";"value"="-6735"}; +{"key"="-584";"subkey"="-117";"value"="-6723"}; +{"key"="-583";"subkey"="-117";"value"="-6712"}; +{"key"="-582";"subkey"="-117";"value"="-6700"}; +{"key"="-581";"subkey"="-117";"value"="-6689"}; +{"key"="-580";"subkey"="-116";"value"="-6677"}; +{"key"="-579";"subkey"="-116";"value"="-6665"}; +{"key"="-578";"subkey"="-116";"value"="-6654"}; +{"key"="-577";"subkey"="-116";"value"="-6642"}; +{"key"="-576";"subkey"="-116";"value"="-6631"}; +{"key"="-575";"subkey"="-115";"value"="-6619"}; +{"key"="-574";"subkey"="-115";"value"="-6608"}; +{"key"="-573";"subkey"="-115";"value"="-6596"}; +{"key"="-572";"subkey"="-115";"value"="-6585"}; +{"key"="-571";"subkey"="-115";"value"="-6573"}; +{"key"="-570";"subkey"="-114";"value"="-6562"}; +{"key"="-569";"subkey"="-114";"value"="-6550"}; +{"key"="-568";"subkey"="-114";"value"="-6539"}; +{"key"="-567";"subkey"="-114";"value"="-6527"}; +{"key"="-566";"subkey"="-114";"value"="-6516"}; +{"key"="-565";"subkey"="-113";"value"="-6504"}; +{"key"="-564";"subkey"="-113";"value"="-6493"}; +{"key"="-563";"subkey"="-113";"value"="-6481"}; +{"key"="-562";"subkey"="-113";"value"="-6470"}; +{"key"="-561";"subkey"="-113";"value"="-6458"}; +{"key"="-560";"subkey"="-112";"value"="-6447"}; +{"key"="-559";"subkey"="-112";"value"="-6435"}; +{"key"="-558";"subkey"="-112";"value"="-6424"}; +{"key"="-557";"subkey"="-112";"value"="-6412"}; +{"key"="-556";"subkey"="-112";"value"="-6401"}; +{"key"="-555";"subkey"="-111";"value"="-6389"}; +{"key"="-554";"subkey"="-111";"value"="-6378"}; +{"key"="-553";"subkey"="-111";"value"="-6366"}; +{"key"="-552";"subkey"="-111";"value"="-6355"}; +{"key"="-551";"subkey"="-111";"value"="-6343"}; +{"key"="-550";"subkey"="-110";"value"="-6332"}; +{"key"="-549";"subkey"="-110";"value"="-6320"}; +{"key"="-548";"subkey"="-110";"value"="-6309"}; +{"key"="-547";"subkey"="-110";"value"="-6297"}; +{"key"="-546";"subkey"="-110";"value"="-6286"}; +{"key"="-545";"subkey"="-109";"value"="-6274"}; +{"key"="-544";"subkey"="-109";"value"="-6263"}; +{"key"="-543";"subkey"="-109";"value"="-6251"}; +{"key"="-542";"subkey"="-109";"value"="-6240"}; +{"key"="-541";"subkey"="-109";"value"="-6228"}; +{"key"="-540";"subkey"="-108";"value"="-6216"}; +{"key"="-539";"subkey"="-108";"value"="-6205"}; +{"key"="-538";"subkey"="-108";"value"="-6193"}; +{"key"="-537";"subkey"="-108";"value"="-6182"}; +{"key"="-536";"subkey"="-108";"value"="-6170"}; +{"key"="-535";"subkey"="-107";"value"="-6159"}; +{"key"="-534";"subkey"="-107";"value"="-6147"}; +{"key"="-533";"subkey"="-107";"value"="-6136"}; +{"key"="-532";"subkey"="-107";"value"="-6124"}; +{"key"="-531";"subkey"="-107";"value"="-6113"}; +{"key"="-530";"subkey"="-106";"value"="-6101"}; +{"key"="-529";"subkey"="-106";"value"="-6090"}; +{"key"="-528";"subkey"="-106";"value"="-6078"}; +{"key"="-527";"subkey"="-106";"value"="-6067"}; +{"key"="-526";"subkey"="-106";"value"="-6055"}; +{"key"="-525";"subkey"="-105";"value"="-6044"}; +{"key"="-524";"subkey"="-105";"value"="-6032"}; +{"key"="-523";"subkey"="-105";"value"="-6021"}; +{"key"="-522";"subkey"="-105";"value"="-6009"}; +{"key"="-521";"subkey"="-105";"value"="-5998"}; +{"key"="-520";"subkey"="-104";"value"="-5986"}; +{"key"="-519";"subkey"="-104";"value"="-5975"}; +{"key"="-518";"subkey"="-104";"value"="-5963"}; +{"key"="-517";"subkey"="-104";"value"="-5952"}; +{"key"="-516";"subkey"="-104";"value"="-5940"}; +{"key"="-515";"subkey"="-103";"value"="-5929"}; +{"key"="-514";"subkey"="-103";"value"="-5917"}; +{"key"="-513";"subkey"="-103";"value"="-5906"}; +{"key"="-512";"subkey"="-103";"value"="-5894"}; +{"key"="-511";"subkey"="-103";"value"="-5883"}; +{"key"="-510";"subkey"="-102";"value"="-5871"}; +{"key"="-509";"subkey"="-102";"value"="-5860"}; +{"key"="-508";"subkey"="-102";"value"="-5848"}; +{"key"="-507";"subkey"="-102";"value"="-5837"}; +{"key"="-506";"subkey"="-102";"value"="-5825"}; +{"key"="-505";"subkey"="-101";"value"="-5814"}; +{"key"="-504";"subkey"="-101";"value"="-5802"}; +{"key"="-503";"subkey"="-101";"value"="-5791"}; +{"key"="-502";"subkey"="-101";"value"="-5779"}; +{"key"="-501";"subkey"="-101";"value"="-5767"}; +{"key"="-500";"subkey"="-100";"value"="-5756"}; +{"key"="-499";"subkey"="-100";"value"="-5744"}; +{"key"="-498";"subkey"="-100";"value"="-5733"}; +{"key"="-497";"subkey"="-100";"value"="-5721"}; +{"key"="-496";"subkey"="-100";"value"="-5710"}; +{"key"="-495";"subkey"="-99";"value"="-5698"}; +{"key"="-494";"subkey"="-99";"value"="-5687"}; +{"key"="-493";"subkey"="-99";"value"="-5675"}; +{"key"="-492";"subkey"="-99";"value"="-5664"}; +{"key"="-491";"subkey"="-99";"value"="-5652"}; +{"key"="-490";"subkey"="-98";"value"="-5641"}; +{"key"="-489";"subkey"="-98";"value"="-5629"}; +{"key"="-488";"subkey"="-98";"value"="-5618"}; +{"key"="-487";"subkey"="-98";"value"="-5606"}; +{"key"="-486";"subkey"="-98";"value"="-5595"}; +{"key"="-485";"subkey"="-97";"value"="-5583"}; +{"key"="-484";"subkey"="-97";"value"="-5572"}; +{"key"="-483";"subkey"="-97";"value"="-5560"}; +{"key"="-482";"subkey"="-97";"value"="-5549"}; +{"key"="-481";"subkey"="-97";"value"="-5537"}; +{"key"="-480";"subkey"="-96";"value"="-5526"}; +{"key"="-479";"subkey"="-96";"value"="-5514"}; +{"key"="-478";"subkey"="-96";"value"="-5503"}; +{"key"="-477";"subkey"="-96";"value"="-5491"}; +{"key"="-476";"subkey"="-96";"value"="-5480"}; +{"key"="-475";"subkey"="-95";"value"="-5468"}; +{"key"="-474";"subkey"="-95";"value"="-5457"}; +{"key"="-473";"subkey"="-95";"value"="-5445"}; +{"key"="-472";"subkey"="-95";"value"="-5434"}; +{"key"="-471";"subkey"="-95";"value"="-5422"}; +{"key"="-470";"subkey"="-94";"value"="-5411"}; +{"key"="-469";"subkey"="-94";"value"="-5399"}; +{"key"="-468";"subkey"="-94";"value"="-5388"}; +{"key"="-467";"subkey"="-94";"value"="-5376"}; +{"key"="-466";"subkey"="-94";"value"="-5365"}; +{"key"="-465";"subkey"="-93";"value"="-5353"}; +{"key"="-464";"subkey"="-93";"value"="-5341"}; +{"key"="-463";"subkey"="-93";"value"="-5330"}; +{"key"="-462";"subkey"="-93";"value"="-5318"}; +{"key"="-461";"subkey"="-93";"value"="-5307"}; +{"key"="-460";"subkey"="-92";"value"="-5295"}; +{"key"="-459";"subkey"="-92";"value"="-5284"}; +{"key"="-458";"subkey"="-92";"value"="-5272"}; +{"key"="-457";"subkey"="-92";"value"="-5261"}; +{"key"="-456";"subkey"="-92";"value"="-5249"}; +{"key"="-455";"subkey"="-91";"value"="-5238"}; +{"key"="-454";"subkey"="-91";"value"="-5226"}; +{"key"="-453";"subkey"="-91";"value"="-5215"}; +{"key"="-452";"subkey"="-91";"value"="-5203"}; +{"key"="-451";"subkey"="-91";"value"="-5192"}; +{"key"="-450";"subkey"="-90";"value"="-5180"}; +{"key"="-449";"subkey"="-90";"value"="-5169"}; +{"key"="-448";"subkey"="-90";"value"="-5157"}; +{"key"="-447";"subkey"="-90";"value"="-5146"}; +{"key"="-446";"subkey"="-90";"value"="-5134"}; +{"key"="-445";"subkey"="-89";"value"="-5123"}; +{"key"="-444";"subkey"="-89";"value"="-5111"}; +{"key"="-443";"subkey"="-89";"value"="-5100"}; +{"key"="-442";"subkey"="-89";"value"="-5088"}; +{"key"="-441";"subkey"="-89";"value"="-5077"}; +{"key"="-440";"subkey"="-88";"value"="-5065"}; +{"key"="-439";"subkey"="-88";"value"="-5054"}; +{"key"="-438";"subkey"="-88";"value"="-5042"}; +{"key"="-437";"subkey"="-88";"value"="-5031"}; +{"key"="-436";"subkey"="-88";"value"="-5019"}; +{"key"="-435";"subkey"="-87";"value"="-5008"}; +{"key"="-434";"subkey"="-87";"value"="-4996"}; +{"key"="-433";"subkey"="-87";"value"="-4985"}; +{"key"="-432";"subkey"="-87";"value"="-4973"}; +{"key"="-431";"subkey"="-87";"value"="-4962"}; +{"key"="-430";"subkey"="-86";"value"="-4950"}; +{"key"="-429";"subkey"="-86";"value"="-4939"}; +{"key"="-428";"subkey"="-86";"value"="-4927"}; +{"key"="-427";"subkey"="-86";"value"="-4916"}; +{"key"="-426";"subkey"="-86";"value"="-4904"}; +{"key"="-425";"subkey"="-85";"value"="-4892"}; +{"key"="-424";"subkey"="-85";"value"="-4881"}; +{"key"="-423";"subkey"="-85";"value"="-4869"}; +{"key"="-422";"subkey"="-85";"value"="-4858"}; +{"key"="-421";"subkey"="-85";"value"="-4846"}; +{"key"="-420";"subkey"="-84";"value"="-4835"}; +{"key"="-419";"subkey"="-84";"value"="-4823"}; +{"key"="-418";"subkey"="-84";"value"="-4812"}; +{"key"="-417";"subkey"="-84";"value"="-4800"}; +{"key"="-416";"subkey"="-84";"value"="-4789"}; +{"key"="-415";"subkey"="-83";"value"="-4777"}; +{"key"="-414";"subkey"="-83";"value"="-4766"}; +{"key"="-413";"subkey"="-83";"value"="-4754"}; +{"key"="-412";"subkey"="-83";"value"="-4743"}; +{"key"="-411";"subkey"="-83";"value"="-4731"}; +{"key"="-410";"subkey"="-82";"value"="-4720"}; +{"key"="-409";"subkey"="-82";"value"="-4708"}; +{"key"="-408";"subkey"="-82";"value"="-4697"}; +{"key"="-407";"subkey"="-82";"value"="-4685"}; +{"key"="-406";"subkey"="-82";"value"="-4674"}; +{"key"="-405";"subkey"="-81";"value"="-4662"}; +{"key"="-404";"subkey"="-81";"value"="-4651"}; +{"key"="-403";"subkey"="-81";"value"="-4639"}; +{"key"="-402";"subkey"="-81";"value"="-4628"}; +{"key"="-401";"subkey"="-81";"value"="-4616"}; +{"key"="-400";"subkey"="-80";"value"="-4605"}; +{"key"="-399";"subkey"="-80";"value"="-4593"}; +{"key"="-398";"subkey"="-80";"value"="-4582"}; +{"key"="-397";"subkey"="-80";"value"="-4570"}; +{"key"="-396";"subkey"="-80";"value"="-4559"}; +{"key"="-395";"subkey"="-79";"value"="-4547"}; +{"key"="-394";"subkey"="-79";"value"="-4536"}; +{"key"="-393";"subkey"="-79";"value"="-4524"}; +{"key"="-392";"subkey"="-79";"value"="-4513"}; +{"key"="-391";"subkey"="-79";"value"="-4501"}; +{"key"="-390";"subkey"="-78";"value"="-4490"}; +{"key"="-389";"subkey"="-78";"value"="-4478"}; +{"key"="-388";"subkey"="-78";"value"="-4467"}; +{"key"="-387";"subkey"="-78";"value"="-4455"}; +{"key"="-386";"subkey"="-78";"value"="-4443"}; +{"key"="-385";"subkey"="-77";"value"="-4432"}; +{"key"="-384";"subkey"="-77";"value"="-4420"}; +{"key"="-383";"subkey"="-77";"value"="-4409"}; +{"key"="-382";"subkey"="-77";"value"="-4397"}; +{"key"="-381";"subkey"="-77";"value"="-4386"}; +{"key"="-380";"subkey"="-76";"value"="-4374"}; +{"key"="-379";"subkey"="-76";"value"="-4363"}; +{"key"="-378";"subkey"="-76";"value"="-4351"}; +{"key"="-377";"subkey"="-76";"value"="-4340"}; +{"key"="-376";"subkey"="-76";"value"="-4328"}; +{"key"="-375";"subkey"="-75";"value"="-4317"}; +{"key"="-374";"subkey"="-75";"value"="-4305"}; +{"key"="-373";"subkey"="-75";"value"="-4294"}; +{"key"="-372";"subkey"="-75";"value"="-4282"}; +{"key"="-371";"subkey"="-75";"value"="-4271"}; +{"key"="-370";"subkey"="-74";"value"="-4259"}; +{"key"="-369";"subkey"="-74";"value"="-4248"}; +{"key"="-368";"subkey"="-74";"value"="-4236"}; +{"key"="-367";"subkey"="-74";"value"="-4225"}; +{"key"="-366";"subkey"="-74";"value"="-4213"}; +{"key"="-365";"subkey"="-73";"value"="-4202"}; +{"key"="-364";"subkey"="-73";"value"="-4190"}; +{"key"="-363";"subkey"="-73";"value"="-4179"}; +{"key"="-362";"subkey"="-73";"value"="-4167"}; +{"key"="-361";"subkey"="-73";"value"="-4156"}; +{"key"="-360";"subkey"="-72";"value"="-4144"}; +{"key"="-359";"subkey"="-72";"value"="-4133"}; +{"key"="-358";"subkey"="-72";"value"="-4121"}; +{"key"="-357";"subkey"="-72";"value"="-4110"}; +{"key"="-356";"subkey"="-72";"value"="-4098"}; +{"key"="-355";"subkey"="-71";"value"="-4087"}; +{"key"="-354";"subkey"="-71";"value"="-4075"}; +{"key"="-353";"subkey"="-71";"value"="-4064"}; +{"key"="-352";"subkey"="-71";"value"="-4052"}; +{"key"="-351";"subkey"="-71";"value"="-4041"}; +{"key"="-350";"subkey"="-70";"value"="-4029"}; +{"key"="-349";"subkey"="-70";"value"="-4018"}; +{"key"="-348";"subkey"="-70";"value"="-4006"}; +{"key"="-347";"subkey"="-70";"value"="-3994"}; +{"key"="-346";"subkey"="-70";"value"="-3983"}; +{"key"="-345";"subkey"="-69";"value"="-3971"}; +{"key"="-344";"subkey"="-69";"value"="-3960"}; +{"key"="-343";"subkey"="-69";"value"="-3948"}; +{"key"="-342";"subkey"="-69";"value"="-3937"}; +{"key"="-341";"subkey"="-69";"value"="-3925"}; +{"key"="-340";"subkey"="-68";"value"="-3914"}; +{"key"="-339";"subkey"="-68";"value"="-3902"}; +{"key"="-338";"subkey"="-68";"value"="-3891"}; +{"key"="-337";"subkey"="-68";"value"="-3879"}; +{"key"="-336";"subkey"="-68";"value"="-3868"}; +{"key"="-335";"subkey"="-67";"value"="-3856"}; +{"key"="-334";"subkey"="-67";"value"="-3845"}; +{"key"="-333";"subkey"="-67";"value"="-3833"}; +{"key"="-332";"subkey"="-67";"value"="-3822"}; +{"key"="-331";"subkey"="-67";"value"="-3810"}; +{"key"="-330";"subkey"="-66";"value"="-3799"}; +{"key"="-329";"subkey"="-66";"value"="-3787"}; +{"key"="-328";"subkey"="-66";"value"="-3776"}; +{"key"="-327";"subkey"="-66";"value"="-3764"}; +{"key"="-326";"subkey"="-66";"value"="-3753"}; +{"key"="-325";"subkey"="-65";"value"="-3741"}; +{"key"="-324";"subkey"="-65";"value"="-3730"}; +{"key"="-323";"subkey"="-65";"value"="-3718"}; +{"key"="-322";"subkey"="-65";"value"="-3707"}; +{"key"="-321";"subkey"="-65";"value"="-3695"}; +{"key"="-320";"subkey"="-64";"value"="-3684"}; +{"key"="-319";"subkey"="-64";"value"="-3672"}; +{"key"="-318";"subkey"="-64";"value"="-3661"}; +{"key"="-317";"subkey"="-64";"value"="-3649"}; +{"key"="-316";"subkey"="-64";"value"="-3638"}; +{"key"="-315";"subkey"="-63";"value"="-3626"}; +{"key"="-314";"subkey"="-63";"value"="-3615"}; +{"key"="-313";"subkey"="-63";"value"="-3603"}; +{"key"="-312";"subkey"="-63";"value"="-3592"}; +{"key"="-311";"subkey"="-63";"value"="-3580"}; +{"key"="-310";"subkey"="-62";"value"="-3569"}; +{"key"="-309";"subkey"="-62";"value"="-3557"}; +{"key"="-308";"subkey"="-62";"value"="-3545"}; +{"key"="-307";"subkey"="-62";"value"="-3534"}; +{"key"="-306";"subkey"="-62";"value"="-3522"}; +{"key"="-305";"subkey"="-61";"value"="-3511"}; +{"key"="-304";"subkey"="-61";"value"="-3499"}; +{"key"="-303";"subkey"="-61";"value"="-3488"}; +{"key"="-302";"subkey"="-61";"value"="-3476"}; +{"key"="-301";"subkey"="-61";"value"="-3465"}; +{"key"="-300";"subkey"="-60";"value"="-3453"}; +{"key"="-299";"subkey"="-60";"value"="-3442"}; +{"key"="-298";"subkey"="-60";"value"="-3430"}; +{"key"="-297";"subkey"="-60";"value"="-3419"}; +{"key"="-296";"subkey"="-60";"value"="-3407"}; +{"key"="-295";"subkey"="-59";"value"="-3396"}; +{"key"="-294";"subkey"="-59";"value"="-3384"}; +{"key"="-293";"subkey"="-59";"value"="-3373"}; +{"key"="-292";"subkey"="-59";"value"="-3361"}; +{"key"="-291";"subkey"="-59";"value"="-3350"}; +{"key"="-290";"subkey"="-58";"value"="-3338"}; +{"key"="-289";"subkey"="-58";"value"="-3327"}; +{"key"="-288";"subkey"="-58";"value"="-3315"}; +{"key"="-287";"subkey"="-58";"value"="-3304"}; +{"key"="-286";"subkey"="-58";"value"="-3292"}; +{"key"="-285";"subkey"="-57";"value"="-3281"}; +{"key"="-284";"subkey"="-57";"value"="-3269"}; +{"key"="-283";"subkey"="-57";"value"="-3258"}; +{"key"="-282";"subkey"="-57";"value"="-3246"}; +{"key"="-281";"subkey"="-57";"value"="-3235"}; +{"key"="-280";"subkey"="-56";"value"="-3223"}; +{"key"="-279";"subkey"="-56";"value"="-3212"}; +{"key"="-278";"subkey"="-56";"value"="-3200"}; +{"key"="-277";"subkey"="-56";"value"="-3189"}; +{"key"="-276";"subkey"="-56";"value"="-3177"}; +{"key"="-275";"subkey"="-55";"value"="-3166"}; +{"key"="-274";"subkey"="-55";"value"="-3154"}; +{"key"="-273";"subkey"="-55";"value"="-3143"}; +{"key"="-272";"subkey"="-55";"value"="-3131"}; +{"key"="-271";"subkey"="-55";"value"="-3120"}; +{"key"="-270";"subkey"="-54";"value"="-3108"}; +{"key"="-269";"subkey"="-54";"value"="-3096"}; +{"key"="-268";"subkey"="-54";"value"="-3085"}; +{"key"="-267";"subkey"="-54";"value"="-3073"}; +{"key"="-266";"subkey"="-54";"value"="-3062"}; +{"key"="-265";"subkey"="-53";"value"="-3050"}; +{"key"="-264";"subkey"="-53";"value"="-3039"}; +{"key"="-263";"subkey"="-53";"value"="-3027"}; +{"key"="-262";"subkey"="-53";"value"="-3016"}; +{"key"="-261";"subkey"="-53";"value"="-3004"}; +{"key"="-260";"subkey"="-52";"value"="-2993"}; +{"key"="-259";"subkey"="-52";"value"="-2981"}; +{"key"="-258";"subkey"="-52";"value"="-2970"}; +{"key"="-257";"subkey"="-52";"value"="-2958"}; +{"key"="-256";"subkey"="-52";"value"="-2947"}; +{"key"="-255";"subkey"="-51";"value"="-2935"}; +{"key"="-254";"subkey"="-51";"value"="-2924"}; +{"key"="-253";"subkey"="-51";"value"="-2912"}; +{"key"="-252";"subkey"="-51";"value"="-2901"}; +{"key"="-251";"subkey"="-51";"value"="-2889"}; +{"key"="-250";"subkey"="-50";"value"="-2878"}; +{"key"="-249";"subkey"="-50";"value"="-2866"}; +{"key"="-248";"subkey"="-50";"value"="-2855"}; +{"key"="-247";"subkey"="-50";"value"="-2843"}; +{"key"="-246";"subkey"="-50";"value"="-2832"}; +{"key"="-245";"subkey"="-49";"value"="-2820"}; +{"key"="-244";"subkey"="-49";"value"="-2809"}; +{"key"="-243";"subkey"="-49";"value"="-2797"}; +{"key"="-242";"subkey"="-49";"value"="-2786"}; +{"key"="-241";"subkey"="-49";"value"="-2774"}; +{"key"="-240";"subkey"="-48";"value"="-2763"}; +{"key"="-239";"subkey"="-48";"value"="-2751"}; +{"key"="-238";"subkey"="-48";"value"="-2740"}; +{"key"="-237";"subkey"="-48";"value"="-2728"}; +{"key"="-236";"subkey"="-48";"value"="-2717"}; +{"key"="-235";"subkey"="-47";"value"="-2705"}; +{"key"="-234";"subkey"="-47";"value"="-2694"}; +{"key"="-233";"subkey"="-47";"value"="-2682"}; +{"key"="-232";"subkey"="-47";"value"="-2670"}; +{"key"="-231";"subkey"="-47";"value"="-2659"}; +{"key"="-230";"subkey"="-46";"value"="-2647"}; +{"key"="-229";"subkey"="-46";"value"="-2636"}; +{"key"="-228";"subkey"="-46";"value"="-2624"}; +{"key"="-227";"subkey"="-46";"value"="-2613"}; +{"key"="-226";"subkey"="-46";"value"="-2601"}; +{"key"="-225";"subkey"="-45";"value"="-2590"}; +{"key"="-224";"subkey"="-45";"value"="-2578"}; +{"key"="-223";"subkey"="-45";"value"="-2567"}; +{"key"="-222";"subkey"="-45";"value"="-2555"}; +{"key"="-221";"subkey"="-45";"value"="-2544"}; +{"key"="-220";"subkey"="-44";"value"="-2532"}; +{"key"="-219";"subkey"="-44";"value"="-2521"}; +{"key"="-218";"subkey"="-44";"value"="-2509"}; +{"key"="-217";"subkey"="-44";"value"="-2498"}; +{"key"="-216";"subkey"="-44";"value"="-2486"}; +{"key"="-215";"subkey"="-43";"value"="-2475"}; +{"key"="-214";"subkey"="-43";"value"="-2463"}; +{"key"="-213";"subkey"="-43";"value"="-2452"}; +{"key"="-212";"subkey"="-43";"value"="-2440"}; +{"key"="-211";"subkey"="-43";"value"="-2429"}; +{"key"="-210";"subkey"="-42";"value"="-2417"}; +{"key"="-209";"subkey"="-42";"value"="-2406"}; +{"key"="-208";"subkey"="-42";"value"="-2394"}; +{"key"="-207";"subkey"="-42";"value"="-2383"}; +{"key"="-206";"subkey"="-42";"value"="-2371"}; +{"key"="-205";"subkey"="-41";"value"="-2360"}; +{"key"="-204";"subkey"="-41";"value"="-2348"}; +{"key"="-203";"subkey"="-41";"value"="-2337"}; +{"key"="-202";"subkey"="-41";"value"="-2325"}; +{"key"="-201";"subkey"="-41";"value"="-2314"}; +{"key"="-200";"subkey"="-40";"value"="-2302"}; +{"key"="-199";"subkey"="-40";"value"="-2291"}; +{"key"="-198";"subkey"="-40";"value"="-2279"}; +{"key"="-197";"subkey"="-40";"value"="-2268"}; +{"key"="-196";"subkey"="-40";"value"="-2256"}; +{"key"="-195";"subkey"="-39";"value"="-2245"}; +{"key"="-194";"subkey"="-39";"value"="-2233"}; +{"key"="-193";"subkey"="-39";"value"="-2221"}; +{"key"="-192";"subkey"="-39";"value"="-2210"}; +{"key"="-191";"subkey"="-39";"value"="-2198"}; +{"key"="-190";"subkey"="-38";"value"="-2187"}; +{"key"="-189";"subkey"="-38";"value"="-2175"}; +{"key"="-188";"subkey"="-38";"value"="-2164"}; +{"key"="-187";"subkey"="-38";"value"="-2152"}; +{"key"="-186";"subkey"="-38";"value"="-2141"}; +{"key"="-185";"subkey"="-37";"value"="-2129"}; +{"key"="-184";"subkey"="-37";"value"="-2118"}; +{"key"="-183";"subkey"="-37";"value"="-2106"}; +{"key"="-182";"subkey"="-37";"value"="-2095"}; +{"key"="-181";"subkey"="-37";"value"="-2083"}; +{"key"="-180";"subkey"="-36";"value"="-2072"}; +{"key"="-179";"subkey"="-36";"value"="-2060"}; +{"key"="-178";"subkey"="-36";"value"="-2049"}; +{"key"="-177";"subkey"="-36";"value"="-2037"}; +{"key"="-176";"subkey"="-36";"value"="-2026"}; +{"key"="-175";"subkey"="-35";"value"="-2014"}; +{"key"="-174";"subkey"="-35";"value"="-2003"}; +{"key"="-173";"subkey"="-35";"value"="-1991"}; +{"key"="-172";"subkey"="-35";"value"="-1980"}; +{"key"="-171";"subkey"="-35";"value"="-1968"}; +{"key"="-170";"subkey"="-34";"value"="-1957"}; +{"key"="-169";"subkey"="-34";"value"="-1945"}; +{"key"="-168";"subkey"="-34";"value"="-1934"}; +{"key"="-167";"subkey"="-34";"value"="-1922"}; +{"key"="-166";"subkey"="-34";"value"="-1911"}; +{"key"="-165";"subkey"="-33";"value"="-1899"}; +{"key"="-164";"subkey"="-33";"value"="-1888"}; +{"key"="-163";"subkey"="-33";"value"="-1876"}; +{"key"="-162";"subkey"="-33";"value"="-1865"}; +{"key"="-161";"subkey"="-33";"value"="-1853"}; +{"key"="-160";"subkey"="-32";"value"="-1842"}; +{"key"="-159";"subkey"="-32";"value"="-1830"}; +{"key"="-158";"subkey"="-32";"value"="-1819"}; +{"key"="-157";"subkey"="-32";"value"="-1807"}; +{"key"="-156";"subkey"="-32";"value"="-1796"}; +{"key"="-155";"subkey"="-31";"value"="-1784"}; +{"key"="-154";"subkey"="-31";"value"="-1772"}; +{"key"="-153";"subkey"="-31";"value"="-1761"}; +{"key"="-152";"subkey"="-31";"value"="-1749"}; +{"key"="-151";"subkey"="-31";"value"="-1738"}; +{"key"="-150";"subkey"="-30";"value"="-1726"}; +{"key"="-149";"subkey"="-30";"value"="-1715"}; +{"key"="-148";"subkey"="-30";"value"="-1703"}; +{"key"="-147";"subkey"="-30";"value"="-1692"}; +{"key"="-146";"subkey"="-30";"value"="-1680"}; +{"key"="-145";"subkey"="-29";"value"="-1669"}; +{"key"="-144";"subkey"="-29";"value"="-1657"}; +{"key"="-143";"subkey"="-29";"value"="-1646"}; +{"key"="-142";"subkey"="-29";"value"="-1634"}; +{"key"="-141";"subkey"="-29";"value"="-1623"}; +{"key"="-140";"subkey"="-28";"value"="-1611"}; +{"key"="-139";"subkey"="-28";"value"="-1600"}; +{"key"="-138";"subkey"="-28";"value"="-1588"}; +{"key"="-137";"subkey"="-28";"value"="-1577"}; +{"key"="-136";"subkey"="-28";"value"="-1565"}; +{"key"="-135";"subkey"="-27";"value"="-1554"}; +{"key"="-134";"subkey"="-27";"value"="-1542"}; +{"key"="-133";"subkey"="-27";"value"="-1531"}; +{"key"="-132";"subkey"="-27";"value"="-1519"}; +{"key"="-131";"subkey"="-27";"value"="-1508"}; +{"key"="-130";"subkey"="-26";"value"="-1496"}; +{"key"="-129";"subkey"="-26";"value"="-1485"}; +{"key"="-128";"subkey"="-26";"value"="-1473"}; +{"key"="-127";"subkey"="-26";"value"="-1462"}; +{"key"="-126";"subkey"="-26";"value"="-1450"}; +{"key"="-125";"subkey"="-25";"value"="-1439"}; +{"key"="-124";"subkey"="-25";"value"="-1427"}; +{"key"="-123";"subkey"="-25";"value"="-1416"}; +{"key"="-122";"subkey"="-25";"value"="-1404"}; +{"key"="-121";"subkey"="-25";"value"="-1393"}; +{"key"="-120";"subkey"="-24";"value"="-1381"}; +{"key"="-119";"subkey"="-24";"value"="-1370"}; +{"key"="-118";"subkey"="-24";"value"="-1358"}; +{"key"="-117";"subkey"="-24";"value"="-1347"}; +{"key"="-116";"subkey"="-24";"value"="-1335"}; +{"key"="-115";"subkey"="-23";"value"="-1323"}; +{"key"="-114";"subkey"="-23";"value"="-1312"}; +{"key"="-113";"subkey"="-23";"value"="-1300"}; +{"key"="-112";"subkey"="-23";"value"="-1289"}; +{"key"="-111";"subkey"="-23";"value"="-1277"}; +{"key"="-110";"subkey"="-22";"value"="-1266"}; +{"key"="-109";"subkey"="-22";"value"="-1254"}; +{"key"="-108";"subkey"="-22";"value"="-1243"}; +{"key"="-107";"subkey"="-22";"value"="-1231"}; +{"key"="-106";"subkey"="-22";"value"="-1220"}; +{"key"="-105";"subkey"="-21";"value"="-1208"}; +{"key"="-104";"subkey"="-21";"value"="-1197"}; +{"key"="-103";"subkey"="-21";"value"="-1185"}; +{"key"="-102";"subkey"="-21";"value"="-1174"}; +{"key"="-101";"subkey"="-21";"value"="-1162"}; +{"key"="-100";"subkey"="-20";"value"="-1151"}; +{"key"="-99";"subkey"="-20";"value"="-1139"}; +{"key"="-98";"subkey"="-20";"value"="-1128"}; +{"key"="-97";"subkey"="-20";"value"="-1116"}; +{"key"="-96";"subkey"="-20";"value"="-1105"}; +{"key"="-95";"subkey"="-19";"value"="-1093"}; +{"key"="-94";"subkey"="-19";"value"="-1082"}; +{"key"="-93";"subkey"="-19";"value"="-1070"}; +{"key"="-92";"subkey"="-19";"value"="-1059"}; +{"key"="-91";"subkey"="-19";"value"="-1047"}; +{"key"="-90";"subkey"="-18";"value"="-1036"}; +{"key"="-89";"subkey"="-18";"value"="-1024"}; +{"key"="-88";"subkey"="-18";"value"="-1013"}; +{"key"="-87";"subkey"="-18";"value"="-1001"}; +{"key"="-86";"subkey"="-18";"value"="-990"}; +{"key"="-85";"subkey"="-17";"value"="-978"}; +{"key"="-84";"subkey"="-17";"value"="-967"}; +{"key"="-83";"subkey"="-17";"value"="-955"}; +{"key"="-82";"subkey"="-17";"value"="-944"}; +{"key"="-81";"subkey"="-17";"value"="-932"}; +{"key"="-80";"subkey"="-16";"value"="-921"}; +{"key"="-79";"subkey"="-16";"value"="-909"}; +{"key"="-78";"subkey"="-16";"value"="-898"}; +{"key"="-77";"subkey"="-16";"value"="-886"}; +{"key"="-76";"subkey"="-16";"value"="-874"}; +{"key"="-75";"subkey"="-15";"value"="-863"}; +{"key"="-74";"subkey"="-15";"value"="-851"}; +{"key"="-73";"subkey"="-15";"value"="-840"}; +{"key"="-72";"subkey"="-15";"value"="-828"}; +{"key"="-71";"subkey"="-15";"value"="-817"}; +{"key"="-70";"subkey"="-14";"value"="-805"}; +{"key"="-69";"subkey"="-14";"value"="-794"}; +{"key"="-68";"subkey"="-14";"value"="-782"}; +{"key"="-67";"subkey"="-14";"value"="-771"}; +{"key"="-66";"subkey"="-14";"value"="-759"}; +{"key"="-65";"subkey"="-13";"value"="-748"}; +{"key"="-64";"subkey"="-13";"value"="-736"}; +{"key"="-63";"subkey"="-13";"value"="-725"}; +{"key"="-62";"subkey"="-13";"value"="-713"}; +{"key"="-61";"subkey"="-13";"value"="-702"}; +{"key"="-60";"subkey"="-12";"value"="-690"}; +{"key"="-59";"subkey"="-12";"value"="-679"}; +{"key"="-58";"subkey"="-12";"value"="-667"}; +{"key"="-57";"subkey"="-12";"value"="-656"}; +{"key"="-56";"subkey"="-12";"value"="-644"}; +{"key"="-55";"subkey"="-11";"value"="-633"}; +{"key"="-54";"subkey"="-11";"value"="-621"}; +{"key"="-53";"subkey"="-11";"value"="-610"}; +{"key"="-52";"subkey"="-11";"value"="-598"}; +{"key"="-51";"subkey"="-11";"value"="-587"}; +{"key"="-50";"subkey"="-10";"value"="-575"}; +{"key"="-49";"subkey"="-10";"value"="-564"}; +{"key"="-48";"subkey"="-10";"value"="-552"}; +{"key"="-47";"subkey"="-10";"value"="-541"}; +{"key"="-46";"subkey"="-10";"value"="-529"}; +{"key"="-45";"subkey"="-9";"value"="-518"}; +{"key"="-44";"subkey"="-9";"value"="-506"}; +{"key"="-43";"subkey"="-9";"value"="-495"}; +{"key"="-42";"subkey"="-9";"value"="-483"}; +{"key"="-41";"subkey"="-9";"value"="-472"}; +{"key"="-40";"subkey"="-8";"value"="-460"}; +{"key"="-39";"subkey"="-8";"value"="-449"}; +{"key"="-38";"subkey"="-8";"value"="-437"}; +{"key"="-37";"subkey"="-8";"value"="-425"}; +{"key"="-36";"subkey"="-8";"value"="-414"}; +{"key"="-35";"subkey"="-7";"value"="-402"}; +{"key"="-34";"subkey"="-7";"value"="-391"}; +{"key"="-33";"subkey"="-7";"value"="-379"}; +{"key"="-32";"subkey"="-7";"value"="-368"}; +{"key"="-31";"subkey"="-7";"value"="-356"}; +{"key"="-30";"subkey"="-6";"value"="-345"}; +{"key"="-29";"subkey"="-6";"value"="-333"}; +{"key"="-28";"subkey"="-6";"value"="-322"}; +{"key"="-27";"subkey"="-6";"value"="-310"}; +{"key"="-26";"subkey"="-6";"value"="-299"}; +{"key"="-25";"subkey"="-5";"value"="-287"}; +{"key"="-24";"subkey"="-5";"value"="-276"}; +{"key"="-23";"subkey"="-5";"value"="-264"}; +{"key"="-22";"subkey"="-5";"value"="-253"}; +{"key"="-21";"subkey"="-5";"value"="-241"}; +{"key"="-20";"subkey"="-4";"value"="-230"}; +{"key"="-19";"subkey"="-4";"value"="-218"}; +{"key"="-18";"subkey"="-4";"value"="-207"}; +{"key"="-17";"subkey"="-4";"value"="-195"}; +{"key"="-16";"subkey"="-4";"value"="-184"}; +{"key"="-15";"subkey"="-3";"value"="-172"}; +{"key"="-14";"subkey"="-3";"value"="-161"}; +{"key"="-13";"subkey"="-3";"value"="-149"}; +{"key"="-12";"subkey"="-3";"value"="-138"}; +{"key"="-11";"subkey"="-3";"value"="-126"}; +{"key"="-10";"subkey"="-2";"value"="-115"}; +{"key"="-9";"subkey"="-2";"value"="-103"}; +{"key"="-8";"subkey"="-2";"value"="-92"}; +{"key"="-7";"subkey"="-2";"value"="-80"}; +{"key"="-6";"subkey"="-2";"value"="-69"}; +{"key"="-5";"subkey"="-1";"value"="-57"}; +{"key"="-4";"subkey"="-1";"value"="-46"}; +{"key"="-3";"subkey"="-1";"value"="-34"}; +{"key"="-2";"subkey"="-1";"value"="-23"}; +{"key"="-1";"subkey"="-1";"value"="-11"}; +{"key"="0";"subkey"="0";"value"="0"}; +{"key"="1";"subkey"="0";"value"="11"}; +{"key"="2";"subkey"="0";"value"="23"}; +{"key"="3";"subkey"="0";"value"="34"}; +{"key"="4";"subkey"="0";"value"="46"}; +{"key"="5";"subkey"="1";"value"="57"}; +{"key"="6";"subkey"="1";"value"="69"}; +{"key"="7";"subkey"="1";"value"="80"}; +{"key"="8";"subkey"="1";"value"="92"}; +{"key"="9";"subkey"="1";"value"="103"}; +{"key"="10";"subkey"="2";"value"="115"}; +{"key"="11";"subkey"="2";"value"="126"}; +{"key"="12";"subkey"="2";"value"="138"}; +{"key"="13";"subkey"="2";"value"="149"}; +{"key"="14";"subkey"="2";"value"="161"}; +{"key"="15";"subkey"="3";"value"="172"}; +{"key"="16";"subkey"="3";"value"="184"}; +{"key"="17";"subkey"="3";"value"="195"}; +{"key"="18";"subkey"="3";"value"="207"}; +{"key"="19";"subkey"="3";"value"="218"}; +{"key"="20";"subkey"="4";"value"="230"}; +{"key"="21";"subkey"="4";"value"="241"}; +{"key"="22";"subkey"="4";"value"="253"}; +{"key"="23";"subkey"="4";"value"="264"}; +{"key"="24";"subkey"="4";"value"="276"}; +{"key"="25";"subkey"="5";"value"="287"}; +{"key"="26";"subkey"="5";"value"="299"}; +{"key"="27";"subkey"="5";"value"="310"}; +{"key"="28";"subkey"="5";"value"="322"}; +{"key"="29";"subkey"="5";"value"="333"}; +{"key"="30";"subkey"="6";"value"="345"}; +{"key"="31";"subkey"="6";"value"="356"}; +{"key"="32";"subkey"="6";"value"="368"}; +{"key"="33";"subkey"="6";"value"="379"}; +{"key"="34";"subkey"="6";"value"="391"}; +{"key"="35";"subkey"="7";"value"="402"}; +{"key"="36";"subkey"="7";"value"="414"}; +{"key"="37";"subkey"="7";"value"="425"}; +{"key"="38";"subkey"="7";"value"="437"}; +{"key"="39";"subkey"="7";"value"="449"}; +{"key"="40";"subkey"="8";"value"="460"}; +{"key"="41";"subkey"="8";"value"="472"}; +{"key"="42";"subkey"="8";"value"="483"}; +{"key"="43";"subkey"="8";"value"="495"}; +{"key"="44";"subkey"="8";"value"="506"}; +{"key"="45";"subkey"="9";"value"="518"}; +{"key"="46";"subkey"="9";"value"="529"}; +{"key"="47";"subkey"="9";"value"="541"}; +{"key"="48";"subkey"="9";"value"="552"}; +{"key"="49";"subkey"="9";"value"="564"}; +{"key"="50";"subkey"="10";"value"="575"}; +{"key"="51";"subkey"="10";"value"="587"}; +{"key"="52";"subkey"="10";"value"="598"}; +{"key"="53";"subkey"="10";"value"="610"}; +{"key"="54";"subkey"="10";"value"="621"}; +{"key"="55";"subkey"="11";"value"="633"}; +{"key"="56";"subkey"="11";"value"="644"}; +{"key"="57";"subkey"="11";"value"="656"}; +{"key"="58";"subkey"="11";"value"="667"}; +{"key"="59";"subkey"="11";"value"="679"}; +{"key"="60";"subkey"="12";"value"="690"}; +{"key"="61";"subkey"="12";"value"="702"}; +{"key"="62";"subkey"="12";"value"="713"}; +{"key"="63";"subkey"="12";"value"="725"}; +{"key"="64";"subkey"="12";"value"="736"}; +{"key"="65";"subkey"="13";"value"="748"}; +{"key"="66";"subkey"="13";"value"="759"}; +{"key"="67";"subkey"="13";"value"="771"}; +{"key"="68";"subkey"="13";"value"="782"}; +{"key"="69";"subkey"="13";"value"="794"}; +{"key"="70";"subkey"="14";"value"="805"}; +{"key"="71";"subkey"="14";"value"="817"}; +{"key"="72";"subkey"="14";"value"="828"}; +{"key"="73";"subkey"="14";"value"="840"}; +{"key"="74";"subkey"="14";"value"="851"}; +{"key"="75";"subkey"="15";"value"="863"}; +{"key"="76";"subkey"="15";"value"="874"}; +{"key"="77";"subkey"="15";"value"="886"}; +{"key"="78";"subkey"="15";"value"="898"}; +{"key"="79";"subkey"="15";"value"="909"}; +{"key"="80";"subkey"="16";"value"="921"}; +{"key"="81";"subkey"="16";"value"="932"}; +{"key"="82";"subkey"="16";"value"="944"}; +{"key"="83";"subkey"="16";"value"="955"}; +{"key"="84";"subkey"="16";"value"="967"}; +{"key"="85";"subkey"="17";"value"="978"}; +{"key"="86";"subkey"="17";"value"="990"}; +{"key"="87";"subkey"="17";"value"="1001"}; +{"key"="88";"subkey"="17";"value"="1013"}; +{"key"="89";"subkey"="17";"value"="1024"}; +{"key"="90";"subkey"="18";"value"="1036"}; +{"key"="91";"subkey"="18";"value"="1047"}; +{"key"="92";"subkey"="18";"value"="1059"}; +{"key"="93";"subkey"="18";"value"="1070"}; +{"key"="94";"subkey"="18";"value"="1082"}; +{"key"="95";"subkey"="19";"value"="1093"}; +{"key"="96";"subkey"="19";"value"="1105"}; +{"key"="97";"subkey"="19";"value"="1116"}; +{"key"="98";"subkey"="19";"value"="1128"}; +{"key"="99";"subkey"="19";"value"="1139"}; +{"key"="100";"subkey"="20";"value"="460"}; +{"key"="101";"subkey"="20";"value"="466"}; +{"key"="102";"subkey"="20";"value"="471"}; +{"key"="103";"subkey"="20";"value"="477"}; +{"key"="104";"subkey"="20";"value"="483"}; +{"key"="105";"subkey"="21";"value"="488"}; +{"key"="106";"subkey"="21";"value"="494"}; +{"key"="107";"subkey"="21";"value"="499"}; +{"key"="108";"subkey"="21";"value"="505"}; +{"key"="109";"subkey"="21";"value"="511"}; +{"key"="110";"subkey"="22";"value"="517"}; +{"key"="111";"subkey"="22";"value"="522"}; +{"key"="112";"subkey"="22";"value"="528"}; +{"key"="113";"subkey"="22";"value"="534"}; +{"key"="114";"subkey"="22";"value"="539"}; +{"key"="115";"subkey"="23";"value"="545"}; +{"key"="116";"subkey"="23";"value"="551"}; +{"key"="117";"subkey"="23";"value"="557"}; +{"key"="118";"subkey"="23";"value"="562"}; +{"key"="119";"subkey"="23";"value"="568"}; +{"key"="120";"subkey"="24";"value"="574"}; +{"key"="121";"subkey"="24";"value"="580"}; +{"key"="122";"subkey"="24";"value"="586"}; +{"key"="123";"subkey"="24";"value"="591"}; +{"key"="124";"subkey"="24";"value"="597"}; +{"key"="125";"subkey"="25";"value"="603"}; +{"key"="126";"subkey"="25";"value"="609"}; +{"key"="127";"subkey"="25";"value"="615"}; +{"key"="128";"subkey"="25";"value"="621"}; +{"key"="129";"subkey"="25";"value"="626"}; +{"key"="130";"subkey"="26";"value"="632"}; +{"key"="131";"subkey"="26";"value"="638"}; +{"key"="132";"subkey"="26";"value"="644"}; +{"key"="133";"subkey"="26";"value"="650"}; +{"key"="134";"subkey"="26";"value"="656"}; +{"key"="135";"subkey"="27";"value"="662"}; +{"key"="136";"subkey"="27";"value"="668"}; +{"key"="137";"subkey"="27";"value"="674"}; +{"key"="138";"subkey"="27";"value"="679"}; +{"key"="139";"subkey"="27";"value"="685"}; +{"key"="140";"subkey"="28";"value"="691"}; +{"key"="141";"subkey"="28";"value"="697"}; +{"key"="142";"subkey"="28";"value"="703"}; +{"key"="143";"subkey"="28";"value"="709"}; +{"key"="144";"subkey"="28";"value"="715"}; +{"key"="145";"subkey"="29";"value"="721"}; +{"key"="146";"subkey"="29";"value"="727"}; +{"key"="147";"subkey"="29";"value"="733"}; +{"key"="148";"subkey"="29";"value"="739"}; +{"key"="149";"subkey"="29";"value"="745"}; +{"key"="150";"subkey"="30";"value"="751"}; +{"key"="151";"subkey"="30";"value"="757"}; +{"key"="152";"subkey"="30";"value"="763"}; +{"key"="153";"subkey"="30";"value"="769"}; +{"key"="154";"subkey"="30";"value"="775"}; +{"key"="155";"subkey"="31";"value"="781"}; +{"key"="156";"subkey"="31";"value"="787"}; +{"key"="157";"subkey"="31";"value"="793"}; +{"key"="158";"subkey"="31";"value"="799"}; +{"key"="159";"subkey"="31";"value"="805"}; +{"key"="160";"subkey"="32";"value"="812"}; +{"key"="161";"subkey"="32";"value"="818"}; +{"key"="162";"subkey"="32";"value"="824"}; +{"key"="163";"subkey"="32";"value"="830"}; +{"key"="164";"subkey"="32";"value"="836"}; +{"key"="165";"subkey"="33";"value"="842"}; +{"key"="166";"subkey"="33";"value"="848"}; +{"key"="167";"subkey"="33";"value"="854"}; +{"key"="168";"subkey"="33";"value"="860"}; +{"key"="169";"subkey"="33";"value"="866"}; +{"key"="170";"subkey"="34";"value"="873"}; +{"key"="171";"subkey"="34";"value"="879"}; +{"key"="172";"subkey"="34";"value"="885"}; +{"key"="173";"subkey"="34";"value"="891"}; +{"key"="174";"subkey"="34";"value"="897"}; +{"key"="175";"subkey"="35";"value"="903"}; +{"key"="176";"subkey"="35";"value"="910"}; +{"key"="177";"subkey"="35";"value"="916"}; +{"key"="178";"subkey"="35";"value"="922"}; +{"key"="179";"subkey"="35";"value"="928"}; +{"key"="180";"subkey"="36";"value"="934"}; +{"key"="181";"subkey"="36";"value"="940"}; +{"key"="182";"subkey"="36";"value"="947"}; +{"key"="183";"subkey"="36";"value"="953"}; +{"key"="184";"subkey"="36";"value"="959"}; +{"key"="185";"subkey"="37";"value"="965"}; +{"key"="186";"subkey"="37";"value"="971"}; +{"key"="187";"subkey"="37";"value"="978"}; +{"key"="188";"subkey"="37";"value"="984"}; +{"key"="189";"subkey"="37";"value"="990"}; +{"key"="190";"subkey"="38";"value"="996"}; +{"key"="191";"subkey"="38";"value"="1003"}; +{"key"="192";"subkey"="38";"value"="1009"}; +{"key"="193";"subkey"="38";"value"="1015"}; +{"key"="194";"subkey"="38";"value"="1021"}; +{"key"="195";"subkey"="39";"value"="1028"}; +{"key"="196";"subkey"="39";"value"="1034"}; +{"key"="197";"subkey"="39";"value"="1040"}; +{"key"="198";"subkey"="39";"value"="1047"}; +{"key"="199";"subkey"="39";"value"="1053"}; +{"key"="200";"subkey"="40";"value"="1059"}; +{"key"="201";"subkey"="40";"value"="1065"}; +{"key"="202";"subkey"="40";"value"="1072"}; +{"key"="203";"subkey"="40";"value"="1078"}; +{"key"="204";"subkey"="40";"value"="1084"}; +{"key"="205";"subkey"="41";"value"="1091"}; +{"key"="206";"subkey"="41";"value"="1097"}; +{"key"="207";"subkey"="41";"value"="1103"}; +{"key"="208";"subkey"="41";"value"="1110"}; +{"key"="209";"subkey"="41";"value"="1116"}; +{"key"="210";"subkey"="42";"value"="1122"}; +{"key"="211";"subkey"="42";"value"="1129"}; +{"key"="212";"subkey"="42";"value"="1135"}; +{"key"="213";"subkey"="42";"value"="1141"}; +{"key"="214";"subkey"="42";"value"="1148"}; +{"key"="215";"subkey"="43";"value"="1154"}; +{"key"="216";"subkey"="43";"value"="1161"}; +{"key"="217";"subkey"="43";"value"="1167"}; +{"key"="218";"subkey"="43";"value"="1173"}; +{"key"="219";"subkey"="43";"value"="1180"}; +{"key"="220";"subkey"="44";"value"="1186"}; +{"key"="221";"subkey"="44";"value"="1192"}; +{"key"="222";"subkey"="44";"value"="1199"}; +{"key"="223";"subkey"="44";"value"="1205"}; +{"key"="224";"subkey"="44";"value"="1212"}; +{"key"="225";"subkey"="45";"value"="1218"}; +{"key"="226";"subkey"="45";"value"="1225"}; +{"key"="227";"subkey"="45";"value"="1231"}; +{"key"="228";"subkey"="45";"value"="1237"}; +{"key"="229";"subkey"="45";"value"="1244"}; +{"key"="230";"subkey"="46";"value"="1250"}; +{"key"="231";"subkey"="46";"value"="1257"}; +{"key"="232";"subkey"="46";"value"="1263"}; +{"key"="233";"subkey"="46";"value"="1270"}; +{"key"="234";"subkey"="46";"value"="1276"}; +{"key"="235";"subkey"="47";"value"="1283"}; +{"key"="236";"subkey"="47";"value"="1289"}; +{"key"="237";"subkey"="47";"value"="1295"}; +{"key"="238";"subkey"="47";"value"="1302"}; +{"key"="239";"subkey"="47";"value"="1308"}; +{"key"="240";"subkey"="48";"value"="1315"}; +{"key"="241";"subkey"="48";"value"="1321"}; +{"key"="242";"subkey"="48";"value"="1328"}; +{"key"="243";"subkey"="48";"value"="1334"}; +{"key"="244";"subkey"="48";"value"="1341"}; +{"key"="245";"subkey"="49";"value"="1347"}; +{"key"="246";"subkey"="49";"value"="1354"}; +{"key"="247";"subkey"="49";"value"="1360"}; +{"key"="248";"subkey"="49";"value"="1367"}; +{"key"="249";"subkey"="49";"value"="1373"}; +{"key"="250";"subkey"="50";"value"="1380"}; +{"key"="251";"subkey"="50";"value"="1386"}; +{"key"="252";"subkey"="50";"value"="1393"}; +{"key"="253";"subkey"="50";"value"="1399"}; +{"key"="254";"subkey"="50";"value"="1406"}; +{"key"="255";"subkey"="51";"value"="1413"}; +{"key"="256";"subkey"="51";"value"="1419"}; +{"key"="257";"subkey"="51";"value"="1426"}; +{"key"="258";"subkey"="51";"value"="1432"}; +{"key"="259";"subkey"="51";"value"="1439"}; +{"key"="260";"subkey"="52";"value"="1445"}; +{"key"="261";"subkey"="52";"value"="1452"}; +{"key"="262";"subkey"="52";"value"="1458"}; +{"key"="263";"subkey"="52";"value"="1465"}; +{"key"="264";"subkey"="52";"value"="1472"}; +{"key"="265";"subkey"="53";"value"="1478"}; +{"key"="266";"subkey"="53";"value"="1485"}; +{"key"="267";"subkey"="53";"value"="1491"}; +{"key"="268";"subkey"="53";"value"="1498"}; +{"key"="269";"subkey"="53";"value"="1504"}; +{"key"="270";"subkey"="54";"value"="1511"}; +{"key"="271";"subkey"="54";"value"="1518"}; +{"key"="272";"subkey"="54";"value"="1524"}; +{"key"="273";"subkey"="54";"value"="1531"}; +{"key"="274";"subkey"="54";"value"="1537"}; +{"key"="275";"subkey"="55";"value"="1544"}; +{"key"="276";"subkey"="55";"value"="1551"}; +{"key"="277";"subkey"="55";"value"="1557"}; +{"key"="278";"subkey"="55";"value"="1564"}; +{"key"="279";"subkey"="55";"value"="1571"}; +{"key"="280";"subkey"="56";"value"="1577"}; +{"key"="281";"subkey"="56";"value"="1584"}; +{"key"="282";"subkey"="56";"value"="1591"}; +{"key"="283";"subkey"="56";"value"="1597"}; +{"key"="284";"subkey"="56";"value"="1604"}; +{"key"="285";"subkey"="57";"value"="1610"}; +{"key"="286";"subkey"="57";"value"="1617"}; +{"key"="287";"subkey"="57";"value"="1624"}; +{"key"="288";"subkey"="57";"value"="1630"}; +{"key"="289";"subkey"="57";"value"="1637"}; +{"key"="290";"subkey"="58";"value"="1644"}; +{"key"="291";"subkey"="58";"value"="1650"}; +{"key"="292";"subkey"="58";"value"="1657"}; +{"key"="293";"subkey"="58";"value"="1664"}; +{"key"="294";"subkey"="58";"value"="1670"}; +{"key"="295";"subkey"="59";"value"="1677"}; +{"key"="296";"subkey"="59";"value"="1684"}; +{"key"="297";"subkey"="59";"value"="1691"}; +{"key"="298";"subkey"="59";"value"="1697"}; +{"key"="299";"subkey"="59";"value"="1704"}; +{"key"="300";"subkey"="60";"value"="1711"}; +{"key"="301";"subkey"="60";"value"="1717"}; +{"key"="302";"subkey"="60";"value"="1724"}; +{"key"="303";"subkey"="60";"value"="1731"}; +{"key"="304";"subkey"="60";"value"="1737"}; +{"key"="305";"subkey"="61";"value"="1744"}; +{"key"="306";"subkey"="61";"value"="1751"}; +{"key"="307";"subkey"="61";"value"="1758"}; +{"key"="308";"subkey"="61";"value"="1764"}; +{"key"="309";"subkey"="61";"value"="1771"}; +{"key"="310";"subkey"="62";"value"="1778"}; +{"key"="311";"subkey"="62";"value"="1785"}; +{"key"="312";"subkey"="62";"value"="1791"}; +{"key"="313";"subkey"="62";"value"="1798"}; +{"key"="314";"subkey"="62";"value"="1805"}; +{"key"="315";"subkey"="63";"value"="1812"}; +{"key"="316";"subkey"="63";"value"="1818"}; +{"key"="317";"subkey"="63";"value"="1825"}; +{"key"="318";"subkey"="63";"value"="1832"}; +{"key"="319";"subkey"="63";"value"="1839"}; +{"key"="320";"subkey"="64";"value"="1845"}; +{"key"="321";"subkey"="64";"value"="1852"}; +{"key"="322";"subkey"="64";"value"="1859"}; +{"key"="323";"subkey"="64";"value"="1866"}; +{"key"="324";"subkey"="64";"value"="1872"}; +{"key"="325";"subkey"="65";"value"="1879"}; +{"key"="326";"subkey"="65";"value"="1886"}; +{"key"="327";"subkey"="65";"value"="1893"}; +{"key"="328";"subkey"="65";"value"="1900"}; +{"key"="329";"subkey"="65";"value"="1906"}; +{"key"="330";"subkey"="66";"value"="1913"}; +{"key"="331";"subkey"="66";"value"="1920"}; +{"key"="332";"subkey"="66";"value"="1927"}; +{"key"="333";"subkey"="66";"value"="1934"}; +{"key"="334";"subkey"="66";"value"="1940"}; +{"key"="335";"subkey"="67";"value"="1947"}; +{"key"="336";"subkey"="67";"value"="1954"}; +{"key"="337";"subkey"="67";"value"="1961"}; +{"key"="338";"subkey"="67";"value"="1968"}; +{"key"="339";"subkey"="67";"value"="1975"}; +{"key"="340";"subkey"="68";"value"="1981"}; +{"key"="341";"subkey"="68";"value"="1988"}; +{"key"="342";"subkey"="68";"value"="1995"}; +{"key"="343";"subkey"="68";"value"="2002"}; +{"key"="344";"subkey"="68";"value"="2009"}; +{"key"="345";"subkey"="69";"value"="2016"}; +{"key"="346";"subkey"="69";"value"="2022"}; +{"key"="347";"subkey"="69";"value"="2029"}; +{"key"="348";"subkey"="69";"value"="2036"}; +{"key"="349";"subkey"="69";"value"="2043"}; +{"key"="350";"subkey"="70";"value"="2050"}; +{"key"="351";"subkey"="70";"value"="2057"}; +{"key"="352";"subkey"="70";"value"="2063"}; +{"key"="353";"subkey"="70";"value"="2070"}; +{"key"="354";"subkey"="70";"value"="2077"}; +{"key"="355";"subkey"="71";"value"="2084"}; +{"key"="356";"subkey"="71";"value"="2091"}; +{"key"="357";"subkey"="71";"value"="2098"}; +{"key"="358";"subkey"="71";"value"="2105"}; +{"key"="359";"subkey"="71";"value"="2112"}; +{"key"="360";"subkey"="72";"value"="2118"}; +{"key"="361";"subkey"="72";"value"="2125"}; +{"key"="362";"subkey"="72";"value"="2132"}; +{"key"="363";"subkey"="72";"value"="2139"}; +{"key"="364";"subkey"="72";"value"="2146"}; +{"key"="365";"subkey"="73";"value"="2153"}; +{"key"="366";"subkey"="73";"value"="2160"}; +{"key"="367";"subkey"="73";"value"="2167"}; +{"key"="368";"subkey"="73";"value"="2174"}; +{"key"="369";"subkey"="73";"value"="2181"}; +{"key"="370";"subkey"="74";"value"="2187"}; +{"key"="371";"subkey"="74";"value"="2194"}; +{"key"="372";"subkey"="74";"value"="2201"}; +{"key"="373";"subkey"="74";"value"="2208"}; +{"key"="374";"subkey"="74";"value"="2215"}; +{"key"="375";"subkey"="75";"value"="2222"}; +{"key"="376";"subkey"="75";"value"="2229"}; +{"key"="377";"subkey"="75";"value"="2236"}; +{"key"="378";"subkey"="75";"value"="2243"}; +{"key"="379";"subkey"="75";"value"="2250"}; +{"key"="380";"subkey"="76";"value"="2257"}; +{"key"="381";"subkey"="76";"value"="2264"}; +{"key"="382";"subkey"="76";"value"="2271"}; +{"key"="383";"subkey"="76";"value"="2278"}; +{"key"="384";"subkey"="76";"value"="2285"}; +{"key"="385";"subkey"="77";"value"="2291"}; +{"key"="386";"subkey"="77";"value"="2298"}; +{"key"="387";"subkey"="77";"value"="2305"}; +{"key"="388";"subkey"="77";"value"="2312"}; +{"key"="389";"subkey"="77";"value"="2319"}; +{"key"="390";"subkey"="78";"value"="2326"}; +{"key"="391";"subkey"="78";"value"="2333"}; +{"key"="392";"subkey"="78";"value"="2340"}; +{"key"="393";"subkey"="78";"value"="2347"}; +{"key"="394";"subkey"="78";"value"="2354"}; +{"key"="395";"subkey"="79";"value"="2361"}; +{"key"="396";"subkey"="79";"value"="2368"}; +{"key"="397";"subkey"="79";"value"="2375"}; +{"key"="398";"subkey"="79";"value"="2382"}; +{"key"="399";"subkey"="79";"value"="2389"}; +{"key"="400";"subkey"="80";"value"="2396"}; +{"key"="401";"subkey"="80";"value"="2403"}; +{"key"="402";"subkey"="80";"value"="2410"}; +{"key"="403";"subkey"="80";"value"="2417"}; +{"key"="404";"subkey"="80";"value"="2424"}; +{"key"="405";"subkey"="81";"value"="2431"}; +{"key"="406";"subkey"="81";"value"="2438"}; +{"key"="407";"subkey"="81";"value"="2445"}; +{"key"="408";"subkey"="81";"value"="2452"}; +{"key"="409";"subkey"="81";"value"="2459"}; +{"key"="410";"subkey"="82";"value"="2466"}; +{"key"="411";"subkey"="82";"value"="2473"}; +{"key"="412";"subkey"="82";"value"="2480"}; +{"key"="413";"subkey"="82";"value"="2487"}; +{"key"="414";"subkey"="82";"value"="2494"}; +{"key"="415";"subkey"="83";"value"="2501"}; +{"key"="416";"subkey"="83";"value"="2508"}; +{"key"="417";"subkey"="83";"value"="2515"}; +{"key"="418";"subkey"="83";"value"="2522"}; +{"key"="419";"subkey"="83";"value"="2529"}; +{"key"="420";"subkey"="84";"value"="2536"}; +{"key"="421";"subkey"="84";"value"="2543"}; +{"key"="422";"subkey"="84";"value"="2550"}; +{"key"="423";"subkey"="84";"value"="2558"}; +{"key"="424";"subkey"="84";"value"="2565"}; +{"key"="425";"subkey"="85";"value"="2572"}; +{"key"="426";"subkey"="85";"value"="2579"}; +{"key"="427";"subkey"="85";"value"="2586"}; +{"key"="428";"subkey"="85";"value"="2593"}; +{"key"="429";"subkey"="85";"value"="2600"}; +{"key"="430";"subkey"="86";"value"="2607"}; +{"key"="431";"subkey"="86";"value"="2614"}; +{"key"="432";"subkey"="86";"value"="2621"}; +{"key"="433";"subkey"="86";"value"="2628"}; +{"key"="434";"subkey"="86";"value"="2635"}; +{"key"="435";"subkey"="87";"value"="2642"}; +{"key"="436";"subkey"="87";"value"="2649"}; +{"key"="437";"subkey"="87";"value"="2656"}; +{"key"="438";"subkey"="87";"value"="2664"}; +{"key"="439";"subkey"="87";"value"="2671"}; +{"key"="440";"subkey"="88";"value"="2678"}; +{"key"="441";"subkey"="88";"value"="2685"}; +{"key"="442";"subkey"="88";"value"="2692"}; +{"key"="443";"subkey"="88";"value"="2699"}; +{"key"="444";"subkey"="88";"value"="2706"}; +{"key"="445";"subkey"="89";"value"="2713"}; +{"key"="446";"subkey"="89";"value"="2720"}; +{"key"="447";"subkey"="89";"value"="2727"}; +{"key"="448";"subkey"="89";"value"="2734"}; +{"key"="449";"subkey"="89";"value"="2742"}; +{"key"="450";"subkey"="90";"value"="2749"}; +{"key"="451";"subkey"="90";"value"="2756"}; +{"key"="452";"subkey"="90";"value"="2763"}; +{"key"="453";"subkey"="90";"value"="2770"}; +{"key"="454";"subkey"="90";"value"="2777"}; +{"key"="455";"subkey"="91";"value"="2784"}; +{"key"="456";"subkey"="91";"value"="2791"}; +{"key"="457";"subkey"="91";"value"="2798"}; +{"key"="458";"subkey"="91";"value"="2806"}; +{"key"="459";"subkey"="91";"value"="2813"}; +{"key"="460";"subkey"="92";"value"="2820"}; +{"key"="461";"subkey"="92";"value"="2827"}; +{"key"="462";"subkey"="92";"value"="2834"}; +{"key"="463";"subkey"="92";"value"="2841"}; +{"key"="464";"subkey"="92";"value"="2848"}; +{"key"="465";"subkey"="93";"value"="2856"}; +{"key"="466";"subkey"="93";"value"="2863"}; +{"key"="467";"subkey"="93";"value"="2870"}; +{"key"="468";"subkey"="93";"value"="2877"}; +{"key"="469";"subkey"="93";"value"="2884"}; +{"key"="470";"subkey"="94";"value"="2891"}; +{"key"="471";"subkey"="94";"value"="2898"}; +{"key"="472";"subkey"="94";"value"="2906"}; +{"key"="473";"subkey"="94";"value"="2913"}; +{"key"="474";"subkey"="94";"value"="2920"}; +{"key"="475";"subkey"="95";"value"="2927"}; +{"key"="476";"subkey"="95";"value"="2934"}; +{"key"="477";"subkey"="95";"value"="2941"}; +{"key"="478";"subkey"="95";"value"="2949"}; +{"key"="479";"subkey"="95";"value"="2956"}; +{"key"="480";"subkey"="96";"value"="2963"}; +{"key"="481";"subkey"="96";"value"="2970"}; +{"key"="482";"subkey"="96";"value"="2977"}; +{"key"="483";"subkey"="96";"value"="2984"}; +{"key"="484";"subkey"="96";"value"="2992"}; +{"key"="485";"subkey"="97";"value"="2999"}; +{"key"="486";"subkey"="97";"value"="3006"}; +{"key"="487";"subkey"="97";"value"="3013"}; +{"key"="488";"subkey"="97";"value"="3020"}; +{"key"="489";"subkey"="97";"value"="3028"}; +{"key"="490";"subkey"="98";"value"="3035"}; +{"key"="491";"subkey"="98";"value"="3042"}; +{"key"="492";"subkey"="98";"value"="3049"}; +{"key"="493";"subkey"="98";"value"="3056"}; +{"key"="494";"subkey"="98";"value"="3064"}; +{"key"="495";"subkey"="99";"value"="3071"}; +{"key"="496";"subkey"="99";"value"="3078"}; +{"key"="497";"subkey"="99";"value"="3085"}; +{"key"="498";"subkey"="99";"value"="3092"}; +{"key"="499";"subkey"="99";"value"="3100"}; +{"key"="500";"subkey"="100";"value"="3107"}; +{"key"="501";"subkey"="100";"value"="3114"}; +{"key"="502";"subkey"="100";"value"="3121"}; +{"key"="503";"subkey"="100";"value"="3128"}; +{"key"="504";"subkey"="100";"value"="3136"}; +{"key"="505";"subkey"="101";"value"="3143"}; +{"key"="506";"subkey"="101";"value"="3150"}; +{"key"="507";"subkey"="101";"value"="3157"}; +{"key"="508";"subkey"="101";"value"="3165"}; +{"key"="509";"subkey"="101";"value"="3172"}; +{"key"="510";"subkey"="102";"value"="3179"}; +{"key"="511";"subkey"="102";"value"="3186"}; +{"key"="512";"subkey"="102";"value"="3194"}; +{"key"="513";"subkey"="102";"value"="3201"}; +{"key"="514";"subkey"="102";"value"="3208"}; +{"key"="515";"subkey"="103";"value"="3215"}; +{"key"="516";"subkey"="103";"value"="3222"}; +{"key"="517";"subkey"="103";"value"="3230"}; +{"key"="518";"subkey"="103";"value"="3237"}; +{"key"="519";"subkey"="103";"value"="3244"}; +{"key"="520";"subkey"="104";"value"="3251"}; +{"key"="521";"subkey"="104";"value"="3259"}; +{"key"="522";"subkey"="104";"value"="3266"}; +{"key"="523";"subkey"="104";"value"="3273"}; +{"key"="524";"subkey"="104";"value"="3281"}; +{"key"="525";"subkey"="105";"value"="3288"}; +{"key"="526";"subkey"="105";"value"="3295"}; +{"key"="527";"subkey"="105";"value"="3302"}; +{"key"="528";"subkey"="105";"value"="3310"}; +{"key"="529";"subkey"="105";"value"="3317"}; +{"key"="530";"subkey"="106";"value"="3324"}; +{"key"="531";"subkey"="106";"value"="3331"}; +{"key"="532";"subkey"="106";"value"="3339"}; +{"key"="533";"subkey"="106";"value"="3346"}; +{"key"="534";"subkey"="106";"value"="3353"}; +{"key"="535";"subkey"="107";"value"="3361"}; +{"key"="536";"subkey"="107";"value"="3368"}; +{"key"="537";"subkey"="107";"value"="3375"}; +{"key"="538";"subkey"="107";"value"="3382"}; +{"key"="539";"subkey"="107";"value"="3390"}; +{"key"="540";"subkey"="108";"value"="3397"}; +{"key"="541";"subkey"="108";"value"="3404"}; +{"key"="542";"subkey"="108";"value"="3412"}; +{"key"="543";"subkey"="108";"value"="3419"}; +{"key"="544";"subkey"="108";"value"="3426"}; +{"key"="545";"subkey"="109";"value"="3433"}; +{"key"="546";"subkey"="109";"value"="3441"}; +{"key"="547";"subkey"="109";"value"="3448"}; +{"key"="548";"subkey"="109";"value"="3455"}; +{"key"="549";"subkey"="109";"value"="3463"}; +{"key"="550";"subkey"="110";"value"="3470"}; +{"key"="551";"subkey"="110";"value"="3477"}; +{"key"="552";"subkey"="110";"value"="3485"}; +{"key"="553";"subkey"="110";"value"="3492"}; +{"key"="554";"subkey"="110";"value"="3499"}; +{"key"="555";"subkey"="111";"value"="3507"}; +{"key"="556";"subkey"="111";"value"="3514"}; +{"key"="557";"subkey"="111";"value"="3521"}; +{"key"="558";"subkey"="111";"value"="3528"}; +{"key"="559";"subkey"="111";"value"="3536"}; +{"key"="560";"subkey"="112";"value"="3543"}; +{"key"="561";"subkey"="112";"value"="3550"}; +{"key"="562";"subkey"="112";"value"="3558"}; +{"key"="563";"subkey"="112";"value"="3565"}; +{"key"="564";"subkey"="112";"value"="3572"}; +{"key"="565";"subkey"="113";"value"="3580"}; +{"key"="566";"subkey"="113";"value"="3587"}; +{"key"="567";"subkey"="113";"value"="3594"}; +{"key"="568";"subkey"="113";"value"="3602"}; +{"key"="569";"subkey"="113";"value"="3609"}; +{"key"="570";"subkey"="114";"value"="3617"}; +{"key"="571";"subkey"="114";"value"="3624"}; +{"key"="572";"subkey"="114";"value"="3631"}; +{"key"="573";"subkey"="114";"value"="3639"}; +{"key"="574";"subkey"="114";"value"="3646"}; +{"key"="575";"subkey"="115";"value"="3653"}; +{"key"="576";"subkey"="115";"value"="3661"}; +{"key"="577";"subkey"="115";"value"="3668"}; +{"key"="578";"subkey"="115";"value"="3675"}; +{"key"="579";"subkey"="115";"value"="3683"}; +{"key"="580";"subkey"="116";"value"="3690"}; +{"key"="581";"subkey"="116";"value"="3697"}; +{"key"="582";"subkey"="116";"value"="3705"}; +{"key"="583";"subkey"="116";"value"="3712"}; +{"key"="584";"subkey"="116";"value"="3720"}; +{"key"="585";"subkey"="117";"value"="3727"}; +{"key"="586";"subkey"="117";"value"="3734"}; +{"key"="587";"subkey"="117";"value"="3742"}; +{"key"="588";"subkey"="117";"value"="3749"}; +{"key"="589";"subkey"="117";"value"="3756"}; +{"key"="590";"subkey"="118";"value"="3764"}; +{"key"="591";"subkey"="118";"value"="3771"}; +{"key"="592";"subkey"="118";"value"="3779"}; +{"key"="593";"subkey"="118";"value"="3786"}; +{"key"="594";"subkey"="118";"value"="3793"}; +{"key"="595";"subkey"="119";"value"="3801"}; +{"key"="596";"subkey"="119";"value"="3808"}; +{"key"="597";"subkey"="119";"value"="3815"}; +{"key"="598";"subkey"="119";"value"="3823"}; +{"key"="599";"subkey"="119";"value"="3830"}; +{"key"="600";"subkey"="120";"value"="3838"}; +{"key"="601";"subkey"="120";"value"="3845"}; +{"key"="602";"subkey"="120";"value"="3852"}; +{"key"="603";"subkey"="120";"value"="3860"}; +{"key"="604";"subkey"="120";"value"="3867"}; +{"key"="605";"subkey"="121";"value"="3875"}; +{"key"="606";"subkey"="121";"value"="3882"}; +{"key"="607";"subkey"="121";"value"="3889"}; +{"key"="608";"subkey"="121";"value"="3897"}; +{"key"="609";"subkey"="121";"value"="3904"}; +{"key"="610";"subkey"="122";"value"="3912"}; +{"key"="611";"subkey"="122";"value"="3919"}; +{"key"="612";"subkey"="122";"value"="3927"}; +{"key"="613";"subkey"="122";"value"="3934"}; +{"key"="614";"subkey"="122";"value"="3941"}; +{"key"="615";"subkey"="123";"value"="3949"}; +{"key"="616";"subkey"="123";"value"="3956"}; +{"key"="617";"subkey"="123";"value"="3964"}; +{"key"="618";"subkey"="123";"value"="3971"}; +{"key"="619";"subkey"="123";"value"="3978"}; +{"key"="620";"subkey"="124";"value"="3986"}; +{"key"="621";"subkey"="124";"value"="3993"}; +{"key"="622";"subkey"="124";"value"="4001"}; +{"key"="623";"subkey"="124";"value"="4008"}; +{"key"="624";"subkey"="124";"value"="4016"}; +{"key"="625";"subkey"="125";"value"="4023"}; +{"key"="626";"subkey"="125";"value"="4031"}; +{"key"="627";"subkey"="125";"value"="4038"}; +{"key"="628";"subkey"="125";"value"="4045"}; +{"key"="629";"subkey"="125";"value"="4053"}; +{"key"="630";"subkey"="126";"value"="4060"}; +{"key"="631";"subkey"="126";"value"="4068"}; +{"key"="632";"subkey"="126";"value"="4075"}; +{"key"="633";"subkey"="126";"value"="4083"}; +{"key"="634";"subkey"="126";"value"="4090"}; +{"key"="635";"subkey"="127";"value"="4098"}; +{"key"="636";"subkey"="127";"value"="4105"}; +{"key"="637";"subkey"="127";"value"="4112"}; +{"key"="638";"subkey"="127";"value"="4120"}; +{"key"="639";"subkey"="127";"value"="4127"}; +{"key"="640";"subkey"="128";"value"="4135"}; +{"key"="641";"subkey"="128";"value"="4142"}; +{"key"="642";"subkey"="128";"value"="4150"}; +{"key"="643";"subkey"="128";"value"="4157"}; +{"key"="644";"subkey"="128";"value"="4165"}; +{"key"="645";"subkey"="129";"value"="4172"}; +{"key"="646";"subkey"="129";"value"="4180"}; +{"key"="647";"subkey"="129";"value"="4187"}; +{"key"="648";"subkey"="129";"value"="4195"}; +{"key"="649";"subkey"="129";"value"="4202"}; +{"key"="650";"subkey"="130";"value"="4210"}; +{"key"="651";"subkey"="130";"value"="4217"}; +{"key"="652";"subkey"="130";"value"="4224"}; +{"key"="653";"subkey"="130";"value"="4232"}; +{"key"="654";"subkey"="130";"value"="4239"}; +{"key"="655";"subkey"="131";"value"="4247"}; +{"key"="656";"subkey"="131";"value"="4254"}; +{"key"="657";"subkey"="131";"value"="4262"}; +{"key"="658";"subkey"="131";"value"="4269"}; +{"key"="659";"subkey"="131";"value"="4277"}; +{"key"="660";"subkey"="132";"value"="4284"}; +{"key"="661";"subkey"="132";"value"="4292"}; +{"key"="662";"subkey"="132";"value"="4299"}; +{"key"="663";"subkey"="132";"value"="4307"}; +{"key"="664";"subkey"="132";"value"="4314"}; +{"key"="665";"subkey"="133";"value"="4322"}; +{"key"="666";"subkey"="133";"value"="4329"}; +{"key"="667";"subkey"="133";"value"="4337"}; +{"key"="668";"subkey"="133";"value"="4344"}; +{"key"="669";"subkey"="133";"value"="4352"}; +{"key"="670";"subkey"="134";"value"="4359"}; +{"key"="671";"subkey"="134";"value"="4367"}; +{"key"="672";"subkey"="134";"value"="4374"}; +{"key"="673";"subkey"="134";"value"="4382"}; +{"key"="674";"subkey"="134";"value"="4389"}; +{"key"="675";"subkey"="135";"value"="4397"}; +{"key"="676";"subkey"="135";"value"="4404"}; +{"key"="677";"subkey"="135";"value"="4412"}; +{"key"="678";"subkey"="135";"value"="4419"}; +{"key"="679";"subkey"="135";"value"="4427"}; +{"key"="680";"subkey"="136";"value"="4435"}; +{"key"="681";"subkey"="136";"value"="4442"}; +{"key"="682";"subkey"="136";"value"="4450"}; +{"key"="683";"subkey"="136";"value"="4457"}; +{"key"="684";"subkey"="136";"value"="4465"}; +{"key"="685";"subkey"="137";"value"="4472"}; +{"key"="686";"subkey"="137";"value"="4480"}; +{"key"="687";"subkey"="137";"value"="4487"}; +{"key"="688";"subkey"="137";"value"="4495"}; +{"key"="689";"subkey"="137";"value"="4502"}; +{"key"="690";"subkey"="138";"value"="4510"}; +{"key"="691";"subkey"="138";"value"="4517"}; +{"key"="692";"subkey"="138";"value"="4525"}; +{"key"="693";"subkey"="138";"value"="4532"}; +{"key"="694";"subkey"="138";"value"="4540"}; +{"key"="695";"subkey"="139";"value"="4548"}; +{"key"="696";"subkey"="139";"value"="4555"}; +{"key"="697";"subkey"="139";"value"="4563"}; +{"key"="698";"subkey"="139";"value"="4570"}; +{"key"="699";"subkey"="139";"value"="4578"}; +{"key"="700";"subkey"="140";"value"="4585"}; +{"key"="701";"subkey"="140";"value"="4593"}; +{"key"="702";"subkey"="140";"value"="4600"}; +{"key"="703";"subkey"="140";"value"="4608"}; +{"key"="704";"subkey"="140";"value"="4615"}; +{"key"="705";"subkey"="141";"value"="4623"}; +{"key"="706";"subkey"="141";"value"="4631"}; +{"key"="707";"subkey"="141";"value"="4638"}; +{"key"="708";"subkey"="141";"value"="4646"}; +{"key"="709";"subkey"="141";"value"="4653"}; +{"key"="710";"subkey"="142";"value"="4661"}; +{"key"="711";"subkey"="142";"value"="4668"}; +{"key"="712";"subkey"="142";"value"="4676"}; +{"key"="713";"subkey"="142";"value"="4684"}; +{"key"="714";"subkey"="142";"value"="4691"}; +{"key"="715";"subkey"="143";"value"="4699"}; +{"key"="716";"subkey"="143";"value"="4706"}; +{"key"="717";"subkey"="143";"value"="4714"}; +{"key"="718";"subkey"="143";"value"="4721"}; +{"key"="719";"subkey"="143";"value"="4729"}; +{"key"="720";"subkey"="144";"value"="4737"}; +{"key"="721";"subkey"="144";"value"="4744"}; +{"key"="722";"subkey"="144";"value"="4752"}; +{"key"="723";"subkey"="144";"value"="4759"}; +{"key"="724";"subkey"="144";"value"="4767"}; +{"key"="725";"subkey"="145";"value"="4774"}; +{"key"="726";"subkey"="145";"value"="4782"}; +{"key"="727";"subkey"="145";"value"="4790"}; +{"key"="728";"subkey"="145";"value"="4797"}; +{"key"="729";"subkey"="145";"value"="4805"}; +{"key"="730";"subkey"="146";"value"="4812"}; +{"key"="731";"subkey"="146";"value"="4820"}; +{"key"="732";"subkey"="146";"value"="4828"}; +{"key"="733";"subkey"="146";"value"="4835"}; +{"key"="734";"subkey"="146";"value"="4843"}; +{"key"="735";"subkey"="147";"value"="4850"}; +{"key"="736";"subkey"="147";"value"="4858"}; +{"key"="737";"subkey"="147";"value"="4866"}; +{"key"="738";"subkey"="147";"value"="4873"}; +{"key"="739";"subkey"="147";"value"="4881"}; +{"key"="740";"subkey"="148";"value"="4888"}; +{"key"="741";"subkey"="148";"value"="4896"}; +{"key"="742";"subkey"="148";"value"="4904"}; +{"key"="743";"subkey"="148";"value"="4911"}; +{"key"="744";"subkey"="148";"value"="4919"}; +{"key"="745";"subkey"="149";"value"="4926"}; +{"key"="746";"subkey"="149";"value"="4934"}; +{"key"="747";"subkey"="149";"value"="4942"}; +{"key"="748";"subkey"="149";"value"="4949"}; +{"key"="749";"subkey"="149";"value"="4957"}; +{"key"="750";"subkey"="150";"value"="4965"}; +{"key"="751";"subkey"="150";"value"="4972"}; +{"key"="752";"subkey"="150";"value"="4980"}; +{"key"="753";"subkey"="150";"value"="4987"}; +{"key"="754";"subkey"="150";"value"="4995"}; +{"key"="755";"subkey"="151";"value"="5003"}; +{"key"="756";"subkey"="151";"value"="5010"}; +{"key"="757";"subkey"="151";"value"="5018"}; +{"key"="758";"subkey"="151";"value"="5026"}; +{"key"="759";"subkey"="151";"value"="5033"}; +{"key"="760";"subkey"="152";"value"="5041"}; +{"key"="761";"subkey"="152";"value"="5048"}; +{"key"="762";"subkey"="152";"value"="5056"}; +{"key"="763";"subkey"="152";"value"="5064"}; +{"key"="764";"subkey"="152";"value"="5071"}; +{"key"="765";"subkey"="153";"value"="5079"}; +{"key"="766";"subkey"="153";"value"="5087"}; +{"key"="767";"subkey"="153";"value"="5094"}; +{"key"="768";"subkey"="153";"value"="5102"}; +{"key"="769";"subkey"="153";"value"="5110"}; +{"key"="770";"subkey"="154";"value"="5117"}; +{"key"="771";"subkey"="154";"value"="5125"}; +{"key"="772";"subkey"="154";"value"="5133"}; +{"key"="773";"subkey"="154";"value"="5140"}; +{"key"="774";"subkey"="154";"value"="5148"}; +{"key"="775";"subkey"="155";"value"="5155"}; +{"key"="776";"subkey"="155";"value"="5163"}; +{"key"="777";"subkey"="155";"value"="5171"}; +{"key"="778";"subkey"="155";"value"="5178"}; +{"key"="779";"subkey"="155";"value"="5186"}; +{"key"="780";"subkey"="156";"value"="5194"}; +{"key"="781";"subkey"="156";"value"="5201"}; +{"key"="782";"subkey"="156";"value"="5209"}; +{"key"="783";"subkey"="156";"value"="5217"}; +{"key"="784";"subkey"="156";"value"="5224"}; +{"key"="785";"subkey"="157";"value"="5232"}; +{"key"="786";"subkey"="157";"value"="5240"}; +{"key"="787";"subkey"="157";"value"="5247"}; +{"key"="788";"subkey"="157";"value"="5255"}; +{"key"="789";"subkey"="157";"value"="5263"}; +{"key"="790";"subkey"="158";"value"="5270"}; +{"key"="791";"subkey"="158";"value"="5278"}; +{"key"="792";"subkey"="158";"value"="5286"}; +{"key"="793";"subkey"="158";"value"="5293"}; +{"key"="794";"subkey"="158";"value"="5301"}; +{"key"="795";"subkey"="159";"value"="5309"}; +{"key"="796";"subkey"="159";"value"="5316"}; +{"key"="797";"subkey"="159";"value"="5324"}; +{"key"="798";"subkey"="159";"value"="5332"}; +{"key"="799";"subkey"="159";"value"="5340"}; +{"key"="800";"subkey"="160";"value"="5347"}; +{"key"="801";"subkey"="160";"value"="5355"}; +{"key"="802";"subkey"="160";"value"="5363"}; +{"key"="803";"subkey"="160";"value"="5370"}; +{"key"="804";"subkey"="160";"value"="5378"}; +{"key"="805";"subkey"="161";"value"="5386"}; +{"key"="806";"subkey"="161";"value"="5393"}; +{"key"="807";"subkey"="161";"value"="5401"}; +{"key"="808";"subkey"="161";"value"="5409"}; +{"key"="809";"subkey"="161";"value"="5416"}; +{"key"="810";"subkey"="162";"value"="5424"}; +{"key"="811";"subkey"="162";"value"="5432"}; +{"key"="812";"subkey"="162";"value"="5439"}; +{"key"="813";"subkey"="162";"value"="5447"}; +{"key"="814";"subkey"="162";"value"="5455"}; +{"key"="815";"subkey"="163";"value"="5463"}; +{"key"="816";"subkey"="163";"value"="5470"}; +{"key"="817";"subkey"="163";"value"="5478"}; +{"key"="818";"subkey"="163";"value"="5486"}; +{"key"="819";"subkey"="163";"value"="5493"}; +{"key"="820";"subkey"="164";"value"="5501"}; +{"key"="821";"subkey"="164";"value"="5509"}; +{"key"="822";"subkey"="164";"value"="5517"}; +{"key"="823";"subkey"="164";"value"="5524"}; +{"key"="824";"subkey"="164";"value"="5532"}; +{"key"="825";"subkey"="165";"value"="5540"}; +{"key"="826";"subkey"="165";"value"="5547"}; +{"key"="827";"subkey"="165";"value"="5555"}; +{"key"="828";"subkey"="165";"value"="5563"}; +{"key"="829";"subkey"="165";"value"="5571"}; +{"key"="830";"subkey"="166";"value"="5578"}; +{"key"="831";"subkey"="166";"value"="5586"}; +{"key"="832";"subkey"="166";"value"="5594"}; +{"key"="833";"subkey"="166";"value"="5601"}; +{"key"="834";"subkey"="166";"value"="5609"}; +{"key"="835";"subkey"="167";"value"="5617"}; +{"key"="836";"subkey"="167";"value"="5625"}; +{"key"="837";"subkey"="167";"value"="5632"}; +{"key"="838";"subkey"="167";"value"="5640"}; +{"key"="839";"subkey"="167";"value"="5648"}; +{"key"="840";"subkey"="168";"value"="5656"}; +{"key"="841";"subkey"="168";"value"="5663"}; +{"key"="842";"subkey"="168";"value"="5671"}; +{"key"="843";"subkey"="168";"value"="5679"}; +{"key"="844";"subkey"="168";"value"="5687"}; +{"key"="845";"subkey"="169";"value"="5694"}; +{"key"="846";"subkey"="169";"value"="5702"}; +{"key"="847";"subkey"="169";"value"="5710"}; +{"key"="848";"subkey"="169";"value"="5717"}; +{"key"="849";"subkey"="169";"value"="5725"}; +{"key"="850";"subkey"="170";"value"="5733"}; +{"key"="851";"subkey"="170";"value"="5741"}; +{"key"="852";"subkey"="170";"value"="5748"}; +{"key"="853";"subkey"="170";"value"="5756"}; +{"key"="854";"subkey"="170";"value"="5764"}; +{"key"="855";"subkey"="171";"value"="5772"}; +{"key"="856";"subkey"="171";"value"="5779"}; +{"key"="857";"subkey"="171";"value"="5787"}; +{"key"="858";"subkey"="171";"value"="5795"}; +{"key"="859";"subkey"="171";"value"="5803"}; +{"key"="860";"subkey"="172";"value"="5810"}; +{"key"="861";"subkey"="172";"value"="5818"}; +{"key"="862";"subkey"="172";"value"="5826"}; +{"key"="863";"subkey"="172";"value"="5834"}; +{"key"="864";"subkey"="172";"value"="5841"}; +{"key"="865";"subkey"="173";"value"="5849"}; +{"key"="866";"subkey"="173";"value"="5857"}; +{"key"="867";"subkey"="173";"value"="5865"}; +{"key"="868";"subkey"="173";"value"="5873"}; +{"key"="869";"subkey"="173";"value"="5880"}; +{"key"="870";"subkey"="174";"value"="5888"}; +{"key"="871";"subkey"="174";"value"="5896"}; +{"key"="872";"subkey"="174";"value"="5904"}; +{"key"="873";"subkey"="174";"value"="5911"}; +{"key"="874";"subkey"="174";"value"="5919"}; +{"key"="875";"subkey"="175";"value"="5927"}; +{"key"="876";"subkey"="175";"value"="5935"}; +{"key"="877";"subkey"="175";"value"="5942"}; +{"key"="878";"subkey"="175";"value"="5950"}; +{"key"="879";"subkey"="175";"value"="5958"}; +{"key"="880";"subkey"="176";"value"="5966"}; +{"key"="881";"subkey"="176";"value"="5974"}; +{"key"="882";"subkey"="176";"value"="5981"}; +{"key"="883";"subkey"="176";"value"="5989"}; +{"key"="884";"subkey"="176";"value"="5997"}; +{"key"="885";"subkey"="177";"value"="6005"}; +{"key"="886";"subkey"="177";"value"="6013"}; +{"key"="887";"subkey"="177";"value"="6020"}; +{"key"="888";"subkey"="177";"value"="6028"}; +{"key"="889";"subkey"="177";"value"="6036"}; +{"key"="890";"subkey"="178";"value"="6044"}; +{"key"="891";"subkey"="178";"value"="6051"}; +{"key"="892";"subkey"="178";"value"="6059"}; +{"key"="893";"subkey"="178";"value"="6067"}; +{"key"="894";"subkey"="178";"value"="6075"}; +{"key"="895";"subkey"="179";"value"="6083"}; +{"key"="896";"subkey"="179";"value"="6090"}; +{"key"="897";"subkey"="179";"value"="6098"}; +{"key"="898";"subkey"="179";"value"="6106"}; +{"key"="899";"subkey"="179";"value"="6114"}; +{"key"="900";"subkey"="180";"value"="6122"}; +{"key"="901";"subkey"="180";"value"="6129"}; +{"key"="902";"subkey"="180";"value"="6137"}; +{"key"="903";"subkey"="180";"value"="6145"}; +{"key"="904";"subkey"="180";"value"="6153"}; +{"key"="905";"subkey"="181";"value"="6161"}; +{"key"="906";"subkey"="181";"value"="6168"}; +{"key"="907";"subkey"="181";"value"="6176"}; +{"key"="908";"subkey"="181";"value"="6184"}; +{"key"="909";"subkey"="181";"value"="6192"}; +{"key"="910";"subkey"="182";"value"="6200"}; +{"key"="911";"subkey"="182";"value"="6208"}; +{"key"="912";"subkey"="182";"value"="6215"}; +{"key"="913";"subkey"="182";"value"="6223"}; +{"key"="914";"subkey"="182";"value"="6231"}; +{"key"="915";"subkey"="183";"value"="6239"}; +{"key"="916";"subkey"="183";"value"="6247"}; +{"key"="917";"subkey"="183";"value"="6254"}; +{"key"="918";"subkey"="183";"value"="6262"}; +{"key"="919";"subkey"="183";"value"="6270"}; +{"key"="920";"subkey"="184";"value"="6278"}; +{"key"="921";"subkey"="184";"value"="6286"}; +{"key"="922";"subkey"="184";"value"="6294"}; +{"key"="923";"subkey"="184";"value"="6301"}; +{"key"="924";"subkey"="184";"value"="6309"}; +{"key"="925";"subkey"="185";"value"="6317"}; +{"key"="926";"subkey"="185";"value"="6325"}; +{"key"="927";"subkey"="185";"value"="6333"}; +{"key"="928";"subkey"="185";"value"="6341"}; +{"key"="929";"subkey"="185";"value"="6348"}; +{"key"="930";"subkey"="186";"value"="6356"}; +{"key"="931";"subkey"="186";"value"="6364"}; +{"key"="932";"subkey"="186";"value"="6372"}; +{"key"="933";"subkey"="186";"value"="6380"}; +{"key"="934";"subkey"="186";"value"="6388"}; +{"key"="935";"subkey"="187";"value"="6395"}; +{"key"="936";"subkey"="187";"value"="6403"}; +{"key"="937";"subkey"="187";"value"="6411"}; +{"key"="938";"subkey"="187";"value"="6419"}; +{"key"="939";"subkey"="187";"value"="6427"}; +{"key"="940";"subkey"="188";"value"="6435"}; +{"key"="941";"subkey"="188";"value"="6442"}; +{"key"="942";"subkey"="188";"value"="6450"}; +{"key"="943";"subkey"="188";"value"="6458"}; +{"key"="944";"subkey"="188";"value"="6466"}; +{"key"="945";"subkey"="189";"value"="6474"}; +{"key"="946";"subkey"="189";"value"="6482"}; +{"key"="947";"subkey"="189";"value"="6490"}; +{"key"="948";"subkey"="189";"value"="6497"}; +{"key"="949";"subkey"="189";"value"="6505"}; +{"key"="950";"subkey"="190";"value"="6513"}; +{"key"="951";"subkey"="190";"value"="6521"}; +{"key"="952";"subkey"="190";"value"="6529"}; +{"key"="953";"subkey"="190";"value"="6537"}; +{"key"="954";"subkey"="190";"value"="6545"}; +{"key"="955";"subkey"="191";"value"="6552"}; +{"key"="956";"subkey"="191";"value"="6560"}; +{"key"="957";"subkey"="191";"value"="6568"}; +{"key"="958";"subkey"="191";"value"="6576"}; +{"key"="959";"subkey"="191";"value"="6584"}; +{"key"="960";"subkey"="192";"value"="6592"}; +{"key"="961";"subkey"="192";"value"="6600"}; +{"key"="962";"subkey"="192";"value"="6607"}; +{"key"="963";"subkey"="192";"value"="6615"}; +{"key"="964";"subkey"="192";"value"="6623"}; +{"key"="965";"subkey"="193";"value"="6631"}; +{"key"="966";"subkey"="193";"value"="6639"}; +{"key"="967";"subkey"="193";"value"="6647"}; +{"key"="968";"subkey"="193";"value"="6655"}; +{"key"="969";"subkey"="193";"value"="6663"}; +{"key"="970";"subkey"="194";"value"="6670"}; +{"key"="971";"subkey"="194";"value"="6678"}; +{"key"="972";"subkey"="194";"value"="6686"}; +{"key"="973";"subkey"="194";"value"="6694"}; +{"key"="974";"subkey"="194";"value"="6702"}; +{"key"="975";"subkey"="195";"value"="6710"}; +{"key"="976";"subkey"="195";"value"="6718"}; +{"key"="977";"subkey"="195";"value"="6726"}; +{"key"="978";"subkey"="195";"value"="6734"}; +{"key"="979";"subkey"="195";"value"="6741"}; +{"key"="980";"subkey"="196";"value"="6749"}; +{"key"="981";"subkey"="196";"value"="6757"}; +{"key"="982";"subkey"="196";"value"="6765"}; +{"key"="983";"subkey"="196";"value"="6773"}; +{"key"="984";"subkey"="196";"value"="6781"}; +{"key"="985";"subkey"="197";"value"="6789"}; +{"key"="986";"subkey"="197";"value"="6797"}; +{"key"="987";"subkey"="197";"value"="6805"}; +{"key"="988";"subkey"="197";"value"="6812"}; +{"key"="989";"subkey"="197";"value"="6820"}; +{"key"="990";"subkey"="198";"value"="6828"}; +{"key"="991";"subkey"="198";"value"="6836"}; +{"key"="992";"subkey"="198";"value"="6844"}; +{"key"="993";"subkey"="198";"value"="6852"}; +{"key"="994";"subkey"="198";"value"="6860"}; +{"key"="995";"subkey"="199";"value"="6868"}; +{"key"="996";"subkey"="199";"value"="6876"}; +{"key"="997";"subkey"="199";"value"="6884"}; +{"key"="998";"subkey"="199";"value"="6891"}; +{"key"="999";"subkey"="199";"value"="6899"}; +{"key"="1000";"subkey"="200";"value"="6907"}; +{"key"="1001";"subkey"="200";"value"="6915"}; +{"key"="1002";"subkey"="200";"value"="6923"}; +{"key"="1003";"subkey"="200";"value"="6931"}; +{"key"="1004";"subkey"="200";"value"="6939"}; +{"key"="1005";"subkey"="201";"value"="6947"}; +{"key"="1006";"subkey"="201";"value"="6955"}; +{"key"="1007";"subkey"="201";"value"="6963"}; +{"key"="1008";"subkey"="201";"value"="6971"}; +{"key"="1009";"subkey"="201";"value"="6978"}; +{"key"="1010";"subkey"="202";"value"="6986"}; +{"key"="1011";"subkey"="202";"value"="6994"}; +{"key"="1012";"subkey"="202";"value"="7002"}; +{"key"="1013";"subkey"="202";"value"="7010"}; +{"key"="1014";"subkey"="202";"value"="7018"}; +{"key"="1015";"subkey"="203";"value"="7026"}; +{"key"="1016";"subkey"="203";"value"="7034"}; +{"key"="1017";"subkey"="203";"value"="7042"}; +{"key"="1018";"subkey"="203";"value"="7050"}; +{"key"="1019";"subkey"="203";"value"="7058"}; +{"key"="1020";"subkey"="204";"value"="7066"}; +{"key"="1021";"subkey"="204";"value"="7074"}; +{"key"="1022";"subkey"="204";"value"="7081"}; +{"key"="1023";"subkey"="204";"value"="7089"}; +{"key"="1024";"subkey"="204";"value"="7097"}; +{"key"="1025";"subkey"="205";"value"="7105"}; +{"key"="1026";"subkey"="205";"value"="7113"}; +{"key"="1027";"subkey"="205";"value"="7121"}; +{"key"="1028";"subkey"="205";"value"="7129"}; +{"key"="1029";"subkey"="205";"value"="7137"}; +{"key"="1030";"subkey"="206";"value"="7145"}; +{"key"="1031";"subkey"="206";"value"="7153"}; +{"key"="1032";"subkey"="206";"value"="7161"}; +{"key"="1033";"subkey"="206";"value"="7169"}; +{"key"="1034";"subkey"="206";"value"="7177"}; +{"key"="1035";"subkey"="207";"value"="7185"}; +{"key"="1036";"subkey"="207";"value"="7193"}; +{"key"="1037";"subkey"="207";"value"="7201"}; +{"key"="1038";"subkey"="207";"value"="7208"}; +{"key"="1039";"subkey"="207";"value"="7216"}; +{"key"="1040";"subkey"="208";"value"="7224"}; +{"key"="1041";"subkey"="208";"value"="7232"}; +{"key"="1042";"subkey"="208";"value"="7240"}; +{"key"="1043";"subkey"="208";"value"="7248"}; +{"key"="1044";"subkey"="208";"value"="7256"}; +{"key"="1045";"subkey"="209";"value"="7264"}; +{"key"="1046";"subkey"="209";"value"="7272"}; +{"key"="1047";"subkey"="209";"value"="7280"}; +{"key"="1048";"subkey"="209";"value"="7288"}; +{"key"="1049";"subkey"="209";"value"="7296"}; +{"key"="1050";"subkey"="210";"value"="7304"}; +{"key"="1051";"subkey"="210";"value"="7312"}; +{"key"="1052";"subkey"="210";"value"="7320"}; +{"key"="1053";"subkey"="210";"value"="7328"}; +{"key"="1054";"subkey"="210";"value"="7336"}; +{"key"="1055";"subkey"="211";"value"="7344"}; +{"key"="1056";"subkey"="211";"value"="7352"}; +{"key"="1057";"subkey"="211";"value"="7360"}; +{"key"="1058";"subkey"="211";"value"="7368"}; +{"key"="1059";"subkey"="211";"value"="7376"}; +{"key"="1060";"subkey"="212";"value"="7383"}; +{"key"="1061";"subkey"="212";"value"="7391"}; +{"key"="1062";"subkey"="212";"value"="7399"}; +{"key"="1063";"subkey"="212";"value"="7407"}; +{"key"="1064";"subkey"="212";"value"="7415"}; +{"key"="1065";"subkey"="213";"value"="7423"}; +{"key"="1066";"subkey"="213";"value"="7431"}; +{"key"="1067";"subkey"="213";"value"="7439"}; +{"key"="1068";"subkey"="213";"value"="7447"}; +{"key"="1069";"subkey"="213";"value"="7455"}; +{"key"="1070";"subkey"="214";"value"="7463"}; +{"key"="1071";"subkey"="214";"value"="7471"}; +{"key"="1072";"subkey"="214";"value"="7479"}; +{"key"="1073";"subkey"="214";"value"="7487"}; +{"key"="1074";"subkey"="214";"value"="7495"}; +{"key"="1075";"subkey"="215";"value"="7503"}; +{"key"="1076";"subkey"="215";"value"="7511"}; +{"key"="1077";"subkey"="215";"value"="7519"}; +{"key"="1078";"subkey"="215";"value"="7527"}; +{"key"="1079";"subkey"="215";"value"="7535"}; +{"key"="1080";"subkey"="216";"value"="7543"}; +{"key"="1081";"subkey"="216";"value"="7551"}; +{"key"="1082";"subkey"="216";"value"="7559"}; +{"key"="1083";"subkey"="216";"value"="7567"}; +{"key"="1084";"subkey"="216";"value"="7575"}; +{"key"="1085";"subkey"="217";"value"="7583"}; +{"key"="1086";"subkey"="217";"value"="7591"}; +{"key"="1087";"subkey"="217";"value"="7599"}; +{"key"="1088";"subkey"="217";"value"="7607"}; +{"key"="1089";"subkey"="217";"value"="7615"}; +{"key"="1090";"subkey"="218";"value"="7623"}; +{"key"="1091";"subkey"="218";"value"="7631"}; +{"key"="1092";"subkey"="218";"value"="7639"}; +{"key"="1093";"subkey"="218";"value"="7647"}; +{"key"="1094";"subkey"="218";"value"="7655"}; +{"key"="1095";"subkey"="219";"value"="7663"}; +{"key"="1096";"subkey"="219";"value"="7671"}; +{"key"="1097";"subkey"="219";"value"="7679"}; +{"key"="1098";"subkey"="219";"value"="7687"}; +{"key"="1099";"subkey"="219";"value"="7695"}; +{"key"="1100";"subkey"="220";"value"="7703"}; +{"key"="1101";"subkey"="220";"value"="7711"}; +{"key"="1102";"subkey"="220";"value"="7719"}; +{"key"="1103";"subkey"="220";"value"="7727"}; +{"key"="1104";"subkey"="220";"value"="7735"}; +{"key"="1105";"subkey"="221";"value"="7743"}; +{"key"="1106";"subkey"="221";"value"="7751"}; +{"key"="1107";"subkey"="221";"value"="7759"}; +{"key"="1108";"subkey"="221";"value"="7767"}; +{"key"="1109";"subkey"="221";"value"="7775"}; +{"key"="1110";"subkey"="222";"value"="7783"}; +{"key"="1111";"subkey"="222";"value"="7791"}; +{"key"="1112";"subkey"="222";"value"="7799"}; +{"key"="1113";"subkey"="222";"value"="7807"}; +{"key"="1114";"subkey"="222";"value"="7815"}; +{"key"="1115";"subkey"="223";"value"="7823"}; +{"key"="1116";"subkey"="223";"value"="7831"}; +{"key"="1117";"subkey"="223";"value"="7839"}; +{"key"="1118";"subkey"="223";"value"="7847"}; +{"key"="1119";"subkey"="223";"value"="7855"}; +{"key"="1120";"subkey"="224";"value"="7863"}; +{"key"="1121";"subkey"="224";"value"="7871"}; +{"key"="1122";"subkey"="224";"value"="7879"}; +{"key"="1123";"subkey"="224";"value"="7887"}; +{"key"="1124";"subkey"="224";"value"="7895"}; +{"key"="1125";"subkey"="225";"value"="7903"}; +{"key"="1126";"subkey"="225";"value"="7911"}; +{"key"="1127";"subkey"="225";"value"="7919"}; +{"key"="1128";"subkey"="225";"value"="7927"}; +{"key"="1129";"subkey"="225";"value"="7935"}; +{"key"="1130";"subkey"="226";"value"="7943"}; +{"key"="1131";"subkey"="226";"value"="7951"}; +{"key"="1132";"subkey"="226";"value"="7959"}; +{"key"="1133";"subkey"="226";"value"="7967"}; +{"key"="1134";"subkey"="226";"value"="7975"}; +{"key"="1135";"subkey"="227";"value"="7984"}; +{"key"="1136";"subkey"="227";"value"="7992"}; +{"key"="1137";"subkey"="227";"value"="8000"}; +{"key"="1138";"subkey"="227";"value"="8008"}; +{"key"="1139";"subkey"="227";"value"="8016"}; +{"key"="1140";"subkey"="228";"value"="8024"}; +{"key"="1141";"subkey"="228";"value"="8032"}; +{"key"="1142";"subkey"="228";"value"="8040"}; +{"key"="1143";"subkey"="228";"value"="8048"}; +{"key"="1144";"subkey"="228";"value"="8056"}; +{"key"="1145";"subkey"="229";"value"="8064"}; +{"key"="1146";"subkey"="229";"value"="8072"}; +{"key"="1147";"subkey"="229";"value"="8080"}; +{"key"="1148";"subkey"="229";"value"="8088"}; +{"key"="1149";"subkey"="229";"value"="8096"}; +{"key"="1150";"subkey"="230";"value"="8104"}; +{"key"="1151";"subkey"="230";"value"="8112"}; +{"key"="1152";"subkey"="230";"value"="8120"}; +{"key"="1153";"subkey"="230";"value"="8128"}; +{"key"="1154";"subkey"="230";"value"="8136"}; +{"key"="1155";"subkey"="231";"value"="8144"}; +{"key"="1156";"subkey"="231";"value"="8152"}; +{"key"="1157";"subkey"="231";"value"="8160"}; +{"key"="1158";"subkey"="231";"value"="8169"}; +{"key"="1159";"subkey"="231";"value"="8177"}; +{"key"="1160";"subkey"="232";"value"="8185"}; +{"key"="1161";"subkey"="232";"value"="8193"}; +{"key"="1162";"subkey"="232";"value"="8201"}; +{"key"="1163";"subkey"="232";"value"="8209"}; +{"key"="1164";"subkey"="232";"value"="8217"}; +{"key"="1165";"subkey"="233";"value"="8225"}; +{"key"="1166";"subkey"="233";"value"="8233"}; +{"key"="1167";"subkey"="233";"value"="8241"}; +{"key"="1168";"subkey"="233";"value"="8249"}; +{"key"="1169";"subkey"="233";"value"="8257"}; +{"key"="1170";"subkey"="234";"value"="8265"}; +{"key"="1171";"subkey"="234";"value"="8273"}; +{"key"="1172";"subkey"="234";"value"="8281"}; +{"key"="1173";"subkey"="234";"value"="8289"}; +{"key"="1174";"subkey"="234";"value"="8298"}; +{"key"="1175";"subkey"="235";"value"="8306"}; +{"key"="1176";"subkey"="235";"value"="8314"}; +{"key"="1177";"subkey"="235";"value"="8322"}; +{"key"="1178";"subkey"="235";"value"="8330"}; +{"key"="1179";"subkey"="235";"value"="8338"}; +{"key"="1180";"subkey"="236";"value"="8346"}; +{"key"="1181";"subkey"="236";"value"="8354"}; +{"key"="1182";"subkey"="236";"value"="8362"}; +{"key"="1183";"subkey"="236";"value"="8370"}; +{"key"="1184";"subkey"="236";"value"="8378"}; +{"key"="1185";"subkey"="237";"value"="8386"}; +{"key"="1186";"subkey"="237";"value"="8394"}; +{"key"="1187";"subkey"="237";"value"="8402"}; +{"key"="1188";"subkey"="237";"value"="8411"}; +{"key"="1189";"subkey"="237";"value"="8419"}; +{"key"="1190";"subkey"="238";"value"="8427"}; +{"key"="1191";"subkey"="238";"value"="8435"}; +{"key"="1192";"subkey"="238";"value"="8443"}; +{"key"="1193";"subkey"="238";"value"="8451"}; +{"key"="1194";"subkey"="238";"value"="8459"}; +{"key"="1195";"subkey"="239";"value"="8467"}; +{"key"="1196";"subkey"="239";"value"="8475"}; +{"key"="1197";"subkey"="239";"value"="8483"}; +{"key"="1198";"subkey"="239";"value"="8491"}; +{"key"="1199";"subkey"="239";"value"="8500"}; +{"key"="1200";"subkey"="240";"value"="8508"}; +{"key"="1201";"subkey"="240";"value"="8516"}; +{"key"="1202";"subkey"="240";"value"="8524"}; +{"key"="1203";"subkey"="240";"value"="8532"}; +{"key"="1204";"subkey"="240";"value"="8540"}; +{"key"="1205";"subkey"="241";"value"="8548"}; +{"key"="1206";"subkey"="241";"value"="8556"}; +{"key"="1207";"subkey"="241";"value"="8564"}; +{"key"="1208";"subkey"="241";"value"="8572"}; +{"key"="1209";"subkey"="241";"value"="8580"}; +{"key"="1210";"subkey"="242";"value"="8589"}; +{"key"="1211";"subkey"="242";"value"="8597"}; +{"key"="1212";"subkey"="242";"value"="8605"}; +{"key"="1213";"subkey"="242";"value"="8613"}; +{"key"="1214";"subkey"="242";"value"="8621"}; +{"key"="1215";"subkey"="243";"value"="8629"}; +{"key"="1216";"subkey"="243";"value"="8637"}; +{"key"="1217";"subkey"="243";"value"="8645"}; +{"key"="1218";"subkey"="243";"value"="8653"}; +{"key"="1219";"subkey"="243";"value"="8661"}; +{"key"="1220";"subkey"="244";"value"="8670"}; +{"key"="1221";"subkey"="244";"value"="8678"}; +{"key"="1222";"subkey"="244";"value"="8686"}; +{"key"="1223";"subkey"="244";"value"="8694"}; +{"key"="1224";"subkey"="244";"value"="8702"}; +{"key"="1225";"subkey"="245";"value"="8710"}; +{"key"="1226";"subkey"="245";"value"="8718"}; +{"key"="1227";"subkey"="245";"value"="8726"}; +{"key"="1228";"subkey"="245";"value"="8734"}; +{"key"="1229";"subkey"="245";"value"="8743"}; +{"key"="1230";"subkey"="246";"value"="8751"}; +{"key"="1231";"subkey"="246";"value"="8759"}; +{"key"="1232";"subkey"="246";"value"="8767"}; +{"key"="1233";"subkey"="246";"value"="8775"}; +{"key"="1234";"subkey"="246";"value"="8783"}; +{"key"="1235";"subkey"="247";"value"="8791"}; +{"key"="1236";"subkey"="247";"value"="8799"}; +{"key"="1237";"subkey"="247";"value"="8807"}; +{"key"="1238";"subkey"="247";"value"="8816"}; +{"key"="1239";"subkey"="247";"value"="8824"}; +{"key"="1240";"subkey"="248";"value"="8832"}; +{"key"="1241";"subkey"="248";"value"="8840"}; +{"key"="1242";"subkey"="248";"value"="8848"}; +{"key"="1243";"subkey"="248";"value"="8856"}; +{"key"="1244";"subkey"="248";"value"="8864"}; +{"key"="1245";"subkey"="249";"value"="8872"}; +{"key"="1246";"subkey"="249";"value"="8881"}; +{"key"="1247";"subkey"="249";"value"="8889"}; +{"key"="1248";"subkey"="249";"value"="8897"}; +{"key"="1249";"subkey"="249";"value"="8905"}; +{"key"="1250";"subkey"="250";"value"="8913"}; +{"key"="1251";"subkey"="250";"value"="8921"}; +{"key"="1252";"subkey"="250";"value"="8929"}; +{"key"="1253";"subkey"="250";"value"="8938"}; +{"key"="1254";"subkey"="250";"value"="8946"}; +{"key"="1255";"subkey"="251";"value"="8954"}; +{"key"="1256";"subkey"="251";"value"="8962"}; +{"key"="1257";"subkey"="251";"value"="8970"}; +{"key"="1258";"subkey"="251";"value"="8978"}; +{"key"="1259";"subkey"="251";"value"="8986"}; +{"key"="1260";"subkey"="252";"value"="8994"}; +{"key"="1261";"subkey"="252";"value"="9003"}; +{"key"="1262";"subkey"="252";"value"="9011"}; +{"key"="1263";"subkey"="252";"value"="9019"}; +{"key"="1264";"subkey"="252";"value"="9027"}; +{"key"="1265";"subkey"="253";"value"="9035"}; +{"key"="1266";"subkey"="253";"value"="9043"}; +{"key"="1267";"subkey"="253";"value"="9051"}; +{"key"="1268";"subkey"="253";"value"="9060"}; +{"key"="1269";"subkey"="253";"value"="9068"}; +{"key"="1270";"subkey"="254";"value"="9076"}; +{"key"="1271";"subkey"="254";"value"="9084"}; +{"key"="1272";"subkey"="254";"value"="9092"}; +{"key"="1273";"subkey"="254";"value"="9100"}; +{"key"="1274";"subkey"="254";"value"="9108"}; +{"key"="1275";"subkey"="255";"value"="9117"}; +{"key"="1276";"subkey"="255";"value"="9125"}; +{"key"="1277";"subkey"="255";"value"="9133"}; +{"key"="1278";"subkey"="255";"value"="9141"}; +{"key"="1279";"subkey"="255";"value"="9149"}; +{"key"="1280";"subkey"="256";"value"="9157"}; +{"key"="1281";"subkey"="256";"value"="9166"}; +{"key"="1282";"subkey"="256";"value"="9174"}; +{"key"="1283";"subkey"="256";"value"="9182"}; +{"key"="1284";"subkey"="256";"value"="9190"}; +{"key"="1285";"subkey"="257";"value"="9198"}; +{"key"="1286";"subkey"="257";"value"="9206"}; +{"key"="1287";"subkey"="257";"value"="9215"}; +{"key"="1288";"subkey"="257";"value"="9223"}; +{"key"="1289";"subkey"="257";"value"="9231"}; +{"key"="1290";"subkey"="258";"value"="9239"}; +{"key"="1291";"subkey"="258";"value"="9247"}; +{"key"="1292";"subkey"="258";"value"="9255"}; +{"key"="1293";"subkey"="258";"value"="9263"}; +{"key"="1294";"subkey"="258";"value"="9272"}; +{"key"="1295";"subkey"="259";"value"="9280"}; +{"key"="1296";"subkey"="259";"value"="9288"}; +{"key"="1297";"subkey"="259";"value"="9296"}; +{"key"="1298";"subkey"="259";"value"="9304"}; +{"key"="1299";"subkey"="259";"value"="9312"}; +{"key"="1300";"subkey"="260";"value"="9321"}; +{"key"="1301";"subkey"="260";"value"="9329"}; +{"key"="1302";"subkey"="260";"value"="9337"}; +{"key"="1303";"subkey"="260";"value"="9345"}; +{"key"="1304";"subkey"="260";"value"="9353"}; +{"key"="1305";"subkey"="261";"value"="9362"}; +{"key"="1306";"subkey"="261";"value"="9370"}; +{"key"="1307";"subkey"="261";"value"="9378"}; +{"key"="1308";"subkey"="261";"value"="9386"}; +{"key"="1309";"subkey"="261";"value"="9394"}; +{"key"="1310";"subkey"="262";"value"="9402"}; +{"key"="1311";"subkey"="262";"value"="9411"}; +{"key"="1312";"subkey"="262";"value"="9419"}; +{"key"="1313";"subkey"="262";"value"="9427"}; +{"key"="1314";"subkey"="262";"value"="9435"}; +{"key"="1315";"subkey"="263";"value"="9443"}; +{"key"="1316";"subkey"="263";"value"="9451"}; +{"key"="1317";"subkey"="263";"value"="9460"}; +{"key"="1318";"subkey"="263";"value"="9468"}; +{"key"="1319";"subkey"="263";"value"="9476"}; +{"key"="1320";"subkey"="264";"value"="9484"}; +{"key"="1321";"subkey"="264";"value"="9492"}; +{"key"="1322";"subkey"="264";"value"="9501"}; +{"key"="1323";"subkey"="264";"value"="9509"}; +{"key"="1324";"subkey"="264";"value"="9517"}; +{"key"="1325";"subkey"="265";"value"="9525"}; +{"key"="1326";"subkey"="265";"value"="9533"}; +{"key"="1327";"subkey"="265";"value"="9542"}; +{"key"="1328";"subkey"="265";"value"="9550"}; +{"key"="1329";"subkey"="265";"value"="9558"}; +{"key"="1330";"subkey"="266";"value"="9566"}; +{"key"="1331";"subkey"="266";"value"="9574"}; +{"key"="1332";"subkey"="266";"value"="9582"}; +{"key"="1333";"subkey"="266";"value"="9591"}; +{"key"="1334";"subkey"="266";"value"="9599"}; +{"key"="1335";"subkey"="267";"value"="9607"}; +{"key"="1336";"subkey"="267";"value"="9615"}; +{"key"="1337";"subkey"="267";"value"="9623"}; +{"key"="1338";"subkey"="267";"value"="9632"}; +{"key"="1339";"subkey"="267";"value"="9640"}; +{"key"="1340";"subkey"="268";"value"="9648"}; +{"key"="1341";"subkey"="268";"value"="9656"}; +{"key"="1342";"subkey"="268";"value"="9664"}; +{"key"="1343";"subkey"="268";"value"="9673"}; +{"key"="1344";"subkey"="268";"value"="9681"}; +{"key"="1345";"subkey"="269";"value"="9689"}; +{"key"="1346";"subkey"="269";"value"="9697"}; +{"key"="1347";"subkey"="269";"value"="9705"}; +{"key"="1348";"subkey"="269";"value"="9714"}; +{"key"="1349";"subkey"="269";"value"="9722"}; +{"key"="1350";"subkey"="270";"value"="9730"}; +{"key"="1351";"subkey"="270";"value"="9738"}; +{"key"="1352";"subkey"="270";"value"="9747"}; +{"key"="1353";"subkey"="270";"value"="9755"}; +{"key"="1354";"subkey"="270";"value"="9763"}; +{"key"="1355";"subkey"="271";"value"="9771"}; +{"key"="1356";"subkey"="271";"value"="9779"}; +{"key"="1357";"subkey"="271";"value"="9788"}; +{"key"="1358";"subkey"="271";"value"="9796"}; +{"key"="1359";"subkey"="271";"value"="9804"}; +{"key"="1360";"subkey"="272";"value"="9812"}; +{"key"="1361";"subkey"="272";"value"="9820"}; +{"key"="1362";"subkey"="272";"value"="9829"}; +{"key"="1363";"subkey"="272";"value"="9837"}; +{"key"="1364";"subkey"="272";"value"="9845"}; +{"key"="1365";"subkey"="273";"value"="9853"}; +{"key"="1366";"subkey"="273";"value"="9862"}; +{"key"="1367";"subkey"="273";"value"="9870"}; +{"key"="1368";"subkey"="273";"value"="9878"}; +{"key"="1369";"subkey"="273";"value"="9886"}; +{"key"="1370";"subkey"="274";"value"="9894"}; +{"key"="1371";"subkey"="274";"value"="9903"}; +{"key"="1372";"subkey"="274";"value"="9911"}; +{"key"="1373";"subkey"="274";"value"="9919"}; +{"key"="1374";"subkey"="274";"value"="9927"}; +{"key"="1375";"subkey"="275";"value"="9936"}; +{"key"="1376";"subkey"="275";"value"="9944"}; +{"key"="1377";"subkey"="275";"value"="9952"}; +{"key"="1378";"subkey"="275";"value"="9960"}; +{"key"="1379";"subkey"="275";"value"="9968"}; +{"key"="1380";"subkey"="276";"value"="9977"}; +{"key"="1381";"subkey"="276";"value"="9985"}; +{"key"="1382";"subkey"="276";"value"="9993"}; +{"key"="1383";"subkey"="276";"value"="10001"}; +{"key"="1384";"subkey"="276";"value"="10010"}; +{"key"="1385";"subkey"="277";"value"="10018"}; +{"key"="1386";"subkey"="277";"value"="10026"}; +{"key"="1387";"subkey"="277";"value"="10034"}; +{"key"="1388";"subkey"="277";"value"="10043"}; +{"key"="1389";"subkey"="277";"value"="10051"}; +{"key"="1390";"subkey"="278";"value"="10059"}; +{"key"="1391";"subkey"="278";"value"="10067"}; +{"key"="1392";"subkey"="278";"value"="10075"}; +{"key"="1393";"subkey"="278";"value"="10084"}; +{"key"="1394";"subkey"="278";"value"="10092"}; +{"key"="1395";"subkey"="279";"value"="10100"}; +{"key"="1396";"subkey"="279";"value"="10108"}; +{"key"="1397";"subkey"="279";"value"="10117"}; +{"key"="1398";"subkey"="279";"value"="10125"}; +{"key"="1399";"subkey"="279";"value"="10133"}; +{"key"="1400";"subkey"="280";"value"="10141"}; +{"key"="1401";"subkey"="280";"value"="10150"}; +{"key"="1402";"subkey"="280";"value"="10158"}; +{"key"="1403";"subkey"="280";"value"="10166"}; +{"key"="1404";"subkey"="280";"value"="10174"}; +{"key"="1405";"subkey"="281";"value"="10183"}; +{"key"="1406";"subkey"="281";"value"="10191"}; +{"key"="1407";"subkey"="281";"value"="10199"}; +{"key"="1408";"subkey"="281";"value"="10207"}; +{"key"="1409";"subkey"="281";"value"="10216"}; +{"key"="1410";"subkey"="282";"value"="10224"}; +{"key"="1411";"subkey"="282";"value"="10232"}; +{"key"="1412";"subkey"="282";"value"="10240"}; +{"key"="1413";"subkey"="282";"value"="10249"}; +{"key"="1414";"subkey"="282";"value"="10257"}; +{"key"="1415";"subkey"="283";"value"="10265"}; +{"key"="1416";"subkey"="283";"value"="10273"}; +{"key"="1417";"subkey"="283";"value"="10282"}; +{"key"="1418";"subkey"="283";"value"="10290"}; +{"key"="1419";"subkey"="283";"value"="10298"}; +{"key"="1420";"subkey"="284";"value"="10306"}; +{"key"="1421";"subkey"="284";"value"="10315"}; +{"key"="1422";"subkey"="284";"value"="10323"}; +{"key"="1423";"subkey"="284";"value"="10331"}; +{"key"="1424";"subkey"="284";"value"="10339"}; +{"key"="1425";"subkey"="285";"value"="10348"}; +{"key"="1426";"subkey"="285";"value"="10356"}; +{"key"="1427";"subkey"="285";"value"="10364"}; +{"key"="1428";"subkey"="285";"value"="10373"}; +{"key"="1429";"subkey"="285";"value"="10381"}; +{"key"="1430";"subkey"="286";"value"="10389"}; +{"key"="1431";"subkey"="286";"value"="10397"}; +{"key"="1432";"subkey"="286";"value"="10406"}; +{"key"="1433";"subkey"="286";"value"="10414"}; +{"key"="1434";"subkey"="286";"value"="10422"}; +{"key"="1435";"subkey"="287";"value"="10430"}; +{"key"="1436";"subkey"="287";"value"="10439"}; +{"key"="1437";"subkey"="287";"value"="10447"}; +{"key"="1438";"subkey"="287";"value"="10455"}; +{"key"="1439";"subkey"="287";"value"="10463"}; +{"key"="1440";"subkey"="288";"value"="10472"}; +{"key"="1441";"subkey"="288";"value"="10480"}; +{"key"="1442";"subkey"="288";"value"="10488"}; +{"key"="1443";"subkey"="288";"value"="10497"}; +{"key"="1444";"subkey"="288";"value"="10505"}; +{"key"="1445";"subkey"="289";"value"="10513"}; +{"key"="1446";"subkey"="289";"value"="10521"}; +{"key"="1447";"subkey"="289";"value"="10530"}; +{"key"="1448";"subkey"="289";"value"="10538"}; +{"key"="1449";"subkey"="289";"value"="10546"}; +{"key"="1450";"subkey"="290";"value"="10555"}; +{"key"="1451";"subkey"="290";"value"="10563"}; +{"key"="1452";"subkey"="290";"value"="10571"}; +{"key"="1453";"subkey"="290";"value"="10579"}; +{"key"="1454";"subkey"="290";"value"="10588"}; +{"key"="1455";"subkey"="291";"value"="10596"}; +{"key"="1456";"subkey"="291";"value"="10604"}; +{"key"="1457";"subkey"="291";"value"="10612"}; +{"key"="1458";"subkey"="291";"value"="10621"}; +{"key"="1459";"subkey"="291";"value"="10629"}; +{"key"="1460";"subkey"="292";"value"="10637"}; +{"key"="1461";"subkey"="292";"value"="10646"}; +{"key"="1462";"subkey"="292";"value"="10654"}; +{"key"="1463";"subkey"="292";"value"="10662"}; +{"key"="1464";"subkey"="292";"value"="10670"}; +{"key"="1465";"subkey"="293";"value"="10679"}; +{"key"="1466";"subkey"="293";"value"="10687"}; +{"key"="1467";"subkey"="293";"value"="10695"}; +{"key"="1468";"subkey"="293";"value"="10704"}; +{"key"="1469";"subkey"="293";"value"="10712"}; +{"key"="1470";"subkey"="294";"value"="10720"}; +{"key"="1471";"subkey"="294";"value"="10729"}; +{"key"="1472";"subkey"="294";"value"="10737"}; +{"key"="1473";"subkey"="294";"value"="10745"}; +{"key"="1474";"subkey"="294";"value"="10753"}; +{"key"="1475";"subkey"="295";"value"="10762"}; +{"key"="1476";"subkey"="295";"value"="10770"}; +{"key"="1477";"subkey"="295";"value"="10778"}; +{"key"="1478";"subkey"="295";"value"="10787"}; +{"key"="1479";"subkey"="295";"value"="10795"}; +{"key"="1480";"subkey"="296";"value"="10803"}; +{"key"="1481";"subkey"="296";"value"="10812"}; +{"key"="1482";"subkey"="296";"value"="10820"}; +{"key"="1483";"subkey"="296";"value"="10828"}; +{"key"="1484";"subkey"="296";"value"="10836"}; +{"key"="1485";"subkey"="297";"value"="10845"}; +{"key"="1486";"subkey"="297";"value"="10853"}; +{"key"="1487";"subkey"="297";"value"="10861"}; +{"key"="1488";"subkey"="297";"value"="10870"}; +{"key"="1489";"subkey"="297";"value"="10878"}; +{"key"="1490";"subkey"="298";"value"="10886"}; +{"key"="1491";"subkey"="298";"value"="10895"}; +{"key"="1492";"subkey"="298";"value"="10903"}; +{"key"="1493";"subkey"="298";"value"="10911"}; +{"key"="1494";"subkey"="298";"value"="10919"}; +{"key"="1495";"subkey"="299";"value"="10928"}; +{"key"="1496";"subkey"="299";"value"="10936"}; +{"key"="1497";"subkey"="299";"value"="10944"}; +{"key"="1498";"subkey"="299";"value"="10953"}; +{"key"="1499";"subkey"="299";"value"="10961"}; +{"key"="1500";"subkey"="300";"value"="10969"}; +{"key"="1501";"subkey"="300";"value"="10978"}; +{"key"="1502";"subkey"="300";"value"="10986"}; +{"key"="1503";"subkey"="300";"value"="10994"}; +{"key"="1504";"subkey"="300";"value"="11003"}; +{"key"="1505";"subkey"="301";"value"="11011"}; +{"key"="1506";"subkey"="301";"value"="11019"}; +{"key"="1507";"subkey"="301";"value"="11028"}; +{"key"="1508";"subkey"="301";"value"="11036"}; +{"key"="1509";"subkey"="301";"value"="11044"}; +{"key"="1510";"subkey"="302";"value"="11052"}; +{"key"="1511";"subkey"="302";"value"="11061"}; +{"key"="1512";"subkey"="302";"value"="11069"}; +{"key"="1513";"subkey"="302";"value"="11077"}; +{"key"="1514";"subkey"="302";"value"="11086"}; +{"key"="1515";"subkey"="303";"value"="11094"}; +{"key"="1516";"subkey"="303";"value"="11102"}; +{"key"="1517";"subkey"="303";"value"="11111"}; +{"key"="1518";"subkey"="303";"value"="11119"}; +{"key"="1519";"subkey"="303";"value"="11127"}; +{"key"="1520";"subkey"="304";"value"="11136"}; +{"key"="1521";"subkey"="304";"value"="11144"}; +{"key"="1522";"subkey"="304";"value"="11152"}; +{"key"="1523";"subkey"="304";"value"="11161"}; +{"key"="1524";"subkey"="304";"value"="11169"}; +{"key"="1525";"subkey"="305";"value"="11177"}; +{"key"="1526";"subkey"="305";"value"="11186"}; +{"key"="1527";"subkey"="305";"value"="11194"}; +{"key"="1528";"subkey"="305";"value"="11202"}; +{"key"="1529";"subkey"="305";"value"="11211"}; +{"key"="1530";"subkey"="306";"value"="11219"}; +{"key"="1531";"subkey"="306";"value"="11227"}; +{"key"="1532";"subkey"="306";"value"="11236"}; +{"key"="1533";"subkey"="306";"value"="11244"}; +{"key"="1534";"subkey"="306";"value"="11252"}; +{"key"="1535";"subkey"="307";"value"="11261"}; +{"key"="1536";"subkey"="307";"value"="11269"}; +{"key"="1537";"subkey"="307";"value"="11277"}; +{"key"="1538";"subkey"="307";"value"="11286"}; +{"key"="1539";"subkey"="307";"value"="11294"}; +{"key"="1540";"subkey"="308";"value"="11302"}; +{"key"="1541";"subkey"="308";"value"="11311"}; +{"key"="1542";"subkey"="308";"value"="11319"}; +{"key"="1543";"subkey"="308";"value"="11327"}; +{"key"="1544";"subkey"="308";"value"="11336"}; +{"key"="1545";"subkey"="309";"value"="11344"}; +{"key"="1546";"subkey"="309";"value"="11352"}; +{"key"="1547";"subkey"="309";"value"="11361"}; +{"key"="1548";"subkey"="309";"value"="11369"}; +{"key"="1549";"subkey"="309";"value"="11377"}; +{"key"="1550";"subkey"="310";"value"="11386"}; +{"key"="1551";"subkey"="310";"value"="11394"}; +{"key"="1552";"subkey"="310";"value"="11403"}; +{"key"="1553";"subkey"="310";"value"="11411"}; +{"key"="1554";"subkey"="310";"value"="11419"}; +{"key"="1555";"subkey"="311";"value"="11428"}; +{"key"="1556";"subkey"="311";"value"="11436"}; +{"key"="1557";"subkey"="311";"value"="11444"}; +{"key"="1558";"subkey"="311";"value"="11453"}; +{"key"="1559";"subkey"="311";"value"="11461"}; +{"key"="1560";"subkey"="312";"value"="11469"}; +{"key"="1561";"subkey"="312";"value"="11478"}; +{"key"="1562";"subkey"="312";"value"="11486"}; +{"key"="1563";"subkey"="312";"value"="11494"}; +{"key"="1564";"subkey"="312";"value"="11503"}; +{"key"="1565";"subkey"="313";"value"="11511"}; +{"key"="1566";"subkey"="313";"value"="11519"}; +{"key"="1567";"subkey"="313";"value"="11528"}; +{"key"="1568";"subkey"="313";"value"="11536"}; +{"key"="1569";"subkey"="313";"value"="11545"}; +{"key"="1570";"subkey"="314";"value"="11553"}; +{"key"="1571";"subkey"="314";"value"="11561"}; +{"key"="1572";"subkey"="314";"value"="11570"}; +{"key"="1573";"subkey"="314";"value"="11578"}; +{"key"="1574";"subkey"="314";"value"="11586"}; +{"key"="1575";"subkey"="315";"value"="11595"}; +{"key"="1576";"subkey"="315";"value"="11603"}; +{"key"="1577";"subkey"="315";"value"="11611"}; +{"key"="1578";"subkey"="315";"value"="11620"}; +{"key"="1579";"subkey"="315";"value"="11628"}; +{"key"="1580";"subkey"="316";"value"="11636"}; +{"key"="1581";"subkey"="316";"value"="11645"}; +{"key"="1582";"subkey"="316";"value"="11653"}; +{"key"="1583";"subkey"="316";"value"="11662"}; +{"key"="1584";"subkey"="316";"value"="11670"}; +{"key"="1585";"subkey"="317";"value"="11678"}; +{"key"="1586";"subkey"="317";"value"="11687"}; +{"key"="1587";"subkey"="317";"value"="11695"}; +{"key"="1588";"subkey"="317";"value"="11703"}; +{"key"="1589";"subkey"="317";"value"="11712"}; +{"key"="1590";"subkey"="318";"value"="11720"}; +{"key"="1591";"subkey"="318";"value"="11729"}; +{"key"="1592";"subkey"="318";"value"="11737"}; +{"key"="1593";"subkey"="318";"value"="11745"}; +{"key"="1594";"subkey"="318";"value"="11754"}; +{"key"="1595";"subkey"="319";"value"="11762"}; +{"key"="1596";"subkey"="319";"value"="11770"}; +{"key"="1597";"subkey"="319";"value"="11779"}; +{"key"="1598";"subkey"="319";"value"="11787"}; +{"key"="1599";"subkey"="319";"value"="11796"}; +{"key"="1600";"subkey"="320";"value"="11804"}; +{"key"="1601";"subkey"="320";"value"="11812"}; +{"key"="1602";"subkey"="320";"value"="11821"}; +{"key"="1603";"subkey"="320";"value"="11829"}; +{"key"="1604";"subkey"="320";"value"="11837"}; +{"key"="1605";"subkey"="321";"value"="11846"}; +{"key"="1606";"subkey"="321";"value"="11854"}; +{"key"="1607";"subkey"="321";"value"="11863"}; +{"key"="1608";"subkey"="321";"value"="11871"}; +{"key"="1609";"subkey"="321";"value"="11879"}; +{"key"="1610";"subkey"="322";"value"="11888"}; +{"key"="1611";"subkey"="322";"value"="11896"}; +{"key"="1612";"subkey"="322";"value"="11904"}; +{"key"="1613";"subkey"="322";"value"="11913"}; +{"key"="1614";"subkey"="322";"value"="11921"}; +{"key"="1615";"subkey"="323";"value"="11930"}; +{"key"="1616";"subkey"="323";"value"="11938"}; +{"key"="1617";"subkey"="323";"value"="11946"}; +{"key"="1618";"subkey"="323";"value"="11955"}; +{"key"="1619";"subkey"="323";"value"="11963"}; +{"key"="1620";"subkey"="324";"value"="11972"}; +{"key"="1621";"subkey"="324";"value"="11980"}; +{"key"="1622";"subkey"="324";"value"="11988"}; +{"key"="1623";"subkey"="324";"value"="11997"}; +{"key"="1624";"subkey"="324";"value"="12005"}; +{"key"="1625";"subkey"="325";"value"="12014"}; +{"key"="1626";"subkey"="325";"value"="12022"}; +{"key"="1627";"subkey"="325";"value"="12030"}; +{"key"="1628";"subkey"="325";"value"="12039"}; +{"key"="1629";"subkey"="325";"value"="12047"}; +{"key"="1630";"subkey"="326";"value"="12056"}; +{"key"="1631";"subkey"="326";"value"="12064"}; +{"key"="1632";"subkey"="326";"value"="12072"}; +{"key"="1633";"subkey"="326";"value"="12081"}; +{"key"="1634";"subkey"="326";"value"="12089"}; +{"key"="1635";"subkey"="327";"value"="12098"}; +{"key"="1636";"subkey"="327";"value"="12106"}; +{"key"="1637";"subkey"="327";"value"="12114"}; +{"key"="1638";"subkey"="327";"value"="12123"}; +{"key"="1639";"subkey"="327";"value"="12131"}; +{"key"="1640";"subkey"="328";"value"="12140"}; +{"key"="1641";"subkey"="328";"value"="12148"}; +{"key"="1642";"subkey"="328";"value"="12156"}; +{"key"="1643";"subkey"="328";"value"="12165"}; +{"key"="1644";"subkey"="328";"value"="12173"}; +{"key"="1645";"subkey"="329";"value"="12182"}; +{"key"="1646";"subkey"="329";"value"="12190"}; +{"key"="1647";"subkey"="329";"value"="12198"}; +{"key"="1648";"subkey"="329";"value"="12207"}; +{"key"="1649";"subkey"="329";"value"="12215"}; +{"key"="1650";"subkey"="330";"value"="12224"}; +{"key"="1651";"subkey"="330";"value"="12232"}; +{"key"="1652";"subkey"="330";"value"="12240"}; +{"key"="1653";"subkey"="330";"value"="12249"}; +{"key"="1654";"subkey"="330";"value"="12257"}; +{"key"="1655";"subkey"="331";"value"="12266"}; +{"key"="1656";"subkey"="331";"value"="12274"}; +{"key"="1657";"subkey"="331";"value"="12282"}; +{"key"="1658";"subkey"="331";"value"="12291"}; +{"key"="1659";"subkey"="331";"value"="12299"}; +{"key"="1660";"subkey"="332";"value"="12308"}; +{"key"="1661";"subkey"="332";"value"="12316"}; +{"key"="1662";"subkey"="332";"value"="12325"}; +{"key"="1663";"subkey"="332";"value"="12333"}; +{"key"="1664";"subkey"="332";"value"="12341"}; +{"key"="1665";"subkey"="333";"value"="12350"}; +{"key"="1666";"subkey"="333";"value"="12358"}; +{"key"="1667";"subkey"="333";"value"="12367"}; +{"key"="1668";"subkey"="333";"value"="12375"}; +{"key"="1669";"subkey"="333";"value"="12383"}; +{"key"="1670";"subkey"="334";"value"="12392"}; +{"key"="1671";"subkey"="334";"value"="12400"}; +{"key"="1672";"subkey"="334";"value"="12409"}; +{"key"="1673";"subkey"="334";"value"="12417"}; +{"key"="1674";"subkey"="334";"value"="12426"}; +{"key"="1675";"subkey"="335";"value"="12434"}; +{"key"="1676";"subkey"="335";"value"="12442"}; +{"key"="1677";"subkey"="335";"value"="12451"}; +{"key"="1678";"subkey"="335";"value"="12459"}; +{"key"="1679";"subkey"="335";"value"="12468"}; +{"key"="1680";"subkey"="336";"value"="12476"}; +{"key"="1681";"subkey"="336";"value"="12485"}; +{"key"="1682";"subkey"="336";"value"="12493"}; +{"key"="1683";"subkey"="336";"value"="12501"}; +{"key"="1684";"subkey"="336";"value"="12510"}; +{"key"="1685";"subkey"="337";"value"="12518"}; +{"key"="1686";"subkey"="337";"value"="12527"}; +{"key"="1687";"subkey"="337";"value"="12535"}; +{"key"="1688";"subkey"="337";"value"="12544"}; +{"key"="1689";"subkey"="337";"value"="12552"}; +{"key"="1690";"subkey"="338";"value"="12560"}; +{"key"="1691";"subkey"="338";"value"="12569"}; +{"key"="1692";"subkey"="338";"value"="12577"}; +{"key"="1693";"subkey"="338";"value"="12586"}; +{"key"="1694";"subkey"="338";"value"="12594"}; +{"key"="1695";"subkey"="339";"value"="12603"}; +{"key"="1696";"subkey"="339";"value"="12611"}; +{"key"="1697";"subkey"="339";"value"="12619"}; +{"key"="1698";"subkey"="339";"value"="12628"}; +{"key"="1699";"subkey"="339";"value"="12636"}; +{"key"="1700";"subkey"="340";"value"="12645"}; +{"key"="1701";"subkey"="340";"value"="12653"}; +{"key"="1702";"subkey"="340";"value"="12662"}; +{"key"="1703";"subkey"="340";"value"="12670"}; +{"key"="1704";"subkey"="340";"value"="12679"}; +{"key"="1705";"subkey"="341";"value"="12687"}; +{"key"="1706";"subkey"="341";"value"="12695"}; +{"key"="1707";"subkey"="341";"value"="12704"}; +{"key"="1708";"subkey"="341";"value"="12712"}; +{"key"="1709";"subkey"="341";"value"="12721"}; +{"key"="1710";"subkey"="342";"value"="12729"}; +{"key"="1711";"subkey"="342";"value"="12738"}; +{"key"="1712";"subkey"="342";"value"="12746"}; +{"key"="1713";"subkey"="342";"value"="12755"}; +{"key"="1714";"subkey"="342";"value"="12763"}; +{"key"="1715";"subkey"="343";"value"="12771"}; +{"key"="1716";"subkey"="343";"value"="12780"}; +{"key"="1717";"subkey"="343";"value"="12788"}; +{"key"="1718";"subkey"="343";"value"="12797"}; +{"key"="1719";"subkey"="343";"value"="12805"}; +{"key"="1720";"subkey"="344";"value"="12814"}; +{"key"="1721";"subkey"="344";"value"="12822"}; +{"key"="1722";"subkey"="344";"value"="12831"}; +{"key"="1723";"subkey"="344";"value"="12839"}; +{"key"="1724";"subkey"="344";"value"="12847"}; +{"key"="1725";"subkey"="345";"value"="12856"}; +{"key"="1726";"subkey"="345";"value"="12864"}; +{"key"="1727";"subkey"="345";"value"="12873"}; +{"key"="1728";"subkey"="345";"value"="12881"}; +{"key"="1729";"subkey"="345";"value"="12890"}; +{"key"="1730";"subkey"="346";"value"="12898"}; +{"key"="1731";"subkey"="346";"value"="12907"}; +{"key"="1732";"subkey"="346";"value"="12915"}; +{"key"="1733";"subkey"="346";"value"="12924"}; +{"key"="1734";"subkey"="346";"value"="12932"}; +{"key"="1735";"subkey"="347";"value"="12940"}; +{"key"="1736";"subkey"="347";"value"="12949"}; +{"key"="1737";"subkey"="347";"value"="12957"}; +{"key"="1738";"subkey"="347";"value"="12966"}; +{"key"="1739";"subkey"="347";"value"="12974"}; +{"key"="1740";"subkey"="348";"value"="12983"}; +{"key"="1741";"subkey"="348";"value"="12991"}; +{"key"="1742";"subkey"="348";"value"="13000"}; +{"key"="1743";"subkey"="348";"value"="13008"}; +{"key"="1744";"subkey"="348";"value"="13017"}; +{"key"="1745";"subkey"="349";"value"="13025"}; +{"key"="1746";"subkey"="349";"value"="13034"}; +{"key"="1747";"subkey"="349";"value"="13042"}; +{"key"="1748";"subkey"="349";"value"="13050"}; +{"key"="1749";"subkey"="349";"value"="13059"}; +{"key"="1750";"subkey"="350";"value"="13067"}; +{"key"="1751";"subkey"="350";"value"="13076"}; +{"key"="1752";"subkey"="350";"value"="13084"}; +{"key"="1753";"subkey"="350";"value"="13093"}; +{"key"="1754";"subkey"="350";"value"="13101"}; +{"key"="1755";"subkey"="351";"value"="13110"}; +{"key"="1756";"subkey"="351";"value"="13118"}; +{"key"="1757";"subkey"="351";"value"="13127"}; +{"key"="1758";"subkey"="351";"value"="13135"}; +{"key"="1759";"subkey"="351";"value"="13144"}; +{"key"="1760";"subkey"="352";"value"="13152"}; +{"key"="1761";"subkey"="352";"value"="13161"}; +{"key"="1762";"subkey"="352";"value"="13169"}; +{"key"="1763";"subkey"="352";"value"="13178"}; +{"key"="1764";"subkey"="352";"value"="13186"}; +{"key"="1765";"subkey"="353";"value"="13194"}; +{"key"="1766";"subkey"="353";"value"="13203"}; +{"key"="1767";"subkey"="353";"value"="13211"}; +{"key"="1768";"subkey"="353";"value"="13220"}; +{"key"="1769";"subkey"="353";"value"="13228"}; +{"key"="1770";"subkey"="354";"value"="13237"}; +{"key"="1771";"subkey"="354";"value"="13245"}; +{"key"="1772";"subkey"="354";"value"="13254"}; +{"key"="1773";"subkey"="354";"value"="13262"}; +{"key"="1774";"subkey"="354";"value"="13271"}; +{"key"="1775";"subkey"="355";"value"="13279"}; +{"key"="1776";"subkey"="355";"value"="13288"}; +{"key"="1777";"subkey"="355";"value"="13296"}; +{"key"="1778";"subkey"="355";"value"="13305"}; +{"key"="1779";"subkey"="355";"value"="13313"}; +{"key"="1780";"subkey"="356";"value"="13322"}; +{"key"="1781";"subkey"="356";"value"="13330"}; +{"key"="1782";"subkey"="356";"value"="13339"}; +{"key"="1783";"subkey"="356";"value"="13347"}; +{"key"="1784";"subkey"="356";"value"="13356"}; +{"key"="1785";"subkey"="357";"value"="13364"}; +{"key"="1786";"subkey"="357";"value"="13373"}; +{"key"="1787";"subkey"="357";"value"="13381"}; +{"key"="1788";"subkey"="357";"value"="13390"}; +{"key"="1789";"subkey"="357";"value"="13398"}; +{"key"="1790";"subkey"="358";"value"="13407"}; +{"key"="1791";"subkey"="358";"value"="13415"}; +{"key"="1792";"subkey"="358";"value"="13424"}; +{"key"="1793";"subkey"="358";"value"="13432"}; +{"key"="1794";"subkey"="358";"value"="13441"}; +{"key"="1795";"subkey"="359";"value"="13449"}; +{"key"="1796";"subkey"="359";"value"="13457"}; +{"key"="1797";"subkey"="359";"value"="13466"}; +{"key"="1798";"subkey"="359";"value"="13474"}; +{"key"="1799";"subkey"="359";"value"="13483"}; +{"key"="1800";"subkey"="360";"value"="13491"}; +{"key"="1801";"subkey"="360";"value"="13500"}; +{"key"="1802";"subkey"="360";"value"="13508"}; +{"key"="1803";"subkey"="360";"value"="13517"}; +{"key"="1804";"subkey"="360";"value"="13525"}; +{"key"="1805";"subkey"="361";"value"="13534"}; +{"key"="1806";"subkey"="361";"value"="13542"}; +{"key"="1807";"subkey"="361";"value"="13551"}; +{"key"="1808";"subkey"="361";"value"="13559"}; +{"key"="1809";"subkey"="361";"value"="13568"}; +{"key"="1810";"subkey"="362";"value"="13576"}; +{"key"="1811";"subkey"="362";"value"="13585"}; +{"key"="1812";"subkey"="362";"value"="13593"}; +{"key"="1813";"subkey"="362";"value"="13602"}; +{"key"="1814";"subkey"="362";"value"="13610"}; +{"key"="1815";"subkey"="363";"value"="13619"}; +{"key"="1816";"subkey"="363";"value"="13627"}; +{"key"="1817";"subkey"="363";"value"="13636"}; +{"key"="1818";"subkey"="363";"value"="13644"}; +{"key"="1819";"subkey"="363";"value"="13653"}; +{"key"="1820";"subkey"="364";"value"="13661"}; +{"key"="1821";"subkey"="364";"value"="13670"}; +{"key"="1822";"subkey"="364";"value"="13679"}; +{"key"="1823";"subkey"="364";"value"="13687"}; +{"key"="1824";"subkey"="364";"value"="13696"}; +{"key"="1825";"subkey"="365";"value"="13704"}; +{"key"="1826";"subkey"="365";"value"="13713"}; +{"key"="1827";"subkey"="365";"value"="13721"}; +{"key"="1828";"subkey"="365";"value"="13730"}; +{"key"="1829";"subkey"="365";"value"="13738"}; +{"key"="1830";"subkey"="366";"value"="13747"}; +{"key"="1831";"subkey"="366";"value"="13755"}; +{"key"="1832";"subkey"="366";"value"="13764"}; +{"key"="1833";"subkey"="366";"value"="13772"}; +{"key"="1834";"subkey"="366";"value"="13781"}; +{"key"="1835";"subkey"="367";"value"="13789"}; +{"key"="1836";"subkey"="367";"value"="13798"}; +{"key"="1837";"subkey"="367";"value"="13806"}; +{"key"="1838";"subkey"="367";"value"="13815"}; +{"key"="1839";"subkey"="367";"value"="13823"}; +{"key"="1840";"subkey"="368";"value"="13832"}; +{"key"="1841";"subkey"="368";"value"="13840"}; +{"key"="1842";"subkey"="368";"value"="13849"}; +{"key"="1843";"subkey"="368";"value"="13857"}; +{"key"="1844";"subkey"="368";"value"="13866"}; +{"key"="1845";"subkey"="369";"value"="13874"}; +{"key"="1846";"subkey"="369";"value"="13883"}; +{"key"="1847";"subkey"="369";"value"="13891"}; +{"key"="1848";"subkey"="369";"value"="13900"}; +{"key"="1849";"subkey"="369";"value"="13908"}; +{"key"="1850";"subkey"="370";"value"="13917"}; +{"key"="1851";"subkey"="370";"value"="13925"}; +{"key"="1852";"subkey"="370";"value"="13934"}; +{"key"="1853";"subkey"="370";"value"="13943"}; +{"key"="1854";"subkey"="370";"value"="13951"}; +{"key"="1855";"subkey"="371";"value"="13960"}; +{"key"="1856";"subkey"="371";"value"="13968"}; +{"key"="1857";"subkey"="371";"value"="13977"}; +{"key"="1858";"subkey"="371";"value"="13985"}; +{"key"="1859";"subkey"="371";"value"="13994"}; +{"key"="1860";"subkey"="372";"value"="14002"}; +{"key"="1861";"subkey"="372";"value"="14011"}; +{"key"="1862";"subkey"="372";"value"="14019"}; +{"key"="1863";"subkey"="372";"value"="14028"}; +{"key"="1864";"subkey"="372";"value"="14036"}; +{"key"="1865";"subkey"="373";"value"="14045"}; +{"key"="1866";"subkey"="373";"value"="14053"}; +{"key"="1867";"subkey"="373";"value"="14062"}; +{"key"="1868";"subkey"="373";"value"="14070"}; +{"key"="1869";"subkey"="373";"value"="14079"}; +{"key"="1870";"subkey"="374";"value"="14088"}; +{"key"="1871";"subkey"="374";"value"="14096"}; +{"key"="1872";"subkey"="374";"value"="14105"}; +{"key"="1873";"subkey"="374";"value"="14113"}; +{"key"="1874";"subkey"="374";"value"="14122"}; +{"key"="1875";"subkey"="375";"value"="14130"}; +{"key"="1876";"subkey"="375";"value"="14139"}; +{"key"="1877";"subkey"="375";"value"="14147"}; +{"key"="1878";"subkey"="375";"value"="14156"}; +{"key"="1879";"subkey"="375";"value"="14164"}; +{"key"="1880";"subkey"="376";"value"="14173"}; +{"key"="1881";"subkey"="376";"value"="14181"}; +{"key"="1882";"subkey"="376";"value"="14190"}; +{"key"="1883";"subkey"="376";"value"="14198"}; +{"key"="1884";"subkey"="376";"value"="14207"}; +{"key"="1885";"subkey"="377";"value"="14216"}; +{"key"="1886";"subkey"="377";"value"="14224"}; +{"key"="1887";"subkey"="377";"value"="14233"}; +{"key"="1888";"subkey"="377";"value"="14241"}; +{"key"="1889";"subkey"="377";"value"="14250"}; +{"key"="1890";"subkey"="378";"value"="14258"}; +{"key"="1891";"subkey"="378";"value"="14267"}; +{"key"="1892";"subkey"="378";"value"="14275"}; +{"key"="1893";"subkey"="378";"value"="14284"}; +{"key"="1894";"subkey"="378";"value"="14292"}; +{"key"="1895";"subkey"="379";"value"="14301"}; +{"key"="1896";"subkey"="379";"value"="14310"}; +{"key"="1897";"subkey"="379";"value"="14318"}; +{"key"="1898";"subkey"="379";"value"="14327"}; +{"key"="1899";"subkey"="379";"value"="14335"}; +{"key"="1900";"subkey"="380";"value"="14344"}; +{"key"="1901";"subkey"="380";"value"="14352"}; +{"key"="1902";"subkey"="380";"value"="14361"}; +{"key"="1903";"subkey"="380";"value"="14369"}; +{"key"="1904";"subkey"="380";"value"="14378"}; +{"key"="1905";"subkey"="381";"value"="14387"}; +{"key"="1906";"subkey"="381";"value"="14395"}; +{"key"="1907";"subkey"="381";"value"="14404"}; +{"key"="1908";"subkey"="381";"value"="14412"}; +{"key"="1909";"subkey"="381";"value"="14421"}; +{"key"="1910";"subkey"="382";"value"="14429"}; +{"key"="1911";"subkey"="382";"value"="14438"}; +{"key"="1912";"subkey"="382";"value"="14446"}; +{"key"="1913";"subkey"="382";"value"="14455"}; +{"key"="1914";"subkey"="382";"value"="14464"}; +{"key"="1915";"subkey"="383";"value"="14472"}; +{"key"="1916";"subkey"="383";"value"="14481"}; +{"key"="1917";"subkey"="383";"value"="14489"}; +{"key"="1918";"subkey"="383";"value"="14498"}; +{"key"="1919";"subkey"="383";"value"="14506"}; +{"key"="1920";"subkey"="384";"value"="14515"}; +{"key"="1921";"subkey"="384";"value"="14523"}; +{"key"="1922";"subkey"="384";"value"="14532"}; +{"key"="1923";"subkey"="384";"value"="14541"}; +{"key"="1924";"subkey"="384";"value"="14549"}; +{"key"="1925";"subkey"="385";"value"="14558"}; +{"key"="1926";"subkey"="385";"value"="14566"}; +{"key"="1927";"subkey"="385";"value"="14575"}; +{"key"="1928";"subkey"="385";"value"="14583"}; +{"key"="1929";"subkey"="385";"value"="14592"}; +{"key"="1930";"subkey"="386";"value"="14600"}; +{"key"="1931";"subkey"="386";"value"="14609"}; +{"key"="1932";"subkey"="386";"value"="14618"}; +{"key"="1933";"subkey"="386";"value"="14626"}; +{"key"="1934";"subkey"="386";"value"="14635"}; +{"key"="1935";"subkey"="387";"value"="14643"}; +{"key"="1936";"subkey"="387";"value"="14652"}; +{"key"="1937";"subkey"="387";"value"="14660"}; +{"key"="1938";"subkey"="387";"value"="14669"}; +{"key"="1939";"subkey"="387";"value"="14678"}; +{"key"="1940";"subkey"="388";"value"="14686"}; +{"key"="1941";"subkey"="388";"value"="14695"}; +{"key"="1942";"subkey"="388";"value"="14703"}; +{"key"="1943";"subkey"="388";"value"="14712"}; +{"key"="1944";"subkey"="388";"value"="14720"}; +{"key"="1945";"subkey"="389";"value"="14729"}; +{"key"="1946";"subkey"="389";"value"="14738"}; +{"key"="1947";"subkey"="389";"value"="14746"}; +{"key"="1948";"subkey"="389";"value"="14755"}; +{"key"="1949";"subkey"="389";"value"="14763"}; +{"key"="1950";"subkey"="390";"value"="14772"}; +{"key"="1951";"subkey"="390";"value"="14780"}; +{"key"="1952";"subkey"="390";"value"="14789"}; +{"key"="1953";"subkey"="390";"value"="14798"}; +{"key"="1954";"subkey"="390";"value"="14806"}; +{"key"="1955";"subkey"="391";"value"="14815"}; +{"key"="1956";"subkey"="391";"value"="14823"}; +{"key"="1957";"subkey"="391";"value"="14832"}; +{"key"="1958";"subkey"="391";"value"="14841"}; +{"key"="1959";"subkey"="391";"value"="14849"}; +{"key"="1960";"subkey"="392";"value"="14858"}; +{"key"="1961";"subkey"="392";"value"="14866"}; +{"key"="1962";"subkey"="392";"value"="14875"}; +{"key"="1963";"subkey"="392";"value"="14883"}; +{"key"="1964";"subkey"="392";"value"="14892"}; +{"key"="1965";"subkey"="393";"value"="14901"}; +{"key"="1966";"subkey"="393";"value"="14909"}; +{"key"="1967";"subkey"="393";"value"="14918"}; +{"key"="1968";"subkey"="393";"value"="14926"}; +{"key"="1969";"subkey"="393";"value"="14935"}; +{"key"="1970";"subkey"="394";"value"="14944"}; +{"key"="1971";"subkey"="394";"value"="14952"}; +{"key"="1972";"subkey"="394";"value"="14961"}; +{"key"="1973";"subkey"="394";"value"="14969"}; +{"key"="1974";"subkey"="394";"value"="14978"}; +{"key"="1975";"subkey"="395";"value"="14986"}; +{"key"="1976";"subkey"="395";"value"="14995"}; +{"key"="1977";"subkey"="395";"value"="15004"}; +{"key"="1978";"subkey"="395";"value"="15012"}; +{"key"="1979";"subkey"="395";"value"="15021"}; +{"key"="1980";"subkey"="396";"value"="15029"}; +{"key"="1981";"subkey"="396";"value"="15038"}; +{"key"="1982";"subkey"="396";"value"="15047"}; +{"key"="1983";"subkey"="396";"value"="15055"}; +{"key"="1984";"subkey"="396";"value"="15064"}; +{"key"="1985";"subkey"="397";"value"="15072"}; +{"key"="1986";"subkey"="397";"value"="15081"}; +{"key"="1987";"subkey"="397";"value"="15090"}; +{"key"="1988";"subkey"="397";"value"="15098"}; +{"key"="1989";"subkey"="397";"value"="15107"}; +{"key"="1990";"subkey"="398";"value"="15115"}; +{"key"="1991";"subkey"="398";"value"="15124"}; +{"key"="1992";"subkey"="398";"value"="15133"}; +{"key"="1993";"subkey"="398";"value"="15141"}; +{"key"="1994";"subkey"="398";"value"="15150"}; +{"key"="1995";"subkey"="399";"value"="15158"}; +{"key"="1996";"subkey"="399";"value"="15167"}; +{"key"="1997";"subkey"="399";"value"="15176"}; +{"key"="1998";"subkey"="399";"value"="15184"}; +{"key"="1999";"subkey"="399";"value"="15193"}; +{"key"="2000";"subkey"="400";"value"="15201"}; +{"key"="2001";"subkey"="400";"value"="15210"}; +{"key"="2002";"subkey"="400";"value"="15219"}; +{"key"="2003";"subkey"="400";"value"="15227"}; +{"key"="2004";"subkey"="400";"value"="15236"}; +{"key"="2005";"subkey"="401";"value"="15244"}; +{"key"="2006";"subkey"="401";"value"="15253"}; +{"key"="2007";"subkey"="401";"value"="15262"}; +{"key"="2008";"subkey"="401";"value"="15270"}; +{"key"="2009";"subkey"="401";"value"="15279"}; +{"key"="2010";"subkey"="402";"value"="15287"}; +{"key"="2011";"subkey"="402";"value"="15296"}; +{"key"="2012";"subkey"="402";"value"="15305"}; +{"key"="2013";"subkey"="402";"value"="15313"}; +{"key"="2014";"subkey"="402";"value"="15322"}; +{"key"="2015";"subkey"="403";"value"="15330"}; +{"key"="2016";"subkey"="403";"value"="15339"}; +{"key"="2017";"subkey"="403";"value"="15348"}; +{"key"="2018";"subkey"="403";"value"="15356"}; +{"key"="2019";"subkey"="403";"value"="15365"}; +{"key"="2020";"subkey"="404";"value"="15373"}; +{"key"="2021";"subkey"="404";"value"="15382"}; +{"key"="2022";"subkey"="404";"value"="15391"}; +{"key"="2023";"subkey"="404";"value"="15399"}; +{"key"="2024";"subkey"="404";"value"="15408"}; +{"key"="2025";"subkey"="405";"value"="15416"}; +{"key"="2026";"subkey"="405";"value"="15425"}; +{"key"="2027";"subkey"="405";"value"="15434"}; +{"key"="2028";"subkey"="405";"value"="15442"}; +{"key"="2029";"subkey"="405";"value"="15451"}; +{"key"="2030";"subkey"="406";"value"="15460"}; +{"key"="2031";"subkey"="406";"value"="15468"}; +{"key"="2032";"subkey"="406";"value"="15477"}; +{"key"="2033";"subkey"="406";"value"="15485"}; +{"key"="2034";"subkey"="406";"value"="15494"}; +{"key"="2035";"subkey"="407";"value"="15503"}; +{"key"="2036";"subkey"="407";"value"="15511"}; +{"key"="2037";"subkey"="407";"value"="15520"}; +{"key"="2038";"subkey"="407";"value"="15528"}; +{"key"="2039";"subkey"="407";"value"="15537"}; +{"key"="2040";"subkey"="408";"value"="15546"}; +{"key"="2041";"subkey"="408";"value"="15554"}; +{"key"="2042";"subkey"="408";"value"="15563"}; +{"key"="2043";"subkey"="408";"value"="15572"}; +{"key"="2044";"subkey"="408";"value"="15580"}; +{"key"="2045";"subkey"="409";"value"="15589"}; +{"key"="2046";"subkey"="409";"value"="15597"}; +{"key"="2047";"subkey"="409";"value"="15606"}; +{"key"="2048";"subkey"="409";"value"="15615"}; +{"key"="2049";"subkey"="409";"value"="15623"}; +{"key"="2050";"subkey"="410";"value"="15632"}; +{"key"="2051";"subkey"="410";"value"="15641"}; +{"key"="2052";"subkey"="410";"value"="15649"}; +{"key"="2053";"subkey"="410";"value"="15658"}; +{"key"="2054";"subkey"="410";"value"="15666"}; +{"key"="2055";"subkey"="411";"value"="15675"}; +{"key"="2056";"subkey"="411";"value"="15684"}; +{"key"="2057";"subkey"="411";"value"="15692"}; +{"key"="2058";"subkey"="411";"value"="15701"}; +{"key"="2059";"subkey"="411";"value"="15710"}; +{"key"="2060";"subkey"="412";"value"="15718"}; +{"key"="2061";"subkey"="412";"value"="15727"}; +{"key"="2062";"subkey"="412";"value"="15736"}; +{"key"="2063";"subkey"="412";"value"="15744"}; +{"key"="2064";"subkey"="412";"value"="15753"}; +{"key"="2065";"subkey"="413";"value"="15761"}; +{"key"="2066";"subkey"="413";"value"="15770"}; +{"key"="2067";"subkey"="413";"value"="15779"}; +{"key"="2068";"subkey"="413";"value"="15787"}; +{"key"="2069";"subkey"="413";"value"="15796"}; +{"key"="2070";"subkey"="414";"value"="15805"}; +{"key"="2071";"subkey"="414";"value"="15813"}; +{"key"="2072";"subkey"="414";"value"="15822"}; +{"key"="2073";"subkey"="414";"value"="15830"}; +{"key"="2074";"subkey"="414";"value"="15839"}; +{"key"="2075";"subkey"="415";"value"="15848"}; +{"key"="2076";"subkey"="415";"value"="15856"}; +{"key"="2077";"subkey"="415";"value"="15865"}; +{"key"="2078";"subkey"="415";"value"="15874"}; +{"key"="2079";"subkey"="415";"value"="15882"}; +{"key"="2080";"subkey"="416";"value"="15891"}; +{"key"="2081";"subkey"="416";"value"="15900"}; +{"key"="2082";"subkey"="416";"value"="15908"}; +{"key"="2083";"subkey"="416";"value"="15917"}; +{"key"="2084";"subkey"="416";"value"="15926"}; +{"key"="2085";"subkey"="417";"value"="15934"}; +{"key"="2086";"subkey"="417";"value"="15943"}; +{"key"="2087";"subkey"="417";"value"="15951"}; +{"key"="2088";"subkey"="417";"value"="15960"}; +{"key"="2089";"subkey"="417";"value"="15969"}; +{"key"="2090";"subkey"="418";"value"="15977"}; +{"key"="2091";"subkey"="418";"value"="15986"}; +{"key"="2092";"subkey"="418";"value"="15995"}; +{"key"="2093";"subkey"="418";"value"="16003"}; +{"key"="2094";"subkey"="418";"value"="16012"}; +{"key"="2095";"subkey"="419";"value"="16021"}; +{"key"="2096";"subkey"="419";"value"="16029"}; +{"key"="2097";"subkey"="419";"value"="16038"}; +{"key"="2098";"subkey"="419";"value"="16047"}; +{"key"="2099";"subkey"="419";"value"="16055"}; +{"key"="2100";"subkey"="420";"value"="16064"}; +{"key"="2101";"subkey"="420";"value"="16073"}; +{"key"="2102";"subkey"="420";"value"="16081"}; +{"key"="2103";"subkey"="420";"value"="16090"}; +{"key"="2104";"subkey"="420";"value"="16098"}; +{"key"="2105";"subkey"="421";"value"="16107"}; +{"key"="2106";"subkey"="421";"value"="16116"}; +{"key"="2107";"subkey"="421";"value"="16124"}; +{"key"="2108";"subkey"="421";"value"="16133"}; +{"key"="2109";"subkey"="421";"value"="16142"}; +{"key"="2110";"subkey"="422";"value"="16150"}; +{"key"="2111";"subkey"="422";"value"="16159"}; +{"key"="2112";"subkey"="422";"value"="16168"}; +{"key"="2113";"subkey"="422";"value"="16176"}; +{"key"="2114";"subkey"="422";"value"="16185"}; +{"key"="2115";"subkey"="423";"value"="16194"}; +{"key"="2116";"subkey"="423";"value"="16202"}; +{"key"="2117";"subkey"="423";"value"="16211"}; +{"key"="2118";"subkey"="423";"value"="16220"}; +{"key"="2119";"subkey"="423";"value"="16228"}; +{"key"="2120";"subkey"="424";"value"="16237"}; +{"key"="2121";"subkey"="424";"value"="16246"}; +{"key"="2122";"subkey"="424";"value"="16254"}; +{"key"="2123";"subkey"="424";"value"="16263"}; +{"key"="2124";"subkey"="424";"value"="16272"}; +{"key"="2125";"subkey"="425";"value"="16280"}; +{"key"="2126";"subkey"="425";"value"="16289"}; +{"key"="2127";"subkey"="425";"value"="16298"}; +{"key"="2128";"subkey"="425";"value"="16306"}; +{"key"="2129";"subkey"="425";"value"="16315"}; +{"key"="2130";"subkey"="426";"value"="16324"}; +{"key"="2131";"subkey"="426";"value"="16332"}; +{"key"="2132";"subkey"="426";"value"="16341"}; +{"key"="2133";"subkey"="426";"value"="16350"}; +{"key"="2134";"subkey"="426";"value"="16358"}; +{"key"="2135";"subkey"="427";"value"="16367"}; +{"key"="2136";"subkey"="427";"value"="16376"}; +{"key"="2137";"subkey"="427";"value"="16384"}; +{"key"="2138";"subkey"="427";"value"="16393"}; +{"key"="2139";"subkey"="427";"value"="16402"}; +{"key"="2140";"subkey"="428";"value"="16410"}; +{"key"="2141";"subkey"="428";"value"="16419"}; +{"key"="2142";"subkey"="428";"value"="16428"}; +{"key"="2143";"subkey"="428";"value"="16436"}; +{"key"="2144";"subkey"="428";"value"="16445"}; +{"key"="2145";"subkey"="429";"value"="16454"}; +{"key"="2146";"subkey"="429";"value"="16462"}; +{"key"="2147";"subkey"="429";"value"="16471"}; +{"key"="2148";"subkey"="429";"value"="16480"}; +{"key"="2149";"subkey"="429";"value"="16488"}; +{"key"="2150";"subkey"="430";"value"="16497"}; +{"key"="2151";"subkey"="430";"value"="16506"}; +{"key"="2152";"subkey"="430";"value"="16514"}; +{"key"="2153";"subkey"="430";"value"="16523"}; +{"key"="2154";"subkey"="430";"value"="16532"}; +{"key"="2155";"subkey"="431";"value"="16540"}; +{"key"="2156";"subkey"="431";"value"="16549"}; +{"key"="2157";"subkey"="431";"value"="16558"}; +{"key"="2158";"subkey"="431";"value"="16566"}; +{"key"="2159";"subkey"="431";"value"="16575"}; +{"key"="2160";"subkey"="432";"value"="16584"}; +{"key"="2161";"subkey"="432";"value"="16592"}; +{"key"="2162";"subkey"="432";"value"="16601"}; +{"key"="2163";"subkey"="432";"value"="16610"}; +{"key"="2164";"subkey"="432";"value"="16618"}; +{"key"="2165";"subkey"="433";"value"="16627"}; +{"key"="2166";"subkey"="433";"value"="16636"}; +{"key"="2167";"subkey"="433";"value"="16644"}; +{"key"="2168";"subkey"="433";"value"="16653"}; +{"key"="2169";"subkey"="433";"value"="16662"}; +{"key"="2170";"subkey"="434";"value"="16670"}; +{"key"="2171";"subkey"="434";"value"="16679"}; +{"key"="2172";"subkey"="434";"value"="16688"}; +{"key"="2173";"subkey"="434";"value"="16697"}; +{"key"="2174";"subkey"="434";"value"="16705"}; +{"key"="2175";"subkey"="435";"value"="16714"}; +{"key"="2176";"subkey"="435";"value"="16723"}; +{"key"="2177";"subkey"="435";"value"="16731"}; +{"key"="2178";"subkey"="435";"value"="16740"}; +{"key"="2179";"subkey"="435";"value"="16749"}; +{"key"="2180";"subkey"="436";"value"="16757"}; +{"key"="2181";"subkey"="436";"value"="16766"}; +{"key"="2182";"subkey"="436";"value"="16775"}; +{"key"="2183";"subkey"="436";"value"="16783"}; +{"key"="2184";"subkey"="436";"value"="16792"}; +{"key"="2185";"subkey"="437";"value"="16801"}; +{"key"="2186";"subkey"="437";"value"="16809"}; +{"key"="2187";"subkey"="437";"value"="16818"}; +{"key"="2188";"subkey"="437";"value"="16827"}; +{"key"="2189";"subkey"="437";"value"="16836"}; +{"key"="2190";"subkey"="438";"value"="16844"}; +{"key"="2191";"subkey"="438";"value"="16853"}; +{"key"="2192";"subkey"="438";"value"="16862"}; +{"key"="2193";"subkey"="438";"value"="16870"}; +{"key"="2194";"subkey"="438";"value"="16879"}; +{"key"="2195";"subkey"="439";"value"="16888"}; +{"key"="2196";"subkey"="439";"value"="16896"}; +{"key"="2197";"subkey"="439";"value"="16905"}; +{"key"="2198";"subkey"="439";"value"="16914"}; +{"key"="2199";"subkey"="439";"value"="16922"}; +{"key"="2200";"subkey"="440";"value"="16931"}; +{"key"="2201";"subkey"="440";"value"="16940"}; +{"key"="2202";"subkey"="440";"value"="16949"}; +{"key"="2203";"subkey"="440";"value"="16957"}; +{"key"="2204";"subkey"="440";"value"="16966"}; +{"key"="2205";"subkey"="441";"value"="16975"}; +{"key"="2206";"subkey"="441";"value"="16983"}; +{"key"="2207";"subkey"="441";"value"="16992"}; +{"key"="2208";"subkey"="441";"value"="17001"}; +{"key"="2209";"subkey"="441";"value"="17009"}; +{"key"="2210";"subkey"="442";"value"="17018"}; +{"key"="2211";"subkey"="442";"value"="17027"}; +{"key"="2212";"subkey"="442";"value"="17036"}; +{"key"="2213";"subkey"="442";"value"="17044"}; +{"key"="2214";"subkey"="442";"value"="17053"}; +{"key"="2215";"subkey"="443";"value"="17062"}; +{"key"="2216";"subkey"="443";"value"="17070"}; +{"key"="2217";"subkey"="443";"value"="17079"}; +{"key"="2218";"subkey"="443";"value"="17088"}; +{"key"="2219";"subkey"="443";"value"="17096"}; +{"key"="2220";"subkey"="444";"value"="17105"}; +{"key"="2221";"subkey"="444";"value"="17114"}; +{"key"="2222";"subkey"="444";"value"="17123"}; +{"key"="2223";"subkey"="444";"value"="17131"}; +{"key"="2224";"subkey"="444";"value"="17140"}; +{"key"="2225";"subkey"="445";"value"="17149"}; +{"key"="2226";"subkey"="445";"value"="17157"}; +{"key"="2227";"subkey"="445";"value"="17166"}; +{"key"="2228";"subkey"="445";"value"="17175"}; +{"key"="2229";"subkey"="445";"value"="17184"}; +{"key"="2230";"subkey"="446";"value"="17192"}; +{"key"="2231";"subkey"="446";"value"="17201"}; +{"key"="2232";"subkey"="446";"value"="17210"}; +{"key"="2233";"subkey"="446";"value"="17218"}; +{"key"="2234";"subkey"="446";"value"="17227"}; +{"key"="2235";"subkey"="447";"value"="17236"}; +{"key"="2236";"subkey"="447";"value"="17245"}; +{"key"="2237";"subkey"="447";"value"="17253"}; +{"key"="2238";"subkey"="447";"value"="17262"}; +{"key"="2239";"subkey"="447";"value"="17271"}; +{"key"="2240";"subkey"="448";"value"="17279"}; +{"key"="2241";"subkey"="448";"value"="17288"}; +{"key"="2242";"subkey"="448";"value"="17297"}; +{"key"="2243";"subkey"="448";"value"="17306"}; +{"key"="2244";"subkey"="448";"value"="17314"}; +{"key"="2245";"subkey"="449";"value"="17323"}; +{"key"="2246";"subkey"="449";"value"="17332"}; +{"key"="2247";"subkey"="449";"value"="17340"}; +{"key"="2248";"subkey"="449";"value"="17349"}; +{"key"="2249";"subkey"="449";"value"="17358"}; +{"key"="2250";"subkey"="450";"value"="17367"}; +{"key"="2251";"subkey"="450";"value"="17375"}; +{"key"="2252";"subkey"="450";"value"="17384"}; +{"key"="2253";"subkey"="450";"value"="17393"}; +{"key"="2254";"subkey"="450";"value"="17401"}; +{"key"="2255";"subkey"="451";"value"="17410"}; +{"key"="2256";"subkey"="451";"value"="17419"}; +{"key"="2257";"subkey"="451";"value"="17428"}; +{"key"="2258";"subkey"="451";"value"="17436"}; +{"key"="2259";"subkey"="451";"value"="17445"}; +{"key"="2260";"subkey"="452";"value"="17454"}; +{"key"="2261";"subkey"="452";"value"="17462"}; +{"key"="2262";"subkey"="452";"value"="17471"}; +{"key"="2263";"subkey"="452";"value"="17480"}; +{"key"="2264";"subkey"="452";"value"="17489"}; +{"key"="2265";"subkey"="453";"value"="17497"}; +{"key"="2266";"subkey"="453";"value"="17506"}; +{"key"="2267";"subkey"="453";"value"="17515"}; +{"key"="2268";"subkey"="453";"value"="17524"}; +{"key"="2269";"subkey"="453";"value"="17532"}; +{"key"="2270";"subkey"="454";"value"="17541"}; +{"key"="2271";"subkey"="454";"value"="17550"}; +{"key"="2272";"subkey"="454";"value"="17558"}; +{"key"="2273";"subkey"="454";"value"="17567"}; +{"key"="2274";"subkey"="454";"value"="17576"}; +{"key"="2275";"subkey"="455";"value"="17585"}; +{"key"="2276";"subkey"="455";"value"="17593"}; +{"key"="2277";"subkey"="455";"value"="17602"}; +{"key"="2278";"subkey"="455";"value"="17611"}; +{"key"="2279";"subkey"="455";"value"="17620"}; +{"key"="2280";"subkey"="456";"value"="17628"}; +{"key"="2281";"subkey"="456";"value"="17637"}; +{"key"="2282";"subkey"="456";"value"="17646"}; +{"key"="2283";"subkey"="456";"value"="17654"}; +{"key"="2284";"subkey"="456";"value"="17663"}; +{"key"="2285";"subkey"="457";"value"="17672"}; +{"key"="2286";"subkey"="457";"value"="17681"}; +{"key"="2287";"subkey"="457";"value"="17689"}; +{"key"="2288";"subkey"="457";"value"="17698"}; +{"key"="2289";"subkey"="457";"value"="17707"}; +{"key"="2290";"subkey"="458";"value"="17716"}; +{"key"="2291";"subkey"="458";"value"="17724"}; +{"key"="2292";"subkey"="458";"value"="17733"}; +{"key"="2293";"subkey"="458";"value"="17742"}; +{"key"="2294";"subkey"="458";"value"="17751"}; +{"key"="2295";"subkey"="459";"value"="17759"}; +{"key"="2296";"subkey"="459";"value"="17768"}; +{"key"="2297";"subkey"="459";"value"="17777"}; +{"key"="2298";"subkey"="459";"value"="17786"}; +{"key"="2299";"subkey"="459";"value"="17794"}; +{"key"="2300";"subkey"="460";"value"="17803"}; +{"key"="2301";"subkey"="460";"value"="17812"}; +{"key"="2302";"subkey"="460";"value"="17821"}; +{"key"="2303";"subkey"="460";"value"="17829"}; +{"key"="2304";"subkey"="460";"value"="17838"}; +{"key"="2305";"subkey"="461";"value"="17847"}; +{"key"="2306";"subkey"="461";"value"="17855"}; +{"key"="2307";"subkey"="461";"value"="17864"}; +{"key"="2308";"subkey"="461";"value"="17873"}; +{"key"="2309";"subkey"="461";"value"="17882"}; +{"key"="2310";"subkey"="462";"value"="17890"}; +{"key"="2311";"subkey"="462";"value"="17899"}; +{"key"="2312";"subkey"="462";"value"="17908"}; +{"key"="2313";"subkey"="462";"value"="17917"}; +{"key"="2314";"subkey"="462";"value"="17925"}; +{"key"="2315";"subkey"="463";"value"="17934"}; +{"key"="2316";"subkey"="463";"value"="17943"}; +{"key"="2317";"subkey"="463";"value"="17952"}; +{"key"="2318";"subkey"="463";"value"="17960"}; +{"key"="2319";"subkey"="463";"value"="17969"}; +{"key"="2320";"subkey"="464";"value"="17978"}; +{"key"="2321";"subkey"="464";"value"="17987"}; +{"key"="2322";"subkey"="464";"value"="17995"}; +{"key"="2323";"subkey"="464";"value"="18004"}; +{"key"="2324";"subkey"="464";"value"="18013"}; +{"key"="2325";"subkey"="465";"value"="18022"}; +{"key"="2326";"subkey"="465";"value"="18030"}; +{"key"="2327";"subkey"="465";"value"="18039"}; +{"key"="2328";"subkey"="465";"value"="18048"}; +{"key"="2329";"subkey"="465";"value"="18057"}; +{"key"="2330";"subkey"="466";"value"="18065"}; +{"key"="2331";"subkey"="466";"value"="18074"}; +{"key"="2332";"subkey"="466";"value"="18083"}; +{"key"="2333";"subkey"="466";"value"="18092"}; +{"key"="2334";"subkey"="466";"value"="18100"}; +{"key"="2335";"subkey"="467";"value"="18109"}; +{"key"="2336";"subkey"="467";"value"="18118"}; +{"key"="2337";"subkey"="467";"value"="18127"}; +{"key"="2338";"subkey"="467";"value"="18135"}; +{"key"="2339";"subkey"="467";"value"="18144"}; +{"key"="2340";"subkey"="468";"value"="18153"}; +{"key"="2341";"subkey"="468";"value"="18162"}; +{"key"="2342";"subkey"="468";"value"="18171"}; +{"key"="2343";"subkey"="468";"value"="18179"}; +{"key"="2344";"subkey"="468";"value"="18188"}; +{"key"="2345";"subkey"="469";"value"="18197"}; +{"key"="2346";"subkey"="469";"value"="18206"}; +{"key"="2347";"subkey"="469";"value"="18214"}; +{"key"="2348";"subkey"="469";"value"="18223"}; +{"key"="2349";"subkey"="469";"value"="18232"}; +{"key"="2350";"subkey"="470";"value"="18241"}; +{"key"="2351";"subkey"="470";"value"="18249"}; +{"key"="2352";"subkey"="470";"value"="18258"}; +{"key"="2353";"subkey"="470";"value"="18267"}; +{"key"="2354";"subkey"="470";"value"="18276"}; +{"key"="2355";"subkey"="471";"value"="18284"}; +{"key"="2356";"subkey"="471";"value"="18293"}; +{"key"="2357";"subkey"="471";"value"="18302"}; +{"key"="2358";"subkey"="471";"value"="18311"}; +{"key"="2359";"subkey"="471";"value"="18319"}; +{"key"="2360";"subkey"="472";"value"="18328"}; +{"key"="2361";"subkey"="472";"value"="18337"}; +{"key"="2362";"subkey"="472";"value"="18346"}; +{"key"="2363";"subkey"="472";"value"="18355"}; +{"key"="2364";"subkey"="472";"value"="18363"}; +{"key"="2365";"subkey"="473";"value"="18372"}; +{"key"="2366";"subkey"="473";"value"="18381"}; +{"key"="2367";"subkey"="473";"value"="18390"}; +{"key"="2368";"subkey"="473";"value"="18398"}; +{"key"="2369";"subkey"="473";"value"="18407"}; +{"key"="2370";"subkey"="474";"value"="18416"}; +{"key"="2371";"subkey"="474";"value"="18425"}; +{"key"="2372";"subkey"="474";"value"="18433"}; +{"key"="2373";"subkey"="474";"value"="18442"}; +{"key"="2374";"subkey"="474";"value"="18451"}; +{"key"="2375";"subkey"="475";"value"="18460"}; +{"key"="2376";"subkey"="475";"value"="18469"}; +{"key"="2377";"subkey"="475";"value"="18477"}; +{"key"="2378";"subkey"="475";"value"="18486"}; +{"key"="2379";"subkey"="475";"value"="18495"}; +{"key"="2380";"subkey"="476";"value"="18504"}; +{"key"="2381";"subkey"="476";"value"="18512"}; +{"key"="2382";"subkey"="476";"value"="18521"}; +{"key"="2383";"subkey"="476";"value"="18530"}; +{"key"="2384";"subkey"="476";"value"="18539"}; +{"key"="2385";"subkey"="477";"value"="18548"}; +{"key"="2386";"subkey"="477";"value"="18556"}; +{"key"="2387";"subkey"="477";"value"="18565"}; +{"key"="2388";"subkey"="477";"value"="18574"}; +{"key"="2389";"subkey"="477";"value"="18583"}; +{"key"="2390";"subkey"="478";"value"="18591"}; +{"key"="2391";"subkey"="478";"value"="18600"}; +{"key"="2392";"subkey"="478";"value"="18609"}; +{"key"="2393";"subkey"="478";"value"="18618"}; +{"key"="2394";"subkey"="478";"value"="18627"}; +{"key"="2395";"subkey"="479";"value"="18635"}; +{"key"="2396";"subkey"="479";"value"="18644"}; +{"key"="2397";"subkey"="479";"value"="18653"}; +{"key"="2398";"subkey"="479";"value"="18662"}; +{"key"="2399";"subkey"="479";"value"="18670"}; +{"key"="2400";"subkey"="480";"value"="18679"}; +{"key"="2401";"subkey"="480";"value"="18688"}; +{"key"="2402";"subkey"="480";"value"="18697"}; +{"key"="2403";"subkey"="480";"value"="18706"}; +{"key"="2404";"subkey"="480";"value"="18714"}; +{"key"="2405";"subkey"="481";"value"="18723"}; +{"key"="2406";"subkey"="481";"value"="18732"}; +{"key"="2407";"subkey"="481";"value"="18741"}; +{"key"="2408";"subkey"="481";"value"="18750"}; +{"key"="2409";"subkey"="481";"value"="18758"}; +{"key"="2410";"subkey"="482";"value"="18767"}; +{"key"="2411";"subkey"="482";"value"="18776"}; +{"key"="2412";"subkey"="482";"value"="18785"}; +{"key"="2413";"subkey"="482";"value"="18793"}; +{"key"="2414";"subkey"="482";"value"="18802"}; +{"key"="2415";"subkey"="483";"value"="18811"}; +{"key"="2416";"subkey"="483";"value"="18820"}; +{"key"="2417";"subkey"="483";"value"="18829"}; +{"key"="2418";"subkey"="483";"value"="18837"}; +{"key"="2419";"subkey"="483";"value"="18846"}; +{"key"="2420";"subkey"="484";"value"="18855"}; +{"key"="2421";"subkey"="484";"value"="18864"}; +{"key"="2422";"subkey"="484";"value"="18873"}; +{"key"="2423";"subkey"="484";"value"="18881"}; +{"key"="2424";"subkey"="484";"value"="18890"}; +{"key"="2425";"subkey"="485";"value"="18899"}; +{"key"="2426";"subkey"="485";"value"="18908"}; +{"key"="2427";"subkey"="485";"value"="18917"}; +{"key"="2428";"subkey"="485";"value"="18925"}; +{"key"="2429";"subkey"="485";"value"="18934"}; +{"key"="2430";"subkey"="486";"value"="18943"}; +{"key"="2431";"subkey"="486";"value"="18952"}; +{"key"="2432";"subkey"="486";"value"="18961"}; +{"key"="2433";"subkey"="486";"value"="18969"}; +{"key"="2434";"subkey"="486";"value"="18978"}; +{"key"="2435";"subkey"="487";"value"="18987"}; +{"key"="2436";"subkey"="487";"value"="18996"}; +{"key"="2437";"subkey"="487";"value"="19005"}; +{"key"="2438";"subkey"="487";"value"="19013"}; +{"key"="2439";"subkey"="487";"value"="19022"}; +{"key"="2440";"subkey"="488";"value"="19031"}; +{"key"="2441";"subkey"="488";"value"="19040"}; +{"key"="2442";"subkey"="488";"value"="19048"}; +{"key"="2443";"subkey"="488";"value"="19057"}; +{"key"="2444";"subkey"="488";"value"="19066"}; +{"key"="2445";"subkey"="489";"value"="19075"}; +{"key"="2446";"subkey"="489";"value"="19084"}; +{"key"="2447";"subkey"="489";"value"="19093"}; +{"key"="2448";"subkey"="489";"value"="19101"}; +{"key"="2449";"subkey"="489";"value"="19110"}; +{"key"="2450";"subkey"="490";"value"="19119"}; +{"key"="2451";"subkey"="490";"value"="19128"}; +{"key"="2452";"subkey"="490";"value"="19137"}; +{"key"="2453";"subkey"="490";"value"="19145"}; +{"key"="2454";"subkey"="490";"value"="19154"}; +{"key"="2455";"subkey"="491";"value"="19163"}; +{"key"="2456";"subkey"="491";"value"="19172"}; +{"key"="2457";"subkey"="491";"value"="19181"}; +{"key"="2458";"subkey"="491";"value"="19189"}; +{"key"="2459";"subkey"="491";"value"="19198"}; +{"key"="2460";"subkey"="492";"value"="19207"}; +{"key"="2461";"subkey"="492";"value"="19216"}; +{"key"="2462";"subkey"="492";"value"="19225"}; +{"key"="2463";"subkey"="492";"value"="19233"}; +{"key"="2464";"subkey"="492";"value"="19242"}; +{"key"="2465";"subkey"="493";"value"="19251"}; +{"key"="2466";"subkey"="493";"value"="19260"}; +{"key"="2467";"subkey"="493";"value"="19269"}; +{"key"="2468";"subkey"="493";"value"="19277"}; +{"key"="2469";"subkey"="493";"value"="19286"}; +{"key"="2470";"subkey"="494";"value"="19295"}; +{"key"="2471";"subkey"="494";"value"="19304"}; +{"key"="2472";"subkey"="494";"value"="19313"}; +{"key"="2473";"subkey"="494";"value"="19322"}; +{"key"="2474";"subkey"="494";"value"="19330"}; +{"key"="2475";"subkey"="495";"value"="19339"}; +{"key"="2476";"subkey"="495";"value"="19348"}; +{"key"="2477";"subkey"="495";"value"="19357"}; +{"key"="2478";"subkey"="495";"value"="19366"}; +{"key"="2479";"subkey"="495";"value"="19374"}; +{"key"="2480";"subkey"="496";"value"="19383"}; +{"key"="2481";"subkey"="496";"value"="19392"}; +{"key"="2482";"subkey"="496";"value"="19401"}; +{"key"="2483";"subkey"="496";"value"="19410"}; +{"key"="2484";"subkey"="496";"value"="19418"}; +{"key"="2485";"subkey"="497";"value"="19427"}; +{"key"="2486";"subkey"="497";"value"="19436"}; +{"key"="2487";"subkey"="497";"value"="19445"}; +{"key"="2488";"subkey"="497";"value"="19454"}; +{"key"="2489";"subkey"="497";"value"="19463"}; +{"key"="2490";"subkey"="498";"value"="19471"}; +{"key"="2491";"subkey"="498";"value"="19480"}; +{"key"="2492";"subkey"="498";"value"="19489"}; +{"key"="2493";"subkey"="498";"value"="19498"}; +{"key"="2494";"subkey"="498";"value"="19507"}; +{"key"="2495";"subkey"="499";"value"="19515"}; +{"key"="2496";"subkey"="499";"value"="19524"}; +{"key"="2497";"subkey"="499";"value"="19533"}; +{"key"="2498";"subkey"="499";"value"="19542"}; +{"key"="2499";"subkey"="499";"value"="19551"}; +{"key"="2500";"subkey"="500";"value"="19560"}; +{"key"="2501";"subkey"="500";"value"="19568"}; +{"key"="2502";"subkey"="500";"value"="19577"}; +{"key"="2503";"subkey"="500";"value"="19586"}; +{"key"="2504";"subkey"="500";"value"="19595"}; +{"key"="2505";"subkey"="501";"value"="19604"}; +{"key"="2506";"subkey"="501";"value"="19613"}; +{"key"="2507";"subkey"="501";"value"="19621"}; +{"key"="2508";"subkey"="501";"value"="19630"}; +{"key"="2509";"subkey"="501";"value"="19639"}; +{"key"="2510";"subkey"="502";"value"="19648"}; +{"key"="2511";"subkey"="502";"value"="19657"}; +{"key"="2512";"subkey"="502";"value"="19666"}; +{"key"="2513";"subkey"="502";"value"="19674"}; +{"key"="2514";"subkey"="502";"value"="19683"}; +{"key"="2515";"subkey"="503";"value"="19692"}; +{"key"="2516";"subkey"="503";"value"="19701"}; +{"key"="2517";"subkey"="503";"value"="19710"}; +{"key"="2518";"subkey"="503";"value"="19719"}; +{"key"="2519";"subkey"="503";"value"="19727"}; +{"key"="2520";"subkey"="504";"value"="19736"}; +{"key"="2521";"subkey"="504";"value"="19745"}; +{"key"="2522";"subkey"="504";"value"="19754"}; +{"key"="2523";"subkey"="504";"value"="19763"}; +{"key"="2524";"subkey"="504";"value"="19772"}; +{"key"="2525";"subkey"="505";"value"="19780"}; +{"key"="2526";"subkey"="505";"value"="19789"}; +{"key"="2527";"subkey"="505";"value"="19798"}; +{"key"="2528";"subkey"="505";"value"="19807"}; +{"key"="2529";"subkey"="505";"value"="19816"}; +{"key"="2530";"subkey"="506";"value"="19825"}; +{"key"="2531";"subkey"="506";"value"="19833"}; +{"key"="2532";"subkey"="506";"value"="19842"}; +{"key"="2533";"subkey"="506";"value"="19851"}; +{"key"="2534";"subkey"="506";"value"="19860"}; +{"key"="2535";"subkey"="507";"value"="19869"}; +{"key"="2536";"subkey"="507";"value"="19878"}; +{"key"="2537";"subkey"="507";"value"="19886"}; +{"key"="2538";"subkey"="507";"value"="19895"}; +{"key"="2539";"subkey"="507";"value"="19904"}; +{"key"="2540";"subkey"="508";"value"="19913"}; +{"key"="2541";"subkey"="508";"value"="19922"}; +{"key"="2542";"subkey"="508";"value"="19931"}; +{"key"="2543";"subkey"="508";"value"="19939"}; +{"key"="2544";"subkey"="508";"value"="19948"}; +{"key"="2545";"subkey"="509";"value"="19957"}; +{"key"="2546";"subkey"="509";"value"="19966"}; +{"key"="2547";"subkey"="509";"value"="19975"}; +{"key"="2548";"subkey"="509";"value"="19984"}; +{"key"="2549";"subkey"="509";"value"="19992"}; +{"key"="2550";"subkey"="510";"value"="20001"}; +{"key"="2551";"subkey"="510";"value"="20010"}; +{"key"="2552";"subkey"="510";"value"="20019"}; +{"key"="2553";"subkey"="510";"value"="20028"}; +{"key"="2554";"subkey"="510";"value"="20037"}; +{"key"="2555";"subkey"="511";"value"="20046"}; +{"key"="2556";"subkey"="511";"value"="20054"}; +{"key"="2557";"subkey"="511";"value"="20063"}; +{"key"="2558";"subkey"="511";"value"="20072"}; +{"key"="2559";"subkey"="511";"value"="20081"}; +{"key"="2560";"subkey"="512";"value"="20090"}; +{"key"="2561";"subkey"="512";"value"="20099"}; +{"key"="2562";"subkey"="512";"value"="20107"}; +{"key"="2563";"subkey"="512";"value"="20116"}; +{"key"="2564";"subkey"="512";"value"="20125"}; +{"key"="2565";"subkey"="513";"value"="20134"}; +{"key"="2566";"subkey"="513";"value"="20143"}; +{"key"="2567";"subkey"="513";"value"="20152"}; +{"key"="2568";"subkey"="513";"value"="20161"}; +{"key"="2569";"subkey"="513";"value"="20169"}; +{"key"="2570";"subkey"="514";"value"="20178"}; +{"key"="2571";"subkey"="514";"value"="20187"}; +{"key"="2572";"subkey"="514";"value"="20196"}; +{"key"="2573";"subkey"="514";"value"="20205"}; +{"key"="2574";"subkey"="514";"value"="20214"}; +{"key"="2575";"subkey"="515";"value"="20223"}; +{"key"="2576";"subkey"="515";"value"="20231"}; +{"key"="2577";"subkey"="515";"value"="20240"}; +{"key"="2578";"subkey"="515";"value"="20249"}; +{"key"="2579";"subkey"="515";"value"="20258"}; +{"key"="2580";"subkey"="516";"value"="20267"}; +{"key"="2581";"subkey"="516";"value"="20276"}; +{"key"="2582";"subkey"="516";"value"="20285"}; +{"key"="2583";"subkey"="516";"value"="20293"}; +{"key"="2584";"subkey"="516";"value"="20302"}; +{"key"="2585";"subkey"="517";"value"="20311"}; +{"key"="2586";"subkey"="517";"value"="20320"}; +{"key"="2587";"subkey"="517";"value"="20329"}; +{"key"="2588";"subkey"="517";"value"="20338"}; +{"key"="2589";"subkey"="517";"value"="20347"}; +{"key"="2590";"subkey"="518";"value"="20355"}; +{"key"="2591";"subkey"="518";"value"="20364"}; +{"key"="2592";"subkey"="518";"value"="20373"}; +{"key"="2593";"subkey"="518";"value"="20382"}; +{"key"="2594";"subkey"="518";"value"="20391"}; +{"key"="2595";"subkey"="519";"value"="20400"}; +{"key"="2596";"subkey"="519";"value"="20409"}; +{"key"="2597";"subkey"="519";"value"="20417"}; +{"key"="2598";"subkey"="519";"value"="20426"}; +{"key"="2599";"subkey"="519";"value"="20435"}; +{"key"="2600";"subkey"="520";"value"="20444"}; +{"key"="2601";"subkey"="520";"value"="20453"}; +{"key"="2602";"subkey"="520";"value"="20462"}; +{"key"="2603";"subkey"="520";"value"="20471"}; +{"key"="2604";"subkey"="520";"value"="20479"}; +{"key"="2605";"subkey"="521";"value"="20488"}; +{"key"="2606";"subkey"="521";"value"="20497"}; +{"key"="2607";"subkey"="521";"value"="20506"}; +{"key"="2608";"subkey"="521";"value"="20515"}; +{"key"="2609";"subkey"="521";"value"="20524"}; +{"key"="2610";"subkey"="522";"value"="20533"}; +{"key"="2611";"subkey"="522";"value"="20542"}; +{"key"="2612";"subkey"="522";"value"="20550"}; +{"key"="2613";"subkey"="522";"value"="20559"}; +{"key"="2614";"subkey"="522";"value"="20568"}; +{"key"="2615";"subkey"="523";"value"="20577"}; +{"key"="2616";"subkey"="523";"value"="20586"}; +{"key"="2617";"subkey"="523";"value"="20595"}; +{"key"="2618";"subkey"="523";"value"="20604"}; +{"key"="2619";"subkey"="523";"value"="20612"}; +{"key"="2620";"subkey"="524";"value"="20621"}; +{"key"="2621";"subkey"="524";"value"="20630"}; +{"key"="2622";"subkey"="524";"value"="20639"}; +{"key"="2623";"subkey"="524";"value"="20648"}; +{"key"="2624";"subkey"="524";"value"="20657"}; +{"key"="2625";"subkey"="525";"value"="20666"}; +{"key"="2626";"subkey"="525";"value"="20675"}; +{"key"="2627";"subkey"="525";"value"="20683"}; +{"key"="2628";"subkey"="525";"value"="20692"}; +{"key"="2629";"subkey"="525";"value"="20701"}; +{"key"="2630";"subkey"="526";"value"="20710"}; +{"key"="2631";"subkey"="526";"value"="20719"}; +{"key"="2632";"subkey"="526";"value"="20728"}; +{"key"="2633";"subkey"="526";"value"="20737"}; +{"key"="2634";"subkey"="526";"value"="20746"}; +{"key"="2635";"subkey"="527";"value"="20754"}; +{"key"="2636";"subkey"="527";"value"="20763"}; +{"key"="2637";"subkey"="527";"value"="20772"}; +{"key"="2638";"subkey"="527";"value"="20781"}; +{"key"="2639";"subkey"="527";"value"="20790"}; +{"key"="2640";"subkey"="528";"value"="20799"}; +{"key"="2641";"subkey"="528";"value"="20808"}; +{"key"="2642";"subkey"="528";"value"="20817"}; +{"key"="2643";"subkey"="528";"value"="20825"}; +{"key"="2644";"subkey"="528";"value"="20834"}; +{"key"="2645";"subkey"="529";"value"="20843"}; +{"key"="2646";"subkey"="529";"value"="20852"}; +{"key"="2647";"subkey"="529";"value"="20861"}; +{"key"="2648";"subkey"="529";"value"="20870"}; +{"key"="2649";"subkey"="529";"value"="20879"}; +{"key"="2650";"subkey"="530";"value"="20888"}; +{"key"="2651";"subkey"="530";"value"="20897"}; +{"key"="2652";"subkey"="530";"value"="20905"}; +{"key"="2653";"subkey"="530";"value"="20914"}; +{"key"="2654";"subkey"="530";"value"="20923"}; +{"key"="2655";"subkey"="531";"value"="20932"}; +{"key"="2656";"subkey"="531";"value"="20941"}; +{"key"="2657";"subkey"="531";"value"="20950"}; +{"key"="2658";"subkey"="531";"value"="20959"}; +{"key"="2659";"subkey"="531";"value"="20968"}; +{"key"="2660";"subkey"="532";"value"="20976"}; +{"key"="2661";"subkey"="532";"value"="20985"}; +{"key"="2662";"subkey"="532";"value"="20994"}; +{"key"="2663";"subkey"="532";"value"="21003"}; +{"key"="2664";"subkey"="532";"value"="21012"}; +{"key"="2665";"subkey"="533";"value"="21021"}; +{"key"="2666";"subkey"="533";"value"="21030"}; +{"key"="2667";"subkey"="533";"value"="21039"}; +{"key"="2668";"subkey"="533";"value"="21048"}; +{"key"="2669";"subkey"="533";"value"="21056"}; +{"key"="2670";"subkey"="534";"value"="21065"}; +{"key"="2671";"subkey"="534";"value"="21074"}; +{"key"="2672";"subkey"="534";"value"="21083"}; +{"key"="2673";"subkey"="534";"value"="21092"}; +{"key"="2674";"subkey"="534";"value"="21101"}; +{"key"="2675";"subkey"="535";"value"="21110"}; +{"key"="2676";"subkey"="535";"value"="21119"}; +{"key"="2677";"subkey"="535";"value"="21128"}; +{"key"="2678";"subkey"="535";"value"="21136"}; +{"key"="2679";"subkey"="535";"value"="21145"}; +{"key"="2680";"subkey"="536";"value"="21154"}; +{"key"="2681";"subkey"="536";"value"="21163"}; +{"key"="2682";"subkey"="536";"value"="21172"}; +{"key"="2683";"subkey"="536";"value"="21181"}; +{"key"="2684";"subkey"="536";"value"="21190"}; +{"key"="2685";"subkey"="537";"value"="21199"}; +{"key"="2686";"subkey"="537";"value"="21208"}; +{"key"="2687";"subkey"="537";"value"="21217"}; +{"key"="2688";"subkey"="537";"value"="21225"}; +{"key"="2689";"subkey"="537";"value"="21234"}; +{"key"="2690";"subkey"="538";"value"="21243"}; +{"key"="2691";"subkey"="538";"value"="21252"}; +{"key"="2692";"subkey"="538";"value"="21261"}; +{"key"="2693";"subkey"="538";"value"="21270"}; +{"key"="2694";"subkey"="538";"value"="21279"}; +{"key"="2695";"subkey"="539";"value"="21288"}; +{"key"="2696";"subkey"="539";"value"="21297"}; +{"key"="2697";"subkey"="539";"value"="21306"}; +{"key"="2698";"subkey"="539";"value"="21314"}; +{"key"="2699";"subkey"="539";"value"="21323"}; +{"key"="2700";"subkey"="540";"value"="21332"}; +{"key"="2701";"subkey"="540";"value"="21341"}; +{"key"="2702";"subkey"="540";"value"="21350"}; +{"key"="2703";"subkey"="540";"value"="21359"}; +{"key"="2704";"subkey"="540";"value"="21368"}; +{"key"="2705";"subkey"="541";"value"="21377"}; +{"key"="2706";"subkey"="541";"value"="21386"}; +{"key"="2707";"subkey"="541";"value"="21395"}; +{"key"="2708";"subkey"="541";"value"="21403"}; +{"key"="2709";"subkey"="541";"value"="21412"}; +{"key"="2710";"subkey"="542";"value"="21421"}; +{"key"="2711";"subkey"="542";"value"="21430"}; +{"key"="2712";"subkey"="542";"value"="21439"}; +{"key"="2713";"subkey"="542";"value"="21448"}; +{"key"="2714";"subkey"="542";"value"="21457"}; +{"key"="2715";"subkey"="543";"value"="21466"}; +{"key"="2716";"subkey"="543";"value"="21475"}; +{"key"="2717";"subkey"="543";"value"="21484"}; +{"key"="2718";"subkey"="543";"value"="21492"}; +{"key"="2719";"subkey"="543";"value"="21501"}; +{"key"="2720";"subkey"="544";"value"="21510"}; +{"key"="2721";"subkey"="544";"value"="21519"}; +{"key"="2722";"subkey"="544";"value"="21528"}; +{"key"="2723";"subkey"="544";"value"="21537"}; +{"key"="2724";"subkey"="544";"value"="21546"}; +{"key"="2725";"subkey"="545";"value"="21555"}; +{"key"="2726";"subkey"="545";"value"="21564"}; +{"key"="2727";"subkey"="545";"value"="21573"}; +{"key"="2728";"subkey"="545";"value"="21582"}; +{"key"="2729";"subkey"="545";"value"="21591"}; +{"key"="2730";"subkey"="546";"value"="21599"}; +{"key"="2731";"subkey"="546";"value"="21608"}; +{"key"="2732";"subkey"="546";"value"="21617"}; +{"key"="2733";"subkey"="546";"value"="21626"}; +{"key"="2734";"subkey"="546";"value"="21635"}; +{"key"="2735";"subkey"="547";"value"="21644"}; +{"key"="2736";"subkey"="547";"value"="21653"}; +{"key"="2737";"subkey"="547";"value"="21662"}; +{"key"="2738";"subkey"="547";"value"="21671"}; +{"key"="2739";"subkey"="547";"value"="21680"}; +{"key"="2740";"subkey"="548";"value"="21689"}; +{"key"="2741";"subkey"="548";"value"="21697"}; +{"key"="2742";"subkey"="548";"value"="21706"}; +{"key"="2743";"subkey"="548";"value"="21715"}; +{"key"="2744";"subkey"="548";"value"="21724"}; +{"key"="2745";"subkey"="549";"value"="21733"}; +{"key"="2746";"subkey"="549";"value"="21742"}; +{"key"="2747";"subkey"="549";"value"="21751"}; +{"key"="2748";"subkey"="549";"value"="21760"}; +{"key"="2749";"subkey"="549";"value"="21769"}; +{"key"="2750";"subkey"="550";"value"="21778"}; +{"key"="2751";"subkey"="550";"value"="21787"}; +{"key"="2752";"subkey"="550";"value"="21796"}; +{"key"="2753";"subkey"="550";"value"="21804"}; +{"key"="2754";"subkey"="550";"value"="21813"}; +{"key"="2755";"subkey"="551";"value"="21822"}; +{"key"="2756";"subkey"="551";"value"="21831"}; +{"key"="2757";"subkey"="551";"value"="21840"}; +{"key"="2758";"subkey"="551";"value"="21849"}; +{"key"="2759";"subkey"="551";"value"="21858"}; +{"key"="2760";"subkey"="552";"value"="21867"}; +{"key"="2761";"subkey"="552";"value"="21876"}; +{"key"="2762";"subkey"="552";"value"="21885"}; +{"key"="2763";"subkey"="552";"value"="21894"}; +{"key"="2764";"subkey"="552";"value"="21903"}; +{"key"="2765";"subkey"="553";"value"="21912"}; +{"key"="2766";"subkey"="553";"value"="21920"}; +{"key"="2767";"subkey"="553";"value"="21929"}; +{"key"="2768";"subkey"="553";"value"="21938"}; +{"key"="2769";"subkey"="553";"value"="21947"}; +{"key"="2770";"subkey"="554";"value"="21956"}; +{"key"="2771";"subkey"="554";"value"="21965"}; +{"key"="2772";"subkey"="554";"value"="21974"}; +{"key"="2773";"subkey"="554";"value"="21983"}; +{"key"="2774";"subkey"="554";"value"="21992"}; +{"key"="2775";"subkey"="555";"value"="22001"}; +{"key"="2776";"subkey"="555";"value"="22010"}; +{"key"="2777";"subkey"="555";"value"="22019"}; +{"key"="2778";"subkey"="555";"value"="22028"}; +{"key"="2779";"subkey"="555";"value"="22037"}; +{"key"="2780";"subkey"="556";"value"="22045"}; +{"key"="2781";"subkey"="556";"value"="22054"}; +{"key"="2782";"subkey"="556";"value"="22063"}; +{"key"="2783";"subkey"="556";"value"="22072"}; +{"key"="2784";"subkey"="556";"value"="22081"}; +{"key"="2785";"subkey"="557";"value"="22090"}; +{"key"="2786";"subkey"="557";"value"="22099"}; +{"key"="2787";"subkey"="557";"value"="22108"}; +{"key"="2788";"subkey"="557";"value"="22117"}; +{"key"="2789";"subkey"="557";"value"="22126"}; +{"key"="2790";"subkey"="558";"value"="22135"}; +{"key"="2791";"subkey"="558";"value"="22144"}; +{"key"="2792";"subkey"="558";"value"="22153"}; +{"key"="2793";"subkey"="558";"value"="22162"}; +{"key"="2794";"subkey"="558";"value"="22171"}; +{"key"="2795";"subkey"="559";"value"="22179"}; +{"key"="2796";"subkey"="559";"value"="22188"}; +{"key"="2797";"subkey"="559";"value"="22197"}; +{"key"="2798";"subkey"="559";"value"="22206"}; +{"key"="2799";"subkey"="559";"value"="22215"}; +{"key"="2800";"subkey"="560";"value"="22224"}; +{"key"="2801";"subkey"="560";"value"="22233"}; +{"key"="2802";"subkey"="560";"value"="22242"}; +{"key"="2803";"subkey"="560";"value"="22251"}; +{"key"="2804";"subkey"="560";"value"="22260"}; +{"key"="2805";"subkey"="561";"value"="22269"}; +{"key"="2806";"subkey"="561";"value"="22278"}; +{"key"="2807";"subkey"="561";"value"="22287"}; +{"key"="2808";"subkey"="561";"value"="22296"}; +{"key"="2809";"subkey"="561";"value"="22305"}; +{"key"="2810";"subkey"="562";"value"="22314"}; +{"key"="2811";"subkey"="562";"value"="22322"}; +{"key"="2812";"subkey"="562";"value"="22331"}; +{"key"="2813";"subkey"="562";"value"="22340"}; +{"key"="2814";"subkey"="562";"value"="22349"}; +{"key"="2815";"subkey"="563";"value"="22358"}; +{"key"="2816";"subkey"="563";"value"="22367"}; +{"key"="2817";"subkey"="563";"value"="22376"}; +{"key"="2818";"subkey"="563";"value"="22385"}; +{"key"="2819";"subkey"="563";"value"="22394"}; +{"key"="2820";"subkey"="564";"value"="22403"}; +{"key"="2821";"subkey"="564";"value"="22412"}; +{"key"="2822";"subkey"="564";"value"="22421"}; +{"key"="2823";"subkey"="564";"value"="22430"}; +{"key"="2824";"subkey"="564";"value"="22439"}; +{"key"="2825";"subkey"="565";"value"="22448"}; +{"key"="2826";"subkey"="565";"value"="22457"}; +{"key"="2827";"subkey"="565";"value"="22466"}; +{"key"="2828";"subkey"="565";"value"="22475"}; +{"key"="2829";"subkey"="565";"value"="22483"}; +{"key"="2830";"subkey"="566";"value"="22492"}; +{"key"="2831";"subkey"="566";"value"="22501"}; +{"key"="2832";"subkey"="566";"value"="22510"}; +{"key"="2833";"subkey"="566";"value"="22519"}; +{"key"="2834";"subkey"="566";"value"="22528"}; +{"key"="2835";"subkey"="567";"value"="22537"}; +{"key"="2836";"subkey"="567";"value"="22546"}; +{"key"="2837";"subkey"="567";"value"="22555"}; +{"key"="2838";"subkey"="567";"value"="22564"}; +{"key"="2839";"subkey"="567";"value"="22573"}; +{"key"="2840";"subkey"="568";"value"="22582"}; +{"key"="2841";"subkey"="568";"value"="22591"}; +{"key"="2842";"subkey"="568";"value"="22600"}; +{"key"="2843";"subkey"="568";"value"="22609"}; +{"key"="2844";"subkey"="568";"value"="22618"}; +{"key"="2845";"subkey"="569";"value"="22627"}; +{"key"="2846";"subkey"="569";"value"="22636"}; +{"key"="2847";"subkey"="569";"value"="22645"}; +{"key"="2848";"subkey"="569";"value"="22654"}; +{"key"="2849";"subkey"="569";"value"="22663"}; +{"key"="2850";"subkey"="570";"value"="22671"}; +{"key"="2851";"subkey"="570";"value"="22680"}; +{"key"="2852";"subkey"="570";"value"="22689"}; +{"key"="2853";"subkey"="570";"value"="22698"}; +{"key"="2854";"subkey"="570";"value"="22707"}; +{"key"="2855";"subkey"="571";"value"="22716"}; +{"key"="2856";"subkey"="571";"value"="22725"}; +{"key"="2857";"subkey"="571";"value"="22734"}; +{"key"="2858";"subkey"="571";"value"="22743"}; +{"key"="2859";"subkey"="571";"value"="22752"}; +{"key"="2860";"subkey"="572";"value"="22761"}; +{"key"="2861";"subkey"="572";"value"="22770"}; +{"key"="2862";"subkey"="572";"value"="22779"}; +{"key"="2863";"subkey"="572";"value"="22788"}; +{"key"="2864";"subkey"="572";"value"="22797"}; +{"key"="2865";"subkey"="573";"value"="22806"}; +{"key"="2866";"subkey"="573";"value"="22815"}; +{"key"="2867";"subkey"="573";"value"="22824"}; +{"key"="2868";"subkey"="573";"value"="22833"}; +{"key"="2869";"subkey"="573";"value"="22842"}; +{"key"="2870";"subkey"="574";"value"="22851"}; +{"key"="2871";"subkey"="574";"value"="22860"}; +{"key"="2872";"subkey"="574";"value"="22869"}; +{"key"="2873";"subkey"="574";"value"="22878"}; +{"key"="2874";"subkey"="574";"value"="22886"}; +{"key"="2875";"subkey"="575";"value"="22895"}; +{"key"="2876";"subkey"="575";"value"="22904"}; +{"key"="2877";"subkey"="575";"value"="22913"}; +{"key"="2878";"subkey"="575";"value"="22922"}; +{"key"="2879";"subkey"="575";"value"="22931"}; +{"key"="2880";"subkey"="576";"value"="22940"}; +{"key"="2881";"subkey"="576";"value"="22949"}; +{"key"="2882";"subkey"="576";"value"="22958"}; +{"key"="2883";"subkey"="576";"value"="22967"}; +{"key"="2884";"subkey"="576";"value"="22976"}; +{"key"="2885";"subkey"="577";"value"="22985"}; +{"key"="2886";"subkey"="577";"value"="22994"}; +{"key"="2887";"subkey"="577";"value"="23003"}; +{"key"="2888";"subkey"="577";"value"="23012"}; +{"key"="2889";"subkey"="577";"value"="23021"}; +{"key"="2890";"subkey"="578";"value"="23030"}; +{"key"="2891";"subkey"="578";"value"="23039"}; +{"key"="2892";"subkey"="578";"value"="23048"}; +{"key"="2893";"subkey"="578";"value"="23057"}; +{"key"="2894";"subkey"="578";"value"="23066"}; +{"key"="2895";"subkey"="579";"value"="23075"}; +{"key"="2896";"subkey"="579";"value"="23084"}; +{"key"="2897";"subkey"="579";"value"="23093"}; +{"key"="2898";"subkey"="579";"value"="23102"}; +{"key"="2899";"subkey"="579";"value"="23111"}; +{"key"="2900";"subkey"="580";"value"="23120"}; +{"key"="2901";"subkey"="580";"value"="23129"}; +{"key"="2902";"subkey"="580";"value"="23138"}; +{"key"="2903";"subkey"="580";"value"="23147"}; +{"key"="2904";"subkey"="580";"value"="23156"}; +{"key"="2905";"subkey"="581";"value"="23165"}; +{"key"="2906";"subkey"="581";"value"="23173"}; +{"key"="2907";"subkey"="581";"value"="23182"}; +{"key"="2908";"subkey"="581";"value"="23191"}; +{"key"="2909";"subkey"="581";"value"="23200"}; +{"key"="2910";"subkey"="582";"value"="23209"}; +{"key"="2911";"subkey"="582";"value"="23218"}; +{"key"="2912";"subkey"="582";"value"="23227"}; +{"key"="2913";"subkey"="582";"value"="23236"}; +{"key"="2914";"subkey"="582";"value"="23245"}; +{"key"="2915";"subkey"="583";"value"="23254"}; +{"key"="2916";"subkey"="583";"value"="23263"}; +{"key"="2917";"subkey"="583";"value"="23272"}; +{"key"="2918";"subkey"="583";"value"="23281"}; +{"key"="2919";"subkey"="583";"value"="23290"}; +{"key"="2920";"subkey"="584";"value"="23299"}; +{"key"="2921";"subkey"="584";"value"="23308"}; +{"key"="2922";"subkey"="584";"value"="23317"}; +{"key"="2923";"subkey"="584";"value"="23326"}; +{"key"="2924";"subkey"="584";"value"="23335"}; +{"key"="2925";"subkey"="585";"value"="23344"}; +{"key"="2926";"subkey"="585";"value"="23353"}; +{"key"="2927";"subkey"="585";"value"="23362"}; +{"key"="2928";"subkey"="585";"value"="23371"}; +{"key"="2929";"subkey"="585";"value"="23380"}; +{"key"="2930";"subkey"="586";"value"="23389"}; +{"key"="2931";"subkey"="586";"value"="23398"}; +{"key"="2932";"subkey"="586";"value"="23407"}; +{"key"="2933";"subkey"="586";"value"="23416"}; +{"key"="2934";"subkey"="586";"value"="23425"}; +{"key"="2935";"subkey"="587";"value"="23434"}; +{"key"="2936";"subkey"="587";"value"="23443"}; +{"key"="2937";"subkey"="587";"value"="23452"}; +{"key"="2938";"subkey"="587";"value"="23461"}; +{"key"="2939";"subkey"="587";"value"="23470"}; +{"key"="2940";"subkey"="588";"value"="23479"}; +{"key"="2941";"subkey"="588";"value"="23488"}; +{"key"="2942";"subkey"="588";"value"="23497"}; +{"key"="2943";"subkey"="588";"value"="23506"}; +{"key"="2944";"subkey"="588";"value"="23515"}; +{"key"="2945";"subkey"="589";"value"="23524"}; +{"key"="2946";"subkey"="589";"value"="23533"}; +{"key"="2947";"subkey"="589";"value"="23542"}; +{"key"="2948";"subkey"="589";"value"="23551"}; +{"key"="2949";"subkey"="589";"value"="23560"}; +{"key"="2950";"subkey"="590";"value"="23569"}; +{"key"="2951";"subkey"="590";"value"="23578"}; +{"key"="2952";"subkey"="590";"value"="23587"}; +{"key"="2953";"subkey"="590";"value"="23596"}; +{"key"="2954";"subkey"="590";"value"="23605"}; +{"key"="2955";"subkey"="591";"value"="23614"}; +{"key"="2956";"subkey"="591";"value"="23623"}; +{"key"="2957";"subkey"="591";"value"="23632"}; +{"key"="2958";"subkey"="591";"value"="23641"}; +{"key"="2959";"subkey"="591";"value"="23650"}; +{"key"="2960";"subkey"="592";"value"="23659"}; +{"key"="2961";"subkey"="592";"value"="23668"}; +{"key"="2962";"subkey"="592";"value"="23677"}; +{"key"="2963";"subkey"="592";"value"="23686"}; +{"key"="2964";"subkey"="592";"value"="23695"}; +{"key"="2965";"subkey"="593";"value"="23704"}; +{"key"="2966";"subkey"="593";"value"="23713"}; +{"key"="2967";"subkey"="593";"value"="23722"}; +{"key"="2968";"subkey"="593";"value"="23731"}; +{"key"="2969";"subkey"="593";"value"="23740"}; +{"key"="2970";"subkey"="594";"value"="23749"}; +{"key"="2971";"subkey"="594";"value"="23758"}; +{"key"="2972";"subkey"="594";"value"="23767"}; +{"key"="2973";"subkey"="594";"value"="23776"}; +{"key"="2974";"subkey"="594";"value"="23785"}; +{"key"="2975";"subkey"="595";"value"="23794"}; +{"key"="2976";"subkey"="595";"value"="23803"}; +{"key"="2977";"subkey"="595";"value"="23812"}; +{"key"="2978";"subkey"="595";"value"="23821"}; +{"key"="2979";"subkey"="595";"value"="23830"}; +{"key"="2980";"subkey"="596";"value"="23839"}; +{"key"="2981";"subkey"="596";"value"="23848"}; +{"key"="2982";"subkey"="596";"value"="23857"}; +{"key"="2983";"subkey"="596";"value"="23866"}; +{"key"="2984";"subkey"="596";"value"="23875"}; +{"key"="2985";"subkey"="597";"value"="23884"}; +{"key"="2986";"subkey"="597";"value"="23893"}; +{"key"="2987";"subkey"="597";"value"="23902"}; +{"key"="2988";"subkey"="597";"value"="23911"}; +{"key"="2989";"subkey"="597";"value"="23920"}; +{"key"="2990";"subkey"="598";"value"="23929"}; +{"key"="2991";"subkey"="598";"value"="23938"}; +{"key"="2992";"subkey"="598";"value"="23947"}; +{"key"="2993";"subkey"="598";"value"="23956"}; +{"key"="2994";"subkey"="598";"value"="23965"}; +{"key"="2995";"subkey"="599";"value"="23974"}; +{"key"="2996";"subkey"="599";"value"="23983"}; +{"key"="2997";"subkey"="599";"value"="23992"}; +{"key"="2998";"subkey"="599";"value"="24001"}; +{"key"="2999";"subkey"="599";"value"="24010"}; +{"key"="3000";"subkey"="600";"value"="24019"}; +{"key"="3001";"subkey"="600";"value"="24028"}; +{"key"="3002";"subkey"="600";"value"="24037"}; +{"key"="3003";"subkey"="600";"value"="24046"}; +{"key"="3004";"subkey"="600";"value"="24055"}; +{"key"="3005";"subkey"="601";"value"="24064"}; +{"key"="3006";"subkey"="601";"value"="24073"}; +{"key"="3007";"subkey"="601";"value"="24082"}; +{"key"="3008";"subkey"="601";"value"="24091"}; +{"key"="3009";"subkey"="601";"value"="24100"}; +{"key"="3010";"subkey"="602";"value"="24109"}; +{"key"="3011";"subkey"="602";"value"="24118"}; +{"key"="3012";"subkey"="602";"value"="24127"}; +{"key"="3013";"subkey"="602";"value"="24136"}; +{"key"="3014";"subkey"="602";"value"="24145"}; +{"key"="3015";"subkey"="603";"value"="24154"}; +{"key"="3016";"subkey"="603";"value"="24163"}; +{"key"="3017";"subkey"="603";"value"="24172"}; +{"key"="3018";"subkey"="603";"value"="24181"}; +{"key"="3019";"subkey"="603";"value"="24190"}; +{"key"="3020";"subkey"="604";"value"="24199"}; +{"key"="3021";"subkey"="604";"value"="24208"}; +{"key"="3022";"subkey"="604";"value"="24217"}; +{"key"="3023";"subkey"="604";"value"="24226"}; +{"key"="3024";"subkey"="604";"value"="24235"}; +{"key"="3025";"subkey"="605";"value"="24244"}; +{"key"="3026";"subkey"="605";"value"="24253"}; +{"key"="3027";"subkey"="605";"value"="24262"}; +{"key"="3028";"subkey"="605";"value"="24271"}; +{"key"="3029";"subkey"="605";"value"="24280"}; +{"key"="3030";"subkey"="606";"value"="24289"}; +{"key"="3031";"subkey"="606";"value"="24298"}; +{"key"="3032";"subkey"="606";"value"="24307"}; +{"key"="3033";"subkey"="606";"value"="24316"}; +{"key"="3034";"subkey"="606";"value"="24325"}; +{"key"="3035";"subkey"="607";"value"="24334"}; +{"key"="3036";"subkey"="607";"value"="24343"}; +{"key"="3037";"subkey"="607";"value"="24352"}; +{"key"="3038";"subkey"="607";"value"="24361"}; +{"key"="3039";"subkey"="607";"value"="24370"}; +{"key"="3040";"subkey"="608";"value"="24379"}; +{"key"="3041";"subkey"="608";"value"="24388"}; +{"key"="3042";"subkey"="608";"value"="24397"}; +{"key"="3043";"subkey"="608";"value"="24406"}; +{"key"="3044";"subkey"="608";"value"="24415"}; +{"key"="3045";"subkey"="609";"value"="24424"}; +{"key"="3046";"subkey"="609";"value"="24433"}; +{"key"="3047";"subkey"="609";"value"="24442"}; +{"key"="3048";"subkey"="609";"value"="24451"}; +{"key"="3049";"subkey"="609";"value"="24460"}; +{"key"="3050";"subkey"="610";"value"="24469"}; +{"key"="3051";"subkey"="610";"value"="24478"}; +{"key"="3052";"subkey"="610";"value"="24487"}; +{"key"="3053";"subkey"="610";"value"="24496"}; +{"key"="3054";"subkey"="610";"value"="24505"}; +{"key"="3055";"subkey"="611";"value"="24514"}; +{"key"="3056";"subkey"="611";"value"="24523"}; +{"key"="3057";"subkey"="611";"value"="24533"}; +{"key"="3058";"subkey"="611";"value"="24542"}; +{"key"="3059";"subkey"="611";"value"="24551"}; +{"key"="3060";"subkey"="612";"value"="24560"}; +{"key"="3061";"subkey"="612";"value"="24569"}; +{"key"="3062";"subkey"="612";"value"="24578"}; +{"key"="3063";"subkey"="612";"value"="24587"}; +{"key"="3064";"subkey"="612";"value"="24596"}; +{"key"="3065";"subkey"="613";"value"="24605"}; +{"key"="3066";"subkey"="613";"value"="24614"}; +{"key"="3067";"subkey"="613";"value"="24623"}; +{"key"="3068";"subkey"="613";"value"="24632"}; +{"key"="3069";"subkey"="613";"value"="24641"}; +{"key"="3070";"subkey"="614";"value"="24650"}; +{"key"="3071";"subkey"="614";"value"="24659"}; +{"key"="3072";"subkey"="614";"value"="24668"}; +{"key"="3073";"subkey"="614";"value"="24677"}; +{"key"="3074";"subkey"="614";"value"="24686"}; +{"key"="3075";"subkey"="615";"value"="24695"}; +{"key"="3076";"subkey"="615";"value"="24704"}; +{"key"="3077";"subkey"="615";"value"="24713"}; +{"key"="3078";"subkey"="615";"value"="24722"}; +{"key"="3079";"subkey"="615";"value"="24731"}; +{"key"="3080";"subkey"="616";"value"="24740"}; +{"key"="3081";"subkey"="616";"value"="24749"}; +{"key"="3082";"subkey"="616";"value"="24758"}; +{"key"="3083";"subkey"="616";"value"="24767"}; +{"key"="3084";"subkey"="616";"value"="24776"}; +{"key"="3085";"subkey"="617";"value"="24785"}; +{"key"="3086";"subkey"="617";"value"="24794"}; +{"key"="3087";"subkey"="617";"value"="24803"}; +{"key"="3088";"subkey"="617";"value"="24812"}; +{"key"="3089";"subkey"="617";"value"="24821"}; +{"key"="3090";"subkey"="618";"value"="24831"}; +{"key"="3091";"subkey"="618";"value"="24840"}; +{"key"="3092";"subkey"="618";"value"="24849"}; +{"key"="3093";"subkey"="618";"value"="24858"}; +{"key"="3094";"subkey"="618";"value"="24867"}; +{"key"="3095";"subkey"="619";"value"="24876"}; +{"key"="3096";"subkey"="619";"value"="24885"}; +{"key"="3097";"subkey"="619";"value"="24894"}; +{"key"="3098";"subkey"="619";"value"="24903"}; +{"key"="3099";"subkey"="619";"value"="24912"}; +{"key"="3100";"subkey"="620";"value"="24921"}; +{"key"="3101";"subkey"="620";"value"="24930"}; +{"key"="3102";"subkey"="620";"value"="24939"}; +{"key"="3103";"subkey"="620";"value"="24948"}; +{"key"="3104";"subkey"="620";"value"="24957"}; +{"key"="3105";"subkey"="621";"value"="24966"}; +{"key"="3106";"subkey"="621";"value"="24975"}; +{"key"="3107";"subkey"="621";"value"="24984"}; +{"key"="3108";"subkey"="621";"value"="24993"}; +{"key"="3109";"subkey"="621";"value"="25002"}; +{"key"="3110";"subkey"="622";"value"="25011"}; +{"key"="3111";"subkey"="622";"value"="25020"}; +{"key"="3112";"subkey"="622";"value"="25029"}; +{"key"="3113";"subkey"="622";"value"="25038"}; +{"key"="3114";"subkey"="622";"value"="25047"}; +{"key"="3115";"subkey"="623";"value"="25057"}; +{"key"="3116";"subkey"="623";"value"="25066"}; +{"key"="3117";"subkey"="623";"value"="25075"}; +{"key"="3118";"subkey"="623";"value"="25084"}; +{"key"="3119";"subkey"="623";"value"="25093"}; +{"key"="3120";"subkey"="624";"value"="25102"}; +{"key"="3121";"subkey"="624";"value"="25111"}; +{"key"="3122";"subkey"="624";"value"="25120"}; +{"key"="3123";"subkey"="624";"value"="25129"}; +{"key"="3124";"subkey"="624";"value"="25138"}; +{"key"="3125";"subkey"="625";"value"="25147"}; +{"key"="3126";"subkey"="625";"value"="25156"}; +{"key"="3127";"subkey"="625";"value"="25165"}; +{"key"="3128";"subkey"="625";"value"="25174"}; +{"key"="3129";"subkey"="625";"value"="25183"}; +{"key"="3130";"subkey"="626";"value"="25192"}; +{"key"="3131";"subkey"="626";"value"="25201"}; +{"key"="3132";"subkey"="626";"value"="25210"}; +{"key"="3133";"subkey"="626";"value"="25219"}; +{"key"="3134";"subkey"="626";"value"="25228"}; +{"key"="3135";"subkey"="627";"value"="25237"}; +{"key"="3136";"subkey"="627";"value"="25247"}; +{"key"="3137";"subkey"="627";"value"="25256"}; +{"key"="3138";"subkey"="627";"value"="25265"}; +{"key"="3139";"subkey"="627";"value"="25274"}; +{"key"="3140";"subkey"="628";"value"="25283"}; +{"key"="3141";"subkey"="628";"value"="25292"}; +{"key"="3142";"subkey"="628";"value"="25301"}; +{"key"="3143";"subkey"="628";"value"="25310"}; +{"key"="3144";"subkey"="628";"value"="25319"}; +{"key"="3145";"subkey"="629";"value"="25328"}; +{"key"="3146";"subkey"="629";"value"="25337"}; +{"key"="3147";"subkey"="629";"value"="25346"}; +{"key"="3148";"subkey"="629";"value"="25355"}; +{"key"="3149";"subkey"="629";"value"="25364"}; +{"key"="3150";"subkey"="630";"value"="25373"}; +{"key"="3151";"subkey"="630";"value"="25382"}; +{"key"="3152";"subkey"="630";"value"="25391"}; +{"key"="3153";"subkey"="630";"value"="25400"}; +{"key"="3154";"subkey"="630";"value"="25409"}; +{"key"="3155";"subkey"="631";"value"="25419"}; +{"key"="3156";"subkey"="631";"value"="25428"}; +{"key"="3157";"subkey"="631";"value"="25437"}; +{"key"="3158";"subkey"="631";"value"="25446"}; +{"key"="3159";"subkey"="631";"value"="25455"}; +{"key"="3160";"subkey"="632";"value"="25464"}; +{"key"="3161";"subkey"="632";"value"="25473"}; +{"key"="3162";"subkey"="632";"value"="25482"}; +{"key"="3163";"subkey"="632";"value"="25491"}; +{"key"="3164";"subkey"="632";"value"="25500"}; +{"key"="3165";"subkey"="633";"value"="25509"}; +{"key"="3166";"subkey"="633";"value"="25518"}; +{"key"="3167";"subkey"="633";"value"="25527"}; +{"key"="3168";"subkey"="633";"value"="25536"}; +{"key"="3169";"subkey"="633";"value"="25545"}; +{"key"="3170";"subkey"="634";"value"="25554"}; +{"key"="3171";"subkey"="634";"value"="25563"}; +{"key"="3172";"subkey"="634";"value"="25573"}; +{"key"="3173";"subkey"="634";"value"="25582"}; +{"key"="3174";"subkey"="634";"value"="25591"}; +{"key"="3175";"subkey"="635";"value"="25600"}; +{"key"="3176";"subkey"="635";"value"="25609"}; +{"key"="3177";"subkey"="635";"value"="25618"}; +{"key"="3178";"subkey"="635";"value"="25627"}; +{"key"="3179";"subkey"="635";"value"="25636"}; +{"key"="3180";"subkey"="636";"value"="25645"}; +{"key"="3181";"subkey"="636";"value"="25654"}; +{"key"="3182";"subkey"="636";"value"="25663"}; +{"key"="3183";"subkey"="636";"value"="25672"}; +{"key"="3184";"subkey"="636";"value"="25681"}; +{"key"="3185";"subkey"="637";"value"="25690"}; +{"key"="3186";"subkey"="637";"value"="25699"}; +{"key"="3187";"subkey"="637";"value"="25709"}; +{"key"="3188";"subkey"="637";"value"="25718"}; +{"key"="3189";"subkey"="637";"value"="25727"}; +{"key"="3190";"subkey"="638";"value"="25736"}; +{"key"="3191";"subkey"="638";"value"="25745"}; +{"key"="3192";"subkey"="638";"value"="25754"}; +{"key"="3193";"subkey"="638";"value"="25763"}; +{"key"="3194";"subkey"="638";"value"="25772"}; +{"key"="3195";"subkey"="639";"value"="25781"}; +{"key"="3196";"subkey"="639";"value"="25790"}; +{"key"="3197";"subkey"="639";"value"="25799"}; +{"key"="3198";"subkey"="639";"value"="25808"}; +{"key"="3199";"subkey"="639";"value"="25817"}; +{"key"="3200";"subkey"="640";"value"="25826"}; +{"key"="3201";"subkey"="640";"value"="25835"}; +{"key"="3202";"subkey"="640";"value"="25845"}; +{"key"="3203";"subkey"="640";"value"="25854"}; +{"key"="3204";"subkey"="640";"value"="25863"}; +{"key"="3205";"subkey"="641";"value"="25872"}; +{"key"="3206";"subkey"="641";"value"="25881"}; +{"key"="3207";"subkey"="641";"value"="25890"}; +{"key"="3208";"subkey"="641";"value"="25899"}; +{"key"="3209";"subkey"="641";"value"="25908"}; +{"key"="3210";"subkey"="642";"value"="25917"}; +{"key"="3211";"subkey"="642";"value"="25926"}; +{"key"="3212";"subkey"="642";"value"="25935"}; +{"key"="3213";"subkey"="642";"value"="25944"}; +{"key"="3214";"subkey"="642";"value"="25953"}; +{"key"="3215";"subkey"="643";"value"="25962"}; +{"key"="3216";"subkey"="643";"value"="25972"}; +{"key"="3217";"subkey"="643";"value"="25981"}; +{"key"="3218";"subkey"="643";"value"="25990"}; +{"key"="3219";"subkey"="643";"value"="25999"}; +{"key"="3220";"subkey"="644";"value"="26008"}; +{"key"="3221";"subkey"="644";"value"="26017"}; +{"key"="3222";"subkey"="644";"value"="26026"}; +{"key"="3223";"subkey"="644";"value"="26035"}; +{"key"="3224";"subkey"="644";"value"="26044"}; +{"key"="3225";"subkey"="645";"value"="26053"}; +{"key"="3226";"subkey"="645";"value"="26062"}; +{"key"="3227";"subkey"="645";"value"="26071"}; +{"key"="3228";"subkey"="645";"value"="26081"}; +{"key"="3229";"subkey"="645";"value"="26090"}; +{"key"="3230";"subkey"="646";"value"="26099"}; +{"key"="3231";"subkey"="646";"value"="26108"}; +{"key"="3232";"subkey"="646";"value"="26117"}; +{"key"="3233";"subkey"="646";"value"="26126"}; +{"key"="3234";"subkey"="646";"value"="26135"}; +{"key"="3235";"subkey"="647";"value"="26144"}; +{"key"="3236";"subkey"="647";"value"="26153"}; +{"key"="3237";"subkey"="647";"value"="26162"}; +{"key"="3238";"subkey"="647";"value"="26171"}; +{"key"="3239";"subkey"="647";"value"="26180"}; +{"key"="3240";"subkey"="648";"value"="26189"}; +{"key"="3241";"subkey"="648";"value"="26199"}; +{"key"="3242";"subkey"="648";"value"="26208"}; +{"key"="3243";"subkey"="648";"value"="26217"}; +{"key"="3244";"subkey"="648";"value"="26226"}; +{"key"="3245";"subkey"="649";"value"="26235"}; +{"key"="3246";"subkey"="649";"value"="26244"}; +{"key"="3247";"subkey"="649";"value"="26253"}; +{"key"="3248";"subkey"="649";"value"="26262"}; +{"key"="3249";"subkey"="649";"value"="26271"}; +{"key"="3250";"subkey"="650";"value"="26280"}; +{"key"="3251";"subkey"="650";"value"="26289"}; +{"key"="3252";"subkey"="650";"value"="26299"}; +{"key"="3253";"subkey"="650";"value"="26308"}; +{"key"="3254";"subkey"="650";"value"="26317"}; +{"key"="3255";"subkey"="651";"value"="26326"}; +{"key"="3256";"subkey"="651";"value"="26335"}; +{"key"="3257";"subkey"="651";"value"="26344"}; +{"key"="3258";"subkey"="651";"value"="26353"}; +{"key"="3259";"subkey"="651";"value"="26362"}; +{"key"="3260";"subkey"="652";"value"="26371"}; +{"key"="3261";"subkey"="652";"value"="26380"}; +{"key"="3262";"subkey"="652";"value"="26389"}; +{"key"="3263";"subkey"="652";"value"="26398"}; +{"key"="3264";"subkey"="652";"value"="26408"}; +{"key"="3265";"subkey"="653";"value"="26417"}; +{"key"="3266";"subkey"="653";"value"="26426"}; +{"key"="3267";"subkey"="653";"value"="26435"}; +{"key"="3268";"subkey"="653";"value"="26444"}; +{"key"="3269";"subkey"="653";"value"="26453"}; +{"key"="3270";"subkey"="654";"value"="26462"}; +{"key"="3271";"subkey"="654";"value"="26471"}; +{"key"="3272";"subkey"="654";"value"="26480"}; +{"key"="3273";"subkey"="654";"value"="26489"}; +{"key"="3274";"subkey"="654";"value"="26498"}; +{"key"="3275";"subkey"="655";"value"="26508"}; +{"key"="3276";"subkey"="655";"value"="26517"}; +{"key"="3277";"subkey"="655";"value"="26526"}; +{"key"="3278";"subkey"="655";"value"="26535"}; +{"key"="3279";"subkey"="655";"value"="26544"}; +{"key"="3280";"subkey"="656";"value"="26553"}; +{"key"="3281";"subkey"="656";"value"="26562"}; +{"key"="3282";"subkey"="656";"value"="26571"}; +{"key"="3283";"subkey"="656";"value"="26580"}; +{"key"="3284";"subkey"="656";"value"="26589"}; +{"key"="3285";"subkey"="657";"value"="26599"}; +{"key"="3286";"subkey"="657";"value"="26608"}; +{"key"="3287";"subkey"="657";"value"="26617"}; +{"key"="3288";"subkey"="657";"value"="26626"}; +{"key"="3289";"subkey"="657";"value"="26635"}; +{"key"="3290";"subkey"="658";"value"="26644"}; +{"key"="3291";"subkey"="658";"value"="26653"}; +{"key"="3292";"subkey"="658";"value"="26662"}; +{"key"="3293";"subkey"="658";"value"="26671"}; +{"key"="3294";"subkey"="658";"value"="26680"}; +{"key"="3295";"subkey"="659";"value"="26690"}; +{"key"="3296";"subkey"="659";"value"="26699"}; +{"key"="3297";"subkey"="659";"value"="26708"}; +{"key"="3298";"subkey"="659";"value"="26717"}; +{"key"="3299";"subkey"="659";"value"="26726"}; +{"key"="3300";"subkey"="660";"value"="26735"}; +{"key"="3301";"subkey"="660";"value"="26744"}; +{"key"="3302";"subkey"="660";"value"="26753"}; +{"key"="3303";"subkey"="660";"value"="26762"}; +{"key"="3304";"subkey"="660";"value"="26771"}; +{"key"="3305";"subkey"="661";"value"="26781"}; +{"key"="3306";"subkey"="661";"value"="26790"}; +{"key"="3307";"subkey"="661";"value"="26799"}; +{"key"="3308";"subkey"="661";"value"="26808"}; +{"key"="3309";"subkey"="661";"value"="26817"}; +{"key"="3310";"subkey"="662";"value"="26826"}; +{"key"="3311";"subkey"="662";"value"="26835"}; +{"key"="3312";"subkey"="662";"value"="26844"}; +{"key"="3313";"subkey"="662";"value"="26853"}; +{"key"="3314";"subkey"="662";"value"="26862"}; +{"key"="3315";"subkey"="663";"value"="26872"}; +{"key"="3316";"subkey"="663";"value"="26881"}; +{"key"="3317";"subkey"="663";"value"="26890"}; +{"key"="3318";"subkey"="663";"value"="26899"}; +{"key"="3319";"subkey"="663";"value"="26908"}; +{"key"="3320";"subkey"="664";"value"="26917"}; +{"key"="3321";"subkey"="664";"value"="26926"}; +{"key"="3322";"subkey"="664";"value"="26935"}; +{"key"="3323";"subkey"="664";"value"="26944"}; +{"key"="3324";"subkey"="664";"value"="26954"}; +{"key"="3325";"subkey"="665";"value"="26963"}; +{"key"="3326";"subkey"="665";"value"="26972"}; +{"key"="3327";"subkey"="665";"value"="26981"}; +{"key"="3328";"subkey"="665";"value"="26990"}; +{"key"="3329";"subkey"="665";"value"="26999"}; +{"key"="3330";"subkey"="666";"value"="27008"}; +{"key"="3331";"subkey"="666";"value"="27017"}; +{"key"="3332";"subkey"="666";"value"="27026"}; +{"key"="3333";"subkey"="666";"value"="27036"}; +{"key"="3334";"subkey"="666";"value"="27045"}; +{"key"="3335";"subkey"="667";"value"="27054"}; +{"key"="3336";"subkey"="667";"value"="27063"}; +{"key"="3337";"subkey"="667";"value"="27072"}; +{"key"="3338";"subkey"="667";"value"="27081"}; +{"key"="3339";"subkey"="667";"value"="27090"}; +{"key"="3340";"subkey"="668";"value"="27099"}; +{"key"="3341";"subkey"="668";"value"="27108"}; +{"key"="3342";"subkey"="668";"value"="27118"}; +{"key"="3343";"subkey"="668";"value"="27127"}; +{"key"="3344";"subkey"="668";"value"="27136"}; +{"key"="3345";"subkey"="669";"value"="27145"}; +{"key"="3346";"subkey"="669";"value"="27154"}; +{"key"="3347";"subkey"="669";"value"="27163"}; +{"key"="3348";"subkey"="669";"value"="27172"}; +{"key"="3349";"subkey"="669";"value"="27181"}; +{"key"="3350";"subkey"="670";"value"="27190"}; +{"key"="3351";"subkey"="670";"value"="27200"}; +{"key"="3352";"subkey"="670";"value"="27209"}; +{"key"="3353";"subkey"="670";"value"="27218"}; +{"key"="3354";"subkey"="670";"value"="27227"}; +{"key"="3355";"subkey"="671";"value"="27236"}; +{"key"="3356";"subkey"="671";"value"="27245"}; +{"key"="3357";"subkey"="671";"value"="27254"}; +{"key"="3358";"subkey"="671";"value"="27263"}; +{"key"="3359";"subkey"="671";"value"="27273"}; +{"key"="3360";"subkey"="672";"value"="27282"}; +{"key"="3361";"subkey"="672";"value"="27291"}; +{"key"="3362";"subkey"="672";"value"="27300"}; +{"key"="3363";"subkey"="672";"value"="27309"}; +{"key"="3364";"subkey"="672";"value"="27318"}; +{"key"="3365";"subkey"="673";"value"="27327"}; +{"key"="3366";"subkey"="673";"value"="27336"}; +{"key"="3367";"subkey"="673";"value"="27346"}; +{"key"="3368";"subkey"="673";"value"="27355"}; +{"key"="3369";"subkey"="673";"value"="27364"}; +{"key"="3370";"subkey"="674";"value"="27373"}; +{"key"="3371";"subkey"="674";"value"="27382"}; +{"key"="3372";"subkey"="674";"value"="27391"}; +{"key"="3373";"subkey"="674";"value"="27400"}; +{"key"="3374";"subkey"="674";"value"="27409"}; +{"key"="3375";"subkey"="675";"value"="27419"}; +{"key"="3376";"subkey"="675";"value"="27428"}; +{"key"="3377";"subkey"="675";"value"="27437"}; +{"key"="3378";"subkey"="675";"value"="27446"}; +{"key"="3379";"subkey"="675";"value"="27455"}; +{"key"="3380";"subkey"="676";"value"="27464"}; +{"key"="3381";"subkey"="676";"value"="27473"}; +{"key"="3382";"subkey"="676";"value"="27482"}; +{"key"="3383";"subkey"="676";"value"="27492"}; +{"key"="3384";"subkey"="676";"value"="27501"}; +{"key"="3385";"subkey"="677";"value"="27510"}; +{"key"="3386";"subkey"="677";"value"="27519"}; +{"key"="3387";"subkey"="677";"value"="27528"}; +{"key"="3388";"subkey"="677";"value"="27537"}; +{"key"="3389";"subkey"="677";"value"="27546"}; +{"key"="3390";"subkey"="678";"value"="27555"}; +{"key"="3391";"subkey"="678";"value"="27565"}; +{"key"="3392";"subkey"="678";"value"="27574"}; +{"key"="3393";"subkey"="678";"value"="27583"}; +{"key"="3394";"subkey"="678";"value"="27592"}; +{"key"="3395";"subkey"="679";"value"="27601"}; +{"key"="3396";"subkey"="679";"value"="27610"}; +{"key"="3397";"subkey"="679";"value"="27619"}; +{"key"="3398";"subkey"="679";"value"="27628"}; +{"key"="3399";"subkey"="679";"value"="27638"}; +{"key"="3400";"subkey"="680";"value"="27647"}; +{"key"="3401";"subkey"="680";"value"="27656"}; +{"key"="3402";"subkey"="680";"value"="27665"}; +{"key"="3403";"subkey"="680";"value"="27674"}; +{"key"="3404";"subkey"="680";"value"="27683"}; +{"key"="3405";"subkey"="681";"value"="27692"}; +{"key"="3406";"subkey"="681";"value"="27701"}; +{"key"="3407";"subkey"="681";"value"="27711"}; +{"key"="3408";"subkey"="681";"value"="27720"}; +{"key"="3409";"subkey"="681";"value"="27729"}; +{"key"="3410";"subkey"="682";"value"="27738"}; +{"key"="3411";"subkey"="682";"value"="27747"}; +{"key"="3412";"subkey"="682";"value"="27756"}; +{"key"="3413";"subkey"="682";"value"="27765"}; +{"key"="3414";"subkey"="682";"value"="27775"}; +{"key"="3415";"subkey"="683";"value"="27784"}; +{"key"="3416";"subkey"="683";"value"="27793"}; +{"key"="3417";"subkey"="683";"value"="27802"}; +{"key"="3418";"subkey"="683";"value"="27811"}; +{"key"="3419";"subkey"="683";"value"="27820"}; +{"key"="3420";"subkey"="684";"value"="27829"}; +{"key"="3421";"subkey"="684";"value"="27839"}; +{"key"="3422";"subkey"="684";"value"="27848"}; +{"key"="3423";"subkey"="684";"value"="27857"}; +{"key"="3424";"subkey"="684";"value"="27866"}; +{"key"="3425";"subkey"="685";"value"="27875"}; +{"key"="3426";"subkey"="685";"value"="27884"}; +{"key"="3427";"subkey"="685";"value"="27893"}; +{"key"="3428";"subkey"="685";"value"="27903"}; +{"key"="3429";"subkey"="685";"value"="27912"}; +{"key"="3430";"subkey"="686";"value"="27921"}; +{"key"="3431";"subkey"="686";"value"="27930"}; +{"key"="3432";"subkey"="686";"value"="27939"}; +{"key"="3433";"subkey"="686";"value"="27948"}; +{"key"="3434";"subkey"="686";"value"="27957"}; +{"key"="3435";"subkey"="687";"value"="27966"}; +{"key"="3436";"subkey"="687";"value"="27976"}; +{"key"="3437";"subkey"="687";"value"="27985"}; +{"key"="3438";"subkey"="687";"value"="27994"}; +{"key"="3439";"subkey"="687";"value"="28003"}; +{"key"="3440";"subkey"="688";"value"="28012"}; +{"key"="3441";"subkey"="688";"value"="28021"}; +{"key"="3442";"subkey"="688";"value"="28030"}; +{"key"="3443";"subkey"="688";"value"="28040"}; +{"key"="3444";"subkey"="688";"value"="28049"}; +{"key"="3445";"subkey"="689";"value"="28058"}; +{"key"="3446";"subkey"="689";"value"="28067"}; +{"key"="3447";"subkey"="689";"value"="28076"}; +{"key"="3448";"subkey"="689";"value"="28085"}; +{"key"="3449";"subkey"="689";"value"="28095"}; +{"key"="3450";"subkey"="690";"value"="28104"}; +{"key"="3451";"subkey"="690";"value"="28113"}; +{"key"="3452";"subkey"="690";"value"="28122"}; +{"key"="3453";"subkey"="690";"value"="28131"}; +{"key"="3454";"subkey"="690";"value"="28140"}; +{"key"="3455";"subkey"="691";"value"="28149"}; +{"key"="3456";"subkey"="691";"value"="28159"}; +{"key"="3457";"subkey"="691";"value"="28168"}; +{"key"="3458";"subkey"="691";"value"="28177"}; +{"key"="3459";"subkey"="691";"value"="28186"}; +{"key"="3460";"subkey"="692";"value"="28195"}; +{"key"="3461";"subkey"="692";"value"="28204"}; +{"key"="3462";"subkey"="692";"value"="28213"}; +{"key"="3463";"subkey"="692";"value"="28223"}; +{"key"="3464";"subkey"="692";"value"="28232"}; +{"key"="3465";"subkey"="693";"value"="28241"}; +{"key"="3466";"subkey"="693";"value"="28250"}; +{"key"="3467";"subkey"="693";"value"="28259"}; +{"key"="3468";"subkey"="693";"value"="28268"}; +{"key"="3469";"subkey"="693";"value"="28277"}; +{"key"="3470";"subkey"="694";"value"="28287"}; +{"key"="3471";"subkey"="694";"value"="28296"}; +{"key"="3472";"subkey"="694";"value"="28305"}; +{"key"="3473";"subkey"="694";"value"="28314"}; +{"key"="3474";"subkey"="694";"value"="28323"}; +{"key"="3475";"subkey"="695";"value"="28332"}; +{"key"="3476";"subkey"="695";"value"="28342"}; +{"key"="3477";"subkey"="695";"value"="28351"}; +{"key"="3478";"subkey"="695";"value"="28360"}; +{"key"="3479";"subkey"="695";"value"="28369"}; +{"key"="3480";"subkey"="696";"value"="28378"}; +{"key"="3481";"subkey"="696";"value"="28387"}; +{"key"="3482";"subkey"="696";"value"="28396"}; +{"key"="3483";"subkey"="696";"value"="28406"}; +{"key"="3484";"subkey"="696";"value"="28415"}; +{"key"="3485";"subkey"="697";"value"="28424"}; +{"key"="3486";"subkey"="697";"value"="28433"}; +{"key"="3487";"subkey"="697";"value"="28442"}; +{"key"="3488";"subkey"="697";"value"="28451"}; +{"key"="3489";"subkey"="697";"value"="28461"}; +{"key"="3490";"subkey"="698";"value"="28470"}; +{"key"="3491";"subkey"="698";"value"="28479"}; +{"key"="3492";"subkey"="698";"value"="28488"}; +{"key"="3493";"subkey"="698";"value"="28497"}; +{"key"="3494";"subkey"="698";"value"="28506"}; +{"key"="3495";"subkey"="699";"value"="28516"}; +{"key"="3496";"subkey"="699";"value"="28525"}; +{"key"="3497";"subkey"="699";"value"="28534"}; +{"key"="3498";"subkey"="699";"value"="28543"}; +{"key"="3499";"subkey"="699";"value"="28552"}; +{"key"="3500";"subkey"="700";"value"="28561"}; +{"key"="3501";"subkey"="700";"value"="28570"}; +{"key"="3502";"subkey"="700";"value"="28580"}; +{"key"="3503";"subkey"="700";"value"="28589"}; +{"key"="3504";"subkey"="700";"value"="28598"}; +{"key"="3505";"subkey"="701";"value"="28607"}; +{"key"="3506";"subkey"="701";"value"="28616"}; +{"key"="3507";"subkey"="701";"value"="28625"}; +{"key"="3508";"subkey"="701";"value"="28635"}; +{"key"="3509";"subkey"="701";"value"="28644"}; +{"key"="3510";"subkey"="702";"value"="28653"}; +{"key"="3511";"subkey"="702";"value"="28662"}; +{"key"="3512";"subkey"="702";"value"="28671"}; +{"key"="3513";"subkey"="702";"value"="28680"}; +{"key"="3514";"subkey"="702";"value"="28690"}; +{"key"="3515";"subkey"="703";"value"="28699"}; +{"key"="3516";"subkey"="703";"value"="28708"}; +{"key"="3517";"subkey"="703";"value"="28717"}; +{"key"="3518";"subkey"="703";"value"="28726"}; +{"key"="3519";"subkey"="703";"value"="28735"}; +{"key"="3520";"subkey"="704";"value"="28745"}; +{"key"="3521";"subkey"="704";"value"="28754"}; +{"key"="3522";"subkey"="704";"value"="28763"}; +{"key"="3523";"subkey"="704";"value"="28772"}; +{"key"="3524";"subkey"="704";"value"="28781"}; +{"key"="3525";"subkey"="705";"value"="28790"}; +{"key"="3526";"subkey"="705";"value"="28800"}; +{"key"="3527";"subkey"="705";"value"="28809"}; +{"key"="3528";"subkey"="705";"value"="28818"}; +{"key"="3529";"subkey"="705";"value"="28827"}; +{"key"="3530";"subkey"="706";"value"="28836"}; +{"key"="3531";"subkey"="706";"value"="28845"}; +{"key"="3532";"subkey"="706";"value"="28855"}; +{"key"="3533";"subkey"="706";"value"="28864"}; +{"key"="3534";"subkey"="706";"value"="28873"}; +{"key"="3535";"subkey"="707";"value"="28882"}; +{"key"="3536";"subkey"="707";"value"="28891"}; +{"key"="3537";"subkey"="707";"value"="28900"}; +{"key"="3538";"subkey"="707";"value"="28910"}; +{"key"="3539";"subkey"="707";"value"="28919"}; +{"key"="3540";"subkey"="708";"value"="28928"}; +{"key"="3541";"subkey"="708";"value"="28937"}; +{"key"="3542";"subkey"="708";"value"="28946"}; +{"key"="3543";"subkey"="708";"value"="28955"}; +{"key"="3544";"subkey"="708";"value"="28965"}; +{"key"="3545";"subkey"="709";"value"="28974"}; +{"key"="3546";"subkey"="709";"value"="28983"}; +{"key"="3547";"subkey"="709";"value"="28992"}; +{"key"="3548";"subkey"="709";"value"="29001"}; +{"key"="3549";"subkey"="709";"value"="29011"}; +{"key"="3550";"subkey"="710";"value"="29020"}; +{"key"="3551";"subkey"="710";"value"="29029"}; +{"key"="3552";"subkey"="710";"value"="29038"}; +{"key"="3553";"subkey"="710";"value"="29047"}; +{"key"="3554";"subkey"="710";"value"="29056"}; +{"key"="3555";"subkey"="711";"value"="29066"}; +{"key"="3556";"subkey"="711";"value"="29075"}; +{"key"="3557";"subkey"="711";"value"="29084"}; +{"key"="3558";"subkey"="711";"value"="29093"}; +{"key"="3559";"subkey"="711";"value"="29102"}; +{"key"="3560";"subkey"="712";"value"="29111"}; +{"key"="3561";"subkey"="712";"value"="29121"}; +{"key"="3562";"subkey"="712";"value"="29130"}; +{"key"="3563";"subkey"="712";"value"="29139"}; +{"key"="3564";"subkey"="712";"value"="29148"}; +{"key"="3565";"subkey"="713";"value"="29157"}; +{"key"="3566";"subkey"="713";"value"="29167"}; +{"key"="3567";"subkey"="713";"value"="29176"}; +{"key"="3568";"subkey"="713";"value"="29185"}; +{"key"="3569";"subkey"="713";"value"="29194"}; +{"key"="3570";"subkey"="714";"value"="29203"}; +{"key"="3571";"subkey"="714";"value"="29212"}; +{"key"="3572";"subkey"="714";"value"="29222"}; +{"key"="3573";"subkey"="714";"value"="29231"}; +{"key"="3574";"subkey"="714";"value"="29240"}; +{"key"="3575";"subkey"="715";"value"="29249"}; +{"key"="3576";"subkey"="715";"value"="29258"}; +{"key"="3577";"subkey"="715";"value"="29268"}; +{"key"="3578";"subkey"="715";"value"="29277"}; +{"key"="3579";"subkey"="715";"value"="29286"}; +{"key"="3580";"subkey"="716";"value"="29295"}; +{"key"="3581";"subkey"="716";"value"="29304"}; +{"key"="3582";"subkey"="716";"value"="29313"}; +{"key"="3583";"subkey"="716";"value"="29323"}; +{"key"="3584";"subkey"="716";"value"="29332"}; +{"key"="3585";"subkey"="717";"value"="29341"}; +{"key"="3586";"subkey"="717";"value"="29350"}; +{"key"="3587";"subkey"="717";"value"="29359"}; +{"key"="3588";"subkey"="717";"value"="29369"}; +{"key"="3589";"subkey"="717";"value"="29378"}; +{"key"="3590";"subkey"="718";"value"="29387"}; +{"key"="3591";"subkey"="718";"value"="29396"}; +{"key"="3592";"subkey"="718";"value"="29405"}; +{"key"="3593";"subkey"="718";"value"="29414"}; +{"key"="3594";"subkey"="718";"value"="29424"}; +{"key"="3595";"subkey"="719";"value"="29433"}; +{"key"="3596";"subkey"="719";"value"="29442"}; +{"key"="3597";"subkey"="719";"value"="29451"}; +{"key"="3598";"subkey"="719";"value"="29460"}; +{"key"="3599";"subkey"="719";"value"="29470"}; +{"key"="3600";"subkey"="720";"value"="29479"}; +{"key"="3601";"subkey"="720";"value"="29488"}; +{"key"="3602";"subkey"="720";"value"="29497"}; +{"key"="3603";"subkey"="720";"value"="29506"}; +{"key"="3604";"subkey"="720";"value"="29516"}; +{"key"="3605";"subkey"="721";"value"="29525"}; +{"key"="3606";"subkey"="721";"value"="29534"}; +{"key"="3607";"subkey"="721";"value"="29543"}; +{"key"="3608";"subkey"="721";"value"="29552"}; +{"key"="3609";"subkey"="721";"value"="29561"}; +{"key"="3610";"subkey"="722";"value"="29571"}; +{"key"="3611";"subkey"="722";"value"="29580"}; +{"key"="3612";"subkey"="722";"value"="29589"}; +{"key"="3613";"subkey"="722";"value"="29598"}; +{"key"="3614";"subkey"="722";"value"="29607"}; +{"key"="3615";"subkey"="723";"value"="29617"}; +{"key"="3616";"subkey"="723";"value"="29626"}; +{"key"="3617";"subkey"="723";"value"="29635"}; +{"key"="3618";"subkey"="723";"value"="29644"}; +{"key"="3619";"subkey"="723";"value"="29653"}; +{"key"="3620";"subkey"="724";"value"="29663"}; +{"key"="3621";"subkey"="724";"value"="29672"}; +{"key"="3622";"subkey"="724";"value"="29681"}; +{"key"="3623";"subkey"="724";"value"="29690"}; +{"key"="3624";"subkey"="724";"value"="29699"}; +{"key"="3625";"subkey"="725";"value"="29709"}; +{"key"="3626";"subkey"="725";"value"="29718"}; +{"key"="3627";"subkey"="725";"value"="29727"}; +{"key"="3628";"subkey"="725";"value"="29736"}; +{"key"="3629";"subkey"="725";"value"="29745"}; +{"key"="3630";"subkey"="726";"value"="29755"}; +{"key"="3631";"subkey"="726";"value"="29764"}; +{"key"="3632";"subkey"="726";"value"="29773"}; +{"key"="3633";"subkey"="726";"value"="29782"}; +{"key"="3634";"subkey"="726";"value"="29791"}; +{"key"="3635";"subkey"="727";"value"="29801"}; +{"key"="3636";"subkey"="727";"value"="29810"}; +{"key"="3637";"subkey"="727";"value"="29819"}; +{"key"="3638";"subkey"="727";"value"="29828"}; +{"key"="3639";"subkey"="727";"value"="29837"}; +{"key"="3640";"subkey"="728";"value"="29847"}; +{"key"="3641";"subkey"="728";"value"="29856"}; +{"key"="3642";"subkey"="728";"value"="29865"}; +{"key"="3643";"subkey"="728";"value"="29874"}; +{"key"="3644";"subkey"="728";"value"="29883"}; +{"key"="3645";"subkey"="729";"value"="29893"}; +{"key"="3646";"subkey"="729";"value"="29902"}; +{"key"="3647";"subkey"="729";"value"="29911"}; +{"key"="3648";"subkey"="729";"value"="29920"}; +{"key"="3649";"subkey"="729";"value"="29929"}; +{"key"="3650";"subkey"="730";"value"="29939"}; +{"key"="3651";"subkey"="730";"value"="29948"}; +{"key"="3652";"subkey"="730";"value"="29957"}; +{"key"="3653";"subkey"="730";"value"="29966"}; +{"key"="3654";"subkey"="730";"value"="29975"}; +{"key"="3655";"subkey"="731";"value"="29985"}; +{"key"="3656";"subkey"="731";"value"="29994"}; +{"key"="3657";"subkey"="731";"value"="30003"}; +{"key"="3658";"subkey"="731";"value"="30012"}; +{"key"="3659";"subkey"="731";"value"="30021"}; +{"key"="3660";"subkey"="732";"value"="30031"}; +{"key"="3661";"subkey"="732";"value"="30040"}; +{"key"="3662";"subkey"="732";"value"="30049"}; +{"key"="3663";"subkey"="732";"value"="30058"}; +{"key"="3664";"subkey"="732";"value"="30067"}; +{"key"="3665";"subkey"="733";"value"="30077"}; +{"key"="3666";"subkey"="733";"value"="30086"}; +{"key"="3667";"subkey"="733";"value"="30095"}; +{"key"="3668";"subkey"="733";"value"="30104"}; +{"key"="3669";"subkey"="733";"value"="30113"}; +{"key"="3670";"subkey"="734";"value"="30123"}; +{"key"="3671";"subkey"="734";"value"="30132"}; +{"key"="3672";"subkey"="734";"value"="30141"}; +{"key"="3673";"subkey"="734";"value"="30150"}; +{"key"="3674";"subkey"="734";"value"="30159"}; +{"key"="3675";"subkey"="735";"value"="30169"}; +{"key"="3676";"subkey"="735";"value"="30178"}; +{"key"="3677";"subkey"="735";"value"="30187"}; +{"key"="3678";"subkey"="735";"value"="30196"}; +{"key"="3679";"subkey"="735";"value"="30206"}; +{"key"="3680";"subkey"="736";"value"="30215"}; +{"key"="3681";"subkey"="736";"value"="30224"}; +{"key"="3682";"subkey"="736";"value"="30233"}; +{"key"="3683";"subkey"="736";"value"="30242"}; +{"key"="3684";"subkey"="736";"value"="30252"}; +{"key"="3685";"subkey"="737";"value"="30261"}; +{"key"="3686";"subkey"="737";"value"="30270"}; +{"key"="3687";"subkey"="737";"value"="30279"}; +{"key"="3688";"subkey"="737";"value"="30288"}; +{"key"="3689";"subkey"="737";"value"="30298"}; +{"key"="3690";"subkey"="738";"value"="30307"}; +{"key"="3691";"subkey"="738";"value"="30316"}; +{"key"="3692";"subkey"="738";"value"="30325"}; +{"key"="3693";"subkey"="738";"value"="30335"}; +{"key"="3694";"subkey"="738";"value"="30344"}; +{"key"="3695";"subkey"="739";"value"="30353"}; +{"key"="3696";"subkey"="739";"value"="30362"}; +{"key"="3697";"subkey"="739";"value"="30371"}; +{"key"="3698";"subkey"="739";"value"="30381"}; +{"key"="3699";"subkey"="739";"value"="30390"}; +{"key"="3700";"subkey"="740";"value"="30399"}; +{"key"="3701";"subkey"="740";"value"="30408"}; +{"key"="3702";"subkey"="740";"value"="30417"}; +{"key"="3703";"subkey"="740";"value"="30427"}; +{"key"="3704";"subkey"="740";"value"="30436"}; +{"key"="3705";"subkey"="741";"value"="30445"}; +{"key"="3706";"subkey"="741";"value"="30454"}; +{"key"="3707";"subkey"="741";"value"="30464"}; +{"key"="3708";"subkey"="741";"value"="30473"}; +{"key"="3709";"subkey"="741";"value"="30482"}; +{"key"="3710";"subkey"="742";"value"="30491"}; +{"key"="3711";"subkey"="742";"value"="30500"}; +{"key"="3712";"subkey"="742";"value"="30510"}; +{"key"="3713";"subkey"="742";"value"="30519"}; +{"key"="3714";"subkey"="742";"value"="30528"}; +{"key"="3715";"subkey"="743";"value"="30537"}; +{"key"="3716";"subkey"="743";"value"="30547"}; +{"key"="3717";"subkey"="743";"value"="30556"}; +{"key"="3718";"subkey"="743";"value"="30565"}; +{"key"="3719";"subkey"="743";"value"="30574"}; +{"key"="3720";"subkey"="744";"value"="30583"}; +{"key"="3721";"subkey"="744";"value"="30593"}; +{"key"="3722";"subkey"="744";"value"="30602"}; +{"key"="3723";"subkey"="744";"value"="30611"}; +{"key"="3724";"subkey"="744";"value"="30620"}; +{"key"="3725";"subkey"="745";"value"="30630"}; +{"key"="3726";"subkey"="745";"value"="30639"}; +{"key"="3727";"subkey"="745";"value"="30648"}; +{"key"="3728";"subkey"="745";"value"="30657"}; +{"key"="3729";"subkey"="745";"value"="30666"}; +{"key"="3730";"subkey"="746";"value"="30676"}; +{"key"="3731";"subkey"="746";"value"="30685"}; +{"key"="3732";"subkey"="746";"value"="30694"}; +{"key"="3733";"subkey"="746";"value"="30703"}; +{"key"="3734";"subkey"="746";"value"="30713"}; +{"key"="3735";"subkey"="747";"value"="30722"}; +{"key"="3736";"subkey"="747";"value"="30731"}; +{"key"="3737";"subkey"="747";"value"="30740"}; +{"key"="3738";"subkey"="747";"value"="30749"}; +{"key"="3739";"subkey"="747";"value"="30759"}; +{"key"="3740";"subkey"="748";"value"="30768"}; +{"key"="3741";"subkey"="748";"value"="30777"}; +{"key"="3742";"subkey"="748";"value"="30786"}; +{"key"="3743";"subkey"="748";"value"="30796"}; +{"key"="3744";"subkey"="748";"value"="30805"}; +{"key"="3745";"subkey"="749";"value"="30814"}; +{"key"="3746";"subkey"="749";"value"="30823"}; +{"key"="3747";"subkey"="749";"value"="30832"}; +{"key"="3748";"subkey"="749";"value"="30842"}; +{"key"="3749";"subkey"="749";"value"="30851"}; +{"key"="3750";"subkey"="750";"value"="30860"}; +{"key"="3751";"subkey"="750";"value"="30869"}; +{"key"="3752";"subkey"="750";"value"="30879"}; +{"key"="3753";"subkey"="750";"value"="30888"}; +{"key"="3754";"subkey"="750";"value"="30897"}; +{"key"="3755";"subkey"="751";"value"="30906"}; +{"key"="3756";"subkey"="751";"value"="30916"}; +{"key"="3757";"subkey"="751";"value"="30925"}; +{"key"="3758";"subkey"="751";"value"="30934"}; +{"key"="3759";"subkey"="751";"value"="30943"}; +{"key"="3760";"subkey"="752";"value"="30952"}; +{"key"="3761";"subkey"="752";"value"="30962"}; +{"key"="3762";"subkey"="752";"value"="30971"}; +{"key"="3763";"subkey"="752";"value"="30980"}; +{"key"="3764";"subkey"="752";"value"="30989"}; +{"key"="3765";"subkey"="753";"value"="30999"}; +{"key"="3766";"subkey"="753";"value"="31008"}; +{"key"="3767";"subkey"="753";"value"="31017"}; +{"key"="3768";"subkey"="753";"value"="31026"}; +{"key"="3769";"subkey"="753";"value"="31036"}; +{"key"="3770";"subkey"="754";"value"="31045"}; +{"key"="3771";"subkey"="754";"value"="31054"}; +{"key"="3772";"subkey"="754";"value"="31063"}; +{"key"="3773";"subkey"="754";"value"="31073"}; +{"key"="3774";"subkey"="754";"value"="31082"}; +{"key"="3775";"subkey"="755";"value"="31091"}; +{"key"="3776";"subkey"="755";"value"="31100"}; +{"key"="3777";"subkey"="755";"value"="31109"}; +{"key"="3778";"subkey"="755";"value"="31119"}; +{"key"="3779";"subkey"="755";"value"="31128"}; +{"key"="3780";"subkey"="756";"value"="31137"}; +{"key"="3781";"subkey"="756";"value"="31146"}; +{"key"="3782";"subkey"="756";"value"="31156"}; +{"key"="3783";"subkey"="756";"value"="31165"}; +{"key"="3784";"subkey"="756";"value"="31174"}; +{"key"="3785";"subkey"="757";"value"="31183"}; +{"key"="3786";"subkey"="757";"value"="31193"}; +{"key"="3787";"subkey"="757";"value"="31202"}; +{"key"="3788";"subkey"="757";"value"="31211"}; +{"key"="3789";"subkey"="757";"value"="31220"}; +{"key"="3790";"subkey"="758";"value"="31230"}; +{"key"="3791";"subkey"="758";"value"="31239"}; +{"key"="3792";"subkey"="758";"value"="31248"}; +{"key"="3793";"subkey"="758";"value"="31257"}; +{"key"="3794";"subkey"="758";"value"="31267"}; +{"key"="3795";"subkey"="759";"value"="31276"}; +{"key"="3796";"subkey"="759";"value"="31285"}; +{"key"="3797";"subkey"="759";"value"="31294"}; +{"key"="3798";"subkey"="759";"value"="31303"}; +{"key"="3799";"subkey"="759";"value"="31313"}; +{"key"="3800";"subkey"="760";"value"="31322"}; +{"key"="3801";"subkey"="760";"value"="31331"}; +{"key"="3802";"subkey"="760";"value"="31340"}; +{"key"="3803";"subkey"="760";"value"="31350"}; +{"key"="3804";"subkey"="760";"value"="31359"}; +{"key"="3805";"subkey"="761";"value"="31368"}; +{"key"="3806";"subkey"="761";"value"="31377"}; +{"key"="3807";"subkey"="761";"value"="31387"}; +{"key"="3808";"subkey"="761";"value"="31396"}; +{"key"="3809";"subkey"="761";"value"="31405"}; +{"key"="3810";"subkey"="762";"value"="31414"}; +{"key"="3811";"subkey"="762";"value"="31424"}; +{"key"="3812";"subkey"="762";"value"="31433"}; +{"key"="3813";"subkey"="762";"value"="31442"}; +{"key"="3814";"subkey"="762";"value"="31451"}; +{"key"="3815";"subkey"="763";"value"="31461"}; +{"key"="3816";"subkey"="763";"value"="31470"}; +{"key"="3817";"subkey"="763";"value"="31479"}; +{"key"="3818";"subkey"="763";"value"="31488"}; +{"key"="3819";"subkey"="763";"value"="31498"}; +{"key"="3820";"subkey"="764";"value"="31507"}; +{"key"="3821";"subkey"="764";"value"="31516"}; +{"key"="3822";"subkey"="764";"value"="31525"}; +{"key"="3823";"subkey"="764";"value"="31535"}; +{"key"="3824";"subkey"="764";"value"="31544"}; +{"key"="3825";"subkey"="765";"value"="31553"}; +{"key"="3826";"subkey"="765";"value"="31562"}; +{"key"="3827";"subkey"="765";"value"="31572"}; +{"key"="3828";"subkey"="765";"value"="31581"}; +{"key"="3829";"subkey"="765";"value"="31590"}; +{"key"="3830";"subkey"="766";"value"="31599"}; +{"key"="3831";"subkey"="766";"value"="31609"}; +{"key"="3832";"subkey"="766";"value"="31618"}; +{"key"="3833";"subkey"="766";"value"="31627"}; +{"key"="3834";"subkey"="766";"value"="31636"}; +{"key"="3835";"subkey"="767";"value"="31646"}; +{"key"="3836";"subkey"="767";"value"="31655"}; +{"key"="3837";"subkey"="767";"value"="31664"}; +{"key"="3838";"subkey"="767";"value"="31673"}; +{"key"="3839";"subkey"="767";"value"="31683"}; +{"key"="3840";"subkey"="768";"value"="31692"}; +{"key"="3841";"subkey"="768";"value"="31701"}; +{"key"="3842";"subkey"="768";"value"="31710"}; +{"key"="3843";"subkey"="768";"value"="31720"}; +{"key"="3844";"subkey"="768";"value"="31729"}; +{"key"="3845";"subkey"="769";"value"="31738"}; +{"key"="3846";"subkey"="769";"value"="31747"}; +{"key"="3847";"subkey"="769";"value"="31757"}; +{"key"="3848";"subkey"="769";"value"="31766"}; +{"key"="3849";"subkey"="769";"value"="31775"}; +{"key"="3850";"subkey"="770";"value"="31784"}; +{"key"="3851";"subkey"="770";"value"="31794"}; +{"key"="3852";"subkey"="770";"value"="31803"}; +{"key"="3853";"subkey"="770";"value"="31812"}; +{"key"="3854";"subkey"="770";"value"="31821"}; +{"key"="3855";"subkey"="771";"value"="31831"}; +{"key"="3856";"subkey"="771";"value"="31840"}; +{"key"="3857";"subkey"="771";"value"="31849"}; +{"key"="3858";"subkey"="771";"value"="31858"}; +{"key"="3859";"subkey"="771";"value"="31868"}; +{"key"="3860";"subkey"="772";"value"="31877"}; +{"key"="3861";"subkey"="772";"value"="31886"}; +{"key"="3862";"subkey"="772";"value"="31896"}; +{"key"="3863";"subkey"="772";"value"="31905"}; +{"key"="3864";"subkey"="772";"value"="31914"}; +{"key"="3865";"subkey"="773";"value"="31923"}; +{"key"="3866";"subkey"="773";"value"="31933"}; +{"key"="3867";"subkey"="773";"value"="31942"}; +{"key"="3868";"subkey"="773";"value"="31951"}; +{"key"="3869";"subkey"="773";"value"="31960"}; +{"key"="3870";"subkey"="774";"value"="31970"}; +{"key"="3871";"subkey"="774";"value"="31979"}; +{"key"="3872";"subkey"="774";"value"="31988"}; +{"key"="3873";"subkey"="774";"value"="31997"}; +{"key"="3874";"subkey"="774";"value"="32007"}; +{"key"="3875";"subkey"="775";"value"="32016"}; +{"key"="3876";"subkey"="775";"value"="32025"}; +{"key"="3877";"subkey"="775";"value"="32034"}; +{"key"="3878";"subkey"="775";"value"="32044"}; +{"key"="3879";"subkey"="775";"value"="32053"}; +{"key"="3880";"subkey"="776";"value"="32062"}; +{"key"="3881";"subkey"="776";"value"="32071"}; +{"key"="3882";"subkey"="776";"value"="32081"}; +{"key"="3883";"subkey"="776";"value"="32090"}; +{"key"="3884";"subkey"="776";"value"="32099"}; +{"key"="3885";"subkey"="777";"value"="32109"}; +{"key"="3886";"subkey"="777";"value"="32118"}; +{"key"="3887";"subkey"="777";"value"="32127"}; +{"key"="3888";"subkey"="777";"value"="32136"}; +{"key"="3889";"subkey"="777";"value"="32146"}; +{"key"="3890";"subkey"="778";"value"="32155"}; +{"key"="3891";"subkey"="778";"value"="32164"}; +{"key"="3892";"subkey"="778";"value"="32173"}; +{"key"="3893";"subkey"="778";"value"="32183"}; +{"key"="3894";"subkey"="778";"value"="32192"}; +{"key"="3895";"subkey"="779";"value"="32201"}; +{"key"="3896";"subkey"="779";"value"="32210"}; +{"key"="3897";"subkey"="779";"value"="32220"}; +{"key"="3898";"subkey"="779";"value"="32229"}; +{"key"="3899";"subkey"="779";"value"="32238"}; +{"key"="3900";"subkey"="780";"value"="32248"}; +{"key"="3901";"subkey"="780";"value"="32257"}; +{"key"="3902";"subkey"="780";"value"="32266"}; +{"key"="3903";"subkey"="780";"value"="32275"}; +{"key"="3904";"subkey"="780";"value"="32285"}; +{"key"="3905";"subkey"="781";"value"="32294"}; +{"key"="3906";"subkey"="781";"value"="32303"}; +{"key"="3907";"subkey"="781";"value"="32312"}; +{"key"="3908";"subkey"="781";"value"="32322"}; +{"key"="3909";"subkey"="781";"value"="32331"}; +{"key"="3910";"subkey"="782";"value"="32340"}; +{"key"="3911";"subkey"="782";"value"="32350"}; +{"key"="3912";"subkey"="782";"value"="32359"}; +{"key"="3913";"subkey"="782";"value"="32368"}; +{"key"="3914";"subkey"="782";"value"="32377"}; +{"key"="3915";"subkey"="783";"value"="32387"}; +{"key"="3916";"subkey"="783";"value"="32396"}; +{"key"="3917";"subkey"="783";"value"="32405"}; +{"key"="3918";"subkey"="783";"value"="32414"}; +{"key"="3919";"subkey"="783";"value"="32424"}; +{"key"="3920";"subkey"="784";"value"="32433"}; +{"key"="3921";"subkey"="784";"value"="32442"}; +{"key"="3922";"subkey"="784";"value"="32452"}; +{"key"="3923";"subkey"="784";"value"="32461"}; +{"key"="3924";"subkey"="784";"value"="32470"}; +{"key"="3925";"subkey"="785";"value"="32479"}; +{"key"="3926";"subkey"="785";"value"="32489"}; +{"key"="3927";"subkey"="785";"value"="32498"}; +{"key"="3928";"subkey"="785";"value"="32507"}; +{"key"="3929";"subkey"="785";"value"="32516"}; +{"key"="3930";"subkey"="786";"value"="32526"}; +{"key"="3931";"subkey"="786";"value"="32535"}; +{"key"="3932";"subkey"="786";"value"="32544"}; +{"key"="3933";"subkey"="786";"value"="32554"}; +{"key"="3934";"subkey"="786";"value"="32563"}; +{"key"="3935";"subkey"="787";"value"="32572"}; +{"key"="3936";"subkey"="787";"value"="32581"}; +{"key"="3937";"subkey"="787";"value"="32591"}; +{"key"="3938";"subkey"="787";"value"="32600"}; +{"key"="3939";"subkey"="787";"value"="32609"}; +{"key"="3940";"subkey"="788";"value"="32619"}; +{"key"="3941";"subkey"="788";"value"="32628"}; +{"key"="3942";"subkey"="788";"value"="32637"}; +{"key"="3943";"subkey"="788";"value"="32646"}; +{"key"="3944";"subkey"="788";"value"="32656"}; +{"key"="3945";"subkey"="789";"value"="32665"}; +{"key"="3946";"subkey"="789";"value"="32674"}; +{"key"="3947";"subkey"="789";"value"="32683"}; +{"key"="3948";"subkey"="789";"value"="32693"}; +{"key"="3949";"subkey"="789";"value"="32702"}; +{"key"="3950";"subkey"="790";"value"="32711"}; +{"key"="3951";"subkey"="790";"value"="32721"}; +{"key"="3952";"subkey"="790";"value"="32730"}; +{"key"="3953";"subkey"="790";"value"="32739"}; +{"key"="3954";"subkey"="790";"value"="32748"}; +{"key"="3955";"subkey"="791";"value"="32758"}; +{"key"="3956";"subkey"="791";"value"="32767"}; +{"key"="3957";"subkey"="791";"value"="32776"}; +{"key"="3958";"subkey"="791";"value"="32786"}; +{"key"="3959";"subkey"="791";"value"="32795"}; +{"key"="3960";"subkey"="792";"value"="32804"}; +{"key"="3961";"subkey"="792";"value"="32813"}; +{"key"="3962";"subkey"="792";"value"="32823"}; +{"key"="3963";"subkey"="792";"value"="32832"}; +{"key"="3964";"subkey"="792";"value"="32841"}; +{"key"="3965";"subkey"="793";"value"="32851"}; +{"key"="3966";"subkey"="793";"value"="32860"}; +{"key"="3967";"subkey"="793";"value"="32869"}; +{"key"="3968";"subkey"="793";"value"="32878"}; +{"key"="3969";"subkey"="793";"value"="32888"}; +{"key"="3970";"subkey"="794";"value"="32897"}; +{"key"="3971";"subkey"="794";"value"="32906"}; +{"key"="3972";"subkey"="794";"value"="32916"}; +{"key"="3973";"subkey"="794";"value"="32925"}; +{"key"="3974";"subkey"="794";"value"="32934"}; +{"key"="3975";"subkey"="795";"value"="32943"}; +{"key"="3976";"subkey"="795";"value"="32953"}; +{"key"="3977";"subkey"="795";"value"="32962"}; +{"key"="3978";"subkey"="795";"value"="32971"}; +{"key"="3979";"subkey"="795";"value"="32981"}; +{"key"="3980";"subkey"="796";"value"="32990"}; +{"key"="3981";"subkey"="796";"value"="32999"}; +{"key"="3982";"subkey"="796";"value"="33008"}; +{"key"="3983";"subkey"="796";"value"="33018"}; +{"key"="3984";"subkey"="796";"value"="33027"}; +{"key"="3985";"subkey"="797";"value"="33036"}; +{"key"="3986";"subkey"="797";"value"="33046"}; +{"key"="3987";"subkey"="797";"value"="33055"}; +{"key"="3988";"subkey"="797";"value"="33064"}; +{"key"="3989";"subkey"="797";"value"="33073"}; +{"key"="3990";"subkey"="798";"value"="33083"}; +{"key"="3991";"subkey"="798";"value"="33092"}; +{"key"="3992";"subkey"="798";"value"="33101"}; +{"key"="3993";"subkey"="798";"value"="33111"}; +{"key"="3994";"subkey"="798";"value"="33120"}; +{"key"="3995";"subkey"="799";"value"="33129"}; +{"key"="3996";"subkey"="799";"value"="33139"}; +{"key"="3997";"subkey"="799";"value"="33148"}; +{"key"="3998";"subkey"="799";"value"="33157"}; +{"key"="3999";"subkey"="799";"value"="33166"}; +{"key"="4000";"subkey"="800";"value"="33176"}; +{"key"="4001";"subkey"="800";"value"="33185"}; +{"key"="4002";"subkey"="800";"value"="33194"}; +{"key"="4003";"subkey"="800";"value"="33204"}; +{"key"="4004";"subkey"="800";"value"="33213"}; +{"key"="4005";"subkey"="801";"value"="33222"}; +{"key"="4006";"subkey"="801";"value"="33231"}; +{"key"="4007";"subkey"="801";"value"="33241"}; +{"key"="4008";"subkey"="801";"value"="33250"}; +{"key"="4009";"subkey"="801";"value"="33259"}; +{"key"="4010";"subkey"="802";"value"="33269"}; +{"key"="4011";"subkey"="802";"value"="33278"}; +{"key"="4012";"subkey"="802";"value"="33287"}; +{"key"="4013";"subkey"="802";"value"="33297"}; +{"key"="4014";"subkey"="802";"value"="33306"}; +{"key"="4015";"subkey"="803";"value"="33315"}; +{"key"="4016";"subkey"="803";"value"="33324"}; +{"key"="4017";"subkey"="803";"value"="33334"}; +{"key"="4018";"subkey"="803";"value"="33343"}; +{"key"="4019";"subkey"="803";"value"="33352"}; +{"key"="4020";"subkey"="804";"value"="33362"}; +{"key"="4021";"subkey"="804";"value"="33371"}; +{"key"="4022";"subkey"="804";"value"="33380"}; +{"key"="4023";"subkey"="804";"value"="33390"}; +{"key"="4024";"subkey"="804";"value"="33399"}; +{"key"="4025";"subkey"="805";"value"="33408"}; +{"key"="4026";"subkey"="805";"value"="33417"}; +{"key"="4027";"subkey"="805";"value"="33427"}; +{"key"="4028";"subkey"="805";"value"="33436"}; +{"key"="4029";"subkey"="805";"value"="33445"}; +{"key"="4030";"subkey"="806";"value"="33455"}; +{"key"="4031";"subkey"="806";"value"="33464"}; +{"key"="4032";"subkey"="806";"value"="33473"}; +{"key"="4033";"subkey"="806";"value"="33483"}; +{"key"="4034";"subkey"="806";"value"="33492"}; +{"key"="4035";"subkey"="807";"value"="33501"}; +{"key"="4036";"subkey"="807";"value"="33510"}; +{"key"="4037";"subkey"="807";"value"="33520"}; +{"key"="4038";"subkey"="807";"value"="33529"}; +{"key"="4039";"subkey"="807";"value"="33538"}; +{"key"="4040";"subkey"="808";"value"="33548"}; +{"key"="4041";"subkey"="808";"value"="33557"}; +{"key"="4042";"subkey"="808";"value"="33566"}; +{"key"="4043";"subkey"="808";"value"="33576"}; +{"key"="4044";"subkey"="808";"value"="33585"}; +{"key"="4045";"subkey"="809";"value"="33594"}; +{"key"="4046";"subkey"="809";"value"="33603"}; +{"key"="4047";"subkey"="809";"value"="33613"}; +{"key"="4048";"subkey"="809";"value"="33622"}; +{"key"="4049";"subkey"="809";"value"="33631"}; +{"key"="4050";"subkey"="810";"value"="33641"}; +{"key"="4051";"subkey"="810";"value"="33650"}; +{"key"="4052";"subkey"="810";"value"="33659"}; +{"key"="4053";"subkey"="810";"value"="33669"}; +{"key"="4054";"subkey"="810";"value"="33678"}; +{"key"="4055";"subkey"="811";"value"="33687"}; +{"key"="4056";"subkey"="811";"value"="33697"}; +{"key"="4057";"subkey"="811";"value"="33706"}; +{"key"="4058";"subkey"="811";"value"="33715"}; +{"key"="4059";"subkey"="811";"value"="33724"}; +{"key"="4060";"subkey"="812";"value"="33734"}; +{"key"="4061";"subkey"="812";"value"="33743"}; +{"key"="4062";"subkey"="812";"value"="33752"}; +{"key"="4063";"subkey"="812";"value"="33762"}; +{"key"="4064";"subkey"="812";"value"="33771"}; +{"key"="4065";"subkey"="813";"value"="33780"}; +{"key"="4066";"subkey"="813";"value"="33790"}; +{"key"="4067";"subkey"="813";"value"="33799"}; +{"key"="4068";"subkey"="813";"value"="33808"}; +{"key"="4069";"subkey"="813";"value"="33818"}; +{"key"="4070";"subkey"="814";"value"="33827"}; +{"key"="4071";"subkey"="814";"value"="33836"}; +{"key"="4072";"subkey"="814";"value"="33846"}; +{"key"="4073";"subkey"="814";"value"="33855"}; +{"key"="4074";"subkey"="814";"value"="33864"}; +{"key"="4075";"subkey"="815";"value"="33873"}; +{"key"="4076";"subkey"="815";"value"="33883"}; +{"key"="4077";"subkey"="815";"value"="33892"}; +{"key"="4078";"subkey"="815";"value"="33901"}; +{"key"="4079";"subkey"="815";"value"="33911"}; +{"key"="4080";"subkey"="816";"value"="33920"}; +{"key"="4081";"subkey"="816";"value"="33929"}; +{"key"="4082";"subkey"="816";"value"="33939"}; +{"key"="4083";"subkey"="816";"value"="33948"}; +{"key"="4084";"subkey"="816";"value"="33957"}; +{"key"="4085";"subkey"="817";"value"="33967"}; +{"key"="4086";"subkey"="817";"value"="33976"}; +{"key"="4087";"subkey"="817";"value"="33985"}; +{"key"="4088";"subkey"="817";"value"="33995"}; +{"key"="4089";"subkey"="817";"value"="34004"}; +{"key"="4090";"subkey"="818";"value"="34013"}; +{"key"="4091";"subkey"="818";"value"="34022"}; +{"key"="4092";"subkey"="818";"value"="34032"}; +{"key"="4093";"subkey"="818";"value"="34041"}; +{"key"="4094";"subkey"="818";"value"="34050"}; +{"key"="4095";"subkey"="819";"value"="34060"}; +{"key"="4096";"subkey"="819";"value"="34069"}; +{"key"="4097";"subkey"="819";"value"="34078"}; +{"key"="4098";"subkey"="819";"value"="34088"}; +{"key"="4099";"subkey"="819";"value"="34097"}; +{"key"="4100";"subkey"="820";"value"="34106"}; +{"key"="4101";"subkey"="820";"value"="34116"}; +{"key"="4102";"subkey"="820";"value"="34125"}; +{"key"="4103";"subkey"="820";"value"="34134"}; +{"key"="4104";"subkey"="820";"value"="34144"}; +{"key"="4105";"subkey"="821";"value"="34153"}; +{"key"="4106";"subkey"="821";"value"="34162"}; +{"key"="4107";"subkey"="821";"value"="34172"}; +{"key"="4108";"subkey"="821";"value"="34181"}; +{"key"="4109";"subkey"="821";"value"="34190"}; +{"key"="4110";"subkey"="822";"value"="34200"}; +{"key"="4111";"subkey"="822";"value"="34209"}; +{"key"="4112";"subkey"="822";"value"="34218"}; +{"key"="4113";"subkey"="822";"value"="34228"}; +{"key"="4114";"subkey"="822";"value"="34237"}; +{"key"="4115";"subkey"="823";"value"="34246"}; +{"key"="4116";"subkey"="823";"value"="34255"}; +{"key"="4117";"subkey"="823";"value"="34265"}; +{"key"="4118";"subkey"="823";"value"="34274"}; +{"key"="4119";"subkey"="823";"value"="34283"}; +{"key"="4120";"subkey"="824";"value"="34293"}; +{"key"="4121";"subkey"="824";"value"="34302"}; +{"key"="4122";"subkey"="824";"value"="34311"}; +{"key"="4123";"subkey"="824";"value"="34321"}; +{"key"="4124";"subkey"="824";"value"="34330"}; +{"key"="4125";"subkey"="825";"value"="34339"}; +{"key"="4126";"subkey"="825";"value"="34349"}; +{"key"="4127";"subkey"="825";"value"="34358"}; +{"key"="4128";"subkey"="825";"value"="34367"}; +{"key"="4129";"subkey"="825";"value"="34377"}; +{"key"="4130";"subkey"="826";"value"="34386"}; +{"key"="4131";"subkey"="826";"value"="34395"}; +{"key"="4132";"subkey"="826";"value"="34405"}; +{"key"="4133";"subkey"="826";"value"="34414"}; +{"key"="4134";"subkey"="826";"value"="34423"}; +{"key"="4135";"subkey"="827";"value"="34433"}; +{"key"="4136";"subkey"="827";"value"="34442"}; +{"key"="4137";"subkey"="827";"value"="34451"}; +{"key"="4138";"subkey"="827";"value"="34461"}; +{"key"="4139";"subkey"="827";"value"="34470"}; +{"key"="4140";"subkey"="828";"value"="34479"}; +{"key"="4141";"subkey"="828";"value"="34489"}; +{"key"="4142";"subkey"="828";"value"="34498"}; +{"key"="4143";"subkey"="828";"value"="34507"}; +{"key"="4144";"subkey"="828";"value"="34517"}; +{"key"="4145";"subkey"="829";"value"="34526"}; +{"key"="4146";"subkey"="829";"value"="34535"}; +{"key"="4147";"subkey"="829";"value"="34545"}; +{"key"="4148";"subkey"="829";"value"="34554"}; +{"key"="4149";"subkey"="829";"value"="34563"}; +{"key"="4150";"subkey"="830";"value"="34573"}; +{"key"="4151";"subkey"="830";"value"="34582"}; +{"key"="4152";"subkey"="830";"value"="34591"}; +{"key"="4153";"subkey"="830";"value"="34601"}; +{"key"="4154";"subkey"="830";"value"="34610"}; +{"key"="4155";"subkey"="831";"value"="34619"}; +{"key"="4156";"subkey"="831";"value"="34629"}; +{"key"="4157";"subkey"="831";"value"="34638"}; +{"key"="4158";"subkey"="831";"value"="34647"}; +{"key"="4159";"subkey"="831";"value"="34657"}; +{"key"="4160";"subkey"="832";"value"="34666"}; +{"key"="4161";"subkey"="832";"value"="34675"}; +{"key"="4162";"subkey"="832";"value"="34685"}; +{"key"="4163";"subkey"="832";"value"="34694"}; +{"key"="4164";"subkey"="832";"value"="34703"}; +{"key"="4165";"subkey"="833";"value"="34713"}; +{"key"="4166";"subkey"="833";"value"="34722"}; +{"key"="4167";"subkey"="833";"value"="34731"}; +{"key"="4168";"subkey"="833";"value"="34741"}; +{"key"="4169";"subkey"="833";"value"="34750"}; +{"key"="4170";"subkey"="834";"value"="34759"}; +{"key"="4171";"subkey"="834";"value"="34769"}; +{"key"="4172";"subkey"="834";"value"="34778"}; +{"key"="4173";"subkey"="834";"value"="34787"}; +{"key"="4174";"subkey"="834";"value"="34797"}; +{"key"="4175";"subkey"="835";"value"="34806"}; +{"key"="4176";"subkey"="835";"value"="34815"}; +{"key"="4177";"subkey"="835";"value"="34825"}; +{"key"="4178";"subkey"="835";"value"="34834"}; +{"key"="4179";"subkey"="835";"value"="34843"}; +{"key"="4180";"subkey"="836";"value"="34853"}; +{"key"="4181";"subkey"="836";"value"="34862"}; +{"key"="4182";"subkey"="836";"value"="34871"}; +{"key"="4183";"subkey"="836";"value"="34881"}; +{"key"="4184";"subkey"="836";"value"="34890"}; +{"key"="4185";"subkey"="837";"value"="34899"}; +{"key"="4186";"subkey"="837";"value"="34909"}; +{"key"="4187";"subkey"="837";"value"="34918"}; +{"key"="4188";"subkey"="837";"value"="34927"}; +{"key"="4189";"subkey"="837";"value"="34937"}; +{"key"="4190";"subkey"="838";"value"="34946"}; +{"key"="4191";"subkey"="838";"value"="34955"}; +{"key"="4192";"subkey"="838";"value"="34965"}; +{"key"="4193";"subkey"="838";"value"="34974"}; +{"key"="4194";"subkey"="838";"value"="34983"}; +{"key"="4195";"subkey"="839";"value"="34993"}; +{"key"="4196";"subkey"="839";"value"="35002"}; +{"key"="4197";"subkey"="839";"value"="35011"}; +{"key"="4198";"subkey"="839";"value"="35021"}; +{"key"="4199";"subkey"="839";"value"="35030"}; +{"key"="4200";"subkey"="840";"value"="35039"}; +{"key"="4201";"subkey"="840";"value"="35049"}; +{"key"="4202";"subkey"="840";"value"="35058"}; +{"key"="4203";"subkey"="840";"value"="35067"}; +{"key"="4204";"subkey"="840";"value"="35077"}; +{"key"="4205";"subkey"="841";"value"="35086"}; +{"key"="4206";"subkey"="841";"value"="35095"}; +{"key"="4207";"subkey"="841";"value"="35105"}; +{"key"="4208";"subkey"="841";"value"="35114"}; +{"key"="4209";"subkey"="841";"value"="35124"}; +{"key"="4210";"subkey"="842";"value"="35133"}; +{"key"="4211";"subkey"="842";"value"="35142"}; +{"key"="4212";"subkey"="842";"value"="35152"}; +{"key"="4213";"subkey"="842";"value"="35161"}; +{"key"="4214";"subkey"="842";"value"="35170"}; +{"key"="4215";"subkey"="843";"value"="35180"}; +{"key"="4216";"subkey"="843";"value"="35189"}; +{"key"="4217";"subkey"="843";"value"="35198"}; +{"key"="4218";"subkey"="843";"value"="35208"}; +{"key"="4219";"subkey"="843";"value"="35217"}; +{"key"="4220";"subkey"="844";"value"="35226"}; +{"key"="4221";"subkey"="844";"value"="35236"}; +{"key"="4222";"subkey"="844";"value"="35245"}; +{"key"="4223";"subkey"="844";"value"="35254"}; +{"key"="4224";"subkey"="844";"value"="35264"}; +{"key"="4225";"subkey"="845";"value"="35273"}; +{"key"="4226";"subkey"="845";"value"="35282"}; +{"key"="4227";"subkey"="845";"value"="35292"}; +{"key"="4228";"subkey"="845";"value"="35301"}; +{"key"="4229";"subkey"="845";"value"="35310"}; +{"key"="4230";"subkey"="846";"value"="35320"}; +{"key"="4231";"subkey"="846";"value"="35329"}; +{"key"="4232";"subkey"="846";"value"="35339"}; +{"key"="4233";"subkey"="846";"value"="35348"}; +{"key"="4234";"subkey"="846";"value"="35357"}; +{"key"="4235";"subkey"="847";"value"="35367"}; +{"key"="4236";"subkey"="847";"value"="35376"}; +{"key"="4237";"subkey"="847";"value"="35385"}; +{"key"="4238";"subkey"="847";"value"="35395"}; +{"key"="4239";"subkey"="847";"value"="35404"}; +{"key"="4240";"subkey"="848";"value"="35413"}; +{"key"="4241";"subkey"="848";"value"="35423"}; +{"key"="4242";"subkey"="848";"value"="35432"}; +{"key"="4243";"subkey"="848";"value"="35441"}; +{"key"="4244";"subkey"="848";"value"="35451"}; +{"key"="4245";"subkey"="849";"value"="35460"}; +{"key"="4246";"subkey"="849";"value"="35469"}; +{"key"="4247";"subkey"="849";"value"="35479"}; +{"key"="4248";"subkey"="849";"value"="35488"}; +{"key"="4249";"subkey"="849";"value"="35498"}; +{"key"="4250";"subkey"="850";"value"="35507"}; +{"key"="4251";"subkey"="850";"value"="35516"}; +{"key"="4252";"subkey"="850";"value"="35526"}; +{"key"="4253";"subkey"="850";"value"="35535"}; +{"key"="4254";"subkey"="850";"value"="35544"}; +{"key"="4255";"subkey"="851";"value"="35554"}; +{"key"="4256";"subkey"="851";"value"="35563"}; +{"key"="4257";"subkey"="851";"value"="35572"}; +{"key"="4258";"subkey"="851";"value"="35582"}; +{"key"="4259";"subkey"="851";"value"="35591"}; +{"key"="4260";"subkey"="852";"value"="35600"}; +{"key"="4261";"subkey"="852";"value"="35610"}; +{"key"="4262";"subkey"="852";"value"="35619"}; +{"key"="4263";"subkey"="852";"value"="35628"}; +{"key"="4264";"subkey"="852";"value"="35638"}; +{"key"="4265";"subkey"="853";"value"="35647"}; +{"key"="4266";"subkey"="853";"value"="35657"}; +{"key"="4267";"subkey"="853";"value"="35666"}; +{"key"="4268";"subkey"="853";"value"="35675"}; +{"key"="4269";"subkey"="853";"value"="35685"}; +{"key"="4270";"subkey"="854";"value"="35694"}; +{"key"="4271";"subkey"="854";"value"="35703"}; +{"key"="4272";"subkey"="854";"value"="35713"}; +{"key"="4273";"subkey"="854";"value"="35722"}; +{"key"="4274";"subkey"="854";"value"="35731"}; +{"key"="4275";"subkey"="855";"value"="35741"}; +{"key"="4276";"subkey"="855";"value"="35750"}; +{"key"="4277";"subkey"="855";"value"="35760"}; +{"key"="4278";"subkey"="855";"value"="35769"}; +{"key"="4279";"subkey"="855";"value"="35778"}; +{"key"="4280";"subkey"="856";"value"="35788"}; +{"key"="4281";"subkey"="856";"value"="35797"}; +{"key"="4282";"subkey"="856";"value"="35806"}; +{"key"="4283";"subkey"="856";"value"="35816"}; +{"key"="4284";"subkey"="856";"value"="35825"}; +{"key"="4285";"subkey"="857";"value"="35834"}; +{"key"="4286";"subkey"="857";"value"="35844"}; +{"key"="4287";"subkey"="857";"value"="35853"}; +{"key"="4288";"subkey"="857";"value"="35863"}; +{"key"="4289";"subkey"="857";"value"="35872"}; +{"key"="4290";"subkey"="858";"value"="35881"}; +{"key"="4291";"subkey"="858";"value"="35891"}; +{"key"="4292";"subkey"="858";"value"="35900"}; +{"key"="4293";"subkey"="858";"value"="35909"}; +{"key"="4294";"subkey"="858";"value"="35919"}; +{"key"="4295";"subkey"="859";"value"="35928"}; +{"key"="4296";"subkey"="859";"value"="35937"}; +{"key"="4297";"subkey"="859";"value"="35947"}; +{"key"="4298";"subkey"="859";"value"="35956"}; +{"key"="4299";"subkey"="859";"value"="35966"}; +{"key"="4300";"subkey"="860";"value"="35975"}; +{"key"="4301";"subkey"="860";"value"="35984"}; +{"key"="4302";"subkey"="860";"value"="35994"}; +{"key"="4303";"subkey"="860";"value"="36003"}; +{"key"="4304";"subkey"="860";"value"="36012"}; +{"key"="4305";"subkey"="861";"value"="36022"}; +{"key"="4306";"subkey"="861";"value"="36031"}; +{"key"="4307";"subkey"="861";"value"="36040"}; +{"key"="4308";"subkey"="861";"value"="36050"}; +{"key"="4309";"subkey"="861";"value"="36059"}; +{"key"="4310";"subkey"="862";"value"="36069"}; +{"key"="4311";"subkey"="862";"value"="36078"}; +{"key"="4312";"subkey"="862";"value"="36087"}; +{"key"="4313";"subkey"="862";"value"="36097"}; +{"key"="4314";"subkey"="862";"value"="36106"}; +{"key"="4315";"subkey"="863";"value"="36115"}; +{"key"="4316";"subkey"="863";"value"="36125"}; +{"key"="4317";"subkey"="863";"value"="36134"}; +{"key"="4318";"subkey"="863";"value"="36144"}; +{"key"="4319";"subkey"="863";"value"="36153"}; +{"key"="4320";"subkey"="864";"value"="36162"}; +{"key"="4321";"subkey"="864";"value"="36172"}; +{"key"="4322";"subkey"="864";"value"="36181"}; +{"key"="4323";"subkey"="864";"value"="36190"}; +{"key"="4324";"subkey"="864";"value"="36200"}; +{"key"="4325";"subkey"="865";"value"="36209"}; +{"key"="4326";"subkey"="865";"value"="36218"}; +{"key"="4327";"subkey"="865";"value"="36228"}; +{"key"="4328";"subkey"="865";"value"="36237"}; +{"key"="4329";"subkey"="865";"value"="36247"}; +{"key"="4330";"subkey"="866";"value"="36256"}; +{"key"="4331";"subkey"="866";"value"="36265"}; +{"key"="4332";"subkey"="866";"value"="36275"}; +{"key"="4333";"subkey"="866";"value"="36284"}; +{"key"="4334";"subkey"="866";"value"="36293"}; +{"key"="4335";"subkey"="867";"value"="36303"}; +{"key"="4336";"subkey"="867";"value"="36312"}; +{"key"="4337";"subkey"="867";"value"="36322"}; +{"key"="4338";"subkey"="867";"value"="36331"}; +{"key"="4339";"subkey"="867";"value"="36340"}; +{"key"="4340";"subkey"="868";"value"="36350"}; +{"key"="4341";"subkey"="868";"value"="36359"}; +{"key"="4342";"subkey"="868";"value"="36368"}; +{"key"="4343";"subkey"="868";"value"="36378"}; +{"key"="4344";"subkey"="868";"value"="36387"}; +{"key"="4345";"subkey"="869";"value"="36397"}; +{"key"="4346";"subkey"="869";"value"="36406"}; +{"key"="4347";"subkey"="869";"value"="36415"}; +{"key"="4348";"subkey"="869";"value"="36425"}; +{"key"="4349";"subkey"="869";"value"="36434"}; +{"key"="4350";"subkey"="870";"value"="36444"}; +{"key"="4351";"subkey"="870";"value"="36453"}; +{"key"="4352";"subkey"="870";"value"="36462"}; +{"key"="4353";"subkey"="870";"value"="36472"}; +{"key"="4354";"subkey"="870";"value"="36481"}; +{"key"="4355";"subkey"="871";"value"="36490"}; +{"key"="4356";"subkey"="871";"value"="36500"}; +{"key"="4357";"subkey"="871";"value"="36509"}; +{"key"="4358";"subkey"="871";"value"="36519"}; +{"key"="4359";"subkey"="871";"value"="36528"}; +{"key"="4360";"subkey"="872";"value"="36537"}; +{"key"="4361";"subkey"="872";"value"="36547"}; +{"key"="4362";"subkey"="872";"value"="36556"}; +{"key"="4363";"subkey"="872";"value"="36565"}; +{"key"="4364";"subkey"="872";"value"="36575"}; +{"key"="4365";"subkey"="873";"value"="36584"}; +{"key"="4366";"subkey"="873";"value"="36594"}; +{"key"="4367";"subkey"="873";"value"="36603"}; +{"key"="4368";"subkey"="873";"value"="36612"}; +{"key"="4369";"subkey"="873";"value"="36622"}; +{"key"="4370";"subkey"="874";"value"="36631"}; +{"key"="4371";"subkey"="874";"value"="36640"}; +{"key"="4372";"subkey"="874";"value"="36650"}; +{"key"="4373";"subkey"="874";"value"="36659"}; +{"key"="4374";"subkey"="874";"value"="36669"}; +{"key"="4375";"subkey"="875";"value"="36678"}; +{"key"="4376";"subkey"="875";"value"="36687"}; +{"key"="4377";"subkey"="875";"value"="36697"}; +{"key"="4378";"subkey"="875";"value"="36706"}; +{"key"="4379";"subkey"="875";"value"="36716"}; +{"key"="4380";"subkey"="876";"value"="36725"}; +{"key"="4381";"subkey"="876";"value"="36734"}; +{"key"="4382";"subkey"="876";"value"="36744"}; +{"key"="4383";"subkey"="876";"value"="36753"}; +{"key"="4384";"subkey"="876";"value"="36762"}; +{"key"="4385";"subkey"="877";"value"="36772"}; +{"key"="4386";"subkey"="877";"value"="36781"}; +{"key"="4387";"subkey"="877";"value"="36791"}; +{"key"="4388";"subkey"="877";"value"="36800"}; +{"key"="4389";"subkey"="877";"value"="36809"}; +{"key"="4390";"subkey"="878";"value"="36819"}; +{"key"="4391";"subkey"="878";"value"="36828"}; +{"key"="4392";"subkey"="878";"value"="36838"}; +{"key"="4393";"subkey"="878";"value"="36847"}; +{"key"="4394";"subkey"="878";"value"="36856"}; +{"key"="4395";"subkey"="879";"value"="36866"}; +{"key"="4396";"subkey"="879";"value"="36875"}; +{"key"="4397";"subkey"="879";"value"="36885"}; +{"key"="4398";"subkey"="879";"value"="36894"}; +{"key"="4399";"subkey"="879";"value"="36903"}; +{"key"="4400";"subkey"="880";"value"="36913"}; +{"key"="4401";"subkey"="880";"value"="36922"}; +{"key"="4402";"subkey"="880";"value"="36931"}; +{"key"="4403";"subkey"="880";"value"="36941"}; +{"key"="4404";"subkey"="880";"value"="36950"}; +{"key"="4405";"subkey"="881";"value"="36960"}; +{"key"="4406";"subkey"="881";"value"="36969"}; +{"key"="4407";"subkey"="881";"value"="36978"}; +{"key"="4408";"subkey"="881";"value"="36988"}; +{"key"="4409";"subkey"="881";"value"="36997"}; +{"key"="4410";"subkey"="882";"value"="37007"}; +{"key"="4411";"subkey"="882";"value"="37016"}; +{"key"="4412";"subkey"="882";"value"="37025"}; +{"key"="4413";"subkey"="882";"value"="37035"}; +{"key"="4414";"subkey"="882";"value"="37044"}; +{"key"="4415";"subkey"="883";"value"="37054"}; +{"key"="4416";"subkey"="883";"value"="37063"}; +{"key"="4417";"subkey"="883";"value"="37072"}; +{"key"="4418";"subkey"="883";"value"="37082"}; +{"key"="4419";"subkey"="883";"value"="37091"}; +{"key"="4420";"subkey"="884";"value"="37101"}; +{"key"="4421";"subkey"="884";"value"="37110"}; +{"key"="4422";"subkey"="884";"value"="37119"}; +{"key"="4423";"subkey"="884";"value"="37129"}; +{"key"="4424";"subkey"="884";"value"="37138"}; +{"key"="4425";"subkey"="885";"value"="37147"}; +{"key"="4426";"subkey"="885";"value"="37157"}; +{"key"="4427";"subkey"="885";"value"="37166"}; +{"key"="4428";"subkey"="885";"value"="37176"}; +{"key"="4429";"subkey"="885";"value"="37185"}; +{"key"="4430";"subkey"="886";"value"="37194"}; +{"key"="4431";"subkey"="886";"value"="37204"}; +{"key"="4432";"subkey"="886";"value"="37213"}; +{"key"="4433";"subkey"="886";"value"="37223"}; +{"key"="4434";"subkey"="886";"value"="37232"}; +{"key"="4435";"subkey"="887";"value"="37241"}; +{"key"="4436";"subkey"="887";"value"="37251"}; +{"key"="4437";"subkey"="887";"value"="37260"}; +{"key"="4438";"subkey"="887";"value"="37270"}; +{"key"="4439";"subkey"="887";"value"="37279"}; +{"key"="4440";"subkey"="888";"value"="37288"}; +{"key"="4441";"subkey"="888";"value"="37298"}; +{"key"="4442";"subkey"="888";"value"="37307"}; +{"key"="4443";"subkey"="888";"value"="37317"}; +{"key"="4444";"subkey"="888";"value"="37326"}; +{"key"="4445";"subkey"="889";"value"="37335"}; +{"key"="4446";"subkey"="889";"value"="37345"}; +{"key"="4447";"subkey"="889";"value"="37354"}; +{"key"="4448";"subkey"="889";"value"="37364"}; +{"key"="4449";"subkey"="889";"value"="37373"}; +{"key"="4450";"subkey"="890";"value"="37382"}; +{"key"="4451";"subkey"="890";"value"="37392"}; +{"key"="4452";"subkey"="890";"value"="37401"}; +{"key"="4453";"subkey"="890";"value"="37411"}; +{"key"="4454";"subkey"="890";"value"="37420"}; +{"key"="4455";"subkey"="891";"value"="37429"}; +{"key"="4456";"subkey"="891";"value"="37439"}; +{"key"="4457";"subkey"="891";"value"="37448"}; +{"key"="4458";"subkey"="891";"value"="37458"}; +{"key"="4459";"subkey"="891";"value"="37467"}; +{"key"="4460";"subkey"="892";"value"="37476"}; +{"key"="4461";"subkey"="892";"value"="37486"}; +{"key"="4462";"subkey"="892";"value"="37495"}; +{"key"="4463";"subkey"="892";"value"="37505"}; +{"key"="4464";"subkey"="892";"value"="37514"}; +{"key"="4465";"subkey"="893";"value"="37523"}; +{"key"="4466";"subkey"="893";"value"="37533"}; +{"key"="4467";"subkey"="893";"value"="37542"}; +{"key"="4468";"subkey"="893";"value"="37552"}; +{"key"="4469";"subkey"="893";"value"="37561"}; +{"key"="4470";"subkey"="894";"value"="37570"}; +{"key"="4471";"subkey"="894";"value"="37580"}; +{"key"="4472";"subkey"="894";"value"="37589"}; +{"key"="4473";"subkey"="894";"value"="37599"}; +{"key"="4474";"subkey"="894";"value"="37608"}; +{"key"="4475";"subkey"="895";"value"="37618"}; +{"key"="4476";"subkey"="895";"value"="37627"}; +{"key"="4477";"subkey"="895";"value"="37636"}; +{"key"="4478";"subkey"="895";"value"="37646"}; +{"key"="4479";"subkey"="895";"value"="37655"}; +{"key"="4480";"subkey"="896";"value"="37665"}; +{"key"="4481";"subkey"="896";"value"="37674"}; +{"key"="4482";"subkey"="896";"value"="37683"}; +{"key"="4483";"subkey"="896";"value"="37693"}; +{"key"="4484";"subkey"="896";"value"="37702"}; +{"key"="4485";"subkey"="897";"value"="37712"}; +{"key"="4486";"subkey"="897";"value"="37721"}; +{"key"="4487";"subkey"="897";"value"="37730"}; +{"key"="4488";"subkey"="897";"value"="37740"}; +{"key"="4489";"subkey"="897";"value"="37749"}; +{"key"="4490";"subkey"="898";"value"="37759"}; +{"key"="4491";"subkey"="898";"value"="37768"}; +{"key"="4492";"subkey"="898";"value"="37777"}; +{"key"="4493";"subkey"="898";"value"="37787"}; +{"key"="4494";"subkey"="898";"value"="37796"}; +{"key"="4495";"subkey"="899";"value"="37806"}; +{"key"="4496";"subkey"="899";"value"="37815"}; +{"key"="4497";"subkey"="899";"value"="37825"}; +{"key"="4498";"subkey"="899";"value"="37834"}; +{"key"="4499";"subkey"="899";"value"="37843"}; +{"key"="4500";"subkey"="900";"value"="37853"}; +{"key"="4501";"subkey"="900";"value"="37862"}; +{"key"="4502";"subkey"="900";"value"="37872"}; +{"key"="4503";"subkey"="900";"value"="37881"}; +{"key"="4504";"subkey"="900";"value"="37890"}; +{"key"="4505";"subkey"="901";"value"="37900"}; +{"key"="4506";"subkey"="901";"value"="37909"}; +{"key"="4507";"subkey"="901";"value"="37919"}; +{"key"="4508";"subkey"="901";"value"="37928"}; +{"key"="4509";"subkey"="901";"value"="37937"}; +{"key"="4510";"subkey"="902";"value"="37947"}; +{"key"="4511";"subkey"="902";"value"="37956"}; +{"key"="4512";"subkey"="902";"value"="37966"}; +{"key"="4513";"subkey"="902";"value"="37975"}; +{"key"="4514";"subkey"="902";"value"="37985"}; +{"key"="4515";"subkey"="903";"value"="37994"}; +{"key"="4516";"subkey"="903";"value"="38003"}; +{"key"="4517";"subkey"="903";"value"="38013"}; +{"key"="4518";"subkey"="903";"value"="38022"}; +{"key"="4519";"subkey"="903";"value"="38032"}; +{"key"="4520";"subkey"="904";"value"="38041"}; +{"key"="4521";"subkey"="904";"value"="38050"}; +{"key"="4522";"subkey"="904";"value"="38060"}; +{"key"="4523";"subkey"="904";"value"="38069"}; +{"key"="4524";"subkey"="904";"value"="38079"}; +{"key"="4525";"subkey"="905";"value"="38088"}; +{"key"="4526";"subkey"="905";"value"="38098"}; +{"key"="4527";"subkey"="905";"value"="38107"}; +{"key"="4528";"subkey"="905";"value"="38116"}; +{"key"="4529";"subkey"="905";"value"="38126"}; +{"key"="4530";"subkey"="906";"value"="38135"}; +{"key"="4531";"subkey"="906";"value"="38145"}; +{"key"="4532";"subkey"="906";"value"="38154"}; +{"key"="4533";"subkey"="906";"value"="38163"}; +{"key"="4534";"subkey"="906";"value"="38173"}; +{"key"="4535";"subkey"="907";"value"="38182"}; +{"key"="4536";"subkey"="907";"value"="38192"}; +{"key"="4537";"subkey"="907";"value"="38201"}; +{"key"="4538";"subkey"="907";"value"="38211"}; +{"key"="4539";"subkey"="907";"value"="38220"}; +{"key"="4540";"subkey"="908";"value"="38229"}; +{"key"="4541";"subkey"="908";"value"="38239"}; +{"key"="4542";"subkey"="908";"value"="38248"}; +{"key"="4543";"subkey"="908";"value"="38258"}; +{"key"="4544";"subkey"="908";"value"="38267"}; +{"key"="4545";"subkey"="909";"value"="38277"}; +{"key"="4546";"subkey"="909";"value"="38286"}; +{"key"="4547";"subkey"="909";"value"="38295"}; +{"key"="4548";"subkey"="909";"value"="38305"}; +{"key"="4549";"subkey"="909";"value"="38314"}; +{"key"="4550";"subkey"="910";"value"="38324"}; +{"key"="4551";"subkey"="910";"value"="38333"}; +{"key"="4552";"subkey"="910";"value"="38342"}; +{"key"="4553";"subkey"="910";"value"="38352"}; +{"key"="4554";"subkey"="910";"value"="38361"}; +{"key"="4555";"subkey"="911";"value"="38371"}; +{"key"="4556";"subkey"="911";"value"="38380"}; +{"key"="4557";"subkey"="911";"value"="38390"}; +{"key"="4558";"subkey"="911";"value"="38399"}; +{"key"="4559";"subkey"="911";"value"="38408"}; +{"key"="4560";"subkey"="912";"value"="38418"}; +{"key"="4561";"subkey"="912";"value"="38427"}; +{"key"="4562";"subkey"="912";"value"="38437"}; +{"key"="4563";"subkey"="912";"value"="38446"}; +{"key"="4564";"subkey"="912";"value"="38456"}; +{"key"="4565";"subkey"="913";"value"="38465"}; +{"key"="4566";"subkey"="913";"value"="38474"}; +{"key"="4567";"subkey"="913";"value"="38484"}; +{"key"="4568";"subkey"="913";"value"="38493"}; +{"key"="4569";"subkey"="913";"value"="38503"}; +{"key"="4570";"subkey"="914";"value"="38512"}; +{"key"="4571";"subkey"="914";"value"="38522"}; +{"key"="4572";"subkey"="914";"value"="38531"}; +{"key"="4573";"subkey"="914";"value"="38540"}; +{"key"="4574";"subkey"="914";"value"="38550"}; +{"key"="4575";"subkey"="915";"value"="38559"}; +{"key"="4576";"subkey"="915";"value"="38569"}; +{"key"="4577";"subkey"="915";"value"="38578"}; +{"key"="4578";"subkey"="915";"value"="38588"}; +{"key"="4579";"subkey"="915";"value"="38597"}; +{"key"="4580";"subkey"="916";"value"="38606"}; +{"key"="4581";"subkey"="916";"value"="38616"}; +{"key"="4582";"subkey"="916";"value"="38625"}; +{"key"="4583";"subkey"="916";"value"="38635"}; +{"key"="4584";"subkey"="916";"value"="38644"}; +{"key"="4585";"subkey"="917";"value"="38654"}; +{"key"="4586";"subkey"="917";"value"="38663"}; +{"key"="4587";"subkey"="917";"value"="38672"}; +{"key"="4588";"subkey"="917";"value"="38682"}; +{"key"="4589";"subkey"="917";"value"="38691"}; +{"key"="4590";"subkey"="918";"value"="38701"}; +{"key"="4591";"subkey"="918";"value"="38710"}; +{"key"="4592";"subkey"="918";"value"="38720"}; +{"key"="4593";"subkey"="918";"value"="38729"}; +{"key"="4594";"subkey"="918";"value"="38738"}; +{"key"="4595";"subkey"="919";"value"="38748"}; +{"key"="4596";"subkey"="919";"value"="38757"}; +{"key"="4597";"subkey"="919";"value"="38767"}; +{"key"="4598";"subkey"="919";"value"="38776"}; +{"key"="4599";"subkey"="919";"value"="38786"}; +{"key"="4600";"subkey"="920";"value"="38795"}; +{"key"="4601";"subkey"="920";"value"="38804"}; +{"key"="4602";"subkey"="920";"value"="38814"}; +{"key"="4603";"subkey"="920";"value"="38823"}; +{"key"="4604";"subkey"="920";"value"="38833"}; +{"key"="4605";"subkey"="921";"value"="38842"}; +{"key"="4606";"subkey"="921";"value"="38852"}; +{"key"="4607";"subkey"="921";"value"="38861"}; +{"key"="4608";"subkey"="921";"value"="38871"}; +{"key"="4609";"subkey"="921";"value"="38880"}; +{"key"="4610";"subkey"="922";"value"="38889"}; +{"key"="4611";"subkey"="922";"value"="38899"}; +{"key"="4612";"subkey"="922";"value"="38908"}; +{"key"="4613";"subkey"="922";"value"="38918"}; +{"key"="4614";"subkey"="922";"value"="38927"}; +{"key"="4615";"subkey"="923";"value"="38937"}; +{"key"="4616";"subkey"="923";"value"="38946"}; +{"key"="4617";"subkey"="923";"value"="38955"}; +{"key"="4618";"subkey"="923";"value"="38965"}; +{"key"="4619";"subkey"="923";"value"="38974"}; +{"key"="4620";"subkey"="924";"value"="38984"}; +{"key"="4621";"subkey"="924";"value"="38993"}; +{"key"="4622";"subkey"="924";"value"="39003"}; +{"key"="4623";"subkey"="924";"value"="39012"}; +{"key"="4624";"subkey"="924";"value"="39022"}; +{"key"="4625";"subkey"="925";"value"="39031"}; +{"key"="4626";"subkey"="925";"value"="39040"}; +{"key"="4627";"subkey"="925";"value"="39050"}; +{"key"="4628";"subkey"="925";"value"="39059"}; +{"key"="4629";"subkey"="925";"value"="39069"}; +{"key"="4630";"subkey"="926";"value"="39078"}; +{"key"="4631";"subkey"="926";"value"="39088"}; +{"key"="4632";"subkey"="926";"value"="39097"}; +{"key"="4633";"subkey"="926";"value"="39106"}; +{"key"="4634";"subkey"="926";"value"="39116"}; +{"key"="4635";"subkey"="927";"value"="39125"}; +{"key"="4636";"subkey"="927";"value"="39135"}; +{"key"="4637";"subkey"="927";"value"="39144"}; +{"key"="4638";"subkey"="927";"value"="39154"}; +{"key"="4639";"subkey"="927";"value"="39163"}; +{"key"="4640";"subkey"="928";"value"="39173"}; +{"key"="4641";"subkey"="928";"value"="39182"}; +{"key"="4642";"subkey"="928";"value"="39191"}; +{"key"="4643";"subkey"="928";"value"="39201"}; +{"key"="4644";"subkey"="928";"value"="39210"}; +{"key"="4645";"subkey"="929";"value"="39220"}; +{"key"="4646";"subkey"="929";"value"="39229"}; +{"key"="4647";"subkey"="929";"value"="39239"}; +{"key"="4648";"subkey"="929";"value"="39248"}; +{"key"="4649";"subkey"="929";"value"="39258"}; +{"key"="4650";"subkey"="930";"value"="39267"}; +{"key"="4651";"subkey"="930";"value"="39276"}; +{"key"="4652";"subkey"="930";"value"="39286"}; +{"key"="4653";"subkey"="930";"value"="39295"}; +{"key"="4654";"subkey"="930";"value"="39305"}; +{"key"="4655";"subkey"="931";"value"="39314"}; +{"key"="4656";"subkey"="931";"value"="39324"}; +{"key"="4657";"subkey"="931";"value"="39333"}; +{"key"="4658";"subkey"="931";"value"="39343"}; +{"key"="4659";"subkey"="931";"value"="39352"}; +{"key"="4660";"subkey"="932";"value"="39361"}; +{"key"="4661";"subkey"="932";"value"="39371"}; +{"key"="4662";"subkey"="932";"value"="39380"}; +{"key"="4663";"subkey"="932";"value"="39390"}; +{"key"="4664";"subkey"="932";"value"="39399"}; +{"key"="4665";"subkey"="933";"value"="39409"}; +{"key"="4666";"subkey"="933";"value"="39418"}; +{"key"="4667";"subkey"="933";"value"="39428"}; +{"key"="4668";"subkey"="933";"value"="39437"}; +{"key"="4669";"subkey"="933";"value"="39446"}; +{"key"="4670";"subkey"="934";"value"="39456"}; +{"key"="4671";"subkey"="934";"value"="39465"}; +{"key"="4672";"subkey"="934";"value"="39475"}; +{"key"="4673";"subkey"="934";"value"="39484"}; +{"key"="4674";"subkey"="934";"value"="39494"}; +{"key"="4675";"subkey"="935";"value"="39503"}; +{"key"="4676";"subkey"="935";"value"="39513"}; +{"key"="4677";"subkey"="935";"value"="39522"}; +{"key"="4678";"subkey"="935";"value"="39532"}; +{"key"="4679";"subkey"="935";"value"="39541"}; +{"key"="4680";"subkey"="936";"value"="39550"}; +{"key"="4681";"subkey"="936";"value"="39560"}; +{"key"="4682";"subkey"="936";"value"="39569"}; +{"key"="4683";"subkey"="936";"value"="39579"}; +{"key"="4684";"subkey"="936";"value"="39588"}; +{"key"="4685";"subkey"="937";"value"="39598"}; +{"key"="4686";"subkey"="937";"value"="39607"}; +{"key"="4687";"subkey"="937";"value"="39617"}; +{"key"="4688";"subkey"="937";"value"="39626"}; +{"key"="4689";"subkey"="937";"value"="39635"}; +{"key"="4690";"subkey"="938";"value"="39645"}; +{"key"="4691";"subkey"="938";"value"="39654"}; +{"key"="4692";"subkey"="938";"value"="39664"}; +{"key"="4693";"subkey"="938";"value"="39673"}; +{"key"="4694";"subkey"="938";"value"="39683"}; +{"key"="4695";"subkey"="939";"value"="39692"}; +{"key"="4696";"subkey"="939";"value"="39702"}; +{"key"="4697";"subkey"="939";"value"="39711"}; +{"key"="4698";"subkey"="939";"value"="39721"}; +{"key"="4699";"subkey"="939";"value"="39730"}; +{"key"="4700";"subkey"="940";"value"="39739"}; +{"key"="4701";"subkey"="940";"value"="39749"}; +{"key"="4702";"subkey"="940";"value"="39758"}; +{"key"="4703";"subkey"="940";"value"="39768"}; +{"key"="4704";"subkey"="940";"value"="39777"}; +{"key"="4705";"subkey"="941";"value"="39787"}; +{"key"="4706";"subkey"="941";"value"="39796"}; +{"key"="4707";"subkey"="941";"value"="39806"}; +{"key"="4708";"subkey"="941";"value"="39815"}; +{"key"="4709";"subkey"="941";"value"="39825"}; +{"key"="4710";"subkey"="942";"value"="39834"}; +{"key"="4711";"subkey"="942";"value"="39844"}; +{"key"="4712";"subkey"="942";"value"="39853"}; +{"key"="4713";"subkey"="942";"value"="39862"}; +{"key"="4714";"subkey"="942";"value"="39872"}; +{"key"="4715";"subkey"="943";"value"="39881"}; +{"key"="4716";"subkey"="943";"value"="39891"}; +{"key"="4717";"subkey"="943";"value"="39900"}; +{"key"="4718";"subkey"="943";"value"="39910"}; +{"key"="4719";"subkey"="943";"value"="39919"}; +{"key"="4720";"subkey"="944";"value"="39929"}; +{"key"="4721";"subkey"="944";"value"="39938"}; +{"key"="4722";"subkey"="944";"value"="39948"}; +{"key"="4723";"subkey"="944";"value"="39957"}; +{"key"="4724";"subkey"="944";"value"="39966"}; +{"key"="4725";"subkey"="945";"value"="39976"}; +{"key"="4726";"subkey"="945";"value"="39985"}; +{"key"="4727";"subkey"="945";"value"="39995"}; +{"key"="4728";"subkey"="945";"value"="40004"}; +{"key"="4729";"subkey"="945";"value"="40014"}; +{"key"="4730";"subkey"="946";"value"="40023"}; +{"key"="4731";"subkey"="946";"value"="40033"}; +{"key"="4732";"subkey"="946";"value"="40042"}; +{"key"="4733";"subkey"="946";"value"="40052"}; +{"key"="4734";"subkey"="946";"value"="40061"}; +{"key"="4735";"subkey"="947";"value"="40071"}; +{"key"="4736";"subkey"="947";"value"="40080"}; +{"key"="4737";"subkey"="947";"value"="40089"}; +{"key"="4738";"subkey"="947";"value"="40099"}; +{"key"="4739";"subkey"="947";"value"="40108"}; +{"key"="4740";"subkey"="948";"value"="40118"}; +{"key"="4741";"subkey"="948";"value"="40127"}; +{"key"="4742";"subkey"="948";"value"="40137"}; +{"key"="4743";"subkey"="948";"value"="40146"}; +{"key"="4744";"subkey"="948";"value"="40156"}; +{"key"="4745";"subkey"="949";"value"="40165"}; +{"key"="4746";"subkey"="949";"value"="40175"}; +{"key"="4747";"subkey"="949";"value"="40184"}; +{"key"="4748";"subkey"="949";"value"="40194"}; +{"key"="4749";"subkey"="949";"value"="40203"}; +{"key"="4750";"subkey"="950";"value"="40213"}; +{"key"="4751";"subkey"="950";"value"="40222"}; +{"key"="4752";"subkey"="950";"value"="40231"}; +{"key"="4753";"subkey"="950";"value"="40241"}; +{"key"="4754";"subkey"="950";"value"="40250"}; +{"key"="4755";"subkey"="951";"value"="40260"}; +{"key"="4756";"subkey"="951";"value"="40269"}; +{"key"="4757";"subkey"="951";"value"="40279"}; +{"key"="4758";"subkey"="951";"value"="40288"}; +{"key"="4759";"subkey"="951";"value"="40298"}; +{"key"="4760";"subkey"="952";"value"="40307"}; +{"key"="4761";"subkey"="952";"value"="40317"}; +{"key"="4762";"subkey"="952";"value"="40326"}; +{"key"="4763";"subkey"="952";"value"="40336"}; +{"key"="4764";"subkey"="952";"value"="40345"}; +{"key"="4765";"subkey"="953";"value"="40355"}; +{"key"="4766";"subkey"="953";"value"="40364"}; +{"key"="4767";"subkey"="953";"value"="40373"}; +{"key"="4768";"subkey"="953";"value"="40383"}; +{"key"="4769";"subkey"="953";"value"="40392"}; +{"key"="4770";"subkey"="954";"value"="40402"}; +{"key"="4771";"subkey"="954";"value"="40411"}; +{"key"="4772";"subkey"="954";"value"="40421"}; +{"key"="4773";"subkey"="954";"value"="40430"}; +{"key"="4774";"subkey"="954";"value"="40440"}; +{"key"="4775";"subkey"="955";"value"="40449"}; +{"key"="4776";"subkey"="955";"value"="40459"}; +{"key"="4777";"subkey"="955";"value"="40468"}; +{"key"="4778";"subkey"="955";"value"="40478"}; +{"key"="4779";"subkey"="955";"value"="40487"}; +{"key"="4780";"subkey"="956";"value"="40497"}; +{"key"="4781";"subkey"="956";"value"="40506"}; +{"key"="4782";"subkey"="956";"value"="40516"}; +{"key"="4783";"subkey"="956";"value"="40525"}; +{"key"="4784";"subkey"="956";"value"="40534"}; +{"key"="4785";"subkey"="957";"value"="40544"}; +{"key"="4786";"subkey"="957";"value"="40553"}; +{"key"="4787";"subkey"="957";"value"="40563"}; +{"key"="4788";"subkey"="957";"value"="40572"}; +{"key"="4789";"subkey"="957";"value"="40582"}; +{"key"="4790";"subkey"="958";"value"="40591"}; +{"key"="4791";"subkey"="958";"value"="40601"}; +{"key"="4792";"subkey"="958";"value"="40610"}; +{"key"="4793";"subkey"="958";"value"="40620"}; +{"key"="4794";"subkey"="958";"value"="40629"}; +{"key"="4795";"subkey"="959";"value"="40639"}; +{"key"="4796";"subkey"="959";"value"="40648"}; +{"key"="4797";"subkey"="959";"value"="40658"}; +{"key"="4798";"subkey"="959";"value"="40667"}; +{"key"="4799";"subkey"="959";"value"="40677"}; +{"key"="4800";"subkey"="960";"value"="40686"}; +{"key"="4801";"subkey"="960";"value"="40696"}; +{"key"="4802";"subkey"="960";"value"="40705"}; +{"key"="4803";"subkey"="960";"value"="40715"}; +{"key"="4804";"subkey"="960";"value"="40724"}; +{"key"="4805";"subkey"="961";"value"="40733"}; +{"key"="4806";"subkey"="961";"value"="40743"}; +{"key"="4807";"subkey"="961";"value"="40752"}; +{"key"="4808";"subkey"="961";"value"="40762"}; +{"key"="4809";"subkey"="961";"value"="40771"}; +{"key"="4810";"subkey"="962";"value"="40781"}; +{"key"="4811";"subkey"="962";"value"="40790"}; +{"key"="4812";"subkey"="962";"value"="40800"}; +{"key"="4813";"subkey"="962";"value"="40809"}; +{"key"="4814";"subkey"="962";"value"="40819"}; +{"key"="4815";"subkey"="963";"value"="40828"}; +{"key"="4816";"subkey"="963";"value"="40838"}; +{"key"="4817";"subkey"="963";"value"="40847"}; +{"key"="4818";"subkey"="963";"value"="40857"}; +{"key"="4819";"subkey"="963";"value"="40866"}; +{"key"="4820";"subkey"="964";"value"="40876"}; +{"key"="4821";"subkey"="964";"value"="40885"}; +{"key"="4822";"subkey"="964";"value"="40895"}; +{"key"="4823";"subkey"="964";"value"="40904"}; +{"key"="4824";"subkey"="964";"value"="40914"}; +{"key"="4825";"subkey"="965";"value"="40923"}; +{"key"="4826";"subkey"="965";"value"="40933"}; +{"key"="4827";"subkey"="965";"value"="40942"}; +{"key"="4828";"subkey"="965";"value"="40952"}; +{"key"="4829";"subkey"="965";"value"="40961"}; +{"key"="4830";"subkey"="966";"value"="40970"}; +{"key"="4831";"subkey"="966";"value"="40980"}; +{"key"="4832";"subkey"="966";"value"="40989"}; +{"key"="4833";"subkey"="966";"value"="40999"}; +{"key"="4834";"subkey"="966";"value"="41008"}; +{"key"="4835";"subkey"="967";"value"="41018"}; +{"key"="4836";"subkey"="967";"value"="41027"}; +{"key"="4837";"subkey"="967";"value"="41037"}; +{"key"="4838";"subkey"="967";"value"="41046"}; +{"key"="4839";"subkey"="967";"value"="41056"}; +{"key"="4840";"subkey"="968";"value"="41065"}; +{"key"="4841";"subkey"="968";"value"="41075"}; +{"key"="4842";"subkey"="968";"value"="41084"}; +{"key"="4843";"subkey"="968";"value"="41094"}; +{"key"="4844";"subkey"="968";"value"="41103"}; +{"key"="4845";"subkey"="969";"value"="41113"}; +{"key"="4846";"subkey"="969";"value"="41122"}; +{"key"="4847";"subkey"="969";"value"="41132"}; +{"key"="4848";"subkey"="969";"value"="41141"}; +{"key"="4849";"subkey"="969";"value"="41151"}; +{"key"="4850";"subkey"="970";"value"="41160"}; +{"key"="4851";"subkey"="970";"value"="41170"}; +{"key"="4852";"subkey"="970";"value"="41179"}; +{"key"="4853";"subkey"="970";"value"="41189"}; +{"key"="4854";"subkey"="970";"value"="41198"}; +{"key"="4855";"subkey"="971";"value"="41208"}; +{"key"="4856";"subkey"="971";"value"="41217"}; +{"key"="4857";"subkey"="971";"value"="41227"}; +{"key"="4858";"subkey"="971";"value"="41236"}; +{"key"="4859";"subkey"="971";"value"="41246"}; +{"key"="4860";"subkey"="972";"value"="41255"}; +{"key"="4861";"subkey"="972";"value"="41265"}; +{"key"="4862";"subkey"="972";"value"="41274"}; +{"key"="4863";"subkey"="972";"value"="41284"}; +{"key"="4864";"subkey"="972";"value"="41293"}; +{"key"="4865";"subkey"="973";"value"="41302"}; +{"key"="4866";"subkey"="973";"value"="41312"}; +{"key"="4867";"subkey"="973";"value"="41321"}; +{"key"="4868";"subkey"="973";"value"="41331"}; +{"key"="4869";"subkey"="973";"value"="41340"}; +{"key"="4870";"subkey"="974";"value"="41350"}; +{"key"="4871";"subkey"="974";"value"="41359"}; +{"key"="4872";"subkey"="974";"value"="41369"}; +{"key"="4873";"subkey"="974";"value"="41378"}; +{"key"="4874";"subkey"="974";"value"="41388"}; +{"key"="4875";"subkey"="975";"value"="41397"}; +{"key"="4876";"subkey"="975";"value"="41407"}; +{"key"="4877";"subkey"="975";"value"="41416"}; +{"key"="4878";"subkey"="975";"value"="41426"}; +{"key"="4879";"subkey"="975";"value"="41435"}; +{"key"="4880";"subkey"="976";"value"="41445"}; +{"key"="4881";"subkey"="976";"value"="41454"}; +{"key"="4882";"subkey"="976";"value"="41464"}; +{"key"="4883";"subkey"="976";"value"="41473"}; +{"key"="4884";"subkey"="976";"value"="41483"}; +{"key"="4885";"subkey"="977";"value"="41492"}; +{"key"="4886";"subkey"="977";"value"="41502"}; +{"key"="4887";"subkey"="977";"value"="41511"}; +{"key"="4888";"subkey"="977";"value"="41521"}; +{"key"="4889";"subkey"="977";"value"="41530"}; +{"key"="4890";"subkey"="978";"value"="41540"}; +{"key"="4891";"subkey"="978";"value"="41549"}; +{"key"="4892";"subkey"="978";"value"="41559"}; +{"key"="4893";"subkey"="978";"value"="41568"}; +{"key"="4894";"subkey"="978";"value"="41578"}; +{"key"="4895";"subkey"="979";"value"="41587"}; +{"key"="4896";"subkey"="979";"value"="41597"}; +{"key"="4897";"subkey"="979";"value"="41606"}; +{"key"="4898";"subkey"="979";"value"="41616"}; +{"key"="4899";"subkey"="979";"value"="41625"}; +{"key"="4900";"subkey"="980";"value"="41635"}; +{"key"="4901";"subkey"="980";"value"="41644"}; +{"key"="4902";"subkey"="980";"value"="41654"}; +{"key"="4903";"subkey"="980";"value"="41663"}; +{"key"="4904";"subkey"="980";"value"="41673"}; +{"key"="4905";"subkey"="981";"value"="41682"}; +{"key"="4906";"subkey"="981";"value"="41692"}; +{"key"="4907";"subkey"="981";"value"="41701"}; +{"key"="4908";"subkey"="981";"value"="41711"}; +{"key"="4909";"subkey"="981";"value"="41720"}; +{"key"="4910";"subkey"="982";"value"="41730"}; +{"key"="4911";"subkey"="982";"value"="41739"}; +{"key"="4912";"subkey"="982";"value"="41749"}; +{"key"="4913";"subkey"="982";"value"="41758"}; +{"key"="4914";"subkey"="982";"value"="41768"}; +{"key"="4915";"subkey"="983";"value"="41777"}; +{"key"="4916";"subkey"="983";"value"="41787"}; +{"key"="4917";"subkey"="983";"value"="41796"}; +{"key"="4918";"subkey"="983";"value"="41806"}; +{"key"="4919";"subkey"="983";"value"="41815"}; +{"key"="4920";"subkey"="984";"value"="41825"}; +{"key"="4921";"subkey"="984";"value"="41834"}; +{"key"="4922";"subkey"="984";"value"="41844"}; +{"key"="4923";"subkey"="984";"value"="41853"}; +{"key"="4924";"subkey"="984";"value"="41863"}; +{"key"="4925";"subkey"="985";"value"="41872"}; +{"key"="4926";"subkey"="985";"value"="41882"}; +{"key"="4927";"subkey"="985";"value"="41891"}; +{"key"="4928";"subkey"="985";"value"="41901"}; +{"key"="4929";"subkey"="985";"value"="41910"}; +{"key"="4930";"subkey"="986";"value"="41920"}; +{"key"="4931";"subkey"="986";"value"="41929"}; +{"key"="4932";"subkey"="986";"value"="41939"}; +{"key"="4933";"subkey"="986";"value"="41948"}; +{"key"="4934";"subkey"="986";"value"="41958"}; +{"key"="4935";"subkey"="987";"value"="41967"}; +{"key"="4936";"subkey"="987";"value"="41977"}; +{"key"="4937";"subkey"="987";"value"="41986"}; +{"key"="4938";"subkey"="987";"value"="41996"}; +{"key"="4939";"subkey"="987";"value"="42005"}; +{"key"="4940";"subkey"="988";"value"="42015"}; +{"key"="4941";"subkey"="988";"value"="42024"}; +{"key"="4942";"subkey"="988";"value"="42034"}; +{"key"="4943";"subkey"="988";"value"="42043"}; +{"key"="4944";"subkey"="988";"value"="42053"}; +{"key"="4945";"subkey"="989";"value"="42062"}; +{"key"="4946";"subkey"="989";"value"="42072"}; +{"key"="4947";"subkey"="989";"value"="42081"}; +{"key"="4948";"subkey"="989";"value"="42091"}; +{"key"="4949";"subkey"="989";"value"="42100"}; +{"key"="4950";"subkey"="990";"value"="42110"}; +{"key"="4951";"subkey"="990";"value"="42119"}; +{"key"="4952";"subkey"="990";"value"="42129"}; +{"key"="4953";"subkey"="990";"value"="42138"}; +{"key"="4954";"subkey"="990";"value"="42148"}; +{"key"="4955";"subkey"="991";"value"="42157"}; +{"key"="4956";"subkey"="991";"value"="42167"}; +{"key"="4957";"subkey"="991";"value"="42176"}; +{"key"="4958";"subkey"="991";"value"="42186"}; +{"key"="4959";"subkey"="991";"value"="42195"}; +{"key"="4960";"subkey"="992";"value"="42205"}; +{"key"="4961";"subkey"="992";"value"="42214"}; +{"key"="4962";"subkey"="992";"value"="42224"}; +{"key"="4963";"subkey"="992";"value"="42233"}; +{"key"="4964";"subkey"="992";"value"="42243"}; +{"key"="4965";"subkey"="993";"value"="42252"}; +{"key"="4966";"subkey"="993";"value"="42262"}; +{"key"="4967";"subkey"="993";"value"="42272"}; +{"key"="4968";"subkey"="993";"value"="42281"}; +{"key"="4969";"subkey"="993";"value"="42291"}; +{"key"="4970";"subkey"="994";"value"="42300"}; +{"key"="4971";"subkey"="994";"value"="42310"}; +{"key"="4972";"subkey"="994";"value"="42319"}; +{"key"="4973";"subkey"="994";"value"="42329"}; +{"key"="4974";"subkey"="994";"value"="42338"}; +{"key"="4975";"subkey"="995";"value"="42348"}; +{"key"="4976";"subkey"="995";"value"="42357"}; +{"key"="4977";"subkey"="995";"value"="42367"}; +{"key"="4978";"subkey"="995";"value"="42376"}; +{"key"="4979";"subkey"="995";"value"="42386"}; +{"key"="4980";"subkey"="996";"value"="42395"}; +{"key"="4981";"subkey"="996";"value"="42405"}; +{"key"="4982";"subkey"="996";"value"="42414"}; +{"key"="4983";"subkey"="996";"value"="42424"}; +{"key"="4984";"subkey"="996";"value"="42433"}; +{"key"="4985";"subkey"="997";"value"="42443"}; +{"key"="4986";"subkey"="997";"value"="42452"}; +{"key"="4987";"subkey"="997";"value"="42462"}; +{"key"="4988";"subkey"="997";"value"="42471"}; +{"key"="4989";"subkey"="997";"value"="42481"}; +{"key"="4990";"subkey"="998";"value"="42490"}; +{"key"="4991";"subkey"="998";"value"="42500"}; +{"key"="4992";"subkey"="998";"value"="42509"}; +{"key"="4993";"subkey"="998";"value"="42519"}; +{"key"="4994";"subkey"="998";"value"="42528"}; +{"key"="4995";"subkey"="999";"value"="42538"}; +{"key"="4996";"subkey"="999";"value"="42547"}; +{"key"="4997";"subkey"="999";"value"="42557"}; +{"key"="4998";"subkey"="999";"value"="42566"}; +{"key"="4999";"subkey"="999";"value"="42576"}; diff --git a/ydb/library/yql/udfs/common/hyperloglog/test/cases/Basic.sql b/ydb/library/yql/udfs/common/hyperloglog/test/cases/Basic.sql new file mode 100644 index 0000000000..b092c78127 --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperloglog/test/cases/Basic.sql @@ -0,0 +1,7 @@ +/* syntax version 1 */ +SELECT + HyperLogLog(key) AS str, + CountDistinctEstimate(CAST(subkey AS Double)) AS `double`, + HLL(CAST(value AS Int64), 18) AS `int` +FROM Input; + diff --git a/ydb/library/yql/udfs/common/hyperloglog/test/ya.make b/ydb/library/yql/udfs/common/hyperloglog/test/ya.make new file mode 100644 index 0000000000..0d7d8478e1 --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperloglog/test/ya.make @@ -0,0 +1,16 @@ +YQL_UDF_TEST() + +DEPENDS( + ydb/library/yql/udfs/common/hyperloglog + ydb/library/yql/udfs/common/digest +) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/hyperloglog/ya.make b/ydb/library/yql/udfs/common/hyperloglog/ya.make index 3d13568e57..f6f44c0523 100644 --- a/ydb/library/yql/udfs/common/hyperloglog/ya.make +++ b/ydb/library/yql/udfs/common/hyperloglog/ya.make @@ -15,3 +15,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +)
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/hyperscan/test/canondata/result.json b/ydb/library/yql/udfs/common/hyperscan/test/canondata/result.json new file mode 100644 index 0000000000..39b61d3ee9 --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperscan/test/canondata/result.json @@ -0,0 +1,15 @@ +{ + "test.test[Basic]": [ + { + "uri": "file://test.test_Basic_/results.txt" + } + ], + "test.test[CharacterClasses]": [ + { + "uri": "file://test.test_CharacterClasses_/results.txt" + } + ], + "test.test[Error]": [ + "" + ] +} diff --git a/ydb/library/yql/udfs/common/hyperscan/test/canondata/test.test_Basic_/results.txt b/ydb/library/yql/udfs/common/hyperscan/test/canondata/test.test_Basic_/results.txt new file mode 100644 index 0000000000..0a44022ab1 --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperscan/test/canondata/test.test_Basic_/results.txt @@ -0,0 +1,426 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "match"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "grep"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "insensitive_grep"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "multi_match"; + [ + "TupleType"; + [ + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ] + ] + ] + ]; + [ + "some_multi_match"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "multi_match2"; + [ + "TupleType"; + [ + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ] + ] + ] + ]; + [ + "some_multi_match2a"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "some_multi_match2b"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "some_multi_match2c"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "capture"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "capture_many"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "replace"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + ""; + %false; + %false; + %false; + [ + %false; + %true; + %false; + %true; + %false; + %true; + %false + ]; + %false; + [ + %false; + %true; + %false; + %true; + %false + ]; + %false; + %true; + %false; + #; + #; + [ + "" + ] + ]; + [ + "a"; + %true; + %false; + %false; + [ + %true; + %false; + %true; + %false; + %true; + %false; + %false + ]; + %true; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + #; + #; + [ + "a" + ] + ]; + [ + "aax"; + %true; + %false; + %false; + [ + %true; + %false; + %true; + %false; + %false; + %false; + %false + ]; + %true; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + [ + "aa" + ]; + #; + [ + "aax" + ] + ]; + [ + "xaax"; + %false; + %false; + %false; + [ + %false; + %false; + %true; + %false; + %false; + %false; + %false + ]; + %false; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + [ + "xaa" + ]; + [ + "xa" + ]; + [ + "bax" + ] + ]; + [ + "xaaxaaxaa"; + %false; + %true; + %true; + [ + %false; + %false; + %true; + %false; + %true; + %false; + %true + ]; + %false; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + [ + "xaa" + ]; + [ + "xa" + ]; + [ + "bababa" + ] + ]; + [ + "XAXA"; + %false; + %false; + %true; + [ + %false; + %false; + %false; + %false; + %false; + %false; + %false + ]; + %false; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + #; + #; + [ + "XAXA" + ] + ]; + [ + "7"; + %false; + %false; + %false; + [ + %false; + %false; + %false; + %false; + %false; + %false; + %false + ]; + %false; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + #; + #; + [ + "7" + ] + ]; + [ + "QC transfer task JAVA"; + %false; + %false; + %false; + [ + %false; + %false; + %true; + %false; + %false; + %false; + %false + ]; + %false; + [ + %false; + %false; + %true; + %false; + %true + ]; + %false; + %false; + %true; + #; + #; + [ + "QC transfer task JAVA" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/hyperscan/test/canondata/test.test_CharacterClasses_/results.txt b/ydb/library/yql/udfs/common/hyperscan/test/canondata/test.test_CharacterClasses_/results.txt new file mode 100644 index 0000000000..7fe80ff82a --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperscan/test/canondata/test.test_CharacterClasses_/results.txt @@ -0,0 +1,59 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "digits"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "spaces"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "xx000xx"; + %true; + %false + ]; + [ + "lLlLl"; + %false; + %false + ]; + [ + "a1 b2 c3"; + %true; + %true + ]; + [ + "xxx yyy"; + %false; + %true + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/hyperscan/test/cases/Basic.in b/ydb/library/yql/udfs/common/hyperscan/test/cases/Basic.in new file mode 100644 index 0000000000..ddc6272247 --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperscan/test/cases/Basic.in @@ -0,0 +1,8 @@ +{"key"="1";"subkey"="1";"value"=""}; +{"key"="2";"subkey"="2";"value"="a"}; +{"key"="3";"subkey"="3";"value"="aax"}; +{"key"="4";"subkey"="4";"value"="xaax"}; +{"key"="5";"subkey"="5";"value"="xaaxaaxaa"}; +{"key"="6";"subkey"="6";"value"="XAXA"}; +{"key"="7";"subkey"="7";"value"="7"}; +{"key"="8";"subkey"="8";"value"="QC transfer task JAVA"}; diff --git a/ydb/library/yql/udfs/common/hyperscan/test/cases/Basic.sql b/ydb/library/yql/udfs/common/hyperscan/test/cases/Basic.sql new file mode 100644 index 0000000000..f1bd639e34 --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperscan/test/cases/Basic.sql @@ -0,0 +1,31 @@ +/* syntax version 1 */ +$match = Hyperscan::Match("a.*"); +$grep = Hyperscan::Grep("axa"); +$insensitive_grep = Hyperscan::Grep("(?i)axa"); +$multi_match = Hyperscan::MultiMatch(@@a.* +.*a.* +.*a +.*axa.*@@); +$multi_match2 = Hyperscan::MultiMatch(@@YQL.* +QC.* +.*transfer task.*@@); + +$capture = Hyperscan::Capture(".*a{2}.*"); +$capture_many = Hyperscan::Capture(".*x(a+).*"); +$replace = Hyperscan::Replace("xa"); + +SELECT + value, + $match(value) AS match, + $grep(value) AS grep, + $insensitive_grep(value) AS insensitive_grep, + $multi_match(value) AS multi_match, + $multi_match(value).0 AS some_multi_match, + $multi_match2(value) AS multi_match2, + $multi_match2(value).0 AS some_multi_match2a, + $multi_match2(value).1 AS some_multi_match2b, + $multi_match2(value).2 AS some_multi_match2c, + $capture(value) AS capture, + $capture_many(value) AS capture_many, + $replace(value, "b") AS replace +FROM Input; diff --git a/ydb/library/yql/udfs/common/hyperscan/test/cases/CharacterClasses.in b/ydb/library/yql/udfs/common/hyperscan/test/cases/CharacterClasses.in new file mode 100644 index 0000000000..e2737f40a1 --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperscan/test/cases/CharacterClasses.in @@ -0,0 +1,4 @@ +{"key"="1";"subkey"="1";"value"="xx000xx"}; +{"key"="2";"subkey"="2";"value"="lLlLl"}; +{"key"="3";"subkey"="3";"value"="a1 b2 c3"}; +{"key"="4";"subkey"="4";"value"="xxx yyy"}; diff --git a/ydb/library/yql/udfs/common/hyperscan/test/cases/CharacterClasses.sql b/ydb/library/yql/udfs/common/hyperscan/test/cases/CharacterClasses.sql new file mode 100644 index 0000000000..4f19373b65 --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperscan/test/cases/CharacterClasses.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +$digits = Hyperscan::Grep("\\d+"); +$spaces = Hyperscan::Grep("\\s+"); + +SELECT + value, + $digits(value) AS digits, + $spaces(value) AS spaces +FROM Input; diff --git a/ydb/library/yql/udfs/common/hyperscan/test/cases/Error.cfg b/ydb/library/yql/udfs/common/hyperscan/test/cases/Error.cfg new file mode 100644 index 0000000000..7f181f61d6 --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperscan/test/cases/Error.cfg @@ -0,0 +1,2 @@ +in yt.plato.Input Basic.in +xfail diff --git a/ydb/library/yql/udfs/common/hyperscan/test/cases/Error.sql b/ydb/library/yql/udfs/common/hyperscan/test/cases/Error.sql new file mode 100644 index 0000000000..f824261eee --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperscan/test/cases/Error.sql @@ -0,0 +1,4 @@ +/* syntax version 1 */ +$match = Hyperscan::Match("*"); +--PRAGMA config.flags("LLVM","OFF"); +SELECT $match(value) AS match FROM Input; diff --git a/ydb/library/yql/udfs/common/hyperscan/test/ya.make b/ydb/library/yql/udfs/common/hyperscan/test/ya.make new file mode 100644 index 0000000000..bf38f0843c --- /dev/null +++ b/ydb/library/yql/udfs/common/hyperscan/test/ya.make @@ -0,0 +1,17 @@ +IF (OS_LINUX AND CLANG) + +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/hyperscan) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() + +ENDIF() diff --git a/ydb/library/yql/udfs/common/hyperscan/ya.make b/ydb/library/yql/udfs/common/hyperscan/ya.make index 5f248525bf..edeb0504a0 100644 --- a/ydb/library/yql/udfs/common/hyperscan/ya.make +++ b/ydb/library/yql/udfs/common/hyperscan/ya.make @@ -23,3 +23,7 @@ ELSE() LIBRARY() END() ENDIF() + +RECURSE_FOR_TESTS( + test +)
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/ip_base/test/canondata/result.json b/ydb/library/yql/udfs/common/ip_base/test/canondata/result.json new file mode 100644 index 0000000000..fb6112fc5b --- /dev/null +++ b/ydb/library/yql/udfs/common/ip_base/test/canondata/result.json @@ -0,0 +1,7 @@ +{ + "test.test[Basic]": [ + { + "uri": "file://test.test_Basic_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/ip_base/test/canondata/test.test_Basic_/results.txt b/ydb/library/yql/udfs/common/ip_base/test/canondata/test.test_Basic_/results.txt new file mode 100644 index 0000000000..c80bc2d498 --- /dev/null +++ b/ydb/library/yql/udfs/common/ip_base/test/canondata/test.test_Basic_/results.txt @@ -0,0 +1,281 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "internal_representation"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "round_trip"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "is_ipv4"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "is_ipv6"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "is_embedded_ipv4"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "all_ipv6"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "default_subnet"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "small_subnet"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "large_subnet"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "\x7F\0\0\1" + ]; + [ + "127.0.0.1" + ]; + %true; + %false; + %false; + [ + "::ffff:127.0.0.1" + ]; + [ + "127.0.0.0" + ]; + [ + "127.0.0.1" + ]; + [ + "127.0.0.0" + ] + ]; + [ + [ + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1" + ]; + [ + "::1" + ]; + %false; + %true; + %false; + [ + "::1" + ]; + [ + "::" + ]; + [ + "::" + ]; + [ + "::" + ] + ]; + [ + [ + [ + "1bTBAw==" + ] + ]; + [ + "213.180.193.3" + ]; + %true; + %false; + %false; + [ + "::ffff:213.180.193.3" + ]; + [ + "213.180.193.0" + ]; + [ + "213.180.193.3" + ]; + [ + "213.180.0.0" + ] + ]; + [ + [ + [ + "KgIGuAAAAAAAAAAAAAAAAw==" + ] + ]; + [ + "2a02:6b8::3" + ]; + %false; + %true; + %false; + [ + "2a02:6b8::3" + ]; + [ + "2a02:6b8::" + ]; + [ + "2a02:6b8::" + ]; + [ + "2a02::" + ] + ]; + [ + [ + [ + "JADLACBIAAEAAAAAaBwbZQ==" + ] + ]; + [ + "2400:cb00:2048:1::681c:1b65" + ]; + %false; + %true; + %false; + [ + "2400:cb00:2048:1::681c:1b65" + ]; + [ + "2400:cb00:2048:1::" + ]; + [ + "2400:cb00:2048:1::681c:1b60" + ]; + [ + "2400::" + ] + ]; + [ + [ + [ + "/oAAAAAAAAACFbL//qlnzg==" + ] + ]; + [ + "fe80::215:b2ff:fea9:67ce" + ]; + %false; + %true; + %false; + [ + "fe80::215:b2ff:fea9:67ce" + ]; + [ + "fe80::" + ]; + [ + "fe80::215:b2ff:fea9:67c8" + ]; + [ + "fe80::" + ] + ]; + [ + [ + [ + "AAAAAAAAAAAAAP//TUubAw==" + ] + ]; + [ + "::ffff:77.75.155.3" + ]; + %false; + %true; + %true; + [ + "::ffff:77.75.155.3" + ]; + [ + "::" + ]; + [ + "::ffff:77.75.155.0" + ]; + [ + "::" + ] + ]; + [ + #; + #; + %false; + %false; + %false; + #; + #; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/ip_base/test/cases/Basic.in b/ydb/library/yql/udfs/common/ip_base/test/cases/Basic.in new file mode 100644 index 0000000000..8e7fa79258 --- /dev/null +++ b/ydb/library/yql/udfs/common/ip_base/test/cases/Basic.in @@ -0,0 +1,8 @@ +{"key"="127.0.0.1";"subkey"="";"value"=""}; +{"key"="::1";"subkey"="";"value"=""}; +{"key"="213.180.193.3";"subkey"="";"value"=""}; +{"key"="2a02:6b8::3";"subkey"="";"value"=""}; +{"key"="2400:cb00:2048:1::681c:1b65";"subkey"="";"value"=""}; +{"key"="fe80::215:b2ff:fea9:67ce";"subkey"="";"value"=""}; +{"key"="::ffff:77.75.155.3";"subkey"="";"value"=""}; +{"key"="sdfsdfsdf";"subkey"="";"value"=""}; diff --git a/ydb/library/yql/udfs/common/ip_base/test/cases/Basic.sql b/ydb/library/yql/udfs/common/ip_base/test/cases/Basic.sql new file mode 100644 index 0000000000..effb59e5ee --- /dev/null +++ b/ydb/library/yql/udfs/common/ip_base/test/cases/Basic.sql @@ -0,0 +1,14 @@ +/* syntax version 1 */ +SELECT + internal_representation AS internal_representation, + Ip::ToString(internal_representation) AS round_trip, + Ip::IsIPv4(internal_representation) AS is_ipv4, + Ip::IsIPv6(internal_representation) AS is_ipv6, + Ip::IsEmbeddedIPv4(internal_representation) AS is_embedded_ipv4, + Ip::ToString(Ip::ConvertToIPv6(internal_representation)) AS all_ipv6, + Ip::ToString(Ip::GetSubnet(internal_representation)) AS default_subnet, + Ip::ToString(Ip::GetSubnet(internal_representation, 125)) AS small_subnet, + Ip::ToString(Ip::GetSubnet(internal_representation, 16)) AS large_subnet +FROM ( + SELECT Ip::FromString(key) AS internal_representation FROM Input +); diff --git a/ydb/library/yql/udfs/common/ip_base/test/ya.make b/ydb/library/yql/udfs/common/ip_base/test/ya.make new file mode 100644 index 0000000000..1a21e6734b --- /dev/null +++ b/ydb/library/yql/udfs/common/ip_base/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +DEPENDS(ydb/library/yql/udfs/common/ip_base) + +END() diff --git a/ydb/library/yql/udfs/common/ip_base/ya.make b/ydb/library/yql/udfs/common/ip_base/ya.make index 6b472fdc06..1fe3d056ed 100644 --- a/ydb/library/yql/udfs/common/ip_base/ya.make +++ b/ydb/library/yql/udfs/common/ip_base/ya.make @@ -15,3 +15,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +)
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json/test/canondata/result.json b/ydb/library/yql/udfs/common/json/test/canondata/result.json new file mode 100644 index 0000000000..fb6112fc5b --- /dev/null +++ b/ydb/library/yql/udfs/common/json/test/canondata/result.json @@ -0,0 +1,7 @@ +{ + "test.test[Basic]": [ + { + "uri": "file://test.test_Basic_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/json/test/canondata/test.test_Basic_/results.txt b/ydb/library/yql/udfs/common/json/test/canondata/test.test_Basic_/results.txt new file mode 100644 index 0000000000..8cd3200dab --- /dev/null +++ b/ydb/library/yql/udfs/common/json/test/canondata/test.test_Basic_/results.txt @@ -0,0 +1,57 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column2"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "11" + ]; + [ + "" + ]; + [] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json/test/cases/Basic.sql b/ydb/library/yql/udfs/common/json/test/cases/Basic.sql new file mode 100644 index 0000000000..512246d766 --- /dev/null +++ b/ydb/library/yql/udfs/common/json/test/cases/Basic.sql @@ -0,0 +1,12 @@ +/* syntax version 0 */ +$json1 = @@{ + "x": { + "y": ["15", "11", "17"], + "z": 1 + } +}@@; + +SELECT + Json::GetField($json1, "/x/y/[1]"), + Json::GetField("[]", "/"), + Json::GetField($json1, "///"); diff --git a/ydb/library/yql/udfs/common/json/test/ya.make b/ydb/library/yql/udfs/common/json/test/ya.make new file mode 100644 index 0000000000..73cf7d2f0b --- /dev/null +++ b/ydb/library/yql/udfs/common/json/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/json) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/json/ya.make b/ydb/library/yql/udfs/common/json/ya.make index 72f7a26607..292a0fc1dd 100644 --- a/ydb/library/yql/udfs/common/json/ya.make +++ b/ydb/library/yql/udfs/common/json/ya.make @@ -15,3 +15,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +)
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json2/test/canondata/result.json b/ydb/library/yql/udfs/common/json2/test/canondata/result.json new file mode 100644 index 0000000000..086f5e77ea --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/canondata/result.json @@ -0,0 +1,42 @@ +{ + "test.test[AsJsonNode]": [ + { + "uri": "file://test.test_AsJsonNode_/results.txt" + } + ], + "test.test[SerializeParse]": [ + { + "uri": "file://test.test_SerializeParse_/results.txt" + } + ], + "test.test[SqlExists]": [ + { + "uri": "file://test.test_SqlExists_/results.txt" + } + ], + "test.test[SqlQueryError]": [ + { + "uri": "file://test.test_SqlQueryError_/extracted" + } + ], + "test.test[SqlQuery]": [ + { + "uri": "file://test.test_SqlQuery_/results.txt" + } + ], + "test.test[SqlTryExistsError]": [ + { + "uri": "file://test.test_SqlTryExistsError_/extracted" + } + ], + "test.test[SqlTryExists]": [ + { + "uri": "file://test.test_SqlTryExists_/results.txt" + } + ], + "test.test[SqlValue]": [ + { + "uri": "file://test.test_SqlValue_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/json2/test/canondata/test.test_AsJsonNode_/results.txt b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_AsJsonNode_/results.txt new file mode 100644 index 0000000000..fd6bba35bc --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_AsJsonNode_/results.txt @@ -0,0 +1,84 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Json" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Json" + ] + ]; + [ + "column2"; + [ + "DataType"; + "Json" + ] + ]; + [ + "column3"; + [ + "DataType"; + "Json" + ] + ]; + [ + "column4"; + [ + "DataType"; + "Json" + ] + ]; + [ + "column5"; + [ + "DataType"; + "Json" + ] + ]; + [ + "column6"; + [ + "DataType"; + "Json" + ] + ]; + [ + "column7"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "\"string\""; + "null"; + "1.2345"; + "null"; + "true"; + "null"; + "{\"key\":28}"; + "null" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SerializeParse_/results.txt b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SerializeParse_/results.txt new file mode 100644 index 0000000000..58a867b34e --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SerializeParse_/results.txt @@ -0,0 +1,102 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Json" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Json" + ] + ]; + [ + "column2"; + [ + "DataType"; + "Json" + ] + ]; + [ + "column3"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "[]"; + "{}"; + "[1,3,4,5,6]"; + "{\"x\":1234}" + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "JsonDocument" + ] + ]; + [ + "column1"; + [ + "DataType"; + "JsonDocument" + ] + ]; + [ + "column2"; + [ + "DataType"; + "JsonDocument" + ] + ]; + [ + "column3"; + [ + "DataType"; + "JsonDocument" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "[]"; + "{}"; + "[1,3,4,5,6]"; + "{\"x\":1234}" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlExists_/results.txt b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlExists_/results.txt new file mode 100644 index 0000000000..1b74c43a71 --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlExists_/results.txt @@ -0,0 +1,195 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + %true + ]; + [ + %true + ]; + [ + %true + ]; + [ + %true + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + [ + %false + ]; + [ + %false + ]; + [ + %false + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + %false + ]; + [ + %true + ]; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlQueryError_/extracted b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlQueryError_/extracted new file mode 100644 index 0000000000..cfa4d894a6 --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlQueryError_/extracted @@ -0,0 +1,10 @@ +<tmp_path>/program.sql:<main>: Fatal: Execution + + <tmp_path>/program.sql:<main>:12:1: Fatal: Execution of node: Result + SELECT + ^ + <tmp_path>/program.sql:<main>:14:12: Fatal: ydb/library/yql/udfs/common/json2/sql_query.h:xxx: Error executing jsonpath: +jsonpath:1:8: Error: Member not found, code: 4702 + + Json2::SqlQuery($jsonpath_error, $path, AsDict(), false, NULL, true, NULL); + ^
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlQuery_/results.txt b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlQuery_/results.txt new file mode 100644 index 0000000000..0773abf2be --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlQuery_/results.txt @@ -0,0 +1,400 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"y\":123}" + ]; + [ + "[123,456]" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + # + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + [ + "{}" + ]; + [ + "[]" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + [ + "{}" + ]; + [ + "[]" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "[123]" + ]; + [ + "[123]" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"y\":123}" + ]; + [ + "[{\"y\":123}]" + ]; + [ + "{\"y\":123}" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "[123,456]" + ]; + [ + "[[123,456]]" + ]; + [ + "[123,456]" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{}" + ]; + [ + "[]" + ]; + [ + "[]" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlTryExistsError_/extracted b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlTryExistsError_/extracted new file mode 100644 index 0000000000..34031fde35 --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlTryExistsError_/extracted @@ -0,0 +1,10 @@ +<tmp_path>/program.sql:<main>: Fatal: Execution + + <tmp_path>/program.sql:<main>:12:1: Fatal: Execution of node: Result + SELECT + ^ + <tmp_path>/program.sql:<main>:14:12: Fatal: ydb/library/yql/udfs/common/json2/sql_exists.h:xxx: Error executing jsonpath: +jsonpath:1:8: Error: Expected object, code: 4701 + + Json2::SqlTryExists($json, $path, AsDict()); + ^
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlTryExists_/results.txt b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlTryExists_/results.txt new file mode 100644 index 0000000000..4a5f62bc86 --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlTryExists_/results.txt @@ -0,0 +1,83 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + [ + %true + ]; + [ + %true + ]; + [ + %true + ]; + [ + %true + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlValue_/results.txt b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlValue_/results.txt new file mode 100644 index 0000000000..b5aeb82c9a --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/canondata/test.test_SqlValue_/results.txt @@ -0,0 +1,1663 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + [ + "column1"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + [ + "column3"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + [ + "column4"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1"; + [ + "some string value" + ] + ]; + [ + "0"; + [ + "1"; + "Error executing jsonpath:\njsonpath:1:8: Error: Member not found, code: 4702\n" + ] + ]; + [ + "0"; + [ + "1"; + "Error executing jsonpath:\njsonpath:1:8: Error: Expected object, code: 4701\n" + ] + ]; + [ + "1"; + # + ]; + [ + "1"; + # + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ]; + [ + "column1"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ]; + [ + "column3"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ]; + [ + "column4"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1"; + [ + "2856" + ] + ]; + [ + "0"; + [ + "1"; + "Error executing jsonpath:\njsonpath:1:8: Error: Member not found, code: 4702\n" + ] + ]; + [ + "0"; + [ + "1"; + "Error executing jsonpath:\njsonpath:1:8: Error: Expected object, code: 4701\n" + ] + ]; + [ + "1"; + # + ]; + [ + "1"; + # + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "column1"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "column3"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "column4"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1"; + [ + "2.71828" + ] + ]; + [ + "0"; + [ + "1"; + "Error executing jsonpath:\njsonpath:1:8: Error: Member not found, code: 4702\n" + ] + ]; + [ + "0"; + [ + "1"; + "Error executing jsonpath:\njsonpath:1:8: Error: Expected object, code: 4701\n" + ] + ]; + [ + "1"; + # + ]; + [ + "1"; + # + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + [ + "column1"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + [ + "column3"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + [ + "column4"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1"; + [ + %true + ] + ]; + [ + "0"; + [ + "1"; + "Error executing jsonpath:\njsonpath:1:8: Error: Member not found, code: 4702\n" + ] + ]; + [ + "0"; + [ + "1"; + "Error executing jsonpath:\njsonpath:1:8: Error: Expected object, code: 4701\n" + ] + ]; + [ + "1"; + # + ]; + [ + "1"; + # + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + [ + "column1"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + [ + "column3"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + [ + "column4"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + [ + "column5"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1"; + [ + "some string value" + ] + ]; + [ + "1"; + [ + "2856" + ] + ]; + [ + "1"; + [ + "2.71828" + ] + ]; + [ + "1"; + [ + "true" + ] + ]; + [ + "1"; + # + ]; + [ + "1"; + # + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + [ + "column1"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0"; + [ + "1"; + "Cannot convert extracted JSON value to target type" + ] + ]; + [ + "0"; + [ + "1"; + "Cannot convert extracted JSON value to target type" + ] + ]; + [ + "0"; + [ + "1"; + "Cannot convert extracted JSON value to target type" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ]; + [ + "column1"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0"; + [ + "1"; + "Cannot convert extracted JSON value to target type" + ] + ]; + [ + "0"; + [ + "1"; + "Cannot convert extracted JSON value to target type" + ] + ]; + [ + "0"; + [ + "1"; + "Cannot convert extracted JSON value to target type" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "column1"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0"; + [ + "1"; + "Cannot convert extracted JSON value to target type" + ] + ]; + [ + "1"; + [ + "2856" + ] + ]; + [ + "0"; + [ + "1"; + "Cannot convert extracted JSON value to target type" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + [ + "column1"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + [ + "column2"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0"; + [ + "1"; + "Cannot convert extracted JSON value to target type" + ] + ]; + [ + "0"; + [ + "1"; + "Cannot convert extracted JSON value to target type" + ] + ]; + [ + "0"; + [ + "1"; + "Cannot convert extracted JSON value to target type" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + [ + "column1"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "TupleType"; + [ + [ + "DataType"; + "Uint8" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "0"; + [ + "1"; + "Extracted JSON value is either object or array" + ] + ]; + [ + "0"; + [ + "1"; + "Extracted JSON value is either object or array" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json2/test/cases/AsJsonNode.sql b/ydb/library/yql/udfs/common/json2/test/cases/AsJsonNode.sql new file mode 100644 index 0000000000..2d85d5576c --- /dev/null +++ b/ydb/library/yql/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/ydb/library/yql/udfs/common/json2/test/cases/SerializeParse.sql b/ydb/library/yql/udfs/common/json2/test/cases/SerializeParse.sql new file mode 100644 index 0000000000..1d5eb42d0c --- /dev/null +++ b/ydb/library/yql/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/ydb/library/yql/udfs/common/json2/test/cases/SqlExists.sql b/ydb/library/yql/udfs/common/json2/test/cases/SqlExists.sql new file mode 100644 index 0000000000..34f475fe5a --- /dev/null +++ b/ydb/library/yql/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/ydb/library/yql/udfs/common/json2/test/cases/SqlQuery.sql b/ydb/library/yql/udfs/common/json2/test/cases/SqlQuery.sql new file mode 100644 index 0000000000..38750aec51 --- /dev/null +++ b/ydb/library/yql/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/ydb/library/yql/udfs/common/json2/test/cases/SqlQueryError.cfg b/ydb/library/yql/udfs/common/json2/test/cases/SqlQueryError.cfg new file mode 100644 index 0000000000..eb2e5315d1 --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/cases/SqlQueryError.cfg @@ -0,0 +1 @@ +xfail
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json2/test/cases/SqlQueryError.sql b/ydb/library/yql/udfs/common/json2/test/cases/SqlQueryError.sql new file mode 100644 index 0000000000..4aaa329fc0 --- /dev/null +++ b/ydb/library/yql/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/ydb/library/yql/udfs/common/json2/test/cases/SqlTryExists.sql b/ydb/library/yql/udfs/common/json2/test/cases/SqlTryExists.sql new file mode 100644 index 0000000000..f42bd5628d --- /dev/null +++ b/ydb/library/yql/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/ydb/library/yql/udfs/common/json2/test/cases/SqlTryExistsError.cfg b/ydb/library/yql/udfs/common/json2/test/cases/SqlTryExistsError.cfg new file mode 100644 index 0000000000..eb2e5315d1 --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/cases/SqlTryExistsError.cfg @@ -0,0 +1 @@ +xfail
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/json2/test/cases/SqlTryExistsError.sql b/ydb/library/yql/udfs/common/json2/test/cases/SqlTryExistsError.sql new file mode 100644 index 0000000000..3d0440b3ca --- /dev/null +++ b/ydb/library/yql/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/ydb/library/yql/udfs/common/json2/test/cases/SqlValue.sql b/ydb/library/yql/udfs/common/json2/test/cases/SqlValue.sql new file mode 100644 index 0000000000..8f86edee79 --- /dev/null +++ b/ydb/library/yql/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 diff --git a/ydb/library/yql/udfs/common/json2/test/ya.make b/ydb/library/yql/udfs/common/json2/test/ya.make new file mode 100644 index 0000000000..f60cc670b7 --- /dev/null +++ b/ydb/library/yql/udfs/common/json2/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/json2) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/json2/ya.make b/ydb/library/yql/udfs/common/json2/ya.make index ef41074955..15ccf5a74d 100644 --- a/ydb/library/yql/udfs/common/json2/ya.make +++ b/ydb/library/yql/udfs/common/json2/ya.make @@ -17,3 +17,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +) diff --git a/ydb/library/yql/udfs/common/pire/test/canondata/result.json b/ydb/library/yql/udfs/common/pire/test/canondata/result.json new file mode 100644 index 0000000000..2ec1b95e9a --- /dev/null +++ b/ydb/library/yql/udfs/common/pire/test/canondata/result.json @@ -0,0 +1,12 @@ +{ + "test.test[Basic]": [ + { + "uri": "file://test.test_Basic_/results.txt" + } + ], + "test.test[CharacterClasses]": [ + { + "uri": "file://test.test_CharacterClasses_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/pire/test/canondata/test.test_Basic_/results.txt b/ydb/library/yql/udfs/common/pire/test/canondata/test.test_Basic_/results.txt new file mode 100644 index 0000000000..6b3d19d9a1 --- /dev/null +++ b/ydb/library/yql/udfs/common/pire/test/canondata/test.test_Basic_/results.txt @@ -0,0 +1,508 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "match"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "grep"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "insensitive_grep"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "multi_match"; + [ + "TupleType"; + [ + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ] + ] + ] + ]; + [ + "some_multi_match"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "multi_match2"; + [ + "TupleType"; + [ + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ] + ] + ] + ]; + [ + "some_multi_match2a"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "some_multi_match2b"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "some_multi_match2c"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "capture"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "capture_many"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "replace"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column13"; + [ + "TupleType"; + [ + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + ""; + %false; + %false; + %false; + [ + %false; + %false; + %false; + %false; + %false; + %false; + %false + ]; + %false; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + #; + #; + [ + "" + ]; + [ + %false; + %false; + %false; + %false; + %false + ] + ]; + [ + "a"; + %true; + %false; + %false; + [ + %true; + %true; + %true; + %false; + %false; + %false; + %false + ]; + %true; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + #; + #; + [ + "a" + ]; + [ + %false; + %false; + %false; + %false; + %false + ] + ]; + [ + "aax"; + %true; + %false; + %false; + [ + %true; + %true; + %false; + %false; + %false; + %false; + %false + ]; + %true; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + #; + #; + [ + "aax" + ]; + [ + %false; + %false; + %false; + %false; + %false + ] + ]; + [ + "xaax"; + %false; + %false; + %false; + [ + %false; + %true; + %false; + %false; + %false; + %false; + %false + ]; + %false; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + [ + "a" + ]; + [ + "aa" + ]; + [ + "xbax" + ]; + [ + %false; + %false; + %false; + %false; + %false + ] + ]; + [ + "xaaxaaxaa"; + %false; + %true; + %true; + [ + %false; + %true; + %true; + %true; + %false; + %false; + %false + ]; + %false; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + [ + "a" + ]; + [ + "aa" + ]; + [ + "xaaxaaxba" + ]; + [ + %false; + %false; + %false; + %false; + %false + ] + ]; + [ + "XAXA"; + %false; + %false; + %true; + [ + %false; + %false; + %false; + %false; + %false; + %false; + %false + ]; + %false; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + #; + #; + [ + "XAXA" + ]; + [ + %false; + %false; + %false; + %false; + %false + ] + ]; + [ + "7"; + %false; + %false; + %false; + [ + %false; + %false; + %false; + %false; + %false; + %false; + %false + ]; + %false; + [ + %false; + %false; + %false; + %false; + %false + ]; + %false; + %false; + %false; + #; + #; + [ + "7" + ]; + [ + %false; + %false; + %false; + %false; + %false + ] + ]; + [ + "QC transfer task JAVA"; + %false; + %false; + %false; + [ + %false; + %true; + %false; + %false; + %false; + %false; + %false + ]; + %false; + [ + %false; + %true; + %true; + %false; + %false + ]; + %false; + %true; + %true; + #; + #; + [ + "QC transfer task JAVA" + ]; + [ + %false; + %false; + %false; + %false; + %false + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/pire/test/canondata/test.test_CharacterClasses_/results.txt b/ydb/library/yql/udfs/common/pire/test/canondata/test.test_CharacterClasses_/results.txt new file mode 100644 index 0000000000..7fe80ff82a --- /dev/null +++ b/ydb/library/yql/udfs/common/pire/test/canondata/test.test_CharacterClasses_/results.txt @@ -0,0 +1,59 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "digits"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "spaces"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "xx000xx"; + %true; + %false + ]; + [ + "lLlLl"; + %false; + %false + ]; + [ + "a1 b2 c3"; + %true; + %true + ]; + [ + "xxx yyy"; + %false; + %true + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/pire/test/cases/Basic.in b/ydb/library/yql/udfs/common/pire/test/cases/Basic.in new file mode 100644 index 0000000000..ddc6272247 --- /dev/null +++ b/ydb/library/yql/udfs/common/pire/test/cases/Basic.in @@ -0,0 +1,8 @@ +{"key"="1";"subkey"="1";"value"=""}; +{"key"="2";"subkey"="2";"value"="a"}; +{"key"="3";"subkey"="3";"value"="aax"}; +{"key"="4";"subkey"="4";"value"="xaax"}; +{"key"="5";"subkey"="5";"value"="xaaxaaxaa"}; +{"key"="6";"subkey"="6";"value"="XAXA"}; +{"key"="7";"subkey"="7";"value"="7"}; +{"key"="8";"subkey"="8";"value"="QC transfer task JAVA"}; diff --git a/ydb/library/yql/udfs/common/pire/test/cases/Basic.sql b/ydb/library/yql/udfs/common/pire/test/cases/Basic.sql new file mode 100644 index 0000000000..b13078f323 --- /dev/null +++ b/ydb/library/yql/udfs/common/pire/test/cases/Basic.sql @@ -0,0 +1,32 @@ +/* syntax version 1 */ +$match = Pire::Match("a.*"); +$grep = Pire::Grep("axa"); +$insensitive_grep = Pire::Grep("(?i)axa"); +$multi_match = Pire::MultiMatch(@@a.* +.*a.* +.*a +.*axa.*@@); +$multi_match2 = Pire::MultiMatch(@@YQL.* +QC.* +.*transfer task.*@@); + +$capture = Pire::Capture(".*x(a).*"); +$capture_many = Pire::Capture(".*x(a+).*"); +$replace = Pire::Replace(".*x(a).*"); + +SELECT + value, + $match(value) AS match, + $grep(value) AS grep, + $insensitive_grep(value) AS insensitive_grep, + $multi_match(value) AS multi_match, + $multi_match(value).0 AS some_multi_match, + $multi_match2(value) AS multi_match2, + $multi_match2(value).0 AS some_multi_match2a, + $multi_match2(value).1 AS some_multi_match2b, + $multi_match2(value).2 AS some_multi_match2c, + $capture(value) AS capture, + $capture_many(value) AS capture_many, + $replace(value, "b") AS replace, + $multi_match2(Nothing(String?)) +FROM Input; diff --git a/ydb/library/yql/udfs/common/pire/test/cases/CharacterClasses.in b/ydb/library/yql/udfs/common/pire/test/cases/CharacterClasses.in new file mode 100644 index 0000000000..e2737f40a1 --- /dev/null +++ b/ydb/library/yql/udfs/common/pire/test/cases/CharacterClasses.in @@ -0,0 +1,4 @@ +{"key"="1";"subkey"="1";"value"="xx000xx"}; +{"key"="2";"subkey"="2";"value"="lLlLl"}; +{"key"="3";"subkey"="3";"value"="a1 b2 c3"}; +{"key"="4";"subkey"="4";"value"="xxx yyy"}; diff --git a/ydb/library/yql/udfs/common/pire/test/cases/CharacterClasses.sql b/ydb/library/yql/udfs/common/pire/test/cases/CharacterClasses.sql new file mode 100644 index 0000000000..be8ab6c294 --- /dev/null +++ b/ydb/library/yql/udfs/common/pire/test/cases/CharacterClasses.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +$digits = Pire::Grep("\\d+"); +$spaces = Pire::Grep("\\s+"); + +SELECT + value, + $digits(value) AS digits, + $spaces(value) AS spaces +FROM Input; diff --git a/ydb/library/yql/udfs/common/pire/test/ya.make b/ydb/library/yql/udfs/common/pire/test/ya.make new file mode 100644 index 0000000000..817bb1ac5c --- /dev/null +++ b/ydb/library/yql/udfs/common/pire/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/pire) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/pire/ya.make b/ydb/library/yql/udfs/common/pire/ya.make index b87ebf9f74..05f4576a8f 100644 --- a/ydb/library/yql/udfs/common/pire/ya.make +++ b/ydb/library/yql/udfs/common/pire/ya.make @@ -15,3 +15,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +)
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/re2/test/canondata/result.json b/ydb/library/yql/udfs/common/re2/test/canondata/result.json new file mode 100644 index 0000000000..2be3e88681 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/canondata/result.json @@ -0,0 +1,37 @@ +{ + "test.test[BackslashInLike]": [ + { + "uri": "file://test.test_BackslashInLike_/results.txt" + } + ], + "test.test[BasicOptions]": [ + { + "uri": "file://test.test_BasicOptions_/results.txt" + } + ], + "test.test[Basic]": [ + { + "uri": "file://test.test_Basic_/results.txt" + } + ], + "test.test[DefOptions]": [ + { + "uri": "file://test.test_DefOptions_/results.txt" + } + ], + "test.test[MutableLambda]": [ + { + "uri": "file://test.test_MutableLambda_/results.txt" + } + ], + "test.test[SkipGroup]": [ + { + "uri": "file://test.test_SkipGroup_/results.txt" + } + ], + "test.test[Space]": [ + { + "uri": "file://test.test_Space_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/re2/test/canondata/test.test_BackslashInLike_/results.txt b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_BackslashInLike_/results.txt new file mode 100644 index 0000000000..cbd3b76eba --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_BackslashInLike_/results.txt @@ -0,0 +1,28 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %false + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/re2/test/canondata/test.test_BasicOptions_/results.txt b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_BasicOptions_/results.txt new file mode 100644 index 0000000000..ba109c8a08 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_BasicOptions_/results.txt @@ -0,0 +1,278 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "match"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "grep"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "capture"; + [ + "StructType"; + [ + [ + "_0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "_1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "foo"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "capture_member"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "replace"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "count"; + [ + "DataType"; + "Uint32" + ] + ]; + [ + "tokens"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + ""; + %false; + %false; + [ + #; + #; + # + ]; + #; + [ + "" + ]; + "0"; + [] + ]; + [ + "a"; + %false; + %true; + [ + #; + #; + # + ]; + #; + [ + "a" + ]; + "1"; + [ + "a" + ] + ]; + [ + "aax"; + %false; + %true; + [ + #; + #; + # + ]; + #; + [ + "aax" + ]; + "2"; + [ + "aax" + ] + ]; + [ + "xaax1"; + %false; + %true; + [ + [ + "xaax1" + ]; + [ + "aa" + ]; + [ + "x" + ] + ]; + [ + "aa" + ]; + [ + "baaz1" + ]; + "2"; + [ + "xaax1" + ] + ]; + [ + "xaaxaaxaa"; + %false; + %true; + [ + [ + "xaaxaaxaa" + ]; + [ + "aa" + ]; + [ + "x" + ] + ]; + [ + "aa" + ]; + [ + "baazaaxaa" + ]; + "6"; + [ + "xaaxaaxaa" + ] + ]; + [ + "sup, dude"; + %false; + %false; + [ + #; + #; + # + ]; + #; + [ + "sup, dude" + ]; + "0"; + [ + "sup"; + "dude" + ] + ]; + [ + "one, two, three."; + %false; + %false; + [ + #; + #; + # + ]; + #; + [ + "one, two, three." + ]; + "0"; + [ + "one"; + "two"; + "three" + ] + ]; + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD1\x8D\xD1\x82\xD0\xBE \xD1\x80\xD1\x83\xD1\x81\xD1\x81\xD0\xBA\xD0\xB8\xD0\xB5, \xD0\xB1\xD1\x83\xD0\xBA\xD0\xB2\xD1\213111!"; + %false; + %false; + [ + #; + #; + # + ]; + #; + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD1\x8D\xD1\x82\xD0\xBE \xD1\x80\xD1\x83\xD1\x81\xD1\x81\xD0\xBA\xD0\xB8\xD0\xB5, \xD0\xB1\xD1\x83\xD0\xBA\xD0\xB2\xD1\213111!" + ]; + "0"; + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"; + "\xD1\x8D\xD1\x82\xD0\xBE"; + "\xD1\x80\xD1\x83\xD1\x81\xD1\x81\xD0\xBA\xD0\xB8\xD0\xB5"; + "\xD0\xB1\xD1\x83\xD0\xBA\xD0\xB2\xD1\213111" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/re2/test/canondata/test.test_Basic_/results.txt b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_Basic_/results.txt new file mode 100644 index 0000000000..d57d92025e --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_Basic_/results.txt @@ -0,0 +1,257 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "match"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "grep"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "capture"; + [ + "StructType"; + [ + [ + "_0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "_1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "foo"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "capture_member"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "replace"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "count"; + [ + "DataType"; + "Uint32" + ] + ]; + [ + "tokens"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + ""; + %false; + %false; + [ + #; + #; + # + ]; + #; + [ + "" + ]; + "0"; + [] + ]; + [ + "a"; + %false; + %true; + [ + #; + #; + # + ]; + #; + [ + "a" + ]; + "1"; + [ + "a" + ] + ]; + [ + "aax"; + %false; + %true; + [ + #; + #; + # + ]; + #; + [ + "aax" + ]; + "2"; + [ + "aax" + ] + ]; + [ + "xaax1"; + %false; + %true; + [ + [ + "xaax1" + ]; + [ + "aa" + ]; + [ + "x" + ] + ]; + [ + "aa" + ]; + [ + "baaz1" + ]; + "2"; + [ + "xaax1" + ] + ]; + [ + "xaaxaaxaa"; + %false; + %true; + [ + [ + "xaaxaaxaa" + ]; + [ + "aa" + ]; + [ + "x" + ] + ]; + [ + "aa" + ]; + [ + "baazaaxaa" + ]; + "6"; + [ + "xaaxaaxaa" + ] + ]; + [ + "sup, dude"; + %false; + %false; + [ + #; + #; + # + ]; + #; + [ + "sup, dude" + ]; + "0"; + [ + "sup"; + "dude" + ] + ]; + [ + "one, two, three."; + %false; + %false; + [ + #; + #; + # + ]; + #; + [ + "one, two, three." + ]; + "0"; + [ + "one"; + "two"; + "three" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/re2/test/canondata/test.test_DefOptions_/results.txt b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_DefOptions_/results.txt new file mode 100644 index 0000000000..1287d3da2e --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_DefOptions_/results.txt @@ -0,0 +1,266 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "StructType"; + [ + [ + "CaseSensitive"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "DotNl"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "Literal"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "LogErrors"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "LongestMatch"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "MaxMem"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "NeverCapture"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "NeverNl"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "OneLine"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "PerlClasses"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "PosixSyntax"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "Utf8"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "WordBoundary"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + %true; + %false; + %false; + %true; + %false; + "8388608"; + %false; + %false; + %false; + %false; + %false; + %true; + %false + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "StructType"; + [ + [ + "CaseSensitive"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "DotNl"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "Literal"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "LogErrors"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "LongestMatch"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "MaxMem"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "NeverCapture"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "NeverNl"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "OneLine"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "PerlClasses"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "PosixSyntax"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "Utf8"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "WordBoundary"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + %true; + %false; + %false; + %true; + %false; + "8388608"; + %false; + %false; + %false; + %false; + %false; + %true; + %false + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/re2/test/canondata/test.test_MutableLambda_/results.txt b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_MutableLambda_/results.txt new file mode 100644 index 0000000000..4e62b7d8ce --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_MutableLambda_/results.txt @@ -0,0 +1,52 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "x"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "e"; + %false + ]; + [ + "aa"; + %true + ]; + [ + "et"; + %false + ]; + [ + "cb"; + %false + ]; + [ + "ba"; + %true + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/re2/test/canondata/test.test_SkipGroup_/results.txt b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_SkipGroup_/results.txt new file mode 100644 index 0000000000..466ed83950 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_SkipGroup_/results.txt @@ -0,0 +1,105 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "capture"; + [ + "StructType"; + [ + [ + "_0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "_1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "major"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "minor"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "no_groups"; + [ + "StructType"; + [ + [ + "_0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.2.7 (KHTML, like Gecko) Version/9.0.1 Safari" + ]; + [ + "Safari" + ]; + [ + "5" + ]; + [ + "0" + ] + ]; + [ + [ + "Intel Mac" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/re2/test/canondata/test.test_Space_/results.txt b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_Space_/results.txt new file mode 100644 index 0000000000..b62998b697 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/canondata/test.test_Space_/results.txt @@ -0,0 +1,28 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/re2/test/cases/BackslashInLike.sql b/ydb/library/yql/udfs/common/re2/test/cases/BackslashInLike.sql new file mode 100644 index 0000000000..65973c7d81 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/cases/BackslashInLike.sql @@ -0,0 +1 @@ +select 'utma' like @@%utm\_@@; diff --git a/ydb/library/yql/udfs/common/re2/test/cases/Basic.in b/ydb/library/yql/udfs/common/re2/test/cases/Basic.in new file mode 100644 index 0000000000..ba0028e861 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/cases/Basic.in @@ -0,0 +1,7 @@ +{"key"="1";"subkey"="1";"value"=""}; +{"key"="2";"subkey"="2";"value"="a"}; +{"key"="3";"subkey"="3";"value"="aax"}; +{"key"="4";"subkey"="4";"value"="xaax1"}; +{"key"="5";"subkey"="5";"value"="xaaxaaxaa"}; +{"key"="6";"subkey"="6";"value"="sup, dude"}; +{"key"="7";"subkey"="7";"value"="one, two, three."}; diff --git a/ydb/library/yql/udfs/common/re2/test/cases/Basic.sql b/ydb/library/yql/udfs/common/re2/test/cases/Basic.sql new file mode 100644 index 0000000000..7d049f88b2 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/cases/Basic.sql @@ -0,0 +1,21 @@ +/* syntax version 1 */ +$match = Re2::Match("[ax]+\d"); +$grep = Re2Posix::Grep("a.*"); +$capture = Re2::Capture(".*(?P<foo>xa?)(a{2,}).*"); +$replace = Re2::Replace("x(a+)x"); +$count = Re2::Count("a"); +-- regex to find all tokens consisting of letters and digist +-- L stands for "Letters", Nd stands for "Number, decimal digit", +-- see https://en.wikipedia.org/wiki/Unicode_character_property#General_Category +$find_and_consume = Re2::FindAndConsume('([\\pL\\p{Nd}]+)'); + +SELECT + value, + $match(value) AS match, + $grep(value) AS grep, + $capture(value) AS capture, + $capture(value)._1 AS capture_member, + $replace(value, "b\\1z") AS replace, + $count(value) AS count, + $find_and_consume(value) AS tokens +FROM Input; diff --git a/ydb/library/yql/udfs/common/re2/test/cases/BasicOptions.in b/ydb/library/yql/udfs/common/re2/test/cases/BasicOptions.in new file mode 100644 index 0000000000..f63986dffe --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/cases/BasicOptions.in @@ -0,0 +1,8 @@ +{"key"="1";"subkey"="1";"value"=""}; +{"key"="2";"subkey"="2";"value"="a"}; +{"key"="3";"subkey"="3";"value"="aax"}; +{"key"="4";"subkey"="4";"value"="xaax1"}; +{"key"="5";"subkey"="5";"value"="xaaxaaxaa"}; +{"key"="6";"subkey"="6";"value"="sup, dude"}; +{"key"="7";"subkey"="7";"value"="one, two, three."}; +{"key"="7";"subkey"="7";"value"="привет это русские, буквы111!"}; diff --git a/ydb/library/yql/udfs/common/re2/test/cases/BasicOptions.sql b/ydb/library/yql/udfs/common/re2/test/cases/BasicOptions.sql new file mode 100644 index 0000000000..a4338c03e1 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/cases/BasicOptions.sql @@ -0,0 +1,22 @@ +/* syntax version 1 */ +$options = Re2::Options(true as Utf8); +$match = Re2::Match("[ax]+\d",$options); +$grep = Re2Posix::Grep("a.*",$options); +$capture = Re2::Capture(".*(?P<foo>xa?)(a{2,}).*",$options); +$replace = Re2::Replace("x(a+)x",$options); +$count = Re2::Count("a",$options); +-- regex to find all tokens consisting of letters and digist +-- L stands for "Letters", Nd stands for "Number, decimal digit", +-- see https://en.wikipedia.org/wiki/Unicode_character_property#General_Category +$find_and_consume = Re2::FindAndConsume('([\\pL\\p{Nd}]+)',$options); + +SELECT + value, + $match(value) AS match, + $grep(value) AS grep, + $capture(value) AS capture, + $capture(value)._1 AS capture_member, + $replace(value, "b\\1z") AS replace, + $count(value) AS count, + $find_and_consume(value) AS tokens +FROM Input; diff --git a/ydb/library/yql/udfs/common/re2/test/cases/DefOptions.sql b/ydb/library/yql/udfs/common/re2/test/cases/DefOptions.sql new file mode 100644 index 0000000000..d21a7108a8 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/cases/DefOptions.sql @@ -0,0 +1,19 @@ +/* syntax version 1 */ +select Re2::Options( + true as `Utf8`, + false as PosixSyntax, + false as LongestMatch, + true as LogErrors, + 8<<20 as MaxMem, + false as Literal, + false as NeverNl, + false as DotNl, + false as NeverCapture, + true as CaseSensitive, + false as PerlClasses, + false as WordBoundary, + false as OneLine +); + +select Re2::Options( +); diff --git a/ydb/library/yql/udfs/common/re2/test/cases/MutableLambda.in b/ydb/library/yql/udfs/common/re2/test/cases/MutableLambda.in new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/cases/MutableLambda.in diff --git a/ydb/library/yql/udfs/common/re2/test/cases/MutableLambda.sql b/ydb/library/yql/udfs/common/re2/test/cases/MutableLambda.sql new file mode 100644 index 0000000000..5e3f24be0b --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/cases/MutableLambda.sql @@ -0,0 +1,24 @@ +/* syntax version 1 */ +$regs = AsList("^a","^b"); + +$input = AsList("e","aa","et","cb","ba"); + +$table_input = (select * from (select $input as x) flatten by x); + +$compiled_regs = ListMap($regs, ($r)->{ + return Re2::Grep($r); +}); + +$f = ($s) -> { + $apply_list = ListMap($compiled_regs, ($cr)->{ + return $cr($s); + }); + + $filtered = ListFilter($apply_list, ($m)->{ + return $m; + }); + + return ListLength(ListTake($filtered,1)) > 0; +}; + +select x, $f(x) from $table_input; diff --git a/ydb/library/yql/udfs/common/re2/test/cases/SkipGroup.sql b/ydb/library/yql/udfs/common/re2/test/cases/SkipGroup.sql new file mode 100644 index 0000000000..5231c72fcb --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/cases/SkipGroup.sql @@ -0,0 +1,10 @@ +/* syntax version 1 */ +$input = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.2.7 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.7"; +$capture = Re2::Capture( + "(?:Mozilla|Opera)/(?P<major>\\d)\\.(?P<minor>\\d).*(Safari)" +); +$no_groups = Re2::Capture("(?:Intel) Mac"); + +SELECT + $capture($input) AS capture, + $no_groups($input) AS no_groups; diff --git a/ydb/library/yql/udfs/common/re2/test/cases/Space.sql b/ydb/library/yql/udfs/common/re2/test/cases/Space.sql new file mode 100644 index 0000000000..34f0590ca1 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/cases/Space.sql @@ -0,0 +1,2 @@ +/* syntax version 1 */ +SELECT 'a b c' LIKE 'a b%'; diff --git a/ydb/library/yql/udfs/common/re2/test/ya.make b/ydb/library/yql/udfs/common/re2/test/ya.make new file mode 100644 index 0000000000..dca0d40179 --- /dev/null +++ b/ydb/library/yql/udfs/common/re2/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/re2) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/re2/ya.make b/ydb/library/yql/udfs/common/re2/ya.make index a8269380b8..e68b9105a6 100644 --- a/ydb/library/yql/udfs/common/re2/ya.make +++ b/ydb/library/yql/udfs/common/re2/ya.make @@ -16,3 +16,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +)
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/set/test/canondata/result.json b/ydb/library/yql/udfs/common/set/test/canondata/result.json new file mode 100644 index 0000000000..a235fbf902 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/canondata/result.json @@ -0,0 +1,47 @@ +{ + "test.test[ListDistinctDictInDict]": [ + { + "uri": "file://test.test_ListDistinctDictInDict_/results.txt" + } + ], + "test.test[ListDistinctDict]": [ + { + "uri": "file://test.test_ListDistinctDict_/results.txt" + } + ], + "test.test[ListDistinctLazyList]": [ + { + "uri": "file://test.test_ListDistinctLazyList_/results.txt" + } + ], + "test.test[ListDistinctLimit]": [ + { + "uri": "file://test.test_ListDistinctLimit_/results.txt" + } + ], + "test.test[ListDistinctSingular]": [ + { + "uri": "file://test.test_ListDistinctSingular_/results.txt" + } + ], + "test.test[ListDistinctStructInDict]": [ + { + "uri": "file://test.test_ListDistinctStructInDict_/results.txt" + } + ], + "test.test[ListDistinctTuple]": [ + { + "uri": "file://test.test_ListDistinctTuple_/results.txt" + } + ], + "test.test[ListDistinctVariant]": [ + { + "uri": "file://test.test_ListDistinctVariant_/results.txt" + } + ], + "test.test[ListDistinct]": [ + { + "uri": "file://test.test_ListDistinct_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctDictInDict_/results.txt b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctDictInDict_/results.txt new file mode 100644 index 0000000000..0971436971 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctDictInDict_/results.txt @@ -0,0 +1,79 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "DictType"; + [ + "DictType"; + [ + "DataType"; + "Int32" + ]; + [ + "VoidType" + ] + ]; + [ + "VoidType" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + [ + [ + "1"; + "Void" + ] + ]; + "Void" + ] + ]; + [ + [ + [ + [ + "1"; + "Void" + ] + ]; + "Void" + ]; + [ + [ + [ + "2"; + "Void" + ]; + [ + "1"; + "Void" + ] + ]; + "Void" + ] + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctDict_/results.txt b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctDict_/results.txt new file mode 100644 index 0000000000..c2f9c4e101 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctDict_/results.txt @@ -0,0 +1,103 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "DictType"; + [ + "DataType"; + "Int32" + ]; + [ + "VoidType" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + "1"; + "Void" + ] + ]; + [ + [ + "2"; + "Void" + ]; + [ + "1"; + "Void" + ] + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "DictType"; + [ + "DataType"; + "Int32" + ]; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + "1"; + "3" + ] + ]; + [ + [ + "1"; + "2" + ] + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctLazyList_/results.txt b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctLazyList_/results.txt new file mode 100644 index 0000000000..3749a4a3b7 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctLazyList_/results.txt @@ -0,0 +1,85 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "ListType"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "1"; + "2"; + "3" + ]; + [ + "1"; + "2" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "ListType"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "1"; + "3" + ]; + [ + "1"; + "2" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctLimit_/results.txt b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctLimit_/results.txt new file mode 100644 index 0000000000..dbcfe2be9d --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctLimit_/results.txt @@ -0,0 +1,57 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + [ + "a"; + "c"; + "b" + ] + ]; + [ + "2"; + [ + "x"; + "y"; + "u" + ] + ]; + [ + "3"; + [ + "m" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctSingular_/results.txt b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctSingular_/results.txt new file mode 100644 index 0000000000..7fb0c4f89b --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctSingular_/results.txt @@ -0,0 +1,115 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "EmptyListType" + ] + ] + ] + ] + ]; + "Data" = [ + [ + [] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "VoidType" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "EmptyListType" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "EmptyDictType" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctStructInDict_/results.txt b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctStructInDict_/results.txt new file mode 100644 index 0000000000..09933a72e3 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctStructInDict_/results.txt @@ -0,0 +1,71 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "DictType"; + [ + "StructType"; + [ + [ + "a"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "b"; + [ + "DataType"; + "Int32" + ] + ] + ] + ]; + [ + "VoidType" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + [ + [ + "1"; + "3" + ]; + "Void" + ] + ]; + [ + [ + [ + "1"; + "2" + ]; + "Void" + ] + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctTuple_/results.txt b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctTuple_/results.txt new file mode 100644 index 0000000000..510244f430 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctTuple_/results.txt @@ -0,0 +1,115 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "TupleType"; + [ + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + [ + [ + "1"; + "a" + ]; + [ + "1"; + "e" + ]; + [ + "1"; + "b" + ]; + [ + "1"; + "c" + ]; + [ + "2"; + "a" + ] + ] + ]; + [ + "2"; + [ + [ + "2"; + "x" + ]; + [ + "3"; + "y" + ]; + [ + "4"; + "x" + ]; + [ + "5"; + "u" + ]; + [ + "6"; + "v" + ]; + [ + "8"; + "x" + ]; + [ + "7"; + "w" + ]; + [ + "9"; + "w" + ] + ] + ]; + [ + "3"; + [ + [ + "0"; + "m" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctVariant_/results.txt b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctVariant_/results.txt new file mode 100644 index 0000000000..e0ce566a46 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinctVariant_/results.txt @@ -0,0 +1,108 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "DataType"; + "Int32" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "1"; + "str" + ]; + [ + "0"; + "1" + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "VariantType"; + [ + "StructType"; + [ + [ + "x"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "y"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "1"; + "str" + ]; + [ + "0"; + "1" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinct_/results.txt b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinct_/results.txt new file mode 100644 index 0000000000..937160a457 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/canondata/test.test_ListDistinct_/results.txt @@ -0,0 +1,60 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + [ + "a"; + "c"; + "b"; + "e" + ] + ]; + [ + "2"; + [ + "x"; + "y"; + "v"; + "u"; + "w" + ] + ]; + [ + "3"; + [ + "m" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinct.in b/ydb/library/yql/udfs/common/set/test/cases/ListDistinct.in new file mode 100644 index 0000000000..af51412a1e --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinct.in @@ -0,0 +1,15 @@ +{"key"="1";"subkey"="";"value"="a"}; +{"key"="1";"subkey"="";"value"="b"}; +{"key"="1";"subkey"="";"value"="c"}; +{"key"="1";"subkey"="";"value"="a"}; +{"key"="1";"subkey"="";"value"="e"}; +{"key"="1";"subkey"="";"value"="b"}; +{"key"="2";"subkey"="";"value"="x"}; +{"key"="2";"subkey"="";"value"="y"}; +{"key"="2";"subkey"="";"value"="x"}; +{"key"="2";"subkey"="";"value"="u"}; +{"key"="2";"subkey"="";"value"="v"}; +{"key"="2";"subkey"="";"value"="w"}; +{"key"="2";"subkey"="";"value"="x"}; +{"key"="2";"subkey"="";"value"="w"}; +{"key"="3";"subkey"="";"value"="m"}; diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinct.in.attr b/ydb/library/yql/udfs/common/set/test/cases/ListDistinct.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinct.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinct.sql b/ydb/library/yql/udfs/common/set/test/cases/ListDistinct.sql new file mode 100644 index 0000000000..b13b6c9c71 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinct.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +USE plato; + +SELECT + key, + AGGREGATE_LIST_DISTINCT(value) +FROM Input +GROUP BY key +ORDER BY key diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctDict.sql b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctDict.sql new file mode 100644 index 0000000000..2bee58b66e --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctDict.sql @@ -0,0 +1,8 @@ +/* syntax version 1 */ +select AGGREGATE_LIST_DISTINCT(x) from +(select [{1,2},{1},{1,2}] as x) +flatten list by x; + +select AGGREGATE_LIST_DISTINCT(x) from +(select [{1:2},{1:3},{1:2}] as x) +flatten list by x; diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctDictInDict.sql b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctDictInDict.sql new file mode 100644 index 0000000000..775b8dc797 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctDictInDict.sql @@ -0,0 +1,4 @@ +/* syntax version 1 */ +select AGGREGATE_LIST_DISTINCT(x) from +(select [{{1,2},{1}},{{1}},{{1,2},{1}}] as x) +flatten list by x; diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLazyList.sql b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLazyList.sql new file mode 100644 index 0000000000..fcaf49e69d --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLazyList.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +select AGGREGATE_LIST_DISTINCT(x) from +(select [[1,2],[1,2,3],YQL::LazyList([1,2])] as x) +flatten list by x; + +select AGGREGATE_LIST_DISTINCT(x) from +(select [YQL::LazyList([1,2]),[1,3], YQL::LazyList([1,2])] as x) +flatten list by x; + diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLimit.in b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLimit.in new file mode 100644 index 0000000000..af51412a1e --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLimit.in @@ -0,0 +1,15 @@ +{"key"="1";"subkey"="";"value"="a"}; +{"key"="1";"subkey"="";"value"="b"}; +{"key"="1";"subkey"="";"value"="c"}; +{"key"="1";"subkey"="";"value"="a"}; +{"key"="1";"subkey"="";"value"="e"}; +{"key"="1";"subkey"="";"value"="b"}; +{"key"="2";"subkey"="";"value"="x"}; +{"key"="2";"subkey"="";"value"="y"}; +{"key"="2";"subkey"="";"value"="x"}; +{"key"="2";"subkey"="";"value"="u"}; +{"key"="2";"subkey"="";"value"="v"}; +{"key"="2";"subkey"="";"value"="w"}; +{"key"="2";"subkey"="";"value"="x"}; +{"key"="2";"subkey"="";"value"="w"}; +{"key"="3";"subkey"="";"value"="m"}; diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLimit.in.attr b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLimit.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLimit.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLimit.sql b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLimit.sql new file mode 100644 index 0000000000..439f05776e --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctLimit.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +USE plato; + +SELECT + key, + AGGREGATE_LIST_DISTINCT(value, 3) +FROM Input +GROUP BY key +ORDER BY key diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctSingular.sql b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctSingular.sql new file mode 100644 index 0000000000..1887ec6180 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctSingular.sql @@ -0,0 +1,16 @@ +/* syntax version 1 */ +select AGGREGATE_LIST_DISTINCT(x) from +(select [null, null] as x) +flatten list by x; + +select AGGREGATE_LIST_DISTINCT(x) from +(select [void(), void()] as x) +flatten list by x; + +select AGGREGATE_LIST_DISTINCT(x) from +(select [[], []] as x) +flatten list by x; + +select AGGREGATE_LIST_DISTINCT(x) from +(select [{}, {}] as x) +flatten list by x; diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctStructInDict.sql b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctStructInDict.sql new file mode 100644 index 0000000000..88acaede01 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctStructInDict.sql @@ -0,0 +1,4 @@ +/* syntax version 1 */ +select AGGREGATE_LIST_DISTINCT(x) from +(select [{<|a:1,b:2|>},{<|a:1,b:3|>},{<|a:1,b:2|>}] as x) +flatten list by x; diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctTuple.in b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctTuple.in new file mode 100644 index 0000000000..7c638071c1 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctTuple.in @@ -0,0 +1,15 @@ +{"key"="1";"subkey"="1";"value"="a"}; +{"key"="1";"subkey"="1";"value"="b"}; +{"key"="1";"subkey"="1";"value"="c"}; +{"key"="1";"subkey"="2";"value"="a"}; +{"key"="1";"subkey"="1";"value"="e"}; +{"key"="1";"subkey"="1";"value"="b"}; +{"key"="2";"subkey"="2";"value"="x"}; +{"key"="2";"subkey"="3";"value"="y"}; +{"key"="2";"subkey"="4";"value"="x"}; +{"key"="2";"subkey"="5";"value"="u"}; +{"key"="2";"subkey"="6";"value"="v"}; +{"key"="2";"subkey"="7";"value"="w"}; +{"key"="2";"subkey"="8";"value"="x"}; +{"key"="2";"subkey"="9";"value"="w"}; +{"key"="3";"subkey"="0";"value"="m"}; diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctTuple.in.attr b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctTuple.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctTuple.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctTuple.sql b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctTuple.sql new file mode 100644 index 0000000000..8c3472bb85 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctTuple.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +USE plato; + +SELECT + key, + AGGREGATE_LIST_DISTINCT(AsTuple(subkey, value)) +FROM Input +GROUP BY key +ORDER BY key diff --git a/ydb/library/yql/udfs/common/set/test/cases/ListDistinctVariant.sql b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctVariant.sql new file mode 100644 index 0000000000..29469d01b1 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/cases/ListDistinctVariant.sql @@ -0,0 +1,11 @@ +/* syntax version 1 */ +$vt1 = Variant<Int32,String>; +select AGGREGATE_LIST_DISTINCT(x) from +(select [Variant(1,"0",$vt1),Variant("str","1",$vt1),Variant(1,"0",$vt1)] as x) +flatten list by x; + +$vt2 = Variant<x:Int32,y:String>; +select AGGREGATE_LIST_DISTINCT(x) from +(select [Variant(1,"x",$vt2),Variant("str","y",$vt2),Variant(1,"x",$vt2)] as x) +flatten list by x; + diff --git a/ydb/library/yql/udfs/common/set/test/ya.make b/ydb/library/yql/udfs/common/set/test/ya.make new file mode 100644 index 0000000000..497fb2f653 --- /dev/null +++ b/ydb/library/yql/udfs/common/set/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/set) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/set/ya.make b/ydb/library/yql/udfs/common/set/ya.make index 1ad272b98f..05c461cebc 100644 --- a/ydb/library/yql/udfs/common/set/ya.make +++ b/ydb/library/yql/udfs/common/set/ya.make @@ -11,3 +11,7 @@ SRCS( ) END() + +RECURSE_FOR_TESTS( + test +)
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/top/test/canondata/result.json b/ydb/library/yql/udfs/common/top/test/canondata/result.json new file mode 100644 index 0000000000..c09d321f5a --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/canondata/result.json @@ -0,0 +1,47 @@ +{ + "test.test[BottomByTuple]": [ + { + "uri": "file://test.test_BottomByTuple_/results.txt" + } + ], + "test.test[BottomBy]": [ + { + "uri": "file://test.test_BottomBy_/results.txt" + } + ], + "test.test[Bottom]": [ + { + "uri": "file://test.test_Bottom_/results.txt" + } + ], + "test.test[TopBy]": [ + { + "uri": "file://test.test_TopBy_/results.txt" + } + ], + "test.test[TopList]": [ + { + "uri": "file://test.test_TopList_/results.txt" + } + ], + "test.test[TopTuple]": [ + { + "uri": "file://test.test_TopTuple_/results.txt" + } + ], + "test.test[TopVariant]": [ + { + "uri": "file://test.test_TopVariant_/results.txt" + } + ], + "test.test[Top]": [ + { + "uri": "file://test.test_Top_/results.txt" + } + ], + "test.test[Window]": [ + { + "uri": "file://test.test_Window_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/top/test/canondata/test.test_BottomByTuple_/results.txt b/ydb/library/yql/udfs/common/top/test/canondata/test.test_BottomByTuple_/results.txt new file mode 100644 index 0000000000..2d0670bd68 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/canondata/test.test_BottomByTuple_/results.txt @@ -0,0 +1,119 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "TupleType"; + [ + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + [ + [ + "13"; + "f" + ]; + [ + "2"; + "b" + ]; + [ + "4"; + "d" + ]; + [ + "5"; + "a" + ]; + [ + "7"; + "c" + ]; + [ + "8"; + "e" + ] + ] + ]; + [ + "2"; + [ + [ + "1"; + "g" + ]; + [ + "2"; + "c" + ]; + [ + "3"; + "e" + ]; + [ + "4"; + "a" + ]; + [ + "6"; + "b" + ]; + [ + "9"; + "d" + ]; + [ + "9"; + "f" + ]; + [ + "9"; + "h" + ] + ] + ]; + [ + "3"; + [ + [ + "1"; + "a" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/top/test/canondata/test.test_BottomBy_/results.txt b/ydb/library/yql/udfs/common/top/test/canondata/test.test_BottomBy_/results.txt new file mode 100644 index 0000000000..9a5eb42565 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/canondata/test.test_BottomBy_/results.txt @@ -0,0 +1,61 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + [ + "2b"; + "4d"; + "5a"; + "7c"; + "8e" + ] + ]; + [ + "2"; + [ + "1g"; + "2c"; + "3e"; + "4a"; + "6b" + ] + ]; + [ + "3"; + [ + "1a" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/top/test/canondata/test.test_Bottom_/results.txt b/ydb/library/yql/udfs/common/top/test/canondata/test.test_Bottom_/results.txt new file mode 100644 index 0000000000..4b34ad59ea --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/canondata/test.test_Bottom_/results.txt @@ -0,0 +1,59 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + [ + "13"; + "2"; + "4"; + "5" + ] + ]; + [ + "2"; + [ + "1"; + "2"; + "3"; + "4" + ] + ]; + [ + "3"; + [ + "1" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopBy_/results.txt b/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopBy_/results.txt new file mode 100644 index 0000000000..32e6a4c374 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopBy_/results.txt @@ -0,0 +1,63 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + [ + "8e"; + "7c"; + "5a"; + "4d"; + "2b"; + "13f" + ] + ]; + [ + "2"; + [ + "9d"; + "9f"; + "9h"; + "6b"; + "4a"; + "3e" + ] + ]; + [ + "3"; + [ + "1a" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopList_/results.txt b/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopList_/results.txt new file mode 100644 index 0000000000..5997422bf7 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopList_/results.txt @@ -0,0 +1,57 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "ListType"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "1"; + "2"; + "3" + ]; + [ + "1"; + "2" + ]; + [ + "1"; + "2" + ]; + [ + "1" + ]; + [ + "1" + ]; + [ + "1" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopTuple_/results.txt b/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopTuple_/results.txt new file mode 100644 index 0000000000..6c5e14b7e2 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopTuple_/results.txt @@ -0,0 +1,103 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "TupleType"; + [ + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + [ + [ + "8"; + "e" + ]; + [ + "7"; + "c" + ]; + [ + "5"; + "a" + ]; + [ + "4"; + "d" + ]; + [ + "2"; + "b" + ] + ] + ]; + [ + "2"; + [ + [ + "9"; + "h" + ]; + [ + "9"; + "f" + ]; + [ + "9"; + "d" + ]; + [ + "6"; + "b" + ]; + [ + "4"; + "a" + ] + ] + ]; + [ + "3"; + [ + [ + "1"; + "a" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopVariant_/results.txt b/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopVariant_/results.txt new file mode 100644 index 0000000000..39139793b1 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/canondata/test.test_TopVariant_/results.txt @@ -0,0 +1,56 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "VariantType"; + [ + "TupleType"; + [ + [ + "DataType"; + "Int32" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "1"; + "str" + ]; + [ + "0"; + "1" + ]; + [ + "0"; + "1" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/top/test/canondata/test.test_Top_/results.txt b/ydb/library/yql/udfs/common/top/test/canondata/test.test_Top_/results.txt new file mode 100644 index 0000000000..cc053f78cb --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/canondata/test.test_Top_/results.txt @@ -0,0 +1,57 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "DataType"; + "Float" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + [ + "13"; + "8"; + "7" + ] + ]; + [ + "2"; + [ + "9"; + "9"; + "9" + ] + ]; + [ + "3"; + [ + "1" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/top/test/canondata/test.test_Window_/results.txt b/ydb/library/yql/udfs/common/top/test/canondata/test.test_Window_/results.txt new file mode 100644 index 0000000000..2035b95bed --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/canondata/test.test_Window_/results.txt @@ -0,0 +1,1030 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "idx"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "x"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "upcr_top"; + [ + "ListType"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + "1"; + [ + "1" + ] + ]; + [ + "2"; + "7"; + [ + "7"; + "1" + ] + ]; + [ + "3"; + "5"; + [ + "7"; + "5"; + "1" + ] + ]; + [ + "4"; + "4"; + [ + "7"; + "5"; + "4" + ] + ]; + [ + "5"; + "3"; + [ + "7"; + "5"; + "4" + ] + ]; + [ + "6"; + "11"; + [ + "11"; + "7"; + "5" + ] + ]; + [ + "7"; + "2"; + [ + "11"; + "7"; + "5" + ] + ]; + [ + "8"; + "11"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "9"; + "0"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "10"; + "6"; + [ + "11"; + "11"; + "7" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "idx"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "x"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "upuf_top"; + [ + "ListType"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + "1"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "2"; + "7"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "3"; + "5"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "4"; + "4"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "5"; + "3"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "6"; + "11"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "7"; + "2"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "8"; + "11"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "9"; + "0"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "10"; + "6"; + [ + "11"; + "11"; + "7" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "idx"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "x"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "cruf_top"; + [ + "ListType"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + "1"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "2"; + "7"; + [ + "11"; + "11"; + "7" + ] + ]; + [ + "3"; + "5"; + [ + "11"; + "11"; + "6" + ] + ]; + [ + "4"; + "4"; + [ + "11"; + "11"; + "6" + ] + ]; + [ + "5"; + "3"; + [ + "11"; + "11"; + "6" + ] + ]; + [ + "6"; + "11"; + [ + "11"; + "11"; + "6" + ] + ]; + [ + "7"; + "2"; + [ + "11"; + "6"; + "2" + ] + ]; + [ + "8"; + "11"; + [ + "11"; + "6"; + "0" + ] + ]; + [ + "9"; + "0"; + [ + "6"; + "0" + ] + ]; + [ + "10"; + "6"; + [ + "6" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "idx"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "x"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "cr22_top"; + [ + "ListType"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + "1"; + [ + "7"; + "5"; + "1" + ] + ]; + [ + "2"; + "7"; + [ + "7"; + "5"; + "4" + ] + ]; + [ + "3"; + "5"; + [ + "7"; + "5"; + "4" + ] + ]; + [ + "4"; + "4"; + [ + "11"; + "7"; + "5" + ] + ]; + [ + "5"; + "3"; + [ + "11"; + "5"; + "4" + ] + ]; + [ + "6"; + "11"; + [ + "11"; + "11"; + "4" + ] + ]; + [ + "7"; + "2"; + [ + "11"; + "11"; + "3" + ] + ]; + [ + "8"; + "11"; + [ + "11"; + "11"; + "6" + ] + ]; + [ + "9"; + "0"; + [ + "11"; + "6"; + "2" + ] + ]; + [ + "10"; + "6"; + [ + "11"; + "6"; + "0" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "idx"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "x"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "upcr_bottom"; + [ + "ListType"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + "1"; + [ + "1" + ] + ]; + [ + "2"; + "7"; + [ + "1"; + "7" + ] + ]; + [ + "3"; + "5"; + [ + "1"; + "5"; + "7" + ] + ]; + [ + "4"; + "4"; + [ + "1"; + "4"; + "5" + ] + ]; + [ + "5"; + "3"; + [ + "1"; + "3"; + "4" + ] + ]; + [ + "6"; + "11"; + [ + "1"; + "3"; + "4" + ] + ]; + [ + "7"; + "2"; + [ + "1"; + "2"; + "3" + ] + ]; + [ + "8"; + "11"; + [ + "1"; + "2"; + "3" + ] + ]; + [ + "9"; + "0"; + [ + "0"; + "1"; + "2" + ] + ]; + [ + "10"; + "6"; + [ + "0"; + "1"; + "2" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "idx"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "x"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "upuf_bottom"; + [ + "ListType"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + "1"; + [ + "0"; + "1"; + "2" + ] + ]; + [ + "2"; + "7"; + [ + "0"; + "1"; + "2" + ] + ]; + [ + "3"; + "5"; + [ + "0"; + "1"; + "2" + ] + ]; + [ + "4"; + "4"; + [ + "0"; + "1"; + "2" + ] + ]; + [ + "5"; + "3"; + [ + "0"; + "1"; + "2" + ] + ]; + [ + "6"; + "11"; + [ + "0"; + "1"; + "2" + ] + ]; + [ + "7"; + "2"; + [ + "0"; + "1"; + "2" + ] + ]; + [ + "8"; + "11"; + [ + "0"; + "1"; + "2" + ] + ]; + [ + "9"; + "0"; + [ + "0"; + "1"; + "2" + ] + ]; + [ + "10"; + "6"; + [ + "0"; + "1"; + "2" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "idx"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "x"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "cruf_bottom"; + [ + "ListType"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + "1"; + [ + "0"; + "1"; + "2" + ] + ]; + [ + "2"; + "7"; + [ + "0"; + "2"; + "3" + ] + ]; + [ + "3"; + "5"; + [ + "0"; + "2"; + "3" + ] + ]; + [ + "4"; + "4"; + [ + "0"; + "2"; + "3" + ] + ]; + [ + "5"; + "3"; + [ + "0"; + "2"; + "3" + ] + ]; + [ + "6"; + "11"; + [ + "0"; + "2"; + "6" + ] + ]; + [ + "7"; + "2"; + [ + "0"; + "2"; + "6" + ] + ]; + [ + "8"; + "11"; + [ + "0"; + "6"; + "11" + ] + ]; + [ + "9"; + "0"; + [ + "0"; + "6" + ] + ]; + [ + "10"; + "6"; + [ + "6" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "idx"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "x"; + [ + "DataType"; + "Int32" + ] + ]; + [ + "cr22_botto"; + [ + "ListType"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + "1"; + [ + "1"; + "5"; + "7" + ] + ]; + [ + "2"; + "7"; + [ + "1"; + "4"; + "5" + ] + ]; + [ + "3"; + "5"; + [ + "1"; + "3"; + "4" + ] + ]; + [ + "4"; + "4"; + [ + "3"; + "4"; + "5" + ] + ]; + [ + "5"; + "3"; + [ + "2"; + "3"; + "4" + ] + ]; + [ + "6"; + "11"; + [ + "2"; + "3"; + "4" + ] + ]; + [ + "7"; + "2"; + [ + "0"; + "2"; + "3" + ] + ]; + [ + "8"; + "11"; + [ + "0"; + "2"; + "6" + ] + ]; + [ + "9"; + "0"; + [ + "0"; + "2"; + "6" + ] + ]; + [ + "10"; + "6"; + [ + "0"; + "6"; + "11" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/top/test/cases/Bottom.in b/ydb/library/yql/udfs/common/top/test/cases/Bottom.in new file mode 100644 index 0000000000..1532ec03bb --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/Bottom.in @@ -0,0 +1,15 @@ +{"key"="1";"subkey"="5";"value"="a"}; +{"key"="1";"subkey"="2";"value"="b"}; +{"key"="1";"subkey"="7";"value"="c"}; +{"key"="1";"subkey"="4";"value"="d"}; +{"key"="1";"subkey"="8";"value"="e"}; +{"key"="1";"subkey"="13";"value"="f"}; +{"key"="2";"subkey"="4";"value"="a"}; +{"key"="2";"subkey"="6";"value"="b"}; +{"key"="2";"subkey"="2";"value"="c"}; +{"key"="2";"subkey"="9";"value"="d"}; +{"key"="2";"subkey"="3";"value"="e"}; +{"key"="2";"subkey"="9";"value"="f"}; +{"key"="2";"subkey"="1";"value"="g"}; +{"key"="2";"subkey"="9";"value"="h"}; +{"key"="3";"subkey"="1";"value"="a"}; diff --git a/ydb/library/yql/udfs/common/top/test/cases/Bottom.in.attr b/ydb/library/yql/udfs/common/top/test/cases/Bottom.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/Bottom.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/top/test/cases/Bottom.sql b/ydb/library/yql/udfs/common/top/test/cases/Bottom.sql new file mode 100644 index 0000000000..b04ba740c8 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/Bottom.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +USE plato; + +SELECT + key, + BOTTOM(subkey, 4u) +FROM Input +GROUP BY key +ORDER BY key diff --git a/ydb/library/yql/udfs/common/top/test/cases/BottomBy.in b/ydb/library/yql/udfs/common/top/test/cases/BottomBy.in new file mode 100644 index 0000000000..1532ec03bb --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/BottomBy.in @@ -0,0 +1,15 @@ +{"key"="1";"subkey"="5";"value"="a"}; +{"key"="1";"subkey"="2";"value"="b"}; +{"key"="1";"subkey"="7";"value"="c"}; +{"key"="1";"subkey"="4";"value"="d"}; +{"key"="1";"subkey"="8";"value"="e"}; +{"key"="1";"subkey"="13";"value"="f"}; +{"key"="2";"subkey"="4";"value"="a"}; +{"key"="2";"subkey"="6";"value"="b"}; +{"key"="2";"subkey"="2";"value"="c"}; +{"key"="2";"subkey"="9";"value"="d"}; +{"key"="2";"subkey"="3";"value"="e"}; +{"key"="2";"subkey"="9";"value"="f"}; +{"key"="2";"subkey"="1";"value"="g"}; +{"key"="2";"subkey"="9";"value"="h"}; +{"key"="3";"subkey"="1";"value"="a"}; diff --git a/ydb/library/yql/udfs/common/top/test/cases/BottomBy.in.attr b/ydb/library/yql/udfs/common/top/test/cases/BottomBy.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/BottomBy.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/top/test/cases/BottomBy.sql b/ydb/library/yql/udfs/common/top/test/cases/BottomBy.sql new file mode 100644 index 0000000000..2d0718da72 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/BottomBy.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +USE plato; + +SELECT + key, + BOTTOM_BY(subkey || value, CAST(subkey AS Uint64), 5u) +FROM Input +GROUP BY key +ORDER BY key diff --git a/ydb/library/yql/udfs/common/top/test/cases/BottomByTuple.in b/ydb/library/yql/udfs/common/top/test/cases/BottomByTuple.in new file mode 100644 index 0000000000..1532ec03bb --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/BottomByTuple.in @@ -0,0 +1,15 @@ +{"key"="1";"subkey"="5";"value"="a"}; +{"key"="1";"subkey"="2";"value"="b"}; +{"key"="1";"subkey"="7";"value"="c"}; +{"key"="1";"subkey"="4";"value"="d"}; +{"key"="1";"subkey"="8";"value"="e"}; +{"key"="1";"subkey"="13";"value"="f"}; +{"key"="2";"subkey"="4";"value"="a"}; +{"key"="2";"subkey"="6";"value"="b"}; +{"key"="2";"subkey"="2";"value"="c"}; +{"key"="2";"subkey"="9";"value"="d"}; +{"key"="2";"subkey"="3";"value"="e"}; +{"key"="2";"subkey"="9";"value"="f"}; +{"key"="2";"subkey"="1";"value"="g"}; +{"key"="2";"subkey"="9";"value"="h"}; +{"key"="3";"subkey"="1";"value"="a"}; diff --git a/ydb/library/yql/udfs/common/top/test/cases/BottomByTuple.in.attr b/ydb/library/yql/udfs/common/top/test/cases/BottomByTuple.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/BottomByTuple.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/top/test/cases/BottomByTuple.sql b/ydb/library/yql/udfs/common/top/test/cases/BottomByTuple.sql new file mode 100644 index 0000000000..cdbda066c7 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/BottomByTuple.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +USE plato; + +SELECT + key, + BOTTOM_BY(AsTuple(subkey, value), AsTuple(subkey, value), 10u) +FROM Input +GROUP BY key +ORDER BY key diff --git a/ydb/library/yql/udfs/common/top/test/cases/Top.in b/ydb/library/yql/udfs/common/top/test/cases/Top.in new file mode 100644 index 0000000000..1532ec03bb --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/Top.in @@ -0,0 +1,15 @@ +{"key"="1";"subkey"="5";"value"="a"}; +{"key"="1";"subkey"="2";"value"="b"}; +{"key"="1";"subkey"="7";"value"="c"}; +{"key"="1";"subkey"="4";"value"="d"}; +{"key"="1";"subkey"="8";"value"="e"}; +{"key"="1";"subkey"="13";"value"="f"}; +{"key"="2";"subkey"="4";"value"="a"}; +{"key"="2";"subkey"="6";"value"="b"}; +{"key"="2";"subkey"="2";"value"="c"}; +{"key"="2";"subkey"="9";"value"="d"}; +{"key"="2";"subkey"="3";"value"="e"}; +{"key"="2";"subkey"="9";"value"="f"}; +{"key"="2";"subkey"="1";"value"="g"}; +{"key"="2";"subkey"="9";"value"="h"}; +{"key"="3";"subkey"="1";"value"="a"}; diff --git a/ydb/library/yql/udfs/common/top/test/cases/Top.in.attr b/ydb/library/yql/udfs/common/top/test/cases/Top.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/Top.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/top/test/cases/Top.sql b/ydb/library/yql/udfs/common/top/test/cases/Top.sql new file mode 100644 index 0000000000..6a03eca4ee --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/Top.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +USE plato; + +SELECT + key, + TOP(CAST(subkey AS Float), 3u) +FROM Input +GROUP BY key +ORDER BY key diff --git a/ydb/library/yql/udfs/common/top/test/cases/TopBy.in b/ydb/library/yql/udfs/common/top/test/cases/TopBy.in new file mode 100644 index 0000000000..1532ec03bb --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/TopBy.in @@ -0,0 +1,15 @@ +{"key"="1";"subkey"="5";"value"="a"}; +{"key"="1";"subkey"="2";"value"="b"}; +{"key"="1";"subkey"="7";"value"="c"}; +{"key"="1";"subkey"="4";"value"="d"}; +{"key"="1";"subkey"="8";"value"="e"}; +{"key"="1";"subkey"="13";"value"="f"}; +{"key"="2";"subkey"="4";"value"="a"}; +{"key"="2";"subkey"="6";"value"="b"}; +{"key"="2";"subkey"="2";"value"="c"}; +{"key"="2";"subkey"="9";"value"="d"}; +{"key"="2";"subkey"="3";"value"="e"}; +{"key"="2";"subkey"="9";"value"="f"}; +{"key"="2";"subkey"="1";"value"="g"}; +{"key"="2";"subkey"="9";"value"="h"}; +{"key"="3";"subkey"="1";"value"="a"}; diff --git a/ydb/library/yql/udfs/common/top/test/cases/TopBy.in.attr b/ydb/library/yql/udfs/common/top/test/cases/TopBy.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/TopBy.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/top/test/cases/TopBy.sql b/ydb/library/yql/udfs/common/top/test/cases/TopBy.sql new file mode 100644 index 0000000000..b22309185f --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/TopBy.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +USE plato; + +SELECT + key, + TOP_BY(subkey || value, subkey, 6u) +FROM Input +GROUP BY key +ORDER BY key diff --git a/ydb/library/yql/udfs/common/top/test/cases/TopList.sql b/ydb/library/yql/udfs/common/top/test/cases/TopList.sql new file mode 100644 index 0000000000..2b06e919fd --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/TopList.sql @@ -0,0 +1,4 @@ +/* syntax version 1 */ +select TOP(x,10) from +(select [[1,2],[1],[1,2,3],[1],[1,2],[1]] as x) +flatten list by x; diff --git a/ydb/library/yql/udfs/common/top/test/cases/TopTuple.in b/ydb/library/yql/udfs/common/top/test/cases/TopTuple.in new file mode 100644 index 0000000000..1532ec03bb --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/TopTuple.in @@ -0,0 +1,15 @@ +{"key"="1";"subkey"="5";"value"="a"}; +{"key"="1";"subkey"="2";"value"="b"}; +{"key"="1";"subkey"="7";"value"="c"}; +{"key"="1";"subkey"="4";"value"="d"}; +{"key"="1";"subkey"="8";"value"="e"}; +{"key"="1";"subkey"="13";"value"="f"}; +{"key"="2";"subkey"="4";"value"="a"}; +{"key"="2";"subkey"="6";"value"="b"}; +{"key"="2";"subkey"="2";"value"="c"}; +{"key"="2";"subkey"="9";"value"="d"}; +{"key"="2";"subkey"="3";"value"="e"}; +{"key"="2";"subkey"="9";"value"="f"}; +{"key"="2";"subkey"="1";"value"="g"}; +{"key"="2";"subkey"="9";"value"="h"}; +{"key"="3";"subkey"="1";"value"="a"}; diff --git a/ydb/library/yql/udfs/common/top/test/cases/TopTuple.in.attr b/ydb/library/yql/udfs/common/top/test/cases/TopTuple.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/TopTuple.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/top/test/cases/TopTuple.sql b/ydb/library/yql/udfs/common/top/test/cases/TopTuple.sql new file mode 100644 index 0000000000..c9d7782696 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/TopTuple.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +USE plato; + +SELECT + key, + TOP(AsTuple(subkey, value), 5u) +FROM Input +GROUP BY key +ORDER BY key
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/top/test/cases/TopVariant.sql b/ydb/library/yql/udfs/common/top/test/cases/TopVariant.sql new file mode 100644 index 0000000000..7f74dfda34 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/TopVariant.sql @@ -0,0 +1,5 @@ +/* syntax version 1 */ +$vt1 = Variant<Int32,String>; +select TOP(x,3) from +(select [Variant(1,"0",$vt1),Variant("str","1",$vt1),Variant(1,"0",$vt1)] as x) +flatten list by x; diff --git a/ydb/library/yql/udfs/common/top/test/cases/Window.sql b/ydb/library/yql/udfs/common/top/test/cases/Window.sql new file mode 100644 index 0000000000..657f765fa9 --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/cases/Window.sql @@ -0,0 +1,30 @@ +/* syntax version 1 */ +USE plato; + +$src = [ + <|x:1, idx:1|>, + <|x:7, idx:2|>, + <|x:5, idx:3|>, + <|x:4, idx:4|>, + <|x:3, idx:5|>, + <|x:11, idx:6|>, + <|x:2, idx:7|>, + <|x:11, idx:8|>, + <|x:0, idx:9|>, + <|x:6, idx:10|>, +]; + +INSERT INTO @src +SELECT * FROM AS_TABLE($src) ORDER BY idx; + +COMMIT; + +SELECT idx, x, TOP(x, 3) OVER (ORDER BY idx ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as upcr_top FROM @src ORDER BY idx; +SELECT idx, x, TOP(x, 3) OVER () as upuf_top FROM @src ORDER BY idx; +SELECT idx, x, TOP(x, 3) OVER (ORDER BY idx ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as cruf_top FROM @src ORDER BY idx; +SELECT idx, x, TOP(x, 3) OVER (ORDER BY idx ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) as cr22_top FROM @src ORDER BY idx; + +SELECT idx, x, BOTTOM(x, 3) OVER (ORDER BY idx ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as upcr_bottom FROM @src ORDER BY idx; +SELECT idx, x, BOTTOM(x, 3) OVER () as upuf_bottom FROM @src ORDER BY idx; +SELECT idx, x, BOTTOM(x, 3) OVER (ORDER BY idx ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as cruf_bottom FROM @src ORDER BY idx; +SELECT idx, x, BOTTOM(x, 3) OVER (ORDER BY idx ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) as cr22_botto FROM @src ORDER BY idx; diff --git a/ydb/library/yql/udfs/common/top/test/ya.make b/ydb/library/yql/udfs/common/top/test/ya.make new file mode 100644 index 0000000000..34ee2b0f6a --- /dev/null +++ b/ydb/library/yql/udfs/common/top/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/top) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/top/ya.make b/ydb/library/yql/udfs/common/top/ya.make index f295d338b6..da0816d2ae 100644 --- a/ydb/library/yql/udfs/common/top/ya.make +++ b/ydb/library/yql/udfs/common/top/ya.make @@ -15,3 +15,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +) diff --git a/ydb/library/yql/udfs/common/topfreq/test/canondata/result.json b/ydb/library/yql/udfs/common/topfreq/test/canondata/result.json new file mode 100644 index 0000000000..db452a16ce --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/canondata/result.json @@ -0,0 +1,27 @@ +{ + "test.test[Floats]": [ + { + "uri": "file://test.test_Floats_/results.txt" + } + ], + "test.test[Mode]": [ + { + "uri": "file://test.test_Mode_/results.txt" + } + ], + "test.test[TopFreqStruct]": [ + { + "uri": "file://test.test_TopFreqStruct_/results.txt" + } + ], + "test.test[TopFreqTuple]": [ + { + "uri": "file://test.test_TopFreqTuple_/results.txt" + } + ], + "test.test[TopFreq]": [ + { + "uri": "file://test.test_TopFreq_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_Floats_/results.txt b/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_Floats_/results.txt new file mode 100644 index 0000000000..8eac384cff --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_Floats_/results.txt @@ -0,0 +1,55 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "Value"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + [ + "2"; + "-0" + ]; + [ + "2"; + "nan" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_Mode_/results.txt b/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_Mode_/results.txt new file mode 100644 index 0000000000..9cd67bf0f9 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_Mode_/results.txt @@ -0,0 +1,68 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "Value"; + [ + "DataType"; + "Int32" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "abc"; + [ + [ + "3"; + "23" + ] + ] + ]; + [ + "bbb"; + [ + [ + "3"; + "37" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_TopFreqStruct_/results.txt b/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_TopFreqStruct_/results.txt new file mode 100644 index 0000000000..e1cf8558d6 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_TopFreqStruct_/results.txt @@ -0,0 +1,103 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "Value"; + [ + "StructType"; + [ + [ + "k"; + [ + "DataType"; + "String" + ] + ]; + [ + "v"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + [ + [ + "4"; + [ + "101"; + "1" + ] + ]; + [ + "2"; + [ + "103"; + "1" + ] + ]; + [ + "2"; + [ + "104"; + "1" + ] + ] + ] + ]; + [ + "2"; + [ + [ + "4"; + [ + "037"; + "2" + ] + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_TopFreqTuple_/results.txt b/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_TopFreqTuple_/results.txt new file mode 100644 index 0000000000..c131783fc9 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_TopFreqTuple_/results.txt @@ -0,0 +1,97 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "Value"; + [ + "TupleType"; + [ + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "1"; + [ + [ + "4"; + [ + "101"; + "1" + ] + ]; + [ + "2"; + [ + "103"; + "1" + ] + ]; + [ + "2"; + [ + "104"; + "1" + ] + ] + ] + ]; + [ + "2"; + [ + [ + "4"; + [ + "037"; + "2" + ] + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_TopFreq_/results.txt b/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_TopFreq_/results.txt new file mode 100644 index 0000000000..c666b42f01 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/canondata/test.test_TopFreq_/results.txt @@ -0,0 +1,83 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "Uint32" + ] + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "StructType"; + [ + [ + "Frequency"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "Value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "1" + ]; + [ + [ + "4"; + "101" + ]; + [ + "2"; + "103" + ]; + [ + "2"; + "104" + ] + ] + ]; + [ + [ + "2" + ]; + [ + [ + "4"; + "037" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/Floats.in b/ydb/library/yql/udfs/common/topfreq/test/cases/Floats.in new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/Floats.in diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/Floats.sql b/ydb/library/yql/udfs/common/topfreq/test/cases/Floats.sql new file mode 100644 index 0000000000..3c2515dc7e --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/Floats.sql @@ -0,0 +1,10 @@ +/* syntax version 1 */ +select topfreq(x,10,10) from ( +select frombytes(tobytes(-0.0),Double) as x +union all +select frombytes(tobytes(+0.0),Double) as x +union all +select Double("nan") as x +union all +select Double("nan") as x +) diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/Mode.in b/ydb/library/yql/udfs/common/topfreq/test/cases/Mode.in new file mode 100644 index 0000000000..6cd4d92191 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/Mode.in @@ -0,0 +1,8 @@ +{"key"="075";"subkey"="1";"value"="abc"}; +{"key"="023";"subkey"="2";"value"="abc"}; +{"key"="023";"subkey"="3";"value"="abc"}; +{"key"="023";"subkey"="4";"value"="abc"}; +{"key"="037";"subkey"="5";"value"="bbb"}; +{"key"="037";"subkey"="6";"value"="bbb"}; +{"key"="200";"subkey"="7";"value"="bbb"}; +{"key"="037";"subkey"="8";"value"="bbb"}; diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/Mode.in.attr b/ydb/library/yql/udfs/common/topfreq/test/cases/Mode.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/Mode.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/Mode.sql b/ydb/library/yql/udfs/common/topfreq/test/cases/Mode.sql new file mode 100644 index 0000000000..da1ade32e8 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/Mode.sql @@ -0,0 +1,14 @@ +/* syntax version 1 */ +USE plato; + +SELECT + key, Mode(value) +FROM +(SELECT + cast (key as Int32) as value, + "" as subkey, + value as key +FROM Input) +AS tmp +GROUP BY key +ORDER BY key diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreq.in b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreq.in new file mode 100644 index 0000000000..b4c81f94c8 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreq.in @@ -0,0 +1,16 @@ +{"key"="101";"subkey"="1";"value"="1"}; +{"key"="101";"subkey"="2";"value"="1"}; +{"key"="101";"subkey"="3";"value"="1"}; +{"key"="101";"subkey"="4";"value"="1"}; +{"key"="103";"subkey"="1";"value"="1"}; +{"key"="103";"subkey"="2";"value"="1"}; +{"key"="104";"subkey"="3";"value"="1"}; +{"key"="104";"subkey"="4";"value"="1"}; +{"key"="102";"subkey"="1";"value"="1"}; +{"key"="105";"subkey"="2";"value"="1"}; +{"key"="106";"subkey"="3";"value"="1"}; +{"key"="107";"subkey"="4";"value"="1"}; +{"key"="037";"subkey"="5";"value"="2"}; +{"key"="037";"subkey"="6";"value"="2"}; +{"key"="037";"subkey"="7";"value"="2"}; +{"key"="037";"subkey"="8";"value"="2"}; diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreq.in.attr b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreq.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreq.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreq.sql b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreq.sql new file mode 100644 index 0000000000..79c412cc87 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreq.sql @@ -0,0 +1,14 @@ +/* syntax version 1 */ +USE plato; + +SELECT + key, TopFreq(value, 3, 5u) +FROM +(SELECT + key as value, + "" as subkey, + cast (value as Uint32) as key +FROM Input) +AS tmp +GROUP BY key +ORDER BY key diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqStruct.in b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqStruct.in new file mode 100644 index 0000000000..b4c81f94c8 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqStruct.in @@ -0,0 +1,16 @@ +{"key"="101";"subkey"="1";"value"="1"}; +{"key"="101";"subkey"="2";"value"="1"}; +{"key"="101";"subkey"="3";"value"="1"}; +{"key"="101";"subkey"="4";"value"="1"}; +{"key"="103";"subkey"="1";"value"="1"}; +{"key"="103";"subkey"="2";"value"="1"}; +{"key"="104";"subkey"="3";"value"="1"}; +{"key"="104";"subkey"="4";"value"="1"}; +{"key"="102";"subkey"="1";"value"="1"}; +{"key"="105";"subkey"="2";"value"="1"}; +{"key"="106";"subkey"="3";"value"="1"}; +{"key"="107";"subkey"="4";"value"="1"}; +{"key"="037";"subkey"="5";"value"="2"}; +{"key"="037";"subkey"="6";"value"="2"}; +{"key"="037";"subkey"="7";"value"="2"}; +{"key"="037";"subkey"="8";"value"="2"}; diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqStruct.in.attr b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqStruct.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqStruct.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqStruct.sql b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqStruct.sql new file mode 100644 index 0000000000..b188ce2e5d --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqStruct.sql @@ -0,0 +1,8 @@ +/* syntax version 1 */ +USE plato; + +SELECT + value, TopFreq(AsStruct(key as k, value as v), 3, 5u) +FROM Input +GROUP BY value +ORDER BY value
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqTuple.in b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqTuple.in new file mode 100644 index 0000000000..b4c81f94c8 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqTuple.in @@ -0,0 +1,16 @@ +{"key"="101";"subkey"="1";"value"="1"}; +{"key"="101";"subkey"="2";"value"="1"}; +{"key"="101";"subkey"="3";"value"="1"}; +{"key"="101";"subkey"="4";"value"="1"}; +{"key"="103";"subkey"="1";"value"="1"}; +{"key"="103";"subkey"="2";"value"="1"}; +{"key"="104";"subkey"="3";"value"="1"}; +{"key"="104";"subkey"="4";"value"="1"}; +{"key"="102";"subkey"="1";"value"="1"}; +{"key"="105";"subkey"="2";"value"="1"}; +{"key"="106";"subkey"="3";"value"="1"}; +{"key"="107";"subkey"="4";"value"="1"}; +{"key"="037";"subkey"="5";"value"="2"}; +{"key"="037";"subkey"="6";"value"="2"}; +{"key"="037";"subkey"="7";"value"="2"}; +{"key"="037";"subkey"="8";"value"="2"}; diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqTuple.in.attr b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqTuple.in.attr new file mode 100644 index 0000000000..2a151e9c47 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqTuple.in.attr @@ -0,0 +1,30 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqTuple.sql b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqTuple.sql new file mode 100644 index 0000000000..72dd648f0b --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/cases/TopFreqTuple.sql @@ -0,0 +1,8 @@ +/* syntax version 1 */ +USE plato; + +SELECT + value, TopFreq(AsTuple(key, value), 3, 5u) +FROM Input +GROUP BY value +ORDER BY value
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/topfreq/test/ya.make b/ydb/library/yql/udfs/common/topfreq/test/ya.make new file mode 100644 index 0000000000..e13c790915 --- /dev/null +++ b/ydb/library/yql/udfs/common/topfreq/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/topfreq) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/topfreq/ya.make b/ydb/library/yql/udfs/common/topfreq/ya.make index c41256b73a..219f4c217a 100644 --- a/ydb/library/yql/udfs/common/topfreq/ya.make +++ b/ydb/library/yql/udfs/common/topfreq/ya.make @@ -17,5 +17,7 @@ PEERDIR( END() RECURSE_FOR_TESTS( + test ut ) + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/result.json b/ydb/library/yql/udfs/common/unicode_base/test/canondata/result.json new file mode 100644 index 0000000000..0b47a67444 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/result.json @@ -0,0 +1,67 @@ +{ + "test.test[Find]": [ + { + "uri": "file://test.test_Find_/results.txt" + } + ], + "test.test[IsCategory]": [ + { + "uri": "file://test.test_IsCategory_/results.txt" + } + ], + "test.test[List]": [ + { + "uri": "file://test.test_List_/results.txt" + } + ], + "test.test[Remove]": [ + { + "uri": "file://test.test_Remove_/results.txt" + } + ], + "test.test[Replace]": [ + { + "uri": "file://test.test_Replace_/results.txt" + } + ], + "test.test[Strip]": [ + { + "uri": "file://test.test_Strip_/results.txt" + } + ], + "test.test[ToUint64F0]": [ + { + "uri": "file://test.test_ToUint64F0_/extracted" + } + ], + "test.test[ToUint64F1]": [ + { + "uri": "file://test.test_ToUint64F1_/extracted" + } + ], + "test.test[ToUint64F2]": [ + { + "uri": "file://test.test_ToUint64F2_/extracted" + } + ], + "test.test[ToUint64]": [ + { + "uri": "file://test.test_ToUint64_/results.txt" + } + ], + "test.test[To]": [ + { + "uri": "file://test.test_To_/results.txt" + } + ], + "test.test[TryToUint64]": [ + { + "uri": "file://test.test_TryToUint64_/results.txt" + } + ], + "test.test[Unicode]": [ + { + "uri": "file://test.test_Unicode_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt new file mode 100644 index 0000000000..bcccb2b511 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Find_/results.txt @@ -0,0 +1,86 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "column2"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "\xC3\xA4stig, m\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, \xC3\274berall, regelm"; + "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"; + "\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m\xC3\xB6gen, " + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "column2"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k"; + "\xC3\266chten, ausf\xC3\xBChrlich, sp\xC3\xA4ter, k\xC3\xB6nnen, nat\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r\xC3\274ckw\xC3\xA4rts, k\xC3\xA4mpfen, m"; + "\xC3\xBCrlich, universit\xC3\xA4t, \xC3\266ffentlich, r" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_IsCategory_/results.txt b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_IsCategory_/results.txt new file mode 100644 index 0000000000..a6fd861c64 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_IsCategory_/results.txt @@ -0,0 +1,164 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column2"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column3"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column4"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column5"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column6"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column7"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column8"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column9"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column10"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column11"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column12"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column13"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column14"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column15"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column16"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column17"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + %false; + %true; + %false; + %true; + %false; + %true; + %false; + %true; + %false; + %true; + %false; + %true; + %false; + %true; + %false; + %true; + %false + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_List_/results.txt b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_List_/results.txt new file mode 100644 index 0000000000..5cf8e238cf --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_List_/results.txt @@ -0,0 +1,265 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "equals_to_original"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "replace_delimeter"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "just_split"; + [ + "ListType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "first"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "skip_empty"; + [ + "ListType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "multichar_delim_set"; + [ + "ListType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "multichar_delim_string"; + [ + "ListType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "limited"; + [ + "ListType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "a@b@c"; + "a@b@c"; + "a#b#c"; + [ + "a"; + "b"; + "c" + ]; + [ + "a" + ]; + [ + "a"; + "b"; + "c" + ]; + [ + "a"; + ""; + ""; + "c" + ]; + [ + "a@"; + "c" + ]; + [ + "a"; + "b@c" + ] + ]; + [ + "@a@b@c"; + "@a@b@c"; + "#a#b#c"; + [ + ""; + "a"; + "b"; + "c" + ]; + [ + "" + ]; + [ + "a"; + "b"; + "c" + ]; + [ + ""; + "a"; + ""; + ""; + "c" + ]; + [ + "@a@"; + "c" + ]; + [ + ""; + "a@b@c" + ] + ]; + [ + "@@@a@a"; + "@@@a@a"; + "###a#a"; + [ + ""; + ""; + ""; + "a"; + "a" + ]; + [ + "" + ]; + [ + "a"; + "a" + ]; + [ + ""; + ""; + ""; + "a"; + "a" + ]; + [ + "@@@a@a" + ]; + [ + ""; + "@@a@a" + ] + ]; + [ + "d#e#f"; + "d#e#f"; + "d#e#f"; + [ + "d#e#f" + ]; + [ + "d#e#f" + ]; + [ + "d#e#f" + ]; + [ + "d#e#f" + ]; + [ + "d#e#f" + ]; + [ + "d#e#f" + ] + ]; + [ + "d"; + "d"; + "d"; + [ + "d" + ]; + [ + "d" + ]; + [ + "d" + ]; + [ + "d" + ]; + [ + "d" + ]; + [ + "d" + ] + ]; + [ + ""; + ""; + ""; + [ + "" + ]; + [ + "" + ]; + []; + [ + "" + ]; + [ + "" + ]; + [ + "" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt new file mode 100644 index 0000000000..11bcb15a2f --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Remove_/results.txt @@ -0,0 +1,178 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "all"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "first"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "last"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "first2"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "last2"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2" + ]; + [ + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" + ]; + [ + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" + ] + ]; + [ + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" + ] + ]; + [ + [ + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD0\xB2\xD1\x8B\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2" + ]; + [ + "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" + ]; + [ + "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" + ] + ]; + [ + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x8B" + ] + ]; + [ + [ + "" + ]; + [ + "" + ]; + [ + "" + ]; + [ + "" + ]; + [ + "" + ]; + [ + "" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt new file mode 100644 index 0000000000..7390dbdbc3 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Replace_/results.txt @@ -0,0 +1,228 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "all"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "first"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "last"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "first2"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "last2"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "first3"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "last3"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD1\x8B\xD0\xB2z\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z" + ]; + [ + "\xD1\x8B\xD0\xB2\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" + ]; + [ + "\xD1\x8B\xD0\xB2zzz\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz" + ] + ]; + [ + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fz\xD0\xB0\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0z\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8Fzzz\xD0\xB0\xD1\x87\xD1\x8B" + ]; + [ + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0zzz\xD1\x87\xD1\x8B" + ] + ]; + [ + [ + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "z\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2z" + ]; + [ + "\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2" + ]; + [ + "zzz\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0" + ]; + [ + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2zzz" + ] + ]; + [ + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD0\xB0\xD1\x84\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2z\xD0\xB0\xD1\x84\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0z\xD1\x84\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x84\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2zzz\xD0\xB0\xD1\x84\xD1\x8B" + ]; + [ + "gd2\xD1\x86\xD0\2713\xD1\x8B\xD0\xB2\xD0\xB0zzz\xD1\x84\xD1\x8B" + ] + ]; + [ + [ + "" + ]; + [ + "" + ]; + [ + "" + ]; + [ + "" + ]; + [ + "" + ]; + [ + "" + ]; + [ + "" + ]; + [ + "" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt new file mode 100644 index 0000000000..613b639ed0 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Strip_/results.txt @@ -0,0 +1,76 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "column2"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "column3"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "column4"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "column5"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "column6"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD1\x87\xD1\x81\xD1\x8F\xD0\xB0\xD0\xB0\xD1\x87\xD1\x8B"; + "\xD0\xB0\xD0\xB0\xD0\xB2\xD1\x8B\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB0\xD0\xB0\xD0\xB2 \xD1\x8B\xD0\xB0 \xD1\x8B\xD0\xB2\xD0\xB0 \xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD1\x8B\xD0\xB2\xD0\xB0"; + "\xD0\xB2\xD0\xB0\xD0\xBE\xD0\xB0\xD0\xBE"; + "" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64F0_/extracted b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64F0_/extracted new file mode 100644 index 0000000000..d03cedfb32 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64F0_/extracted @@ -0,0 +1,8 @@ +<tmp_path>/program.sql:<main>: Fatal: Execution + + <tmp_path>/program.sql:<main>:2:1: Fatal: Execution of node: Result + SELECT + ^ + <tmp_path>/program.sql:<main>:2:1: Fatal: Input string is not a number + SELECT + ^
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64F1_/extracted b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64F1_/extracted new file mode 100644 index 0000000000..3ed803548b --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64F1_/extracted @@ -0,0 +1,8 @@ +<tmp_path>/program.sql:<main>: Fatal: Execution + + <tmp_path>/program.sql:<main>:2:1: Fatal: Execution of node: Result + SELECT + ^ + <tmp_path>/program.sql:<main>:2:1: Fatal: Input string contains junk after the number + SELECT + ^
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64F2_/extracted b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64F2_/extracted new file mode 100644 index 0000000000..c441fbf4e1 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64F2_/extracted @@ -0,0 +1,8 @@ +<tmp_path>/program.sql:<main>: Fatal: Execution + + <tmp_path>/program.sql:<main>:2:1: Fatal: Execution of node: Result + SELECT + ^ + <tmp_path>/program.sql:<main>:2:1: Fatal: Converted value falls out of Uint64 range + SELECT + ^
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64_/results.txt b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64_/results.txt new file mode 100644 index 0000000000..9334d2f22d --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_ToUint64_/results.txt @@ -0,0 +1,76 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column2"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column3"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column4"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column5"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column6"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "305441741"; + "4"; + "420"; + "1052688"; + "42"; + "33288"; + "101" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_To_/results.txt b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_To_/results.txt new file mode 100644 index 0000000000..7f7b2525d7 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_To_/results.txt @@ -0,0 +1,102 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "lower"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "upper"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "title"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "reverse"; + [ + "DataType"; + "Utf8" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "test"; + "test"; + "TEST"; + "Test"; + "tset" + ]; + [ + "\xD1\x82\xD0\xB5\xD1\x81\xD1\x82"; + "\xD1\x82\xD0\xB5\xD1\x81\xD1\x82"; + "\xD0\xA2\xD0\x95\xD0\xA1\xD0\xA2"; + "\xD0\xA2\xD0\xB5\xD1\x81\xD1\x82"; + "\xD1\x82\xD1\x81\xD0\xB5\xD1\x82" + ]; + [ + "TeSt"; + "test"; + "TEST"; + "Test"; + "tSeT" + ]; + [ + "\xD1\x82\xD0\x95\xD1\x81\xD0\xA2"; + "\xD1\x82\xD0\xB5\xD1\x81\xD1\x82"; + "\xD0\xA2\xD0\x95\xD0\xA1\xD0\xA2"; + "\xD0\xA2\xD0\xB5\xD1\x81\xD1\x82"; + "\xD0\xA2\xD1\x81\xD0\x95\xD1\x82" + ]; + [ + "Eyl\xC3\xBCl"; + "eyl\xC3\xBCl"; + "EYL\xC3\x9CL"; + "Eyl\xC3\xBCl"; + "l\xC3\xBClyE" + ]; + [ + "6"; + "6"; + "6"; + "6"; + "6" + ]; + [ + ""; + ""; + ""; + ""; + "" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_TryToUint64_/results.txt b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_TryToUint64_/results.txt new file mode 100644 index 0000000000..594ac1486c --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_TryToUint64_/results.txt @@ -0,0 +1,198 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + # + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + # + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + # + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "305441741" + ]; + [ + "4" + ]; + [ + "420" + ]; + [ + "1052688" + ]; + [ + "42" + ]; + [ + "101010" + ]; + [ + "101" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt new file mode 100644 index 0000000000..465ad35055 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/canondata/test.test_Unicode_/results.txt @@ -0,0 +1,509 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "normalize"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "is"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "length"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "one_end_substring"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "two_end_substring"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "remove_all"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "levenstein"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "code_point_list"; + [ + "OptionalType"; + [ + "ListType"; + [ + "DataType"; + "Uint32" + ] + ] + ] + ]; + [ + "from_code_point_list"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "from_lazy_code_point_list"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "reverse"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "find"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "rfind"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "find_from"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "rfind_from"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "Eyl\xC3\xBCl" + ]; + [ + "Eyl\xC3\xBCl" + ]; + %true; + [ + "5" + ]; + [ + "yl\xC3\xBCl" + ]; + [ + "Ey" + ]; + [ + "Eyl\xC3\xBCl" + ]; + [ + "5" + ]; + [ + [ + "69"; + "121"; + "108"; + "252"; + "108" + ] + ]; + [ + "Eyl\xC3\xBCl" + ]; + [ + "Eyl\xC3\xBCl" + ]; + [ + "l\xC3\xBClyE" + ]; + #; + #; + #; + # + ]; + [ + [ + "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" + ]; + [ + "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" + ]; + %true; + [ + "6" + ]; + [ + "\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" + ]; + [ + "\xD0\xB6\xD0\xBD" + ]; + [ + "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" + ]; + [ + "5" + ]; + [ + [ + "1078"; + "1085"; + "1110"; + "1118"; + "1085"; + "1103" + ] + ]; + [ + "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" + ]; + [ + "\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F" + ]; + [ + "\xD1\x8F\xD0\xBD\xD1\x9E\xD1\x96\xD0\xBD\xD0\xB6" + ]; + #; + #; + #; + # + ]; + [ + [ + "\xC3\xBAnora" + ]; + [ + "\xC3\xBAnora" + ]; + %true; + [ + "5" + ]; + [ + "nora" + ]; + [ + "\xC3\xBAn" + ]; + [ + "\xC3\xBAnoa" + ]; + [ + "5" + ]; + [ + [ + "250"; + "110"; + "111"; + "114"; + "97" + ] + ]; + [ + "\xC3\xBAnora" + ]; + [ + "\xC3\xBAnora" + ]; + [ + "aron\xC3\xBA" + ]; + #; + #; + #; + # + ]; + [ + [ + "Ci\xD1\x87 Ci\xD1\x87" + ]; + [ + "Ci\xD1\x87 Ci\xD1\x87" + ]; + %true; + [ + "7" + ]; + [ + "i\xD1\x87 Ci\xD1\x87" + ]; + [ + "Ci" + ]; + [ + "Ci Ci" + ]; + [ + "5" + ]; + [ + [ + "67"; + "105"; + "1095"; + "32"; + "67"; + "105"; + "1095" + ] + ]; + [ + "Ci\xD1\x87 Ci\xD1\x87" + ]; + [ + "Ci\xD1\x87 Ci\xD1\x87" + ]; + [ + "\xD1\x87iC \xD1\x87iC" + ]; + #; + #; + #; + # + ]; + [ + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" + ]; + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" + ]; + %true; + [ + "13" + ]; + [ + "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" + ]; + [ + "\xD0\xBF\xD1\x80" + ]; + [ + "\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" + ]; + [ + "5" + ]; + [ + [ + "1087"; + "1088"; + "1080"; + "1074"; + "1077"; + "1090"; + "32"; + "1087"; + "1088"; + "1080"; + "1074"; + "1077"; + "1090" + ] + ]; + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" + ]; + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" + ]; + [ + "\xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF \xD1\x82\xD0\xB5\xD0\xB2\xD0\xB8\xD1\x80\xD0\xBF" + ]; + [ + "4" + ]; + [ + "11" + ]; + [ + "11" + ]; + [ + "4" + ] + ]; + [ + [ + "6" + ]; + [ + "6" + ]; + %true; + [ + "1" + ]; + [ + "" + ]; + [ + "6" + ]; + [ + "6" + ]; + [ + "1" + ]; + [ + [ + "54" + ] + ]; + [ + "6" + ]; + [ + "6" + ]; + [ + "6" + ]; + #; + #; + #; + # + ]; + [ + [ + "" + ]; + [ + "" + ]; + %true; + [ + "0" + ]; + [ + "" + ]; + [ + "" + ]; + [ + "" + ]; + [ + "0" + ]; + [ + [] + ]; + [ + "" + ]; + [ + "" + ]; + [ + "" + ]; + #; + #; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/Find.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/Find.sql new file mode 100644 index 0000000000..9a9a58752e --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/Find.sql @@ -0,0 +1,13 @@ +$text ="lästig, möchten, ausführlich, später, können, natürlich, universität, öffentlich, rückwärts, kämpfen, mögen, überall, regelmäßig"u; + +SELECT + Unicode::Substring($text, Unicode::Find($text, "ä"u), Unicode::RFind($text, "ä"u) - Unicode::Find($text, "ä"u)), + Unicode::Substring($text, Unicode::Find($text, "ö"u), Unicode::RFind($text, "ö"u) - Unicode::Find($text, "ö"u)), + Unicode::Substring($text, Unicode::Find($text, "ü"u), Unicode::RFind($text, "ü"u) - Unicode::Find($text, "ü"u)); + + +SELECT + Unicode::Substring($text, Unicode::Find($text, "ä"u, 30ul), Unicode::RFind($text, "ä"u, 123ul) - Unicode::Find($text, "ä"u, 30ul)), + Unicode::Substring($text, Unicode::Find($text, "ö"u, 9ul), Unicode::RFind($text, "ö"u, 103ul) - Unicode::Find($text, "ö"u, 9ul)), + Unicode::Substring($text, Unicode::Find($text, "ü"u, 45ul), Unicode::RFind($text, "ü"u, 83ul) - Unicode::Find($text, "ü"u, 45ul)); + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/IsCategory.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/IsCategory.sql new file mode 100644 index 0000000000..2effa23221 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/IsCategory.sql @@ -0,0 +1,21 @@ +/* syntax version 1 */ +SELECT + Unicode::IsAscii("sdf"u), + Unicode::IsAscii("выавыа"u), + Unicode::IsSpace(" \u2002\u200a"u), + Unicode::IsSpace("выавыа"u), + Unicode::IsUpper("ФЫВ"u), + Unicode::IsUpper("вВаВыа"u), + Unicode::IsLower("фыв"u), + Unicode::IsLower("вВаВыа"u), + Unicode::IsDigit("1234"u), + Unicode::IsDigit("выавыа"u), + Unicode::IsAlpha("фвфы"u), + Unicode::IsAlpha("вы2в-а"u), + Unicode::IsAlnum("фыв13в"u), + Unicode::IsAlnum("выа1-}ыв"u), + Unicode::IsHex("0F3A4E"u), + Unicode::IsHex("ваоао"u), + Unicode::IsUnicodeSet("ваоао"u, "[вао]"u), + Unicode::IsUnicodeSet("ваоао"u, "[ваб]"u) + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/List.in b/ydb/library/yql/udfs/common/unicode_base/test/cases/List.in new file mode 100644 index 0000000000..949cf26c77 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/List.in @@ -0,0 +1,6 @@ +{"key"="1";"subkey"="1";"value"="a@b@c"}; +{"key"="1";"subkey"="1";"value"="@a@b@c"}; +{"key"="1";"subkey"="1";"value"="@@@a@a"}; +{"key"="2";"subkey"="2";"value"="d#e#f"}; +{"key"="3";"subkey"="3";"value"="d"}; +{"key"="4";"subkey"="4";"value"=""}; diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/List.in.attr b/ydb/library/yql/udfs/common/unicode_base/test/cases/List.in.attr new file mode 100644 index 0000000000..990efb1ff2 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/List.in.attr @@ -0,0 +1,12 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Utf8"]]; + ["subkey";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]] + ]]; + "SortDirections"=[1;1;]; + "SortedBy"=["key";"subkey";]; + "SortedByTypes"=[["DataType";"Utf8";];["DataType";"Utf8";];]; + "SortMembers"=["key";"subkey";]; +}} + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/List.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/List.sql new file mode 100644 index 0000000000..814c5cb27b --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/List.sql @@ -0,0 +1,12 @@ +/* syntax version 1 */ +SELECT + value, + Ensure(value, Unicode::JoinFromList(Unicode::SplitToList(value, "@"u), "@"u) == value) AS equals_to_original, + Unicode::JoinFromList(Unicode::SplitToList(value, "@"u), "#"u) AS replace_delimeter, + Unicode::SplitToList(value, "@"u) AS just_split, + Unicode::SplitToList(value, "@"u)[0] as first, + Unicode::SplitToList(value, "@"u, true AS SkipEmpty) AS skip_empty, + Unicode::SplitToList(value, "b@"u, false AS DelimeterString) AS multichar_delim_set, + Unicode::SplitToList(value, "b@"u, true AS DelimeterString) AS multichar_delim_string, + Unicode::SplitToList(value, "@"u, 1 AS Limit) AS limited +FROM Input; diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/Remove.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/Remove.sql new file mode 100644 index 0000000000..ee96037f79 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/Remove.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +SELECT + CAST(value AS Utf8), + Unicode::RemoveAll(CAST(value AS Utf8), Utf8("фа")) AS all, + Unicode::RemoveFirst(CAST(value AS Utf8), Utf8("а")) AS first, + Unicode::RemoveLast(CAST(value AS Utf8), Utf8("а")) AS last, + Unicode::RemoveFirst(CAST(value AS Utf8), Utf8("фа")) AS first2, + Unicode::RemoveLast(CAST(value AS Utf8), Utf8("фа")) AS last2 +FROM Input; diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/Replace.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/Replace.sql new file mode 100644 index 0000000000..d623984413 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/Replace.sql @@ -0,0 +1,11 @@ +/* syntax version 1 */ +SELECT + CAST(value AS Utf8), + Unicode::ReplaceAll(CAST(value AS Utf8), Utf8("аф"), Utf8("zzz")) AS all, + Unicode::ReplaceFirst(CAST(value AS Utf8), Utf8("а"), Utf8("z")) AS first, + Unicode::ReplaceLast(CAST(value AS Utf8), Utf8("а"), Utf8("z")) AS last, + Unicode::ReplaceFirst(CAST(value AS Utf8), Utf8("а"), Utf8("")) AS first2, + Unicode::ReplaceLast(CAST(value AS Utf8), Utf8("а"), Utf8("")) AS last2, + Unicode::ReplaceFirst(CAST(value AS Utf8), Utf8("а"), Utf8("zzz")) AS first3, + Unicode::ReplaceLast(CAST(value AS Utf8), Utf8("а"), Utf8("zzz")) AS last3 +FROM Input; diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/Strip.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/Strip.sql new file mode 100644 index 0000000000..45bde163e0 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/Strip.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +SELECT + Unicode::Strip("ываыва"u), + Unicode::Strip(" ячсячсяаачы"u), + Unicode::Strip("аавыаываыва "u), + Unicode::Strip("аав ыа ыва ыва "u), + Unicode::Strip("\u2009ыва\n"u), + Unicode::Strip("\u200aваоао\u2002"u), + Unicode::Strip(""u) diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/To.in b/ydb/library/yql/udfs/common/unicode_base/test/cases/To.in new file mode 100644 index 0000000000..5effdb9971 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/To.in @@ -0,0 +1,8 @@ +{"key"="1";"subkey"="1";"value"="test"}; +{"key"="2";"subkey"="2";"value"="\xD1\x82\xD0\xB5\xD1\x81\xD1\x82"}; +{"key"="3";"subkey"="3";"value"="TeSt"}; +{"key"="4";"subkey"="4";"value"="\xD1\x82\xD0\x95\xD1\x81\xD0\xA2"}; +{"key"="5";"subkey"="5";"value"="Eyl\xC3\xBCl"}; +{"key"="6";"subkey"="6";"value"="6"}; +{"key"="4";"subkey"="4";"value"=""}; + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/To.in.attr b/ydb/library/yql/udfs/common/unicode_base/test/cases/To.in.attr new file mode 100644 index 0000000000..990efb1ff2 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/To.in.attr @@ -0,0 +1,12 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Utf8"]]; + ["subkey";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]] + ]]; + "SortDirections"=[1;1;]; + "SortedBy"=["key";"subkey";]; + "SortedByTypes"=[["DataType";"Utf8";];["DataType";"Utf8";];]; + "SortMembers"=["key";"subkey";]; +}} + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/To.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/To.sql new file mode 100644 index 0000000000..c7207d2dcd --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/To.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +SELECT + value, + Unicode::ToLower(value) AS lower, + Unicode::ToUpper(value) AS upper, + Unicode::ToTitle(value) AS title, + Unicode::Reverse(value) AS reverse, +FROM Input; + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64.sql new file mode 100644 index 0000000000..c4059a8582 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64.sql @@ -0,0 +1,9 @@ +SELECT + Unicode::ToUint64("0x1234abcd"), + Unicode::ToUint64("0X4"), + Unicode::ToUint64("0644"), + Unicode::ToUint64("0101010", 16), + Unicode::ToUint64("0101010", 2), + Unicode::ToUint64("0101010"), + Unicode::ToUint64("101"); + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F0.cfg b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F0.cfg new file mode 100644 index 0000000000..83cfd96179 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F0.cfg @@ -0,0 +1,2 @@ +xfail + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F0.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F0.sql new file mode 100644 index 0000000000..dd1182a562 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F0.sql @@ -0,0 +1,3 @@ +SELECT + Unicode::ToUint64("hell"); + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F1.cfg b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F1.cfg new file mode 100644 index 0000000000..83cfd96179 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F1.cfg @@ -0,0 +1,2 @@ +xfail + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F1.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F1.sql new file mode 100644 index 0000000000..f42380ee80 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F1.sql @@ -0,0 +1,3 @@ +SELECT + Unicode::ToUint64("01238"); + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F2.cfg b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F2.cfg new file mode 100644 index 0000000000..83cfd96179 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F2.cfg @@ -0,0 +1,2 @@ +xfail + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F2.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F2.sql new file mode 100644 index 0000000000..1a9b7e2449 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/ToUint64F2.sql @@ -0,0 +1,3 @@ +SELECT + Unicode::ToUint64("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); + diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/TryToUint64.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/TryToUint64.sql new file mode 100644 index 0000000000..b2f4fa850a --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/TryToUint64.sql @@ -0,0 +1,17 @@ +SELECT + Unicode::TryToUint64("hell", 10); + +SELECT + Unicode::TryToUint64("01238", 8); + +SELECT + Unicode::TryToUint64("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 16); + +SELECT + Unicode::TryToUint64("0x1234abcd", 16), + Unicode::TryToUint64("0X4", 16), + Unicode::TryToUint64("0644", 8), + Unicode::TryToUint64("0101010", 16), + Unicode::TryToUint64("0101010", 2), + Unicode::TryToUint64("0101010", 10), + Unicode::TryToUint64("101", 10); diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/Unicode.in b/ydb/library/yql/udfs/common/unicode_base/test/cases/Unicode.in new file mode 100644 index 0000000000..55f0307e35 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/Unicode.in @@ -0,0 +1,7 @@ +{"key"="";"subkey"="";"value"="Eyl\xC3\xBCl"}; +{"key"="";"subkey"="";"value"="\xD0\xB6\xD0\xBD\xD1\x96\xD1\x9E\xD0\xBD\xD1\x8F"}; +{"key"="";"subkey"="";"value"="\xC3\xBAnora"}; +{"key"="";"subkey"="";"value"="Ci\xD1\x87 Ci\xD1\x87"}; +{"key"="";"subkey"="";"value"="\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82 \xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82"}; +{"key"="";"subkey"="";"value"="6"}; +{"key"="";"subkey"="";"value"=""}; diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/Unicode.sql b/ydb/library/yql/udfs/common/unicode_base/test/cases/Unicode.sql new file mode 100644 index 0000000000..b330682b6e --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/Unicode.sql @@ -0,0 +1,19 @@ +/* syntax version 1 */ +SELECT + value AS value, + Unicode::Normalize(value) AS normalize, + Unicode::IsUtf(value) AS is, + Unicode::GetLength(value) AS length, + Unicode::Substring(value, 1) AS one_end_substring, + Unicode::Substring(value, 0, 2) AS two_end_substring, + Unicode::RemoveAll(value, "\xD1\x87пr") AS remove_all, + Unicode::LevensteinDistance(value, value || Unicode::Substring(value, 0, 5)) AS levenstein, + Unicode::ToCodePointList(value) AS code_point_list, + Unicode::FromCodePointList(Unicode::ToCodePointList(value)) AS from_code_point_list, + Unicode::FromCodePointList(YQL::LazyList(Unicode::ToCodePointList(value))) AS from_lazy_code_point_list, + Unicode::Reverse(value) AS reverse, + Unicode::Find(value, "ет"u) AS find, + Unicode::RFind(value, "ет"u) AS rfind, + Unicode::Find(value, "ет"u, 7ul) AS find_from, + Unicode::RFind(value, "ет"u, 7ul) AS rfind_from +FROM (SELECT CAST(value AS Utf8) AS value FROM Input); diff --git a/ydb/library/yql/udfs/common/unicode_base/test/cases/default.in b/ydb/library/yql/udfs/common/unicode_base/test/cases/default.in new file mode 100644 index 0000000000..6a9412ca37 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/cases/default.in @@ -0,0 +1,5 @@ +{"key"="1";"subkey"="1";"value"="ываыва"}; +{"key"="2";"subkey"="2";"value"="ячсячсяаачы"}; +{"key"="3";"subkey"="3";"value"="аавыаываыва"}; +{"key"="4";"subkey"="4";"value"="gd2цй3ываафы"}; +{"key"="5";"subkey"="5";"value"=""}; diff --git a/ydb/library/yql/udfs/common/unicode_base/test/ya.make b/ydb/library/yql/udfs/common/unicode_base/test/ya.make new file mode 100644 index 0000000000..bf0cb0b708 --- /dev/null +++ b/ydb/library/yql/udfs/common/unicode_base/test/ya.make @@ -0,0 +1,13 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/unicode_base) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/unicode_base/ya.make b/ydb/library/yql/udfs/common/unicode_base/ya.make index 8bfa9fd967..8d6834136b 100644 --- a/ydb/library/yql/udfs/common/unicode_base/ya.make +++ b/ydb/library/yql/udfs/common/unicode_base/ya.make @@ -15,3 +15,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +) diff --git a/ydb/library/yql/udfs/common/url_base/test/canondata/result.json b/ydb/library/yql/udfs/common/url_base/test/canondata/result.json new file mode 100644 index 0000000000..98e905ecde --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/canondata/result.json @@ -0,0 +1,47 @@ +{ + "test.test[BlockPunycode]": [ + { + "uri": "file://test.test_BlockPunycode_/results.txt" + } + ], + "test.test[BlockTld]": [ + { + "uri": "file://test.test_BlockTld_/results.txt" + } + ], + "test.test[BlockUrl]": [ + { + "uri": "file://test.test_BlockUrl_/results.txt" + } + ], + "test.test[Punycode]": [ + { + "uri": "file://test.test_Punycode_/results.txt" + } + ], + "test.test[Tld]": [ + { + "uri": "file://test.test_Tld_/results.txt" + } + ], + "test.test[UrlQueryMaxFieldsErr]": [ + { + "uri": "file://test.test_UrlQueryMaxFieldsErr_/extracted" + } + ], + "test.test[UrlQueryStrictErr]": [ + { + "uri": "file://test.test_UrlQueryStrictErr_/extracted" + } + ], + "test.test[UrlQuery]": [ + { + "uri": "file://test.test_UrlQuery_/results.txt" + } + ], + "test.test[Url]": [ + { + "uri": "file://test.test_Url_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_BlockPunycode_/results.txt b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_BlockPunycode_/results.txt new file mode 100644 index 0000000000..69224c4ac6 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_BlockPunycode_/results.txt @@ -0,0 +1,106 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "hostname_utf"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "punycode_hostname"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "hostname_utf_forced"; + [ + "DataType"; + "String" + ] + ]; + [ + "punycode_hostname_forced"; + [ + "DataType"; + "String" + ] + ]; + [ + "can_be_punycode"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "ab\xC3\246cd\xC3\266ef"; + #; + #; + "ab\xC3\246cd\xC3\266ef"; + "xn--abcdef-qua4k"; + %false + ]; + [ + "\xD1\x8F\xD0\xBD\xD0\xB4\xD0\xB5\xD0\xBA\xD1\x81.\xD1\x80\xD1\x83"; + #; + #; + "\xD1\x8F\xD0\xBD\xD0\xB4\xD0\xB5\xD0\xBA\xD1\x81.\xD1\x80\xD1\x83"; + "xn--d1acpjx3f.xn--p1ag"; + %false + ]; + [ + "yandex.ru"; + [ + "yandex.ru" + ]; + [ + "yandex.ru" + ]; + "yandex.ru"; + "yandex.ru"; + %false + ]; + [ + "xn--d1acpjx3f.xn--p1ag"; + [ + "\xD1\x8F\xD0\xBD\xD0\xB4\xD0\xB5\xD0\xBA\xD1\x81.\xD1\x80\xD1\x83" + ]; + [ + "xn--d1acpjx3f.xn--p1ag" + ]; + "\xD1\x8F\xD0\xBD\xD0\xB4\xD0\xB5\xD0\xBA\xD1\x81.\xD1\x80\xD1\x83"; + "xn--d1acpjx3f.xn--p1ag"; + %true + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_BlockTld_/results.txt b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_BlockTld_/results.txt new file mode 100644 index 0000000000..f45bb011da --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_BlockTld_/results.txt @@ -0,0 +1,59 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "tld"; + [ + "DataType"; + "String" + ] + ]; + [ + "known"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "well_known"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "ru"; + %true; + %true + ]; + [ + "123"; + %false; + %false + ]; + [ + "yandex"; + %true; + %false + ]; + [ + "sdfsdfsdf"; + %false; + %false + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_BlockUrl_/results.txt b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_BlockUrl_/results.txt new file mode 100644 index 0000000000..7b5257063b --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_BlockUrl_/results.txt @@ -0,0 +1,1212 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "encode"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "decode"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "param"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "cut_qs_and_fragment"; + [ + "DataType"; + "String" + ] + ]; + [ + "host"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "cut_www"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "cut_www2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "tld"; + [ + "DataType"; + "String" + ] + ]; + [ + "punycode"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "cut_scheme"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "host_port"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "scheme_host"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "scheme_host_port"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "tail"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "path"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "fragment"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "port"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "domain0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "domain1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "domain3"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "domain_level"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "norm"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "http://"; + [ + "http://" + ]; + [ + "http://" + ]; + #; + "http://"; + #; + #; + #; + ""; + [ + "http://" + ]; + #; + #; + [ + "http://" + ]; + [ + "http://" + ]; + [ + "/" + ]; + [ + "/" + ]; + #; + [ + "80" + ]; + #; + #; + #; + "1"; + # + ]; + [ + "http://lenta.ru"; + [ + "http://lenta.ru" + ]; + [ + "http://lenta.ru" + ]; + #; + "http://lenta.ru"; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + "ru"; + [ + "http://lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "http://lenta.ru" + ]; + [ + "http://lenta.ru" + ]; + [ + "/" + ]; + [ + "/" + ]; + #; + [ + "80" + ]; + #; + [ + "ru" + ]; + #; + "2"; + [ + "http://lenta.ru/" + ] + ]; + [ + "http://someone.livejournal.com/blog"; + [ + "http://someone.livejournal.com/blog" + ]; + [ + "http://someone.livejournal.com/blog" + ]; + #; + "http://someone.livejournal.com/blog"; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + "com"; + [ + "http://someone.livejournal.com/blog" + ]; + [ + "someone.livejournal.com/blog" + ]; + [ + "someone.livejournal.com" + ]; + [ + "http://someone.livejournal.com" + ]; + [ + "http://someone.livejournal.com" + ]; + [ + "/blog" + ]; + [ + "/blog" + ]; + #; + [ + "80" + ]; + #; + [ + "com" + ]; + [ + "someone.livejournal.com" + ]; + "3"; + [ + "http://someone.livejournal.com/blog" + ] + ]; + [ + "http://bbc.co.uk/"; + [ + "http://bbc.co.uk/" + ]; + [ + "http://bbc.co.uk/" + ]; + #; + "http://bbc.co.uk/"; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + "uk"; + [ + "http://bbc.co.uk/" + ]; + [ + "bbc.co.uk/" + ]; + [ + "bbc.co.uk" + ]; + [ + "http://bbc.co.uk" + ]; + [ + "http://bbc.co.uk" + ]; + [ + "/" + ]; + [ + "/" + ]; + #; + [ + "80" + ]; + #; + [ + "uk" + ]; + [ + "bbc.co.uk" + ]; + "3"; + [ + "http://bbc.co.uk/" + ] + ]; + [ + "https://www.yandex.com.tr/search"; + [ + "https://www.yandex.com.tr/search" + ]; + [ + "https://www.yandex.com.tr/search" + ]; + #; + "https://www.yandex.com.tr/search"; + [ + "www.yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + "tr"; + [ + "https://www.yandex.com.tr/search" + ]; + [ + "www.yandex.com.tr/search" + ]; + [ + "www.yandex.com.tr" + ]; + [ + "https://www.yandex.com.tr" + ]; + [ + "https://www.yandex.com.tr" + ]; + [ + "/search" + ]; + [ + "/search" + ]; + #; + [ + "443" + ]; + #; + [ + "tr" + ]; + [ + "yandex.com.tr" + ]; + "4"; + [ + "https://www.yandex.com.tr/search" + ] + ]; + [ + "https://www2.yandex.com.tr/search"; + [ + "https://www2.yandex.com.tr/search" + ]; + [ + "https://www2.yandex.com.tr/search" + ]; + #; + "https://www2.yandex.com.tr/search"; + [ + "www2.yandex.com.tr" + ]; + [ + "www2.yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + "tr"; + [ + "https://www2.yandex.com.tr/search" + ]; + [ + "www2.yandex.com.tr/search" + ]; + [ + "www2.yandex.com.tr" + ]; + [ + "https://www2.yandex.com.tr" + ]; + [ + "https://www2.yandex.com.tr" + ]; + [ + "/search" + ]; + [ + "/search" + ]; + #; + [ + "443" + ]; + #; + [ + "tr" + ]; + [ + "yandex.com.tr" + ]; + "4"; + [ + "https://www2.yandex.com.tr/search" + ] + ]; + [ + "lenta.ru"; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + #; + "lenta.ru"; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + "ru"; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "/" + ]; + [ + "/" + ]; + #; + #; + #; + [ + "ru" + ]; + #; + "2"; + # + ]; + [ + "bbc.co.uk/news"; + [ + "bbc.co.uk/news" + ]; + [ + "bbc.co.uk/news" + ]; + #; + "bbc.co.uk/news"; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + "uk"; + [ + "bbc.co.uk/news" + ]; + [ + "bbc.co.uk/news" + ]; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "/news" + ]; + [ + "/news" + ]; + #; + #; + #; + [ + "uk" + ]; + [ + "bbc.co.uk" + ]; + "3"; + # + ]; + [ + "yandex.com.tr/maps?foo="; + [ + "yandex.com.tr/maps?foo=" + ]; + [ + "yandex.com.tr/maps?foo=" + ]; + [ + "" + ]; + "yandex.com.tr/maps"; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + "tr"; + [ + "yandex.com.tr/maps?foo=" + ]; + [ + "yandex.com.tr/maps?foo=" + ]; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + [ + "/maps?foo=" + ]; + [ + "/maps" + ]; + #; + #; + #; + [ + "tr" + ]; + [ + "yandex.com.tr" + ]; + "3"; + # + ]; + [ + "someone.livejournal.com?foo=bar#top"; + [ + "someone.livejournal.com?foo=bar#top" + ]; + [ + "someone.livejournal.com?foo=bar#top" + ]; + [ + "bar" + ]; + "someone.livejournal.com"; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + "com"; + [ + "someone.livejournal.com?foo=bar#top" + ]; + [ + "someone.livejournal.com?foo=bar#top" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "/?foo=bar#top" + ]; + [ + "/" + ]; + [ + "top" + ]; + #; + #; + [ + "com" + ]; + [ + "someone.livejournal.com" + ]; + "3"; + # + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k#l.m.n"; + [ + "a.b.c.d.e.f.g.h.i.j.k#l.m.n" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k#l.m.n" + ]; + #; + "a.b.c.d.e.f.g.h.i.j.k"; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + "k"; + [ + "a.b.c.d.e.f.g.h.i.j.k#l.m.n" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k#l.m.n" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + [ + "/#l.m.n" + ]; + [ + "/" + ]; + [ + "l.m.n" + ]; + #; + #; + [ + "k" + ]; + [ + "i.j.k" + ]; + "11"; + # + ]; + [ + "foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4"; + [ + "foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4" + ]; + [ + "foo.tl.md/ \xD1\x8E\xD0\xBD\xD0\xB8\xD0\xBA\xD0\xBE\xD0\xB4" + ]; + #; + "foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4"; + [ + "foo.tl.md" + ]; + [ + "foo.tl.md" + ]; + [ + "foo.tl.md" + ]; + "md"; + [ + "foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4" + ]; + [ + "foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4" + ]; + [ + "foo.tl.md" + ]; + [ + "foo.tl.md" + ]; + [ + "foo.tl.md" + ]; + [ + "/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4" + ]; + [ + "/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4" + ]; + #; + #; + #; + [ + "md" + ]; + [ + "foo.tl.md" + ]; + "3"; + # + ]; + [ + "xn--d1acpjx3f.xn--p1ai"; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + #; + "xn--d1acpjx3f.xn--p1ai"; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + "xn--p1ai"; + [ + "\xD1\x8F\xD0\xBD\xD0\xB4\xD0\xB5\xD0\xBA\xD1\x81.\xD1\x80\xD1\x84" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "/" + ]; + [ + "/" + ]; + #; + #; + #; + [ + "xn--p1ai" + ]; + #; + "2"; + # + ]; + [ + "https://ya.ru:80/search/?text=test&lr=213#top"; + [ + "https://ya.ru:80/search/?text=test&lr=213#top" + ]; + [ + "https://ya.ru:80/search/?text=test&lr=213#top" + ]; + #; + "https://ya.ru:80/search/"; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + "ru"; + [ + "https://ya.ru:80/search/?text=test&lr=213#top" + ]; + [ + "ya.ru:80/search/?text=test&lr=213#top" + ]; + [ + "ya.ru:80" + ]; + [ + "https://ya.ru" + ]; + [ + "https://ya.ru:80" + ]; + [ + "/search/?text=test&lr=213#top" + ]; + [ + "/search/" + ]; + [ + "top" + ]; + [ + "80" + ]; + #; + [ + "ru" + ]; + #; + "2"; + [ + "https://ya.ru:80/search/?text=test&lr=213" + ] + ]; + [ + "https://ya.ru/search/?text=%2B"; + [ + "https://ya.ru/search/?text=%2B" + ]; + [ + "https://ya.ru/search/?text=+" + ]; + #; + "https://ya.ru/search/"; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + "ru"; + [ + "https://ya.ru/search/?text=%2B" + ]; + [ + "ya.ru/search/?text=%2B" + ]; + [ + "ya.ru" + ]; + [ + "https://ya.ru" + ]; + [ + "https://ya.ru" + ]; + [ + "/search/?text=%2B" + ]; + [ + "/search/" + ]; + #; + [ + "443" + ]; + #; + [ + "ru" + ]; + #; + "2"; + [ + "https://ya.ru/search/?text=%2B" + ] + ]; + [ + "goal://market.yandex.ru/product-page_scroll-box_product_visible"; + [ + "goal://market.yandex.ru/product-page_scroll-box_product_visible" + ]; + [ + "goal://market.yandex.ru/product-page_scroll-box_product_visible" + ]; + #; + "goal://market.yandex.ru/product-page_scroll-box_product_visible"; + [ + "market.yandex.ru" + ]; + [ + "market.yandex.ru" + ]; + [ + "market.yandex.ru" + ]; + "ru"; + [ + "goal://market.yandex.ru/product-page_scroll-box_product_visible" + ]; + [ + "market.yandex.ru/product-page_scroll-box_product_visible" + ]; + [ + "market.yandex.ru" + ]; + [ + "goal://market.yandex.ru" + ]; + [ + "goal://market.yandex.ru" + ]; + [ + "/product-page_scroll-box_product_visible" + ]; + [ + "/product-page_scroll-box_product_visible" + ]; + #; + #; + #; + [ + "ru" + ]; + [ + "market.yandex.ru" + ]; + "3"; + # + ]; + [ + "Http://ya.ru"; + [ + "Http://ya.ru" + ]; + [ + "Http://ya.ru" + ]; + #; + "Http://ya.ru"; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + "ru"; + [ + "Http://ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "Http://ya.ru" + ]; + [ + "Http://ya.ru" + ]; + [ + "/" + ]; + [ + "/" + ]; + #; + [ + "80" + ]; + #; + [ + "ru" + ]; + #; + "2"; + [ + "http://ya.ru/" + ] + ]; + [ + "ftp://someone.livejournal.com:80/blog"; + [ + "ftp://someone.livejournal.com:80/blog" + ]; + [ + "ftp://someone.livejournal.com:80/blog" + ]; + #; + "ftp://someone.livejournal.com:80/blog"; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + "com"; + [ + "ftp://someone.livejournal.com:80/blog" + ]; + [ + "someone.livejournal.com:80/blog" + ]; + [ + "someone.livejournal.com:80" + ]; + [ + "ftp://someone.livejournal.com" + ]; + [ + "ftp://someone.livejournal.com:80" + ]; + [ + "/blog" + ]; + [ + "/blog" + ]; + #; + [ + "80" + ]; + #; + [ + "com" + ]; + [ + "someone.livejournal.com" + ]; + "3"; + [ + "ftp://someone.livejournal.com:80/blog" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_Punycode_/results.txt b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_Punycode_/results.txt new file mode 100644 index 0000000000..69224c4ac6 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_Punycode_/results.txt @@ -0,0 +1,106 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "hostname_utf"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "punycode_hostname"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "hostname_utf_forced"; + [ + "DataType"; + "String" + ] + ]; + [ + "punycode_hostname_forced"; + [ + "DataType"; + "String" + ] + ]; + [ + "can_be_punycode"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "ab\xC3\246cd\xC3\266ef"; + #; + #; + "ab\xC3\246cd\xC3\266ef"; + "xn--abcdef-qua4k"; + %false + ]; + [ + "\xD1\x8F\xD0\xBD\xD0\xB4\xD0\xB5\xD0\xBA\xD1\x81.\xD1\x80\xD1\x83"; + #; + #; + "\xD1\x8F\xD0\xBD\xD0\xB4\xD0\xB5\xD0\xBA\xD1\x81.\xD1\x80\xD1\x83"; + "xn--d1acpjx3f.xn--p1ag"; + %false + ]; + [ + "yandex.ru"; + [ + "yandex.ru" + ]; + [ + "yandex.ru" + ]; + "yandex.ru"; + "yandex.ru"; + %false + ]; + [ + "xn--d1acpjx3f.xn--p1ag"; + [ + "\xD1\x8F\xD0\xBD\xD0\xB4\xD0\xB5\xD0\xBA\xD1\x81.\xD1\x80\xD1\x83" + ]; + [ + "xn--d1acpjx3f.xn--p1ag" + ]; + "\xD1\x8F\xD0\xBD\xD0\xB4\xD0\xB5\xD0\xBA\xD1\x81.\xD1\x80\xD1\x83"; + "xn--d1acpjx3f.xn--p1ag"; + %true + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_Tld_/results.txt b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_Tld_/results.txt new file mode 100644 index 0000000000..f45bb011da --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_Tld_/results.txt @@ -0,0 +1,59 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "tld"; + [ + "DataType"; + "String" + ] + ]; + [ + "known"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "well_known"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "ru"; + %true; + %true + ]; + [ + "123"; + %false; + %false + ]; + [ + "yandex"; + %true; + %false + ]; + [ + "sdfsdfsdf"; + %false; + %false + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_UrlQueryMaxFieldsErr_/extracted b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_UrlQueryMaxFieldsErr_/extracted new file mode 100644 index 0000000000..e80a93b299 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_UrlQueryMaxFieldsErr_/extracted @@ -0,0 +1,8 @@ +<tmp_path>/program.sql:<main>: Fatal: Execution + + <tmp_path>/program.sql:<main>:2:1: Fatal: Execution of node: Result + SELECT + ^ + <tmp_path>/program.sql:<main>:4:10: Fatal: Max number of fields (2) exceeded: got 3 + Url::QueryStringToList("glfilter=78318%3A79492&glfilter=561%3A121037&hid=904", 2 AS MaxFields) + ^
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_UrlQueryStrictErr_/extracted b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_UrlQueryStrictErr_/extracted new file mode 100644 index 0000000000..6326332de1 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_UrlQueryStrictErr_/extracted @@ -0,0 +1,8 @@ +<tmp_path>/program.sql:<main>: Fatal: Execution + + <tmp_path>/program.sql:<main>:2:1: Fatal: Execution of node: Result + SELECT + ^ + <tmp_path>/program.sql:<main>:4:10: Fatal: Bad query field: "mistaken" + Url::QueryStringToList("glfilter=78318%3A79492&mistaken&glfilter=1&hid=904") + ^
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_UrlQuery_/results.txt b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_UrlQuery_/results.txt new file mode 100644 index 0000000000..303f480161 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_UrlQuery_/results.txt @@ -0,0 +1,1112 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "base_list"; + [ + "ListType"; + [ + "TupleType"; + [ + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + [ + "base_list_build"; + [ + "DataType"; + "String" + ] + ]; + [ + "keep_blank_list"; + [ + "ListType"; + [ + "TupleType"; + [ + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + [ + "keep_blank_list_build"; + [ + "DataType"; + "String" + ] + ]; + [ + "sep_semicol_list"; + [ + "ListType"; + [ + "TupleType"; + [ + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + [ + "sep_semicol_list_build"; + [ + "DataType"; + "String" + ] + ]; + [ + "base_dict"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "base_dict_build"; + [ + "DataType"; + "String" + ] + ]; + [ + "keep_blank_dict"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "keep_blank_dict_build"; + [ + "DataType"; + "String" + ] + ]; + [ + "sep_semicol_dict"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "sep_semicol_dict_build"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "glfilter=7893318%3A7949252&glfilter=5099461%3A12103637&glfilter=8292645%3A1&hid=90404&onstock=0&local-offers-first=0"; + [ + [ + "glfilter"; + "7893318:7949252" + ]; + [ + "glfilter"; + "5099461:12103637" + ]; + [ + "glfilter"; + "8292645:1" + ]; + [ + "hid"; + "90404" + ]; + [ + "onstock"; + "0" + ]; + [ + "local-offers-first"; + "0" + ] + ]; + "glfilter=7893318%3A7949252&glfilter=5099461%3A12103637&glfilter=8292645%3A1&hid=90404&onstock=0&local-offers-first=0"; + [ + [ + "glfilter"; + "7893318:7949252" + ]; + [ + "glfilter"; + "5099461:12103637" + ]; + [ + "glfilter"; + "8292645:1" + ]; + [ + "hid"; + "90404" + ]; + [ + "onstock"; + "0" + ]; + [ + "local-offers-first"; + "0" + ] + ]; + "glfilter=7893318%3A7949252&glfilter=5099461%3A12103637&glfilter=8292645%3A1&hid=90404&onstock=0&local-offers-first=0"; + [ + [ + "glfilter"; + "7893318:7949252&glfilter=5099461:12103637&glfilter=8292645:1&hid=90404&onstock=0&local-offers-first=0" + ] + ]; + "glfilter=7893318%3A7949252%26glfilter%3D5099461%3A12103637%26glfilter%3D8292645%3A1%26hid%3D90404%26onstock%3D0%26local-offers-first%3D0"; + [ + [ + "glfilter"; + [ + "7893318:7949252"; + "5099461:12103637"; + "8292645:1" + ] + ]; + [ + "hid"; + [ + "90404" + ] + ]; + [ + "onstock"; + [ + "0" + ] + ]; + [ + "local-offers-first"; + [ + "0" + ] + ] + ]; + "local-offers-first=0&onstock=0&hid=90404&glfilter=7893318%3A7949252&glfilter=5099461%3A12103637&glfilter=8292645%3A1"; + [ + [ + "glfilter"; + [ + "7893318:7949252"; + "5099461:12103637"; + "8292645:1" + ] + ]; + [ + "hid"; + [ + "90404" + ] + ]; + [ + "onstock"; + [ + "0" + ] + ]; + [ + "local-offers-first"; + [ + "0" + ] + ] + ]; + "local-offers-first=0&onstock=0&hid=90404&glfilter=7893318%3A7949252&glfilter=5099461%3A12103637&glfilter=8292645%3A1"; + [ + [ + "glfilter"; + [ + "7893318:7949252&glfilter=5099461:12103637&glfilter=8292645:1&hid=90404&onstock=0&local-offers-first=0" + ] + ] + ]; + "glfilter=7893318%3A7949252%26glfilter%3D5099461%3A12103637%26glfilter%3D8292645%3A1%26hid%3D90404%26onstock%3D0%26local-offers-first%3D0" + ]; + [ + ""; + []; + ""; + []; + ""; + []; + ""; + []; + ""; + []; + ""; + []; + "" + ]; + [ + "&"; + []; + ""; + []; + ""; + []; + ""; + []; + ""; + []; + ""; + []; + "" + ]; + [ + "&&"; + []; + ""; + []; + ""; + []; + ""; + []; + ""; + []; + ""; + []; + "" + ]; + [ + "="; + []; + ""; + [ + [ + ""; + "" + ] + ]; + "="; + []; + ""; + []; + ""; + [ + [ + ""; + [ + "" + ] + ] + ]; + "="; + []; + "" + ]; + [ + "&="; + []; + ""; + [ + [ + ""; + "" + ] + ]; + "="; + []; + ""; + []; + ""; + [ + [ + ""; + [ + "" + ] + ] + ]; + "="; + []; + "" + ]; + [ + "=&"; + []; + ""; + [ + [ + ""; + "" + ] + ]; + "="; + [ + [ + ""; + "&" + ] + ]; + "=%26"; + []; + ""; + [ + [ + ""; + [ + "" + ] + ] + ]; + "="; + [ + [ + ""; + [ + "&" + ] + ] + ]; + "=%26" + ]; + [ + "&=="; + [ + [ + ""; + "=" + ] + ]; + "=%3D"; + [ + [ + ""; + "=" + ] + ]; + "=%3D"; + [ + [ + "&"; + "=" + ] + ]; + "%26=%3D"; + [ + [ + ""; + [ + "=" + ] + ] + ]; + "=%3D"; + [ + [ + ""; + [ + "=" + ] + ] + ]; + "=%3D"; + [ + [ + "&"; + [ + "=" + ] + ] + ]; + "%26=%3D" + ]; + [ + "&==&"; + [ + [ + ""; + "=" + ] + ]; + "=%3D"; + [ + [ + ""; + "=" + ] + ]; + "=%3D"; + [ + [ + "&"; + "=&" + ] + ]; + "%26=%3D%26"; + [ + [ + ""; + [ + "=" + ] + ] + ]; + "=%3D"; + [ + [ + ""; + [ + "=" + ] + ] + ]; + "=%3D"; + [ + [ + "&"; + [ + "=&" + ] + ] + ]; + "%26=%3D%26" + ]; + [ + "==&"; + [ + [ + ""; + "=" + ] + ]; + "=%3D"; + [ + [ + ""; + "=" + ] + ]; + "=%3D"; + [ + [ + ""; + "=&" + ] + ]; + "=%3D%26"; + [ + [ + ""; + [ + "=" + ] + ] + ]; + "=%3D"; + [ + [ + ""; + [ + "=" + ] + ] + ]; + "=%3D"; + [ + [ + ""; + [ + "=&" + ] + ] + ]; + "=%3D%26" + ]; + [ + "=&="; + []; + ""; + [ + [ + ""; + "" + ]; + [ + ""; + "" + ] + ]; + "=&="; + [ + [ + ""; + "&=" + ] + ]; + "=%26%3D"; + []; + ""; + [ + [ + ""; + [ + ""; + "" + ] + ] + ]; + "=&="; + [ + [ + ""; + [ + "&=" + ] + ] + ]; + "=%26%3D" + ]; + [ + "=a"; + [ + [ + ""; + "a" + ] + ]; + "=a"; + [ + [ + ""; + "a" + ] + ]; + "=a"; + [ + [ + ""; + "a" + ] + ]; + "=a"; + [ + [ + ""; + [ + "a" + ] + ] + ]; + "=a"; + [ + [ + ""; + [ + "a" + ] + ] + ]; + "=a"; + [ + [ + ""; + [ + "a" + ] + ] + ]; + "=a" + ]; + [ + "a"; + []; + ""; + [ + [ + "a"; + "" + ] + ]; + "a="; + []; + ""; + []; + ""; + [ + [ + "a"; + [ + "" + ] + ] + ]; + "a="; + []; + "" + ]; + [ + "a="; + []; + ""; + [ + [ + "a"; + "" + ] + ]; + "a="; + []; + ""; + []; + ""; + [ + [ + "a"; + [ + "" + ] + ] + ]; + "a="; + []; + "" + ]; + [ + "&a=b"; + [ + [ + "a"; + "b" + ] + ]; + "a=b"; + [ + [ + "a"; + "b" + ] + ]; + "a=b"; + [ + [ + "&a"; + "b" + ] + ]; + "%26a=b"; + [ + [ + "a"; + [ + "b" + ] + ] + ]; + "a=b"; + [ + [ + "a"; + [ + "b" + ] + ] + ]; + "a=b"; + [ + [ + "&a"; + [ + "b" + ] + ] + ]; + "%26a=b" + ]; + [ + "a=a+b&b=b+c"; + [ + [ + "a"; + "a b" + ]; + [ + "b"; + "b c" + ] + ]; + "a=a+b&b=b+c"; + [ + [ + "a"; + "a b" + ]; + [ + "b"; + "b c" + ] + ]; + "a=a+b&b=b+c"; + [ + [ + "a"; + "a b&b=b c" + ] + ]; + "a=a+b%26b%3Db+c"; + [ + [ + "a"; + [ + "a b" + ] + ]; + [ + "b"; + [ + "b c" + ] + ] + ]; + "b=b+c&a=a+b"; + [ + [ + "a"; + [ + "a b" + ] + ]; + [ + "b"; + [ + "b c" + ] + ] + ]; + "b=b+c&a=a+b"; + [ + [ + "a"; + [ + "a b&b=b c" + ] + ] + ]; + "a=a+b%26b%3Db+c" + ]; + [ + "a=a+b=&b=b+=c"; + [ + [ + "a"; + "a b=" + ]; + [ + "b"; + "b =c" + ] + ]; + "a=a+b%3D&b=b+%3Dc"; + [ + [ + "a"; + "a b=" + ]; + [ + "b"; + "b =c" + ] + ]; + "a=a+b%3D&b=b+%3Dc"; + [ + [ + "a"; + "a b=&b=b =c" + ] + ]; + "a=a+b%3D%26b%3Db+%3Dc"; + [ + [ + "a"; + [ + "a b=" + ] + ]; + [ + "b"; + [ + "b =c" + ] + ] + ]; + "b=b+%3Dc&a=a+b%3D"; + [ + [ + "a"; + [ + "a b=" + ] + ]; + [ + "b"; + [ + "b =c" + ] + ] + ]; + "b=b+%3Dc&a=a+b%3D"; + [ + [ + "a"; + [ + "a b=&b=b =c" + ] + ] + ]; + "a=a+b%3D%26b%3Db+%3Dc" + ]; + [ + "a=1&a=2"; + [ + [ + "a"; + "1" + ]; + [ + "a"; + "2" + ] + ]; + "a=1&a=2"; + [ + [ + "a"; + "1" + ]; + [ + "a"; + "2" + ] + ]; + "a=1&a=2"; + [ + [ + "a"; + "1&a=2" + ] + ]; + "a=1%26a%3D2"; + [ + [ + "a"; + [ + "1"; + "2" + ] + ] + ]; + "a=1&a=2"; + [ + [ + "a"; + [ + "1"; + "2" + ] + ] + ]; + "a=1&a=2"; + [ + [ + "a"; + [ + "1&a=2" + ] + ] + ]; + "a=1%26a%3D2" + ]; + [ + ";a=b"; + [ + [ + ";a"; + "b" + ] + ]; + ";a=b"; + [ + [ + ";a"; + "b" + ] + ]; + ";a=b"; + [ + [ + "a"; + "b" + ] + ]; + "a=b"; + [ + [ + ";a"; + [ + "b" + ] + ] + ]; + ";a=b"; + [ + [ + ";a"; + [ + "b" + ] + ] + ]; + ";a=b"; + [ + [ + "a"; + [ + "b" + ] + ] + ]; + "a=b" + ]; + [ + "a=a+b;b=b+c"; + [ + [ + "a"; + "a b;b=b c" + ] + ]; + "a=a+b;b%3Db+c"; + [ + [ + "a"; + "a b;b=b c" + ] + ]; + "a=a+b;b%3Db+c"; + [ + [ + "a"; + "a b" + ]; + [ + "b"; + "b c" + ] + ]; + "a=a+b;b=b+c"; + [ + [ + "a"; + [ + "a b;b=b c" + ] + ] + ]; + "a=a+b;b%3Db+c"; + [ + [ + "a"; + [ + "a b;b=b c" + ] + ] + ]; + "a=a+b;b%3Db+c"; + [ + [ + "a"; + [ + "a b" + ] + ]; + [ + "b"; + [ + "b c" + ] + ] + ]; + "b=b+c;a=a+b" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_Url_/results.txt b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_Url_/results.txt new file mode 100644 index 0000000000..09115e9400 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/canondata/test.test_Url_/results.txt @@ -0,0 +1,1640 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "value"; + [ + "DataType"; + "String" + ] + ]; + [ + "parse"; + [ + "StructType"; + [ + [ + "Frag"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "Host"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "ParseError"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "Pass"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "Path"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "Port"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "Query"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "Scheme"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "User"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + [ + "significant_domain"; + [ + "DataType"; + "String" + ] + ]; + [ + "tl_is_significant"; + [ + "DataType"; + "String" + ] + ]; + [ + "tld"; + [ + "DataType"; + "String" + ] + ]; + [ + "punycode"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "encode"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "decode"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "param"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "cut_qs_and_fragment"; + [ + "DataType"; + "String" + ] + ]; + [ + "cut_www"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "cut_www2"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "host"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "host_port"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "scheme_host"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "scheme_host_port"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "cut_scheme"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "tail"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "path"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "fragment"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "port"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "domain0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "domain1"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "domain3"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "domain_level"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "norm"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + "http://"; + [ + #; + #; + [ + "ParsedBadFormat" + ]; + #; + #; + #; + #; + #; + # + ]; + ""; + ""; + ""; + [ + "http://" + ]; + [ + "http://" + ]; + [ + "http://" + ]; + #; + "http://"; + #; + #; + #; + #; + [ + "http://" + ]; + [ + "http://" + ]; + #; + [ + "/" + ]; + [ + "/" + ]; + #; + [ + "80" + ]; + #; + #; + #; + "1"; + # + ]; + [ + "http://lenta.ru"; + [ + #; + [ + "lenta.ru" + ]; + #; + #; + [ + "/" + ]; + #; + #; + [ + "http" + ]; + # + ]; + "lenta.ru"; + "lenta.ru"; + "ru"; + [ + "http://lenta.ru" + ]; + [ + "http://lenta.ru" + ]; + [ + "http://lenta.ru" + ]; + #; + "http://lenta.ru"; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "http://lenta.ru" + ]; + [ + "http://lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "/" + ]; + [ + "/" + ]; + #; + [ + "80" + ]; + #; + [ + "ru" + ]; + #; + "2"; + [ + "http://lenta.ru/" + ] + ]; + [ + "http://someone.livejournal.com/blog"; + [ + #; + [ + "someone.livejournal.com" + ]; + #; + #; + [ + "/blog" + ]; + #; + #; + [ + "http" + ]; + # + ]; + "livejournal.com"; + "livejournal.com"; + "com"; + [ + "http://someone.livejournal.com/blog" + ]; + [ + "http://someone.livejournal.com/blog" + ]; + [ + "http://someone.livejournal.com/blog" + ]; + #; + "http://someone.livejournal.com/blog"; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "http://someone.livejournal.com" + ]; + [ + "http://someone.livejournal.com" + ]; + [ + "someone.livejournal.com/blog" + ]; + [ + "/blog" + ]; + [ + "/blog" + ]; + #; + [ + "80" + ]; + #; + [ + "com" + ]; + [ + "someone.livejournal.com" + ]; + "3"; + [ + "http://someone.livejournal.com/blog" + ] + ]; + [ + "http://bbc.co.uk/"; + [ + #; + [ + "bbc.co.uk" + ]; + #; + #; + [ + "/" + ]; + #; + #; + [ + "http" + ]; + # + ]; + "bbc.co.uk"; + "co.uk"; + "uk"; + [ + "http://bbc.co.uk/" + ]; + [ + "http://bbc.co.uk/" + ]; + [ + "http://bbc.co.uk/" + ]; + #; + "http://bbc.co.uk/"; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "http://bbc.co.uk" + ]; + [ + "http://bbc.co.uk" + ]; + [ + "bbc.co.uk/" + ]; + [ + "/" + ]; + [ + "/" + ]; + #; + [ + "80" + ]; + #; + [ + "uk" + ]; + [ + "bbc.co.uk" + ]; + "3"; + [ + "http://bbc.co.uk/" + ] + ]; + [ + "https://www.yandex.com.tr/search"; + [ + #; + [ + "www.yandex.com.tr" + ]; + #; + #; + [ + "/search" + ]; + #; + #; + [ + "https" + ]; + # + ]; + "yandex.com.tr"; + "com.tr"; + "tr"; + [ + "https://www.yandex.com.tr/search" + ]; + [ + "https://www.yandex.com.tr/search" + ]; + [ + "https://www.yandex.com.tr/search" + ]; + #; + "https://www.yandex.com.tr/search"; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + [ + "www.yandex.com.tr" + ]; + [ + "www.yandex.com.tr" + ]; + [ + "https://www.yandex.com.tr" + ]; + [ + "https://www.yandex.com.tr" + ]; + [ + "www.yandex.com.tr/search" + ]; + [ + "/search" + ]; + [ + "/search" + ]; + #; + [ + "443" + ]; + #; + [ + "tr" + ]; + [ + "yandex.com.tr" + ]; + "4"; + [ + "https://www.yandex.com.tr/search" + ] + ]; + [ + "https://www2.yandex.com.tr/search"; + [ + #; + [ + "www2.yandex.com.tr" + ]; + #; + #; + [ + "/search" + ]; + #; + #; + [ + "https" + ]; + # + ]; + "yandex.com.tr"; + "com.tr"; + "tr"; + [ + "https://www2.yandex.com.tr/search" + ]; + [ + "https://www2.yandex.com.tr/search" + ]; + [ + "https://www2.yandex.com.tr/search" + ]; + #; + "https://www2.yandex.com.tr/search"; + [ + "www2.yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + [ + "www2.yandex.com.tr" + ]; + [ + "www2.yandex.com.tr" + ]; + [ + "https://www2.yandex.com.tr" + ]; + [ + "https://www2.yandex.com.tr" + ]; + [ + "www2.yandex.com.tr/search" + ]; + [ + "/search" + ]; + [ + "/search" + ]; + #; + [ + "443" + ]; + #; + [ + "tr" + ]; + [ + "yandex.com.tr" + ]; + "4"; + [ + "https://www2.yandex.com.tr/search" + ] + ]; + [ + "lenta.ru"; + [ + #; + #; + [ + "ParsedBadFormat" + ]; + #; + #; + #; + #; + #; + # + ]; + "lenta.ru"; + "lenta.ru"; + "ru"; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + #; + "lenta.ru"; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "lenta.ru" + ]; + [ + "/" + ]; + [ + "/" + ]; + #; + #; + #; + [ + "ru" + ]; + #; + "2"; + # + ]; + [ + "bbc.co.uk/news"; + [ + #; + #; + [ + "ParsedBadFormat" + ]; + #; + #; + #; + #; + #; + # + ]; + "bbc.co.uk"; + "co.uk"; + "uk"; + [ + "bbc.co.uk/news" + ]; + [ + "bbc.co.uk/news" + ]; + [ + "bbc.co.uk/news" + ]; + #; + "bbc.co.uk/news"; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk" + ]; + [ + "bbc.co.uk/news" + ]; + [ + "/news" + ]; + [ + "/news" + ]; + #; + #; + #; + [ + "uk" + ]; + [ + "bbc.co.uk" + ]; + "3"; + # + ]; + [ + "yandex.com.tr/maps?foo="; + [ + #; + #; + [ + "ParsedBadFormat" + ]; + #; + #; + #; + #; + #; + # + ]; + "yandex.com.tr"; + "com.tr"; + "tr"; + [ + "yandex.com.tr/maps?foo=" + ]; + [ + "yandex.com.tr/maps?foo=" + ]; + [ + "yandex.com.tr/maps?foo=" + ]; + [ + "" + ]; + "yandex.com.tr/maps"; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr" + ]; + [ + "yandex.com.tr/maps?foo=" + ]; + [ + "/maps?foo=" + ]; + [ + "/maps" + ]; + #; + #; + #; + [ + "tr" + ]; + [ + "yandex.com.tr" + ]; + "3"; + # + ]; + [ + "someone.livejournal.com?foo=bar#top"; + [ + #; + #; + [ + "ParsedBadFormat" + ]; + #; + #; + #; + #; + #; + # + ]; + "livejournal.com"; + "livejournal.com"; + "com"; + [ + "someone.livejournal.com?foo=bar#top" + ]; + [ + "someone.livejournal.com?foo=bar#top" + ]; + [ + "someone.livejournal.com?foo=bar#top" + ]; + [ + "bar" + ]; + "someone.livejournal.com"; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com?foo=bar#top" + ]; + [ + "/?foo=bar#top" + ]; + [ + "/" + ]; + [ + "top" + ]; + #; + #; + [ + "com" + ]; + [ + "someone.livejournal.com" + ]; + "3"; + # + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k#l.m.n"; + [ + #; + #; + [ + "ParsedBadFormat" + ]; + #; + #; + #; + #; + #; + # + ]; + "j.k"; + "j.k"; + "k"; + [ + "a.b.c.d.e.f.g.h.i.j.k#l.m.n" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k#l.m.n" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k#l.m.n" + ]; + #; + "a.b.c.d.e.f.g.h.i.j.k"; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k" + ]; + [ + "a.b.c.d.e.f.g.h.i.j.k#l.m.n" + ]; + [ + "/#l.m.n" + ]; + [ + "/" + ]; + [ + "l.m.n" + ]; + #; + #; + [ + "k" + ]; + [ + "i.j.k" + ]; + "11"; + # + ]; + [ + "foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4"; + [ + #; + #; + [ + "ParsedBadFormat" + ]; + #; + #; + #; + #; + #; + # + ]; + "tl.md"; + "foo.tl.md"; + "md"; + [ + "foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4" + ]; + [ + "foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4" + ]; + [ + "foo.tl.md/ \xD1\x8E\xD0\xBD\xD0\xB8\xD0\xBA\xD0\xBE\xD0\xB4" + ]; + #; + "foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4"; + [ + "foo.tl.md" + ]; + [ + "foo.tl.md" + ]; + [ + "foo.tl.md" + ]; + [ + "foo.tl.md" + ]; + [ + "foo.tl.md" + ]; + [ + "foo.tl.md" + ]; + [ + "foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4" + ]; + [ + "/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4" + ]; + [ + "/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4" + ]; + #; + #; + #; + [ + "md" + ]; + [ + "foo.tl.md" + ]; + "3"; + # + ]; + [ + "xn--d1acpjx3f.xn--p1ai"; + [ + #; + #; + [ + "ParsedBadFormat" + ]; + #; + #; + #; + #; + #; + # + ]; + "xn--d1acpjx3f.xn--p1ai"; + "xn--d1acpjx3f.xn--p1ai"; + "xn--p1ai"; + [ + "\xD1\x8F\xD0\xBD\xD0\xB4\xD0\xB5\xD0\xBA\xD1\x81.\xD1\x80\xD1\x84" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + #; + "xn--d1acpjx3f.xn--p1ai"; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "xn--d1acpjx3f.xn--p1ai" + ]; + [ + "/" + ]; + [ + "/" + ]; + #; + #; + #; + [ + "xn--p1ai" + ]; + #; + "2"; + # + ]; + [ + "https://ya.ru:80/search/?text=test&lr=213#top"; + [ + [ + "top" + ]; + [ + "ya.ru" + ]; + #; + #; + [ + "/search/" + ]; + [ + "80" + ]; + [ + "text=test&lr=213" + ]; + [ + "https" + ]; + # + ]; + "ya.ru"; + "ya.ru"; + "ru"; + [ + "https://ya.ru:80/search/?text=test&lr=213#top" + ]; + [ + "https://ya.ru:80/search/?text=test&lr=213#top" + ]; + [ + "https://ya.ru:80/search/?text=test&lr=213#top" + ]; + #; + "https://ya.ru:80/search/"; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "ya.ru:80" + ]; + [ + "https://ya.ru" + ]; + [ + "https://ya.ru:80" + ]; + [ + "ya.ru:80/search/?text=test&lr=213#top" + ]; + [ + "/search/?text=test&lr=213#top" + ]; + [ + "/search/" + ]; + [ + "top" + ]; + [ + "80" + ]; + #; + [ + "ru" + ]; + #; + "2"; + [ + "https://ya.ru:80/search/?text=test&lr=213" + ] + ]; + [ + "https://ya.ru/search/?text=%2B"; + [ + #; + [ + "ya.ru" + ]; + #; + #; + [ + "/search/" + ]; + #; + [ + "text=%2B" + ]; + [ + "https" + ]; + # + ]; + "ya.ru"; + "ya.ru"; + "ru"; + [ + "https://ya.ru/search/?text=%2B" + ]; + [ + "https://ya.ru/search/?text=%2B" + ]; + [ + "https://ya.ru/search/?text=+" + ]; + #; + "https://ya.ru/search/"; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "https://ya.ru" + ]; + [ + "https://ya.ru" + ]; + [ + "ya.ru/search/?text=%2B" + ]; + [ + "/search/?text=%2B" + ]; + [ + "/search/" + ]; + #; + [ + "443" + ]; + #; + [ + "ru" + ]; + #; + "2"; + [ + "https://ya.ru/search/?text=%2B" + ] + ]; + [ + "goal://market.yandex.ru/product-page_scroll-box_product_visible"; + [ + #; + #; + [ + "ParsedBadScheme" + ]; + #; + #; + #; + #; + #; + # + ]; + "yandex.ru"; + "yandex.ru"; + "ru"; + [ + "goal://market.yandex.ru/product-page_scroll-box_product_visible" + ]; + [ + "goal://market.yandex.ru/product-page_scroll-box_product_visible" + ]; + [ + "goal://market.yandex.ru/product-page_scroll-box_product_visible" + ]; + #; + "goal://market.yandex.ru/product-page_scroll-box_product_visible"; + [ + "market.yandex.ru" + ]; + [ + "market.yandex.ru" + ]; + [ + "market.yandex.ru" + ]; + [ + "market.yandex.ru" + ]; + [ + "goal://market.yandex.ru" + ]; + [ + "goal://market.yandex.ru" + ]; + [ + "market.yandex.ru/product-page_scroll-box_product_visible" + ]; + [ + "/product-page_scroll-box_product_visible" + ]; + [ + "/product-page_scroll-box_product_visible" + ]; + #; + #; + #; + [ + "ru" + ]; + [ + "market.yandex.ru" + ]; + "3"; + # + ]; + [ + "Http://ya.ru"; + [ + #; + [ + "ya.ru" + ]; + #; + #; + [ + "/" + ]; + #; + #; + [ + "http" + ]; + # + ]; + "ya.ru"; + "ya.ru"; + "ru"; + [ + "Http://ya.ru" + ]; + [ + "Http://ya.ru" + ]; + [ + "Http://ya.ru" + ]; + #; + "Http://ya.ru"; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "Http://ya.ru" + ]; + [ + "Http://ya.ru" + ]; + [ + "ya.ru" + ]; + [ + "/" + ]; + [ + "/" + ]; + #; + [ + "80" + ]; + #; + [ + "ru" + ]; + #; + "2"; + [ + "http://ya.ru/" + ] + ]; + [ + "ftp://someone.livejournal.com:80/blog"; + [ + #; + [ + "someone.livejournal.com" + ]; + #; + #; + [ + "/blog" + ]; + [ + "80" + ]; + #; + [ + "ftp" + ]; + # + ]; + "livejournal.com"; + "livejournal.com"; + "com"; + [ + "ftp://someone.livejournal.com:80/blog" + ]; + [ + "ftp://someone.livejournal.com:80/blog" + ]; + [ + "ftp://someone.livejournal.com:80/blog" + ]; + #; + "ftp://someone.livejournal.com:80/blog"; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com" + ]; + [ + "someone.livejournal.com:80" + ]; + [ + "ftp://someone.livejournal.com" + ]; + [ + "ftp://someone.livejournal.com:80" + ]; + [ + "someone.livejournal.com:80/blog" + ]; + [ + "/blog" + ]; + [ + "/blog" + ]; + #; + [ + "80" + ]; + #; + [ + "com" + ]; + [ + "someone.livejournal.com" + ]; + "3"; + [ + "ftp://someone.livejournal.com:80/blog" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/BlockPunycode.in b/ydb/library/yql/udfs/common/url_base/test/cases/BlockPunycode.in new file mode 100644 index 0000000000..50a35c6876 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/BlockPunycode.in @@ -0,0 +1,4 @@ +{"key"="";"subkey"="";"value"="abæcdöef"}; +{"key"="";"subkey"="";"value"="яндекс.ру"}; +{"key"="";"subkey"="";"value"="yandex.ru"}; +{"key"="";"subkey"="";"value"="xn--d1acpjx3f.xn--p1ag"}; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/BlockPunycode.sql b/ydb/library/yql/udfs/common/url_base/test/cases/BlockPunycode.sql new file mode 100644 index 0000000000..3dcee5ca48 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/BlockPunycode.sql @@ -0,0 +1,10 @@ +/* syntax version 1 */ +PRAGMA UseBlocks; +SELECT + value, + Url::PunycodeToHostName(value) AS hostname_utf, + Url::HostNameToPunycode(Url::PunycodeToHostName(value)) as punycode_hostname, + Url::ForcePunycodeToHostName(value) AS hostname_utf_forced, + Url::ForceHostNameToPunycode(Url::ForcePunycodeToHostName(value)) as punycode_hostname_forced, + Url::CanBePunycodeHostName(value) as can_be_punycode +FROM Input; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/BlockTld.in b/ydb/library/yql/udfs/common/url_base/test/cases/BlockTld.in new file mode 100644 index 0000000000..d98c9c2522 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/BlockTld.in @@ -0,0 +1,4 @@ +{"key"="";"subkey"="";"value"="ru"}; +{"key"="";"subkey"="";"value"="123"}; +{"key"="";"subkey"="";"value"="yandex"}; +{"key"="";"subkey"="";"value"="sdfsdfsdf"}; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/BlockTld.sql b/ydb/library/yql/udfs/common/url_base/test/cases/BlockTld.sql new file mode 100644 index 0000000000..7af5d71b1c --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/BlockTld.sql @@ -0,0 +1,7 @@ +/* syntax version 1 */ +PRAGMA UseBlocks; +SELECT + Url::GetTLD(value) AS tld, + Url::IsKnownTLD(value) AS known, + Url::IsWellKnownTLD(value) AS well_known +FROM Input; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/BlockUrl.in b/ydb/library/yql/udfs/common/url_base/test/cases/BlockUrl.in new file mode 100644 index 0000000000..94f998d48f --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/BlockUrl.in @@ -0,0 +1,18 @@ +{"key"="";"subkey"="";"value"="http://"}; +{"key"="";"subkey"="";"value"="http://lenta.ru"}; +{"key"="";"subkey"="";"value"="http://someone.livejournal.com/blog"}; +{"key"="";"subkey"="";"value"="http://bbc.co.uk/"}; +{"key"="";"subkey"="";"value"="https://www.yandex.com.tr/search"}; +{"key"="";"subkey"="";"value"="https://www2.yandex.com.tr/search"}; +{"key"="";"subkey"="";"value"="lenta.ru"}; +{"key"="";"subkey"="";"value"="bbc.co.uk/news"}; +{"key"="";"subkey"="";"value"="yandex.com.tr/maps?foo="}; +{"key"="";"subkey"="";"value"="someone.livejournal.com?foo=bar#top"}; +{"key"="";"subkey"="";"value"="a.b.c.d.e.f.g.h.i.j.k#l.m.n"}; +{"key"="";"subkey"="";"value"="foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4"}; +{"key"="";"subkey"="";"value"="xn--d1acpjx3f.xn--p1ai"}; +{"key"="";"subkey"="";"value"="https://ya.ru:80/search/?text=test&lr=213#top"}; +{"key"="";"subkey"="";"value"="https://ya.ru/search/?text=%2B"}; +{"key"="";"subkey"="";"value"="goal://market.yandex.ru/product-page_scroll-box_product_visible"}; +{"key"="";"subkey"="";"value"="Http://ya.ru"}; +{"key"="";"subkey"="";"value"="ftp://someone.livejournal.com:80/blog"}; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/BlockUrl.sql b/ydb/library/yql/udfs/common/url_base/test/cases/BlockUrl.sql new file mode 100644 index 0000000000..9b1726c1da --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/BlockUrl.sql @@ -0,0 +1,27 @@ +/* syntax version 1 */ +PRAGMA UseBlocks; +SELECT + value, + Url::Encode(value) AS encode, + Url::Decode(value) AS decode, + Url::GetCGIParam(value, "foo") AS param, + Url::CutQueryStringAndFragment(value) AS cut_qs_and_fragment, + Url::GetHost(value) as host, + Url::CutWWW(Url::GetHost(value)) AS cut_www, + Url::CutWWW2(Url::GetHost(value)) AS cut_www2, + Url::GetTLD(value) AS tld, + Url::PunycodeToHostName(value) AS punycode, + Url::CutScheme(value) AS cut_scheme, + Url::GetHostPort(value) as host_port, + Url::GetSchemeHost(value) AS scheme_host, + Url::GetSchemeHostPort(value) AS scheme_host_port, + Url::GetTail(value) AS tail, + Url::GetPath(value) AS path, + Url::GetFragment(value) AS fragment, + Url::GetPort(value) AS port, + Url::GetDomain(value, 0) as domain0, + Url::GetDomain(value, 1) as domain1, + Url::GetDomain(value, 3) as domain3, + Url::GetDomainLevel(value) as domain_level, + Url::Normalize(value) as norm +FROM Input; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/Punycode.in b/ydb/library/yql/udfs/common/url_base/test/cases/Punycode.in new file mode 100644 index 0000000000..50a35c6876 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/Punycode.in @@ -0,0 +1,4 @@ +{"key"="";"subkey"="";"value"="abæcdöef"}; +{"key"="";"subkey"="";"value"="яндекс.ру"}; +{"key"="";"subkey"="";"value"="yandex.ru"}; +{"key"="";"subkey"="";"value"="xn--d1acpjx3f.xn--p1ag"}; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/Punycode.sql b/ydb/library/yql/udfs/common/url_base/test/cases/Punycode.sql new file mode 100644 index 0000000000..e5dad2e303 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/Punycode.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +SELECT + value, + Url::PunycodeToHostName(value) AS hostname_utf, + Url::HostNameToPunycode(Url::PunycodeToHostName(value)) as punycode_hostname, + Url::ForcePunycodeToHostName(value) AS hostname_utf_forced, + Url::ForceHostNameToPunycode(Url::ForcePunycodeToHostName(value)) as punycode_hostname_forced, + Url::CanBePunycodeHostName(value) as can_be_punycode +FROM Input; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/Tld.in b/ydb/library/yql/udfs/common/url_base/test/cases/Tld.in new file mode 100644 index 0000000000..d98c9c2522 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/Tld.in @@ -0,0 +1,4 @@ +{"key"="";"subkey"="";"value"="ru"}; +{"key"="";"subkey"="";"value"="123"}; +{"key"="";"subkey"="";"value"="yandex"}; +{"key"="";"subkey"="";"value"="sdfsdfsdf"}; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/Tld.sql b/ydb/library/yql/udfs/common/url_base/test/cases/Tld.sql new file mode 100644 index 0000000000..a26600cf63 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/Tld.sql @@ -0,0 +1,6 @@ +/* syntax version 1 */ +SELECT + Url::GetTLD(value) AS tld, + Url::IsKnownTLD(value) AS known, + Url::IsWellKnownTLD(value) AS well_known +FROM Input; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/Url.in b/ydb/library/yql/udfs/common/url_base/test/cases/Url.in new file mode 100644 index 0000000000..94f998d48f --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/Url.in @@ -0,0 +1,18 @@ +{"key"="";"subkey"="";"value"="http://"}; +{"key"="";"subkey"="";"value"="http://lenta.ru"}; +{"key"="";"subkey"="";"value"="http://someone.livejournal.com/blog"}; +{"key"="";"subkey"="";"value"="http://bbc.co.uk/"}; +{"key"="";"subkey"="";"value"="https://www.yandex.com.tr/search"}; +{"key"="";"subkey"="";"value"="https://www2.yandex.com.tr/search"}; +{"key"="";"subkey"="";"value"="lenta.ru"}; +{"key"="";"subkey"="";"value"="bbc.co.uk/news"}; +{"key"="";"subkey"="";"value"="yandex.com.tr/maps?foo="}; +{"key"="";"subkey"="";"value"="someone.livejournal.com?foo=bar#top"}; +{"key"="";"subkey"="";"value"="a.b.c.d.e.f.g.h.i.j.k#l.m.n"}; +{"key"="";"subkey"="";"value"="foo.tl.md/+%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4"}; +{"key"="";"subkey"="";"value"="xn--d1acpjx3f.xn--p1ai"}; +{"key"="";"subkey"="";"value"="https://ya.ru:80/search/?text=test&lr=213#top"}; +{"key"="";"subkey"="";"value"="https://ya.ru/search/?text=%2B"}; +{"key"="";"subkey"="";"value"="goal://market.yandex.ru/product-page_scroll-box_product_visible"}; +{"key"="";"subkey"="";"value"="Http://ya.ru"}; +{"key"="";"subkey"="";"value"="ftp://someone.livejournal.com:80/blog"}; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/Url.sql b/ydb/library/yql/udfs/common/url_base/test/cases/Url.sql new file mode 100644 index 0000000000..ed50d29ae2 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/Url.sql @@ -0,0 +1,29 @@ +/* syntax version 1 */ +SELECT + value, + Url::Parse(value) AS parse, + Url::GetSignificantDomain(value) AS significant_domain, + Url::GetSignificantDomain(value, AsList("tl")) AS tl_is_significant, + Url::GetTLD(value) AS tld, + Url::PunycodeToHostName(value) AS punycode, + Url::Encode(value) AS encode, + Url::Decode(value) AS decode, + Url::GetCGIParam(value, "foo") AS param, + Url::CutQueryStringAndFragment(value) AS cut_qs_and_fragment, + Url::CutWWW(Url::GetHost(value)) AS cut_www, + Url::CutWWW2(Url::GetHost(value)) AS cut_www2, + Url::GetHost(value) as host, + Url::GetHostPort(value) as host_port, + Url::GetSchemeHost(value) AS scheme_host, + Url::GetSchemeHostPort(value) AS scheme_host_port, + Url::CutScheme(value) AS cut_scheme, + Url::GetTail(value) AS tail, + Url::GetPath(value) AS path, + Url::GetFragment(value) AS fragment, + Url::GetPort(value) AS port, + Url::GetDomain(value, 0) as domain0, + Url::GetDomain(value, 1) as domain1, + Url::GetDomain(value, 3) as domain3, + Url::GetDomainLevel(value) as domain_level, + Url::Normalize(value) as norm +FROM Input; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/UrlQuery.in b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQuery.in new file mode 100644 index 0000000000..d9f5d84527 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQuery.in @@ -0,0 +1,20 @@ +{"key"="";"subkey"="";"value"="glfilter=7893318%3A7949252&glfilter=5099461%3A12103637&glfilter=8292645%3A1&hid=90404&onstock=0&local-offers-first=0"}; +{"key"="";"subkey"="";"value"=""}; +{"key"="";"subkey"="";"value"="&"}; +{"key"="";"subkey"="";"value"="&&"}; +{"key"="";"subkey"="";"value"="="}; +{"key"="";"subkey"="";"value"="&="}; +{"key"="";"subkey"="";"value"="=&"}; +{"key"="";"subkey"="";"value"="&=="}; +{"key"="";"subkey"="";"value"="&==&"}; +{"key"="";"subkey"="";"value"="==&"}; +{"key"="";"subkey"="";"value"="=&="}; +{"key"="";"subkey"="";"value"="=a"}; +{"key"="";"subkey"="";"value"="a"}; +{"key"="";"subkey"="";"value"="a="}; +{"key"="";"subkey"="";"value"="&a=b"}; +{"key"="";"subkey"="";"value"="a=a+b&b=b+c"}; +{"key"="";"subkey"="";"value"="a=a+b=&b=b+=c"}; +{"key"="";"subkey"="";"value"="a=1&a=2"}; +{"key"="";"subkey"="";"value"=";a=b"}; +{"key"="";"subkey"="";"value"="a=a+b;b=b+c"}; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/UrlQuery.sql b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQuery.sql new file mode 100644 index 0000000000..4179fd0a0c --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQuery.sql @@ -0,0 +1,15 @@ +SELECT + value, + Url::QueryStringToList(value, false AS Strict) AS base_list, + Url::BuildQueryString(Url::QueryStringToList(value, false AS Strict)) AS base_list_build, + Url::QueryStringToList(value, true AS KeepBlankValues, false AS Strict) AS keep_blank_list, + Url::BuildQueryString(Url::QueryStringToList(value, true AS KeepBlankValues, false AS Strict)) AS keep_blank_list_build, + Url::QueryStringToList(value, ";" AS Separator, false AS Strict) AS sep_semicol_list, + Url::BuildQueryString(Url::QueryStringToList(value, ";" AS Separator, false AS Strict), ";" AS Separator) AS sep_semicol_list_build, + Url::QueryStringToDict(value, false AS Strict) AS base_dict, + Url::BuildQueryString(Url::QueryStringToDict(value, false AS Strict)) AS base_dict_build, + Url::QueryStringToDict(value, true AS KeepBlankValues, false AS Strict) AS keep_blank_dict, + Url::BuildQueryString(Url::QueryStringToDict(value, true AS KeepBlankValues, false AS Strict)) AS keep_blank_dict_build, + Url::QueryStringToDict(value, ";" AS Separator, false AS Strict) AS sep_semicol_dict, + Url::BuildQueryString(Url::QueryStringToDict(value, ";" AS Separator, false AS Strict), ";" AS Separator) AS sep_semicol_dict_build, +FROM Input; diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryMaxFieldsErr.cfg b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryMaxFieldsErr.cfg new file mode 100644 index 0000000000..5dae597903 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryMaxFieldsErr.cfg @@ -0,0 +1 @@ +xfail diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryMaxFieldsErr.sql b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryMaxFieldsErr.sql new file mode 100644 index 0000000000..5cb0cbfc9d --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryMaxFieldsErr.sql @@ -0,0 +1,2 @@ +SELECT + Url::QueryStringToList("glfilter=78318%3A79492&glfilter=561%3A121037&hid=904", 2 AS MaxFields) diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryStrictErr.cfg b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryStrictErr.cfg new file mode 100644 index 0000000000..5dae597903 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryStrictErr.cfg @@ -0,0 +1 @@ +xfail diff --git a/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryStrictErr.sql b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryStrictErr.sql new file mode 100644 index 0000000000..b036ed5451 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/cases/UrlQueryStrictErr.sql @@ -0,0 +1,2 @@ +SELECT + Url::QueryStringToList("glfilter=78318%3A79492&mistaken&glfilter=1&hid=904") diff --git a/ydb/library/yql/udfs/common/url_base/test/ya.make b/ydb/library/yql/udfs/common/url_base/test/ya.make new file mode 100644 index 0000000000..225accf577 --- /dev/null +++ b/ydb/library/yql/udfs/common/url_base/test/ya.make @@ -0,0 +1,17 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/url_base) + +TIMEOUT(300) + +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +DATA( + sbr://451427803 # Robots.in +) + +END() diff --git a/ydb/library/yql/udfs/common/url_base/ya.make b/ydb/library/yql/udfs/common/url_base/ya.make index 31b529e968..0dded35dfc 100644 --- a/ydb/library/yql/udfs/common/url_base/ya.make +++ b/ydb/library/yql/udfs/common/url_base/ya.make @@ -16,3 +16,8 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +) + diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/result.json b/ydb/library/yql/udfs/common/yson2/test/canondata/result.json new file mode 100644 index 0000000000..f4c95fca9e --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/result.json @@ -0,0 +1,167 @@ +{ + "test.test[AccessJson]": [ + { + "uri": "file://test.test_AccessJson_/results.txt" + } + ], + "test.test[Access]": [ + { + "uri": "file://test.test_Access_/results.txt" + } + ], + "test.test[Attrs]": [ + { + "uri": "file://test.test_Attrs_/results.txt" + } + ], + "test.test[AutoConvertTo]": [ + { + "uri": "file://test.test_AutoConvertTo_/results.txt" + } + ], + "test.test[Contains]": [ + { + "uri": "file://test.test_Contains_/results.txt" + } + ], + "test.test[ConvertTo]": [ + { + "uri": "file://test.test_ConvertTo_/results.txt" + } + ], + "test.test[Dicts]": [ + { + "uri": "file://test.test_Dicts_/results.txt" + } + ], + "test.test[EmptyDicts]": [ + { + "uri": "file://test.test_EmptyDicts_/results.txt" + } + ], + "test.test[EmptyLists]": [ + { + "uri": "file://test.test_EmptyLists_/results.txt" + } + ], + "test.test[Equals]": [ + { + "uri": "file://test.test_Equals_/results.txt" + } + ], + "test.test[From]": [ + { + "uri": "file://test.test_From_/results.txt" + } + ], + "test.test[GenericConvertToEmptyStruct]": [ + { + "uri": "file://test.test_GenericConvertToEmptyStruct_/results.txt" + } + ], + "test.test[GenericConvertToWithAutoConvert]": [ + { + "uri": "file://test.test_GenericConvertToWithAutoConvert_/results.txt" + } + ], + "test.test[GenericConvertToWithNoStrict]": [ + { + "uri": "file://test.test_GenericConvertToWithNoStrict_/results.txt" + } + ], + "test.test[GenericConvertTo]": [ + { + "uri": "file://test.test_GenericConvertTo_/results.txt" + } + ], + "test.test[GenericFrom]": [ + { + "uri": "file://test.test_GenericFrom_/results.txt" + } + ], + "test.test[GetHash]": [ + { + "uri": "file://test.test_GetHash_/results.txt" + } + ], + "test.test[Get]": [ + { + "uri": "file://test.test_Get_/results.txt" + } + ], + "test.test[GoodForYsonBadForJson]": [ + { + "uri": "file://test.test_GoodForYsonBadForJson_/results.txt" + } + ], + "test.test[ImplicitFromRes]": [ + { + "uri": "file://test.test_ImplicitFromRes_/results.txt" + } + ], + "test.test[IsType]": [ + { + "uri": "file://test.test_IsType_/results.txt" + } + ], + "test.test[JsonSerializeSkipMapEntity]": [ + { + "uri": "file://test.test_JsonSerializeSkipMapEntity_/results.txt" + } + ], + "test.test[JsonWithUtf8]": [ + { + "uri": "file://test.test_JsonWithUtf8_/results.txt" + } + ], + "test.test[Lists]": [ + { + "uri": "file://test.test_Lists_/results.txt" + } + ], + "test.test[Lookup]": [ + { + "uri": "file://test.test_Lookup_/results.txt" + } + ], + "test.test[NegativeArrayIndex]": [ + { + "uri": "file://test.test_NegativeArrayIndex_/results.txt" + } + ], + "test.test[ParseString]": [ + { + "uri": "file://test.test_ParseString_/results.txt" + } + ], + "test.test[Scalars]": [ + { + "uri": "file://test.test_Scalars_/results.txt" + } + ], + "test.test[SerializeDouble]": [ + { + "uri": "file://test.test_SerializeDouble_/results.txt" + } + ], + "test.test[Serialize]": [ + { + "uri": "file://test.test_Serialize_/results.txt" + } + ], + "test.test[WeakYsonRest]": [ + { + "uri": "file://test.test_WeakYsonRest_/results.txt" + } + ], + "test.test[WithAttrs]": [ + { + "uri": "file://test.test_WithAttrs_/results.txt" + } + ], + "test.test[YPath]": [ + { + "uri": "file://test.test_YPath_/results.txt" + } + ] +} diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_AccessJson_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_AccessJson_/results.txt new file mode 100644 index 0000000000..b3f2875518 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_AccessJson_/results.txt @@ -0,0 +1,126 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "\xD0\xBF\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Access_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Access_/results.txt new file mode 100644 index 0000000000..c9b9064518 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Access_/results.txt @@ -0,0 +1,33 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "text"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "hello world" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Attrs_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Attrs_/results.txt new file mode 100644 index 0000000000..72c297fab4 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Attrs_/results.txt @@ -0,0 +1,568 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column9"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column10"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column11"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column12"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column13"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column14"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column15"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column16"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column17"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column18"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column19"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column20"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column21"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column22"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column23"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column24"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column25"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column26"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column27"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column28"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column29"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column30"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column31"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column32"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column33"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column34"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column35"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ]; + [ + "column36"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column37"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column38"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ]; + [ + "column39"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column40"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ]; + [ + "column41"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column42"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + [ + %true + ]; + #; + #; + #; + #; + #; + #; + #; + [ + "1" + ]; + [ + "2" + ]; + #; + #; + #; + #; + #; + [ + "1" + ]; + [ + "2" + ]; + #; + #; + #; + #; + #; + [ + "1" + ]; + [ + "2" + ]; + [ + "3" + ]; + #; + #; + #; + #; + #; + #; + #; + [ + "foo" + ]; + [ + "very loooooooooooooooooong string" + ]; + [ + [ + "1" + ]; + [ + "2" + ]; + [ + "3" + ] + ]; + [ + "b"; + "c" + ]; + [ + "a"; + "b" + ]; + [ + [ + "1" + ]; + [ + "2" + ] + ]; + [ + "a"; + "b" + ]; + [ + [ + "1" + ]; + [ + "2" + ] + ]; + [ + "a"; + "b" + ]; + [ + [ + "1" + ]; + [ + "2" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_AutoConvertTo_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_AutoConvertTo_/results.txt new file mode 100644 index 0000000000..034a71cae2 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_AutoConvertTo_/results.txt @@ -0,0 +1,556 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "zero_to_bool"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "bool_to_bool"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "int_to_bool"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "uint_to_bool"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "negative_to_bool"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "double_to_bool"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "string_to_bool"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "zero_to_int"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "bool_to_int"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "int_to_int"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "uint_to_int"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "negative_to_int"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "double_to_int"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "string_to_int"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "zero_to_uint"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "bool_to_uint"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "int_to_uint"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "uint_to_uint"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "negative_to_uint"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "double_to_uint"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "string_to_uint"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "zero_to_double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "bool_to_double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "int_to_double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "uint_to_double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "negative_to_double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "double_to_double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "string_to_double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "zero_to_string"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "bool_to_string"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "int_to_string"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "uint_to_string"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "negative_to_string"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "double_to_string"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "string_to_string"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "struct_stub"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "x"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "y"; + [ + "DataType"; + "Int64" + ] + ]; + [ + "z"; + [ + "ListType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ] + ]; + [ + "tuple_stub"; + [ + "OptionalType"; + [ + "TupleType"; + [ + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ]; + [ + "DataType"; + "Int64" + ]; + [ + "ListType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + %false + ]; + [ + %true + ]; + [ + %true + ]; + [ + %true + ]; + [ + %true + ]; + [ + %true + ]; + [ + %true + ]; + [ + "0" + ]; + [ + "1" + ]; + [ + "123" + ]; + [ + "123" + ]; + [ + "-123" + ]; + [ + "123" + ]; + [ + "123" + ]; + [ + "0" + ]; + [ + "1" + ]; + [ + "123" + ]; + [ + "123" + ]; + [ + "18446744073709551493" + ]; + [ + "123" + ]; + [ + "123" + ]; + [ + "0" + ]; + [ + "1" + ]; + [ + "123" + ]; + [ + "123" + ]; + [ + "-123" + ]; + [ + "123.456" + ]; + [ + "123" + ]; + [ + "0" + ]; + [ + "true" + ]; + [ + "123" + ]; + [ + "123" + ]; + [ + "-123" + ]; + [ + "123.456" + ]; + [ + "123" + ]; + [ + [ + #; + "0"; + [] + ] + ]; + [ + [ + #; + "0"; + [] + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Contains_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Contains_/results.txt new file mode 100644 index 0000000000..8d72c6dad2 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Contains_/results.txt @@ -0,0 +1,122 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + %true + ]; + [ + %false + ]; + [ + %false + ]; + [ + %true + ]; + [ + %false + ]; + [ + %true + ]; + [ + %false + ]; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_ConvertTo_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_ConvertTo_/results.txt new file mode 100644 index 0000000000..4061e6a4f8 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_ConvertTo_/results.txt @@ -0,0 +1,245 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "bool"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "int"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "uint"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "string"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "incorrect"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "number_list"; + [ + "ListType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "string_list"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "yson_list"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ]; + [ + "incorrect_list"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "number_dict"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "string_dict"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "yson_dict"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "incorrect_dict"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + %true + ]; + [ + "123" + ]; + [ + "123" + ]; + [ + "123" + ]; + [ + "123" + ]; + #; + [ + "1"; + "2"; + "3" + ]; + [ + "a"; + "b"; + "c" + ]; + [ + [ + "123" + ]; + [ + "{\"a\":1,\"b\":2,\"c\":3}" + ]; + [ + "{\"a\":4,\"b\":5,\"c\":6}" + ] + ]; + []; + [ + [ + "a"; + "1" + ]; + [ + "b"; + "2" + ]; + [ + "c"; + "3" + ] + ]; + [ + [ + "a"; + "aaa" + ]; + [ + "b"; + "bbb" + ]; + [ + "c"; + "ccc" + ] + ]; + [ + "[\"ccc\",\"ddd\"]" + ]; + [] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Dicts_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Dicts_/results.txt new file mode 100644 index 0000000000..e4b9cb5435 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Dicts_/results.txt @@ -0,0 +1,178 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column2"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ]; + [ + "column4"; + [ + "ListType"; + [ + "TupleType"; + [ + [ + "DataType"; + "String" + ]; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ]; + [ + "column5"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column6"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column9"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column10"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %false; + "2"; + [ + "a"; + "b" + ]; + [ + [ + "1" + ]; + # + ]; + [ + [ + "a"; + [ + "1" + ] + ]; + [ + "b"; + # + ] + ]; + %true; + %false; + [ + "1" + ]; + #; + [ + "c"; + "d" + ]; + [ + [ + "3" + ]; + [ + "4" + ] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_EmptyDicts_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_EmptyDicts_/results.txt new file mode 100644 index 0000000000..34e7c5f783 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_EmptyDicts_/results.txt @@ -0,0 +1,103 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column2"; + [ + "ListType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column3"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ]; + [ + "column4"; + [ + "ListType"; + [ + "TupleType"; + [ + [ + "DataType"; + "String" + ]; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ]; + [ + "column5"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %false; + "0"; + []; + []; + []; + %false; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_EmptyLists_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_EmptyLists_/results.txt new file mode 100644 index 0000000000..7a8b8c82e5 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_EmptyLists_/results.txt @@ -0,0 +1,50 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column2"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %false; + "0"; + [] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Equals_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Equals_/results.txt new file mode 100644 index 0000000000..736f668ab4 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Equals_/results.txt @@ -0,0 +1,124 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "a1"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "a2"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "a3"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "b"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "c"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "d"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "e"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "f"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "g"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "h"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "i"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "attrs1"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "attrs2"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + %true; + %true; + %false; + %false; + %false; + %false; + %false; + %false; + %false; + %false; + %false; + %true + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_From_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_From_/results.txt new file mode 100644 index 0000000000..d1e62592cc --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_From_/results.txt @@ -0,0 +1,188 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column2"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column3"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column4"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column5"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column6"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column7"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column8"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column9"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column10"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column11"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column12"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column13"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column14"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column15"; + [ + "DataType"; + "Yson" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + %true; + %false; + { + "$type" = "boolean"; + "$value" = "true" + }; + #; + { + "$type" = "int64"; + "$value" = "1" + }; + #; + { + "$type" = "uint64"; + "$value" = "2" + }; + #; + { + "$type" = "double"; + "$value" = "3" + }; + #; + { + "$type" = "string"; + "$value" = "foo" + }; + { + "$type" = "string"; + "$value" = "fooooooooooooooooooooooooooooooooo" + }; + #; + [ + { + "$type" = "int64"; + "$value" = "1" + }; + { + "$type" = "int64"; + "$value" = "2" + }; + { + "$type" = "int64"; + "$value" = "3" + } + ]; + { + "a" = { + "$type" = "string"; + "$value" = "x" + }; + "b" = { + "$type" = "string"; + "$value" = "y" + } + } + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertToEmptyStruct_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertToEmptyStruct_/results.txt new file mode 100644 index 0000000000..1029a098e1 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertToEmptyStruct_/results.txt @@ -0,0 +1,34 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "list_of_empty_structs"; + [ + "ListType"; + [ + "StructType"; + [] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + []; + [] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertToWithAutoConvert_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertToWithAutoConvert_/results.txt new file mode 100644 index 0000000000..875f9a5aae --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertToWithAutoConvert_/results.txt @@ -0,0 +1,338 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "bool"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "int"; + [ + "DataType"; + "Int64" + ] + ]; + [ + "uint"; + [ + "DataType"; + "Uint8" + ] + ]; + [ + "optional_double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "empty_int"; + [ + "OptionalType"; + [ + "DataType"; + "Int32" + ] + ] + ]; + [ + "string"; + [ + "DataType"; + "String" + ] + ]; + [ + "utf8"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "int_list"; + [ + "ListType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "nested_list"; + [ + "ListType"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ]; + [ + "int_dict"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "tuple"; + [ + "TupleType"; + [ + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Int8" + ]; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ]; + [ + "ListType"; + [ + "DataType"; + "Int64" + ] + ]; + [ + "DataType"; + "Yson" + ]; + [ + "DataType"; + "Json" + ] + ] + ] + ]; + [ + "struct"; + [ + "StructType"; + [ + [ + "a"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "b"; + [ + "DataType"; + "Int8" + ] + ]; + [ + "c"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "d"; + [ + "ListType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "e"; + [ + "TupleType"; + [ + [ + "DataType"; + "Double" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "x"; + [ + "TupleType"; + [ + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ]; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ]; + [ + "y"; + [ + "OptionalType"; + [ + "DataType"; + "Int16" + ] + ] + ]; + [ + "z"; + [ + "ListType"; + [ + "DataType"; + "Int8" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "0"; + "123"; + [ + "1.23" + ]; + [ + "0" + ]; + "1.23"; + "0"; + [ + "1"; + "2"; + "3"; + "7"; + "8"; + "0" + ]; + [ + [ + [ + "1" + ]; + [ + "2" + ] + ]; + [ + [ + "3" + ]; + # + ]; + []; + [] + ]; + [ + [ + "bar"; + "2" + ]; + [ + "foo"; + "1" + ]; + [ + "xxx"; + "0" + ] + ]; + [ + %false; + "1"; + [ + "foo" + ]; + [ + "1"; + "2" + ]; + #; + "null" + ]; + [ + %false; + "1"; + [ + "foo" + ]; + [ + "1"; + "2" + ]; + [ + "1"; + "bar" + ]; + [ + #; + # + ]; + #; + [] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertToWithNoStrict_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertToWithNoStrict_/results.txt new file mode 100644 index 0000000000..5b6f73d609 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertToWithNoStrict_/results.txt @@ -0,0 +1,287 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "bool"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "int"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "uint"; + [ + "OptionalType"; + [ + "DataType"; + "Uint8" + ] + ] + ]; + [ + "optional_double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "empty_int"; + [ + "OptionalType"; + [ + "DataType"; + "Int32" + ] + ] + ]; + [ + "string"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "utf8"; + [ + "OptionalType"; + [ + "DataType"; + "Utf8" + ] + ] + ]; + [ + "int_list"; + [ + "ListType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "nested_list"; + [ + "ListType"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ]; + [ + "int_dict"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "tuple"; + [ + "TupleType"; + [ + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Int8" + ]; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ]; + [ + "ListType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ]; + [ + "struct"; + [ + "StructType"; + [ + [ + "a"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "b"; + [ + "DataType"; + "Int8" + ] + ]; + [ + "c"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "d"; + [ + "ListType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "e"; + [ + "TupleType"; + [ + [ + "DataType"; + "Double" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "y"; + [ + "OptionalType"; + [ + "DataType"; + "Int16" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + #; + #; + #; + #; + #; + #; + [ + "1"; + "2"; + "3" + ]; + [ + [ + [ + "1" + ]; + [ + "2" + ] + ]; + [ + [ + "3" + ]; + # + ] + ]; + [ + [ + "foo"; + "1" + ] + ]; + [ + %false; + "1"; + #; + [ + "1"; + "2" + ] + ]; + [ + %false; + "1"; + [ + "foo" + ]; + [ + "1"; + "2" + ]; + [ + "1"; + "bar" + ]; + # + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertTo_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertTo_/results.txt new file mode 100644 index 0000000000..c1e579f258 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericConvertTo_/results.txt @@ -0,0 +1,379 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "bool"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "int"; + [ + "DataType"; + "Int64" + ] + ]; + [ + "uint"; + [ + "DataType"; + "Uint8" + ] + ]; + [ + "optional_double"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "empty_int"; + [ + "OptionalType"; + [ + "DataType"; + "Int32" + ] + ] + ]; + [ + "string"; + [ + "DataType"; + "String" + ] + ]; + [ + "utf8"; + [ + "DataType"; + "Utf8" + ] + ]; + [ + "yson"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ]; + [ + "json"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "int_list"; + [ + "ListType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "nested_list"; + [ + "ListType"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ]; + [ + "int_dict"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "tuple"; + [ + "TupleType"; + [ + [ + "DataType"; + "Bool" + ]; + [ + "DataType"; + "Int8" + ]; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ]; + [ + "ListType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ]; + [ + "struct"; + [ + "StructType"; + [ + [ + "a"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "b"; + [ + "DataType"; + "Int8" + ] + ]; + [ + "c"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "d"; + [ + "ListType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "e"; + [ + "TupleType"; + [ + [ + "DataType"; + "Double" + ]; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ] + ]; + [ + "resource"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "list_of_floats"; + [ + "ListType"; + [ + "DataType"; + "Float" + ] + ] + ]; + [ + "bad_member"; + [ + "OptionalType"; + [ + "StructType"; + [ + [ + "a"; + [ + "StructType"; + [ + [ + "b"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ] + ] + ] + ]; + [ + "bad_element"; + [ + "OptionalType"; + [ + "TupleType"; + [ + [ + "DataType"; + "Int64" + ]; + [ + "TupleType"; + [ + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + "123"; + "123"; + [ + "1.23" + ]; + #; + "123"; + "\xD0\xBF\xD1\x80\xD0\xB8\xD1\x91\xD0\xBC"; + [ + { + "a" = { + "$type" = "string"; + "$value" = "b" + }; + "c" = # + } + ]; + [ + "[{\"a\":1},{\"a\":2},{\"a\":3}]" + ]; + [ + "1"; + "2"; + "3" + ]; + [ + [ + [ + "1" + ]; + [ + "2" + ] + ]; + [ + [ + "3" + ]; + # + ] + ]; + [ + [ + "bar"; + "2" + ]; + [ + "foo"; + "1" + ] + ]; + [ + %false; + "1"; + [ + "foo" + ]; + [ + "1"; + "2" + ] + ]; + [ + %false; + "1"; + [ + "foo" + ]; + [ + "1"; + "2" + ]; + [ + "1"; + "bar" + ] + ]; + { + "$type" = "string"; + "$value" = "foo" + }; + [ + "-3.1416"; + "42"; + "0.003" + ]; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericFrom_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericFrom_/results.txt new file mode 100644 index 0000000000..7281b38aef --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GenericFrom_/results.txt @@ -0,0 +1,345 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "null"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "empty_list"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "empty_dict"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "bool"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "int"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "uint"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "optional_double"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "empty_int"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "string"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "int_list"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "nested_list"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "int_dict"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "tuple"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "struct"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "utf8"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "yson"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "json"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "resource_list"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "variants"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "double_optional"; + [ + "DataType"; + "Yson" + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + []; + {}; + { + "$type" = "boolean"; + "$value" = "true" + }; + { + "$type" = "int64"; + "$value" = "123" + }; + { + "$type" = "uint64"; + "$value" = "123" + }; + { + "$type" = "double"; + "$value" = "1.23" + }; + #; + { + "$type" = "string"; + "$value" = "123" + }; + [ + { + "$type" = "int64"; + "$value" = "1" + }; + { + "$type" = "int64"; + "$value" = "2" + }; + { + "$type" = "int64"; + "$value" = "3" + } + ]; + [ + [ + { + "$type" = "int64"; + "$value" = "1" + }; + { + "$type" = "int64"; + "$value" = "2" + } + ]; + [ + { + "$type" = "int64"; + "$value" = "3" + }; + # + ] + ]; + { + "bar" = { + "$type" = "int64"; + "$value" = "2" + }; + "foo" = { + "$type" = "int64"; + "$value" = "1" + } + }; + [ + { + "$type" = "boolean"; + "$value" = "false" + }; + { + "$type" = "int64"; + "$value" = "1" + }; + { + "$type" = "string"; + "$value" = "foo" + }; + [ + { + "$type" = "int64"; + "$value" = "1" + }; + { + "$type" = "int64"; + "$value" = "2" + } + ] + ]; + { + "a" = { + "$type" = "boolean"; + "$value" = "false" + }; + "b" = { + "$type" = "int64"; + "$value" = "1" + }; + "c" = { + "$type" = "string"; + "$value" = "foo" + }; + "d" = [ + { + "$type" = "int64"; + "$value" = "1" + }; + { + "$type" = "int64"; + "$value" = "2" + } + ]; + "e" = [ + { + "$type" = "double"; + "$value" = "1" + }; + { + "$type" = "string"; + "$value" = "bar" + } + ] + }; + { + "$type" = "string"; + "$value" = "\xC3\x90\xC2\xBF\xC3\x91\xC2\x80\xC3\x90\xC2\xBE\xC3\x90\xC2\xB2\xC3\x90\xC2\xB5\xC3\x91\xC2\x80\xC3\x90\xC2\xBA\xC3\x90\xC2\xB0 \xC3\x91\xC2\x81\xC3\x90\xC2\xB2\xC3\x91\xC2\x8F\xC3\x90\xC2\xB7\xC3\x90\xC2\xB8" + }; + { + "a" = { + "$type" = "int64"; + "$value" = "1" + }; + "b" = # + }; + { + "a" = { + "$type" = "string"; + "$value" = "foo" + }; + "b" = [ + { + "$type" = "int64"; + "$value" = "1" + }; + { + "$type" = "int64"; + "$value" = "2" + }; + { + "$type" = "int64"; + "$value" = "3" + }; + { + "$type" = "int64"; + "$value" = "4" + }; + { + "$type" = "int64"; + "$value" = "5" + } + ] + }; + [ + { + "$type" = "int64"; + "$value" = "1" + }; + { + "$type" = "string"; + "$value" = "foo" + } + ]; + [ + { + "$type" = "int64"; + "$value" = "1" + }; + { + "$type" = "string"; + "$value" = "2" + } + ]; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GetHash_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GetHash_/results.txt new file mode 100644 index 0000000000..273c8cc125 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GetHash_/results.txt @@ -0,0 +1,116 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "a1"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "a2"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "a3"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "b"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "c"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "d"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "e"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "f"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "g"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "h"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "i"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "j"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ]; + "Data" = [ + [ + "7079824331463246373"; + "7079824331463246373"; + "7079824331463246373"; + "9619972962658888907"; + "7079824331463246372"; + "16786623923823870811"; + "5024551639089484741"; + "18074785969708127853"; + "12660212615513087259"; + "6712964724129011716"; + "6712964724129011716"; + "16371845032759913096" + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Get_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Get_/results.txt new file mode 100644 index 0000000000..45886142d0 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Get_/results.txt @@ -0,0 +1,57 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "list_length"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "dict_length"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "scalar_length"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "3" + ]; + [ + "1" + ]; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GoodForYsonBadForJson_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GoodForYsonBadForJson_/results.txt new file mode 100644 index 0000000000..e40c1593de --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_GoodForYsonBadForJson_/results.txt @@ -0,0 +1,82 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Yson" + ] + ] + ] + ] + ]; + "Data" = [ + [ + { + "$type" = "double"; + "$value" = "inf" + }; + { + "$type" = "string"; + "$value" = "\"12345\xC3\2667\"" + } + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_ImplicitFromRes_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_ImplicitFromRes_/results.txt new file mode 100644 index 0000000000..e3310fc118 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_ImplicitFromRes_/results.txt @@ -0,0 +1,41 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + []; + [ + [] + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_IsType_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_IsType_/results.txt new file mode 100644 index 0000000000..33e0a72bb9 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_IsType_/results.txt @@ -0,0 +1,154 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "is_string"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "is_int64"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "is_uint64"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "is_double"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "is_entity"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "is_bool"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "is_list"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "is_dict"; + [ + "DataType"; + "Bool" + ] + ] + ] + ] + ]; + "Data" = [ + [ + %true; + %false; + %false; + %false; + %false; + %false; + %false; + %false + ]; + [ + %false; + %true; + %false; + %false; + %false; + %false; + %false; + %false + ]; + [ + %false; + %false; + %true; + %false; + %false; + %false; + %false; + %false + ]; + [ + %false; + %false; + %false; + %true; + %false; + %false; + %false; + %false + ]; + [ + %false; + %false; + %false; + %false; + %true; + %false; + %false; + %false + ]; + [ + %false; + %false; + %false; + %false; + %false; + %true; + %false; + %false + ]; + [ + %false; + %false; + %false; + %false; + %false; + %false; + %true; + %false + ]; + [ + %false; + %false; + %false; + %false; + %false; + %false; + %false; + %true + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_JsonSerializeSkipMapEntity_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_JsonSerializeSkipMapEntity_/results.txt new file mode 100644 index 0000000000..00bda17c89 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_JsonSerializeSkipMapEntity_/results.txt @@ -0,0 +1,124 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "res1"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "res2"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "res3"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "res4"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "res5"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "res6"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "res7"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "res8"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "{\"a\":123}" + ]; + [ + "{}" + ]; + [ + "{\"a\":123}" + ]; + [ + "[123,null]" + ]; + [ + "{\"a\":1,\"c\":1}" + ]; + [ + "{\"a\":{\"$attributes\":{\"c\":1,\"e\":3},\"$value\":23},\"b\":1}" + ]; + [ + "{\"b\":1}" + ]; + [ + "{\"$attributes\":{},\"$value\":23}" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_JsonWithUtf8_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_JsonWithUtf8_/results.txt new file mode 100644 index 0000000000..6b113045b0 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_JsonWithUtf8_/results.txt @@ -0,0 +1,67 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ]; + [ + "column2"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "\"\xD0\xA5\xD1\x8D\xD0\xBB\xD0\xBB\xD0\xBE\xD1\x83!\"" + ]; + [ + "\"\xC3\x90\xC2\xA5\xC3\x91\xC2\x8D\xC3\x90\xC2\xBB\xC3\x90\xC2\xBB\xC3\x90\xC2\xBE\xC3\x91\xC2\x83!\"" + ]; + %true; + [ + "\"\xC3\x90\xC2\xA5\xC3\x91\xC2\x8D\xC3\x90\xC2\xBB\xC3\x90\xC2\xBB\xC3\x90\xC2\xBE\xC3\x91\xC2\x83!\"" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Lists_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Lists_/results.txt new file mode 100644 index 0000000000..dde36e1865 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Lists_/results.txt @@ -0,0 +1,142 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Bool" + ] + ]; + [ + "column1"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column2"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ]; + [ + "column3"; + [ + "ListType"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + %false; + "3"; + [ + [ + "1" + ]; + [ + "2" + ]; + # + ]; + [ + []; + []; + [ + [ + "3" + ]; + [ + "4" + ] + ] + ] + ] + ] + } + ] + }; + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ]; + [ + "column1"; + [ + "ListType"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + #; + [ + "456" + ] + ]; + [ + [ + "123" + ]; + # + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Lookup_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Lookup_/results.txt new file mode 100644 index 0000000000..2938fff72b --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Lookup_/results.txt @@ -0,0 +1,225 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column9"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column10"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column11"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column12"; + [ + "DataType"; + "Uint64" + ] + ]; + [ + "column13"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column14"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column15"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column16"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + %true + ]; + [ + %true + ]; + [ + "1" + ]; + [ + "1" + ]; + [ + "2" + ]; + [ + "2" + ]; + [ + "3" + ]; + [ + "3" + ]; + [ + "x" + ]; + [ + "x" + ]; + "2"; + [ + "2" + ]; + "1"; + [ + "1" + ]; + #; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_NegativeArrayIndex_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_NegativeArrayIndex_/results.txt new file mode 100644 index 0000000000..86f5896b24 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_NegativeArrayIndex_/results.txt @@ -0,0 +1,133 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "2" + ]; + [ + "7" + ]; + [ + "3" + ]; + [ + "6" + ]; + [ + "7" + ]; + [ + "1" + ]; + #; + #; + [ + "1" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_ParseString_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_ParseString_/results.txt new file mode 100644 index 0000000000..f599aeaeaa --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_ParseString_/results.txt @@ -0,0 +1,128 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + { + "$type" = "uint64"; + "$value" = "0" + } + ]; + [ + { + "$type" = "uint64"; + "$value" = "1" + } + ]; + [ + { + "$type" = "int64"; + "$value" = "2" + } + ]; + [ + { + "$type" = "int64"; + "$value" = "3" + } + ]; + #; + #; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Scalars_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Scalars_/results.txt new file mode 100644 index 0000000000..32556166cb --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Scalars_/results.txt @@ -0,0 +1,462 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column3"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column4"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column5"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column6"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column7"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column8"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "column9"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column10"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column11"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column12"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column13"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column14"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column15"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "column16"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column17"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column18"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column19"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column20"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column21"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column22"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column23"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "column24"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column25"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column26"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column27"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column28"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column29"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column30"; + [ + "OptionalType"; + [ + "DataType"; + "Double" + ] + ] + ]; + [ + "column31"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column32"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column33"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column34"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column35"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column36"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "column37"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + #; + [ + %true + ]; + [ + %true + ]; + [ + %false + ]; + #; + #; + #; + #; + #; + #; + #; + [ + "1" + ]; + [ + "2" + ]; + #; + #; + #; + #; + #; + #; + [ + "1" + ]; + [ + "2" + ]; + #; + #; + #; + #; + #; + [ + "1" + ]; + [ + "2" + ]; + [ + "3" + ]; + #; + #; + #; + #; + #; + #; + #; + [ + "foo" + ]; + [ + "very loooooooooooooooooong string" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_SerializeDouble_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_SerializeDouble_/results.txt new file mode 100644 index 0000000000..1891e2e7ab --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_SerializeDouble_/results.txt @@ -0,0 +1,66 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Yson" + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Json" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + { + "double1" = { + "$type" = "double"; + "$value" = "1.0000000001" + }; + "double2" = { + "$type" = "double"; + "$value" = "1.000000001" + }; + "double3" = { + "$type" = "double"; + "$value" = "1000000000.5" + }; + "double4" = { + "$type" = "double"; + "$value" = "10000000005" + }; + "double5" = { + "$type" = "double"; + "$value" = "10000000000.5" + }; + "double6" = { + "$type" = "double"; + "$value" = "100000000005" + } + }; + [ + "{\"double1\":1.0000000001,\"double2\":1.000000001,\"double3\":1000000000.5,\"double4\":10000000005,\"double5\":10000000000.5,\"double6\":100000000005}" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Serialize_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Serialize_/results.txt new file mode 100644 index 0000000000..a9f067d9a0 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_Serialize_/results.txt @@ -0,0 +1,70 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "DataType"; + "Yson" + ] + ] + ] + ] + ]; + "Data" = [ + [ + { + "$attributes" = { + "a" = { + "$type" = "int64"; + "$value" = "1" + } + }; + "$value" = [ + #; + { + "a" = { + "$type" = "int64"; + "$value" = "1" + } + }; + { + "b" = { + "$type" = "uint64"; + "$value" = "2" + }; + "c" = [] + }; + { + "$attributes" = { + "q" = { + "$type" = "string"; + "$value" = "foo" + } + }; + "$type" = "double"; + "$value" = "3" + }; + {}; + { + "$type" = "string"; + "$value" = "foo" + }; + { + "$type" = "string"; + "$value" = "very loooooooooooooooooong string" + } + ] + } + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_WeakYsonRest_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_WeakYsonRest_/results.txt new file mode 100644 index 0000000000..46991df7fb --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_WeakYsonRest_/results.txt @@ -0,0 +1,53 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "animal"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "wombat" + ] + ]; + [ + [ + "dog" + ] + ]; + [ + [ + "chipmunk" + ] + ]; + [ + [ + "hamster" + ] + ]; + [ + [ + "dingo" + ] + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_WithAttrs_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_WithAttrs_/results.txt new file mode 100644 index 0000000000..3110db586f --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_WithAttrs_/results.txt @@ -0,0 +1,69 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "column0"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ]; + [ + "column1"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ]; + [ + "column2"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + { + "$attributes" = { + "a" = { + "$type" = "int64"; + "$value" = "2" + } + }; + "$type" = "int64"; + "$value" = "1" + } + ]; + [ + { + "$type" = "int64"; + "$value" = "1" + } + ]; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_YPath_/results.txt b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_YPath_/results.txt new file mode 100644 index 0000000000..b1f2759eda --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/canondata/test.test_YPath_/results.txt @@ -0,0 +1,112 @@ +[ + { + "Write" = [ + { + "Type" = [ + "ListType"; + [ + "StructType"; + [ + [ + "data"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "attrs"; + [ + "DictType"; + [ + "DataType"; + "String" + ]; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "miss"; + [ + "OptionalType"; + [ + "DataType"; + "Yson" + ] + ] + ]; + [ + "num"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "str_attr"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "miss_attr"; + [ + "OptionalType"; + [ + "DataType"; + "Bool" + ] + ] + ]; + [ + "bad_conv"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + ]; + "Data" = [ + [ + [ + "123" + ]; + [ + [ + "x"; + "y" + ] + ]; + #; + [ + "123" + ]; + [ + "y" + ]; + #; + # + ] + ] + } + ] + } +]
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/Access.sql b/ydb/library/yql/udfs/common/yson2/test/cases/Access.sql new file mode 100644 index 0000000000..13ae815e27 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/Access.sql @@ -0,0 +1,4 @@ +/* syntax version 1 */ +$yson = cast('{"commands"=[{"command"="say";"text"="hello world"}]}' as yson); +SELECT Yson::ConvertToString($yson["command" || "s"].0["text"]) as text; + diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/AccessJson.sql b/ydb/library/yql/udfs/common/yson2/test/cases/AccessJson.sql new file mode 100644 index 0000000000..504da2c711 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/AccessJson.sql @@ -0,0 +1,12 @@ +PRAGMA yson.DisableStrict; +$yson = cast(@@{a="привет"}@@ as yson); +$yson_node = Yson::Parse($yson); + +select Yson::ConvertToString($yson.a); +select Yson::ConvertToString($yson_node.a); + +$json = cast(@@{"a":"привет"}@@ as json); +$json_node = Yson::ParseJson($json); + +select Yson::ConvertToString($json.a); +select Yson::ConvertToString($json_node.a); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/Attrs.sql b/ydb/library/yql/udfs/common/yson2/test/cases/Attrs.sql new file mode 100644 index 0000000000..41709ce806 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/Attrs.sql @@ -0,0 +1,56 @@ +/* syntax version 1 */ + +$no_strict = Yson::Options(false AS Strict); + +select +Yson::ConvertToBool(Yson::Parse(Yson('<a=1>#')), $no_strict), +Yson::ConvertToBool(Yson::Parse(Yson('<a=1>%true'))), +Yson::ConvertToBool(Yson::Parse(Yson('<a=1>1')), $no_strict), +Yson::ConvertToBool(Yson::Parse(Yson('<a=1>2u')), $no_strict), +Yson::ConvertToBool(Yson::Parse(Yson('<a=1>3.0')), $no_strict), +Yson::ConvertToBool(Yson::Parse(Yson('<a=1>foo')), $no_strict), +Yson::ConvertToBool(Yson::Parse(Yson('<a=1>"very loooooooooooooooooong string"')), $no_strict), + +Yson::ConvertToInt64(Yson::Parse(Yson('<a=1>#')), $no_strict), +Yson::ConvertToInt64(Yson::Parse(Yson('<a=1>%true')), $no_strict), +Yson::ConvertToInt64(Yson::Parse(Yson('<a=1>1'))), +Yson::ConvertToInt64(Yson::Parse(Yson('<a=1>2u'))), +Yson::ConvertToInt64(Yson::Parse(Yson('<a=1>3.0')), $no_strict), +Yson::ConvertToInt64(Yson::Parse(Yson('<a=1>foo')), $no_strict), +Yson::ConvertToInt64(Yson::Parse(Yson('<a=1>"very loooooooooooooooooong string"')), $no_strict), + +Yson::ConvertToUint64(Yson::Parse(Yson('<a=1>#')), $no_strict), +Yson::ConvertToUint64(Yson::Parse(Yson('<a=1>%true')), $no_strict), +Yson::ConvertToUint64(Yson::Parse(Yson('<a=1>1'))), +Yson::ConvertToUint64(Yson::Parse(Yson('<a=1>2u'))), +Yson::ConvertToUint64(Yson::Parse(Yson('<a=1>3.0')), $no_strict), +Yson::ConvertToUint64(Yson::Parse(Yson('<a=1>foo')), $no_strict), +Yson::ConvertToUint64(Yson::Parse(Yson('<a=1>"very loooooooooooooooooong string"')), $no_strict), + +Yson::ConvertToDouble(Yson::Parse(Yson('<a=1>#')), $no_strict), +Yson::ConvertToDouble(Yson::Parse(Yson('<a=1>%true')), $no_strict), +Yson::ConvertToDouble(Yson::Parse(Yson('<a=1>1'))), +Yson::ConvertToDouble(Yson::Parse(Yson('<a=1>2u'))), +Yson::ConvertToDouble(Yson::Parse(Yson('<a=1>3.0'))), +Yson::ConvertToDouble(Yson::Parse(Yson('<a=1>foo')), $no_strict), +Yson::ConvertToDouble(Yson::Parse(Yson('<a=1>"very loooooooooooooooooong string"')), $no_strict), + +Yson::ConvertToString(Yson::Parse(Yson('<a=1>#')), $no_strict), +Yson::ConvertToString(Yson::Parse(Yson('<a=1>%true')), $no_strict), +Yson::ConvertToString(Yson::Parse(Yson('<a=1>1')), $no_strict), +Yson::ConvertToString(Yson::Parse(Yson('<a=1>2u')), $no_strict), +Yson::ConvertToString(Yson::Parse(Yson('<a=1>3.0')), $no_strict), +Yson::ConvertToString(Yson::Parse(Yson('<a=1>foo'))), +Yson::ConvertToString(Yson::Parse(Yson('<a=1>"very loooooooooooooooooong string"'))), + +ListMap(Yson::ConvertToList(Yson::Parse(Yson('<a=1>[1;2;3]'))), Yson::ConvertToInt64), +DictKeys(Yson::ConvertToDict(Yson::Parse(Yson('<a=1>{b=1;c=2}')))), + +DictKeys(Yson::Attributes(Yson::Parse(Yson('<a=1;b=2>#')))), +ListMap(DictPayloads(Yson::Attributes(Yson::Parse(Yson('<a=1;b=2>#')))), Yson::ConvertToInt64), + +DictKeys(Yson::Attributes(Yson::Parse(Yson('<a=1;b=2>[]')))), +ListMap(DictPayloads(Yson::Attributes(Yson::Parse(Yson('<a=1;b=2>[]')))), Yson::ConvertToInt64), + +DictKeys(Yson::Attributes(Yson::Parse(Yson('<a=1;b=2>{}')))), +ListMap(DictPayloads(Yson::Attributes(Yson::Parse(Yson('<a=1;b=2>{}')))), Yson::ConvertToInt64); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/AutoConvertTo.sql b/ydb/library/yql/udfs/common/yson2/test/cases/AutoConvertTo.sql new file mode 100644 index 0000000000..0655fea2ec --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/AutoConvertTo.sql @@ -0,0 +1,53 @@ +$zero = Yson::Parse("0u"); +$bool = Yson::FromBool(true); +$int = Yson::Parse("123"); +$uint = Yson::Parse("123u"); +$negative = Yson::Parse("-123"); +$double = Yson::Parse("123.456"); +$string = Yson::Parse("\"123\""); + +$options = Yson::Options(true AS AutoConvert); + +SELECT + Yson::ConvertToBool($zero, $options) AS zero_to_bool, + Yson::ConvertToBool($bool, $options) AS bool_to_bool, + Yson::ConvertToBool($int, $options) AS int_to_bool, + Yson::ConvertToBool($uint, $options) AS uint_to_bool, + Yson::ConvertToBool($negative, $options) AS negative_to_bool, + Yson::ConvertToBool($double, $options) AS double_to_bool, + Yson::ConvertToBool($string, $options) AS string_to_bool, + + Yson::ConvertToInt64($zero, $options) AS zero_to_int, + Yson::ConvertToInt64($bool, $options) AS bool_to_int, + Yson::ConvertToInt64($int, $options) AS int_to_int, + Yson::ConvertToInt64($uint, $options) AS uint_to_int, + Yson::ConvertToInt64($negative, $options) AS negative_to_int, + Yson::ConvertToInt64($double, $options) AS double_to_int, + Yson::ConvertToInt64($string, $options) AS string_to_int, + + Yson::ConvertToUint64($zero, $options) AS zero_to_uint, + Yson::ConvertToUint64($bool, $options) AS bool_to_uint, + Yson::ConvertToUint64($int, $options) AS int_to_uint, + Yson::ConvertToUint64($uint, $options) AS uint_to_uint, + Yson::ConvertToUint64($negative, $options) AS negative_to_uint, + Yson::ConvertToUint64($double, $options) AS double_to_uint, + Yson::ConvertToUint64($string, $options) AS string_to_uint, + + Yson::ConvertToDouble($zero, $options) AS zero_to_double, + Yson::ConvertToDouble($bool, $options) AS bool_to_double, + Yson::ConvertToDouble($int, $options) AS int_to_double, + Yson::ConvertToDouble($uint, $options) AS uint_to_double, + Yson::ConvertToDouble($negative, $options) AS negative_to_double, + Yson::ConvertToDouble($double, $options) AS double_to_double, + Yson::ConvertToDouble($string, $options) AS string_to_double, + + Yson::ConvertToString($zero, $options) AS zero_to_string, + Yson::ConvertToString($bool, $options) AS bool_to_string, + Yson::ConvertToString($int, $options) AS int_to_string, + Yson::ConvertToString($uint, $options) AS uint_to_string, + Yson::ConvertToString($negative, $options) AS negative_to_string, + Yson::ConvertToString($double, $options) AS double_to_string, + Yson::ConvertToString($string, $options) AS string_to_string, + + Yson::ConvertTo($string, Struct<x:Double?, y:Int64, z:List<Bool>>, $options) AS struct_stub, + Yson::ConvertTo($double, Tuple<Double?, Int64, List<Bool>>, $options) AS tuple_stub; diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/Contains.sql b/ydb/library/yql/udfs/common/yson2/test/cases/Contains.sql new file mode 100644 index 0000000000..565a999e5f --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/Contains.sql @@ -0,0 +1,11 @@ +/* syntax version 1 */ + +select +Yson::Contains(Yson::Parse('{a=1}'),'a'), +Yson::Contains(Yson::Parse('{a=1}'),'b'), +Yson::Contains(Yson::Parse('[]'),'0'), +Yson::Contains(Yson::Parse('[1;2]'),'0'), +Yson::Contains(Yson::Parse('[1;2]'),'2'), +Yson::Contains(Yson::Parse('[1;2]'),'-2'), +Yson::Contains(Yson::Parse('[1;2]'),'-3'), +Yson::Contains(Yson::Parse('2'),'2', Yson::Options(false AS Strict)); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/ConvertTo.sql b/ydb/library/yql/udfs/common/yson2/test/cases/ConvertTo.sql new file mode 100644 index 0000000000..b15c524920 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/ConvertTo.sql @@ -0,0 +1,34 @@ +/* syntax version 1 */ +$bool = Yson::Parse("true"); +$number = Yson::Parse("123"); +$string = Yson::Parse("\"123\""); +$number_list = Yson::Parse("[1;2;3]"); +$string_list = Yson::Parse("[\"a\";\"b\";\"c\"]"); +$yson_list = Yson::Parse("[123;{a=1;b=2;c=3};{a=4;b=5;c=6}]"); +$number_dict = Yson::Parse("{a=1;b=2;c=3}"); +$string_dict = Yson::Parse("{a=\"aaa\";b=\"bbb\";c=\"ccc\"}"); +$yson_dict = Yson::Parse("{a=123;b=\"bbb\";c=[\"ccc\";\"ddd\"]}"); +$options = Yson::Options(true AS Strict); +$no_strict = Yson::Options(false AS Strict); + +SELECT + Yson::ConvertToBool($bool, $options) AS `bool`, + Yson::ConvertToInt64($number, $options) AS `int`, + Yson::ConvertToUint64($number, $options) AS `uint`, + Yson::ConvertToDouble($number, $options) AS `double`, + Yson::ConvertToString($string, $options) AS `string`, + Yson::ConvertToInt64($string, $no_strict) AS incorrect, + Yson::ConvertToUint64List($number_list) AS number_list, + Yson::ConvertToStringList($string_list) AS string_list, + ListMap( + Yson::ConvertToList($yson_list), + ($item) -> { return Yson::SerializeJson($item); } + ) AS yson_list, + Yson::ConvertToStringList($number_list, $no_strict) AS incorrect_list, + Yson::ConvertToInt64Dict($number_dict) AS number_dict, + Yson::ConvertToStringDict($string_dict) AS string_dict, + Yson::SerializeJson( + Yson::ConvertToDict($yson_dict)["c"] + ) AS yson_dict, + Yson::ConvertToBoolDict($number_dict, $no_strict) AS incorrect_dict; + diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/Dicts.sql b/ydb/library/yql/udfs/common/yson2/test/cases/Dicts.sql new file mode 100644 index 0000000000..a0b9ce5968 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/Dicts.sql @@ -0,0 +1,13 @@ +$x = Yson::Parse("{a=1;a=2;b={c=3;d=4}}"); +$no_strict = Yson::Options(false AS Strict); +select Yson::ConvertToDict($x) is null, + DictLength(Yson::ConvertToDict($x)), + DictKeys(Yson::ConvertToDict($x)), + ListMap(DictPayloads(Yson::ConvertToDict($x)), ($i)->(Yson::ConvertToInt64($i, $no_strict))), + ListMap(DictItems(Yson::ConvertToDict($x)),($p)->(($p.0,Yson::ConvertToInt64($p.1, $no_strict)))), + DictContains(Yson::ConvertToDict($x),"a"), + DictContains(Yson::ConvertToDict($x),"c"), + Yson::ConvertToInt64(DictLookup(Yson::ConvertToDict($x),"a")), + Yson::ConvertToInt64(DictLookup(Yson::ConvertToDict($x),"c")), + DictKeys(Yson::ConvertToDict(Yson::ConvertToDict($x)["b"])), + ListMap(DictPayloads(Yson::ConvertToDict(Yson::ConvertToDict($x)["b"])),($y)->(Yson::ConvertToInt64($y))) diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/EmptyDicts.sql b/ydb/library/yql/udfs/common/yson2/test/cases/EmptyDicts.sql new file mode 100644 index 0000000000..779634413a --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/EmptyDicts.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +$x = Yson::Parse("{}"); +select Yson::ConvertToDict($x) is null, + DictLength(Yson::ConvertToDict($x)), + DictKeys(Yson::ConvertToDict($x)), + ListMap(DictPayloads(Yson::ConvertToDict($x)),($y)->(Yson::ConvertToInt64($y))), + ListMap(DictItems(Yson::ConvertToDict($x)),($p)->(($p.0,Yson::ConvertToInt64($p.1)))), + DictContains(Yson::ConvertToDict($x),"a"), + Yson::ConvertToInt64(DictLookup(Yson::ConvertToDict($x),"a")); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/EmptyLists.sql b/ydb/library/yql/udfs/common/yson2/test/cases/EmptyLists.sql new file mode 100644 index 0000000000..60c879a948 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/EmptyLists.sql @@ -0,0 +1,5 @@ +/* syntax version 1 */ +$x = Yson::Parse("[]"); +select Yson::ConvertToList($x) is null, + ListLength(Yson::ConvertToList($x)), + ListMap(Yson::ConvertToList($x), ($y)->(Yson::ConvertToInt64($y))); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/Equals.sql b/ydb/library/yql/udfs/common/yson2/test/cases/Equals.sql new file mode 100644 index 0000000000..a64ea70b05 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/Equals.sql @@ -0,0 +1,26 @@ +$a1 = Yson::Parse(Yson("{a=1;b=2}")); +$a2 = Yson::Parse(Yson("{a=1;b=2;}")); +$a3 = Yson::Parse(Yson("{b=2;a=1}")); +$b = Yson::Parse(Yson("#")); +$c = Yson::Parse(Yson("{a=1;b=3}")); +$d = Yson::Parse(Yson("{a=#}")); +$e = Yson::Parse(Yson("[a;1;b;2]")); +$f = Yson::Parse(Yson("{a=1u;b=2}")); +$g = Yson::Parse(Yson("{a=1;b=\"2\"}")); +$h = Yson::Parse(Yson("<foo=bar>{a=1;b=2}")); +$i = Yson::Parse(Yson("{a=1;b=<foo=bar>2}")); + +SELECT + Yson::Equals($a1, $a1) AS a1, + Yson::Equals($a1, $a2) AS a2, + Yson::Equals($a1, $a3) AS a3, + Yson::Equals($a1, $b) AS b, + Yson::Equals($a1, $c) AS c, + Yson::Equals($a1, $d) AS d, + Yson::Equals($a1, $e) AS e, + Yson::Equals($a1, $f) AS f, + Yson::Equals($a1, $g) AS g, + Yson::Equals($a1, $h) AS h, + Yson::Equals($a1, $i) AS i, + Yson::Equals($h, $i) AS attrs1, + Yson::Equals($i, $i) AS attrs2; diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/From.sql b/ydb/library/yql/udfs/common/yson2/test/cases/From.sql new file mode 100644 index 0000000000..2a1f6ed15a --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/From.sql @@ -0,0 +1,21 @@ +/* syntax version 1 */ +select +Yson::IsEntity(Yson::From(NULL)), +Yson::IsEntity(Yson::Parse(Yson("#"))), +Yson::IsEntity(Yson::Parse(Yson("1"))), + +Yson::SerializeText(Yson::FromBool(true)), +Yson::SerializeText(Yson::FromBool(Nothing(Bool?))), +Yson::SerializeText(Yson::FromInt64(1l)), +Yson::SerializeText(Yson::FromInt64(Nothing(Int64?))), +Yson::SerializeText(Yson::FromUint64(2ul)), +Yson::SerializeText(Yson::FromUint64(Nothing(Uint64?))), +Yson::SerializeText(Yson::FromDouble(3.)), +Yson::SerializeText(Yson::FromDouble(Nothing(Double?))), +Yson::SerializeText(Yson::FromString("foo")), +Yson::SerializeText(Yson::FromString("fooooooooooooooooooooooooooooooooo")), +Yson::SerializeText(Yson::FromString(Nothing(String?))), + +Yson::SerializeText(Yson::FromList(Yson::ConvertToList(Yson::Parse(Yson("[1;2;3]"))))), +Yson::SerializeText(Yson::FromDict(Yson::ConvertToDict(Yson::Parse(Yson("{a=x;b=y}"))))); + diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertTo.sql b/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertTo.sql new file mode 100644 index 0000000000..b23d524cff --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertTo.sql @@ -0,0 +1,19 @@ +SELECT + Yson::ConvertTo(Yson::Parse(Yson("%true")), Bool) AS `bool`, + Yson::ConvertTo(Yson::Parse(Yson("123")), Int64) AS `int`, + Yson::ConvertTo(Yson::Parse(Yson("123u")), Uint8) AS `uint`, + Yson::ConvertTo(Yson::Parse(Yson("1.23")), Double?) AS optional_double, + Yson::ConvertTo(Yson::Parse(Yson("#")), Int32?) AS empty_int, + Yson::ConvertTo(Yson::Parse(Yson("\"123\"")), String) AS `string`, + Yson::ConvertTo(Yson::Parse(Yson("\"приём\"")), Utf8) AS `utf8`, + Yson::ConvertTo(Yson::Parse(Yson("{a=b;c=#}")), Yson?) AS `yson`, + Yson::ConvertTo(Yson::Parse(Yson("[{a=1};{a=2};{a=3}]")), Json?) AS `json`, + Yson::ConvertTo(Yson::Parse(Yson("[1;2;3]")), List<Int64>) AS int_list, + Yson::ConvertTo(Yson::Parse(Yson("[[1;2];[3;#]]")), List<List<Int64?>>) AS nested_list, + Yson::ConvertTo(Yson::Parse(Yson("{foo=1;bar=2}")), Dict<String,Int64>) AS int_dict, + Yson::ConvertTo(Yson::Parse(Yson("[%false;1;\"foo\";[1;2]]")), Tuple<Bool,Int8,String?,List<Int64>>) AS `tuple`, + Yson::ConvertTo(Yson::Parse(Yson("{a=%false;b=1;c=foo;d=[1;2];e=[1.0;bar]}")), Struct<a:Bool,b:Int8,c:String?,d:List<Int64>,e:Tuple<Double,String>>) AS `struct`, + Yson::Serialize(Yson::ConvertTo(Yson::Parse(Yson("foo")), Resource<'Yson2.Node'>)) AS `resource`, + Yson::ConvertTo(Yson::Parse(Yson("[-3.1416; 42.0; 0.003]")), List<Float>) AS list_of_floats, + Yson::ConvertTo(@@{a=[1]}@@y, Struct<a: Struct<b: Int64>>?, Yson::Options(false AS Strict)) as bad_member, + Yson::ConvertTo(@@[1;2]@@y, Tuple<Int64, Tuple<Int64>>?, Yson::Options(false AS Strict)) as bad_element; diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertToEmptyStruct.sql b/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertToEmptyStruct.sql new file mode 100644 index 0000000000..7210c1d47a --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertToEmptyStruct.sql @@ -0,0 +1,2 @@ +SELECT + Yson::ConvertTo(@@[{"year"="9999"; "a"="three"; "b"=3}; {"year"="9999"; "a"="four"; "b"=4}]@@y, List<Struct<>>) as list_of_empty_structs; diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertToWithAutoConvert.sql b/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertToWithAutoConvert.sql new file mode 100644 index 0000000000..6f1e0a9ff4 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertToWithAutoConvert.sql @@ -0,0 +1,15 @@ +$ac = Yson::Options(true AS AutoConvert); + +SELECT + Yson::ConvertTo(Yson::Parse(Yson("yes")), Bool, $ac) AS `bool`, + Yson::ConvertTo(Yson::Parse(Yson("no")), Int64, $ac) AS `int`, + Yson::ConvertTo(Yson::Parse(Yson("123.7")), Uint8, $ac) AS `uint`, + Yson::ConvertTo(Yson::Parse(Yson(@@"1.23"@@)), Double?, $ac) AS optional_double, + Yson::ConvertTo(Yson::Parse(Yson("many")), Int32?, $ac) AS empty_int, + Yson::ConvertTo(Yson::Parse(Yson("1.23")), String, $ac) AS `string`, + Yson::ConvertTo(Yson::Parse(Yson("0u")), Utf8, $ac) AS `utf8`, + Yson::ConvertTo(Yson::Parse(Yson(@@[1;2;3;7.7;"8";"9.0"]@@)), List<Int64>, $ac) AS int_list, + Yson::ConvertTo(Yson::Parse(Yson("[[1;2];[3;#];5;#]")), List<List<Int64?>>, $ac) AS nested_list, + Yson::ConvertTo(Yson::Parse(Yson("{foo=1;bar=2.0;xxx=#}")), Dict<String,Int64>, $ac) AS int_dict, + Yson::ConvertTo(Yson::Parse(Yson("[%false;1;\"foo\";[1;2]]")), Tuple<Bool,Int8,String?,List<Int64>,Yson,Json>, $ac) AS `tuple`, + Yson::ConvertTo(Yson::Parse(Yson("{a=%false;b=1;c=foo;d=[1;2];e=[1.0;bar]}")), Struct<a:Bool,b:Int8,c:String?,d:List<Int64>,e:Tuple<Double,String>,x:Tuple<Double?,String?>,y:Int16?,z:List<Int8>>, $ac) AS `struct`; diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertToWithNoStrict.sql b/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertToWithNoStrict.sql new file mode 100644 index 0000000000..f87b30c997 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/GenericConvertToWithNoStrict.sql @@ -0,0 +1,15 @@ +$ns = Yson::Options(false AS Strict); + +SELECT + Yson::ConvertTo(Yson::Parse(Yson("yes")), Bool?, $ns) AS `bool`, + Yson::ConvertTo(Yson::Parse(Yson("no")), Int64?, $ns) AS `int`, + Yson::ConvertTo(Yson::Parse(Yson("123.7")), Uint8?, $ns) AS `uint`, + Yson::ConvertTo(Yson::Parse(Yson(@@"1.23"@@)), Double?, $ns) AS optional_double, + Yson::ConvertTo(Yson::Parse(Yson("many")), Int32?, $ns) AS empty_int, + Yson::ConvertTo(Yson::Parse(Yson("1.23")), String?, $ns) AS `string`, + Yson::ConvertTo(Yson::Parse(Yson("0u")), Utf8?, $ns) AS `utf8`, + Yson::ConvertTo(Yson::Parse(Yson(@@[1;2;3;7.7;"8";"9.0"]@@)), List<Int64>, $ns) AS int_list, + Yson::ConvertTo(Yson::Parse(Yson("[[1;2];[3;#];5;#]")), List<List<Int64?>>, $ns) AS nested_list, + Yson::ConvertTo(Yson::Parse(Yson("{foo=1;bar=2.0;xxx=#}")), Dict<String,Int64>, $ns) AS int_dict, + Yson::ConvertTo(Yson::Parse(Yson("[%false;1;42;[1;2;3.3]]")), Tuple<Bool,Int8,String?,List<Int64>>, $ns) AS `tuple`, + Yson::ConvertTo(Yson::Parse(Yson("{a=%false;b=1;c=foo;d=[1;2];e=[1.0;bar]}")), Struct<a:Bool,b:Int8,c:String?,d:List<Int64>,e:Tuple<Double,String>,y:Int16?>, $ns) AS `struct`; diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/GenericFrom.sql b/ydb/library/yql/udfs/common/yson2/test/cases/GenericFrom.sql new file mode 100644 index 0000000000..2f42d8fb95 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/GenericFrom.sql @@ -0,0 +1,21 @@ +SELECT + Yson::Serialize(Yson::From(null)) AS `null`, + Yson::Serialize(Yson::From([])) AS `empty_list`, + Yson::Serialize(Yson::From({})) AS `empty_dict`, + Yson::Serialize(Yson::From(true)) AS `bool`, + Yson::Serialize(Yson::From(123)) AS `int`, + Yson::Serialize(Yson::From(123u)) AS `uint`, + Yson::Serialize(Yson::From(Just(1.23))) AS optional_double, + Yson::Serialize(Yson::From(Nothing(Int8?))) AS empty_int, + Yson::Serialize(Yson::From("123")) AS `string`, + Yson::Serialize(Yson::From(AsList(1, 2, 3))) AS int_list, + Yson::Serialize(Yson::From(AsList(AsList(1, 2), AsList(3, 1/0)))) AS nested_list, + Yson::Serialize(Yson::From(AsDict(AsTuple("foo", 1), AsTuple("bar", 2)))) AS int_dict, + Yson::Serialize(Yson::From(AsTuple(false, 1, "foo", AsList(1,2)))) AS `tuple`, + Yson::Serialize(Yson::From(AsStruct(false AS a, 1 AS b, "foo" AS c, AsList(1,2) AS d, AsTuple(1.0, "bar") AS e))) AS `struct`, + Yson::Serialize(Yson::From(Utf8("проверка связи"))) AS `utf8`, + Yson::Serialize(Yson::From(Yson("{a=1;b=#}"))) AS `yson`, + Yson::Serialize(Yson::From(Json(@@{"a":"foo","b":[1,2,3,4,5]}@@))) AS `json`, + Yson::Serialize(Yson::From(AsList(Yson::From(1), Yson::From("foo")))) AS resource_list, + Yson::Serialize(Yson::From([AsVariant(1, "one"), AsVariant("2", "two")])) AS `variants`, + Yson::Serialize(Yson::From(Just(1u/0u))) AS double_optional; diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/Get.sql b/ydb/library/yql/udfs/common/yson2/test/cases/Get.sql new file mode 100644 index 0000000000..4449aef41d --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/Get.sql @@ -0,0 +1,8 @@ +$list = Yson::Parse("[\"abc\"; 123; #;]"); +$dict = Yson::Parse("{\"a\"=1;}"); +$scalar = Yson::Parse("123"); + +SELECT + Yson::GetLength($list) AS list_length, + Yson::GetLength($dict) AS dict_length, + Yson::GetLength($scalar, Yson::Options(false AS Strict)) AS scalar_length; diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/GetHash.sql b/ydb/library/yql/udfs/common/yson2/test/cases/GetHash.sql new file mode 100644 index 0000000000..e869c45e9a --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/GetHash.sql @@ -0,0 +1,27 @@ +$a1 = Yson::Parse(Yson("{a=1;b=2}")); +$a2 = Yson::Parse(Yson("{a=1;b=2;}")); +$a3 = Yson::Parse(Yson("{b=2;a=1}")); +$b = Yson::Parse(Yson("#")); +$c = Yson::Parse(Yson("{a=1;b=3}")); +$d = Yson::Parse(Yson("{a=#}")); +$e = Yson::Parse(Yson("[a;1;b;2]")); +$f = Yson::Parse(Yson("{a=1u;b=2}")); +$g = Yson::Parse(Yson("{a=1;b=\"2\"}")); +$h = Yson::Parse(Yson("<foo=bar>{a=1;b=2}")); +$i = Yson::Parse(Yson("{a=1;b=<foo=bar>2}")); +$j = Yson::Parse(Yson("[1;a;b;2]")); + +SELECT + Yson::GetHash($a1) AS a1, + Yson::GetHash($a2) AS a2, + Yson::GetHash($a3) AS a3, + Yson::GetHash($b) AS b, + Yson::GetHash($c) AS c, + Yson::GetHash($d) AS d, + Yson::GetHash($e) AS e, + Yson::GetHash($f) AS f, + Yson::GetHash($g) AS g, + Yson::GetHash($h) AS h, + Yson::GetHash($i) AS i, + Yson::GetHash($j) AS j, + diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/GoodForYsonBadForJson.sql b/ydb/library/yql/udfs/common/yson2/test/cases/GoodForYsonBadForJson.sql new file mode 100644 index 0000000000..034b19e890 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/GoodForYsonBadForJson.sql @@ -0,0 +1,7 @@ +$inf = Yson::From(1./0.); +$binary = Yson::From("\"12345\xf67\""); + +SELECT Yson::Serialize($inf), Yson::Serialize($binary); + +PRAGMA yson.DisableStrict; +SELECT Yson::SerializeJson($inf), Yson::SerializeJson($binary); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/ImplicitFromRes.sql b/ydb/library/yql/udfs/common/yson2/test/cases/ImplicitFromRes.sql new file mode 100644 index 0000000000..a42e370c59 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/ImplicitFromRes.sql @@ -0,0 +1,4 @@ +/* syntax version 1 */ +select + Yson::Parse(Yson::Parse("[]"y)), + Yson::ParseJson(Yson::Parse("[]"y)); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/IsType.sql b/ydb/library/yql/udfs/common/yson2/test/cases/IsType.sql new file mode 100644 index 0000000000..1407ad4366 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/IsType.sql @@ -0,0 +1,12 @@ +$all = [@@"str"@@y, "-13"y, "42u"y, "3.14"y, "#"y, "%false"y, "[1;2;3;]"y, "{}"y]; + +select + Yson::IsString(y) as is_string, + Yson::IsInt64(y) as is_int64, + Yson::IsUint64(y) as is_uint64, + Yson::IsDouble(y) as is_double, + Yson::IsEntity(y) as is_entity, + Yson::IsBool(y) as is_bool, + Yson::IsList(y) as is_list, + Yson::IsDict(y) as is_dict +FROM AS_TABLE(ListMap($all, ($y)->(<|'y':$y|>))); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/JsonSerializeSkipMapEntity.sql b/ydb/library/yql/udfs/common/yson2/test/cases/JsonSerializeSkipMapEntity.sql new file mode 100644 index 0000000000..e2b292f495 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/JsonSerializeSkipMapEntity.sql @@ -0,0 +1,18 @@ +$node1 = Yson::Parse(Yson(@@{a=123}@@)); +$node2 = Yson::Parse(Yson(@@{a=#}@@)); +$node3 = Yson::Parse(Yson(@@{a=123;b=#}@@)); +$node4 = Yson::Parse(Yson(@@[123;#]@@)); +$node5 = Yson::Parse(Yson(@@{a=1;b=#;c=1;d=#;e=#}@@)); +$node6 = Yson::Parse(Yson(@@{b=1;a=<c=1;d=#;e=3>23}@@)); +$node7 = Yson::Parse(Yson(@@{b=1;a=<c=1;d=#;e=3>#}@@)); +$node8 = Yson::Parse(Yson(@@<d=#>23@@)); + +SELECT + Yson::SerializeJson($node1, true as SkipMapEntity) AS res1, + Yson::SerializeJson($node2, true as SkipMapEntity) AS res2, + Yson::SerializeJson($node3, true as SkipMapEntity) AS res3, + Yson::SerializeJson($node4, true as SkipMapEntity) AS res4, + Yson::SerializeJson($node5, true as SkipMapEntity) AS res5, + Yson::SerializeJson($node6, true as SkipMapEntity) AS res6, + Yson::SerializeJson($node7, true as SkipMapEntity) AS res7, + Yson::SerializeJson($node8, true as SkipMapEntity) AS res8; diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/JsonWithUtf8.sql b/ydb/library/yql/udfs/common/yson2/test/cases/JsonWithUtf8.sql new file mode 100644 index 0000000000..00f4c98cd9 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/JsonWithUtf8.sql @@ -0,0 +1,5 @@ +$src = Yson::From("Хэллоу!"); +SELECT Yson::SerializeJson($src, false AS EncodeUtf8), Yson::SerializeJson($src, true AS EncodeUtf8), + Yson::Equals(Yson::ParseJson(Json("\"\xD0\xA5\xD1\x8D\xD0\xBB\xD0\xBB\xD0\xBE\xD1\x83!\"")), Yson::ParseJsonDecodeUtf8(Json("\"\xC3\x90\xC2\xA5\xC3\x91\xC2\x8D\xC3\x90\xC2\xBB\xC3\x90\xC2\xBB\xC3\x90\xC2\xBE\xC3\x91\xC2\x83!\""))), + Yson::SerializeJsonEncodeUtf8($src); + diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/Lists.sql b/ydb/library/yql/udfs/common/yson2/test/cases/Lists.sql new file mode 100644 index 0000000000..4d1c74e6cb --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/Lists.sql @@ -0,0 +1,10 @@ +/* syntax version 1 */ +$x = Yson::Parse("[1;2;[3;4]]"); +$no_strict = Yson::Options(false AS Strict); +select Yson::ConvertToList($x) is null, + ListLength(Yson::ConvertToList($x)), + ListMap(Yson::ConvertToList($x), ($i)->(Yson::ConvertToInt64($i,$no_strict))), + ListMap(Yson::ConvertToList($x), ($x)->(ListMap(Yson::ConvertToList($x, Yson::Options(false AS Strict)), Yson::ConvertToInt64))); + +$int_and_str = Yson(@@[123;"456"]@@); +SELECT ListMap(Yson::ConvertToList($int_and_str), Yson::ConvertToString), ListMap(Yson::ConvertToList($int_and_str), Yson::ConvertToInt64); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/Lookup.sql b/ydb/library/yql/udfs/common/yson2/test/cases/Lookup.sql new file mode 100644 index 0000000000..e24b156417 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/Lookup.sql @@ -0,0 +1,29 @@ +/* syntax version 1 */ +$no_strict = Yson::Options(false AS Strict); + +select +Yson::ConvertToBool(Yson::Lookup(Yson::Parse('{a=%true}'), 'a')), +Yson::LookupBool(Yson::Parse('{a=%true}'), 'a'), + +Yson::ConvertToInt64(Yson::Lookup(Yson::Parse('{a=1}'), 'a')), +Yson::LookupInt64(Yson::Parse('{a=1}'), 'a'), + +Yson::ConvertToUint64(Yson::Lookup(Yson::Parse('{a=2u}'), 'a')), +Yson::LookupUint64(Yson::Parse('{a=2u}'), 'a'), + +Yson::ConvertToDouble(Yson::Lookup(Yson::Parse('{a=3.0}'), 'a')), +Yson::LookupDouble(Yson::Parse('{a=3.0}'), 'a'), + +Yson::ConvertToString(Yson::Lookup(Yson::Parse('{a=x}'), 'a')), +Yson::LookupString(Yson::Parse('{a=x}'), 'a'), + +ListLength(Yson::ConvertToList(Yson::Lookup(Yson::Parse('{a=[1;2]}'), 'a'))), +ListLength(Yson::LookupList(Yson::Parse('{a=[1;2]}'), 'a')), + +DictLength(Yson::ConvertToDict(Yson::Lookup(Yson::Parse('{a={b=c}}'), 'a'))), +DictLength(Yson::LookupDict(Yson::Parse('{a={b=c}}'), 'a')), + +Yson::LookupString(Yson::Parse('[]'), '0'), + +Yson::LookupString(Yson::Parse('{a=12345}'), 'a', $no_strict), +Yson::LookupDouble(Yson::Parse(@@{a="12345"}@@), 'a', $no_strict); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/NegativeArrayIndex.sql b/ydb/library/yql/udfs/common/yson2/test/cases/NegativeArrayIndex.sql new file mode 100644 index 0000000000..bc1f0bc6b5 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/NegativeArrayIndex.sql @@ -0,0 +1,13 @@ +$node = Yson::Parse(@@[1;2;3;4;5;6;7]@@); + +SELECT + Yson::YPathInt64($node, "/+1"), + Yson::YPathInt64($node, "/-1"), + Yson::YPathInt64($node, "/+2"), + Yson::YPathInt64($node, "/-2"), + Yson::YPathInt64($node, "/+6"), + Yson::YPathInt64($node, "/-7"), + Yson::YPathInt64($node, "/+7"), + Yson::YPathInt64($node, "/-8"), + Yson::YPathInt64($node, "/0"); + diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/ParseString.sql b/ydb/library/yql/udfs/common/yson2/test/cases/ParseString.sql new file mode 100644 index 0000000000..6968ec07c6 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/ParseString.sql @@ -0,0 +1,11 @@ +$options = Yson::Options(false AS Strict); + +SELECT + Yson::Parse("0u"), + Yson::Parse(Just("1u")), + Yson::ParseJson("2"), + Yson::ParseJson(Just("3")), + Yson::Parse("", $options), + Yson::Parse(Just(""), $options), + Yson::ParseJson("", $options), + Yson::ParseJson(Just(""), $options); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/Scalars.sql b/ydb/library/yql/udfs/common/yson2/test/cases/Scalars.sql new file mode 100644 index 0000000000..2b8d751957 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/Scalars.sql @@ -0,0 +1,46 @@ +/* syntax version 1 */ +$no_strict = Yson::Options(false AS Strict); + +select +Yson::ConvertToBool(Yson::Parse('#'), $no_strict), +Yson::ConvertToBool(Yson::Parse('%true')), +Yson::ConvertToBool(Yson::Parse('true')), +Yson::ConvertToBool(Yson::Parse('false')), +Yson::ConvertToBool(Yson::Parse('1'), $no_strict), +Yson::ConvertToBool(Yson::Parse('2u'), $no_strict), +Yson::ConvertToBool(Yson::Parse('3.0'), $no_strict), +Yson::ConvertToBool(Yson::Parse('foo'), $no_strict), +Yson::ConvertToBool(Yson::Parse('"very loooooooooooooooooong string"'), $no_strict), + +Yson::ConvertToInt64(Yson::Parse('#'), $no_strict), +Yson::ConvertToInt64(Yson::Parse('%true'), $no_strict), +Yson::ConvertToInt64(Yson::Parse('1')), +Yson::ConvertToInt64(Yson::Parse('2u')), +Yson::ConvertToInt64(Yson::Parse('3.0'), $no_strict), +Yson::ConvertToInt64(Yson::Parse('foo'), $no_strict), +Yson::ConvertToInt64(Yson::Parse('"very loooooooooooooooooong string"'), $no_strict), + +Yson::ConvertToUint64(Yson::Parse('#'), $no_strict), +Yson::ConvertToUint64(Yson::Parse('%true'), $no_strict), +Yson::ConvertToUint64(Yson::Parse('-1'), $no_strict), +Yson::ConvertToUint64(Yson::Parse('1')), +Yson::ConvertToUint64(Yson::Parse('2u')), +Yson::ConvertToUint64(Yson::Parse('3.0'), $no_strict), +Yson::ConvertToUint64(Yson::Parse('foo'), $no_strict), +Yson::ConvertToUint64(Yson::Parse('"very loooooooooooooooooong string"'), $no_strict), + +Yson::ConvertToDouble(Yson::Parse('#'), $no_strict), +Yson::ConvertToDouble(Yson::Parse('%true'), $no_strict), +Yson::ConvertToDouble(Yson::Parse('1')), +Yson::ConvertToDouble(Yson::Parse('2u')), +Yson::ConvertToDouble(Yson::Parse('3.0')), +Yson::ConvertToDouble(Yson::Parse('foo'), $no_strict), +Yson::ConvertToDouble(Yson::Parse('"very loooooooooooooooooong string"'), $no_strict), + +Yson::ConvertToString(Yson::Parse('#'), $no_strict), +Yson::ConvertToString(Yson::Parse('%true'), $no_strict), +Yson::ConvertToString(Yson::Parse('1'), $no_strict), +Yson::ConvertToString(Yson::Parse('2u'), $no_strict), +Yson::ConvertToString(Yson::Parse('3.0'), $no_strict), +Yson::ConvertToString(Yson::Parse('foo')), +Yson::ConvertToString(Yson::Parse('"very loooooooooooooooooong string"')), diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/Serialize.sql b/ydb/library/yql/udfs/common/yson2/test/cases/Serialize.sql new file mode 100644 index 0000000000..88eb075d87 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/Serialize.sql @@ -0,0 +1,3 @@ +/* syntax version 1 */ +select +Yson::SerializeText(Yson::Parse(Yson('<a=1>[#;{a=1};{b=2u;c=[]};<q=foo>3.0;{};foo;"very loooooooooooooooooong string"]'))); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/SerializeDouble.sql b/ydb/library/yql/udfs/common/yson2/test/cases/SerializeDouble.sql new file mode 100644 index 0000000000..5b3b1c4402 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/SerializeDouble.sql @@ -0,0 +1,13 @@ +$s = <| + double1: 1.0000000001, + double2: 1.000000001, + double3: 1000000000.5, + double4: 10000000005.0, + double5: 10000000000.5, + double6: 100000000005.0, +|>; + +SELECT + Yson::Serialize(Yson::From($s)), + Yson::SerializeJson(Yson::From($s)) +;
\ No newline at end of file diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/WeakYsonRest.in b/ydb/library/yql/udfs/common/yson2/test/cases/WeakYsonRest.in new file mode 100644 index 0000000000..18703eb252 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/WeakYsonRest.in @@ -0,0 +1,5 @@ +{"key"="020";"subkey"="1";"_rest"={"animal"="wombat";"size"="small";"weightMin"=20.;"weightMax"=35.;"wild"=%true};"binZ"="\x04";"strY"="\1\x08test";"realZ"="\x03\x18-DT\xfb!\t@" ;"uiData"=1}; +{"key"="075";"subkey"="5";"_rest"={"animal"="dog";"size"="huge";"weightMin"=5.;"weightMax"=75.;"pet"=%true} ;"binZ"=%true ;"strY"="\1\nfunny" ;"realZ"="\x03iW\x14\x8b\n\xbf\x05@" ;"uiData"=1u}; +{"key"="150";"subkey"="4";"_rest"={"animal"="chipmunk";"size"="small";"weightMin"=0.05;"weightMax"=0.15;"wild"=%true} ;"binZ"="\x05";"strY"="\1\nbunny" ;"realZ"="\x03\xcd;\x7ff\x9e\xa0\xf6?" ;"uiData"=100500u}; +{"key"="500";"subkey"="2";"_rest"={"animal"="hamster";"size"="verysmall";"weightMin"=0.015;"weightMax"=0.045;"pet"=%true} ;"binZ"=%false;"strY"="33.33" ;"realZ"="\x03\x00\x00\x00\x00\x00\x00\xf0?" ;"uiData"=10010005001000000u}; +{"key"="800";"subkey"="3";"_rest"={"animal"="dingo";"size"="huge";"weightMin"=10.;"weightMax"=20.;"wild"=%true} ;"binZ"=%false;"strY"="\1\x06zzz" ;"realZ"="\x03\x00\x00\x00\x00\x00\x00\xf0\xbf";"uiData"=33}; diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/WeakYsonRest.in.attr b/ydb/library/yql/udfs/common/yson2/test/cases/WeakYsonRest.in.attr new file mode 100644 index 0000000000..6ce47a0015 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/WeakYsonRest.in.attr @@ -0,0 +1,12 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"String"]]; + ["subkey";["DataType";"String"]]; + ["_rest";["OptionalType";["DataType";"Yson"]]] + ]]; + "SortDirections"=[1;1;]; + "SortedBy"=["key";"subkey";]; + "SortedByTypes"=[["DataType";"String";];["DataType";"String";];]; + "SortMembers"=["key";"subkey";]; + "DefaultValues"={"key"="\"\"";"subkey"="\"\"";} +}} diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/WeakYsonRest.sql b/ydb/library/yql/udfs/common/yson2/test/cases/WeakYsonRest.sql new file mode 100644 index 0000000000..2c84ad498b --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/WeakYsonRest.sql @@ -0,0 +1,7 @@ +/* postgres can not */ +USE plato; + +--INSERT INTO Output +SELECT + WeakField(animal, "String") +FROM Input diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/WithAttrs.sql b/ydb/library/yql/udfs/common/yson2/test/cases/WithAttrs.sql new file mode 100644 index 0000000000..d346b936e4 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/WithAttrs.sql @@ -0,0 +1,6 @@ +/* syntax version 1 */ + +select +Yson::SerializeText(Yson::WithAttributes(Yson::Parse('1'), Yson::Parse('{a=2}'))), +Yson::SerializeText(Yson::WithAttributes(Yson::Parse('1'), Yson::Parse('{}'))), +Yson::SerializeText(Yson::WithAttributes(Yson::Parse('1'), Yson::Parse('#'))); diff --git a/ydb/library/yql/udfs/common/yson2/test/cases/YPath.sql b/ydb/library/yql/udfs/common/yson2/test/cases/YPath.sql new file mode 100644 index 0000000000..30b3bc372c --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/cases/YPath.sql @@ -0,0 +1,13 @@ +$node = Yson::Parse(@@<x="y">{abc=123;}@@); +$data = Yson::YPath($node, "/abc"); +$attrs = Yson::YPath($node, "/@"); +$miss = Yson::YPath($node, "/def"); + +SELECT + Yson::ConvertToInt64($data) AS data, + Yson::ConvertToStringDict($attrs) AS attrs, + Yson::SerializePretty($miss) AS miss, + Yson::YPathInt64($node, "/abc") AS num, + Yson::YPathString($node, "/@/x") AS str_attr, + Yson::YPathBool($node, "/@/mis") AS miss_attr, + Yson::YPathString($node, "/abc", Yson::Options(false as Strict)) AS bad_conv; diff --git a/ydb/library/yql/udfs/common/yson2/test/ya.make b/ydb/library/yql/udfs/common/yson2/test/ya.make new file mode 100644 index 0000000000..f79b79e571 --- /dev/null +++ b/ydb/library/yql/udfs/common/yson2/test/ya.make @@ -0,0 +1,12 @@ +YQL_UDF_TEST() + +DEPENDS(ydb/library/yql/udfs/common/yson2) + +TIMEOUT(300) +SIZE(MEDIUM) + +IF (SANITIZER_TYPE == "memory") + TAG(ya:not_autocheck) # YQL-15385 +ENDIF() + +END() diff --git a/ydb/library/yql/udfs/common/yson2/ya.make b/ydb/library/yql/udfs/common/yson2/ya.make index d1ddd064b3..0a0c84b396 100644 --- a/ydb/library/yql/udfs/common/yson2/ya.make +++ b/ydb/library/yql/udfs/common/yson2/ya.make @@ -17,3 +17,7 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS( + test +) |