aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/s-expressions/suites/Optimizers/VariantItemOverVisit.yql
blob: 76b605c2716e87d3692f5d6a0fe77df2a7603f50 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(
#comment
(let config (DataSource 'config))
(let world (Configure! world config 'PureDataSource 'yt))
(let res_sink (DataSink 'result))

(let vt (VariantType (TupleType (DataType 'String) (DataType 'String) (DataType 'String))))
(let v0 (Variant (String 'aaa) '0 vt))
(let v1 (Variant (String 'bbb) '1 vt))
(let v2 (Variant (String 'ccc) '2 vt))
(let list (AsList v0 v1 v2))

(let handler (lambda '(x) (Concat (String '0-) x)))

(let remap (lambda '(x) (Visit x '0 (lambda '(x) (Variant x '1 vt)) '1 (lambda '(x) (Variant x '2 vt)) '2 (lambda '(x) (Variant x '0 vt)))))
(let def (lambda '(x) (Visit x '0 (lambda '(x) (Variant (Apply handler x) '0 vt)) v1)))

(let world (Write! world res_sink (Key) (Map list (lambda '(x) (VariantItem (Apply remap x)))) '('('type))))
(let world (Write! world res_sink (Key) (Map list (lambda '(x) (VariantItem (Apply def x)))) '('('type))))

(let world (Commit! world res_sink))
(return world)
)