diff options
author | udovichenko-r <udovichenko-r@yandex-team.com> | 2024-11-19 14:58:38 +0300 |
---|---|---|
committer | udovichenko-r <udovichenko-r@yandex-team.com> | 2024-11-19 15:16:27 +0300 |
commit | 24521403b1c44303e043ba540c09b1fe991c7474 (patch) | |
tree | 341d1e7206bc7c143d04d2d96f05b6dc0655606d /yql/essentials/tests/sql/suites/select | |
parent | 72b3cd51dc3fb9d16975d353ea82fd85701393cc (diff) | |
download | ydb-24521403b1c44303e043ba540c09b1fe991c7474.tar.gz |
YQL-19206 Move contrib/ydb/library/yql/tests/sql/suites -> yql/essentials/tests/sql/suites
commit_hash:d0ef1f92b09c94db7c2408f946d2a4c62b603f00
Diffstat (limited to 'yql/essentials/tests/sql/suites/select')
166 files changed, 2140 insertions, 0 deletions
diff --git a/yql/essentials/tests/sql/suites/select/anon_clash.cfg b/yql/essentials/tests/sql/suites/select/anon_clash.cfg new file mode 100644 index 0000000000..5dae597903 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/anon_clash.cfg @@ -0,0 +1 @@ +xfail diff --git a/yql/essentials/tests/sql/suites/select/anon_clash.sql b/yql/essentials/tests/sql/suites/select/anon_clash.sql new file mode 100644 index 0000000000..7fa8927b9b --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/anon_clash.sql @@ -0,0 +1,8 @@ +use plato; + +insert into @a select 1 as t; + +commit; + +select * from @a; +select * from a; diff --git a/yql/essentials/tests/sql/suites/select/append_to_value.cfg b/yql/essentials/tests/sql/suites/select/append_to_value.cfg new file mode 100644 index 0000000000..58878f8945 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/append_to_value.cfg @@ -0,0 +1 @@ +in Input input.txt diff --git a/yql/essentials/tests/sql/suites/select/append_to_value.sql b/yql/essentials/tests/sql/suites/select/append_to_value.sql new file mode 100644 index 0000000000..399241b7b6 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/append_to_value.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +select key, subkey, value || "foo" as new_value from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/append_to_value_1000.cfg b/yql/essentials/tests/sql/suites/select/append_to_value_1000.cfg new file mode 100644 index 0000000000..97c9faa1f7 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/append_to_value_1000.cfg @@ -0,0 +1,2 @@ +in Input input1100.txt +providers yt diff --git a/yql/essentials/tests/sql/suites/select/append_to_value_1000.sql b/yql/essentials/tests/sql/suites/select/append_to_value_1000.sql new file mode 100644 index 0000000000..c86c8d13cd --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/append_to_value_1000.sql @@ -0,0 +1,3 @@ +/* postgres can not */ +/* kikimr can not - no ref select mode */ +select key, subkey, value || "foo" as new_value from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/autoextract_source_value.sql b/yql/essentials/tests/sql/suites/select/autoextract_source_value.sql new file mode 100644 index 0000000000..8a865b85c7 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/autoextract_source_value.sql @@ -0,0 +1,7 @@ +/* postgres can not */ +use plato; + +$_data = (SELECT key as kk, subkey as sk, value as val FROM plato.Input WHERE key == '075'); +$data_one_key = (SELECT subkey as sk FROM plato.Input WHERE key == '075'); + +SELECT * FROM Input WHERE key = $data_one_key; diff --git a/yql/essentials/tests/sql/suites/select/autoextract_source_value_in_where.sqlx b/yql/essentials/tests/sql/suites/select/autoextract_source_value_in_where.sqlx new file mode 100644 index 0000000000..e5df9cc6ff --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/autoextract_source_value_in_where.sqlx @@ -0,0 +1,11 @@ +/* postgres can not */ +use plato; + +$data = (SELECT key as kk, subkey as sk, value as val FROM plato.Input WHERE key == '075'); + +SELECT + * +FROM + Input +WHERE + key = $data; -- $data should have one column diff --git a/yql/essentials/tests/sql/suites/select/autogen_columns_conflict.sql b/yql/essentials/tests/sql/suites/select/autogen_columns_conflict.sql new file mode 100644 index 0000000000..16c07dbbb6 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/autogen_columns_conflict.sql @@ -0,0 +1,29 @@ +/* dq can not */ +/* dqfile can not */ +/* yt can not */ +/* postgres can not */ + +$src = select <|column0:1|> as x; + +$src = select * from $src flatten columns; + +select 2, a.* from $src as a; + +select 2, 1 as column0; + +select 2, 1 as column0 +union all +select 4, 3 as column0; + + +select * from (select 1) as a join (select 1) as b using(column0); + + + +select + + 1 as a, + 2 as b, + 3, -- should be column2 + 4 as column1; + diff --git a/yql/essentials/tests/sql/suites/select/backtick_with_escapes.sql b/yql/essentials/tests/sql/suites/select/backtick_with_escapes.sql new file mode 100644 index 0000000000..c8120b41bc --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/backtick_with_escapes.sql @@ -0,0 +1,3 @@ +/* postgres can not */ +USE plato; +SELECT key as `#[k]ey`, subkey as `#[s]ubkey`, value as `\x5bv\x5dalue#` FROM Input; diff --git a/yql/essentials/tests/sql/suites/select/bin_ops_long_concat.sql b/yql/essentials/tests/sql/suites/select/bin_ops_long_concat.sql new file mode 100644 index 0000000000..d62efd5eef --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/bin_ops_long_concat.sql @@ -0,0 +1 @@ +select "The" || " std::tuple" || " type" || " introduced" || " in" || " C++11" || " allows" || " an" || " aggregate" || " of" || " typed" || " values" || " to" || " be" || " indexed" || " by" || " a" || " compile-time" || " constant" || " integer." || " C++14" || " extends" || " this" || " to" || " allow" || " fetching" || " from" || " a" || " tuple" || " by" || " type" || " instead" || " of" || " by" || " index." || " If" || " the" || " tuple" || " has" || " more" || " than" || " one" || " element" || " of" || " the" || " type," || " a" || " compile-time" || " error" || " results..."; diff --git a/yql/essentials/tests/sql/suites/select/bit_ops.sql b/yql/essentials/tests/sql/suites/select/bit_ops.sql new file mode 100644 index 0000000000..b7fd34b68b --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/bit_ops.sql @@ -0,0 +1,11 @@ +/* postgres can not */ +SELECT + LENGTH(key) & LENGTH(value) as and_res, + LENGTH(key) | LENGTH(value) as or_res, + LENGTH(key) ^ LENGTH(value) as xor_res, + LENGTH(key) << 1 as shl_res, + LENGTH(key) >> 1 as shr_res, + LENGTH(key) |<< 15 as rotl_res, + LENGTH(key) >>| 15 as rotr_res, + ~LENGTH(key) as not_res +FROM plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/boolean_where.cfg b/yql/essentials/tests/sql/suites/select/boolean_where.cfg new file mode 100644 index 0000000000..a09f034ddd --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/boolean_where.cfg @@ -0,0 +1 @@ +in Input boolean_where.txt diff --git a/yql/essentials/tests/sql/suites/select/boolean_where.sql b/yql/essentials/tests/sql/suites/select/boolean_where.sql new file mode 100644 index 0000000000..c12a9b6022 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/boolean_where.sql @@ -0,0 +1,2 @@ +select * from plato.Input where e; +select a from plato.Input where not e; diff --git a/yql/essentials/tests/sql/suites/select/boolean_where.txt b/yql/essentials/tests/sql/suites/select/boolean_where.txt new file mode 100644 index 0000000000..851703e9a0 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/boolean_where.txt @@ -0,0 +1,5 @@ +{"a"=1;"b"=1u;"c"=0.1;"d"="x";"e"=%false;"f"={"a"="b";"c"="d";"e"=[0;1;2]}}; +{"a"=2;"b"=2u;"c"=2.5;"d"="xx";"e"=%true;"f"=0.123}; +{"a"=-5;"b"=8u;"c"=10.;"d"="xxx";"f"="xyz"}; +{"b"=5u;"d"="skdjfnsdf";"e"=%false}; +{}; diff --git a/yql/essentials/tests/sql/suites/select/boolean_where.txt.attr b/yql/essentials/tests/sql/suites/select/boolean_where.txt.attr new file mode 100644 index 0000000000..3176be619e --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/boolean_where.txt.attr @@ -0,0 +1,3 @@ +{ + "_read_schema"=[{"type"="int64";"name"="a"};{"type"="uint64";"name"="b"};{"type"="double";"name"="c"};{"type"="string";"name"="d"};{"type"="boolean";name="e"};{"type"="any";"name"="f"}] +} diff --git a/yql/essentials/tests/sql/suites/select/braces.sql b/yql/essentials/tests/sql/suites/select/braces.sql new file mode 100644 index 0000000000..55834ff839 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/braces.sql @@ -0,0 +1 @@ +select key, subkey, ("foo" || "bar") as value from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/calculated_values.sql b/yql/essentials/tests/sql/suites/select/calculated_values.sql new file mode 100644 index 0000000000..f23c91eaf8 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/calculated_values.sql @@ -0,0 +1,3 @@ +/* postgres can not */ +/* can not check this with postgres becouse order of columns is not specified here */ +select key, (value || "ab"), (value || "a"), value from plato.Input order by key;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/cast_double_to_uint32.sql b/yql/essentials/tests/sql/suites/select/cast_double_to_uint32.sql new file mode 100644 index 0000000000..4e9d9f6737 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/cast_double_to_uint32.sql @@ -0,0 +1 @@ +select key, subkey, cast(cast(3.1415 as smallint) as varchar) as value from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/column_labels.sql b/yql/essentials/tests/sql/suites/select/column_labels.sql new file mode 100644 index 0000000000..eacf0460c9 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/column_labels.sql @@ -0,0 +1 @@ +select key, subkey || value from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/complex_filter_with_order.sql b/yql/essentials/tests/sql/suites/select/complex_filter_with_order.sql new file mode 100644 index 0000000000..6ed86d9d92 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/complex_filter_with_order.sql @@ -0,0 +1 @@ +select key as value, subkey, value as key from plato.Input where value > "A" and length(value) = cast(3 as smallint) order by key;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/complex_view_input.txt b/yql/essentials/tests/sql/suites/select/complex_view_input.txt new file mode 100644 index 0000000000..df76c64125 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/complex_view_input.txt @@ -0,0 +1,4 @@ +{"key"="075";"subkey"="1";"value"="a7c"}; +{"key"="800";"subkey"="2";"value"="ddd"}; +{"key"="020";"subkey"="3";"value"="q"}; +{"key"="150";"subkey"="4";"value"="q8z"}; diff --git a/yql/essentials/tests/sql/suites/select/complex_view_input.txt.attr b/yql/essentials/tests/sql/suites/select/complex_view_input.txt.attr new file mode 100644 index 0000000000..a9108a292e --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/complex_view_input.txt.attr @@ -0,0 +1,32 @@ +{ + "_yql_view_struct"="SELECT YQL::@@(AsStruct '('k (Member row 'key)) '('s (Member row 'subkey)) '('v (Member row 'value)))@@ as struct FROM self;"; + "_yql_view_tuple"="SELECT YQL::@@'((Member row 'key) (Member row 'subkey) (Member row 'value))@@ as tuple FROM self;"; + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/yql/essentials/tests/sql/suites/select/const_subrequest_and_select_by_all.sql b/yql/essentials/tests/sql/suites/select/const_subrequest_and_select_by_all.sql new file mode 100644 index 0000000000..405f199c6b --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/const_subrequest_and_select_by_all.sql @@ -0,0 +1,9 @@ +/* postgres can not */ +USE plato; + +$input = (FROM Input SELECT key ORDER BY key LIMIT 3); + +--insert into Output +SELECT * FROM $input; + +SELECT * FROM Input WHERE key = $input; diff --git a/yql/essentials/tests/sql/suites/select/core_func_test_bit.sql b/yql/essentials/tests/sql/suites/select/core_func_test_bit.sql new file mode 100644 index 0000000000..d446c253fe --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/core_func_test_bit.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +SELECT TestBit(" ", 4) as bit4, TestBit(" ", 5) as bit5 diff --git a/yql/essentials/tests/sql/suites/select/corr_name_in_select.sql b/yql/essentials/tests/sql/suites/select/corr_name_in_select.sql new file mode 100644 index 0000000000..10294f918d --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/corr_name_in_select.sql @@ -0,0 +1 @@ +select b.sortkey from (select a.key as sortkey from plato.Input as a) as b order by b.sortkey desc; diff --git a/yql/essentials/tests/sql/suites/select/corr_name_in_select_seq.sql b/yql/essentials/tests/sql/suites/select/corr_name_in_select_seq.sql new file mode 100644 index 0000000000..514b9f94cb --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/corr_name_in_select_seq.sql @@ -0,0 +1 @@ +select c.key from (select b.key from (select a.key from plato.Input as a) as b) as c order by c.key; diff --git a/yql/essentials/tests/sql/suites/select/create_structures.sql b/yql/essentials/tests/sql/suites/select/create_structures.sql new file mode 100644 index 0000000000..79baf49bb3 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/create_structures.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +select (key as k), (subkey as s, value as v) from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/create_tuples.sql b/yql/essentials/tests/sql/suites/select/create_tuples.sql new file mode 100644 index 0000000000..84387a3b06 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/create_tuples.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +select (key,), (subkey, value) from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/data_instance.sql b/yql/essentials/tests/sql/suites/select/data_instance.sql new file mode 100644 index 0000000000..457d2d110c --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/data_instance.sql @@ -0,0 +1,45 @@ +/* postgres can not */ +select Bool("true"); +select Bool("FalsE"); +select Int8("-128"); +select Int8("127"); +select Uint8("0"); +select Uint8("255"); +select Int16("-32768"); +select Int16("32767"); +select Uint16("0"); +select Uint16("65535"); +select Int32("-2147483648"); +select Int32("2147483647"); +select Uint32("0"); +select Uint32("4294967295"); +select Int64("-9223372036854775808"); +select Int64("9223372036854775807"); +select Uint64("0"); +select Uint64("18446744073709551615"); +select Float("0"); +select Float("1"); +select Float("-1e30"); +select Float("-inf"); +select Float("+inf"); +select Float("nan"); +select Double("0"); +select Double("1"); +select Double("-1e300"); +select Double("-inf"); +select Double("+inf"); +select Double("nan"); +select String("foo\xffbar"); +select Utf8("привет"); +select Yson("<a=1>[3;%false]"); +select Json(@@{"a":1,"b":null}@@); +select cast(Date("2000-01-01") as string); +select cast(Datetime("2000-01-01T01:02:03Z") as string); +select cast(Timestamp("2000-01-01T01:02:03.4Z") as string); +select cast(Interval("P1DT12H") as string); +select TZDATE("2010-07-01,Europe/Moscow"); +select TZDATE("2010-07-01,America/Los_Angeles"); +select TZDATETIME("2010-07-01T00:00:00,Europe/Moscow"); +select TZTIMESTAMP("2010-07-01T00:00:00,America/Los_Angeles"); +select TZTIMESTAMP("2010-07-01T12:00:00.123456,Europe/Moscow"); +select Uuid('550e8400-e29b-41d4-a716-446655440000'); diff --git a/yql/essentials/tests/sql/suites/select/deep_udf_call.cfg b/yql/essentials/tests/sql/suites/select/deep_udf_call.cfg new file mode 100644 index 0000000000..55c2f97264 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/deep_udf_call.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +udf math_udf diff --git a/yql/essentials/tests/sql/suites/select/deep_udf_call.sql b/yql/essentials/tests/sql/suites/select/deep_udf_call.sql new file mode 100644 index 0000000000..03bceb447b --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/deep_udf_call.sql @@ -0,0 +1,11 @@ +/* postgres can not */ +USE plato; + +$data = ( + SELECT + Math::Pi() * CAST(subkey AS Double) AS rad + FROM Input +); + +--INSERT INTO Output +SELECT Math::Sqrt(Math::Sin(rad) * Math::Sin(rad) + Math::Cos(rad) * Math::Cos(rad)) FROM $data diff --git a/yql/essentials/tests/sql/suites/select/default.cfg b/yql/essentials/tests/sql/suites/select/default.cfg new file mode 100644 index 0000000000..a1f7a5a9b7 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/default.cfg @@ -0,0 +1,4 @@ +in Input input.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yql/essentials/tests/sql/suites/select/dict_lookup.sql b/yql/essentials/tests/sql/suites/select/dict_lookup.sql new file mode 100644 index 0000000000..50f85dd099 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/dict_lookup.sql @@ -0,0 +1,10 @@ +/* syntax version 1 */ +/* postgres can not */ +use plato; +$dictList = (select + AsDict(AsTuple(value, CAST(subkey AS Int32))) as `dict`, + AsDict(AsTuple("z", "a"), AsTuple("y", "b")) AS d, + subkey, value +from Input); + +select d["z"] as static, input.`dict`[input.value] as dynamic, input.`dict` as `dict` from $dictList as input; diff --git a/yql/essentials/tests/sql/suites/select/dict_lookup_by_key.sql b/yql/essentials/tests/sql/suites/select/dict_lookup_by_key.sql new file mode 100644 index 0000000000..9a7feebcae --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/dict_lookup_by_key.sql @@ -0,0 +1,14 @@ +/* syntax version 1 */ +/* postgres can not */ +$key_text = AsDict( + ('911', 'emergency'), + ('200', 'two hundred'), + ('150', 'one and half hundred'), + ('023', 'funny'), + ('075', '3/4 of hundred') +); + +SELECT + value, + $key_text[key] as key_text +from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/dict_lookup_by_key_with_def.sql b/yql/essentials/tests/sql/suites/select/dict_lookup_by_key_with_def.sql new file mode 100644 index 0000000000..19011f7714 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/dict_lookup_by_key_with_def.sql @@ -0,0 +1,14 @@ +/* syntax version 1 */ +/* postgres can not */ +$key_text = AsDict( + ('911', 'emergency'), + ('200', 'two hundred'), + ('150', 'one and half hundred'), + ('023', 'funny'), + ('075', '3/4 of hundred') +); + +SELECT + value, + $key_text[key] ?? "unknown" as key_text +from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/dict_lookup_column_names.sql b/yql/essentials/tests/sql/suites/select/dict_lookup_column_names.sql new file mode 100644 index 0000000000..6ee1151214 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/dict_lookup_column_names.sql @@ -0,0 +1,5 @@ +/* syntax version 1 */ +/* postgres can not */ +use plato; +$dictList = (select AsDict(AsTuple(value, CAST(subkey AS Int32))) as `dict`, subkey, value from Input); +select input.`dict`[input.value], input.`dict`[input.subkey] from $dictList as input; diff --git a/yql/essentials/tests/sql/suites/select/dict_with_few_keys.sql b/yql/essentials/tests/sql/suites/select/dict_with_few_keys.sql new file mode 100644 index 0000000000..b2a1601612 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/dict_with_few_keys.sql @@ -0,0 +1,15 @@ +/* syntax version 1 */ +/* postgres can not */ +USE plato; + +$dict = ( +SELECT + AsDict( + AsTuple("key", cast(key as uint32) ?? 0), + AsTuple("sk", cast(subkey as uint32) ?? 1), + AsTuple("str", Cast(ByteAt(value, 0) as uint32) ?? 256) + ) as dd +FROM Input); + +--INSERT INTO Output +SELECT dd['key'] as key, dd['str'] as zz from $dict as d ORDER BY key, zz diff --git a/yql/essentials/tests/sql/suites/select/digits.cfg b/yql/essentials/tests/sql/suites/select/digits.cfg new file mode 100644 index 0000000000..55c2f97264 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/digits.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +udf math_udf diff --git a/yql/essentials/tests/sql/suites/select/digits.sql b/yql/essentials/tests/sql/suites/select/digits.sql new file mode 100644 index 0000000000..5425900bdf --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/digits.sql @@ -0,0 +1,8 @@ +/* postgres can not */ +select 0xffut, 0x0ffut, 0o77ut, 0xdead, 0xdeadl, 0xdeadbeef, 0x7fffffff, 0x80000000, 0x80000000u, 0xffffffffu, 0x80000000ul; +select 0xfFUt, 0X0FfuT, 0O77ut, 0xDeaD, 0xdeaDL, 0xdeaDBeef, 0X7fFfFfff, 0x80000000, 0x80000000U, 0xffffffffu, 0x80000000uL; + +select 0.f, 0.0f, 1, 1l, 1u, 1ut, 1., 2.f, Math::Round(3.14f, -3), 1.e2f, 1.0e2f; +select 0.F, 0.0f, 1, 1L, 1u, 1Ut, 1., 2.f, Math::Round(3.14F, -3), 1.e2f, 1.0E2F; + +select 1t,2ut,3s,4us,5,6u,7l,8ul,9.0,10.0f; diff --git a/yql/essentials/tests/sql/suites/select/discard.sql b/yql/essentials/tests/sql/suites/select/discard.sql new file mode 100644 index 0000000000..f1f3423811 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/discard.sql @@ -0,0 +1,9 @@ +/* postgres can not */ +use plato; +pragma DisableSimpleColumns; +discard select 1; +discard select * from Input; +discard select * from Input where key<"foo"; +discard select * from Input as a join Input as b using(key); +discard select sum(length(value)), key, subkey from Input group by rollup(key,subkey) order by key, subkey; +discard select * from (select key || "a" || "b" as key from Input) as a join (select key || "ab" as key from Input) as b using(key); diff --git a/yql/essentials/tests/sql/suites/select/dot_in_alias.sql b/yql/essentials/tests/sql/suites/select/dot_in_alias.sql new file mode 100644 index 0000000000..0f5f81aae8 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/dot_in_alias.sql @@ -0,0 +1,6 @@ +/* postgres can not */ +USE plato; +PRAGMA AllowDotInAlias; + +--INSERT INTO Output +SELECT key as `.key`, subkey as `sub.key`, value as `value.` FROM Input ORDER BY `.key`, `sub.key` diff --git a/yql/essentials/tests/sql/suites/select/dot_name_subrequest.sql b/yql/essentials/tests/sql/suites/select/dot_name_subrequest.sql new file mode 100644 index 0000000000..a685c26f29 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/dot_name_subrequest.sql @@ -0,0 +1,8 @@ +/* postgres can not */ +USE plato; +PRAGMA DisableSimpleColumns; + +$req = (SELECT 100500 as magic, t.* FROM Input as t); + +--INSERT INTO Output +SELECT `t.subkey` as sk, `t.value` as val FROM $req ORDER BY sk diff --git a/yql/essentials/tests/sql/suites/select/double_at_ids.sql b/yql/essentials/tests/sql/suites/select/double_at_ids.sql new file mode 100644 index 0000000000..994d7f8167 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/double_at_ids.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +select @@@@, @@A@@, @@@A@@, @@@@@@@@;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/exists_false.sql b/yql/essentials/tests/sql/suites/select/exists_false.sql new file mode 100644 index 0000000000..dd4564a387 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/exists_false.sql @@ -0,0 +1 @@ +SELECT EXISTS (SELECT * FROM plato.Input WHERE key = 'none') from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/exists_true.sql b/yql/essentials/tests/sql/suites/select/exists_true.sql new file mode 100644 index 0000000000..163f223faf --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/exists_true.sql @@ -0,0 +1 @@ +SELECT EXISTS (SELECT 'Cool') from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/extend_and_take.cfg b/yql/essentials/tests/sql/suites/select/extend_and_take.cfg new file mode 100644 index 0000000000..48d54a12ff --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/extend_and_take.cfg @@ -0,0 +1,4 @@ +in Input input.txt +in Input2 input2.txt +in Input3 input3.txt +udf string_udf diff --git a/yql/essentials/tests/sql/suites/select/extend_and_take.sql b/yql/essentials/tests/sql/suites/select/extend_and_take.sql new file mode 100644 index 0000000000..58867d204a --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/extend_and_take.sql @@ -0,0 +1,3 @@ +/* syntax version 1 */ +/* postgres can not */ +select ListExtend(String::SplitToList("1234 123", " "),String::SplitToList("1234 123", " "))[1]; diff --git a/yql/essentials/tests/sql/suites/select/from_in_front.sql b/yql/essentials/tests/sql/suites/select/from_in_front.sql new file mode 100644 index 0000000000..70b0c1c356 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/from_in_front.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +from plato.Input select * order by key, subkey limit 1; diff --git a/yql/essentials/tests/sql/suites/select/from_in_front_sub.sql b/yql/essentials/tests/sql/suites/select/from_in_front_sub.sql new file mode 100644 index 0000000000..e611f8c661 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/from_in_front_sub.sql @@ -0,0 +1,9 @@ +/* postgres can not */ +from + (select cast(subkey as Double) / cast(key as Double) as val, value from plato.Input2) as res +select + count(val) as subkey, + cast(avg(val) as int) as value, + value as key +group by value +order by subkey, value;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/hits_count.cfg b/yql/essentials/tests/sql/suites/select/hits_count.cfg new file mode 100644 index 0000000000..3dd8c79387 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/hits_count.cfg @@ -0,0 +1,3 @@ +in Input1 hits_input1.txt +in Input2 hits_input2.txt +udf url_udf
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/hits_count.sql b/yql/essentials/tests/sql/suites/select/hits_count.sql new file mode 100644 index 0000000000..df10886307 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/hits_count.sql @@ -0,0 +1,33 @@ +/* postgres can not */ +USE plato; + +$data = ( + SELECT + Url::Normalize(value) AS normalized_url, + Url::GetHost(Url::Normalize(value)) AS host, + Url::GetDomain(Url::Normalize(value), 1) AS tld + FROM CONCAT( + `Input1`, + `Input2` + ) +); +$ru_hosts = ( + SELECT + host + FROM + $data + WHERE normalized_url IS NOT NULL AND ( + tld = "ru" + OR tld = "su" + OR tld = "рф" + OR tld = "xn--p1ai" -- punycode рф + ) +); + +SELECT + host AS host, + COUNT(*) AS hits_count +FROM $ru_hosts +GROUP BY host +ORDER BY hits_count DESC +LIMIT 25; diff --git a/yql/essentials/tests/sql/suites/select/hits_input1.txt b/yql/essentials/tests/sql/suites/select/hits_input1.txt new file mode 100644 index 0000000000..e503207310 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/hits_input1.txt @@ -0,0 +1,3 @@ +{"key"="1";"subkey"="";"value"="http://www.ya.ru/foo"}; +{"key"="2";"subkey"="";"value"="http://www.ya.ru/bar"}; +{"key"="3";"subkey"="";"value"="http://www.ya.hz/wat"}; diff --git a/yql/essentials/tests/sql/suites/select/hits_input2.txt b/yql/essentials/tests/sql/suites/select/hits_input2.txt new file mode 100644 index 0000000000..70707946e0 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/hits_input2.txt @@ -0,0 +1,3 @@ +{"key"="1";"subkey"="";"value"="http://www.foo.ru/"}; +{"key"="2";"subkey"="";"value"="http://www.wat.com/"}; +{"key"="3";"subkey"="";"value"="http://www.ya.hz/wat"}; diff --git a/yql/essentials/tests/sql/suites/select/host_count.cfg b/yql/essentials/tests/sql/suites/select/host_count.cfg new file mode 100644 index 0000000000..72fa41ff1f --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/host_count.cfg @@ -0,0 +1,3 @@ +in Input1 host_input1.txt +in Input2 host_input2.txt +udf url_udf diff --git a/yql/essentials/tests/sql/suites/select/host_count.sql b/yql/essentials/tests/sql/suites/select/host_count.sql new file mode 100644 index 0000000000..eed3d6c9fa --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/host_count.sql @@ -0,0 +1,33 @@ +/* postgres can not */ +USE plato; + +$data = ( + SELECT + Url::Normalize(url) AS normalized_url, + Url::GetHost(Url::Normalize(url)) AS host, + Url::GetDomain(Url::Normalize(url), 1) AS tld + FROM CONCAT( + `Input1`, + `Input2` + ) +); +$ru_hosts = ( + SELECT + tld, + host + FROM + $data + WHERE normalized_url IS NOT NULL AND ( + tld = "ru" + OR tld = "su" + OR tld = "рф" + OR tld = "xn--p1ai" -- punycode рф + ) +); + +SELECT + tld, + COUNT(DISTINCT host) AS hosts_count +FROM $ru_hosts +GROUP BY tld +ORDER BY hosts_count DESC; diff --git a/yql/essentials/tests/sql/suites/select/host_input1.txt b/yql/essentials/tests/sql/suites/select/host_input1.txt new file mode 100644 index 0000000000..2a21fe973a --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/host_input1.txt @@ -0,0 +1,3 @@ +{"url"="http://www.ya.ru/foo";}; +{"url"="http://www.ya.ru/bar";}; +{"url"="http://www.ya.hz/wat";}; diff --git a/yql/essentials/tests/sql/suites/select/host_input1.txt.attr b/yql/essentials/tests/sql/suites/select/host_input1.txt.attr new file mode 100644 index 0000000000..fb4f4c76a0 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/host_input1.txt.attr @@ -0,0 +1,16 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "url"; + [ + "DataType"; + "String" + ] + ]; + ] + ] + } +} diff --git a/yql/essentials/tests/sql/suites/select/host_input2.txt b/yql/essentials/tests/sql/suites/select/host_input2.txt new file mode 100644 index 0000000000..6102055fa1 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/host_input2.txt @@ -0,0 +1,3 @@ +{"url"="http://www.foo.ru/";}; +{"url"="http://www.wat.com/";}; +{"url"="http://www.ya.hz/wat";}; diff --git a/yql/essentials/tests/sql/suites/select/host_input2.txt.attr b/yql/essentials/tests/sql/suites/select/host_input2.txt.attr new file mode 100644 index 0000000000..fb4f4c76a0 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/host_input2.txt.attr @@ -0,0 +1,16 @@ +{ + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "url"; + [ + "DataType"; + "String" + ] + ]; + ] + ] + } +} diff --git a/yql/essentials/tests/sql/suites/select/id_xor.sql b/yql/essentials/tests/sql/suites/select/id_xor.sql new file mode 100644 index 0000000000..39b40de153 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/id_xor.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +select Yql::Xor(true,false); diff --git a/yql/essentials/tests/sql/suites/select/if.sql b/yql/essentials/tests/sql/suites/select/if.sql new file mode 100644 index 0000000000..69b35b586e --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/if.sql @@ -0,0 +1,6 @@ +/* postgres can not */ +SELECT + if(LENGTH(value) > 2, "long", "short") AS if, + if(false, 3) AS no_else +FROM plato.Input +; diff --git a/yql/essentials/tests/sql/suites/select/input.txt b/yql/essentials/tests/sql/suites/select/input.txt new file mode 100644 index 0000000000..65949ea745 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/input.txt @@ -0,0 +1,4 @@ +{"key"="075";"subkey"="1";"value"="abc"}; +{"key"="800";"subkey"="2";"value"="ddd"}; +{"key"="020";"subkey"="3";"value"="q"}; +{"key"="150";"subkey"="4";"value"="qzz"}; diff --git a/yql/essentials/tests/sql/suites/select/input1100.txt b/yql/essentials/tests/sql/suites/select/input1100.txt new file mode 100644 index 0000000000..f3a5a3a5ba --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/input1100.txt @@ -0,0 +1,1100 @@ +{"key"="0000";"subkey"="0000";"value"="val0000"}; +{"key"="0001";"subkey"="0001";"value"="val0001"}; +{"key"="0002";"subkey"="0002";"value"="val0002"}; +{"key"="0003";"subkey"="0003";"value"="val0003"}; +{"key"="0004";"subkey"="0004";"value"="val0004"}; +{"key"="0005";"subkey"="0005";"value"="val0005"}; +{"key"="0006";"subkey"="0006";"value"="val0006"}; +{"key"="0007";"subkey"="0007";"value"="val0007"}; +{"key"="0008";"subkey"="0008";"value"="val0008"}; +{"key"="0009";"subkey"="0009";"value"="val0009"}; +{"key"="0010";"subkey"="0010";"value"="val0010"}; +{"key"="0011";"subkey"="0011";"value"="val0011"}; +{"key"="0012";"subkey"="0012";"value"="val0012"}; +{"key"="0013";"subkey"="0013";"value"="val0013"}; +{"key"="0014";"subkey"="0014";"value"="val0014"}; +{"key"="0015";"subkey"="0015";"value"="val0015"}; +{"key"="0016";"subkey"="0016";"value"="val0016"}; +{"key"="0017";"subkey"="0017";"value"="val0017"}; +{"key"="0018";"subkey"="0018";"value"="val0018"}; +{"key"="0019";"subkey"="0019";"value"="val0019"}; +{"key"="0020";"subkey"="0020";"value"="val0020"}; +{"key"="0021";"subkey"="0021";"value"="val0021"}; +{"key"="0022";"subkey"="0022";"value"="val0022"}; +{"key"="0023";"subkey"="0023";"value"="val0023"}; +{"key"="0024";"subkey"="0024";"value"="val0024"}; +{"key"="0025";"subkey"="0025";"value"="val0025"}; +{"key"="0026";"subkey"="0026";"value"="val0026"}; +{"key"="0027";"subkey"="0027";"value"="val0027"}; +{"key"="0028";"subkey"="0028";"value"="val0028"}; +{"key"="0029";"subkey"="0029";"value"="val0029"}; +{"key"="0030";"subkey"="0030";"value"="val0030"}; +{"key"="0031";"subkey"="0031";"value"="val0031"}; +{"key"="0032";"subkey"="0032";"value"="val0032"}; +{"key"="0033";"subkey"="0033";"value"="val0033"}; +{"key"="0034";"subkey"="0034";"value"="val0034"}; +{"key"="0035";"subkey"="0035";"value"="val0035"}; +{"key"="0036";"subkey"="0036";"value"="val0036"}; +{"key"="0037";"subkey"="0037";"value"="val0037"}; +{"key"="0038";"subkey"="0038";"value"="val0038"}; +{"key"="0039";"subkey"="0039";"value"="val0039"}; +{"key"="0040";"subkey"="0040";"value"="val0040"}; +{"key"="0041";"subkey"="0041";"value"="val0041"}; +{"key"="0042";"subkey"="0042";"value"="val0042"}; +{"key"="0043";"subkey"="0043";"value"="val0043"}; +{"key"="0044";"subkey"="0044";"value"="val0044"}; +{"key"="0045";"subkey"="0045";"value"="val0045"}; +{"key"="0046";"subkey"="0046";"value"="val0046"}; +{"key"="0047";"subkey"="0047";"value"="val0047"}; +{"key"="0048";"subkey"="0048";"value"="val0048"}; +{"key"="0049";"subkey"="0049";"value"="val0049"}; +{"key"="0050";"subkey"="0050";"value"="val0050"}; +{"key"="0051";"subkey"="0051";"value"="val0051"}; +{"key"="0052";"subkey"="0052";"value"="val0052"}; +{"key"="0053";"subkey"="0053";"value"="val0053"}; +{"key"="0054";"subkey"="0054";"value"="val0054"}; +{"key"="0055";"subkey"="0055";"value"="val0055"}; +{"key"="0056";"subkey"="0056";"value"="val0056"}; +{"key"="0057";"subkey"="0057";"value"="val0057"}; +{"key"="0058";"subkey"="0058";"value"="val0058"}; +{"key"="0059";"subkey"="0059";"value"="val0059"}; +{"key"="0060";"subkey"="0060";"value"="val0060"}; +{"key"="0061";"subkey"="0061";"value"="val0061"}; +{"key"="0062";"subkey"="0062";"value"="val0062"}; +{"key"="0063";"subkey"="0063";"value"="val0063"}; +{"key"="0064";"subkey"="0064";"value"="val0064"}; +{"key"="0065";"subkey"="0065";"value"="val0065"}; +{"key"="0066";"subkey"="0066";"value"="val0066"}; +{"key"="0067";"subkey"="0067";"value"="val0067"}; +{"key"="0068";"subkey"="0068";"value"="val0068"}; +{"key"="0069";"subkey"="0069";"value"="val0069"}; +{"key"="0070";"subkey"="0070";"value"="val0070"}; +{"key"="0071";"subkey"="0071";"value"="val0071"}; +{"key"="0072";"subkey"="0072";"value"="val0072"}; +{"key"="0073";"subkey"="0073";"value"="val0073"}; +{"key"="0074";"subkey"="0074";"value"="val0074"}; +{"key"="0075";"subkey"="0075";"value"="val0075"}; +{"key"="0076";"subkey"="0076";"value"="val0076"}; +{"key"="0077";"subkey"="0077";"value"="val0077"}; +{"key"="0078";"subkey"="0078";"value"="val0078"}; +{"key"="0079";"subkey"="0079";"value"="val0079"}; +{"key"="0080";"subkey"="0080";"value"="val0080"}; +{"key"="0081";"subkey"="0081";"value"="val0081"}; +{"key"="0082";"subkey"="0082";"value"="val0082"}; +{"key"="0083";"subkey"="0083";"value"="val0083"}; +{"key"="0084";"subkey"="0084";"value"="val0084"}; +{"key"="0085";"subkey"="0085";"value"="val0085"}; +{"key"="0086";"subkey"="0086";"value"="val0086"}; +{"key"="0087";"subkey"="0087";"value"="val0087"}; +{"key"="0088";"subkey"="0088";"value"="val0088"}; +{"key"="0089";"subkey"="0089";"value"="val0089"}; +{"key"="0090";"subkey"="0090";"value"="val0090"}; +{"key"="0091";"subkey"="0091";"value"="val0091"}; +{"key"="0092";"subkey"="0092";"value"="val0092"}; +{"key"="0093";"subkey"="0093";"value"="val0093"}; +{"key"="0094";"subkey"="0094";"value"="val0094"}; +{"key"="0095";"subkey"="0095";"value"="val0095"}; +{"key"="0096";"subkey"="0096";"value"="val0096"}; +{"key"="0097";"subkey"="0097";"value"="val0097"}; +{"key"="0098";"subkey"="0098";"value"="val0098"}; +{"key"="0099";"subkey"="0099";"value"="val0099"}; +{"key"="0100";"subkey"="0100";"value"="val0100"}; +{"key"="0101";"subkey"="0101";"value"="val0101"}; +{"key"="0102";"subkey"="0102";"value"="val0102"}; +{"key"="0103";"subkey"="0103";"value"="val0103"}; +{"key"="0104";"subkey"="0104";"value"="val0104"}; +{"key"="0105";"subkey"="0105";"value"="val0105"}; +{"key"="0106";"subkey"="0106";"value"="val0106"}; +{"key"="0107";"subkey"="0107";"value"="val0107"}; +{"key"="0108";"subkey"="0108";"value"="val0108"}; +{"key"="0109";"subkey"="0109";"value"="val0109"}; +{"key"="0110";"subkey"="0110";"value"="val0110"}; +{"key"="0111";"subkey"="0111";"value"="val0111"}; +{"key"="0112";"subkey"="0112";"value"="val0112"}; +{"key"="0113";"subkey"="0113";"value"="val0113"}; +{"key"="0114";"subkey"="0114";"value"="val0114"}; +{"key"="0115";"subkey"="0115";"value"="val0115"}; +{"key"="0116";"subkey"="0116";"value"="val0116"}; +{"key"="0117";"subkey"="0117";"value"="val0117"}; +{"key"="0118";"subkey"="0118";"value"="val0118"}; +{"key"="0119";"subkey"="0119";"value"="val0119"}; +{"key"="0120";"subkey"="0120";"value"="val0120"}; +{"key"="0121";"subkey"="0121";"value"="val0121"}; +{"key"="0122";"subkey"="0122";"value"="val0122"}; +{"key"="0123";"subkey"="0123";"value"="val0123"}; +{"key"="0124";"subkey"="0124";"value"="val0124"}; +{"key"="0125";"subkey"="0125";"value"="val0125"}; +{"key"="0126";"subkey"="0126";"value"="val0126"}; +{"key"="0127";"subkey"="0127";"value"="val0127"}; +{"key"="0128";"subkey"="0128";"value"="val0128"}; +{"key"="0129";"subkey"="0129";"value"="val0129"}; +{"key"="0130";"subkey"="0130";"value"="val0130"}; +{"key"="0131";"subkey"="0131";"value"="val0131"}; +{"key"="0132";"subkey"="0132";"value"="val0132"}; +{"key"="0133";"subkey"="0133";"value"="val0133"}; +{"key"="0134";"subkey"="0134";"value"="val0134"}; +{"key"="0135";"subkey"="0135";"value"="val0135"}; +{"key"="0136";"subkey"="0136";"value"="val0136"}; +{"key"="0137";"subkey"="0137";"value"="val0137"}; +{"key"="0138";"subkey"="0138";"value"="val0138"}; +{"key"="0139";"subkey"="0139";"value"="val0139"}; +{"key"="0140";"subkey"="0140";"value"="val0140"}; +{"key"="0141";"subkey"="0141";"value"="val0141"}; +{"key"="0142";"subkey"="0142";"value"="val0142"}; +{"key"="0143";"subkey"="0143";"value"="val0143"}; +{"key"="0144";"subkey"="0144";"value"="val0144"}; +{"key"="0145";"subkey"="0145";"value"="val0145"}; +{"key"="0146";"subkey"="0146";"value"="val0146"}; +{"key"="0147";"subkey"="0147";"value"="val0147"}; +{"key"="0148";"subkey"="0148";"value"="val0148"}; +{"key"="0149";"subkey"="0149";"value"="val0149"}; +{"key"="0150";"subkey"="0150";"value"="val0150"}; +{"key"="0151";"subkey"="0151";"value"="val0151"}; +{"key"="0152";"subkey"="0152";"value"="val0152"}; +{"key"="0153";"subkey"="0153";"value"="val0153"}; +{"key"="0154";"subkey"="0154";"value"="val0154"}; +{"key"="0155";"subkey"="0155";"value"="val0155"}; +{"key"="0156";"subkey"="0156";"value"="val0156"}; +{"key"="0157";"subkey"="0157";"value"="val0157"}; +{"key"="0158";"subkey"="0158";"value"="val0158"}; +{"key"="0159";"subkey"="0159";"value"="val0159"}; +{"key"="0160";"subkey"="0160";"value"="val0160"}; +{"key"="0161";"subkey"="0161";"value"="val0161"}; +{"key"="0162";"subkey"="0162";"value"="val0162"}; +{"key"="0163";"subkey"="0163";"value"="val0163"}; +{"key"="0164";"subkey"="0164";"value"="val0164"}; +{"key"="0165";"subkey"="0165";"value"="val0165"}; +{"key"="0166";"subkey"="0166";"value"="val0166"}; +{"key"="0167";"subkey"="0167";"value"="val0167"}; +{"key"="0168";"subkey"="0168";"value"="val0168"}; +{"key"="0169";"subkey"="0169";"value"="val0169"}; +{"key"="0170";"subkey"="0170";"value"="val0170"}; +{"key"="0171";"subkey"="0171";"value"="val0171"}; +{"key"="0172";"subkey"="0172";"value"="val0172"}; +{"key"="0173";"subkey"="0173";"value"="val0173"}; +{"key"="0174";"subkey"="0174";"value"="val0174"}; +{"key"="0175";"subkey"="0175";"value"="val0175"}; +{"key"="0176";"subkey"="0176";"value"="val0176"}; +{"key"="0177";"subkey"="0177";"value"="val0177"}; +{"key"="0178";"subkey"="0178";"value"="val0178"}; +{"key"="0179";"subkey"="0179";"value"="val0179"}; +{"key"="0180";"subkey"="0180";"value"="val0180"}; +{"key"="0181";"subkey"="0181";"value"="val0181"}; +{"key"="0182";"subkey"="0182";"value"="val0182"}; +{"key"="0183";"subkey"="0183";"value"="val0183"}; +{"key"="0184";"subkey"="0184";"value"="val0184"}; +{"key"="0185";"subkey"="0185";"value"="val0185"}; +{"key"="0186";"subkey"="0186";"value"="val0186"}; +{"key"="0187";"subkey"="0187";"value"="val0187"}; +{"key"="0188";"subkey"="0188";"value"="val0188"}; +{"key"="0189";"subkey"="0189";"value"="val0189"}; +{"key"="0190";"subkey"="0190";"value"="val0190"}; +{"key"="0191";"subkey"="0191";"value"="val0191"}; +{"key"="0192";"subkey"="0192";"value"="val0192"}; +{"key"="0193";"subkey"="0193";"value"="val0193"}; +{"key"="0194";"subkey"="0194";"value"="val0194"}; +{"key"="0195";"subkey"="0195";"value"="val0195"}; +{"key"="0196";"subkey"="0196";"value"="val0196"}; +{"key"="0197";"subkey"="0197";"value"="val0197"}; +{"key"="0198";"subkey"="0198";"value"="val0198"}; +{"key"="0199";"subkey"="0199";"value"="val0199"}; +{"key"="0200";"subkey"="0200";"value"="val0200"}; +{"key"="0201";"subkey"="0201";"value"="val0201"}; +{"key"="0202";"subkey"="0202";"value"="val0202"}; +{"key"="0203";"subkey"="0203";"value"="val0203"}; +{"key"="0204";"subkey"="0204";"value"="val0204"}; +{"key"="0205";"subkey"="0205";"value"="val0205"}; +{"key"="0206";"subkey"="0206";"value"="val0206"}; +{"key"="0207";"subkey"="0207";"value"="val0207"}; +{"key"="0208";"subkey"="0208";"value"="val0208"}; +{"key"="0209";"subkey"="0209";"value"="val0209"}; +{"key"="0210";"subkey"="0210";"value"="val0210"}; +{"key"="0211";"subkey"="0211";"value"="val0211"}; +{"key"="0212";"subkey"="0212";"value"="val0212"}; +{"key"="0213";"subkey"="0213";"value"="val0213"}; +{"key"="0214";"subkey"="0214";"value"="val0214"}; +{"key"="0215";"subkey"="0215";"value"="val0215"}; +{"key"="0216";"subkey"="0216";"value"="val0216"}; +{"key"="0217";"subkey"="0217";"value"="val0217"}; +{"key"="0218";"subkey"="0218";"value"="val0218"}; +{"key"="0219";"subkey"="0219";"value"="val0219"}; +{"key"="0220";"subkey"="0220";"value"="val0220"}; +{"key"="0221";"subkey"="0221";"value"="val0221"}; +{"key"="0222";"subkey"="0222";"value"="val0222"}; +{"key"="0223";"subkey"="0223";"value"="val0223"}; +{"key"="0224";"subkey"="0224";"value"="val0224"}; +{"key"="0225";"subkey"="0225";"value"="val0225"}; +{"key"="0226";"subkey"="0226";"value"="val0226"}; +{"key"="0227";"subkey"="0227";"value"="val0227"}; +{"key"="0228";"subkey"="0228";"value"="val0228"}; +{"key"="0229";"subkey"="0229";"value"="val0229"}; +{"key"="0230";"subkey"="0230";"value"="val0230"}; +{"key"="0231";"subkey"="0231";"value"="val0231"}; +{"key"="0232";"subkey"="0232";"value"="val0232"}; +{"key"="0233";"subkey"="0233";"value"="val0233"}; +{"key"="0234";"subkey"="0234";"value"="val0234"}; +{"key"="0235";"subkey"="0235";"value"="val0235"}; +{"key"="0236";"subkey"="0236";"value"="val0236"}; +{"key"="0237";"subkey"="0237";"value"="val0237"}; +{"key"="0238";"subkey"="0238";"value"="val0238"}; +{"key"="0239";"subkey"="0239";"value"="val0239"}; +{"key"="0240";"subkey"="0240";"value"="val0240"}; +{"key"="0241";"subkey"="0241";"value"="val0241"}; +{"key"="0242";"subkey"="0242";"value"="val0242"}; +{"key"="0243";"subkey"="0243";"value"="val0243"}; +{"key"="0244";"subkey"="0244";"value"="val0244"}; +{"key"="0245";"subkey"="0245";"value"="val0245"}; +{"key"="0246";"subkey"="0246";"value"="val0246"}; +{"key"="0247";"subkey"="0247";"value"="val0247"}; +{"key"="0248";"subkey"="0248";"value"="val0248"}; +{"key"="0249";"subkey"="0249";"value"="val0249"}; +{"key"="0250";"subkey"="0250";"value"="val0250"}; +{"key"="0251";"subkey"="0251";"value"="val0251"}; +{"key"="0252";"subkey"="0252";"value"="val0252"}; +{"key"="0253";"subkey"="0253";"value"="val0253"}; +{"key"="0254";"subkey"="0254";"value"="val0254"}; +{"key"="0255";"subkey"="0255";"value"="val0255"}; +{"key"="0256";"subkey"="0256";"value"="val0256"}; +{"key"="0257";"subkey"="0257";"value"="val0257"}; +{"key"="0258";"subkey"="0258";"value"="val0258"}; +{"key"="0259";"subkey"="0259";"value"="val0259"}; +{"key"="0260";"subkey"="0260";"value"="val0260"}; +{"key"="0261";"subkey"="0261";"value"="val0261"}; +{"key"="0262";"subkey"="0262";"value"="val0262"}; +{"key"="0263";"subkey"="0263";"value"="val0263"}; +{"key"="0264";"subkey"="0264";"value"="val0264"}; +{"key"="0265";"subkey"="0265";"value"="val0265"}; +{"key"="0266";"subkey"="0266";"value"="val0266"}; +{"key"="0267";"subkey"="0267";"value"="val0267"}; +{"key"="0268";"subkey"="0268";"value"="val0268"}; +{"key"="0269";"subkey"="0269";"value"="val0269"}; +{"key"="0270";"subkey"="0270";"value"="val0270"}; +{"key"="0271";"subkey"="0271";"value"="val0271"}; +{"key"="0272";"subkey"="0272";"value"="val0272"}; +{"key"="0273";"subkey"="0273";"value"="val0273"}; +{"key"="0274";"subkey"="0274";"value"="val0274"}; +{"key"="0275";"subkey"="0275";"value"="val0275"}; +{"key"="0276";"subkey"="0276";"value"="val0276"}; +{"key"="0277";"subkey"="0277";"value"="val0277"}; +{"key"="0278";"subkey"="0278";"value"="val0278"}; +{"key"="0279";"subkey"="0279";"value"="val0279"}; +{"key"="0280";"subkey"="0280";"value"="val0280"}; +{"key"="0281";"subkey"="0281";"value"="val0281"}; +{"key"="0282";"subkey"="0282";"value"="val0282"}; +{"key"="0283";"subkey"="0283";"value"="val0283"}; +{"key"="0284";"subkey"="0284";"value"="val0284"}; +{"key"="0285";"subkey"="0285";"value"="val0285"}; +{"key"="0286";"subkey"="0286";"value"="val0286"}; +{"key"="0287";"subkey"="0287";"value"="val0287"}; +{"key"="0288";"subkey"="0288";"value"="val0288"}; +{"key"="0289";"subkey"="0289";"value"="val0289"}; +{"key"="0290";"subkey"="0290";"value"="val0290"}; +{"key"="0291";"subkey"="0291";"value"="val0291"}; +{"key"="0292";"subkey"="0292";"value"="val0292"}; +{"key"="0293";"subkey"="0293";"value"="val0293"}; +{"key"="0294";"subkey"="0294";"value"="val0294"}; +{"key"="0295";"subkey"="0295";"value"="val0295"}; +{"key"="0296";"subkey"="0296";"value"="val0296"}; +{"key"="0297";"subkey"="0297";"value"="val0297"}; +{"key"="0298";"subkey"="0298";"value"="val0298"}; +{"key"="0299";"subkey"="0299";"value"="val0299"}; +{"key"="0300";"subkey"="0300";"value"="val0300"}; +{"key"="0301";"subkey"="0301";"value"="val0301"}; +{"key"="0302";"subkey"="0302";"value"="val0302"}; +{"key"="0303";"subkey"="0303";"value"="val0303"}; +{"key"="0304";"subkey"="0304";"value"="val0304"}; +{"key"="0305";"subkey"="0305";"value"="val0305"}; +{"key"="0306";"subkey"="0306";"value"="val0306"}; +{"key"="0307";"subkey"="0307";"value"="val0307"}; +{"key"="0308";"subkey"="0308";"value"="val0308"}; +{"key"="0309";"subkey"="0309";"value"="val0309"}; +{"key"="0310";"subkey"="0310";"value"="val0310"}; +{"key"="0311";"subkey"="0311";"value"="val0311"}; +{"key"="0312";"subkey"="0312";"value"="val0312"}; +{"key"="0313";"subkey"="0313";"value"="val0313"}; +{"key"="0314";"subkey"="0314";"value"="val0314"}; +{"key"="0315";"subkey"="0315";"value"="val0315"}; +{"key"="0316";"subkey"="0316";"value"="val0316"}; +{"key"="0317";"subkey"="0317";"value"="val0317"}; +{"key"="0318";"subkey"="0318";"value"="val0318"}; +{"key"="0319";"subkey"="0319";"value"="val0319"}; +{"key"="0320";"subkey"="0320";"value"="val0320"}; +{"key"="0321";"subkey"="0321";"value"="val0321"}; +{"key"="0322";"subkey"="0322";"value"="val0322"}; +{"key"="0323";"subkey"="0323";"value"="val0323"}; +{"key"="0324";"subkey"="0324";"value"="val0324"}; +{"key"="0325";"subkey"="0325";"value"="val0325"}; +{"key"="0326";"subkey"="0326";"value"="val0326"}; +{"key"="0327";"subkey"="0327";"value"="val0327"}; +{"key"="0328";"subkey"="0328";"value"="val0328"}; +{"key"="0329";"subkey"="0329";"value"="val0329"}; +{"key"="0330";"subkey"="0330";"value"="val0330"}; +{"key"="0331";"subkey"="0331";"value"="val0331"}; +{"key"="0332";"subkey"="0332";"value"="val0332"}; +{"key"="0333";"subkey"="0333";"value"="val0333"}; +{"key"="0334";"subkey"="0334";"value"="val0334"}; +{"key"="0335";"subkey"="0335";"value"="val0335"}; +{"key"="0336";"subkey"="0336";"value"="val0336"}; +{"key"="0337";"subkey"="0337";"value"="val0337"}; +{"key"="0338";"subkey"="0338";"value"="val0338"}; +{"key"="0339";"subkey"="0339";"value"="val0339"}; +{"key"="0340";"subkey"="0340";"value"="val0340"}; +{"key"="0341";"subkey"="0341";"value"="val0341"}; +{"key"="0342";"subkey"="0342";"value"="val0342"}; +{"key"="0343";"subkey"="0343";"value"="val0343"}; +{"key"="0344";"subkey"="0344";"value"="val0344"}; +{"key"="0345";"subkey"="0345";"value"="val0345"}; +{"key"="0346";"subkey"="0346";"value"="val0346"}; +{"key"="0347";"subkey"="0347";"value"="val0347"}; +{"key"="0348";"subkey"="0348";"value"="val0348"}; +{"key"="0349";"subkey"="0349";"value"="val0349"}; +{"key"="0350";"subkey"="0350";"value"="val0350"}; +{"key"="0351";"subkey"="0351";"value"="val0351"}; +{"key"="0352";"subkey"="0352";"value"="val0352"}; +{"key"="0353";"subkey"="0353";"value"="val0353"}; +{"key"="0354";"subkey"="0354";"value"="val0354"}; +{"key"="0355";"subkey"="0355";"value"="val0355"}; +{"key"="0356";"subkey"="0356";"value"="val0356"}; +{"key"="0357";"subkey"="0357";"value"="val0357"}; +{"key"="0358";"subkey"="0358";"value"="val0358"}; +{"key"="0359";"subkey"="0359";"value"="val0359"}; +{"key"="0360";"subkey"="0360";"value"="val0360"}; +{"key"="0361";"subkey"="0361";"value"="val0361"}; +{"key"="0362";"subkey"="0362";"value"="val0362"}; +{"key"="0363";"subkey"="0363";"value"="val0363"}; +{"key"="0364";"subkey"="0364";"value"="val0364"}; +{"key"="0365";"subkey"="0365";"value"="val0365"}; +{"key"="0366";"subkey"="0366";"value"="val0366"}; +{"key"="0367";"subkey"="0367";"value"="val0367"}; +{"key"="0368";"subkey"="0368";"value"="val0368"}; +{"key"="0369";"subkey"="0369";"value"="val0369"}; +{"key"="0370";"subkey"="0370";"value"="val0370"}; +{"key"="0371";"subkey"="0371";"value"="val0371"}; +{"key"="0372";"subkey"="0372";"value"="val0372"}; +{"key"="0373";"subkey"="0373";"value"="val0373"}; +{"key"="0374";"subkey"="0374";"value"="val0374"}; +{"key"="0375";"subkey"="0375";"value"="val0375"}; +{"key"="0376";"subkey"="0376";"value"="val0376"}; +{"key"="0377";"subkey"="0377";"value"="val0377"}; +{"key"="0378";"subkey"="0378";"value"="val0378"}; +{"key"="0379";"subkey"="0379";"value"="val0379"}; +{"key"="0380";"subkey"="0380";"value"="val0380"}; +{"key"="0381";"subkey"="0381";"value"="val0381"}; +{"key"="0382";"subkey"="0382";"value"="val0382"}; +{"key"="0383";"subkey"="0383";"value"="val0383"}; +{"key"="0384";"subkey"="0384";"value"="val0384"}; +{"key"="0385";"subkey"="0385";"value"="val0385"}; +{"key"="0386";"subkey"="0386";"value"="val0386"}; +{"key"="0387";"subkey"="0387";"value"="val0387"}; +{"key"="0388";"subkey"="0388";"value"="val0388"}; +{"key"="0389";"subkey"="0389";"value"="val0389"}; +{"key"="0390";"subkey"="0390";"value"="val0390"}; +{"key"="0391";"subkey"="0391";"value"="val0391"}; +{"key"="0392";"subkey"="0392";"value"="val0392"}; +{"key"="0393";"subkey"="0393";"value"="val0393"}; +{"key"="0394";"subkey"="0394";"value"="val0394"}; +{"key"="0395";"subkey"="0395";"value"="val0395"}; +{"key"="0396";"subkey"="0396";"value"="val0396"}; +{"key"="0397";"subkey"="0397";"value"="val0397"}; +{"key"="0398";"subkey"="0398";"value"="val0398"}; +{"key"="0399";"subkey"="0399";"value"="val0399"}; +{"key"="0400";"subkey"="0400";"value"="val0400"}; +{"key"="0401";"subkey"="0401";"value"="val0401"}; +{"key"="0402";"subkey"="0402";"value"="val0402"}; +{"key"="0403";"subkey"="0403";"value"="val0403"}; +{"key"="0404";"subkey"="0404";"value"="val0404"}; +{"key"="0405";"subkey"="0405";"value"="val0405"}; +{"key"="0406";"subkey"="0406";"value"="val0406"}; +{"key"="0407";"subkey"="0407";"value"="val0407"}; +{"key"="0408";"subkey"="0408";"value"="val0408"}; +{"key"="0409";"subkey"="0409";"value"="val0409"}; +{"key"="0410";"subkey"="0410";"value"="val0410"}; +{"key"="0411";"subkey"="0411";"value"="val0411"}; +{"key"="0412";"subkey"="0412";"value"="val0412"}; +{"key"="0413";"subkey"="0413";"value"="val0413"}; +{"key"="0414";"subkey"="0414";"value"="val0414"}; +{"key"="0415";"subkey"="0415";"value"="val0415"}; +{"key"="0416";"subkey"="0416";"value"="val0416"}; +{"key"="0417";"subkey"="0417";"value"="val0417"}; +{"key"="0418";"subkey"="0418";"value"="val0418"}; +{"key"="0419";"subkey"="0419";"value"="val0419"}; +{"key"="0420";"subkey"="0420";"value"="val0420"}; +{"key"="0421";"subkey"="0421";"value"="val0421"}; +{"key"="0422";"subkey"="0422";"value"="val0422"}; +{"key"="0423";"subkey"="0423";"value"="val0423"}; +{"key"="0424";"subkey"="0424";"value"="val0424"}; +{"key"="0425";"subkey"="0425";"value"="val0425"}; +{"key"="0426";"subkey"="0426";"value"="val0426"}; +{"key"="0427";"subkey"="0427";"value"="val0427"}; +{"key"="0428";"subkey"="0428";"value"="val0428"}; +{"key"="0429";"subkey"="0429";"value"="val0429"}; +{"key"="0430";"subkey"="0430";"value"="val0430"}; +{"key"="0431";"subkey"="0431";"value"="val0431"}; +{"key"="0432";"subkey"="0432";"value"="val0432"}; +{"key"="0433";"subkey"="0433";"value"="val0433"}; +{"key"="0434";"subkey"="0434";"value"="val0434"}; +{"key"="0435";"subkey"="0435";"value"="val0435"}; +{"key"="0436";"subkey"="0436";"value"="val0436"}; +{"key"="0437";"subkey"="0437";"value"="val0437"}; +{"key"="0438";"subkey"="0438";"value"="val0438"}; +{"key"="0439";"subkey"="0439";"value"="val0439"}; +{"key"="0440";"subkey"="0440";"value"="val0440"}; +{"key"="0441";"subkey"="0441";"value"="val0441"}; +{"key"="0442";"subkey"="0442";"value"="val0442"}; +{"key"="0443";"subkey"="0443";"value"="val0443"}; +{"key"="0444";"subkey"="0444";"value"="val0444"}; +{"key"="0445";"subkey"="0445";"value"="val0445"}; +{"key"="0446";"subkey"="0446";"value"="val0446"}; +{"key"="0447";"subkey"="0447";"value"="val0447"}; +{"key"="0448";"subkey"="0448";"value"="val0448"}; +{"key"="0449";"subkey"="0449";"value"="val0449"}; +{"key"="0450";"subkey"="0450";"value"="val0450"}; +{"key"="0451";"subkey"="0451";"value"="val0451"}; +{"key"="0452";"subkey"="0452";"value"="val0452"}; +{"key"="0453";"subkey"="0453";"value"="val0453"}; +{"key"="0454";"subkey"="0454";"value"="val0454"}; +{"key"="0455";"subkey"="0455";"value"="val0455"}; +{"key"="0456";"subkey"="0456";"value"="val0456"}; +{"key"="0457";"subkey"="0457";"value"="val0457"}; +{"key"="0458";"subkey"="0458";"value"="val0458"}; +{"key"="0459";"subkey"="0459";"value"="val0459"}; +{"key"="0460";"subkey"="0460";"value"="val0460"}; +{"key"="0461";"subkey"="0461";"value"="val0461"}; +{"key"="0462";"subkey"="0462";"value"="val0462"}; +{"key"="0463";"subkey"="0463";"value"="val0463"}; +{"key"="0464";"subkey"="0464";"value"="val0464"}; +{"key"="0465";"subkey"="0465";"value"="val0465"}; +{"key"="0466";"subkey"="0466";"value"="val0466"}; +{"key"="0467";"subkey"="0467";"value"="val0467"}; +{"key"="0468";"subkey"="0468";"value"="val0468"}; +{"key"="0469";"subkey"="0469";"value"="val0469"}; +{"key"="0470";"subkey"="0470";"value"="val0470"}; +{"key"="0471";"subkey"="0471";"value"="val0471"}; +{"key"="0472";"subkey"="0472";"value"="val0472"}; +{"key"="0473";"subkey"="0473";"value"="val0473"}; +{"key"="0474";"subkey"="0474";"value"="val0474"}; +{"key"="0475";"subkey"="0475";"value"="val0475"}; +{"key"="0476";"subkey"="0476";"value"="val0476"}; +{"key"="0477";"subkey"="0477";"value"="val0477"}; +{"key"="0478";"subkey"="0478";"value"="val0478"}; +{"key"="0479";"subkey"="0479";"value"="val0479"}; +{"key"="0480";"subkey"="0480";"value"="val0480"}; +{"key"="0481";"subkey"="0481";"value"="val0481"}; +{"key"="0482";"subkey"="0482";"value"="val0482"}; +{"key"="0483";"subkey"="0483";"value"="val0483"}; +{"key"="0484";"subkey"="0484";"value"="val0484"}; +{"key"="0485";"subkey"="0485";"value"="val0485"}; +{"key"="0486";"subkey"="0486";"value"="val0486"}; +{"key"="0487";"subkey"="0487";"value"="val0487"}; +{"key"="0488";"subkey"="0488";"value"="val0488"}; +{"key"="0489";"subkey"="0489";"value"="val0489"}; +{"key"="0490";"subkey"="0490";"value"="val0490"}; +{"key"="0491";"subkey"="0491";"value"="val0491"}; +{"key"="0492";"subkey"="0492";"value"="val0492"}; +{"key"="0493";"subkey"="0493";"value"="val0493"}; +{"key"="0494";"subkey"="0494";"value"="val0494"}; +{"key"="0495";"subkey"="0495";"value"="val0495"}; +{"key"="0496";"subkey"="0496";"value"="val0496"}; +{"key"="0497";"subkey"="0497";"value"="val0497"}; +{"key"="0498";"subkey"="0498";"value"="val0498"}; +{"key"="0499";"subkey"="0499";"value"="val0499"}; +{"key"="0500";"subkey"="0500";"value"="val0500"}; +{"key"="0501";"subkey"="0501";"value"="val0501"}; +{"key"="0502";"subkey"="0502";"value"="val0502"}; +{"key"="0503";"subkey"="0503";"value"="val0503"}; +{"key"="0504";"subkey"="0504";"value"="val0504"}; +{"key"="0505";"subkey"="0505";"value"="val0505"}; +{"key"="0506";"subkey"="0506";"value"="val0506"}; +{"key"="0507";"subkey"="0507";"value"="val0507"}; +{"key"="0508";"subkey"="0508";"value"="val0508"}; +{"key"="0509";"subkey"="0509";"value"="val0509"}; +{"key"="0510";"subkey"="0510";"value"="val0510"}; +{"key"="0511";"subkey"="0511";"value"="val0511"}; +{"key"="0512";"subkey"="0512";"value"="val0512"}; +{"key"="0513";"subkey"="0513";"value"="val0513"}; +{"key"="0514";"subkey"="0514";"value"="val0514"}; +{"key"="0515";"subkey"="0515";"value"="val0515"}; +{"key"="0516";"subkey"="0516";"value"="val0516"}; +{"key"="0517";"subkey"="0517";"value"="val0517"}; +{"key"="0518";"subkey"="0518";"value"="val0518"}; +{"key"="0519";"subkey"="0519";"value"="val0519"}; +{"key"="0520";"subkey"="0520";"value"="val0520"}; +{"key"="0521";"subkey"="0521";"value"="val0521"}; +{"key"="0522";"subkey"="0522";"value"="val0522"}; +{"key"="0523";"subkey"="0523";"value"="val0523"}; +{"key"="0524";"subkey"="0524";"value"="val0524"}; +{"key"="0525";"subkey"="0525";"value"="val0525"}; +{"key"="0526";"subkey"="0526";"value"="val0526"}; +{"key"="0527";"subkey"="0527";"value"="val0527"}; +{"key"="0528";"subkey"="0528";"value"="val0528"}; +{"key"="0529";"subkey"="0529";"value"="val0529"}; +{"key"="0530";"subkey"="0530";"value"="val0530"}; +{"key"="0531";"subkey"="0531";"value"="val0531"}; +{"key"="0532";"subkey"="0532";"value"="val0532"}; +{"key"="0533";"subkey"="0533";"value"="val0533"}; +{"key"="0534";"subkey"="0534";"value"="val0534"}; +{"key"="0535";"subkey"="0535";"value"="val0535"}; +{"key"="0536";"subkey"="0536";"value"="val0536"}; +{"key"="0537";"subkey"="0537";"value"="val0537"}; +{"key"="0538";"subkey"="0538";"value"="val0538"}; +{"key"="0539";"subkey"="0539";"value"="val0539"}; +{"key"="0540";"subkey"="0540";"value"="val0540"}; +{"key"="0541";"subkey"="0541";"value"="val0541"}; +{"key"="0542";"subkey"="0542";"value"="val0542"}; +{"key"="0543";"subkey"="0543";"value"="val0543"}; +{"key"="0544";"subkey"="0544";"value"="val0544"}; +{"key"="0545";"subkey"="0545";"value"="val0545"}; +{"key"="0546";"subkey"="0546";"value"="val0546"}; +{"key"="0547";"subkey"="0547";"value"="val0547"}; +{"key"="0548";"subkey"="0548";"value"="val0548"}; +{"key"="0549";"subkey"="0549";"value"="val0549"}; +{"key"="0550";"subkey"="0550";"value"="val0550"}; +{"key"="0551";"subkey"="0551";"value"="val0551"}; +{"key"="0552";"subkey"="0552";"value"="val0552"}; +{"key"="0553";"subkey"="0553";"value"="val0553"}; +{"key"="0554";"subkey"="0554";"value"="val0554"}; +{"key"="0555";"subkey"="0555";"value"="val0555"}; +{"key"="0556";"subkey"="0556";"value"="val0556"}; +{"key"="0557";"subkey"="0557";"value"="val0557"}; +{"key"="0558";"subkey"="0558";"value"="val0558"}; +{"key"="0559";"subkey"="0559";"value"="val0559"}; +{"key"="0560";"subkey"="0560";"value"="val0560"}; +{"key"="0561";"subkey"="0561";"value"="val0561"}; +{"key"="0562";"subkey"="0562";"value"="val0562"}; +{"key"="0563";"subkey"="0563";"value"="val0563"}; +{"key"="0564";"subkey"="0564";"value"="val0564"}; +{"key"="0565";"subkey"="0565";"value"="val0565"}; +{"key"="0566";"subkey"="0566";"value"="val0566"}; +{"key"="0567";"subkey"="0567";"value"="val0567"}; +{"key"="0568";"subkey"="0568";"value"="val0568"}; +{"key"="0569";"subkey"="0569";"value"="val0569"}; +{"key"="0570";"subkey"="0570";"value"="val0570"}; +{"key"="0571";"subkey"="0571";"value"="val0571"}; +{"key"="0572";"subkey"="0572";"value"="val0572"}; +{"key"="0573";"subkey"="0573";"value"="val0573"}; +{"key"="0574";"subkey"="0574";"value"="val0574"}; +{"key"="0575";"subkey"="0575";"value"="val0575"}; +{"key"="0576";"subkey"="0576";"value"="val0576"}; +{"key"="0577";"subkey"="0577";"value"="val0577"}; +{"key"="0578";"subkey"="0578";"value"="val0578"}; +{"key"="0579";"subkey"="0579";"value"="val0579"}; +{"key"="0580";"subkey"="0580";"value"="val0580"}; +{"key"="0581";"subkey"="0581";"value"="val0581"}; +{"key"="0582";"subkey"="0582";"value"="val0582"}; +{"key"="0583";"subkey"="0583";"value"="val0583"}; +{"key"="0584";"subkey"="0584";"value"="val0584"}; +{"key"="0585";"subkey"="0585";"value"="val0585"}; +{"key"="0586";"subkey"="0586";"value"="val0586"}; +{"key"="0587";"subkey"="0587";"value"="val0587"}; +{"key"="0588";"subkey"="0588";"value"="val0588"}; +{"key"="0589";"subkey"="0589";"value"="val0589"}; +{"key"="0590";"subkey"="0590";"value"="val0590"}; +{"key"="0591";"subkey"="0591";"value"="val0591"}; +{"key"="0592";"subkey"="0592";"value"="val0592"}; +{"key"="0593";"subkey"="0593";"value"="val0593"}; +{"key"="0594";"subkey"="0594";"value"="val0594"}; +{"key"="0595";"subkey"="0595";"value"="val0595"}; +{"key"="0596";"subkey"="0596";"value"="val0596"}; +{"key"="0597";"subkey"="0597";"value"="val0597"}; +{"key"="0598";"subkey"="0598";"value"="val0598"}; +{"key"="0599";"subkey"="0599";"value"="val0599"}; +{"key"="0600";"subkey"="0600";"value"="val0600"}; +{"key"="0601";"subkey"="0601";"value"="val0601"}; +{"key"="0602";"subkey"="0602";"value"="val0602"}; +{"key"="0603";"subkey"="0603";"value"="val0603"}; +{"key"="0604";"subkey"="0604";"value"="val0604"}; +{"key"="0605";"subkey"="0605";"value"="val0605"}; +{"key"="0606";"subkey"="0606";"value"="val0606"}; +{"key"="0607";"subkey"="0607";"value"="val0607"}; +{"key"="0608";"subkey"="0608";"value"="val0608"}; +{"key"="0609";"subkey"="0609";"value"="val0609"}; +{"key"="0610";"subkey"="0610";"value"="val0610"}; +{"key"="0611";"subkey"="0611";"value"="val0611"}; +{"key"="0612";"subkey"="0612";"value"="val0612"}; +{"key"="0613";"subkey"="0613";"value"="val0613"}; +{"key"="0614";"subkey"="0614";"value"="val0614"}; +{"key"="0615";"subkey"="0615";"value"="val0615"}; +{"key"="0616";"subkey"="0616";"value"="val0616"}; +{"key"="0617";"subkey"="0617";"value"="val0617"}; +{"key"="0618";"subkey"="0618";"value"="val0618"}; +{"key"="0619";"subkey"="0619";"value"="val0619"}; +{"key"="0620";"subkey"="0620";"value"="val0620"}; +{"key"="0621";"subkey"="0621";"value"="val0621"}; +{"key"="0622";"subkey"="0622";"value"="val0622"}; +{"key"="0623";"subkey"="0623";"value"="val0623"}; +{"key"="0624";"subkey"="0624";"value"="val0624"}; +{"key"="0625";"subkey"="0625";"value"="val0625"}; +{"key"="0626";"subkey"="0626";"value"="val0626"}; +{"key"="0627";"subkey"="0627";"value"="val0627"}; +{"key"="0628";"subkey"="0628";"value"="val0628"}; +{"key"="0629";"subkey"="0629";"value"="val0629"}; +{"key"="0630";"subkey"="0630";"value"="val0630"}; +{"key"="0631";"subkey"="0631";"value"="val0631"}; +{"key"="0632";"subkey"="0632";"value"="val0632"}; +{"key"="0633";"subkey"="0633";"value"="val0633"}; +{"key"="0634";"subkey"="0634";"value"="val0634"}; +{"key"="0635";"subkey"="0635";"value"="val0635"}; +{"key"="0636";"subkey"="0636";"value"="val0636"}; +{"key"="0637";"subkey"="0637";"value"="val0637"}; +{"key"="0638";"subkey"="0638";"value"="val0638"}; +{"key"="0639";"subkey"="0639";"value"="val0639"}; +{"key"="0640";"subkey"="0640";"value"="val0640"}; +{"key"="0641";"subkey"="0641";"value"="val0641"}; +{"key"="0642";"subkey"="0642";"value"="val0642"}; +{"key"="0643";"subkey"="0643";"value"="val0643"}; +{"key"="0644";"subkey"="0644";"value"="val0644"}; +{"key"="0645";"subkey"="0645";"value"="val0645"}; +{"key"="0646";"subkey"="0646";"value"="val0646"}; +{"key"="0647";"subkey"="0647";"value"="val0647"}; +{"key"="0648";"subkey"="0648";"value"="val0648"}; +{"key"="0649";"subkey"="0649";"value"="val0649"}; +{"key"="0650";"subkey"="0650";"value"="val0650"}; +{"key"="0651";"subkey"="0651";"value"="val0651"}; +{"key"="0652";"subkey"="0652";"value"="val0652"}; +{"key"="0653";"subkey"="0653";"value"="val0653"}; +{"key"="0654";"subkey"="0654";"value"="val0654"}; +{"key"="0655";"subkey"="0655";"value"="val0655"}; +{"key"="0656";"subkey"="0656";"value"="val0656"}; +{"key"="0657";"subkey"="0657";"value"="val0657"}; +{"key"="0658";"subkey"="0658";"value"="val0658"}; +{"key"="0659";"subkey"="0659";"value"="val0659"}; +{"key"="0660";"subkey"="0660";"value"="val0660"}; +{"key"="0661";"subkey"="0661";"value"="val0661"}; +{"key"="0662";"subkey"="0662";"value"="val0662"}; +{"key"="0663";"subkey"="0663";"value"="val0663"}; +{"key"="0664";"subkey"="0664";"value"="val0664"}; +{"key"="0665";"subkey"="0665";"value"="val0665"}; +{"key"="0666";"subkey"="0666";"value"="val0666"}; +{"key"="0667";"subkey"="0667";"value"="val0667"}; +{"key"="0668";"subkey"="0668";"value"="val0668"}; +{"key"="0669";"subkey"="0669";"value"="val0669"}; +{"key"="0670";"subkey"="0670";"value"="val0670"}; +{"key"="0671";"subkey"="0671";"value"="val0671"}; +{"key"="0672";"subkey"="0672";"value"="val0672"}; +{"key"="0673";"subkey"="0673";"value"="val0673"}; +{"key"="0674";"subkey"="0674";"value"="val0674"}; +{"key"="0675";"subkey"="0675";"value"="val0675"}; +{"key"="0676";"subkey"="0676";"value"="val0676"}; +{"key"="0677";"subkey"="0677";"value"="val0677"}; +{"key"="0678";"subkey"="0678";"value"="val0678"}; +{"key"="0679";"subkey"="0679";"value"="val0679"}; +{"key"="0680";"subkey"="0680";"value"="val0680"}; +{"key"="0681";"subkey"="0681";"value"="val0681"}; +{"key"="0682";"subkey"="0682";"value"="val0682"}; +{"key"="0683";"subkey"="0683";"value"="val0683"}; +{"key"="0684";"subkey"="0684";"value"="val0684"}; +{"key"="0685";"subkey"="0685";"value"="val0685"}; +{"key"="0686";"subkey"="0686";"value"="val0686"}; +{"key"="0687";"subkey"="0687";"value"="val0687"}; +{"key"="0688";"subkey"="0688";"value"="val0688"}; +{"key"="0689";"subkey"="0689";"value"="val0689"}; +{"key"="0690";"subkey"="0690";"value"="val0690"}; +{"key"="0691";"subkey"="0691";"value"="val0691"}; +{"key"="0692";"subkey"="0692";"value"="val0692"}; +{"key"="0693";"subkey"="0693";"value"="val0693"}; +{"key"="0694";"subkey"="0694";"value"="val0694"}; +{"key"="0695";"subkey"="0695";"value"="val0695"}; +{"key"="0696";"subkey"="0696";"value"="val0696"}; +{"key"="0697";"subkey"="0697";"value"="val0697"}; +{"key"="0698";"subkey"="0698";"value"="val0698"}; +{"key"="0699";"subkey"="0699";"value"="val0699"}; +{"key"="0700";"subkey"="0700";"value"="val0700"}; +{"key"="0701";"subkey"="0701";"value"="val0701"}; +{"key"="0702";"subkey"="0702";"value"="val0702"}; +{"key"="0703";"subkey"="0703";"value"="val0703"}; +{"key"="0704";"subkey"="0704";"value"="val0704"}; +{"key"="0705";"subkey"="0705";"value"="val0705"}; +{"key"="0706";"subkey"="0706";"value"="val0706"}; +{"key"="0707";"subkey"="0707";"value"="val0707"}; +{"key"="0708";"subkey"="0708";"value"="val0708"}; +{"key"="0709";"subkey"="0709";"value"="val0709"}; +{"key"="0710";"subkey"="0710";"value"="val0710"}; +{"key"="0711";"subkey"="0711";"value"="val0711"}; +{"key"="0712";"subkey"="0712";"value"="val0712"}; +{"key"="0713";"subkey"="0713";"value"="val0713"}; +{"key"="0714";"subkey"="0714";"value"="val0714"}; +{"key"="0715";"subkey"="0715";"value"="val0715"}; +{"key"="0716";"subkey"="0716";"value"="val0716"}; +{"key"="0717";"subkey"="0717";"value"="val0717"}; +{"key"="0718";"subkey"="0718";"value"="val0718"}; +{"key"="0719";"subkey"="0719";"value"="val0719"}; +{"key"="0720";"subkey"="0720";"value"="val0720"}; +{"key"="0721";"subkey"="0721";"value"="val0721"}; +{"key"="0722";"subkey"="0722";"value"="val0722"}; +{"key"="0723";"subkey"="0723";"value"="val0723"}; +{"key"="0724";"subkey"="0724";"value"="val0724"}; +{"key"="0725";"subkey"="0725";"value"="val0725"}; +{"key"="0726";"subkey"="0726";"value"="val0726"}; +{"key"="0727";"subkey"="0727";"value"="val0727"}; +{"key"="0728";"subkey"="0728";"value"="val0728"}; +{"key"="0729";"subkey"="0729";"value"="val0729"}; +{"key"="0730";"subkey"="0730";"value"="val0730"}; +{"key"="0731";"subkey"="0731";"value"="val0731"}; +{"key"="0732";"subkey"="0732";"value"="val0732"}; +{"key"="0733";"subkey"="0733";"value"="val0733"}; +{"key"="0734";"subkey"="0734";"value"="val0734"}; +{"key"="0735";"subkey"="0735";"value"="val0735"}; +{"key"="0736";"subkey"="0736";"value"="val0736"}; +{"key"="0737";"subkey"="0737";"value"="val0737"}; +{"key"="0738";"subkey"="0738";"value"="val0738"}; +{"key"="0739";"subkey"="0739";"value"="val0739"}; +{"key"="0740";"subkey"="0740";"value"="val0740"}; +{"key"="0741";"subkey"="0741";"value"="val0741"}; +{"key"="0742";"subkey"="0742";"value"="val0742"}; +{"key"="0743";"subkey"="0743";"value"="val0743"}; +{"key"="0744";"subkey"="0744";"value"="val0744"}; +{"key"="0745";"subkey"="0745";"value"="val0745"}; +{"key"="0746";"subkey"="0746";"value"="val0746"}; +{"key"="0747";"subkey"="0747";"value"="val0747"}; +{"key"="0748";"subkey"="0748";"value"="val0748"}; +{"key"="0749";"subkey"="0749";"value"="val0749"}; +{"key"="0750";"subkey"="0750";"value"="val0750"}; +{"key"="0751";"subkey"="0751";"value"="val0751"}; +{"key"="0752";"subkey"="0752";"value"="val0752"}; +{"key"="0753";"subkey"="0753";"value"="val0753"}; +{"key"="0754";"subkey"="0754";"value"="val0754"}; +{"key"="0755";"subkey"="0755";"value"="val0755"}; +{"key"="0756";"subkey"="0756";"value"="val0756"}; +{"key"="0757";"subkey"="0757";"value"="val0757"}; +{"key"="0758";"subkey"="0758";"value"="val0758"}; +{"key"="0759";"subkey"="0759";"value"="val0759"}; +{"key"="0760";"subkey"="0760";"value"="val0760"}; +{"key"="0761";"subkey"="0761";"value"="val0761"}; +{"key"="0762";"subkey"="0762";"value"="val0762"}; +{"key"="0763";"subkey"="0763";"value"="val0763"}; +{"key"="0764";"subkey"="0764";"value"="val0764"}; +{"key"="0765";"subkey"="0765";"value"="val0765"}; +{"key"="0766";"subkey"="0766";"value"="val0766"}; +{"key"="0767";"subkey"="0767";"value"="val0767"}; +{"key"="0768";"subkey"="0768";"value"="val0768"}; +{"key"="0769";"subkey"="0769";"value"="val0769"}; +{"key"="0770";"subkey"="0770";"value"="val0770"}; +{"key"="0771";"subkey"="0771";"value"="val0771"}; +{"key"="0772";"subkey"="0772";"value"="val0772"}; +{"key"="0773";"subkey"="0773";"value"="val0773"}; +{"key"="0774";"subkey"="0774";"value"="val0774"}; +{"key"="0775";"subkey"="0775";"value"="val0775"}; +{"key"="0776";"subkey"="0776";"value"="val0776"}; +{"key"="0777";"subkey"="0777";"value"="val0777"}; +{"key"="0778";"subkey"="0778";"value"="val0778"}; +{"key"="0779";"subkey"="0779";"value"="val0779"}; +{"key"="0780";"subkey"="0780";"value"="val0780"}; +{"key"="0781";"subkey"="0781";"value"="val0781"}; +{"key"="0782";"subkey"="0782";"value"="val0782"}; +{"key"="0783";"subkey"="0783";"value"="val0783"}; +{"key"="0784";"subkey"="0784";"value"="val0784"}; +{"key"="0785";"subkey"="0785";"value"="val0785"}; +{"key"="0786";"subkey"="0786";"value"="val0786"}; +{"key"="0787";"subkey"="0787";"value"="val0787"}; +{"key"="0788";"subkey"="0788";"value"="val0788"}; +{"key"="0789";"subkey"="0789";"value"="val0789"}; +{"key"="0790";"subkey"="0790";"value"="val0790"}; +{"key"="0791";"subkey"="0791";"value"="val0791"}; +{"key"="0792";"subkey"="0792";"value"="val0792"}; +{"key"="0793";"subkey"="0793";"value"="val0793"}; +{"key"="0794";"subkey"="0794";"value"="val0794"}; +{"key"="0795";"subkey"="0795";"value"="val0795"}; +{"key"="0796";"subkey"="0796";"value"="val0796"}; +{"key"="0797";"subkey"="0797";"value"="val0797"}; +{"key"="0798";"subkey"="0798";"value"="val0798"}; +{"key"="0799";"subkey"="0799";"value"="val0799"}; +{"key"="0800";"subkey"="0800";"value"="val0800"}; +{"key"="0801";"subkey"="0801";"value"="val0801"}; +{"key"="0802";"subkey"="0802";"value"="val0802"}; +{"key"="0803";"subkey"="0803";"value"="val0803"}; +{"key"="0804";"subkey"="0804";"value"="val0804"}; +{"key"="0805";"subkey"="0805";"value"="val0805"}; +{"key"="0806";"subkey"="0806";"value"="val0806"}; +{"key"="0807";"subkey"="0807";"value"="val0807"}; +{"key"="0808";"subkey"="0808";"value"="val0808"}; +{"key"="0809";"subkey"="0809";"value"="val0809"}; +{"key"="0810";"subkey"="0810";"value"="val0810"}; +{"key"="0811";"subkey"="0811";"value"="val0811"}; +{"key"="0812";"subkey"="0812";"value"="val0812"}; +{"key"="0813";"subkey"="0813";"value"="val0813"}; +{"key"="0814";"subkey"="0814";"value"="val0814"}; +{"key"="0815";"subkey"="0815";"value"="val0815"}; +{"key"="0816";"subkey"="0816";"value"="val0816"}; +{"key"="0817";"subkey"="0817";"value"="val0817"}; +{"key"="0818";"subkey"="0818";"value"="val0818"}; +{"key"="0819";"subkey"="0819";"value"="val0819"}; +{"key"="0820";"subkey"="0820";"value"="val0820"}; +{"key"="0821";"subkey"="0821";"value"="val0821"}; +{"key"="0822";"subkey"="0822";"value"="val0822"}; +{"key"="0823";"subkey"="0823";"value"="val0823"}; +{"key"="0824";"subkey"="0824";"value"="val0824"}; +{"key"="0825";"subkey"="0825";"value"="val0825"}; +{"key"="0826";"subkey"="0826";"value"="val0826"}; +{"key"="0827";"subkey"="0827";"value"="val0827"}; +{"key"="0828";"subkey"="0828";"value"="val0828"}; +{"key"="0829";"subkey"="0829";"value"="val0829"}; +{"key"="0830";"subkey"="0830";"value"="val0830"}; +{"key"="0831";"subkey"="0831";"value"="val0831"}; +{"key"="0832";"subkey"="0832";"value"="val0832"}; +{"key"="0833";"subkey"="0833";"value"="val0833"}; +{"key"="0834";"subkey"="0834";"value"="val0834"}; +{"key"="0835";"subkey"="0835";"value"="val0835"}; +{"key"="0836";"subkey"="0836";"value"="val0836"}; +{"key"="0837";"subkey"="0837";"value"="val0837"}; +{"key"="0838";"subkey"="0838";"value"="val0838"}; +{"key"="0839";"subkey"="0839";"value"="val0839"}; +{"key"="0840";"subkey"="0840";"value"="val0840"}; +{"key"="0841";"subkey"="0841";"value"="val0841"}; +{"key"="0842";"subkey"="0842";"value"="val0842"}; +{"key"="0843";"subkey"="0843";"value"="val0843"}; +{"key"="0844";"subkey"="0844";"value"="val0844"}; +{"key"="0845";"subkey"="0845";"value"="val0845"}; +{"key"="0846";"subkey"="0846";"value"="val0846"}; +{"key"="0847";"subkey"="0847";"value"="val0847"}; +{"key"="0848";"subkey"="0848";"value"="val0848"}; +{"key"="0849";"subkey"="0849";"value"="val0849"}; +{"key"="0850";"subkey"="0850";"value"="val0850"}; +{"key"="0851";"subkey"="0851";"value"="val0851"}; +{"key"="0852";"subkey"="0852";"value"="val0852"}; +{"key"="0853";"subkey"="0853";"value"="val0853"}; +{"key"="0854";"subkey"="0854";"value"="val0854"}; +{"key"="0855";"subkey"="0855";"value"="val0855"}; +{"key"="0856";"subkey"="0856";"value"="val0856"}; +{"key"="0857";"subkey"="0857";"value"="val0857"}; +{"key"="0858";"subkey"="0858";"value"="val0858"}; +{"key"="0859";"subkey"="0859";"value"="val0859"}; +{"key"="0860";"subkey"="0860";"value"="val0860"}; +{"key"="0861";"subkey"="0861";"value"="val0861"}; +{"key"="0862";"subkey"="0862";"value"="val0862"}; +{"key"="0863";"subkey"="0863";"value"="val0863"}; +{"key"="0864";"subkey"="0864";"value"="val0864"}; +{"key"="0865";"subkey"="0865";"value"="val0865"}; +{"key"="0866";"subkey"="0866";"value"="val0866"}; +{"key"="0867";"subkey"="0867";"value"="val0867"}; +{"key"="0868";"subkey"="0868";"value"="val0868"}; +{"key"="0869";"subkey"="0869";"value"="val0869"}; +{"key"="0870";"subkey"="0870";"value"="val0870"}; +{"key"="0871";"subkey"="0871";"value"="val0871"}; +{"key"="0872";"subkey"="0872";"value"="val0872"}; +{"key"="0873";"subkey"="0873";"value"="val0873"}; +{"key"="0874";"subkey"="0874";"value"="val0874"}; +{"key"="0875";"subkey"="0875";"value"="val0875"}; +{"key"="0876";"subkey"="0876";"value"="val0876"}; +{"key"="0877";"subkey"="0877";"value"="val0877"}; +{"key"="0878";"subkey"="0878";"value"="val0878"}; +{"key"="0879";"subkey"="0879";"value"="val0879"}; +{"key"="0880";"subkey"="0880";"value"="val0880"}; +{"key"="0881";"subkey"="0881";"value"="val0881"}; +{"key"="0882";"subkey"="0882";"value"="val0882"}; +{"key"="0883";"subkey"="0883";"value"="val0883"}; +{"key"="0884";"subkey"="0884";"value"="val0884"}; +{"key"="0885";"subkey"="0885";"value"="val0885"}; +{"key"="0886";"subkey"="0886";"value"="val0886"}; +{"key"="0887";"subkey"="0887";"value"="val0887"}; +{"key"="0888";"subkey"="0888";"value"="val0888"}; +{"key"="0889";"subkey"="0889";"value"="val0889"}; +{"key"="0890";"subkey"="0890";"value"="val0890"}; +{"key"="0891";"subkey"="0891";"value"="val0891"}; +{"key"="0892";"subkey"="0892";"value"="val0892"}; +{"key"="0893";"subkey"="0893";"value"="val0893"}; +{"key"="0894";"subkey"="0894";"value"="val0894"}; +{"key"="0895";"subkey"="0895";"value"="val0895"}; +{"key"="0896";"subkey"="0896";"value"="val0896"}; +{"key"="0897";"subkey"="0897";"value"="val0897"}; +{"key"="0898";"subkey"="0898";"value"="val0898"}; +{"key"="0899";"subkey"="0899";"value"="val0899"}; +{"key"="0900";"subkey"="0900";"value"="val0900"}; +{"key"="0901";"subkey"="0901";"value"="val0901"}; +{"key"="0902";"subkey"="0902";"value"="val0902"}; +{"key"="0903";"subkey"="0903";"value"="val0903"}; +{"key"="0904";"subkey"="0904";"value"="val0904"}; +{"key"="0905";"subkey"="0905";"value"="val0905"}; +{"key"="0906";"subkey"="0906";"value"="val0906"}; +{"key"="0907";"subkey"="0907";"value"="val0907"}; +{"key"="0908";"subkey"="0908";"value"="val0908"}; +{"key"="0909";"subkey"="0909";"value"="val0909"}; +{"key"="0910";"subkey"="0910";"value"="val0910"}; +{"key"="0911";"subkey"="0911";"value"="val0911"}; +{"key"="0912";"subkey"="0912";"value"="val0912"}; +{"key"="0913";"subkey"="0913";"value"="val0913"}; +{"key"="0914";"subkey"="0914";"value"="val0914"}; +{"key"="0915";"subkey"="0915";"value"="val0915"}; +{"key"="0916";"subkey"="0916";"value"="val0916"}; +{"key"="0917";"subkey"="0917";"value"="val0917"}; +{"key"="0918";"subkey"="0918";"value"="val0918"}; +{"key"="0919";"subkey"="0919";"value"="val0919"}; +{"key"="0920";"subkey"="0920";"value"="val0920"}; +{"key"="0921";"subkey"="0921";"value"="val0921"}; +{"key"="0922";"subkey"="0922";"value"="val0922"}; +{"key"="0923";"subkey"="0923";"value"="val0923"}; +{"key"="0924";"subkey"="0924";"value"="val0924"}; +{"key"="0925";"subkey"="0925";"value"="val0925"}; +{"key"="0926";"subkey"="0926";"value"="val0926"}; +{"key"="0927";"subkey"="0927";"value"="val0927"}; +{"key"="0928";"subkey"="0928";"value"="val0928"}; +{"key"="0929";"subkey"="0929";"value"="val0929"}; +{"key"="0930";"subkey"="0930";"value"="val0930"}; +{"key"="0931";"subkey"="0931";"value"="val0931"}; +{"key"="0932";"subkey"="0932";"value"="val0932"}; +{"key"="0933";"subkey"="0933";"value"="val0933"}; +{"key"="0934";"subkey"="0934";"value"="val0934"}; +{"key"="0935";"subkey"="0935";"value"="val0935"}; +{"key"="0936";"subkey"="0936";"value"="val0936"}; +{"key"="0937";"subkey"="0937";"value"="val0937"}; +{"key"="0938";"subkey"="0938";"value"="val0938"}; +{"key"="0939";"subkey"="0939";"value"="val0939"}; +{"key"="0940";"subkey"="0940";"value"="val0940"}; +{"key"="0941";"subkey"="0941";"value"="val0941"}; +{"key"="0942";"subkey"="0942";"value"="val0942"}; +{"key"="0943";"subkey"="0943";"value"="val0943"}; +{"key"="0944";"subkey"="0944";"value"="val0944"}; +{"key"="0945";"subkey"="0945";"value"="val0945"}; +{"key"="0946";"subkey"="0946";"value"="val0946"}; +{"key"="0947";"subkey"="0947";"value"="val0947"}; +{"key"="0948";"subkey"="0948";"value"="val0948"}; +{"key"="0949";"subkey"="0949";"value"="val0949"}; +{"key"="0950";"subkey"="0950";"value"="val0950"}; +{"key"="0951";"subkey"="0951";"value"="val0951"}; +{"key"="0952";"subkey"="0952";"value"="val0952"}; +{"key"="0953";"subkey"="0953";"value"="val0953"}; +{"key"="0954";"subkey"="0954";"value"="val0954"}; +{"key"="0955";"subkey"="0955";"value"="val0955"}; +{"key"="0956";"subkey"="0956";"value"="val0956"}; +{"key"="0957";"subkey"="0957";"value"="val0957"}; +{"key"="0958";"subkey"="0958";"value"="val0958"}; +{"key"="0959";"subkey"="0959";"value"="val0959"}; +{"key"="0960";"subkey"="0960";"value"="val0960"}; +{"key"="0961";"subkey"="0961";"value"="val0961"}; +{"key"="0962";"subkey"="0962";"value"="val0962"}; +{"key"="0963";"subkey"="0963";"value"="val0963"}; +{"key"="0964";"subkey"="0964";"value"="val0964"}; +{"key"="0965";"subkey"="0965";"value"="val0965"}; +{"key"="0966";"subkey"="0966";"value"="val0966"}; +{"key"="0967";"subkey"="0967";"value"="val0967"}; +{"key"="0968";"subkey"="0968";"value"="val0968"}; +{"key"="0969";"subkey"="0969";"value"="val0969"}; +{"key"="0970";"subkey"="0970";"value"="val0970"}; +{"key"="0971";"subkey"="0971";"value"="val0971"}; +{"key"="0972";"subkey"="0972";"value"="val0972"}; +{"key"="0973";"subkey"="0973";"value"="val0973"}; +{"key"="0974";"subkey"="0974";"value"="val0974"}; +{"key"="0975";"subkey"="0975";"value"="val0975"}; +{"key"="0976";"subkey"="0976";"value"="val0976"}; +{"key"="0977";"subkey"="0977";"value"="val0977"}; +{"key"="0978";"subkey"="0978";"value"="val0978"}; +{"key"="0979";"subkey"="0979";"value"="val0979"}; +{"key"="0980";"subkey"="0980";"value"="val0980"}; +{"key"="0981";"subkey"="0981";"value"="val0981"}; +{"key"="0982";"subkey"="0982";"value"="val0982"}; +{"key"="0983";"subkey"="0983";"value"="val0983"}; +{"key"="0984";"subkey"="0984";"value"="val0984"}; +{"key"="0985";"subkey"="0985";"value"="val0985"}; +{"key"="0986";"subkey"="0986";"value"="val0986"}; +{"key"="0987";"subkey"="0987";"value"="val0987"}; +{"key"="0988";"subkey"="0988";"value"="val0988"}; +{"key"="0989";"subkey"="0989";"value"="val0989"}; +{"key"="0990";"subkey"="0990";"value"="val0990"}; +{"key"="0991";"subkey"="0991";"value"="val0991"}; +{"key"="0992";"subkey"="0992";"value"="val0992"}; +{"key"="0993";"subkey"="0993";"value"="val0993"}; +{"key"="0994";"subkey"="0994";"value"="val0994"}; +{"key"="0995";"subkey"="0995";"value"="val0995"}; +{"key"="0996";"subkey"="0996";"value"="val0996"}; +{"key"="0997";"subkey"="0997";"value"="val0997"}; +{"key"="0998";"subkey"="0998";"value"="val0998"}; +{"key"="0999";"subkey"="0999";"value"="val0999"}; +{"key"="1000";"subkey"="1000";"value"="val1000"}; +{"key"="1001";"subkey"="1001";"value"="val1001"}; +{"key"="1002";"subkey"="1002";"value"="val1002"}; +{"key"="1003";"subkey"="1003";"value"="val1003"}; +{"key"="1004";"subkey"="1004";"value"="val1004"}; +{"key"="1005";"subkey"="1005";"value"="val1005"}; +{"key"="1006";"subkey"="1006";"value"="val1006"}; +{"key"="1007";"subkey"="1007";"value"="val1007"}; +{"key"="1008";"subkey"="1008";"value"="val1008"}; +{"key"="1009";"subkey"="1009";"value"="val1009"}; +{"key"="1010";"subkey"="1010";"value"="val1010"}; +{"key"="1011";"subkey"="1011";"value"="val1011"}; +{"key"="1012";"subkey"="1012";"value"="val1012"}; +{"key"="1013";"subkey"="1013";"value"="val1013"}; +{"key"="1014";"subkey"="1014";"value"="val1014"}; +{"key"="1015";"subkey"="1015";"value"="val1015"}; +{"key"="1016";"subkey"="1016";"value"="val1016"}; +{"key"="1017";"subkey"="1017";"value"="val1017"}; +{"key"="1018";"subkey"="1018";"value"="val1018"}; +{"key"="1019";"subkey"="1019";"value"="val1019"}; +{"key"="1020";"subkey"="1020";"value"="val1020"}; +{"key"="1021";"subkey"="1021";"value"="val1021"}; +{"key"="1022";"subkey"="1022";"value"="val1022"}; +{"key"="1023";"subkey"="1023";"value"="val1023"}; +{"key"="1024";"subkey"="1024";"value"="val1024"}; +{"key"="1025";"subkey"="1025";"value"="val1025"}; +{"key"="1026";"subkey"="1026";"value"="val1026"}; +{"key"="1027";"subkey"="1027";"value"="val1027"}; +{"key"="1028";"subkey"="1028";"value"="val1028"}; +{"key"="1029";"subkey"="1029";"value"="val1029"}; +{"key"="1030";"subkey"="1030";"value"="val1030"}; +{"key"="1031";"subkey"="1031";"value"="val1031"}; +{"key"="1032";"subkey"="1032";"value"="val1032"}; +{"key"="1033";"subkey"="1033";"value"="val1033"}; +{"key"="1034";"subkey"="1034";"value"="val1034"}; +{"key"="1035";"subkey"="1035";"value"="val1035"}; +{"key"="1036";"subkey"="1036";"value"="val1036"}; +{"key"="1037";"subkey"="1037";"value"="val1037"}; +{"key"="1038";"subkey"="1038";"value"="val1038"}; +{"key"="1039";"subkey"="1039";"value"="val1039"}; +{"key"="1040";"subkey"="1040";"value"="val1040"}; +{"key"="1041";"subkey"="1041";"value"="val1041"}; +{"key"="1042";"subkey"="1042";"value"="val1042"}; +{"key"="1043";"subkey"="1043";"value"="val1043"}; +{"key"="1044";"subkey"="1044";"value"="val1044"}; +{"key"="1045";"subkey"="1045";"value"="val1045"}; +{"key"="1046";"subkey"="1046";"value"="val1046"}; +{"key"="1047";"subkey"="1047";"value"="val1047"}; +{"key"="1048";"subkey"="1048";"value"="val1048"}; +{"key"="1049";"subkey"="1049";"value"="val1049"}; +{"key"="1050";"subkey"="1050";"value"="val1050"}; +{"key"="1051";"subkey"="1051";"value"="val1051"}; +{"key"="1052";"subkey"="1052";"value"="val1052"}; +{"key"="1053";"subkey"="1053";"value"="val1053"}; +{"key"="1054";"subkey"="1054";"value"="val1054"}; +{"key"="1055";"subkey"="1055";"value"="val1055"}; +{"key"="1056";"subkey"="1056";"value"="val1056"}; +{"key"="1057";"subkey"="1057";"value"="val1057"}; +{"key"="1058";"subkey"="1058";"value"="val1058"}; +{"key"="1059";"subkey"="1059";"value"="val1059"}; +{"key"="1060";"subkey"="1060";"value"="val1060"}; +{"key"="1061";"subkey"="1061";"value"="val1061"}; +{"key"="1062";"subkey"="1062";"value"="val1062"}; +{"key"="1063";"subkey"="1063";"value"="val1063"}; +{"key"="1064";"subkey"="1064";"value"="val1064"}; +{"key"="1065";"subkey"="1065";"value"="val1065"}; +{"key"="1066";"subkey"="1066";"value"="val1066"}; +{"key"="1067";"subkey"="1067";"value"="val1067"}; +{"key"="1068";"subkey"="1068";"value"="val1068"}; +{"key"="1069";"subkey"="1069";"value"="val1069"}; +{"key"="1070";"subkey"="1070";"value"="val1070"}; +{"key"="1071";"subkey"="1071";"value"="val1071"}; +{"key"="1072";"subkey"="1072";"value"="val1072"}; +{"key"="1073";"subkey"="1073";"value"="val1073"}; +{"key"="1074";"subkey"="1074";"value"="val1074"}; +{"key"="1075";"subkey"="1075";"value"="val1075"}; +{"key"="1076";"subkey"="1076";"value"="val1076"}; +{"key"="1077";"subkey"="1077";"value"="val1077"}; +{"key"="1078";"subkey"="1078";"value"="val1078"}; +{"key"="1079";"subkey"="1079";"value"="val1079"}; +{"key"="1080";"subkey"="1080";"value"="val1080"}; +{"key"="1081";"subkey"="1081";"value"="val1081"}; +{"key"="1082";"subkey"="1082";"value"="val1082"}; +{"key"="1083";"subkey"="1083";"value"="val1083"}; +{"key"="1084";"subkey"="1084";"value"="val1084"}; +{"key"="1085";"subkey"="1085";"value"="val1085"}; +{"key"="1086";"subkey"="1086";"value"="val1086"}; +{"key"="1087";"subkey"="1087";"value"="val1087"}; +{"key"="1088";"subkey"="1088";"value"="val1088"}; +{"key"="1089";"subkey"="1089";"value"="val1089"}; +{"key"="1090";"subkey"="1090";"value"="val1090"}; +{"key"="1091";"subkey"="1091";"value"="val1091"}; +{"key"="1092";"subkey"="1092";"value"="val1092"}; +{"key"="1093";"subkey"="1093";"value"="val1093"}; +{"key"="1094";"subkey"="1094";"value"="val1094"}; +{"key"="1095";"subkey"="1095";"value"="val1095"}; +{"key"="1096";"subkey"="1096";"value"="val1096"}; +{"key"="1097";"subkey"="1097";"value"="val1097"}; +{"key"="1098";"subkey"="1098";"value"="val1098"}; +{"key"="1099";"subkey"="1099";"value"="val1099"}; diff --git a/yql/essentials/tests/sql/suites/select/input2.txt b/yql/essentials/tests/sql/suites/select/input2.txt new file mode 100644 index 0000000000..5c939cf453 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/input2.txt @@ -0,0 +1,4 @@ +{"key"="1";"subkey"="10";"value"="FOO"}; +{"key"="1";"subkey"="20";"value"="BAR"}; +{"key"="1";"subkey"="30";"value"="BAR"}; +{"key"="0";"subkey"="40";"value"="FOO"}; diff --git a/yql/essentials/tests/sql/suites/select/input3.txt b/yql/essentials/tests/sql/suites/select/input3.txt new file mode 100644 index 0000000000..48d828f6fd --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/input3.txt @@ -0,0 +1,7 @@ +{"key"="1";"subkey"="10";"value"="FOO"}; +{"key"="1";"subkey"="20";"value"="BAR"}; +{"key"="1";"subkey"="30";"value"="BAR"}; +{"key"="0";"subkey"="40";"value"="FOO"}; +{"key"="0";"subkey"="40";"value"="FOO"}; +{"key"="A";"subkey"="50";"value"="WAT"}; +{"key"="A";"subkey"="50";"value"="WAT"}; diff --git a/yql/essentials/tests/sql/suites/select/input4.txt b/yql/essentials/tests/sql/suites/select/input4.txt new file mode 100644 index 0000000000..65f33616b2 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/input4.txt @@ -0,0 +1,9 @@ +{"key"="0";"subkey"="10";"value"="FOO"}; +{"key"="0";"subkey"="40";"value"="FOO"}; +{"key"="1";"subkey"="10";"value"="FOO"}; +{"key"="1";"subkey"="20";"value"="BAR"}; +{"key"="1";"subkey"="40";"value"="BAR"}; +{"key"="1";"subkey"="50";"value"="WAT"}; +{"key"="2";"subkey"="40";"value"="WAT"}; +{"key"="2";"subkey"="50";"value"="FOO"}; +{"key"="2";"subkey"="60";"value"="BAR"}; diff --git a/yql/essentials/tests/sql/suites/select/input_expr.txt b/yql/essentials/tests/sql/suites/select/input_expr.txt new file mode 100644 index 0000000000..621e7eaead --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/input_expr.txt @@ -0,0 +1,10 @@ +{"key"="192";"subkey"="5";"value"="ddd"}; +{"key"="075";"subkey"="15";"value"="abc"}; +{"key"="911";"subkey"="1";"value"="kkk"}; +{"key"="023";"subkey"="15";"value"="aaa"}; +{"key"="527";"subkey"="1";"value"="bbb"}; +{"key"="037";"subkey"="15";"value"="ddd"}; +{"key"="761";"subkey"="1";"value"="ccc"}; +{"key"="200";"subkey"="5";"value"="qqq"}; +{"key"="150";"subkey"="5";"value"="zzz"}; +{"key"="042";"subkey"="15";"value"="kkk"}; diff --git a/yql/essentials/tests/sql/suites/select/input_intersect.txt b/yql/essentials/tests/sql/suites/select/input_intersect.txt new file mode 100644 index 0000000000..42bcf2179e --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/input_intersect.txt @@ -0,0 +1,14 @@ +{"key"="075";"subkey"="911";"value"="abc"}; +{"key"="911";"subkey"="1";"value"="kkk"}; +{"key"="023";"subkey"="527";"value"="aaa"}; +{"key"="527";"subkey"="023";"value"="bbb"}; +{"key"="037";"subkey"="075";"value"="ddd"}; +{"key"="761";"subkey"="911";"value"="ccc"}; +{"key"="200";"subkey"="075";"value"="qqq"}; +{"key"="150";"subkey"="075";"value"="zzz"}; +{"key"="023";"subkey"="911";"value"="vca"}; +{"key"="527";"subkey"="150";"value"="oef"}; +{"key"="037";"subkey"="761";"value"="vdf"}; +{"key"="761";"subkey"="037";"value"="aet"}; +{"key"="200";"subkey"="150";"value"="fdb"}; +{"key"="150";"subkey"="037";"value"="bfs"}; diff --git a/yql/essentials/tests/sql/suites/select/input_struct_field.txt b/yql/essentials/tests/sql/suites/select/input_struct_field.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/input_struct_field.txt diff --git a/yql/essentials/tests/sql/suites/select/input_struct_field.txt.attr b/yql/essentials/tests/sql/suites/select/input_struct_field.txt.attr new file mode 100644 index 0000000000..bcc8251d99 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/input_struct_field.txt.attr @@ -0,0 +1,11 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["StructType";[ + ["kk";["DataType";"String"]]; + ]]]; + ["subkey";["DataType";"String"]]; + ["value";["DataType";"String"]]; + ]]; + } +} diff --git a/yql/essentials/tests/sql/suites/select/literal_bool.sql b/yql/essentials/tests/sql/suites/select/literal_bool.sql new file mode 100644 index 0000000000..0cd9f9bac2 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/literal_bool.sql @@ -0,0 +1 @@ +select key, subkey, cast(true as varchar) as value from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/literal_negative.sql b/yql/essentials/tests/sql/suites/select/literal_negative.sql new file mode 100644 index 0000000000..de18406964 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/literal_negative.sql @@ -0,0 +1 @@ +select key, subkey, cast(-1 as varchar) as value from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/logical_ops.sql b/yql/essentials/tests/sql/suites/select/logical_ops.sql new file mode 100644 index 0000000000..062a3366d7 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/logical_ops.sql @@ -0,0 +1,6 @@ +/* postgres can not */ +SELECT + LENGTH(key) == 3 AND LENGTH(value) == 3 as and_res, + LENGTH(key) == 3 OR LENGTH(value) == 3 as or_res, + LENGTH(key) == 3 XOR LENGTH(value) == 3 as xor_res +FROM plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/match_clause.cfg b/yql/essentials/tests/sql/suites/select/match_clause.cfg new file mode 100644 index 0000000000..93eff5b6bc --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/match_clause.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input2 input2.txt +in Input3 input3.txt +udf re2_udf +udf pire_udf diff --git a/yql/essentials/tests/sql/suites/select/match_clause.sql b/yql/essentials/tests/sql/suites/select/match_clause.sql new file mode 100644 index 0000000000..9efb61a9a0 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/match_clause.sql @@ -0,0 +1,4 @@ +/* postgres can not */ +/* syntax version 1 */ +select key, subkey, value from plato.Input +where value match "q"; diff --git a/yql/essentials/tests/sql/suites/select/missing_with_nonpersist.cfg b/yql/essentials/tests/sql/suites/select/missing_with_nonpersist.cfg new file mode 100644 index 0000000000..1f1d2747db --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/missing_with_nonpersist.cfg @@ -0,0 +1,2 @@ +in Input input.txt +providers yt diff --git a/yql/essentials/tests/sql/suites/select/missing_with_nonpersist.sql b/yql/essentials/tests/sql/suites/select/missing_with_nonpersist.sql new file mode 100644 index 0000000000..82fe2a092b --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/missing_with_nonpersist.sql @@ -0,0 +1,10 @@ +USE plato; + +$data = select + Yson::Parse(cast(key as Yson)) as key, + text, -- missing colums + subkey +from Input; + +select key, subkey +from $data; diff --git a/yql/essentials/tests/sql/suites/select/multi_source_issue.sql b/yql/essentials/tests/sql/suites/select/multi_source_issue.sql new file mode 100644 index 0000000000..16e9fb83fc --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/multi_source_issue.sql @@ -0,0 +1,17 @@ +/* postgres can not */ +USE plato; + +$i = (SELECT * FROM Input2); +$ii = (SELECT * FROM Input4); + +$count_a=(SELECT count(*) FROM $i WHERE substring(value, 0, 1) = 'a'); + +--INSERT INTO Output +SELECT + count(*), count(*)/$count_a +FROM $i; + +--INSERT INTO Output +SELECT + count(*), count(*)/$count_a +FROM $ii; diff --git a/yql/essentials/tests/sql/suites/select/normalize_name.sqlx b/yql/essentials/tests/sql/suites/select/normalize_name.sqlx new file mode 100644 index 0000000000..ceb6d7eed7 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/normalize_name.sqlx @@ -0,0 +1 @@ +select co_a_lesc____e__(1); diff --git a/yql/essentials/tests/sql/suites/select/null_check.sql b/yql/essentials/tests/sql/suites/select/null_check.sql new file mode 100644 index 0000000000..2c24b3e3af --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/null_check.sql @@ -0,0 +1,7 @@ +/* postgres can not */ +/* by correct way ;-) +E assert 'a;;a' == 'a;Void;b' +E - a;;a +E + a;Void;b +*/ +SELECT 'a', x, 'b' FROM (SELECT Null as x) as sq WHERE x IS NULL; diff --git a/yql/essentials/tests/sql/suites/select/one_labeled_column.sql b/yql/essentials/tests/sql/suites/select/one_labeled_column.sql new file mode 100644 index 0000000000..3ff643663c --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/one_labeled_column.sql @@ -0,0 +1 @@ +select key as wat from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/one_unlabeled_column.sql b/yql/essentials/tests/sql/suites/select/one_unlabeled_column.sql new file mode 100644 index 0000000000..f7104a1585 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/one_unlabeled_column.sql @@ -0,0 +1 @@ +select key from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/opt_list_access.sql b/yql/essentials/tests/sql/suites/select/opt_list_access.sql new file mode 100644 index 0000000000..ed06206b42 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/opt_list_access.sql @@ -0,0 +1,7 @@ +/* syntax version 1 */ +/* postgres can not */ +use plato; + +$data = (SELECT key, Just(aggregate_list(cast(subkey as uint32))) as lsk FROM plato.Input GROUP BY cast(key as uint32) as key); + +SELECT key, lsk[0] FROM $data WHERE lsk IS NOT NULL ORDER BY key; diff --git a/yql/essentials/tests/sql/suites/select/optional_as_warn.sql b/yql/essentials/tests/sql/suites/select/optional_as_warn.sql new file mode 100644 index 0000000000..1dd720af5d --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/optional_as_warn.sql @@ -0,0 +1,18 @@ +/* syntax version 1 */ +/* dq can not */ +/* dqfile can not */ +/* yt can not */ +use plato; + +pragma AnsiOptionalAs; + +select + key subkey, + value v, +from Input order by subkey; + + +select + key AS subkey, + value v, +from Input order by subkey; diff --git a/yql/essentials/tests/sql/suites/select/optional_in_job.cfg b/yql/essentials/tests/sql/suites/select/optional_in_job.cfg new file mode 100644 index 0000000000..00dec6c3f8 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/optional_in_job.cfg @@ -0,0 +1 @@ +res result.txt diff --git a/yql/essentials/tests/sql/suites/select/optional_in_job.sql b/yql/essentials/tests/sql/suites/select/optional_in_job.sql new file mode 100644 index 0000000000..f41bd2f579 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/optional_in_job.sql @@ -0,0 +1,34 @@ +/* postgres can not */ +/* multirun can not */ +USE plato; + +insert into @a +SELECT + Yql::Nothing(OptionalType(DataType("String"))) as level1_null, + Yql::Optional(OptionalType(DataType("String")), "val") as level1_just_val, + Yql::Nothing(OptionalType(OptionalType(DataType("String")))) as level2_null, + Yql::Optional(OptionalType(OptionalType(DataType("String"))), Yql::Nothing(OptionalType(DataType("String")))) as level2_just_null, + Yql::Optional(OptionalType(OptionalType(DataType("String"))), Yql::Just("val")) as level2_just_just_val, + Yql::Nothing(OptionalType(OptionalType(OptionalType(DataType("String"))))) as level3_null, + Yql::Optional(OptionalType(OptionalType(OptionalType(DataType("String")))), Yql::Nothing(OptionalType(OptionalType(DataType("String"))))) as level3_just_null, + Yql::Optional(OptionalType(OptionalType(OptionalType(DataType("String")))), Yql::Just(Yql::Nothing(OptionalType(DataType("String"))))) as level3_just_just_null, + Yql::Optional(OptionalType(OptionalType(OptionalType(DataType("String")))), Yql::Just(Yql::Just("val"))) as level3_just_just_just_val, + "const" as const +; + +commit; + +-- Everything should be True +select + level1_null is null, + Yql::Unwrap(level1_just_val) = "val", + level2_null is null, + Yql::Unwrap(level2_just_null) is null, + Yql::Unwrap(Yql::Unwrap(level2_just_just_val)) = "val", + level3_null is null, + Yql::Unwrap(level3_just_null) is null, + Yql::Unwrap(Yql::Unwrap(level3_just_just_null)) is null, + Yql::Unwrap(Yql::Unwrap(Yql::Unwrap(level3_just_just_just_val))) = "val", + True +from @a +where const = "const"; diff --git a/yql/essentials/tests/sql/suites/select/optional_pull.cfg b/yql/essentials/tests/sql/suites/select/optional_pull.cfg new file mode 100644 index 0000000000..00dec6c3f8 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/optional_pull.cfg @@ -0,0 +1 @@ +res result.txt diff --git a/yql/essentials/tests/sql/suites/select/optional_pull.sql b/yql/essentials/tests/sql/suites/select/optional_pull.sql new file mode 100644 index 0000000000..fd5e736f64 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/optional_pull.sql @@ -0,0 +1,32 @@ +/* postgres can not */ +/* multirun can not */ +USE plato; + +insert into @a +SELECT + Yql::Nothing(OptionalType(DataType("String"))) as level1_null, + Yql::Optional(OptionalType(DataType("String")), "val") as level1_just_val, + Yql::Nothing(OptionalType(OptionalType(DataType("String")))) as level2_null, + Yql::Optional(OptionalType(OptionalType(DataType("String"))), Yql::Nothing(OptionalType(DataType("String")))) as level2_just_null, + Yql::Optional(OptionalType(OptionalType(DataType("String"))), Yql::Just("val")) as level2_just_just_val, + Yql::Nothing(OptionalType(OptionalType(OptionalType(DataType("String"))))) as level3_null, + Yql::Optional(OptionalType(OptionalType(OptionalType(DataType("String")))), Yql::Nothing(OptionalType(OptionalType(DataType("String"))))) as level3_just_null, + Yql::Optional(OptionalType(OptionalType(OptionalType(DataType("String")))), Yql::Just(Yql::Nothing(OptionalType(DataType("String"))))) as level3_just_just_null, + Yql::Optional(OptionalType(OptionalType(OptionalType(DataType("String")))), Yql::Just(Yql::Just("val"))) as level3_just_just_just_val, + "const" as const +; + +commit; + +-- Check result representation +select + level1_null, + level1_just_val, + level2_null, + level2_just_null, + level2_just_just_val, + level3_null, + level3_just_null, + level3_just_just_null, + level3_just_just_just_val +from @a; diff --git a/yql/essentials/tests/sql/suites/select/qualified_all_and_group_by.sql b/yql/essentials/tests/sql/suites/select/qualified_all_and_group_by.sql new file mode 100644 index 0000000000..2b45add62e --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/qualified_all_and_group_by.sql @@ -0,0 +1,16 @@ +/* postgres can not */ +/* syntax version 1 */ + +USE plato; +PRAGMA DisableSimpleColumns; + +--INSERT INTO Output +SELECT + hundred_keys, sum(cast(`data.subkey` as uint32)) +FROM ( + SELECT data.key as dkey, data.* + FROM Input as data +) as middle +GROUP BY + cast(middle.dkey as uint32)/100 as hundred_keys +ORDER BY hundred_keys diff --git a/yql/essentials/tests/sql/suites/select/qualified_all_and_group_by.sqlx b/yql/essentials/tests/sql/suites/select/qualified_all_and_group_by.sqlx new file mode 100644 index 0000000000..f326c4bca4 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/qualified_all_and_group_by.sqlx @@ -0,0 +1,15 @@ +/* postgres can not */ +USE plato; +PRAGMA DisableSimpleColumns; + +--INSERT INTO Output +SELECT + hundred_keys, sum(cast(data.subkey as uint32)) -- should use backticks or brackets +FROM ( + SELECT data.key as dkey, data.* + FROM Input as data +) as middle +GROUP BY + cast(middle.dkey as uint32)/100 as hundred_keys +ORDER BY hundred_keys + diff --git a/yql/essentials/tests/sql/suites/select/quoted_ids.sql b/yql/essentials/tests/sql/suites/select/quoted_ids.sql new file mode 100644 index 0000000000..39d4f4de71 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/quoted_ids.sql @@ -0,0 +1,2 @@ +/* do not execute */ +select `A%%B`, `A'`, `A\"\"`, `A ` from plato.`C-D`;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/quoted_ids_with_escapes.sql b/yql/essentials/tests/sql/suites/select/quoted_ids_with_escapes.sql new file mode 100644 index 0000000000..637616a655 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/quoted_ids_with_escapes.sql @@ -0,0 +1,2 @@ +/* do not execute */ +select `A\\a`, `\"A\\b\"` from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/read_schema.txt b/yql/essentials/tests/sql/suites/select/read_schema.txt new file mode 100644 index 0000000000..851703e9a0 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/read_schema.txt @@ -0,0 +1,5 @@ +{"a"=1;"b"=1u;"c"=0.1;"d"="x";"e"=%false;"f"={"a"="b";"c"="d";"e"=[0;1;2]}}; +{"a"=2;"b"=2u;"c"=2.5;"d"="xx";"e"=%true;"f"=0.123}; +{"a"=-5;"b"=8u;"c"=10.;"d"="xxx";"f"="xyz"}; +{"b"=5u;"d"="skdjfnsdf";"e"=%false}; +{}; diff --git a/yql/essentials/tests/sql/suites/select/read_schema.txt.attr b/yql/essentials/tests/sql/suites/select/read_schema.txt.attr new file mode 100644 index 0000000000..3176be619e --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/read_schema.txt.attr @@ -0,0 +1,3 @@ +{ + "_read_schema"=[{"type"="int64";"name"="a"};{"type"="uint64";"name"="b"};{"type"="double";"name"="c"};{"type"="string";"name"="d"};{"type"="boolean";name="e"};{"type"="any";"name"="f"}] +} diff --git a/yql/essentials/tests/sql/suites/select/refselect-1000.cfg b/yql/essentials/tests/sql/suites/select/refselect-1000.cfg new file mode 100644 index 0000000000..1bae01480b --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/refselect-1000.cfg @@ -0,0 +1,2 @@ +in test_table_src input1100.txt +providers yt,dq diff --git a/yql/essentials/tests/sql/suites/select/refselect.cfg b/yql/essentials/tests/sql/suites/select/refselect.cfg new file mode 100644 index 0000000000..8763f366de --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/refselect.cfg @@ -0,0 +1,2 @@ +in test_table_src input.txt +providers yt,dq diff --git a/yql/essentials/tests/sql/suites/select/refselect.sql b/yql/essentials/tests/sql/suites/select/refselect.sql new file mode 100644 index 0000000000..7043d7b364 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/refselect.sql @@ -0,0 +1,4 @@ +/* postgres can not */ +USE plato; +PRAGMA refselect; +SELECT key, subkey, value FROM `test_table_src`; diff --git a/yql/essentials/tests/sql/suites/select/result_label.sql b/yql/essentials/tests/sql/suites/select/result_label.sql new file mode 100644 index 0000000000..4887b9c60f --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/result_label.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +select 1 into result foo; diff --git a/yql/essentials/tests/sql/suites/select/result_rows_limit.cfg b/yql/essentials/tests/sql/suites/select/result_rows_limit.cfg new file mode 100644 index 0000000000..1f1d2747db --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/result_rows_limit.cfg @@ -0,0 +1,2 @@ +in Input input.txt +providers yt diff --git a/yql/essentials/tests/sql/suites/select/result_rows_limit.sql b/yql/essentials/tests/sql/suites/select/result_rows_limit.sql new file mode 100644 index 0000000000..614d4928c6 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/result_rows_limit.sql @@ -0,0 +1,7 @@ +/* kikimr can not - no refs */ +/* postgres can not */ +USE plato; +pragma ResultRowsLimit="2"; + +SELECT key||"a" as key FROM Input order by key; +SELECT key||"b" as key FROM Input order by key; diff --git a/yql/essentials/tests/sql/suites/select/result_size_limit.cfg b/yql/essentials/tests/sql/suites/select/result_size_limit.cfg new file mode 100644 index 0000000000..1f1d2747db --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/result_size_limit.cfg @@ -0,0 +1,2 @@ +in Input input.txt +providers yt diff --git a/yql/essentials/tests/sql/suites/select/result_size_limit.sql b/yql/essentials/tests/sql/suites/select/result_size_limit.sql new file mode 100644 index 0000000000..df0d9d6fd6 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/result_size_limit.sql @@ -0,0 +1,7 @@ +/* postgres can not */ +/* kikimr can not - no refs */ +USE plato; +pragma ResultSizeLimit="25"; + +SELECT key||"a" as key FROM Input order by key; +SELECT key||"b" as key FROM Input order by key; diff --git a/yql/essentials/tests/sql/suites/select/result_size_limit_with_fill.cfg b/yql/essentials/tests/sql/suites/select/result_size_limit_with_fill.cfg new file mode 100644 index 0000000000..1f1d2747db --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/result_size_limit_with_fill.cfg @@ -0,0 +1,2 @@ +in Input input.txt +providers yt diff --git a/yql/essentials/tests/sql/suites/select/result_size_limit_with_fill.sql b/yql/essentials/tests/sql/suites/select/result_size_limit_with_fill.sql new file mode 100644 index 0000000000..d6394b5d0f --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/result_size_limit_with_fill.sql @@ -0,0 +1,9 @@ +/* postgres can not */ +/* kikimr can not - no refs */ +USE plato; +pragma ResultSizeLimit="25"; + +SELECT key||"a" as key FROM Input order by key; +SELECT key||"b" as key FROM Input order by key; +SELECT 1 + 1; +SELECT 2 + 2; diff --git a/yql/essentials/tests/sql/suites/select/reuse_named_node.sql b/yql/essentials/tests/sql/suites/select/reuse_named_node.sql new file mode 100644 index 0000000000..238865d79d --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/reuse_named_node.sql @@ -0,0 +1,5 @@ +/* postgres can not */ +USE plato; +$x = ($key) -> { return "aa" || $key }; +select $x(key) from Input; +select $x(key) from Input; diff --git a/yql/essentials/tests/sql/suites/select/sampleselect-1000.cfg b/yql/essentials/tests/sql/suites/select/sampleselect-1000.cfg new file mode 100644 index 0000000000..115c212714 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/sampleselect-1000.cfg @@ -0,0 +1 @@ +in Input input1100.txt diff --git a/yql/essentials/tests/sql/suites/select/sampleselect.cfg b/yql/essentials/tests/sql/suites/select/sampleselect.cfg new file mode 100644 index 0000000000..58878f8945 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/sampleselect.cfg @@ -0,0 +1 @@ +in Input input.txt diff --git a/yql/essentials/tests/sql/suites/select/sampleselect.sql b/yql/essentials/tests/sql/suites/select/sampleselect.sql new file mode 100644 index 0000000000..d6700cb9b3 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/sampleselect.sql @@ -0,0 +1,3 @@ +/* postgres can not */ +pragma sampleselect; +select key, subkey, value || "foo" as new_value from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/scalar_subquery.sql b/yql/essentials/tests/sql/suites/select/scalar_subquery.sql new file mode 100644 index 0000000000..f5644ed27f --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/scalar_subquery.sql @@ -0,0 +1,6 @@ +/* postgres can not */ +$query = ( +select AsTuple(count(*),min(value)) FROM plato.Input +--WHERE 1=0 +); +select $query ?? AsTuple(0,"") as cnt; diff --git a/yql/essentials/tests/sql/suites/select/scalar_subquery_with_star.sql b/yql/essentials/tests/sql/suites/select/scalar_subquery_with_star.sql new file mode 100644 index 0000000000..29e0be1919 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/scalar_subquery_with_star.sql @@ -0,0 +1,7 @@ +/* postgres can not */ +/* syntax version 1 */ + +$single = (select key from plato.Input); +$all = (select * from $single order by key limit 100); +select $all; + diff --git a/yql/essentials/tests/sql/suites/select/select_all.sql b/yql/essentials/tests/sql/suites/select/select_all.sql new file mode 100644 index 0000000000..684733fe7b --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/select_all.sql @@ -0,0 +1 @@ +select * from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/select_all_filtered.sql b/yql/essentials/tests/sql/suites/select/select_all_filtered.sql new file mode 100644 index 0000000000..73574ab4d4 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/select_all_filtered.sql @@ -0,0 +1,2 @@ +select * from plato.Input where value = "ddd"; + diff --git a/yql/essentials/tests/sql/suites/select/select_all_from_concat.sql b/yql/essentials/tests/sql/suites/select/select_all_from_concat.sql new file mode 100644 index 0000000000..2f22f7a461 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/select_all_from_concat.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +select * from plato.concat(Input2, Input3); diff --git a/yql/essentials/tests/sql/suites/select/select_all_from_concat_anon.sql b/yql/essentials/tests/sql/suites/select/select_all_from_concat_anon.sql new file mode 100644 index 0000000000..967844883c --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/select_all_from_concat_anon.sql @@ -0,0 +1,10 @@ +/* postgres can not */ +USE plato; + +insert into @foo +select 1; + +commit; + +$name = "fo" || "o"; +select * from concat(@foo,@$name); diff --git a/yql/essentials/tests/sql/suites/select/select_all_group_by_column.cfg b/yql/essentials/tests/sql/suites/select/select_all_group_by_column.cfg new file mode 100644 index 0000000000..c7e99df4d3 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/select_all_group_by_column.cfg @@ -0,0 +1 @@ +in Input input_expr.txt diff --git a/yql/essentials/tests/sql/suites/select/select_all_group_by_column.sql b/yql/essentials/tests/sql/suites/select/select_all_group_by_column.sql new file mode 100644 index 0000000000..d2dc93b17b --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/select_all_group_by_column.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +select * from plato.Input group by subkey order by subkey; diff --git a/yql/essentials/tests/sql/suites/select/select_all_ordered.sql b/yql/essentials/tests/sql/suites/select/select_all_ordered.sql new file mode 100644 index 0000000000..1021bb94cb --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/select_all_ordered.sql @@ -0,0 +1,3 @@ +select * from plato.Input order by value; + + diff --git a/yql/essentials/tests/sql/suites/select/select_concrete_detailed_columns.sql b/yql/essentials/tests/sql/suites/select/select_concrete_detailed_columns.sql new file mode 100644 index 0000000000..577f255c97 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/select_concrete_detailed_columns.sql @@ -0,0 +1 @@ +select i.key, i.subkey from plato.Input as i; diff --git a/yql/essentials/tests/sql/suites/select/shift_columns.sql b/yql/essentials/tests/sql/suites/select/shift_columns.sql new file mode 100644 index 0000000000..60938dc01c --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/shift_columns.sql @@ -0,0 +1 @@ +select key as subkey, subkey as value, value as key from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/simple_struct_field_access.cfg b/yql/essentials/tests/sql/suites/select/simple_struct_field_access.cfg new file mode 100644 index 0000000000..2dbce9ede0 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/simple_struct_field_access.cfg @@ -0,0 +1 @@ +in Input input_struct_field.txt diff --git a/yql/essentials/tests/sql/suites/select/simple_struct_field_access.sql b/yql/essentials/tests/sql/suites/select/simple_struct_field_access.sql new file mode 100644 index 0000000000..a140ab624d --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/simple_struct_field_access.sql @@ -0,0 +1,3 @@ +/* postgres can not */ +use plato; +select key.kk, subkey, value from Input diff --git a/yql/essentials/tests/sql/suites/select/struct_access_without_table_name.cfg b/yql/essentials/tests/sql/suites/select/struct_access_without_table_name.cfg new file mode 100644 index 0000000000..3df7813790 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/struct_access_without_table_name.cfg @@ -0,0 +1 @@ +in Input input_intersect.txt diff --git a/yql/essentials/tests/sql/suites/select/struct_access_without_table_name.sql b/yql/essentials/tests/sql/suites/select/struct_access_without_table_name.sql new file mode 100644 index 0000000000..0a3446a339 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/struct_access_without_table_name.sql @@ -0,0 +1,18 @@ +/* postgres can not */ +use plato; + +$data = ( select + cast(key as uint32) % 10 as mod, + (key as kk, subkey as sk) as struct_field, + value +from Input); + +--INSERT INTO Output +SELECT + mod, + struct_field.kk as mod_key, + struct_field.sk, + d.value +FROM $data as d +order by mod_key, value +; diff --git a/yql/essentials/tests/sql/suites/select/struct_members.sql b/yql/essentials/tests/sql/suites/select/struct_members.sql new file mode 100644 index 0000000000..4fd4c403d8 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/struct_members.sql @@ -0,0 +1,4 @@ +/* postgres can not */ +use plato; +$structList = (select AsStruct(key as k, value as v) as `struct` from Input); +select input.`struct`.k as key, input.`struct`.v as value, input.`struct` as `struct` from $structList as input; diff --git a/yql/essentials/tests/sql/suites/select/substring.sql b/yql/essentials/tests/sql/suites/select/substring.sql new file mode 100644 index 0000000000..469b7bc3aa --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/substring.sql @@ -0,0 +1,6 @@ +/* postgres can not */ +/* syntax version 1 */ +select + substring(key, 1, 1) as char, + substring(value, 1) as tail +from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/substring_v1.sql b/yql/essentials/tests/sql/suites/select/substring_v1.sql new file mode 100644 index 0000000000..566e8c9401 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/substring_v1.sql @@ -0,0 +1,7 @@ +/* postgres can not */ +/* syntax version 1 */ +-- in v1 substring returns Null as a result for missing value +select + substring(key, 1, 1) as char, + substring(value, 1) as tail +from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/sum_to_string.sql b/yql/essentials/tests/sql/suites/select/sum_to_string.sql new file mode 100644 index 0000000000..59d6860ebb --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/sum_to_string.sql @@ -0,0 +1 @@ +select key, subkey, cast(1 + 1 as varchar) as value from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/swap_columns.sql b/yql/essentials/tests/sql/suites/select/swap_columns.sql new file mode 100644 index 0000000000..61e848ab7b --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/swap_columns.sql @@ -0,0 +1 @@ +select key, subkey as value, value as subkey from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/table_content_from_double_opt.sql b/yql/essentials/tests/sql/suites/select/table_content_from_double_opt.sql new file mode 100644 index 0000000000..472917fe5f --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/table_content_from_double_opt.sql @@ -0,0 +1,11 @@ +/* postgres can not */ +/* syntax version 1 */ +use plato; + +insert into @tmp with truncate +select Just(Just(key)) as key from Input; + +commit; + +$key = select key from @tmp; +select * from Input where key = $key; diff --git a/yql/essentials/tests/sql/suites/select/table_content_from_sort_desc.sql b/yql/essentials/tests/sql/suites/select/table_content_from_sort_desc.sql new file mode 100644 index 0000000000..efa2818a96 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/table_content_from_sort_desc.sql @@ -0,0 +1,11 @@ +/* postgres can not */ +/* syntax version 1 */ +use plato; + +insert into @tmp with truncate +select key from Input order by key desc; + +commit; + +$key = select key from @tmp; +select * from Input where key = $key; diff --git a/yql/essentials/tests/sql/suites/select/table_content_with_tmp_folder.cfg b/yql/essentials/tests/sql/suites/select/table_content_with_tmp_folder.cfg new file mode 100644 index 0000000000..58878f8945 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/table_content_with_tmp_folder.cfg @@ -0,0 +1 @@ +in Input input.txt diff --git a/yql/essentials/tests/sql/suites/select/table_content_with_tmp_folder.sql b/yql/essentials/tests/sql/suites/select/table_content_with_tmp_folder.sql new file mode 100644 index 0000000000..04a6ecb98b --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/table_content_with_tmp_folder.sql @@ -0,0 +1,11 @@ +/* postgres can not */ +/* kikimr can not */ +use plato; +pragma yt.MapJoinLimit="1M"; +pragma yt.TmpFolder="//custom_tmp"; + +-- MapJoin with table content +$input = (select cast(a.key as Uint64) as key from Input as a cross join Input as b); + +-- ResFill with table content +select sum(key) from $input; diff --git a/yql/essentials/tests/sql/suites/select/table_funcs_spec.sql b/yql/essentials/tests/sql/suites/select/table_funcs_spec.sql new file mode 100644 index 0000000000..87cbdfe0dc --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/table_funcs_spec.sql @@ -0,0 +1,15 @@ +/* syntax version 1 */ +/* postgres can not */ +/* kikimr can not */ +use plato; + +--insert into Output +select + TablePath() as table_path, + TableRecordIndex() as table_rec, + TableName("foo/bar") as table_name1, + TableName("baz") as table_name2, + TableName() as table_name3 +from Input +where key = '800' +; diff --git a/yql/essentials/tests/sql/suites/select/table_funcs_spec_flatten_by.sql_gb_gs.sqlx b/yql/essentials/tests/sql/suites/select/table_funcs_spec_flatten_by.sql_gb_gs.sqlx new file mode 100644 index 0000000000..02472e7673 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/table_funcs_spec_flatten_by.sql_gb_gs.sqlx @@ -0,0 +1,11 @@ +/* postgres can not */ +use plato; + +insert into Output +select + key, + value, + TablePath() +from Input +group by grouping sets (key) +; diff --git a/yql/essentials/tests/sql/suites/select/tablename_with_table_row.sql b/yql/essentials/tests/sql/suites/select/tablename_with_table_row.sql new file mode 100644 index 0000000000..3080bcf52c --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/tablename_with_table_row.sql @@ -0,0 +1,11 @@ +USE plato; + +SELECT + TableName() AS tn, + ROW_NUMBER() OVER () AS rowid, +FROM + Input +WHERE + key > "010" +ORDER BY rowid +; diff --git a/yql/essentials/tests/sql/suites/select/tablepathprefix.sql b/yql/essentials/tests/sql/suites/select/tablepathprefix.sql new file mode 100644 index 0000000000..f543356ff0 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/tablepathprefix.sql @@ -0,0 +1,9 @@ +/* postgres can not */ +/* syntax version 1 */ +use plato; +pragma TablePathPrefix = "//"; + +$input = "In" || "put"; + +select * from `Input` order by subkey; +select * from $input order by subkey; diff --git a/yql/essentials/tests/sql/suites/select/to_dict.sql b/yql/essentials/tests/sql/suites/select/to_dict.sql new file mode 100644 index 0000000000..7c1e8e85bd --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/to_dict.sql @@ -0,0 +1,17 @@ +/* postgres can not */ +/* syntax version 1 */ +SELECT + key, + ToDict(items) AS `dict`, + ToMultiDict(items) AS multi_dict +FROM ( + SELECT + key, + AGGREGATE_LIST(AsTuple(subkey, value)) AS items + FROM ( + SELECT * FROM plato.Input + UNION ALL + SELECT * FROM plato.Input + ) GROUP BY key +) +ORDER BY key; diff --git a/yql/essentials/tests/sql/suites/select/trivial_between.sql b/yql/essentials/tests/sql/suites/select/trivial_between.sql new file mode 100644 index 0000000000..38d14ec4a7 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/trivial_between.sql @@ -0,0 +1,3 @@ +select * from ( + select key as key, coalesce(cast(subkey as int), 0) as subkey, value as value from plato.Input +) as x where subkey between 1 and 3 order by key, subkey; diff --git a/yql/essentials/tests/sql/suites/select/trivial_group_by.sql b/yql/essentials/tests/sql/suites/select/trivial_group_by.sql new file mode 100644 index 0000000000..8475eeda7d --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/trivial_group_by.sql @@ -0,0 +1 @@ +select key, Min(subkey) as subkey, Max(value) as value from plato.Input group by key order by key;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/trivial_having.sql b/yql/essentials/tests/sql/suites/select/trivial_having.sql new file mode 100644 index 0000000000..5ad1424027 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/trivial_having.sql @@ -0,0 +1 @@ +select key, "WAT" as subkey, Max(value) as value from plato.Input group by key having Max(value) = "FOO";
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/trivial_order_by.sql b/yql/essentials/tests/sql/suites/select/trivial_order_by.sql new file mode 100644 index 0000000000..b087520e60 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/trivial_order_by.sql @@ -0,0 +1 @@ +select key, subkey, value from plato.Input order by key;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/trivial_where-many.cfg b/yql/essentials/tests/sql/suites/select/trivial_where-many.cfg new file mode 100644 index 0000000000..67bb5475e1 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/trivial_where-many.cfg @@ -0,0 +1 @@ +in Input trivial_where-many.txt diff --git a/yql/essentials/tests/sql/suites/select/trivial_where-many.txt b/yql/essentials/tests/sql/suites/select/trivial_where-many.txt new file mode 100644 index 0000000000..2c65337d78 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/trivial_where-many.txt @@ -0,0 +1,4 @@ +{"key"="1";"subkey"="1";"value"="abc"}; +{"key"="1";"subkey"="2";"value"="ddd"}; +{"key"="2";"subkey"="2";"value"="qqq"}; +{"key"="3";"subkey"="3";"value"="xxx"}; diff --git a/yql/essentials/tests/sql/suites/select/trivial_where-one.cfg b/yql/essentials/tests/sql/suites/select/trivial_where-one.cfg new file mode 100644 index 0000000000..7e850225a0 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/trivial_where-one.cfg @@ -0,0 +1 @@ +in Input trivial_where.txt diff --git a/yql/essentials/tests/sql/suites/select/trivial_where.sql b/yql/essentials/tests/sql/suites/select/trivial_where.sql new file mode 100644 index 0000000000..f7c092f14c --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/trivial_where.sql @@ -0,0 +1 @@ +select key, subkey, value from plato.Input where key = subkey;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/trivial_where.txt b/yql/essentials/tests/sql/suites/select/trivial_where.txt new file mode 100644 index 0000000000..4e5614f76a --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/trivial_where.txt @@ -0,0 +1,2 @@ +{"key"="1";"subkey"="1";"value"="abc"}; +{"key"="1";"subkey"="2";"value"="ddd"}; diff --git a/yql/essentials/tests/sql/suites/select/two_select_without_semi.sql b/yql/essentials/tests/sql/suites/select/two_select_without_semi.sql new file mode 100644 index 0000000000..8bef33c650 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/two_select_without_semi.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +select 1; select 2 diff --git a/yql/essentials/tests/sql/suites/select/two_selects_with_diff_fields.sql b/yql/essentials/tests/sql/suites/select/two_selects_with_diff_fields.sql new file mode 100644 index 0000000000..3b7b8d1e32 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/two_selects_with_diff_fields.sql @@ -0,0 +1,3 @@ +/* postgres can not */ +select key from plato.Input; +select key, subkey, value from plato.Input; diff --git a/yql/essentials/tests/sql/suites/select/type_assert.sql b/yql/essentials/tests/sql/suites/select/type_assert.sql new file mode 100644 index 0000000000..c634446b93 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/type_assert.sql @@ -0,0 +1,11 @@ +/* syntax version 1 */ +/* postgres can not */ +/* syntax version 1 */ +use plato; +select EnsureType(cast(key as Int64), Int64?, "some text 1") from Input; +select FormatType(EnsureType(TypeOf(1), Int32, "some text 2")); +select FormatType(EnsureType(TypeOf(1), Int32)); + +select EnsureConvertibleTo(cast(key as Int64), Double?, "some text 3") from Input; +select FormatType(EnsureConvertibleTo(TypeOf(1), Int64, "some text 4")); +select FormatType(EnsureConvertibleTo(TypeOf(1), Int64)); diff --git a/yql/essentials/tests/sql/suites/select/unary_op_interval.sql b/yql/essentials/tests/sql/suites/select/unary_op_interval.sql new file mode 100644 index 0000000000..3df738d68a --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/unary_op_interval.sql @@ -0,0 +1,7 @@ +/* postgres can not */ +select +Interval("P1D"); +select -Interval("P1D"); +select +Yql::Just(Interval("P1D")); +select -Yql::Just(Interval("P1D")); +select +Yql::Nothing(ParseType("Interval?")); +select -Yql::Nothing(ParseType("Interval?")); diff --git a/yql/essentials/tests/sql/suites/select/uncorrelated_subqueries.cfg b/yql/essentials/tests/sql/suites/select/uncorrelated_subqueries.cfg new file mode 100644 index 0000000000..f4f8c09a16 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/uncorrelated_subqueries.cfg @@ -0,0 +1,3 @@ +in Input1 input_intersect.txt +in Input2 input_expr.txt + diff --git a/yql/essentials/tests/sql/suites/select/uncorrelated_subqueries.sql b/yql/essentials/tests/sql/suites/select/uncorrelated_subqueries.sql new file mode 100644 index 0000000000..261f20ec16 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/uncorrelated_subqueries.sql @@ -0,0 +1,7 @@ +/* postgres can not */ +use plato; + +$_data = (SELECT key as kk, subkey as sk, value as val FROM plato.Input1 WHERE key == '075'); +$data_one_key = (SELECT subkey FROM plato.Input1 WHERE key == '075'); + +SELECT * FROM Input2 WHERE key = $data_one_key; diff --git a/yql/essentials/tests/sql/suites/select/unlabeled.cfg b/yql/essentials/tests/sql/suites/select/unlabeled.cfg new file mode 100644 index 0000000000..58878f8945 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/unlabeled.cfg @@ -0,0 +1 @@ +in Input input.txt diff --git a/yql/essentials/tests/sql/suites/select/unlabeled.sql b/yql/essentials/tests/sql/suites/select/unlabeled.sql new file mode 100644 index 0000000000..c904961f66 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/unlabeled.sql @@ -0,0 +1,2 @@ +/* postgres can not */ +select key, subkey, value from plato.Input;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/unlabeled_1000.cfg b/yql/essentials/tests/sql/suites/select/unlabeled_1000.cfg new file mode 100644 index 0000000000..115c212714 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/unlabeled_1000.cfg @@ -0,0 +1 @@ +in Input input1100.txt diff --git a/yql/essentials/tests/sql/suites/select/unlabeled_1000.sql b/yql/essentials/tests/sql/suites/select/unlabeled_1000.sql new file mode 100644 index 0000000000..ec52757d06 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/unlabeled_1000.sql @@ -0,0 +1,3 @@ +/* postgres can not */ +/* kikimr can not - no ref select mode */ +select key, subkey, value from plato.Input order by key, subkey, value; diff --git a/yql/essentials/tests/sql/suites/select/use_cluster.sql b/yql/essentials/tests/sql/suites/select/use_cluster.sql new file mode 100644 index 0000000000..197a75f9c1 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/use_cluster.sql @@ -0,0 +1,2 @@ +use plato; +select key from Input; diff --git a/yql/essentials/tests/sql/suites/select/use_subrequest_as_table.sqlx b/yql/essentials/tests/sql/suites/select/use_subrequest_as_table.sqlx new file mode 100644 index 0000000000..a5227e7e2e --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/use_subrequest_as_table.sqlx @@ -0,0 +1,23 @@ +/* postgres can not */ +/* syntax version 1 */ +$script = @@ +def test(src): + l = [] + for i in src: + l.append(str(i.test)) + l.append(str(i.test2)) + return str(l) +@@; + +$test_table_1 = + ( + SELECT 1 AS test, "a" AS test2 + UNION ALL + SELECT 2 AS test, "b" AS test2 + ); + +$callable = Python::test(Callable<(List<Struct<test:Int32,test2:String?>>) -> String?>, $script); + +SELECT + $callable( $test_table_1 ) -- use as const subrequest should contain one column +FROM $test_table_1; diff --git a/yql/essentials/tests/sql/suites/select/values.sql b/yql/essentials/tests/sql/suites/select/values.sql new file mode 100644 index 0000000000..345513ede5 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/values.sql @@ -0,0 +1,8 @@ +/* syntax version 1 */ +values (1,2), (3,4); + +select * from (values (1,2), (3,4)); +select * from (values (1,2), (3,4)) as t(x,y); +select * from (values (1,2,3,4), (5,6,7,8)) as t(x,y,z); + +select exists(values (1)); diff --git a/yql/essentials/tests/sql/suites/select/where_cast.sql b/yql/essentials/tests/sql/suites/select/where_cast.sql new file mode 100644 index 0000000000..8ae781dccf --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/where_cast.sql @@ -0,0 +1 @@ +select value from plato.Input where cast(key as int) > 100;
\ No newline at end of file diff --git a/yql/essentials/tests/sql/suites/select/where_in.sql b/yql/essentials/tests/sql/suites/select/where_in.sql new file mode 100644 index 0000000000..8618c593e6 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/where_in.sql @@ -0,0 +1,7 @@ +SELECT + * +FROM plato.Input +WHERE + "1" IN (key, subkey, value) OR + value NOT IN (key, subkey, value) +; diff --git a/yql/essentials/tests/sql/suites/select/where_not_null.cfg b/yql/essentials/tests/sql/suites/select/where_not_null.cfg new file mode 100644 index 0000000000..86c772ae1c --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/where_not_null.cfg @@ -0,0 +1 @@ +in Input read_schema.txt diff --git a/yql/essentials/tests/sql/suites/select/where_not_null.sql b/yql/essentials/tests/sql/suites/select/where_not_null.sql new file mode 100644 index 0000000000..a582898978 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/where_not_null.sql @@ -0,0 +1 @@ +select * from plato.Input where a is not null; diff --git a/yql/essentials/tests/sql/suites/select/where_with_lambda.cfg b/yql/essentials/tests/sql/suites/select/where_with_lambda.cfg new file mode 100644 index 0000000000..58878f8945 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/where_with_lambda.cfg @@ -0,0 +1 @@ +in Input input.txt diff --git a/yql/essentials/tests/sql/suites/select/where_with_lambda.sql b/yql/essentials/tests/sql/suites/select/where_with_lambda.sql new file mode 100644 index 0000000000..e2587c8ac0 --- /dev/null +++ b/yql/essentials/tests/sql/suites/select/where_with_lambda.sql @@ -0,0 +1,11 @@ +/* postgres can not */ +USE plato; + +$predicate = ($x) -> { + RETURN $x == "911" +}; +$field = "field"; + +SELECT * +FROM Input +WHERE $predicate($field); |