aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/s-expressions/suites/Optimizers/FuseMapAfterLReduce.yql
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/Optimizers/FuseMapAfterLReduce.yql
parent2c7938962d8689e175574fc1e817c05049f27905 (diff)
parenteff600952d5dfe17942f38f510a8ac2b203bb3a5 (diff)
downloadydb-31773f157bf8164364649b5f470f52dece0a4317.tar.gz
Merge branch 'rightlib' into mergelibs-241120-1113
Diffstat (limited to 'yql/essentials/tests/s-expressions/suites/Optimizers/FuseMapAfterLReduce.yql')
-rw-r--r--yql/essentials/tests/s-expressions/suites/Optimizers/FuseMapAfterLReduce.yql85
1 files changed, 85 insertions, 0 deletions
diff --git a/yql/essentials/tests/s-expressions/suites/Optimizers/FuseMapAfterLReduce.yql b/yql/essentials/tests/s-expressions/suites/Optimizers/FuseMapAfterLReduce.yql
new file mode 100644
index 0000000000..ea138e481a
--- /dev/null
+++ b/yql/essentials/tests/s-expressions/suites/Optimizers/FuseMapAfterLReduce.yql
@@ -0,0 +1,85 @@
+(
+(import aggregate_module '"/lib/yql/aggregate.yql")
+(import window_module '"/lib/yql/window.yql")
+(import core_module '"/lib/yql/core.yql")
+(let world (block '(
+ (let x (Read! world (DataSource '"yt" '"plato") (MrTableConcat (Key '('table (String '"Input")))) '('"key") '()))
+ (let world (Left! x))
+ (let table1 (Right! x))
+ (let output (block '(
+ (let select (block '(
+ (let core (block '(
+ (let select (block '(
+ (let inputRowsList (block '(
+ (let select (block '(
+ (let core table1)
+ (let core (FlatMap core (lambda '(row) (AsList (AsStruct '('"key" (Member row '"key")) '('"skey" ("Size" (Member row '"key"))))))))
+ (let core (Aggregate core '('"skey") '('('Count0 (Apply (bind aggregate_module '"count_traits_factory") (TypeOf core) (lambda '(row) (Void)))))))
+ (let core (FlatMap core (lambda '(row) (block '(
+ (let res (AsStruct '('"skey" (Member row '"skey")) '('"cnt" (Member row 'Count0))))
+ (let res (AsList res))
+ (return res)
+ )))))
+ (return core)
+ )))
+ (return select)
+ )))
+ (let core (LMap inputRowsList (lambda '(x) (block '(
+ (let inputType (CallableArgumentType (TypeOf (ScriptUdf 'Python '"f" (CallableType '() '((StreamType (StructType '('"cnt" (DataType 'Uint64)) '('"pass" (DataType 'Int32)) '('"skey" (DataType 'Uint32))))) '((StreamType (StructType '('"cnt" (DataType 'Uint64)) '('"skey" (DataType 'Uint32))))) '((DataType 'Int32))) (String '@@
+def f(input,x):
+ for i in list(input):
+ d = i.__dict__
+ d["pass"] = x
+ yield d
+
+def f2(a,b,c):
+ return {"a":a,"b":b,"c":c}
+@@))) '0))
+ (let inputRowsList (MatchType inputType 'List (lambda '(y) (ForwardList x)) (lambda '(y) "x")))
+ (return (Apply (ScriptUdf 'Python '"f" (CallableType '() '((StreamType (StructType '('"cnt" (DataType 'Uint64)) '('"pass" (DataType 'Int32)) '('"skey" (DataType 'Uint32))))) '((StreamType (StructType '('"cnt" (DataType 'Uint64)) '('"skey" (DataType 'Uint32))))) '((DataType 'Int32))) (String '@@
+def f(input,x):
+ for i in list(input):
+ d = i.__dict__
+ d["pass"] = x
+ yield d
+
+def f2(a,b,c):
+ return {"a":a,"b":b,"c":c}
+@@)) inputRowsList (Int32 '"1")))
+ )))))
+ (return core)
+ )))
+ (return select)
+ )))
+ (let core (FlatMap core (lambda '(row) (block '(
+ (let res (Apply (ScriptUdf 'Python '"f2" (CallableType '() '((StructType '('"a" (DataType 'Uint32)) '('"b" (DataType 'Uint64)) '('"c" (DataType 'Int32)))) '((DataType 'Uint32) 'skey) '((DataType 'Uint64) 'cnt) '((DataType 'Int32) 'pass)) (String '@@
+def f(input,x):
+ for i in list(input):
+ d = i.__dict__
+ d["pass"] = x
+ yield d
+
+def f2(a,b,c):
+ return {"a":a,"b":b,"c":c}
+@@)) (Member row '"skey") (Member row '"cnt") (Member row '"pass")))
+ (let res (MatchType res 'Optional (lambda '(opt) (ToList opt)) (lambda '(val) (MatchType val 'List (lambda '(list) list) (lambda '(item) (AsList item))))))
+ (return res)
+ )))))
+ (return core)
+ )))
+ (return select)
+ )))
+ (let world (block '(
+ (let result_sink (DataSink 'result))
+ (let world (Write! world result_sink (Key) output '('('type) '('autoref))))
+ (return (Commit! world result_sink))
+ )))
+ (return world)
+)))
+(let world (block '(
+ (let plato_sink (DataSink '"yt" '"plato"))
+ (let world (Commit! world plato_sink))
+ (return world)
+)))
+(return world)
+)