diff options
author | ivanmorozov <ivanmorozov@yandex-team.com> | 2023-02-08 19:41:16 +0300 |
---|---|---|
committer | ivanmorozov <ivanmorozov@yandex-team.com> | 2023-02-08 19:41:16 +0300 |
commit | 86dd6e12b80a6092b0299ca034cca08fc14eab6f (patch) | |
tree | fd7187f6b84a7b4e89ba8fceeb7641b1386191f2 | |
parent | 5407272f4680720a634e9c23d0a37d1b9a8b2569 (diff) | |
download | ydb-86dd6e12b80a6092b0299ca034cca08fc14eab6f.tar.gz |
use AggrAdd instead of +
-rw-r--r-- | ydb/library/yql/core/yql_aggregate_expander.cpp | 2 | ||||
-rw-r--r-- | ydb/library/yql/mount/lib/yql/aggregate.yql | 8 | ||||
-rw-r--r-- | ydb/library/yql/mount/lib/yql/window.yql | 6 |
3 files changed, 8 insertions, 8 deletions
diff --git a/ydb/library/yql/core/yql_aggregate_expander.cpp b/ydb/library/yql/core/yql_aggregate_expander.cpp index 23aa978545..95e331f094 100644 --- a/ydb/library/yql/core/yql_aggregate_expander.cpp +++ b/ydb/library/yql/core/yql_aggregate_expander.cpp @@ -1419,7 +1419,7 @@ TExprNode::TPtr TAggregateExpander::CountAggregateRewrite(const NNodes::TCoAggre auto merge = NNodes::TCoLambda(traits->Child(5)); { auto& plus = merge.Body().Ref(); - if (!plus.IsCallable("+")) { + if (!plus.IsCallable({ "+", "AggrAdd" }) ) { return node.Ptr(); } diff --git a/ydb/library/yql/mount/lib/yql/aggregate.yql b/ydb/library/yql/mount/lib/yql/aggregate.yql index 51e2085c4a..f17b9f55b9 100644 --- a/ydb/library/yql/mount/lib/yql/aggregate.yql +++ b/ydb/library/yql/mount/lib/yql/aggregate.yql @@ -44,10 +44,10 @@ # list_type:type init:lambda # doesn't support optional values (let count_traits_factory (lambda '(list_type init) (block '( - (let update (lambda '(value state) (+ state (Apply init value)))) + (let update (lambda '(value state) (AggrAdd state (Apply init value)))) (let save (lambda '(state) state)) (let load (lambda '(state) state)) - (let merge (lambda '(state1 state2) (+ state1 state2))) + (let merge (lambda '(state1 state2) (AggrAdd state1 state2))) (let finish (lambda '(state) state)) (return (AggregationTraits (ListItemType list_type) init update save load merge finish (Uint64 '0))) )))) @@ -59,7 +59,7 @@ (let update (lambda '(value state) (AggrCountUpdate value state))) (let save (lambda '(state) state)) (let load (lambda '(state) state)) - (let merge (lambda '(state1 state2) (+ state1 state2))) + (let merge (lambda '(state1 state2) (AggrAdd state1 state2))) (let finish (lambda '(state) state)) (return (AggregationTraits (ListItemType list_type) init update save load merge finish (Uint64 '0))) )))) @@ -86,7 +86,7 @@ ) (Inc (Nth state '1))))) (let save (lambda '(state) state)) (let load (lambda '(state) state)) - (let merge (lambda '(state1 state2) '((+ (Nth state1 '0) (Nth state2 '0)) (+ (Nth state1 '1) (Nth state2 '1))))) + (let merge (lambda '(state1 state2) '((AggrAdd (Nth state1 '0) (Nth state2 '0)) (AggrAdd (Nth state1 '1) (Nth state2 '1))))) (let finish (lambda '(state) (MatchType (ListItemType list_type) 'Decimal diff --git a/ydb/library/yql/mount/lib/yql/window.yql b/ydb/library/yql/mount/lib/yql/window.yql index d915c3a103..fad01f0f21 100644 --- a/ydb/library/yql/mount/lib/yql/window.yql +++ b/ydb/library/yql/mount/lib/yql/window.yql @@ -91,8 +91,8 @@ # list_type:type init:lambda # doesn't support optional values (let count_traits_factory (lambda '(list_type init) (block '( - (let update (lambda '(value state) (+ state (Apply init value)))) - (let shift (lambda '(value state) (+ state (Minus (Apply init value))))) + (let update (lambda '(value state) (AggrAdd state (Apply init value)))) + (let shift (lambda '(value state) (AggrAdd state (Minus (Apply init value))))) (let current (lambda '(state) state)) (return (WindowTraits (ListItemType list_type) init update shift current (Uint64 '0))) )))) @@ -118,7 +118,7 @@ (let convert_interval_to_decimal (lambda '(value) (StrictCast (StrictCast value (DataType 'Int64)) (DataType 'Decimal '35 '0)))) (let convert_decimal_to_interval (lambda '(value) (Unwrap (StrictCast (StrictCast value (DataType 'Int64)) (DataType 'Interval))))) (let init (lambda '(value) '((MatchType (TypeOf value) 'Decimal (lambda '() (WidenIntegral value)) 'Interval (lambda '() (Apply convert_interval_to_decimal value )) (lambda '() (Convert value 'Double))) (Uint64 '1)))) - (let update (lambda '(value state) '((+ (Nth state '0) (MatchType (TypeOf value) 'Decimal (lambda '() (WidenIntegral value)) 'Interval (lambda '() (Apply convert_interval_to_decimal value )) (lambda '() (Convert value 'Double)))) (Inc (Nth state '1))))) + (let update (lambda '(value state) '((AggrAdd (Nth state '0) (MatchType (TypeOf value) 'Decimal (lambda '() (WidenIntegral value)) 'Interval (lambda '() (Apply convert_interval_to_decimal value )) (lambda '() (Convert value 'Double)))) (Inc (Nth state '1))))) (let shift (lambda '(value state) '((- (Nth state '0) value) (Dec (Nth state '1))))) (let current (lambda '(state) (MatchType (ListItemType list_type) 'Decimal (lambda '() (Cast (Div (Nth state '0) (Nth state '1)) (ListItemType list_type))) |