aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/sql/suites/select
diff options
context:
space:
mode:
authorudovichenko-r <udovichenko-r@yandex-team.com>2024-11-19 14:58:38 +0300
committerudovichenko-r <udovichenko-r@yandex-team.com>2024-11-19 15:16:27 +0300
commit24521403b1c44303e043ba540c09b1fe991c7474 (patch)
tree341d1e7206bc7c143d04d2d96f05b6dc0655606d /yql/essentials/tests/sql/suites/select
parent72b3cd51dc3fb9d16975d353ea82fd85701393cc (diff)
downloadydb-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')
-rw-r--r--yql/essentials/tests/sql/suites/select/anon_clash.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/anon_clash.sql8
-rw-r--r--yql/essentials/tests/sql/suites/select/append_to_value.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/append_to_value.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/append_to_value_1000.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/select/append_to_value_1000.sql3
-rw-r--r--yql/essentials/tests/sql/suites/select/autoextract_source_value.sql7
-rw-r--r--yql/essentials/tests/sql/suites/select/autoextract_source_value_in_where.sqlx11
-rw-r--r--yql/essentials/tests/sql/suites/select/autogen_columns_conflict.sql29
-rw-r--r--yql/essentials/tests/sql/suites/select/backtick_with_escapes.sql3
-rw-r--r--yql/essentials/tests/sql/suites/select/bin_ops_long_concat.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/bit_ops.sql11
-rw-r--r--yql/essentials/tests/sql/suites/select/boolean_where.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/boolean_where.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/boolean_where.txt5
-rw-r--r--yql/essentials/tests/sql/suites/select/boolean_where.txt.attr3
-rw-r--r--yql/essentials/tests/sql/suites/select/braces.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/calculated_values.sql3
-rw-r--r--yql/essentials/tests/sql/suites/select/cast_double_to_uint32.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/column_labels.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/complex_filter_with_order.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/complex_view_input.txt4
-rw-r--r--yql/essentials/tests/sql/suites/select/complex_view_input.txt.attr32
-rw-r--r--yql/essentials/tests/sql/suites/select/const_subrequest_and_select_by_all.sql9
-rw-r--r--yql/essentials/tests/sql/suites/select/core_func_test_bit.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/corr_name_in_select.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/corr_name_in_select_seq.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/create_structures.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/create_tuples.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/data_instance.sql45
-rw-r--r--yql/essentials/tests/sql/suites/select/deep_udf_call.cfg5
-rw-r--r--yql/essentials/tests/sql/suites/select/deep_udf_call.sql11
-rw-r--r--yql/essentials/tests/sql/suites/select/default.cfg4
-rw-r--r--yql/essentials/tests/sql/suites/select/dict_lookup.sql10
-rw-r--r--yql/essentials/tests/sql/suites/select/dict_lookup_by_key.sql14
-rw-r--r--yql/essentials/tests/sql/suites/select/dict_lookup_by_key_with_def.sql14
-rw-r--r--yql/essentials/tests/sql/suites/select/dict_lookup_column_names.sql5
-rw-r--r--yql/essentials/tests/sql/suites/select/dict_with_few_keys.sql15
-rw-r--r--yql/essentials/tests/sql/suites/select/digits.cfg5
-rw-r--r--yql/essentials/tests/sql/suites/select/digits.sql8
-rw-r--r--yql/essentials/tests/sql/suites/select/discard.sql9
-rw-r--r--yql/essentials/tests/sql/suites/select/dot_in_alias.sql6
-rw-r--r--yql/essentials/tests/sql/suites/select/dot_name_subrequest.sql8
-rw-r--r--yql/essentials/tests/sql/suites/select/double_at_ids.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/exists_false.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/exists_true.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/extend_and_take.cfg4
-rw-r--r--yql/essentials/tests/sql/suites/select/extend_and_take.sql3
-rw-r--r--yql/essentials/tests/sql/suites/select/from_in_front.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/from_in_front_sub.sql9
-rw-r--r--yql/essentials/tests/sql/suites/select/hits_count.cfg3
-rw-r--r--yql/essentials/tests/sql/suites/select/hits_count.sql33
-rw-r--r--yql/essentials/tests/sql/suites/select/hits_input1.txt3
-rw-r--r--yql/essentials/tests/sql/suites/select/hits_input2.txt3
-rw-r--r--yql/essentials/tests/sql/suites/select/host_count.cfg3
-rw-r--r--yql/essentials/tests/sql/suites/select/host_count.sql33
-rw-r--r--yql/essentials/tests/sql/suites/select/host_input1.txt3
-rw-r--r--yql/essentials/tests/sql/suites/select/host_input1.txt.attr16
-rw-r--r--yql/essentials/tests/sql/suites/select/host_input2.txt3
-rw-r--r--yql/essentials/tests/sql/suites/select/host_input2.txt.attr16
-rw-r--r--yql/essentials/tests/sql/suites/select/id_xor.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/if.sql6
-rw-r--r--yql/essentials/tests/sql/suites/select/input.txt4
-rw-r--r--yql/essentials/tests/sql/suites/select/input1100.txt1100
-rw-r--r--yql/essentials/tests/sql/suites/select/input2.txt4
-rw-r--r--yql/essentials/tests/sql/suites/select/input3.txt7
-rw-r--r--yql/essentials/tests/sql/suites/select/input4.txt9
-rw-r--r--yql/essentials/tests/sql/suites/select/input_expr.txt10
-rw-r--r--yql/essentials/tests/sql/suites/select/input_intersect.txt14
-rw-r--r--yql/essentials/tests/sql/suites/select/input_struct_field.txt0
-rw-r--r--yql/essentials/tests/sql/suites/select/input_struct_field.txt.attr11
-rw-r--r--yql/essentials/tests/sql/suites/select/literal_bool.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/literal_negative.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/logical_ops.sql6
-rw-r--r--yql/essentials/tests/sql/suites/select/match_clause.cfg5
-rw-r--r--yql/essentials/tests/sql/suites/select/match_clause.sql4
-rw-r--r--yql/essentials/tests/sql/suites/select/missing_with_nonpersist.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/select/missing_with_nonpersist.sql10
-rw-r--r--yql/essentials/tests/sql/suites/select/multi_source_issue.sql17
-rw-r--r--yql/essentials/tests/sql/suites/select/normalize_name.sqlx1
-rw-r--r--yql/essentials/tests/sql/suites/select/null_check.sql7
-rw-r--r--yql/essentials/tests/sql/suites/select/one_labeled_column.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/one_unlabeled_column.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/opt_list_access.sql7
-rw-r--r--yql/essentials/tests/sql/suites/select/optional_as_warn.sql18
-rw-r--r--yql/essentials/tests/sql/suites/select/optional_in_job.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/optional_in_job.sql34
-rw-r--r--yql/essentials/tests/sql/suites/select/optional_pull.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/optional_pull.sql32
-rw-r--r--yql/essentials/tests/sql/suites/select/qualified_all_and_group_by.sql16
-rw-r--r--yql/essentials/tests/sql/suites/select/qualified_all_and_group_by.sqlx15
-rw-r--r--yql/essentials/tests/sql/suites/select/quoted_ids.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/quoted_ids_with_escapes.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/read_schema.txt5
-rw-r--r--yql/essentials/tests/sql/suites/select/read_schema.txt.attr3
-rw-r--r--yql/essentials/tests/sql/suites/select/refselect-1000.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/select/refselect.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/select/refselect.sql4
-rw-r--r--yql/essentials/tests/sql/suites/select/result_label.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/result_rows_limit.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/select/result_rows_limit.sql7
-rw-r--r--yql/essentials/tests/sql/suites/select/result_size_limit.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/select/result_size_limit.sql7
-rw-r--r--yql/essentials/tests/sql/suites/select/result_size_limit_with_fill.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/select/result_size_limit_with_fill.sql9
-rw-r--r--yql/essentials/tests/sql/suites/select/reuse_named_node.sql5
-rw-r--r--yql/essentials/tests/sql/suites/select/sampleselect-1000.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/sampleselect.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/sampleselect.sql3
-rw-r--r--yql/essentials/tests/sql/suites/select/scalar_subquery.sql6
-rw-r--r--yql/essentials/tests/sql/suites/select/scalar_subquery_with_star.sql7
-rw-r--r--yql/essentials/tests/sql/suites/select/select_all.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/select_all_filtered.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/select_all_from_concat.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/select_all_from_concat_anon.sql10
-rw-r--r--yql/essentials/tests/sql/suites/select/select_all_group_by_column.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/select_all_group_by_column.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/select_all_ordered.sql3
-rw-r--r--yql/essentials/tests/sql/suites/select/select_concrete_detailed_columns.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/shift_columns.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/simple_struct_field_access.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/simple_struct_field_access.sql3
-rw-r--r--yql/essentials/tests/sql/suites/select/struct_access_without_table_name.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/struct_access_without_table_name.sql18
-rw-r--r--yql/essentials/tests/sql/suites/select/struct_members.sql4
-rw-r--r--yql/essentials/tests/sql/suites/select/substring.sql6
-rw-r--r--yql/essentials/tests/sql/suites/select/substring_v1.sql7
-rw-r--r--yql/essentials/tests/sql/suites/select/sum_to_string.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/swap_columns.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/table_content_from_double_opt.sql11
-rw-r--r--yql/essentials/tests/sql/suites/select/table_content_from_sort_desc.sql11
-rw-r--r--yql/essentials/tests/sql/suites/select/table_content_with_tmp_folder.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/table_content_with_tmp_folder.sql11
-rw-r--r--yql/essentials/tests/sql/suites/select/table_funcs_spec.sql15
-rw-r--r--yql/essentials/tests/sql/suites/select/table_funcs_spec_flatten_by.sql_gb_gs.sqlx11
-rw-r--r--yql/essentials/tests/sql/suites/select/tablename_with_table_row.sql11
-rw-r--r--yql/essentials/tests/sql/suites/select/tablepathprefix.sql9
-rw-r--r--yql/essentials/tests/sql/suites/select/to_dict.sql17
-rw-r--r--yql/essentials/tests/sql/suites/select/trivial_between.sql3
-rw-r--r--yql/essentials/tests/sql/suites/select/trivial_group_by.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/trivial_having.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/trivial_order_by.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/trivial_where-many.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/trivial_where-many.txt4
-rw-r--r--yql/essentials/tests/sql/suites/select/trivial_where-one.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/trivial_where.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/trivial_where.txt2
-rw-r--r--yql/essentials/tests/sql/suites/select/two_select_without_semi.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/two_selects_with_diff_fields.sql3
-rw-r--r--yql/essentials/tests/sql/suites/select/type_assert.sql11
-rw-r--r--yql/essentials/tests/sql/suites/select/unary_op_interval.sql7
-rw-r--r--yql/essentials/tests/sql/suites/select/uncorrelated_subqueries.cfg3
-rw-r--r--yql/essentials/tests/sql/suites/select/uncorrelated_subqueries.sql7
-rw-r--r--yql/essentials/tests/sql/suites/select/unlabeled.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/unlabeled.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/unlabeled_1000.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/unlabeled_1000.sql3
-rw-r--r--yql/essentials/tests/sql/suites/select/use_cluster.sql2
-rw-r--r--yql/essentials/tests/sql/suites/select/use_subrequest_as_table.sqlx23
-rw-r--r--yql/essentials/tests/sql/suites/select/values.sql8
-rw-r--r--yql/essentials/tests/sql/suites/select/where_cast.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/where_in.sql7
-rw-r--r--yql/essentials/tests/sql/suites/select/where_not_null.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/where_not_null.sql1
-rw-r--r--yql/essentials/tests/sql/suites/select/where_with_lambda.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/select/where_with_lambda.sql11
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);