aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/s-expressions/suites/SingleYamrOperation
diff options
context:
space:
mode:
authorAlexander Smirnov <alex@ydb.tech>2024-11-20 11:14:58 +0000
committerAlexander Smirnov <alex@ydb.tech>2024-11-20 11:14:58 +0000
commit31773f157bf8164364649b5f470f52dece0a4317 (patch)
tree33d0f7eef45303ab68cf08ab381ce5e5e36c5240 /yql/essentials/tests/s-expressions/suites/SingleYamrOperation
parent2c7938962d8689e175574fc1e817c05049f27905 (diff)
parenteff600952d5dfe17942f38f510a8ac2b203bb3a5 (diff)
downloadydb-31773f157bf8164364649b5f470f52dece0a4317.tar.gz
Merge branch 'rightlib' into mergelibs-241120-1113
Diffstat (limited to 'yql/essentials/tests/s-expressions/suites/SingleYamrOperation')
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKey.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKey.yql24
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKeyStream.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKeyStream.yql24
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Drop.yql19
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EmptyCopy.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EmptyCopy.yql11
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EnumerateInsideReduce.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EnumerateInsideReduce.yql26
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Fill.yql11
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FillWithCount.yql15
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FilterThenCombineByKey.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FilterThenCombineByKey.yql25
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/IteratorInMap.yql20
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LMapOverTable.yql20
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LengthOfTableInsideMap.yql24
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LengthOfTempTableInsideMap.yql30
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOther.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOther.yql19
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherMixed.cfg3
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherMixed.yql19
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherStrict.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherStrict.yql19
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapStream.yql19
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MissingColumn.yql19
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/OrderedLMapOverTable.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/OrderedLMapOverTable.yql20
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKey.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKey.yql24
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeySorted.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeySorted.yql25
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeyStream.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeyStream.yql23
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Skip.yql13
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SkipTakeThenMap.yql21
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SomeKeys.txt7
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SomeKeys.txt.attr30
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/TableInsertCastList.yql53
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Take.yql13
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/ZipInsideReduce.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/ZipInsideReduce.yql26
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/default.cfg4
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input.txt4
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input.txt.attr30
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input2.txt3
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input2.txt.attr30
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_empty.txt0
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_empty.txt.attr30
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other.txt4
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other.txt.attr10
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other_strict.txt4
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other_strict.txt.attr28
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program1.yql19
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program10.yql14
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program11.yql13
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program12.yql16
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program13.yql16
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program14.yql14
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program15.yql14
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program16.yql20
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program17.yql13
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program18.yql23
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program19.yql25
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program2.cfg4
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program2.yql15
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program20.yql25
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program21.yql26
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program22.yql13
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program23.yql21
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program24.yql19
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.input.txt4
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.input.txt.attr30
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.yql23
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.input.txt4
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.input.txt.attr30
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.yql24
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.input.txt9
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.input.txt.attr30
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.yql26
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.cfg2
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.input.txt5
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.input.txt.attr30
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.yql25
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program8.yql11
-rw-r--r--yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program9.yql11
88 files changed, 1353 insertions, 0 deletions
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKey.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKey.cfg
new file mode 100644
index 0000000000..7e61f75847
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKey.cfg
@@ -0,0 +1,2 @@
+in Input SomeKeys.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKey.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKey.yql
new file mode 100644
index 0000000000..2e63d28e6a
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKey.yql
@@ -0,0 +1,24 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let preMap (lambda '(item) (Just item)))
+(let keyExtractor (lambda '(item) (Member item 'key)))
+(let init (lambda '(key item) (FromString (Member item 'subkey) 'Uint32)))
+(let update (lambda '(key item state) (+ state (FromString (Member item 'subkey) 'Uint32))))
+(let finish (lambda '(key state) (block '(
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AddMember s 'value (Coalesce (Map state (lambda '(x) (ToString x))) (String '""))))
+ (return (Just s))
+))))
+(let table2 (CombineByKey table1 preMap keyExtractor init update finish))
+(let mr_sink (DataSink 'yt 'plato))
+(let result (Sort table2 (Bool 'true) (lambda '(x) (Member x 'key))))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) result '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKeyStream.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKeyStream.cfg
new file mode 100644
index 0000000000..7e61f75847
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKeyStream.cfg
@@ -0,0 +1,2 @@
+in Input SomeKeys.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKeyStream.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKeyStream.yql
new file mode 100644
index 0000000000..4957a8671d
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/CombineByKeyStream.yql
@@ -0,0 +1,24 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let preMap (lambda '(item) (Iterator (AsList item))))
+(let keyExtractor (lambda '(item) (Member item 'key)))
+(let init (lambda '(key item) (FromString (Member item 'subkey) 'Uint32)))
+(let update (lambda '(key item state) (+ state (FromString (Member item 'subkey) 'Uint32))))
+(let finish (lambda '(key state) (block '(
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AddMember s 'value (Coalesce (Map state (lambda '(x) (ToString x))) (String '""))))
+ (return (Iterator (AsList s)))
+))))
+(let table2 (CombineByKey table1 preMap keyExtractor init update finish))
+(let mr_sink (DataSink 'yt 'plato))
+(let result (Sort table2 (Bool 'true) (lambda '(x) (Member x 'key))))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) result '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Drop.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Drop.yql
new file mode 100644
index 0000000000..72c7873e91
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Drop.yql
@@ -0,0 +1,19 @@
+(
+(let mr_sink (DataSink 'yt 'plato))
+(let data (AsList (AsStruct '('key (String 'abc)))))
+
+(let world (Write! world mr_sink
+ (Key '('table (String 'Output)))
+ data '('('mode 'renew))
+))
+
+(let world (Commit! world mr_sink))
+
+(let world (Write! world mr_sink
+ (Key '('table (String 'Output)))
+ (Void) '('('mode 'drop))
+))
+
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EmptyCopy.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EmptyCopy.cfg
new file mode 100644
index 0000000000..e98936751d
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EmptyCopy.cfg
@@ -0,0 +1,2 @@
+in InputEmpty input_empty.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EmptyCopy.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EmptyCopy.yql
new file mode 100644
index 0000000000..fbe31a1f8f
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EmptyCopy.yql
@@ -0,0 +1,11 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'InputEmpty))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EnumerateInsideReduce.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EnumerateInsideReduce.cfg
new file mode 100644
index 0000000000..7e61f75847
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EnumerateInsideReduce.cfg
@@ -0,0 +1,2 @@
+in Input SomeKeys.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EnumerateInsideReduce.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EnumerateInsideReduce.yql
new file mode 100644
index 0000000000..c28ef4d035
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/EnumerateInsideReduce.yql
@@ -0,0 +1,26 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let keySelector (lambda '(x) (Member x 'key)))
+(let listHandler (lambda '(stream) (FlatMap stream (lambda '(pair) (block '(
+ (let key (Nth pair '0))
+ (let list (ForwardList (Nth pair '1)))
+ (let list (Skip (Take (Enumerate list) (Uint64 '2)) (Uint64 '1)))
+ (let r (FlatMap list (lambda '(x) (block '(
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AddMember s 'value (Concat (ToString (Nth x '0)) (ToString (Member (Nth x '1) 'value)))))
+ (return (AsList s))
+ )))))
+ (return r)
+))))))
+(let reducedTable (PartitionByKey table1 keySelector (Void) (Void)listHandler))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) reducedTable '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Fill.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Fill.yql
new file mode 100644
index 0000000000..e48c1f7a2f
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Fill.yql
@@ -0,0 +1,11 @@
+(
+#comment
+(let data (AsList
+(AsStruct '('key (String 'key1)) '('subkey (String '"")) '('value (String 'value1)))
+(AsStruct '('key (String 'key2)) '('subkey (String '"")) '('value (String 'value2)))
+))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) data '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FillWithCount.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FillWithCount.yql
new file mode 100644
index 0000000000..20f0cd1ac2
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FillWithCount.yql
@@ -0,0 +1,15 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let data (AsList
+(AsStruct '('key (String 'key1)) '('subkey (String '"")) '('value (String 'value1)))
+(AsStruct '('key (String 'key2)) '('subkey (String '"")) '('value (ToString (Length table1))))
+))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) data '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FilterThenCombineByKey.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FilterThenCombineByKey.cfg
new file mode 100644
index 0000000000..7e61f75847
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FilterThenCombineByKey.cfg
@@ -0,0 +1,2 @@
+in Input SomeKeys.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FilterThenCombineByKey.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FilterThenCombineByKey.yql
new file mode 100644
index 0000000000..a5be6f207c
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/FilterThenCombineByKey.yql
@@ -0,0 +1,25 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let table1 (Filter table1 (lambda '(x) (< (Member x 'key) (String '500)))))
+(let preMap (lambda '(item) (Just item)))
+(let keyExtractor (lambda '(item) (Member item 'key)))
+(let init (lambda '(key item) (FromString (Member item 'subkey) 'Uint32)))
+(let update (lambda '(key item state) (+ state (FromString (Member item 'subkey) 'Uint32))))
+(let finish (lambda '(key state) (block '(
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AddMember s 'value (Coalesce (Map state (lambda '(x) (ToString x))) (String '""))))
+ (return (Just s))
+))))
+(let table2 (CombineByKey table1 preMap keyExtractor init update finish))
+(let result (Sort table2 (Bool 'true) (lambda '(x) (Member x 'key))))
+(let mr_sink (DataSink 'yt 'plato))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) result '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/IteratorInMap.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/IteratorInMap.yql
new file mode 100644
index 0000000000..fcc89eb21c
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/IteratorInMap.yql
@@ -0,0 +1,20 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let handler (lambda '(row) (block '(
+ (let value (Member row 'value))
+ (return (ReplaceMember row 'value (Collect (Iterator (AsList value value)))))
+ ))))
+(let data (Map table1 handler))
+(let data (Sort data (Bool 'true) (lambda '(row) (Member row 'key))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) data '('('mode 'append))))
+(let res_sink (DataSink 'result))
+(let world (Write! world res_sink (Key) data '('('type))))
+(let world (Commit! world mr_sink))
+(let world (Commit! world res_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LMapOverTable.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LMapOverTable.yql
new file mode 100644
index 0000000000..f86f4c0c21
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LMapOverTable.yql
@@ -0,0 +1,20 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (Int32 '100))
+(let table1low (LMap table1 (lambda '(stream) (block '(
+ (return (FlatMap stream (lambda '(item) (block '(
+ (let intValueOpt (FromString (Member item 'key) 'Int32))
+ (let ret (FlatMap intValueOpt (lambda '(item2) (block '(
+ (return (ListIf (< item2 tresh) item))
+ )))))
+ (return ret))))))
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LengthOfTableInsideMap.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LengthOfTableInsideMap.yql
new file mode 100644
index 0000000000..ccbd5bbbb4
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LengthOfTableInsideMap.yql
@@ -0,0 +1,24 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let x (Read! world mr_source (Key '('table (String 'Input2))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table2 (Right! x))
+(let table3 (Map table1 (lambda '(item) (block '(
+ (let s (AsStruct
+ '('key (Member item 'key))
+ '('subkey (ToString (Length table2)))
+ '('value (Member item 'value))
+ ))
+
+ (return s)
+)))))
+
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table3 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LengthOfTempTableInsideMap.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LengthOfTempTableInsideMap.yql
new file mode 100644
index 0000000000..d2e6fd6aec
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/LengthOfTempTableInsideMap.yql
@@ -0,0 +1,30 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (Int32 'x"64000000"))
+(let table1low (FlatMap table1 (lambda '(item) (block '(
+ (let intValueOpt (FromString (Member item 'key) 'Int32))
+ (let ret (FlatMap intValueOpt (lambda '(item2) (block '(
+ (return (ListIf (< item2 tresh) item))
+ )))))
+ (return ret)
+)))))
+
+(let table2 (Map table1 (lambda '(item) (block '(
+ (let s (AsStruct
+ '('key (Member item 'key))
+ '('subkey (ToString (Length table1low)))
+ '('value (Member item 'value))
+ ))
+
+ (return s)
+)))))
+
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table2 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOther.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOther.cfg
new file mode 100644
index 0000000000..8e3bf0495d
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOther.cfg
@@ -0,0 +1,2 @@
+in Input input_other.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOther.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOther.yql
new file mode 100644
index 0000000000..e8caad830b
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOther.yql
@@ -0,0 +1,19 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('_other) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (String 'abc))
+(let table1low (FlatMap table1 (lambda '(item) (block '(
+ (let value (Lookup (Member item '_other) (String 'value)) )
+ (let ret (FlatMap value (lambda '(item2) (block '(
+ (return (ListIf (== item2 tresh) item))
+ )))))
+ (return ret)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherMixed.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherMixed.cfg
new file mode 100644
index 0000000000..846f89d5a3
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherMixed.cfg
@@ -0,0 +1,3 @@
+in Input1 input_other.txt
+in Input2 input_other_strict.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherMixed.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherMixed.yql
new file mode 100644
index 0000000000..772527f2f6
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherMixed.yql
@@ -0,0 +1,19 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source '((Key '('table (String 'Input1))) (Key '('table (String 'Input2)))) '('_other) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (String 'abc))
+(let table1low (FlatMap table1 (lambda '(item) (block '(
+ (let value (Lookup (Member item '_other) (String 'value)) )
+ (let ret (FlatMap value (lambda '(item2) (block '(
+ (return (ListIf (== item2 tresh) item))
+ )))))
+ (return ret)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherStrict.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherStrict.cfg
new file mode 100644
index 0000000000..23b0cd29bd
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherStrict.cfg
@@ -0,0 +1,2 @@
+in Input input_other_strict.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherStrict.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherStrict.yql
new file mode 100644
index 0000000000..e8caad830b
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapOtherStrict.yql
@@ -0,0 +1,19 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('_other) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (String 'abc))
+(let table1low (FlatMap table1 (lambda '(item) (block '(
+ (let value (Lookup (Member item '_other) (String 'value)) )
+ (let ret (FlatMap value (lambda '(item2) (block '(
+ (return (ListIf (== item2 tresh) item))
+ )))))
+ (return ret)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapStream.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapStream.yql
new file mode 100644
index 0000000000..e9fe1806e8
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MapStream.yql
@@ -0,0 +1,19 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (Int32 '100))
+(let table1low (FlatMap table1 (lambda '(item) (block '(
+ (let intValueOpt (FromString (Member item 'key) 'Int32))
+ (let ret (Collect (FlatMap intValueOpt (lambda '(item2) (block '(
+ (return (Iterator (ListIf (< item2 tresh) item)))
+ ))))))
+ (return ret)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MissingColumn.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MissingColumn.yql
new file mode 100644
index 0000000000..73e0d903b4
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/MissingColumn.yql
@@ -0,0 +1,19 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey2 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (Int32 'x"64000000"))
+(let table1low (FlatMap table1 (lambda '(item) (block '(
+ (let intValueOpt (FromString (Member item 'key) 'Int32))
+ (let ret (FlatMap intValueOpt (lambda '(item2) (block '(
+ (return (ListIf (< item2 tresh) item))
+ )))))
+ (return ret)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/OrderedLMapOverTable.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/OrderedLMapOverTable.cfg
new file mode 100644
index 0000000000..ad52c79527
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/OrderedLMapOverTable.cfg
@@ -0,0 +1,2 @@
+in Input input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/OrderedLMapOverTable.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/OrderedLMapOverTable.yql
new file mode 100644
index 0000000000..cb740182a1
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/OrderedLMapOverTable.yql
@@ -0,0 +1,20 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (Int32 '100))
+(let table1low (OrderedLMap table1 (lambda '(stream) (block '(
+ (return (OrderedFlatMap stream (lambda '(item) (block '(
+ (let intValueOpt (FromString (Member item 'key) 'Int32))
+ (let ret (FlatMap intValueOpt (lambda '(item2) (block '(
+ (return (ListIf (< item2 tresh) item))
+ )))))
+ (return ret))))))
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKey.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKey.cfg
new file mode 100644
index 0000000000..d87afdedc4
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKey.cfg
@@ -0,0 +1,2 @@
+in Input program26.input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKey.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKey.yql
new file mode 100644
index 0000000000..2645b699e4
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKey.yql
@@ -0,0 +1,24 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let keySelector (lambda '(x) (Member x 'key)))
+(let listHandler (lambda '(groups) (block '(
+ (return (Map groups (lambda '(group) (block '(
+ (let key (Nth group '0))
+ (let stream (Nth group '1))
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AddMember s 'value (ToString (Length (ForwardList stream)))))
+ (return s)
+ )))))
+))))
+(let reducedTable (PartitionByKey table1 keySelector (Void) (Void) listHandler))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) reducedTable '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeySorted.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeySorted.cfg
new file mode 100644
index 0000000000..d87afdedc4
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeySorted.cfg
@@ -0,0 +1,2 @@
+in Input program26.input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeySorted.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeySorted.yql
new file mode 100644
index 0000000000..88c71a6f9d
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeySorted.yql
@@ -0,0 +1,25 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let keySelector (lambda '(x) (Member x 'key)))
+(let sortKeySelector (lambda '(x) (Member x 'value)))
+(let listHandler (lambda '(groups) (block '(
+ (return (Map groups (lambda '(group) (block '(
+ (let key (Nth group '0))
+ (let stream (Nth group '1))
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AddMember s 'value (Collect (Condense stream (String '"") (lambda '(item state) (Bool 'False)) (lambda '(item state) (Concat (Concat state (String '" ")) (Member item 'value)))))))
+ (return s)
+ )))))
+))))
+(let reducedTable (PartitionByKey table1 keySelector (Bool 'false) sortKeySelector listHandler))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) reducedTable '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeyStream.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeyStream.cfg
new file mode 100644
index 0000000000..7e61f75847
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeyStream.cfg
@@ -0,0 +1,2 @@
+in Input SomeKeys.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeyStream.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeyStream.yql
new file mode 100644
index 0000000000..938bb3e859
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/PartitionByKeyStream.yql
@@ -0,0 +1,23 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let keyExtractor (lambda '(item) (Member item 'key)))
+(let handler (lambda '(stream) (FlatMap stream (lambda '(pair) (block '(
+ (let key (Nth pair '0))
+ (let list (ForwardList (Nth pair '1)))
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AddMember s 'value (ToString (Length list))))
+ (return (Iterator (AsList s)))
+))))))
+(let table2 (PartitionByKey table1 keyExtractor (Void) (Void) handler))
+(let mr_sink (DataSink 'yt 'plato))
+(let result (Sort table2 (Bool 'true) (lambda '(x) (Member x 'key))))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) result '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Skip.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Skip.yql
new file mode 100644
index 0000000000..f7d625e18f
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Skip.yql
@@ -0,0 +1,13 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let offset (Uint64 '1))
+(let table2 (Skip table1 offset))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table2 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SkipTakeThenMap.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SkipTakeThenMap.yql
new file mode 100644
index 0000000000..5af618e78f
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SkipTakeThenMap.yql
@@ -0,0 +1,21 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let table1 (Skip table1 (Uint64 '1)))
+(let table1 (Take table1 (Uint64 '2)))
+(let table1map (Map table1 (lambda '(item) (block '(
+ (let value (Member item 'value))
+ (let s (Struct))
+ (let s (AddMember s 'key (Member item 'key)))
+ (let s (AddMember s 'subkey (String '"")))
+ (let s (AddMember s 'value value))
+ (return s)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1map '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SomeKeys.txt b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SomeKeys.txt
new file mode 100644
index 0000000000..6d0b5b4d40
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SomeKeys.txt
@@ -0,0 +1,7 @@
+{"key"="075";"subkey"="1";"value"="abc"};
+{"key"="075";"subkey"="2";"value"="abc2"};
+{"key"="075";"subkey"="3";"value"="abc3"};
+{"key"="800";"subkey"="4";"value"="ddd"};
+{"key"="020";"subkey"="5";"value"="q"};
+{"key"="150";"subkey"="6";"value"="qzz"};
+{"key"="150";"subkey"="7";"value"="zz"};
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SomeKeys.txt.attr b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SomeKeys.txt.attr
new file mode 100644
index 0000000000..b6100e5fd0
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/SomeKeys.txt.attr
@@ -0,0 +1,30 @@
+{
+ "_yql_row_spec" = {
+ "Type" = [
+ "StructType";
+ [
+ [
+ "key";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "subkey";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "value";
+ [
+ "DataType";
+ "String"
+ ]
+ ]
+ ]
+ ]
+ }
+} \ No newline at end of file
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/TableInsertCastList.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/TableInsertCastList.yql
new file mode 100644
index 0000000000..ce2f6fa8eb
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/TableInsertCastList.yql
@@ -0,0 +1,53 @@
+(
+(let world (block '(
+ (let x (Read! world (DataSource '"yt" '"plato") (Key '('table (String '"Input"))) '('"key") '()))
+ (let world (Left! x))
+ (let table0 (Right! x))
+ (let values (block '(
+ (let select (block '(
+ (let core table0)
+ (let core (Filter core (lambda '(row) (Coalesce ("<" (Member row '"key") (String '"100")) (Bool 'false)))))
+ (let core (FlatMap core (lambda '(row) (block '(
+ (let res (Struct))
+ (let res (AddMember res '"value" (MatchType (Member row '"key") 'Optional (lambda '(item) (Coalesce (Map item (lambda '(val) (IfType val (DataType 'String) (lambda '(item) (FromString item '"Int64")) (lambda '(item) (Just (Convert item '"Int64")))))) (Nothing (OptionalType (DataType '"Int64"))))) (lambda '(item) (IfType item (DataType 'String) (lambda '(item) (FromString item '"Int64")) (lambda '(item) (Convert item '"Int64")))))))
+ (let res (AsList res))
+ (return res)
+ )))))
+ (return core)
+ )))
+ (return select)
+ )))
+ (let world (block '(
+ (let sink (DataSink '"yt" '"plato"))
+ (let world (Write! world sink (Key '('table (String '"Output"))) values '('('mode 'append))))
+ (return (Commit! world sink))
+ )))
+ (return world)
+)))
+(let world (block '(
+ (let x (Read! world (DataSource '"yt" '"plato") (Key '('table (String '"Input"))) '('"key") '()))
+ (let world (Left! x))
+ (let table0 (Right! x))
+ (let values (block '(
+ (let select (block '(
+ (let core table0)
+ (let core (Filter core (lambda '(row) (Coalesce (">=" (Member row '"key") (String '"100")) (Bool 'false)))))
+ (let core (FlatMap core (lambda '(row) (block '(
+ (let res (Struct))
+ (let res (AddMember res '"value" (Int64 '"1")))
+ (let res (AsList res))
+ (return res)
+ )))))
+ (return core)
+ )))
+ (return select)
+ )))
+ (let world (block '(
+ (let sink (DataSink '"yt" '"plato"))
+ (let world (Write! world sink (Key '('table (String '"Output"))) values '('('mode 'append))))
+ (return (Commit! world sink))
+ )))
+ (return world)
+)))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Take.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Take.yql
new file mode 100644
index 0000000000..6a8c55c92d
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/Take.yql
@@ -0,0 +1,13 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let limit (Uint64 '2))
+(let table2 (Take table1 limit))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table2 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/ZipInsideReduce.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/ZipInsideReduce.cfg
new file mode 100644
index 0000000000..7e61f75847
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/ZipInsideReduce.cfg
@@ -0,0 +1,2 @@
+in Input SomeKeys.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/ZipInsideReduce.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/ZipInsideReduce.yql
new file mode 100644
index 0000000000..80371ba528
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/ZipInsideReduce.yql
@@ -0,0 +1,26 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let keySelector (lambda '(x) (Member x 'key)))
+(let listHandler (lambda '(stream) (FlatMap stream (lambda '(pair) (block '(
+ (let key (Nth pair '0))
+ (let list (Collect (Nth pair '1)))
+ (let list (Zip list (Skip list (Uint64 '1))))
+ (let r (FlatMap list (lambda '(x) (block '(
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AddMember s 'value (Concat (Member (Nth x '0) 'value) (ToString (Member (Nth x '1) 'value)))))
+ (return (AsList s))
+ )))))
+ (return r)
+))))))
+(let reducedTable (PartitionByKey table1 keySelector (Void) (Void) listHandler))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) reducedTable '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/default.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/default.cfg
new file mode 100644
index 0000000000..d481615947
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/default.cfg
@@ -0,0 +1,4 @@
+in Input input.txt
+out Output output.txt
+in Input2 input.txt
+out Output2 output2.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input.txt b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input.txt
new file mode 100644
index 0000000000..65949ea745
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/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/s-expressions/suites/SingleYamrOperation/input.txt.attr b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input.txt.attr
new file mode 100644
index 0000000000..b6100e5fd0
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input.txt.attr
@@ -0,0 +1,30 @@
+{
+ "_yql_row_spec" = {
+ "Type" = [
+ "StructType";
+ [
+ [
+ "key";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "subkey";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "value";
+ [
+ "DataType";
+ "String"
+ ]
+ ]
+ ]
+ ]
+ }
+} \ No newline at end of file
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input2.txt b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input2.txt
new file mode 100644
index 0000000000..3803cb8d65
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input2.txt
@@ -0,0 +1,3 @@
+{"key"="a";"subkey"="1";"value"="b"};
+{"key"="c";"subkey"="2";"value"="d"};
+{"key"="e";"subkey"="3";"value"="f"};
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input2.txt.attr b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input2.txt.attr
new file mode 100644
index 0000000000..b6100e5fd0
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input2.txt.attr
@@ -0,0 +1,30 @@
+{
+ "_yql_row_spec" = {
+ "Type" = [
+ "StructType";
+ [
+ [
+ "key";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "subkey";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "value";
+ [
+ "DataType";
+ "String"
+ ]
+ ]
+ ]
+ ]
+ }
+} \ No newline at end of file
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_empty.txt b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_empty.txt
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_empty.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_empty.txt.attr b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_empty.txt.attr
new file mode 100644
index 0000000000..b6100e5fd0
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_empty.txt.attr
@@ -0,0 +1,30 @@
+{
+ "_yql_row_spec" = {
+ "Type" = [
+ "StructType";
+ [
+ [
+ "key";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "subkey";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "value";
+ [
+ "DataType";
+ "String"
+ ]
+ ]
+ ]
+ ]
+ }
+} \ No newline at end of file
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other.txt b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other.txt
new file mode 100644
index 0000000000..65949ea745
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other.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/s-expressions/suites/SingleYamrOperation/input_other.txt.attr b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other.txt.attr
new file mode 100644
index 0000000000..8cc87a0668
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other.txt.attr
@@ -0,0 +1,10 @@
+{
+ "schema" = <
+ "strict" = %false;
+ "unique_keys" = %false
+ >
+ [{
+ "name" = "key";
+ "type" = "string"
+ }];
+}
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other_strict.txt b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other_strict.txt
new file mode 100644
index 0000000000..b043b210b0
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other_strict.txt
@@ -0,0 +1,4 @@
+{"key"="075";"_other"=[["subkey";"1"];["value";"abc"]]};
+{"key"="800";"_other"=[["subkey";"2"];["value";"ddd"]]};
+{"key"="020";"_other"=[["subkey";"3"];["value";"q"]]};
+{"key"="150";"_other"=[["subkey";"4"];["value";"qzz"]]};
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other_strict.txt.attr b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other_strict.txt.attr
new file mode 100644
index 0000000000..e7d68f4eea
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/input_other_strict.txt.attr
@@ -0,0 +1,28 @@
+{
+ "_yql_row_spec" = {"Type" = [
+ "StructType";
+ [
+ [
+ "_other";
+ [
+ "DictType";
+ [
+ "DataType";
+ "String"
+ ];
+ [
+ "DataType";
+ "String"
+ ]
+ ]
+ ];
+ [
+ "key";
+ [
+ "DataType";
+ "Yson"
+ ]
+ ]
+ ]
+ ]};
+}
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program1.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program1.yql
new file mode 100644
index 0000000000..47e3d28b9e
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program1.yql
@@ -0,0 +1,19 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (Int32 'x"64000000"))
+(let table1low (FlatMap table1 (lambda '(item) (block '(
+ (let intValueOpt (FromString (Member item 'key) 'Int32))
+ (let ret (FlatMap intValueOpt (lambda '(item2) (block '(
+ (return (ListIf (< item2 tresh) item))
+ )))))
+ (return ret)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program10.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program10.yql
new file mode 100644
index 0000000000..8abd57a84b
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program10.yql
@@ -0,0 +1,14 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (String '100))
+(let table1low (Filter table1 (lambda '(item) (< (Member item 'key) tresh))))
+(let table1low2 (Filter table1low (lambda '(item2) (> (Member item2 'value) (String 'd)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low2 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program11.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program11.yql
new file mode 100644
index 0000000000..746ca7e40b
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program11.yql
@@ -0,0 +1,13 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (ToString (+ (Int32 '100) (Int32 '200))))
+(let table1low (Filter table1 (lambda '(item) (< (Member item 'key) tresh))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program12.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program12.yql
new file mode 100644
index 0000000000..56a3ae6931
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program12.yql
@@ -0,0 +1,16 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let table1low (Filter table1 (lambda '(item) (block '(
+ (let tresh (String '100))
+ (let predicate (< (Member item 'key) tresh))
+ (return predicate)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program13.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program13.yql
new file mode 100644
index 0000000000..1b3276e796
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program13.yql
@@ -0,0 +1,16 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let data (block '(
+ (let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+ (let world (Left! x))
+ (let table1 (Right! x))
+ (let tresh (String '100))
+ (let table1low (Filter table1 (lambda '(item) (< (Member item 'key) tresh))))
+ (return table1low)
+)))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) data '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program14.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program14.yql
new file mode 100644
index 0000000000..218e366ef9
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program14.yql
@@ -0,0 +1,14 @@
+(
+(let sink (DataSink 'yt 'plato))
+(let source (DataSource 'yt 'plato))
+(let table (Right! (Read! world source (Key '('table (String 'Input))) '('key 'subkey 'value) '())))
+(let filter (lambda '(item) (block '(
+ (let res (And (> (Member item 'value) (String 'd)) (< (Member item 'key) (String '100))))
+ (return res)
+)
+)))
+(let table (Filter table filter))
+(let world (Write! world sink (Key '('table (String 'Output))) table '('('mode 'append))))
+(let world (Commit! world sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program15.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program15.yql
new file mode 100644
index 0000000000..de5a1d5a47
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program15.yql
@@ -0,0 +1,14 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (String '100))
+(let table1low (Filter table1 (lambda '(item) (< (Member item 'key) tresh))))
+(let table1low2 (Filter table1low (lambda '(item) (> (Member item 'key) (String '050)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low2 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program16.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program16.yql
new file mode 100644
index 0000000000..0347e8bef3
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program16.yql
@@ -0,0 +1,20 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (String '100))
+(let table1low (Filter table1 (lambda '(item) (< (Member item 'key) tresh))))
+(let table1new (Map table1low (lambda '(item) (block '(
+ (let s (Struct))
+ (let s (AddMember s 'key (Concat (String '*) (Member item 'key))))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AddMember s 'value (String '.)))
+ (return s)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1new '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program17.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program17.yql
new file mode 100644
index 0000000000..de6ff0054b
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program17.yql
@@ -0,0 +1,13 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (String '100))
+(let table1low (FlatMap table1 (lambda '(item) (ListIf (< (Member item 'key) tresh) item))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program18.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program18.yql
new file mode 100644
index 0000000000..60ab38e5e0
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program18.yql
@@ -0,0 +1,23 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (String '100))
+(let table1low (Filter table1 (lambda '(item) (< (Member item 'key) tresh))))
+(let table1new (Map table1low (lambda '(item) (block '(
+ (let s (Struct))
+ (let s (AddMember s 'key (Concat (String '*) (Member item 'key))))
+ (return s)
+)))))
+(let table1new2 (Map table1new (lambda '(item) (block '(
+ (let s (AddMember item 'subkey (String '.)))
+ (let s (AddMember s 'value (String '.)))
+ (return s)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1new2 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program19.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program19.yql
new file mode 100644
index 0000000000..0bd4afc826
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program19.yql
@@ -0,0 +1,25 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (String '100))
+(let table1low (Filter table1 (lambda '(item) (< (Member item 'key) tresh))))
+(let table1new (Map table1low (lambda '(item) (block '(
+ (let s (Struct))
+ (let s (AddMember s 'key (Concat (String '*) (Member item 'key))))
+ (return s)
+)))))
+(let table1new2 (FlatMap table1new (lambda '(item) (block '(
+ (let s (AddMember item 'value (String '.)))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AsList s))
+ (let s (Extend s s))
+ (return s)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1new2 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program2.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program2.cfg
new file mode 100644
index 0000000000..3ad8212f69
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program2.cfg
@@ -0,0 +1,4 @@
+in Input input.txt
+in Input2 input2.txt
+out Output output1.txt
+out Output2 output2.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program2.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program2.yql
new file mode 100644
index 0000000000..697af6afa2
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program2.yql
@@ -0,0 +1,15 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1 '('('mode 'append))))
+(let x (Read! world mr_source (Key '('table (String 'Input2))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table2 (Right! x))
+(let world (Write! world mr_sink (Key '('table (String 'Output2))) table2 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program20.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program20.yql
new file mode 100644
index 0000000000..237d4babc1
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program20.yql
@@ -0,0 +1,25 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (String '100))
+(let table1low (Filter table1 (lambda '(item) (< (Member item 'key) tresh))))
+(let table1new (Map table1low (lambda '(item) (block '(
+ (let s (Struct))
+ (let s (AddMember s 'key (Concat (String '*) (Member item 'key))))
+ (return s)
+)))))
+(let table1new2 (FlatMap table1new (lambda '(item) (block '(
+ (let s (AddMember item 'value (String '.)))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s1 (AsList s))
+ (let s (Append s1 s))
+ (return s)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1new2 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program21.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program21.yql
new file mode 100644
index 0000000000..8492d10a4d
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program21.yql
@@ -0,0 +1,26 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (String '100))
+(let table1low (Filter table1 (lambda '(item) (< (Member item 'key) tresh))))
+(let table1new (Map table1low (lambda '(item) (block '(
+ (let s (Struct))
+ (let s (AddMember s 'key (Concat (String '*) (Member item 'key))))
+ (return s)
+)))))
+(let table1new2 (FlatMap table1new (lambda '(item) (block '(
+ (let s (AddMember item 'value (String '.)))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s1 (AsList s))
+ (let s (Append s1 s))
+ (return s)
+)))))
+(let table1new3 (Filter table1new2 (lambda '(item) (> (Member item 'key) (String '*030)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1new3 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program22.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program22.yql
new file mode 100644
index 0000000000..76674f13da
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program22.yql
@@ -0,0 +1,13 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let table1sorted (Sort table1 (Bool 'true) (lambda '(item) (Member item 'key))))
+#(let table1sorted (Sort table1 (Tuple (Bool 'true) (Bool 'false)) (lambda '(item) (Tuple (Member item 'key) (Member item 'value)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1sorted '()))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program23.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program23.yql
new file mode 100644
index 0000000000..378711e378
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program23.yql
@@ -0,0 +1,21 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let tresh (Int32 '100))
+(let table1low (FlatMap table1 (lambda '(item) (block '(
+ (let intValueOpt (FromString (Member item 'key) 'Int32))
+ (let optPlus50 (Map intValueOpt (lambda '(item2) (+ (Int32 '50) item2))))
+ (let ret (FlatMap optPlus50 (lambda '(item2) (block '(
+ (let s (ListIf (< item2 tresh) item))
+ (return s)
+ )))))
+ (return ret)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1low '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program24.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program24.yql
new file mode 100644
index 0000000000..1c3c39d3ea
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program24.yql
@@ -0,0 +1,19 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let table1even (FlatMap table1 (lambda '(item) (block '(
+ (let intValueOpt (FromString (Member item 'key) 'Int32))
+ (let equalsZero (lambda '(x) (== x (Int32 '0))))
+ (let isEven (lambda '(x) (Coalesce (Map (% x (Int32 '2)) equalsZero) (Bool 'false))))
+ (let filteredValue (Filter intValueOpt isEven))
+ (let ret (ListIf (Exists filteredValue) item))
+ (return ret)
+)))))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1even '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.cfg
new file mode 100644
index 0000000000..d87afdedc4
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.cfg
@@ -0,0 +1,2 @@
+in Input program26.input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.input.txt b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.input.txt
new file mode 100644
index 0000000000..55183cdd00
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.input.txt
@@ -0,0 +1,4 @@
+{"key"="0";"subkey"="1";"value"="abc"};
+{"key"="8";"subkey"="2";"value"="ddd"};
+{"key"="0";"subkey"="3";"value"="q"};
+{"key"="1";"subkey"="4";"value"="qzz"};
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.input.txt.attr b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.input.txt.attr
new file mode 100644
index 0000000000..b6100e5fd0
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.input.txt.attr
@@ -0,0 +1,30 @@
+{
+ "_yql_row_spec" = {
+ "Type" = [
+ "StructType";
+ [
+ [
+ "key";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "subkey";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "value";
+ [
+ "DataType";
+ "String"
+ ]
+ ]
+ ]
+ ]
+ }
+} \ No newline at end of file
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.yql
new file mode 100644
index 0000000000..11dcbbbe57
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program26.yql
@@ -0,0 +1,23 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let keySelector (lambda '(x) (Member x 'key)))
+(let listHandler (lambda '(stream) (FlatMap stream (lambda '(pair) (block '(
+ (let key (Nth pair '0))
+ (let list (ForwardList (Nth pair '1)))
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AddMember s 'value (ToString (Length list))))
+ (let ret (Just s))
+ (return ret)
+))))))
+(let reducedTable (PartitionByKey table1 keySelector (Void) (Void) listHandler))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) reducedTable '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.cfg
new file mode 100644
index 0000000000..f23f5c9676
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.cfg
@@ -0,0 +1,2 @@
+in Input program27.input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.input.txt b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.input.txt
new file mode 100644
index 0000000000..55183cdd00
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.input.txt
@@ -0,0 +1,4 @@
+{"key"="0";"subkey"="1";"value"="abc"};
+{"key"="8";"subkey"="2";"value"="ddd"};
+{"key"="0";"subkey"="3";"value"="q"};
+{"key"="1";"subkey"="4";"value"="qzz"};
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.input.txt.attr b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.input.txt.attr
new file mode 100644
index 0000000000..b6100e5fd0
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.input.txt.attr
@@ -0,0 +1,30 @@
+{
+ "_yql_row_spec" = {
+ "Type" = [
+ "StructType";
+ [
+ [
+ "key";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "subkey";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "value";
+ [
+ "DataType";
+ "String"
+ ]
+ ]
+ ]
+ ]
+ }
+} \ No newline at end of file
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.yql
new file mode 100644
index 0000000000..2663ed1bb0
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program27.yql
@@ -0,0 +1,24 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let keySelector (lambda '(x) (Member x 'key)))
+(let listHandler (lambda '(stream) (FlatMap stream (lambda '(pair) (block '(
+ (let key (Nth pair '0))
+ (let list (ForwardList (Nth pair '1)))
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let revLen (Length (Reverse list)))
+ (let s (AddMember s 'subkey (String '.)))
+ (let s (AddMember s 'value (ToString revLen)))
+ (let ret (AsList s))
+ (return ret)
+))))))
+(let reducedTable (PartitionByKey table1 keySelector (Void) (Void) listHandler))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) reducedTable '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.cfg
new file mode 100644
index 0000000000..6f69ec10ac
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.cfg
@@ -0,0 +1,2 @@
+in Input program28.input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.input.txt b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.input.txt
new file mode 100644
index 0000000000..c59dba9c7b
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.input.txt
@@ -0,0 +1,9 @@
+{"key"="0";"subkey"="1";"value"="abc"};
+{"key"="1";"subkey"="2";"value"="qzz"};
+{"key"="2";"subkey"="3";"value"="uuu"};
+{"key"="0";"subkey"="4";"value"="aa"};
+{"key"="0";"subkey"="5";"value"="asd"};
+{"key"="0";"subkey"="6";"value"="asd"};
+{"key"="0";"subkey"="7";"value"="ss"};
+{"key"="0";"subkey"="8";"value"="ss"};
+{"key"="2";"subkey"="9";"value"="qqq"};
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.input.txt.attr b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.input.txt.attr
new file mode 100644
index 0000000000..b6100e5fd0
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.input.txt.attr
@@ -0,0 +1,30 @@
+{
+ "_yql_row_spec" = {
+ "Type" = [
+ "StructType";
+ [
+ [
+ "key";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "subkey";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "value";
+ [
+ "DataType";
+ "String"
+ ]
+ ]
+ ]
+ ]
+ }
+} \ No newline at end of file
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.yql
new file mode 100644
index 0000000000..8ad311cd3c
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program28.yql
@@ -0,0 +1,26 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let keySelector (lambda '(x) (Member x 'key)))
+(let listHandler (lambda '(stream) (FlatMap stream (lambda '(pair) (block '(
+ (let key (Nth pair '0))
+ (let list (ForwardList (Nth pair '1)))
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let s (AddMember s 'subkey (String '.)))
+ (let list1 (Take list (Uint64 '5)))
+ (let list2 (Skip list (Uint64 '1)))
+ (let x (Concat (Concat (ToString (Length list1)) (String '"_")) (ToString (Length list2))))
+ (let s (AddMember s 'value (ToString x)))
+ (let ret (AsList s))
+ (return ret)
+))))))
+(let reducedTable (PartitionByKey table1 keySelector (Void) (Void) listHandler))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) reducedTable '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.cfg b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.cfg
new file mode 100644
index 0000000000..3123d957f8
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.cfg
@@ -0,0 +1,2 @@
+in Input program29.input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.input.txt b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.input.txt
new file mode 100644
index 0000000000..684f20f67a
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.input.txt
@@ -0,0 +1,5 @@
+{"key"="0";"subkey"="1";"value"="15"};
+{"key"="8";"subkey"="2";"value"="23"};
+{"key"="0";"subkey"="3";"value"="3"};
+{"key"="1";"subkey"="4";"value"="10"};
+{"key"="2";"subkey"="5";"value"="zzz"};
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.input.txt.attr b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.input.txt.attr
new file mode 100644
index 0000000000..b6100e5fd0
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.input.txt.attr
@@ -0,0 +1,30 @@
+{
+ "_yql_row_spec" = {
+ "Type" = [
+ "StructType";
+ [
+ [
+ "key";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "subkey";
+ [
+ "DataType";
+ "String"
+ ]
+ ];
+ [
+ "value";
+ [
+ "DataType";
+ "String"
+ ]
+ ]
+ ]
+ ]
+ }
+} \ No newline at end of file
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.yql
new file mode 100644
index 0000000000..40a2407e1f
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program29.yql
@@ -0,0 +1,25 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let keySelector (lambda '(x) (Member x 'key)))
+(let listHandler (lambda '(stream) (FlatMap stream (lambda '(pair) (block '(
+ (let key (Nth pair '0))
+ (let list (ForwardList (Nth pair '1)))
+ (let s (Struct))
+ (let s (AddMember s 'key key))
+ (let s (AddMember s 'subkey (String '.)))
+ (let ilist (FlatMap list (lambda '(item) (FromString (Member item 'value) 'Int32))))
+ (let sum (Fold ilist (Int32 '0) (lambda '(item state) (+ item state))))
+ (let s (AddMember s 'value (ToString sum)))
+ (let ret (AsList s))
+ (return ret)
+))))))
+(let reducedTable (PartitionByKey table1 keySelector (Void) (Void) listHandler))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) reducedTable '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program8.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program8.yql
new file mode 100644
index 0000000000..894e1a15a1
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program8.yql
@@ -0,0 +1,11 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)
diff --git a/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program9.yql b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program9.yql
new file mode 100644
index 0000000000..894e1a15a1
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/SingleYamrOperation/program9.yql
@@ -0,0 +1,11 @@
+(
+#comment
+(let mr_source (DataSource 'yt 'plato))
+(let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
+(let world (Left! x))
+(let table1 (Right! x))
+(let mr_sink (DataSink 'yt (quote plato)))
+(let world (Write! world mr_sink (Key '('table (String 'Output))) table1 '('('mode 'append))))
+(let world (Commit! world mr_sink))
+(return world)
+)