aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorivanmorozov <ivanmorozov@yandex-team.com>2023-02-08 19:41:16 +0300
committerivanmorozov <ivanmorozov@yandex-team.com>2023-02-08 19:41:16 +0300
commit86dd6e12b80a6092b0299ca034cca08fc14eab6f (patch)
treefd7187f6b84a7b4e89ba8fceeb7641b1386191f2
parent5407272f4680720a634e9c23d0a37d1b9a8b2569 (diff)
downloadydb-86dd6e12b80a6092b0299ca034cca08fc14eab6f.tar.gz
use AggrAdd instead of +
-rw-r--r--ydb/library/yql/core/yql_aggregate_expander.cpp2
-rw-r--r--ydb/library/yql/mount/lib/yql/aggregate.yql8
-rw-r--r--ydb/library/yql/mount/lib/yql/window.yql6
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)))