aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroleg-g <oleg-g@yandex-team.ru>2022-02-10 16:52:20 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:52:20 +0300
commit9ef4225c5ec185f81cba50096659e62ec01267d8 (patch)
tree6d0d979bdf491a4c1a25748eafc1f7db35dd24bc
parent969a4575432dd5cbdcdd3be410af8ddfb9b0cc1a (diff)
downloadydb-9ef4225c5ec185f81cba50096659e62ec01267d8.tar.gz
Restoring authorship annotation for <oleg-g@yandex-team.ru>. Commit 1 of 2.
-rw-r--r--ydb/library/yql/core/common_opt/yql_co_simple1.cpp12
-rw-r--r--ydb/library/yql/core/expr_nodes/yql_expr_nodes.json16
-rw-r--r--ydb/library/yql/core/issue/protos/issue_id.proto2
-rw-r--r--ydb/library/yql/core/issue/yql_issue.txt8
-rw-r--r--ydb/library/yql/core/type_ann/type_ann_core.cpp32
-rw-r--r--ydb/library/yql/providers/common/proto/gateways_config.proto26
-rw-r--r--ydb/library/yql/sql/v0/aggregation.cpp2
-rw-r--r--ydb/library/yql/sql/v0/builtin.cpp512
-rw-r--r--ydb/library/yql/sql/v0/context.h2
-rw-r--r--ydb/library/yql/sql/v0/insert.cpp2
-rw-r--r--ydb/library/yql/sql/v0/node.cpp12
-rw-r--r--ydb/library/yql/sql/v0/node.h2
-rw-r--r--ydb/library/yql/sql/v0/query.cpp8
-rw-r--r--ydb/library/yql/sql/v0/select.cpp510
-rw-r--r--ydb/library/yql/sql/v0/sql.cpp78
-rw-r--r--ydb/library/yql/sql/v1/aggregation.cpp2
-rw-r--r--ydb/library/yql/sql/v1/builtin.cpp434
-rw-r--r--ydb/library/yql/sql/v1/node.cpp8
-rw-r--r--ydb/library/yql/sql/v1/node.h2
-rw-r--r--ydb/library/yql/sql/v1/query.cpp8
-rw-r--r--ydb/library/yql/sql/v1/select.cpp336
-rw-r--r--ydb/library/yql/sql/v1/sql.cpp48
22 files changed, 1031 insertions, 1031 deletions
diff --git a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
index a32a6c3dabe..017c6ce9fc5 100644
--- a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
+++ b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
@@ -4671,12 +4671,12 @@ void RegisterCoSimpleCallables1(TCallableOptimizerMap& map) {
map[LeftName] = std::bind(&OptimizeDirection<false>, _1);
map[RightName] = std::bind(&OptimizeDirection<true>, _1);
- map["Apply"] = [](const TExprNode::TPtr& node, TExprContext& /*ctx*/, TOptimizeContext& /*optCtx*/) {
+ map["Apply"] = [](const TExprNode::TPtr& node, TExprContext& /*ctx*/, TOptimizeContext& /*optCtx*/) {
auto ret = FoldYsonParseAfterSerialize(node);
if (ret != node) {
return ret;
- }
-
+ }
+
ret = FoldYson2ParseAfterSerialize(node);
if (ret != node) {
return ret;
@@ -4685,8 +4685,8 @@ void RegisterCoSimpleCallables1(TCallableOptimizerMap& map) {
ret = FoldYsonSeralizeAfterParse(node);
if (ret != node) {
return ret;
- }
-
+ }
+
ret = FoldYson2SeralizeAfterParse(node);
if (ret != node) {
return ret;
@@ -4703,7 +4703,7 @@ void RegisterCoSimpleCallables1(TCallableOptimizerMap& map) {
}
return node;
- };
+ };
map["Switch"] = [](const TExprNode::TPtr& node, TExprContext& ctx, TOptimizeContext& /*optCtx*/) {
TExprNode::TPtr flatMap;
diff --git a/ydb/library/yql/core/expr_nodes/yql_expr_nodes.json b/ydb/library/yql/core/expr_nodes/yql_expr_nodes.json
index edfcaa15302..f267ebbb7dc 100644
--- a/ydb/library/yql/core/expr_nodes/yql_expr_nodes.json
+++ b/ydb/library/yql/core/expr_nodes/yql_expr_nodes.json
@@ -1229,20 +1229,20 @@
]
},
{
- "Name": "TCoUdf",
- "Base": "TCallable",
- "Match": {"Type": "Callable", "Name": "Udf"},
- "Children": [
- {"Index": 0, "Name": "MethodName", "Type": "TCoAtom"},
+ "Name": "TCoUdf",
+ "Base": "TCallable",
+ "Match": {"Type": "Callable", "Name": "Udf"},
+ "Children": [
+ {"Index": 0, "Name": "MethodName", "Type": "TCoAtom"},
{"Index": 1, "Name": "RunConfigValue", "Type": "TExprBase", "Optional": true},
{"Index": 2, "Name": "UserType", "Type": "TExprBase", "Optional": true},
{"Index": 3, "Name": "TypeConfig", "Type": "TCoAtom", "Optional": true},
{"Index": 4, "Name": "CachedCallableType", "Type": "TExprBase", "Optional": true},
{"Index": 5, "Name": "CachedRunConfigType", "Type": "TExprBase", "Optional": true},
{"Index": 6, "Name": "FileAlias", "Type": "TCoAtom", "Optional": true}
- ]
- },
- {
+ ]
+ },
+ {
"Name": "TCoExists",
"Base": "TCallable",
"Match": {"Type": "Callable", "Name": "Exists"},
diff --git a/ydb/library/yql/core/issue/protos/issue_id.proto b/ydb/library/yql/core/issue/protos/issue_id.proto
index a2ed91d6401..8c07a60cece 100644
--- a/ydb/library/yql/core/issue/protos/issue_id.proto
+++ b/ydb/library/yql/core/issue/protos/issue_id.proto
@@ -29,7 +29,7 @@ message TIssuesIds {
CORE_FREE_TABLE_PATH_RECORD = 1101;
CORE_CAST_INTEGRAL_TO_TIMESTAMP_UNSAFE = 1102;
CORE_FREE_KEY_SWITCH = 1103;
- CORE_NON_PERSISTABLE_ENTITY = 1104;
+ CORE_NON_PERSISTABLE_ENTITY = 1104;
CORE_NON_STREAM_BATCH_UDF = 1105;
CORE_FLATTEN_BY_OPT = 1106;
CORE_IMPLICIT_BITCAST = 1107;
diff --git a/ydb/library/yql/core/issue/yql_issue.txt b/ydb/library/yql/core/issue/yql_issue.txt
index 897d5d6f9a5..a5a3f58b0bc 100644
--- a/ydb/library/yql/core/issue/yql_issue.txt
+++ b/ydb/library/yql/core/issue/yql_issue.txt
@@ -88,10 +88,10 @@ ids {
severity: S_WARNING
}
ids {
- code: CORE_NON_PERSISTABLE_ENTITY
- severity: S_WARNING
-}
-ids {
+ code: CORE_NON_PERSISTABLE_ENTITY
+ severity: S_WARNING
+}
+ids {
code: CORE_NON_STREAM_BATCH_UDF
severity: S_WARNING
}
diff --git a/ydb/library/yql/core/type_ann/type_ann_core.cpp b/ydb/library/yql/core/type_ann/type_ann_core.cpp
index 5846e6cb108..74ad131b6b6 100644
--- a/ydb/library/yql/core/type_ann/type_ann_core.cpp
+++ b/ydb/library/yql/core/type_ann/type_ann_core.cpp
@@ -6144,28 +6144,28 @@ template <NKikimr::NUdf::EDataSlot DataSlot>
return IGraphTransformer::TStatus::Repeat;
}
- IGraphTransformer::TStatus PersistableAssertWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TContext& ctx) {
- if (!EnsureArgsCount(*input, 1, ctx.Expr)) {
- return IGraphTransformer::TStatus::Error;
- }
+ IGraphTransformer::TStatus PersistableAssertWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TContext& ctx) {
+ if (!EnsureArgsCount(*input, 1, ctx.Expr)) {
+ return IGraphTransformer::TStatus::Error;
+ }
if (!EnsureComputable(input->Head(), ctx.Expr)) {
return IGraphTransformer::TStatus::Error;
}
auto nodePtr = input->HeadPtr();
- if (!nodePtr->IsPersistable()) {
+ if (!nodePtr->IsPersistable()) {
auto issue = TIssue(ctx.Expr.GetPosition(nodePtr->Pos()), "Persistable required. Atom, key, world, datasink, datasource, callable, resource, stream and lambda are not persistable");
- SetIssueCode(EYqlIssueCode::TIssuesIds_EIssueCode_CORE_NON_PERSISTABLE_ENTITY, issue);
- if (!ctx.Expr.AddWarning(issue)) {
- return IGraphTransformer::TStatus::Error;
- }
- }
-
- output = nodePtr;
- return IGraphTransformer::TStatus::Repeat;
- }
-
+ SetIssueCode(EYqlIssueCode::TIssuesIds_EIssueCode_CORE_NON_PERSISTABLE_ENTITY, issue);
+ if (!ctx.Expr.AddWarning(issue)) {
+ return IGraphTransformer::TStatus::Error;
+ }
+ }
+
+ output = nodePtr;
+ return IGraphTransformer::TStatus::Repeat;
+ }
+
IGraphTransformer::TStatus PersistableReprWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TContext& ctx) {
if (!EnsureArgsCount(*input, 1, ctx.Expr)) {
return IGraphTransformer::TStatus::Error;
@@ -12967,7 +12967,7 @@ template <NKikimr::NUdf::EDataSlot DataSlot>
Functions["MatchType"] = &MatchTypeWrapper;
Functions["IfType"] = &IfTypeWrapper;
Functions["EnsureType"] = &TypeAssertWrapper<true>;
- Functions["EnsurePersistable"] = &PersistableAssertWrapper;
+ Functions["EnsurePersistable"] = &PersistableAssertWrapper;
Functions["PersistableRepr"] = &PersistableReprWrapper;
Functions["EnsureConvertibleTo"] = &TypeAssertWrapper<false>;
Functions["EnsureTupleSize"] = &TupleSizeAssertWrapper;
diff --git a/ydb/library/yql/providers/common/proto/gateways_config.proto b/ydb/library/yql/providers/common/proto/gateways_config.proto
index 8561fe25368..4ad77ed1146 100644
--- a/ydb/library/yql/providers/common/proto/gateways_config.proto
+++ b/ydb/library/yql/providers/common/proto/gateways_config.proto
@@ -126,19 +126,19 @@ message TKikimrGatewayConfig {
repeated TAttr DefaultSettings = 2;
}
-/////////////////////////////// Kikimr MVP ///////////////////////////////
-
-message TKikimrMvpProxyConfig {
- optional string Host = 1;
- optional uint32 Port = 2;
- optional string BasePath = 3;
+/////////////////////////////// Kikimr MVP ///////////////////////////////
+
+message TKikimrMvpProxyConfig {
+ optional string Host = 1;
+ optional uint32 Port = 2;
+ optional string BasePath = 3;
optional uint32 TvmId = 4 [default = 0];
-}
-
-message TKikimrMvpGatewayConfig {
- repeated TKikimrMvpProxyConfig ProxyMapping = 1;
-}
-
+}
+
+message TKikimrMvpGatewayConfig {
+ repeated TKikimrMvpProxyConfig ProxyMapping = 1;
+}
+
///////////////////////////// Ydb /////////////////////////////
message TYdbClusterConfig {
@@ -440,7 +440,7 @@ message TGatewaysConfig {
optional TKikimrGatewayConfig Kikimr = 2;
optional TClickHouseGatewayConfig ClickHouse = 3;
optional TRtmrGatewayConfig Rtmr = 4;
- optional TKikimrMvpGatewayConfig KikimrMvp = 5;
+ optional TKikimrMvpGatewayConfig KikimrMvp = 5;
optional TStatGatewayConfig Stat = 6;
optional TChytGatewayConfig Chyt = 7;
optional TSolomonGatewayConfig Solomon = 8;
diff --git a/ydb/library/yql/sql/v0/aggregation.cpp b/ydb/library/yql/sql/v0/aggregation.cpp
index 64406048811..94e3b7f5b26 100644
--- a/ydb/library/yql/sql/v0/aggregation.cpp
+++ b/ydb/library/yql/sql/v0/aggregation.cpp
@@ -83,7 +83,7 @@ protected:
if (!Expr->Init(ctx, src)) {
return false;
}
- if (Expr->IsAggregated() && !Expr->IsAggregationKey() && !IsOverWindow()) {
+ if (Expr->IsAggregated() && !Expr->IsAggregationKey() && !IsOverWindow()) {
ctx.Error(Pos) << "Aggregation of aggregated values is forbidden for no window functions";
return false;
}
diff --git a/ydb/library/yql/sql/v0/builtin.cpp b/ydb/library/yql/sql/v0/builtin.cpp
index a0945f9d05e..30178e29ada 100644
--- a/ydb/library/yql/sql/v0/builtin.cpp
+++ b/ydb/library/yql/sql/v0/builtin.cpp
@@ -1317,9 +1317,9 @@ public:
}
void DoUpdateState() const final {
- State.Set(ENodeState::Const, false);
- }
-
+ State.Set(ENodeState::Const, false);
+ }
+
TNodePtr DoClone() const final {
return MakeIntrusive<TTableRow>(Pos, ArgsCount);
}
@@ -1678,18 +1678,18 @@ TAggrFuncFactoryCallback BuildAggrFuncFactoryCallback(
const TString& functionName,
const TString& factoryName,
EAggrFuncTypeCallback type = NORMAL,
- const TString& functionNameOverride = TString(),
- const TVector<EAggregateMode>& validModes = {}) {
+ const TString& functionNameOverride = TString(),
+ const TVector<EAggregateMode>& validModes = {}) {
const TString realFunctionName = functionNameOverride.empty() ? functionName : functionNameOverride;
- return [functionName, realFunctionName, factoryName, type, validModes] (TPosition pos, const TVector<TNodePtr>& args, EAggregateMode aggMode, bool isFactory) -> INode::TPtr {
- if (!validModes.empty()) {
- if (!IsIn(validModes, aggMode)) {
- const TString errorText = TStringBuilder()
- << "Can't use " << functionName << " in " << ToString(aggMode) << " aggregation mode";
- return INode::TPtr(new TInvalidBuiltin(pos, errorText));
- }
- }
+ return [functionName, realFunctionName, factoryName, type, validModes] (TPosition pos, const TVector<TNodePtr>& args, EAggregateMode aggMode, bool isFactory) -> INode::TPtr {
+ if (!validModes.empty()) {
+ if (!IsIn(validModes, aggMode)) {
+ const TString errorText = TStringBuilder()
+ << "Can't use " << functionName << " in " << ToString(aggMode) << " aggregation mode";
+ return INode::TPtr(new TInvalidBuiltin(pos, errorText));
+ }
+ }
TAggregationPtr factory = nullptr;
switch (type) {
case NORMAL:
@@ -1748,15 +1748,15 @@ TAggrFuncFactoryCallback BuildAggrFuncFactoryCallback(
};
}
-TAggrFuncFactoryCallback BuildAggrFuncFactoryCallback(
- const TString& functionName,
- const TString& factoryName,
- const TVector<EAggregateMode>& validModes,
- EAggrFuncTypeCallback type = NORMAL,
- const TString& functionNameOverride = TString()) {
- return BuildAggrFuncFactoryCallback(functionName, factoryName, type, functionNameOverride, validModes);
-}
-
+TAggrFuncFactoryCallback BuildAggrFuncFactoryCallback(
+ const TString& functionName,
+ const TString& factoryName,
+ const TVector<EAggregateMode>& validModes,
+ EAggrFuncTypeCallback type = NORMAL,
+ const TString& functionNameOverride = TString()) {
+ return BuildAggrFuncFactoryCallback(functionName, factoryName, type, functionNameOverride, validModes);
+}
+
template<typename TType>
TBuiltinFactoryCallback BuildSimpleBuiltinFactoryCallback() {
return [] (TPosition pos, const TVector<TNodePtr>& args) -> TNodePtr {
@@ -1818,186 +1818,186 @@ TNodePtr MakePair(TPosition pos, const TVector<TNodePtr>& args) {
});
}
-struct TBuiltinFuncData {
- const TBuiltinFactoryCallbackMap BuiltinFuncs;
- const TAggrFuncFactoryCallbackMap AggrFuncs;
- const TCoreFuncMap CoreFuncs;
-
- TBuiltinFuncData():
- BuiltinFuncs(MakeBuiltinFuncs()),
- AggrFuncs(MakeAggrFuncs()),
- CoreFuncs(MakeCoreFuncs())
- {
- }
-
- TBuiltinFactoryCallbackMap MakeBuiltinFuncs() {
- TBuiltinFactoryCallbackMap builtinFuncs = {
- // Branching
- {"if", BuildSimpleBuiltinFactoryCallback<TYqlIf<false>>()},
- {"ifstrict", BuildSimpleBuiltinFactoryCallback<TYqlIf<true>>() },
-
- // String builtins
- {"len", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
- {"length", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
- {"charlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
- {"characterlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
- {"substring", BuildSimpleBuiltinFactoryCallback<TYqlSubstring>()},
- {"byteat", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ByteAt", 2, 2) },
-
- // Numeric builtins
- {"abs", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Abs", 1, 1) },
- {"tobytes", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ToBytes", 1, 1) },
- {"frombytes", BuildSimpleBuiltinFactoryCallback<TFromBytes>() },
-
- // Compare builtins
- {"minof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Min", 1, -1)},
- {"maxof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Max", 1, -1)},
- {"greatest", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Max", 1, -1)},
- {"least", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Min", 1, -1)},
- {"in", BuildSimpleBuiltinFactoryCallback<TYqlIn>()},
-
- // List builtins
- {"aslist", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsList", 1, -1)},
- {"asliststrict", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsListStrict", 1, -1) },
- {"listlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Length", 1, 1)},
- {"listhasitems", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("HasItems", 1, 1)},
- {"listcount", BuildSimpleBuiltinFactoryCallback<TListCountBuiltin>()},
- {"listextend", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Extend", 1, -1)},
- {"listunionall", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("UnionAll", 1, -1) },
- {"listzip", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Zip", -1, -1)},
- {"listzipall", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ZipAll", -1, -1)},
- {"listenumerate", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Enumerate", 1, 3)},
- {"listreverse", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Reverse", 1, 1)},
- {"listskip", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Skip", 2, 2)},
- {"listtake", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Take", 2, 2)},
- {"listsort", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(true)},
- {"listsortasc", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(true)},
- {"listsortdesc", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(false)},
- {"listmap", BuildBoolBuiltinFactoryCallback<TListMapBuiltin>(false)},
- {"listflatmap", BuildBoolBuiltinFactoryCallback<TListMapBuiltin>(true)},
- {"listfilter", BuildSimpleBuiltinFactoryCallback<TListFilterBuiltin>()},
- {"listany", BuildFoldBuiltinFactoryCallback<TListFoldBuiltinImpl>("Or", "false")},
- {"listall", BuildFoldBuiltinFactoryCallback<TListFoldBuiltinImpl>("And", "true")},
- {"listhas", BuildSimpleBuiltinFactoryCallback<TListHasBuiltin>()},
+struct TBuiltinFuncData {
+ const TBuiltinFactoryCallbackMap BuiltinFuncs;
+ const TAggrFuncFactoryCallbackMap AggrFuncs;
+ const TCoreFuncMap CoreFuncs;
+
+ TBuiltinFuncData():
+ BuiltinFuncs(MakeBuiltinFuncs()),
+ AggrFuncs(MakeAggrFuncs()),
+ CoreFuncs(MakeCoreFuncs())
+ {
+ }
+
+ TBuiltinFactoryCallbackMap MakeBuiltinFuncs() {
+ TBuiltinFactoryCallbackMap builtinFuncs = {
+ // Branching
+ {"if", BuildSimpleBuiltinFactoryCallback<TYqlIf<false>>()},
+ {"ifstrict", BuildSimpleBuiltinFactoryCallback<TYqlIf<true>>() },
+
+ // String builtins
+ {"len", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
+ {"length", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
+ {"charlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
+ {"characterlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
+ {"substring", BuildSimpleBuiltinFactoryCallback<TYqlSubstring>()},
+ {"byteat", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ByteAt", 2, 2) },
+
+ // Numeric builtins
+ {"abs", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Abs", 1, 1) },
+ {"tobytes", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ToBytes", 1, 1) },
+ {"frombytes", BuildSimpleBuiltinFactoryCallback<TFromBytes>() },
+
+ // Compare builtins
+ {"minof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Min", 1, -1)},
+ {"maxof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Max", 1, -1)},
+ {"greatest", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Max", 1, -1)},
+ {"least", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Min", 1, -1)},
+ {"in", BuildSimpleBuiltinFactoryCallback<TYqlIn>()},
+
+ // List builtins
+ {"aslist", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsList", 1, -1)},
+ {"asliststrict", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsListStrict", 1, -1) },
+ {"listlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Length", 1, 1)},
+ {"listhasitems", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("HasItems", 1, 1)},
+ {"listcount", BuildSimpleBuiltinFactoryCallback<TListCountBuiltin>()},
+ {"listextend", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Extend", 1, -1)},
+ {"listunionall", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("UnionAll", 1, -1) },
+ {"listzip", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Zip", -1, -1)},
+ {"listzipall", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ZipAll", -1, -1)},
+ {"listenumerate", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Enumerate", 1, 3)},
+ {"listreverse", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Reverse", 1, 1)},
+ {"listskip", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Skip", 2, 2)},
+ {"listtake", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Take", 2, 2)},
+ {"listsort", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(true)},
+ {"listsortasc", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(true)},
+ {"listsortdesc", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(false)},
+ {"listmap", BuildBoolBuiltinFactoryCallback<TListMapBuiltin>(false)},
+ {"listflatmap", BuildBoolBuiltinFactoryCallback<TListMapBuiltin>(true)},
+ {"listfilter", BuildSimpleBuiltinFactoryCallback<TListFilterBuiltin>()},
+ {"listany", BuildFoldBuiltinFactoryCallback<TListFoldBuiltinImpl>("Or", "false")},
+ {"listall", BuildFoldBuiltinFactoryCallback<TListFoldBuiltinImpl>("And", "true")},
+ {"listhas", BuildSimpleBuiltinFactoryCallback<TListHasBuiltin>()},
{"listmax", BuildNamedBuiltinFactoryCallback<TListFold1Builtin>("AggrMax")},
{"listmin", BuildNamedBuiltinFactoryCallback<TListFold1Builtin>("AggrMin")},
{"listsum", BuildNamedBuiltinFactoryCallback<TListFold1Builtin>("AggrAdd")},
- {"listavg", BuildSimpleBuiltinFactoryCallback<TListAvgBuiltin>()},
- {"listconcat", BuildNamedBuiltinFactoryCallback<TListFold1Builtin>("Concat")},
- {"listextract", BuildSimpleBuiltinFactoryCallback<TListExtractBuiltin>()},
- {"listuniq", BuildSimpleBuiltinFactoryCallback<TListUniqBuiltin>()},
- {"listcreate", BuildSimpleBuiltinFactoryCallback<TListCreateBuiltin>()},
- {"listfromrange", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListFromRange", 2, 3) },
- {"listreplicate", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Replicate", 2, 2) },
- {"listtakewhile", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TakeWhile", 2, 2) },
- {"listskipwhile", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("SkipWhile", 2, 2) },
- {"listcollect", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Collect", 1, 1) },
-
- // Dict builtins
- {"dictcreate", BuildSimpleBuiltinFactoryCallback<TDictCreateBuiltin>()},
- {"asdict", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsDict", 1, -1)},
- {"asdictstrict", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsDictStrict", 1, -1)},
+ {"listavg", BuildSimpleBuiltinFactoryCallback<TListAvgBuiltin>()},
+ {"listconcat", BuildNamedBuiltinFactoryCallback<TListFold1Builtin>("Concat")},
+ {"listextract", BuildSimpleBuiltinFactoryCallback<TListExtractBuiltin>()},
+ {"listuniq", BuildSimpleBuiltinFactoryCallback<TListUniqBuiltin>()},
+ {"listcreate", BuildSimpleBuiltinFactoryCallback<TListCreateBuiltin>()},
+ {"listfromrange", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListFromRange", 2, 3) },
+ {"listreplicate", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Replicate", 2, 2) },
+ {"listtakewhile", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TakeWhile", 2, 2) },
+ {"listskipwhile", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("SkipWhile", 2, 2) },
+ {"listcollect", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Collect", 1, 1) },
+
+ // Dict builtins
+ {"dictcreate", BuildSimpleBuiltinFactoryCallback<TDictCreateBuiltin>()},
+ {"asdict", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsDict", 1, -1)},
+ {"asdictstrict", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsDictStrict", 1, -1)},
{"todict", BuildNamedBuiltinFactoryCallback<TYqlToDict<false>>("One")},
{"tomultidict", BuildNamedBuiltinFactoryCallback<TYqlToDict<false>>("Many")},
{"tosorteddict", BuildNamedBuiltinFactoryCallback<TYqlToDict<true>>("One")},
{"tosortedmultidict", BuildNamedBuiltinFactoryCallback<TYqlToDict<true>>("Many")},
- {"dictkeys", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictKeys", 1, 1) },
- {"dictpayloads", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictPayloads", 1, 1) },
- {"dictitems", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictItems", 1, 1) },
- {"dictlookup", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Lookup", 2, 2) },
- {"dictcontains", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Contains", 2, 2) },
-
- // Atom builtins
- {"asatom", BuildSimpleBuiltinFactoryCallback<TYqlAsAtom>()},
+ {"dictkeys", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictKeys", 1, 1) },
+ {"dictpayloads", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictPayloads", 1, 1) },
+ {"dictitems", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictItems", 1, 1) },
+ {"dictlookup", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Lookup", 2, 2) },
+ {"dictcontains", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Contains", 2, 2) },
+
+ // Atom builtins
+ {"asatom", BuildSimpleBuiltinFactoryCallback<TYqlAsAtom>()},
{"secureparam", BuildNamedBuiltinFactoryCallback<TYqlAtom>("SecureParam")},
{"void", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Void", 0, 0)},
{"callable", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Callable", 2, 2)},
- {"way", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Way", 1, 1) },
- {"variant", BuildSimpleBuiltinFactoryCallback<TYqlVariant>() },
- {"astagged", BuildSimpleBuiltinFactoryCallback<TYqlAsTagged>() },
- {"untag", BuildSimpleBuiltinFactoryCallback<TYqlUntag>() },
- {"parsetype", BuildSimpleBuiltinFactoryCallback<TYqlParseType>() },
- {"ensuretype", BuildSimpleBuiltinFactoryCallback<TYqlTypeAssert<true>>() },
- {"ensureconvertibleto", BuildSimpleBuiltinFactoryCallback<TYqlTypeAssert<false>>() },
- {"ensure", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Ensure", 2, 3) },
- {"evaluateexpr", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateExpr", 1, 1) },
- {"evaluateatom", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateAtom", 1, 1) },
- {"evaluatetype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateType", 1, 1) },
- {"unwrap", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Unwrap", 1, 2) },
- {"just", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Just", 1, 1) },
- {"nothing", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Nothing", 1, 1) },
- {"formattype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FormatType", 1, 1) },
- {"typeof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeOf", 1, 1) },
- {"instanceof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("InstanceOf", 1, 1) },
- {"datatype", BuildSimpleBuiltinFactoryCallback<TYqlDataType>() },
- {"optionaltype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalType", 1, 1) },
- {"listtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListType", 1, 1) },
- {"streamtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamType", 1, 1) },
- {"dicttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictType", 2, 2) },
- {"tupletype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleType", 0, -1) },
- {"generictype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("GenericType", 0, 0) },
- {"unittype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("UnitType", 0, 0) },
- {"voidtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VoidType", 0, 0) },
- {"resourcetype", BuildSimpleBuiltinFactoryCallback<TYqlResourceType>() },
- {"taggedtype", BuildSimpleBuiltinFactoryCallback<TYqlTaggedType>() },
- {"varianttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantType", 1, 1) },
- {"callabletype", BuildSimpleBuiltinFactoryCallback<TYqlCallableType>() },
- {"optionalitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalItemType", 1, 1) },
- {"listitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListItemType", 1, 1) },
- {"streamitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamItemType", 1, 1) },
- {"dictkeytype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictKeyType", 1, 1) },
- {"dictpayloadtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictPayloadType", 1, 1) },
- {"tupleelementtype", BuildSimpleBuiltinFactoryCallback<TYqlTupleElementType>() },
- {"structmembertype", BuildSimpleBuiltinFactoryCallback<TYqlStructMemberType>() },
- {"callableresulttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableResultType", 1, 1) },
- {"callableargumenttype", BuildSimpleBuiltinFactoryCallback<TYqlCallableArgumentType>() },
- {"variantunderlyingtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantUnderlyingType", 1, 1) },
- {"fromysonsimpletype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FromYsonSimpleType", 2, 2) },
- {"currentutcdate", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcDate", 0, -1) },
- {"currentutcdatetime", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcDatetime", 0, -1) },
- {"currentutctimestamp", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcTimestamp", 0, -1) },
- {"currentoperationid", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentOperationId", 0, 0) },
- {"currentoperationsharedid", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentOperationSharedId", 0, 0) },
- {"currentauthenticateduser", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentAuthenticatedUser", 0, 0) },
- {"addtimezone", BuildSimpleBuiltinFactoryCallback<TYqlAddTimezone>() },
- {"removetimezone", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("RemoveTimezone", 1, 1) },
- {"typehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeHandle", 1, 1) },
- {"parsetypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ParseTypeHandle", 1, 1) },
- {"typekind", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeKind", 1, 1) },
- {"datatypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DataTypeComponents", 1, 1) },
- {"datatypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DataTypeHandle", 1, 1) },
- {"optionaltypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalTypeHandle", 1, 1) },
- {"listtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListTypeHandle", 1, 1) },
- {"streamtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamTypeHandle", 1, 1) },
- {"tupletypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleTypeComponents", 1, 1) },
- {"tupletypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleTypeHandle", 1, 1) },
- {"structtypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StructTypeComponents", 1, 1) },
- {"structtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StructTypeHandle", 1, 1) },
- {"dicttypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictTypeComponents", 1, 1) },
- {"dicttypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictTypeHandle", 2, 2) },
- {"resourcetypetag", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ResourceTypeTag", 1, 1) },
- {"resourcetypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ResourceTypeHandle", 1, 1) },
- {"taggedtypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TaggedTypeComponents", 1, 1) },
- {"taggedtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TaggedTypeHandle", 2, 2) },
- {"varianttypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantTypeHandle", 1, 1) },
- {"voidtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VoidTypeHandle", 0, 0) },
- {"nulltypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("NullTypeHandle", 0, 0) },
- {"callabletypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableTypeComponents", 1, 1) },
- {"callableargument", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableArgument", 1, 3) },
- {"callabletypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableTypeHandle", 2, 4) },
- {"formatcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FormatCode", 1, 1) },
+ {"way", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Way", 1, 1) },
+ {"variant", BuildSimpleBuiltinFactoryCallback<TYqlVariant>() },
+ {"astagged", BuildSimpleBuiltinFactoryCallback<TYqlAsTagged>() },
+ {"untag", BuildSimpleBuiltinFactoryCallback<TYqlUntag>() },
+ {"parsetype", BuildSimpleBuiltinFactoryCallback<TYqlParseType>() },
+ {"ensuretype", BuildSimpleBuiltinFactoryCallback<TYqlTypeAssert<true>>() },
+ {"ensureconvertibleto", BuildSimpleBuiltinFactoryCallback<TYqlTypeAssert<false>>() },
+ {"ensure", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Ensure", 2, 3) },
+ {"evaluateexpr", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateExpr", 1, 1) },
+ {"evaluateatom", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateAtom", 1, 1) },
+ {"evaluatetype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateType", 1, 1) },
+ {"unwrap", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Unwrap", 1, 2) },
+ {"just", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Just", 1, 1) },
+ {"nothing", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Nothing", 1, 1) },
+ {"formattype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FormatType", 1, 1) },
+ {"typeof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeOf", 1, 1) },
+ {"instanceof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("InstanceOf", 1, 1) },
+ {"datatype", BuildSimpleBuiltinFactoryCallback<TYqlDataType>() },
+ {"optionaltype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalType", 1, 1) },
+ {"listtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListType", 1, 1) },
+ {"streamtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamType", 1, 1) },
+ {"dicttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictType", 2, 2) },
+ {"tupletype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleType", 0, -1) },
+ {"generictype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("GenericType", 0, 0) },
+ {"unittype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("UnitType", 0, 0) },
+ {"voidtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VoidType", 0, 0) },
+ {"resourcetype", BuildSimpleBuiltinFactoryCallback<TYqlResourceType>() },
+ {"taggedtype", BuildSimpleBuiltinFactoryCallback<TYqlTaggedType>() },
+ {"varianttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantType", 1, 1) },
+ {"callabletype", BuildSimpleBuiltinFactoryCallback<TYqlCallableType>() },
+ {"optionalitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalItemType", 1, 1) },
+ {"listitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListItemType", 1, 1) },
+ {"streamitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamItemType", 1, 1) },
+ {"dictkeytype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictKeyType", 1, 1) },
+ {"dictpayloadtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictPayloadType", 1, 1) },
+ {"tupleelementtype", BuildSimpleBuiltinFactoryCallback<TYqlTupleElementType>() },
+ {"structmembertype", BuildSimpleBuiltinFactoryCallback<TYqlStructMemberType>() },
+ {"callableresulttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableResultType", 1, 1) },
+ {"callableargumenttype", BuildSimpleBuiltinFactoryCallback<TYqlCallableArgumentType>() },
+ {"variantunderlyingtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantUnderlyingType", 1, 1) },
+ {"fromysonsimpletype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FromYsonSimpleType", 2, 2) },
+ {"currentutcdate", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcDate", 0, -1) },
+ {"currentutcdatetime", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcDatetime", 0, -1) },
+ {"currentutctimestamp", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcTimestamp", 0, -1) },
+ {"currentoperationid", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentOperationId", 0, 0) },
+ {"currentoperationsharedid", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentOperationSharedId", 0, 0) },
+ {"currentauthenticateduser", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentAuthenticatedUser", 0, 0) },
+ {"addtimezone", BuildSimpleBuiltinFactoryCallback<TYqlAddTimezone>() },
+ {"removetimezone", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("RemoveTimezone", 1, 1) },
+ {"typehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeHandle", 1, 1) },
+ {"parsetypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ParseTypeHandle", 1, 1) },
+ {"typekind", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeKind", 1, 1) },
+ {"datatypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DataTypeComponents", 1, 1) },
+ {"datatypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DataTypeHandle", 1, 1) },
+ {"optionaltypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalTypeHandle", 1, 1) },
+ {"listtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListTypeHandle", 1, 1) },
+ {"streamtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamTypeHandle", 1, 1) },
+ {"tupletypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleTypeComponents", 1, 1) },
+ {"tupletypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleTypeHandle", 1, 1) },
+ {"structtypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StructTypeComponents", 1, 1) },
+ {"structtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StructTypeHandle", 1, 1) },
+ {"dicttypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictTypeComponents", 1, 1) },
+ {"dicttypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictTypeHandle", 2, 2) },
+ {"resourcetypetag", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ResourceTypeTag", 1, 1) },
+ {"resourcetypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ResourceTypeHandle", 1, 1) },
+ {"taggedtypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TaggedTypeComponents", 1, 1) },
+ {"taggedtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TaggedTypeHandle", 2, 2) },
+ {"varianttypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantTypeHandle", 1, 1) },
+ {"voidtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VoidTypeHandle", 0, 0) },
+ {"nulltypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("NullTypeHandle", 0, 0) },
+ {"callabletypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableTypeComponents", 1, 1) },
+ {"callableargument", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableArgument", 1, 3) },
+ {"callabletypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableTypeHandle", 2, 4) },
+ {"formatcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FormatCode", 1, 1) },
{"worldcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("WorldCode", 0, 0) },
- {"atomcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AtomCode", 1, 1) },
- {"listcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListCode", 0, -1) },
- {"funccode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FuncCode", 1, -1) },
- {"lambdacode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("LambdaCode", 1, 2) },
- {"evaluatecode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateCode", 1, 1) },
- {"reprcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ReprCode", 1, 1) },
- {"quotecode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("QuoteCode", 1, 1) },
+ {"atomcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AtomCode", 1, 1) },
+ {"listcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListCode", 0, -1) },
+ {"funccode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FuncCode", 1, -1) },
+ {"lambdacode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("LambdaCode", 1, 2) },
+ {"evaluatecode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateCode", 1, 1) },
+ {"reprcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ReprCode", 1, 1) },
+ {"quotecode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("QuoteCode", 1, 1) },
- // Tuple builtins
- {"astuple", BuildSimpleBuiltinFactoryCallback<TTupleNode>()},
+ // Tuple builtins
+ {"astuple", BuildSimpleBuiltinFactoryCallback<TTupleNode>()},
// Struct builtins
{"addmember", BuildNamedBuiltinFactoryCallback<TAddMember>("AddMember")},
@@ -2006,47 +2006,47 @@ struct TBuiltinFuncData {
{"combinemembers", BuildNamedBuiltinFactoryCallback<TCombineMembers>("FlattenMembers")},
{"flattenmembers", BuildNamedBuiltinFactoryCallback<TFlattenMembers>("FlattenMembers")},
- // File builtins
+ // File builtins
{"filepath", BuildNamedBuiltinFactoryCallback<TYqlAtom>("FilePath")},
{"filecontent", BuildNamedBuiltinFactoryCallback<TYqlAtom>("FileContent")},
{"folderpath", BuildNamedBuiltinFactoryCallback<TYqlAtom>("FolderPath") },
{"files", BuildNamedBuiltinFactoryCallback<TYqlAtom>("Files")},
- {"parsefile", BuildSimpleBuiltinFactoryCallback<TYqlParseFileOp>()},
-
- // Misc builtins
- {"coalesce", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Coalesce", 1, -1)},
- {"nvl", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Coalesce", 1, -1) },
- {"nanvl", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Nanvl", 2, 2) },
- {"likely", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Likely", 1, -1)},
- {"random", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "Random", 1, -1)},
- {"randomnumber", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "RandomNumber", 1, -1)},
- {"randomuuid", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "RandomUuid", 1, -1) },
- {"tablepath", BuildNamedBuiltinFactoryCallback<TCallDirectRow>("TablePath") },
- {"tablerecord", BuildNamedBuiltinFactoryCallback<TCallDirectRow>("TableRecord") },
+ {"parsefile", BuildSimpleBuiltinFactoryCallback<TYqlParseFileOp>()},
+
+ // Misc builtins
+ {"coalesce", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Coalesce", 1, -1)},
+ {"nvl", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Coalesce", 1, -1) },
+ {"nanvl", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Nanvl", 2, 2) },
+ {"likely", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Likely", 1, -1)},
+ {"random", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "Random", 1, -1)},
+ {"randomnumber", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "RandomNumber", 1, -1)},
+ {"randomuuid", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "RandomUuid", 1, -1) },
+ {"tablepath", BuildNamedBuiltinFactoryCallback<TCallDirectRow>("TablePath") },
+ {"tablerecord", BuildNamedBuiltinFactoryCallback<TCallDirectRow>("TableRecord") },
{"tablerecordindex", BuildNamedBuiltinFactoryCallback<TCallDirectRow>("TableRecord") },
- {"weakfield", BuildSimpleBuiltinFactoryCallback<TWeakFieldOp>()},
- {"tablerow", BuildSimpleBuiltinFactoryCallback<TTableRow>() },
+ {"weakfield", BuildSimpleBuiltinFactoryCallback<TWeakFieldOp>()},
+ {"tablerow", BuildSimpleBuiltinFactoryCallback<TTableRow>() },
- // Hint builtins
- {"grouping", BuildSimpleBuiltinFactoryCallback<TGroupingNode>()},
+ // Hint builtins
+ {"grouping", BuildSimpleBuiltinFactoryCallback<TGroupingNode>()},
- // Window funcitons
- {"rownumber", BuildNamedArgcBuiltinFactoryCallback<TWinRowNumber>("RowNumber", 0, 0)},
- /// by SQL2011 should be with sort
+ // Window funcitons
+ {"rownumber", BuildNamedArgcBuiltinFactoryCallback<TWinRowNumber>("RowNumber", 0, 0)},
+ /// by SQL2011 should be with sort
{"lead", BuildNamedArgcBuiltinFactoryCallback<TWinLeadLag>("Lead", 1, 2)},
{"lag", BuildNamedArgcBuiltinFactoryCallback<TWinLeadLag>("Lag", 1, 2)},
-
- // Hopping intervals time functions
- {"hopstart", BuildSimpleBuiltinFactoryCallback<THoppingTime<true>>()},
- {"hopend", BuildSimpleBuiltinFactoryCallback<THoppingTime<false>>()},
- };
- return builtinFuncs;
- }
-
- TAggrFuncFactoryCallbackMap MakeAggrFuncs() {
- constexpr auto OverWindow = EAggregateMode::OverWindow;
-
- TAggrFuncFactoryCallbackMap aggrFuncs = {
+
+ // Hopping intervals time functions
+ {"hopstart", BuildSimpleBuiltinFactoryCallback<THoppingTime<true>>()},
+ {"hopend", BuildSimpleBuiltinFactoryCallback<THoppingTime<false>>()},
+ };
+ return builtinFuncs;
+ }
+
+ TAggrFuncFactoryCallbackMap MakeAggrFuncs() {
+ constexpr auto OverWindow = EAggregateMode::OverWindow;
+
+ TAggrFuncFactoryCallbackMap aggrFuncs = {
{"min", BuildAggrFuncFactoryCallback("Min", "min_traits_factory")},
{"max", BuildAggrFuncFactoryCallback("Max", "max_traits_factory")},
@@ -2137,7 +2137,7 @@ struct TBuiltinFuncData {
{"udaf", BuildAggrFuncFactoryCallback("UDAF", "udaf_traits_factory", UDAF)},
- // Window functions
+ // Window functions
/// by SQL2011 should be with sort
{"rank", BuildAggrFuncFactoryCallback("Rank", "rank_traits_factory", WINDOW_AUTOARGS)},
{"denserank", BuildAggrFuncFactoryCallback("DenseRank", "dense_rank_traits_factory", WINDOW_AUTOARGS)},
@@ -2146,43 +2146,43 @@ struct TBuiltinFuncData {
//{"percentrank", BuildAggrFuncFactoryCallback("PercentRank", "percent_rank_traits_factory")},
//{"cumedist", BuildAggrFuncFactoryCallback("CumeDist", "cume_dist_traits_factory")},
- {"firstvalue", BuildAggrFuncFactoryCallback("FirstValue", "first_value_traits_factory", {OverWindow})},
- {"lastvalue", BuildAggrFuncFactoryCallback("LastValue", "last_value_traits_factory", {OverWindow})},
- {"firstvalueignorenulls", BuildAggrFuncFactoryCallback("FirstValueIgnoreNulls", "first_value_ignore_nulls_traits_factory", {OverWindow})},
- {"lastvalueignorenulls", BuildAggrFuncFactoryCallback("LastValueIgnoreNulls", "last_value_ignore_nulls_traits_factory", {OverWindow})},
+ {"firstvalue", BuildAggrFuncFactoryCallback("FirstValue", "first_value_traits_factory", {OverWindow})},
+ {"lastvalue", BuildAggrFuncFactoryCallback("LastValue", "last_value_traits_factory", {OverWindow})},
+ {"firstvalueignorenulls", BuildAggrFuncFactoryCallback("FirstValueIgnoreNulls", "first_value_ignore_nulls_traits_factory", {OverWindow})},
+ {"lastvalueignorenulls", BuildAggrFuncFactoryCallback("LastValueIgnoreNulls", "last_value_ignore_nulls_traits_factory", {OverWindow})},
};
- return aggrFuncs;
- }
-
- TCoreFuncMap MakeCoreFuncs() {
- TCoreFuncMap coreFuncs = {
- {"listindexof", { "IndexOf", 2, 2}},
- {"testbit", { "TestBit", 2, 2}},
- {"setbit", { "SetBit", 2, 2}},
- {"clearbit", { "ClearBit", 2, 2}},
- {"flipbit", { "FlipBit", 2, 2 }},
- {"toset", { "ToSet", 1, 1 }},
- {"setisdisjoint", { "SetIsDisjoint", 2, 2}},
- {"setintersection", { "SetIntersection", 2, 3}},
- {"setincludes", { "SetIncludes", 2, 2}},
- {"setunion", { "SetUnion", 2, 3}},
- {"setdifference", { "SetDifference", 2, 2}},
- {"setsymmetricdifference", { "SetSymmetricDifference", 2, 3}},
+ return aggrFuncs;
+ }
+
+ TCoreFuncMap MakeCoreFuncs() {
+ TCoreFuncMap coreFuncs = {
+ {"listindexof", { "IndexOf", 2, 2}},
+ {"testbit", { "TestBit", 2, 2}},
+ {"setbit", { "SetBit", 2, 2}},
+ {"clearbit", { "ClearBit", 2, 2}},
+ {"flipbit", { "FlipBit", 2, 2 }},
+ {"toset", { "ToSet", 1, 1 }},
+ {"setisdisjoint", { "SetIsDisjoint", 2, 2}},
+ {"setintersection", { "SetIntersection", 2, 3}},
+ {"setincludes", { "SetIncludes", 2, 2}},
+ {"setunion", { "SetUnion", 2, 3}},
+ {"setdifference", { "SetDifference", 2, 2}},
+ {"setsymmetricdifference", { "SetSymmetricDifference", 2, 3}},
{"listaggregate", { "ListAggregate", 2, 2}},
{"dictaggregate", { "DictAggregate", 2, 2}},
- };
- return coreFuncs;
- }
-};
-
-TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVector<TNodePtr>& args,
- const TString& nameSpace, EAggregateMode aggMode, bool* mustUseNamed, TFuncPrepareNameNode funcPrepareNameNode) {
-
- const TBuiltinFuncData* funcData = Singleton<TBuiltinFuncData>();
- const TBuiltinFactoryCallbackMap& builtinFuncs = funcData->BuiltinFuncs;
- const TAggrFuncFactoryCallbackMap& aggrFuncs = funcData->AggrFuncs;
- const TCoreFuncMap& coreFuncs = funcData->CoreFuncs;
-
+ };
+ return coreFuncs;
+ }
+};
+
+TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVector<TNodePtr>& args,
+ const TString& nameSpace, EAggregateMode aggMode, bool* mustUseNamed, TFuncPrepareNameNode funcPrepareNameNode) {
+
+ const TBuiltinFuncData* funcData = Singleton<TBuiltinFuncData>();
+ const TBuiltinFactoryCallbackMap& builtinFuncs = funcData->BuiltinFuncs;
+ const TAggrFuncFactoryCallbackMap& aggrFuncs = funcData->AggrFuncs;
+ const TCoreFuncMap& coreFuncs = funcData->CoreFuncs;
+
for (auto& arg: args) {
if (!arg) {
return nullptr;
diff --git a/ydb/library/yql/sql/v0/context.h b/ydb/library/yql/sql/v0/context.h
index 45f40fae61c..fbf76b6a484 100644
--- a/ydb/library/yql/sql/v0/context.h
+++ b/ydb/library/yql/sql/v0/context.h
@@ -147,7 +147,7 @@ namespace NSQLTranslationV0 {
bool PragmaDirectRead = false;
bool PragmaYsonAutoConvert = false;
bool PragmaYsonStrict = false;
- bool PragmaClassicDivision = true;
+ bool PragmaClassicDivision = true;
bool PragmaPullUpFlatMapOverJoin = true;
bool EnableSystemColumns = true;
ui32 ResultRowsLimit = 0;
diff --git a/ydb/library/yql/sql/v0/insert.cpp b/ydb/library/yql/sql/v0/insert.cpp
index 1d8aec71349..85806522513 100644
--- a/ydb/library/yql/sql/v0/insert.cpp
+++ b/ydb/library/yql/sql/v0/insert.cpp
@@ -155,7 +155,7 @@ public:
}
tuple = L(tuple, rowValues);
}
- return Y("EnsurePersistable", Q(tuple));
+ return Y("EnsurePersistable", Q(tuple));
}
TNodePtr DoClone() const final {
diff --git a/ydb/library/yql/sql/v0/node.cpp b/ydb/library/yql/sql/v0/node.cpp
index 57f0c6a561f..90f88686485 100644
--- a/ydb/library/yql/sql/v0/node.cpp
+++ b/ydb/library/yql/sql/v0/node.cpp
@@ -121,10 +121,10 @@ bool INode::IsAggregated() const {
return HasState(ENodeState::Aggregated);
}
-bool INode::IsAggregationKey() const {
- return HasState(ENodeState::AggregationKey);
-}
-
+bool INode::IsAggregationKey() const {
+ return HasState(ENodeState::AggregationKey);
+}
+
bool INode::IsOverWindow() const {
return HasState(ENodeState::OverWindow);
}
@@ -1710,7 +1710,7 @@ void ISource::FillSortParts(const TVector<TSortSpecificationPtr>& orderBy, TNode
return;
} else if (orderBy.size() == 1) {
auto& sortSpec = orderBy.front();
- expr = Y("EnsurePersistable", sortSpec->OrderExpr);
+ expr = Y("EnsurePersistable", sortSpec->OrderExpr);
sortDirection = Y("Bool", Q(sortSpec->Ascending ? "true" : "false"));
} else {
auto exprList = Y();
@@ -1718,7 +1718,7 @@ void ISource::FillSortParts(const TVector<TSortSpecificationPtr>& orderBy, TNode
for (const auto& sortSpec: orderBy) {
const auto asc = sortSpec->Ascending;
sortDirection = L(sortDirection, Y("Bool", Q(asc ? "true" : "false")));
- exprList = L(exprList, Y("EnsurePersistable", sortSpec->OrderExpr));
+ exprList = L(exprList, Y("EnsurePersistable", sortSpec->OrderExpr));
}
sortDirection = Q(sortDirection);
expr = Q(exprList);
diff --git a/ydb/library/yql/sql/v0/node.h b/ydb/library/yql/sql/v0/node.h
index 4c7cfc273b6..3b2468205f4 100644
--- a/ydb/library/yql/sql/v0/node.h
+++ b/ydb/library/yql/sql/v0/node.h
@@ -125,7 +125,7 @@ namespace NSQLTranslationV0 {
bool IsConstant() const;
bool IsAggregated() const;
- bool IsAggregationKey() const;
+ bool IsAggregationKey() const;
bool IsOverWindow() const;
bool HasState(ENodeState state) const {
PrecacheState();
diff --git a/ydb/library/yql/sql/v0/query.cpp b/ydb/library/yql/sql/v0/query.cpp
index 7752b28b017..c7d5847adcc 100644
--- a/ydb/library/yql/sql/v0/query.cpp
+++ b/ydb/library/yql/sql/v0/query.cpp
@@ -1192,10 +1192,10 @@ public:
return {};
}
- void DoUpdateState() const override {
- State.Set(ENodeState::Const);
- }
-
+ void DoUpdateState() const override {
+ State.Set(ENodeState::Const);
+ }
+
private:
TVector<TString> Args;
TVector<TNodePtr> ExprSeq;
diff --git a/ydb/library/yql/sql/v0/select.cpp b/ydb/library/yql/sql/v0/select.cpp
index ef47023be15..0361db5a51a 100644
--- a/ydb/library/yql/sql/v0/select.cpp
+++ b/ydb/library/yql/sql/v0/select.cpp
@@ -1163,11 +1163,11 @@ public:
}
HavingGround = ctx.GroundBlockShortcuts(Pos);
src->AddWindowSpecs(WinSpecs);
-
+
if (!InitSelect(ctx, src, isJoin, hasError)) {
return false;
- }
-
+ }
+
src->FinishColumns();
Aggregate = src->BuildAggregation("core");
if (src->IsFlattenByColumns() || src->IsFlattenColumns()) {
@@ -1234,87 +1234,87 @@ public:
return nullptr;
}
- TNodePtr terms = BuildColumnsTerms(ctx);
-
+ TNodePtr terms = BuildColumnsTerms(ctx);
+
bool ordered = ctx.UseUnordered(*this);
- auto block(Y(Y("let", "core", input)));
- if (Flatten) {
+ auto block(Y(Y("let", "core", input)));
+ if (Flatten) {
block = L(block, Y("let", "core", Y(ordered ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos, Y("row"), Flatten, "res"))));
- }
- if (PreaggregatedMap) {
- block = L(block, Y("let", "core", Y("FlatMap", "core", BuildLambda(Pos, Y("row"), PreaggregatedMap))));
- if (Source->IsCompositeSource() && !Columns.QualifiedAll) {
- block = L(block, Y("let", "preaggregated", "core"));
- }
- } else if (Source->IsCompositeSource() && !Columns.QualifiedAll) {
- block = L(block, Y("let", "origcore", "core"));
- }
+ }
+ if (PreaggregatedMap) {
+ block = L(block, Y("let", "core", Y("FlatMap", "core", BuildLambda(Pos, Y("row"), PreaggregatedMap))));
+ if (Source->IsCompositeSource() && !Columns.QualifiedAll) {
+ block = L(block, Y("let", "preaggregated", "core"));
+ }
+ } else if (Source->IsCompositeSource() && !Columns.QualifiedAll) {
+ block = L(block, Y("let", "origcore", "core"));
+ }
auto filter = Source->BuildFilter(ctx, "core", FiltersGround);
- if (filter) {
- block = L(block, Y("let", "core", filter));
- }
- if (Aggregate) {
- block = L(block, Y("let", "core", Aggregate));
+ if (filter) {
+ block = L(block, Y("let", "core", filter));
+ }
+ if (Aggregate) {
+ block = L(block, Y("let", "core", Aggregate));
ordered = false;
- }
- if (PrewindowMap) {
- block = L(block, Y("let", "core", PrewindowMap));
- }
- if (CalcOverWindow) {
- block = L(block, Y("let", "core", CalcOverWindow));
- }
+ }
+ if (PrewindowMap) {
+ block = L(block, Y("let", "core", PrewindowMap));
+ }
+ if (CalcOverWindow) {
+ block = L(block, Y("let", "core", CalcOverWindow));
+ }
block = L(block, Y("let", "core", Y("EnsurePersistable", Y(ordered ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos, Y("row"), terms, "res")))));
- return Y("block", Q(L(block, Y("return", "core"))));
- }
-
- TNodePtr BuildSort(TContext& ctx, const TString& label) override {
- Y_UNUSED(ctx);
- if (OrderBy.empty()) {
- return nullptr;
- }
-
- return Y("let", label, BuildSortSpec(OrderBy, label, OrderByGround));
- }
-
- bool IsSelect() const override {
+ return Y("block", Q(L(block, Y("return", "core"))));
+ }
+
+ TNodePtr BuildSort(TContext& ctx, const TString& label) override {
+ Y_UNUSED(ctx);
+ if (OrderBy.empty()) {
+ return nullptr;
+ }
+
+ return Y("let", label, BuildSortSpec(OrderBy, label, OrderByGround));
+ }
+
+ bool IsSelect() const override {
return true;
- }
-
- bool IsStream() const override {
- return Stream;
- }
-
+ }
+
+ bool IsStream() const override {
+ return Stream;
+ }
+
bool IsOrdered() const override {
return !OrderBy.empty();
}
TWriteSettings GetWriteSettings() const override {
return Settings;
- }
-
- TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override {
- if (OrderByInit && Source->GetJoin()) {
- column.SetAsNotReliable();
- auto maybeExist = IRealSource::AddColumn(ctx, column);
- if (maybeExist && maybeExist.GetRef()) {
- return true;
- }
- return Source->AddColumn(ctx, column);
- }
- return IRealSource::AddColumn(ctx, column);
- }
-
- TNodePtr PrepareWithout(const TNodePtr& base) {
- auto terms = base;
- if (Without) {
- for (auto without: Without) {
- auto name = *without->GetColumnName();
- if (Source && Source->GetJoin()) {
- name = DotJoin(*without->GetSourceName(), name);
- }
+ }
+
+ TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override {
+ if (OrderByInit && Source->GetJoin()) {
+ column.SetAsNotReliable();
+ auto maybeExist = IRealSource::AddColumn(ctx, column);
+ if (maybeExist && maybeExist.GetRef()) {
+ return true;
+ }
+ return Source->AddColumn(ctx, column);
+ }
+ return IRealSource::AddColumn(ctx, column);
+ }
+
+ TNodePtr PrepareWithout(const TNodePtr& base) {
+ auto terms = base;
+ if (Without) {
+ for (auto without: Without) {
+ auto name = *without->GetColumnName();
+ if (Source && Source->GetJoin()) {
+ name = DotJoin(*without->GetSourceName(), name);
+ }
terms = L(terms, Y("let", "row", Y("RemoveMember", "row", Q(name))));
- }
- }
+ }
+ }
if (Source) {
for (auto column : Source->GetTmpWindowColumns()) {
@@ -1322,198 +1322,198 @@ public:
}
}
- return terms;
- }
-
- TNodePtr DoClone() const final {
- TWinSpecs newSpecs;
- for (auto cur: WinSpecs) {
- newSpecs.emplace(cur.first, cur.second->Clone());
- }
+ return terms;
+ }
+
+ TNodePtr DoClone() const final {
+ TWinSpecs newSpecs;
+ for (auto cur: WinSpecs) {
+ newSpecs.emplace(cur.first, cur.second->Clone());
+ }
return new TSelectCore(Pos, Source->CloneSource(), CloneContainer(GroupByExpr),
- CloneContainer(GroupBy), CloneContainer(OrderBy), SafeClone(Having), newSpecs, SafeClone(HoppingWindowSpec),
+ CloneContainer(GroupBy), CloneContainer(OrderBy), SafeClone(Having), newSpecs, SafeClone(HoppingWindowSpec),
CloneContainer(Terms), Distinct, Without, Stream, Settings);
- }
-
-private:
- bool InitSelect(TContext& ctx, ISource* src, bool isJoin, bool& hasError) {
- for (auto iter: WinSpecs) {
- auto winSpec = *iter.second;
- ctx.PushBlockShortcuts();
- for (auto& partitionNode: winSpec.Partitions) {
- auto invalidPartitionNodeFunc = [&]() {
- ctx.Error(partitionNode->GetPos()) << "Expected either column name, either alias" <<
- " or expression with alias for PARTITION BY expression in WINDOWS clause";
- hasError = true;
- };
- if (!partitionNode->GetLabel() && !partitionNode->GetColumnName()) {
- invalidPartitionNodeFunc();
- continue;
- }
- if (!partitionNode->Init(ctx, src)) {
- hasError = true;
- continue;
- }
- if (!partitionNode->GetLabel() && !partitionNode->GetColumnName()) {
- invalidPartitionNodeFunc();
- continue;
- }
- }
- WinSpecsPartitionByGround = ctx.GroundBlockShortcuts(Pos, WinSpecsPartitionByGround);
- if (!src->AddExpressions(ctx, winSpec.Partitions, EExprSeat::WindowPartitionBy)) {
- hasError = true;
- }
-
- ctx.PushBlockShortcuts();
- for (auto orderSpec: winSpec.OrderBy) {
- if (!orderSpec->OrderExpr->Init(ctx, src)) {
- hasError = true;
- }
- }
- WinSpecsOrderByGround = ctx.GroundBlockShortcuts(Pos, WinSpecsOrderByGround);
- }
-
- if (HoppingWindowSpec) {
- ctx.PushBlockShortcuts();
- if (!HoppingWindowSpec->TimeExtractor->Init(ctx, src)) {
- hasError = true;
- }
- HoppingWindowSpec->TimeExtractor = ctx.GroundBlockShortcutsForExpr(HoppingWindowSpec->TimeExtractor);
- src->SetHoppingWindowSpec(HoppingWindowSpec);
- }
-
- ctx.PushBlockShortcuts();
- for (auto& term: Terms) {
- if (!term->Init(ctx, src)) {
- hasError = true;
- continue;
- }
- auto column = term->GetColumnName();
- if (Distinct) {
- if (!column) {
- ctx.Error(Pos) << "SELECT DISTINCT requires a list of column references";
- hasError = true;
- continue;
- }
- if (term->IsAsterisk()) {
- ctx.Error(Pos) << "SELECT DISTINCT * is not implemented yet";
- hasError = true;
- continue;
- }
- auto columnName = *column;
- if (isJoin) {
- auto sourceNamePtr = term->GetSourceName();
- if (!sourceNamePtr || sourceNamePtr->empty()) {
- if (src->IsGroupByColumn(columnName)) {
- ctx.Error(term->GetPos()) << ErrorDistinctByGroupKey(columnName);
- hasError = true;
- continue;
- } else {
- ctx.Error(term->GetPos()) << ErrorDistinctWithoutCorrelation(columnName);
- hasError = true;
- continue;
- }
- }
- columnName = DotJoin(*sourceNamePtr, columnName);
- }
- if (src->IsGroupByColumn(columnName)) {
- ctx.Error(term->GetPos()) << ErrorDistinctByGroupKey(columnName);
- hasError = true;
- continue;
- }
- if (!src->AddGroupKey(ctx, columnName)) {
- hasError = true;
- continue;
- }
- GroupBy.push_back(BuildColumn(Pos, columnName));
- }
- TString label(term->GetLabel());
+ }
+
+private:
+ bool InitSelect(TContext& ctx, ISource* src, bool isJoin, bool& hasError) {
+ for (auto iter: WinSpecs) {
+ auto winSpec = *iter.second;
+ ctx.PushBlockShortcuts();
+ for (auto& partitionNode: winSpec.Partitions) {
+ auto invalidPartitionNodeFunc = [&]() {
+ ctx.Error(partitionNode->GetPos()) << "Expected either column name, either alias" <<
+ " or expression with alias for PARTITION BY expression in WINDOWS clause";
+ hasError = true;
+ };
+ if (!partitionNode->GetLabel() && !partitionNode->GetColumnName()) {
+ invalidPartitionNodeFunc();
+ continue;
+ }
+ if (!partitionNode->Init(ctx, src)) {
+ hasError = true;
+ continue;
+ }
+ if (!partitionNode->GetLabel() && !partitionNode->GetColumnName()) {
+ invalidPartitionNodeFunc();
+ continue;
+ }
+ }
+ WinSpecsPartitionByGround = ctx.GroundBlockShortcuts(Pos, WinSpecsPartitionByGround);
+ if (!src->AddExpressions(ctx, winSpec.Partitions, EExprSeat::WindowPartitionBy)) {
+ hasError = true;
+ }
+
+ ctx.PushBlockShortcuts();
+ for (auto orderSpec: winSpec.OrderBy) {
+ if (!orderSpec->OrderExpr->Init(ctx, src)) {
+ hasError = true;
+ }
+ }
+ WinSpecsOrderByGround = ctx.GroundBlockShortcuts(Pos, WinSpecsOrderByGround);
+ }
+
+ if (HoppingWindowSpec) {
+ ctx.PushBlockShortcuts();
+ if (!HoppingWindowSpec->TimeExtractor->Init(ctx, src)) {
+ hasError = true;
+ }
+ HoppingWindowSpec->TimeExtractor = ctx.GroundBlockShortcutsForExpr(HoppingWindowSpec->TimeExtractor);
+ src->SetHoppingWindowSpec(HoppingWindowSpec);
+ }
+
+ ctx.PushBlockShortcuts();
+ for (auto& term: Terms) {
+ if (!term->Init(ctx, src)) {
+ hasError = true;
+ continue;
+ }
+ auto column = term->GetColumnName();
+ if (Distinct) {
+ if (!column) {
+ ctx.Error(Pos) << "SELECT DISTINCT requires a list of column references";
+ hasError = true;
+ continue;
+ }
+ if (term->IsAsterisk()) {
+ ctx.Error(Pos) << "SELECT DISTINCT * is not implemented yet";
+ hasError = true;
+ continue;
+ }
+ auto columnName = *column;
+ if (isJoin) {
+ auto sourceNamePtr = term->GetSourceName();
+ if (!sourceNamePtr || sourceNamePtr->empty()) {
+ if (src->IsGroupByColumn(columnName)) {
+ ctx.Error(term->GetPos()) << ErrorDistinctByGroupKey(columnName);
+ hasError = true;
+ continue;
+ } else {
+ ctx.Error(term->GetPos()) << ErrorDistinctWithoutCorrelation(columnName);
+ hasError = true;
+ continue;
+ }
+ }
+ columnName = DotJoin(*sourceNamePtr, columnName);
+ }
+ if (src->IsGroupByColumn(columnName)) {
+ ctx.Error(term->GetPos()) << ErrorDistinctByGroupKey(columnName);
+ hasError = true;
+ continue;
+ }
+ if (!src->AddGroupKey(ctx, columnName)) {
+ hasError = true;
+ continue;
+ }
+ GroupBy.push_back(BuildColumn(Pos, columnName));
+ }
+ TString label(term->GetLabel());
bool hasName = true;
- if (label.empty()) {
- auto source = term->GetSourceName();
+ if (label.empty()) {
+ auto source = term->GetSourceName();
if (term->IsAsterisk() && !source->empty()) {
- Columns.QualifiedAll = true;
- label = DotJoin(*source, "*");
- } else if (column) {
- label = isJoin && source && *source ? DotJoin(*source, *column) : *column;
- } else {
- label = TStringBuilder() << "column" << Columns.List.size();
+ Columns.QualifiedAll = true;
+ label = DotJoin(*source, "*");
+ } else if (column) {
+ label = isJoin && source && *source ? DotJoin(*source, *column) : *column;
+ } else {
+ label = TStringBuilder() << "column" << Columns.List.size();
hasName = false;
- }
- }
+ }
+ }
if (!Columns.Add(&label, false, false, true, hasName)) {
- ctx.Error(Pos) << "Duplicate column: " << label;
- hasError = true;
- continue;
- }
- }
- TermsGround = ctx.GroundBlockShortcuts(Pos);
-
- if (Columns.All || Columns.QualifiedAll) {
- Source->AllColumns();
- if (Columns.All && isJoin && ctx.SimpleColumns) {
- Columns.All = false;
- Columns.QualifiedAll = true;
- const auto pos = Terms.front()->GetPos();
- Terms.clear();
- for (const auto& source: Source->GetJoin()->GetJoinLabels()) {
+ ctx.Error(Pos) << "Duplicate column: " << label;
+ hasError = true;
+ continue;
+ }
+ }
+ TermsGround = ctx.GroundBlockShortcuts(Pos);
+
+ if (Columns.All || Columns.QualifiedAll) {
+ Source->AllColumns();
+ if (Columns.All && isJoin && ctx.SimpleColumns) {
+ Columns.All = false;
+ Columns.QualifiedAll = true;
+ const auto pos = Terms.front()->GetPos();
+ Terms.clear();
+ for (const auto& source: Source->GetJoin()->GetJoinLabels()) {
auto withDot = DotJoin(source, "*");
Columns.Add(&withDot, false);
- Terms.push_back(BuildColumn(pos, "*", source));
- }
- }
- }
- for (const auto& without: Without) {
- auto namePtr = without->GetColumnName();
- auto sourcePtr = without->GetSourceName();
- YQL_ENSURE(namePtr && *namePtr);
- if (isJoin && !(sourcePtr && *sourcePtr)) {
- ctx.Error(without->GetPos()) << "Expected correlation name for WITHOUT in JOIN";
- hasError = true;
- continue;
- }
- }
- if (Having && !Having->Init(ctx, src)) {
- hasError = true;
- }
- if (!src->IsCompositeSource() && !Distinct && !Columns.All && src->HasAggregations()) {
- /// verify select aggregation compatibility
- TVector<TNodePtr> exprs(Terms);
- if (Having) {
- exprs.push_back(Having);
- }
- for (const auto& iter: WinSpecs) {
- for (const auto& sortSpec: iter.second->OrderBy) {
- exprs.push_back(sortSpec->OrderExpr);
- }
- }
- if (!ValidateAllNodesForAggregation(ctx, exprs)) {
- hasError = true;
- }
- }
- const auto label = GetLabel();
- ctx.PushBlockShortcuts();
- for (const auto& sortSpec: OrderBy) {
- auto& expr = sortSpec->OrderExpr;
- SetLabel(Source->GetLabel());
- OrderByInit = true;
- if (!expr->Init(ctx, this)) {
- hasError = true;
- continue;
- }
- OrderByInit = false;
- if (!IsComparableExpression(ctx, expr, "ORDER BY")) {
- hasError = true;
- continue;
- }
- }
- OrderByGround = ctx.GroundBlockShortcuts(Pos);
- SetLabel(label);
-
- return true;
- }
-
- TNodePtr BuildColumnsTerms(TContext& ctx) {
+ Terms.push_back(BuildColumn(pos, "*", source));
+ }
+ }
+ }
+ for (const auto& without: Without) {
+ auto namePtr = without->GetColumnName();
+ auto sourcePtr = without->GetSourceName();
+ YQL_ENSURE(namePtr && *namePtr);
+ if (isJoin && !(sourcePtr && *sourcePtr)) {
+ ctx.Error(without->GetPos()) << "Expected correlation name for WITHOUT in JOIN";
+ hasError = true;
+ continue;
+ }
+ }
+ if (Having && !Having->Init(ctx, src)) {
+ hasError = true;
+ }
+ if (!src->IsCompositeSource() && !Distinct && !Columns.All && src->HasAggregations()) {
+ /// verify select aggregation compatibility
+ TVector<TNodePtr> exprs(Terms);
+ if (Having) {
+ exprs.push_back(Having);
+ }
+ for (const auto& iter: WinSpecs) {
+ for (const auto& sortSpec: iter.second->OrderBy) {
+ exprs.push_back(sortSpec->OrderExpr);
+ }
+ }
+ if (!ValidateAllNodesForAggregation(ctx, exprs)) {
+ hasError = true;
+ }
+ }
+ const auto label = GetLabel();
+ ctx.PushBlockShortcuts();
+ for (const auto& sortSpec: OrderBy) {
+ auto& expr = sortSpec->OrderExpr;
+ SetLabel(Source->GetLabel());
+ OrderByInit = true;
+ if (!expr->Init(ctx, this)) {
+ hasError = true;
+ continue;
+ }
+ OrderByInit = false;
+ if (!IsComparableExpression(ctx, expr, "ORDER BY")) {
+ hasError = true;
+ continue;
+ }
+ }
+ OrderByGround = ctx.GroundBlockShortcuts(Pos);
+ SetLabel(label);
+
+ return true;
+ }
+
+ TNodePtr BuildColumnsTerms(TContext& ctx) {
TNodePtr terms;
if (Columns.All) {
Y_VERIFY_DEBUG(Columns.List.empty());
diff --git a/ydb/library/yql/sql/v0/sql.cpp b/ydb/library/yql/sql/v0/sql.cpp
index b028fc04398..df4359d0136 100644
--- a/ydb/library/yql/sql/v0/sql.cpp
+++ b/ydb/library/yql/sql/v0/sql.cpp
@@ -89,7 +89,7 @@ inline TString GetKeyword(TTranslation& ctx, const TRule_keyword_restricted& nod
}
static TString Id(const TRule_id& node, TTranslation& ctx) {
- // id: IDENTIFIER | keyword;
+ // id: IDENTIFIER | keyword;
switch (node.Alt_case()) {
case TRule_id::kAltId1:
return ctx.Identifier(node.GetAlt_id1().GetToken1());
@@ -588,7 +588,7 @@ public:
}
TNodePtr Build(const TRule_expr& node) {
- // expr: or_subexpr (OR or_subexpr)*;
+ // expr: or_subexpr (OR or_subexpr)*;
auto getNode = [](const TRule_expr::TBlock2& b) -> const TRule_or_subexpr& { return b.GetRule_or_subexpr2(); };
return BinOper("Or", node.GetRule_or_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end());
}
@@ -646,25 +646,25 @@ private:
TNodePtr SubExpr(const TRule_xor_subexpr& node);
TNodePtr SubExpr(const TRule_mul_subexpr& node) {
- // mul_subexpr: con_subexpr (DOUBLE_PIPE con_subexpr)*;
+ // mul_subexpr: con_subexpr (DOUBLE_PIPE con_subexpr)*;
auto getNode = [](const TRule_mul_subexpr::TBlock2& b) -> const TRule_con_subexpr& { return b.GetRule_con_subexpr2(); };
return BinOper("Concat", node.GetRule_con_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end());
}
TNodePtr SubExpr(const TRule_add_subexpr& node) {
- // add_subexpr: mul_subexpr ((ASTERISK | SLASH | PERCENT) mul_subexpr)*;
+ // add_subexpr: mul_subexpr ((ASTERISK | SLASH | PERCENT) mul_subexpr)*;
auto getNode = [](const TRule_add_subexpr::TBlock2& b) -> const TRule_mul_subexpr& { return b.GetRule_mul_subexpr2(); };
return BinOpList(node.GetRule_mul_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end());
}
TNodePtr SubExpr(const TRule_bit_subexpr& node) {
- // bit_subexpr: add_subexpr ((PLUS | MINUS) add_subexpr)*;
+ // bit_subexpr: add_subexpr ((PLUS | MINUS) add_subexpr)*;
auto getNode = [](const TRule_bit_subexpr::TBlock2& b) -> const TRule_add_subexpr& { return b.GetRule_add_subexpr2(); };
return BinOpList(node.GetRule_add_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end());
}
TNodePtr SubExpr(const TRule_neq_subexpr& node) {
- // neq_subexpr: bit_subexpr ((SHIFT_LEFT | SHIFT_RIGHT | ROT_LEFT | ROT_RIGHT | AMPERSAND | PIPE | CARET) bit_subexpr)* (DOUBLE_QUESTION neq_subexpr)?;
+ // neq_subexpr: bit_subexpr ((SHIFT_LEFT | SHIFT_RIGHT | ROT_LEFT | ROT_RIGHT | AMPERSAND | PIPE | CARET) bit_subexpr)* (DOUBLE_QUESTION neq_subexpr)?;
auto getNode = [](const TRule_neq_subexpr::TBlock2& b) -> const TRule_bit_subexpr& { return b.GetRule_bit_subexpr2(); };
auto result = BinOpList(node.GetRule_bit_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end());
if (!result) {
@@ -685,19 +685,19 @@ private:
}
TNodePtr SubExpr(const TRule_eq_subexpr& node) {
- // eq_subexpr: neq_subexpr ((LESS | LESS_OR_EQ | GREATER | GREATER_OR_EQ) neq_subexpr)*;
+ // eq_subexpr: neq_subexpr ((LESS | LESS_OR_EQ | GREATER | GREATER_OR_EQ) neq_subexpr)*;
auto getNode = [](const TRule_eq_subexpr::TBlock2& b) -> const TRule_neq_subexpr& { return b.GetRule_neq_subexpr2(); };
return BinOpList(node.GetRule_neq_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end());
}
TNodePtr SubExpr(const TRule_or_subexpr& node) {
- // or_subexpr: and_subexpr (AND and_subexpr)*;
+ // or_subexpr: and_subexpr (AND and_subexpr)*;
auto getNode = [](const TRule_or_subexpr::TBlock2& b) -> const TRule_and_subexpr& { return b.GetRule_and_subexpr2(); };
return BinOper("And", node.GetRule_and_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end());
}
TNodePtr SubExpr(const TRule_and_subexpr& node) {
- // and_subexpr: xor_subexpr (XOR xor_subexpr)*;
+ // and_subexpr: xor_subexpr (XOR xor_subexpr)*;
auto getNode = [](const TRule_and_subexpr::TBlock2& b) -> const TRule_xor_subexpr& { return b.GetRule_xor_subexpr2(); };
return BinOper("Xor", node.GetRule_xor_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end());
}
@@ -1565,7 +1565,7 @@ TNodePtr TSqlExpression::CaseRule(const TRule_case_expr& rule) {
template<typename TWindowFunctionType>
TNodePtr TSqlExpression::WindowFunctionRule(const TWindowFunctionType& rule) {
- // window_function: call_expr (null_treatment? OVER window_name_or_specification)?;
+ // window_function: call_expr (null_treatment? OVER window_name_or_specification)?;
// OR
// in_window_function: in_call_expr (null_treatment? OVER window_name_or_specification)?;
const bool overWindow = rule.HasBlock2();
@@ -1601,16 +1601,16 @@ TNodePtr TSqlExpression::WindowFunctionRule(const TWindowFunctionType& rule) {
}
TNodePtr TSqlExpression::AtomExpr(const TRule_atom_expr& node) {
- // atom_expr:
- // literal_value
- // | bind_parameter
- // | window_function
- // | lambda
+ // atom_expr:
+ // literal_value
+ // | bind_parameter
+ // | window_function
+ // | lambda
// | cast_expr
// | exists_expr
// | case_expr
// | id_or_string NAMESPACE id_or_string
- // ;
+ // ;
switch (node.Alt_case()) {
case TRule_atom_expr::kAltAtomExpr1:
@@ -1778,7 +1778,7 @@ bool TSqlExpression::SqlLambdaExprBody(TContext& ctx, const TRule_lambda_body& n
}
TNodePtr TSqlExpression::SubExpr(const TRule_con_subexpr& node) {
- // con_subexpr: unary_subexpr | unary_op unary_subexpr;
+ // con_subexpr: unary_subexpr | unary_op unary_subexpr;
switch (node.Alt_case()) {
case TRule_con_subexpr::kAltConSubexpr1:
return UnaryExpr(node.GetAlt_con_subexpr1().GetRule_unary_subexpr1());
@@ -1808,7 +1808,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_con_subexpr& node) {
}
TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) {
- // xor_subexpr: eq_subexpr cond_expr?;
+ // xor_subexpr: eq_subexpr cond_expr?;
TNodePtr res(SubExpr(node.GetRule_eq_subexpr1()));
if (!res) {
return {};
@@ -2117,9 +2117,9 @@ TNodePtr TSqlExpression::BinOpList(const TNode& node, TGetNode getNode, TIter be
case SQLLexerTokens::TOKEN_SLASH:
opName = "/";
Ctx.IncrementMonCounter("sql_binary_operations", "Divide");
- if (!Ctx.PragmaClassicDivision) {
- partialResult = BuildCast(Ctx, pos, partialResult, "Double");
- }
+ if (!Ctx.PragmaClassicDivision) {
+ partialResult = BuildCast(Ctx, pos, partialResult, "Double");
+ }
break;
case SQLLexerTokens::TOKEN_PERCENT:
opName = "%";
@@ -2551,10 +2551,10 @@ TSourcePtr TSqlSelect::JoinSource(const TRule_join_source& node) {
}
bool TSqlSelect::SelectTerm(TVector<TNodePtr>& terms, const TRule_result_column& node) {
- // result_column:
- // opt_id_prefix ASTERISK
- // | expr (AS id_or_string)?
- // ;
+ // result_column:
+ // opt_id_prefix ASTERISK
+ // | expr (AS id_or_string)?
+ // ;
switch (node.Alt_case()) {
case TRule_result_column::kAltResultColumn1: {
auto alt = node.GetAlt_result_column1();
@@ -3071,8 +3071,8 @@ TSourcePtr TSqlSelect::ReduceCore(const TRule_reduce_core& node, const TWriteSet
}
TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSettings& settings, TPosition& selectPos) {
- // (FROM join_source)? SELECT STREAM? opt_set_quantifier result_column (COMMA result_column)* (WITHOUT column_list)? (FROM join_source)? (WHERE expr)?
- // group_by_clause? (HAVING expr)? window_clause? order_by_clause?
+ // (FROM join_source)? SELECT STREAM? opt_set_quantifier result_column (COMMA result_column)* (WITHOUT column_list)? (FROM join_source)? (WHERE expr)?
+ // group_by_clause? (HAVING expr)? window_clause? order_by_clause?
if (node.HasBlock1()) {
Token(node.GetBlock1().GetToken1());
} else {
@@ -4592,8 +4592,8 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
}
}
- const bool withConfigure = prefix || normalizedPragma == "file" || normalizedPragma == "folder" || normalizedPragma == "udf";
- const bool hasLexicalScope = withConfigure || normalizedPragma == "classicdivision";
+ const bool withConfigure = prefix || normalizedPragma == "file" || normalizedPragma == "folder" || normalizedPragma == "udf";
+ const bool hasLexicalScope = withConfigure || normalizedPragma == "classicdivision";
for (auto pragmaValue : pragmaValues) {
if (pragmaValue->HasAlt_pragma_value3()) {
values.push_back(TDeferredAtom(Ctx.Pos(), StringContent(Ctx, pragmaValue->GetAlt_pragma_value3().GetToken1().GetValue())));
@@ -4622,7 +4622,7 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
}
if (prefix.empty()) {
- if (!TopLevel && !hasLexicalScope) {
+ if (!TopLevel && !hasLexicalScope) {
Error() << "This pragma '" << pragma << "' is not allowed to be used in actions or subqueries";
Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
return{};
@@ -4799,13 +4799,13 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
return {};
}
Ctx.Error(Ctx.Pos()) << *values[0].GetLiteral();
- } else if (normalizedPragma == "classicdivision") {
- if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx.PragmaClassicDivision)) {
- Error() << "Expected single boolean argument for: " << pragma;
- Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
- return {};
- }
- Ctx.IncrementMonCounter("sql_pragma", "ClassicDivision");
+ } else if (normalizedPragma == "classicdivision") {
+ if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx.PragmaClassicDivision)) {
+ Error() << "Expected single boolean argument for: " << pragma;
+ Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
+ return {};
+ }
+ Ctx.IncrementMonCounter("sql_pragma", "ClassicDivision");
} else if (normalizedPragma == "disableunordered") {
Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA)
<< "Use of deprecated DisableUnordered pragma. It will be dropped soon";
@@ -5124,7 +5124,7 @@ bool TSqlTranslation::DefineActionOrSubqueryStatement(const TRule_define_action_
}
auto saveCurrCluster = Ctx.CurrCluster;
- auto savePragmaClassicDivision = Ctx.PragmaClassicDivision;
+ auto savePragmaClassicDivision = Ctx.PragmaClassicDivision;
auto saveMode = Ctx.Settings.Mode;
if (isSubquery) {
Ctx.Settings.Mode = NSQLTranslation::ESqlMode::SUBQUERY;
@@ -5156,7 +5156,7 @@ bool TSqlTranslation::DefineActionOrSubqueryStatement(const TRule_define_action_
auto ret = !hasError ? BuildQuery(Ctx.Pos(), blocks, false) : nullptr;
Ctx.CurrCluster = saveCurrCluster;
- Ctx.PragmaClassicDivision = savePragmaClassicDivision;
+ Ctx.PragmaClassicDivision = savePragmaClassicDivision;
Ctx.NamedNodes = saveNamedNodes;
Ctx.Settings.Mode = saveMode;
diff --git a/ydb/library/yql/sql/v1/aggregation.cpp b/ydb/library/yql/sql/v1/aggregation.cpp
index 850e0e5056e..f54cd2f7740 100644
--- a/ydb/library/yql/sql/v1/aggregation.cpp
+++ b/ydb/library/yql/sql/v1/aggregation.cpp
@@ -105,7 +105,7 @@ protected:
if (!Expr->Init(ctx, src)) {
return false;
}
- if (Expr->IsAggregated() && !Expr->IsAggregationKey() && !IsOverWindow()) {
+ if (Expr->IsAggregated() && !Expr->IsAggregationKey() && !IsOverWindow()) {
ctx.Error(Pos) << "Aggregation of aggregated values is forbidden for no window functions";
return false;
}
diff --git a/ydb/library/yql/sql/v1/builtin.cpp b/ydb/library/yql/sql/v1/builtin.cpp
index 43ef1243f10..a0604a34469 100644
--- a/ydb/library/yql/sql/v1/builtin.cpp
+++ b/ydb/library/yql/sql/v1/builtin.cpp
@@ -1646,9 +1646,9 @@ public:
}
void DoUpdateState() const override {
- State.Set(ENodeState::Const, false);
- }
-
+ State.Set(ENodeState::Const, false);
+ }
+
TNodePtr DoClone() const final {
return new TTableRow<Join>(Pos, ArgsCount);
}
@@ -2316,13 +2316,13 @@ TAggrFuncFactoryCallback BuildAggrFuncFactoryCallback(
const TString& functionName,
const TString& factoryName,
EAggrFuncTypeCallback type = NORMAL,
- const TString& functionNameOverride = TString(),
- const TVector<EAggregateMode>& validModes = {}) {
+ const TString& functionNameOverride = TString(),
+ const TVector<EAggregateMode>& validModes = {}) {
const TString realFunctionName = functionNameOverride.empty() ? functionName : functionNameOverride;
- return [functionName, realFunctionName, factoryName, type, validModes] (TPosition pos, const TVector<TNodePtr>& args, EAggregateMode aggMode, bool isFactory) -> INode::TPtr {
- if (!validModes.empty()) {
- if (!IsIn(validModes, aggMode)) {
+ return [functionName, realFunctionName, factoryName, type, validModes] (TPosition pos, const TVector<TNodePtr>& args, EAggregateMode aggMode, bool isFactory) -> INode::TPtr {
+ if (!validModes.empty()) {
+ if (!IsIn(validModes, aggMode)) {
TString errorText;
if (TVector{EAggregateMode::OverWindow} == validModes) {
errorText = TStringBuilder()
@@ -2331,9 +2331,9 @@ TAggrFuncFactoryCallback BuildAggrFuncFactoryCallback(
errorText = TStringBuilder()
<< "Can't use " << functionName << " in " << ToString(aggMode) << " aggregation mode";
}
- return INode::TPtr(new TInvalidBuiltin(pos, errorText));
- }
- }
+ return INode::TPtr(new TInvalidBuiltin(pos, errorText));
+ }
+ }
TAggregationPtr factory = nullptr;
switch (type) {
case NORMAL:
@@ -2389,15 +2389,15 @@ TAggrFuncFactoryCallback BuildAggrFuncFactoryCallback(
};
}
-TAggrFuncFactoryCallback BuildAggrFuncFactoryCallback(
- const TString& functionName,
- const TString& factoryName,
- const TVector<EAggregateMode>& validModes,
- EAggrFuncTypeCallback type = NORMAL,
- const TString& functionNameOverride = TString()) {
- return BuildAggrFuncFactoryCallback(functionName, factoryName, type, functionNameOverride, validModes);
-}
-
+TAggrFuncFactoryCallback BuildAggrFuncFactoryCallback(
+ const TString& functionName,
+ const TString& factoryName,
+ const TVector<EAggregateMode>& validModes,
+ EAggrFuncTypeCallback type = NORMAL,
+ const TString& functionNameOverride = TString()) {
+ return BuildAggrFuncFactoryCallback(functionName, factoryName, type, functionNameOverride, validModes);
+}
+
template<typename TType>
TBuiltinFactoryCallback BuildSimpleBuiltinFactoryCallback() {
return [] (TPosition pos, const TVector<TNodePtr>& args) -> TNodePtr {
@@ -2459,53 +2459,53 @@ TNodePtr MakePair(TPosition pos, const TVector<TNodePtr>& args) {
});
}
-struct TBuiltinFuncData {
- const TBuiltinFactoryCallbackMap BuiltinFuncs;
- const TAggrFuncFactoryCallbackMap AggrFuncs;
- const TCoreFuncMap CoreFuncs;
+struct TBuiltinFuncData {
+ const TBuiltinFactoryCallbackMap BuiltinFuncs;
+ const TAggrFuncFactoryCallbackMap AggrFuncs;
+ const TCoreFuncMap CoreFuncs;
- TBuiltinFuncData():
- BuiltinFuncs(MakeBuiltinFuncs()),
- AggrFuncs(MakeAggrFuncs()),
+ TBuiltinFuncData():
+ BuiltinFuncs(MakeBuiltinFuncs()),
+ AggrFuncs(MakeAggrFuncs()),
CoreFuncs(MakeCoreFuncs())
- {
- }
-
- TBuiltinFactoryCallbackMap MakeBuiltinFuncs() {
- TBuiltinFactoryCallbackMap builtinFuncs = {
- // Branching
- {"if", BuildSimpleBuiltinFactoryCallback<TYqlIf<false>>()},
- {"ifstrict", BuildSimpleBuiltinFactoryCallback<TYqlIf<true>>() },
-
- // String builtins
- {"len", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
- {"length", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
- {"charlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
- {"characterlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
+ {
+ }
+
+ TBuiltinFactoryCallbackMap MakeBuiltinFuncs() {
+ TBuiltinFactoryCallbackMap builtinFuncs = {
+ // Branching
+ {"if", BuildSimpleBuiltinFactoryCallback<TYqlIf<false>>()},
+ {"ifstrict", BuildSimpleBuiltinFactoryCallback<TYqlIf<true>>() },
+
+ // String builtins
+ {"len", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
+ {"length", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
+ {"charlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
+ {"characterlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Size", 1, 1)},
{"substring", BuildNamedBuiltinFactoryCallback<TYqlSubstring>("Substring")},
{"find", BuildNamedBuiltinFactoryCallback<TYqlSubstring>("Find")},
{"rfind", BuildNamedBuiltinFactoryCallback<TYqlSubstring>("RFind")},
- {"byteat", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ByteAt", 2, 2) },
+ {"byteat", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ByteAt", 2, 2) },
{"startswith", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StartsWith", 2, 2)},
{"endswith", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EndsWith", 2, 2)},
- // Numeric builtins
- {"abs", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Abs", 1, 1) },
- {"tobytes", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ToBytes", 1, 1) },
- {"frombytes", BuildSimpleBuiltinFactoryCallback<TFromBytes>() },
+ // Numeric builtins
+ {"abs", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Abs", 1, 1) },
+ {"tobytes", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ToBytes", 1, 1) },
+ {"frombytes", BuildSimpleBuiltinFactoryCallback<TFromBytes>() },
- // Compare builtins
- {"minof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Min", 1, -1)},
- {"maxof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Max", 1, -1)},
- {"greatest", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Max", 1, -1)},
- {"least", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Min", 1, -1)},
- {"in", BuildSimpleBuiltinFactoryCallback<TYqlIn>()},
+ // Compare builtins
+ {"minof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Min", 1, -1)},
+ {"maxof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Max", 1, -1)},
+ {"greatest", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Max", 1, -1)},
+ {"least", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Min", 1, -1)},
+ {"in", BuildSimpleBuiltinFactoryCallback<TYqlIn>()},
- // List builtins
+ // List builtins
{"aslist", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsList", 0, -1)},
{"asliststrict", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsListStrict", 0, -1) },
- {"listlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Length", 1, 1)},
- {"listhasitems", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("HasItems", 1, 1)},
+ {"listlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Length", 1, 1)},
+ {"listhasitems", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("HasItems", 1, 1)},
{"listextend", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListExtend", 0, -1)},
{"listextendstrict", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListExtendStrict", 0, -1)},
{"listunionall", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListUnionAll", 0, -1) },
@@ -2517,11 +2517,11 @@ struct TBuiltinFuncData {
{"listtake", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListTake", 2, 2)},
{"listhead", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListHead", 1, 1)},
{"listlast", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListLast", 1, 1)},
- {"listsort", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(true)},
- {"listsortasc", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(true)},
- {"listsortdesc", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(false)},
- {"listmap", BuildBoolBuiltinFactoryCallback<TListMapBuiltin>(false)},
- {"listflatmap", BuildBoolBuiltinFactoryCallback<TListMapBuiltin>(true)},
+ {"listsort", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(true)},
+ {"listsortasc", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(true)},
+ {"listsortdesc", BuildBoolBuiltinFactoryCallback<TListSortBuiltin>(false)},
+ {"listmap", BuildBoolBuiltinFactoryCallback<TListMapBuiltin>(false)},
+ {"listflatmap", BuildBoolBuiltinFactoryCallback<TListMapBuiltin>(true)},
{"listfilter", BuildNamedBuiltinFactoryCallback<TListFilterBuiltin>("ListFilter")},
{"listany", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListAny", 1, 1)},
{"listall", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListAll", 1, 1)},
@@ -2531,10 +2531,10 @@ struct TBuiltinFuncData {
{"listsum", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListSum", 1, 1)},
{"listavg", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListAvg", 1, 1)},
{"listconcat", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListConcat", 1, 2)},
- {"listextract", BuildSimpleBuiltinFactoryCallback<TListExtractBuiltin>()},
- {"listuniq", BuildSimpleBuiltinFactoryCallback<TListUniqBuiltin>()},
- {"listcreate", BuildSimpleBuiltinFactoryCallback<TListCreateBuiltin>()},
- {"listfromrange", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListFromRange", 2, 3) },
+ {"listextract", BuildSimpleBuiltinFactoryCallback<TListExtractBuiltin>()},
+ {"listuniq", BuildSimpleBuiltinFactoryCallback<TListUniqBuiltin>()},
+ {"listcreate", BuildSimpleBuiltinFactoryCallback<TListCreateBuiltin>()},
+ {"listfromrange", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListFromRange", 2, 3) },
{"listreplicate", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Replicate", 2, 2) },
{"listtakewhile", BuildNamedBuiltinFactoryCallback<TListFilterBuiltin>("ListTakeWhile") },
{"listskipwhile", BuildNamedBuiltinFactoryCallback<TListFilterBuiltin>("ListSkipWhile") },
@@ -2544,10 +2544,10 @@ struct TBuiltinFuncData {
{"listnotnull", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListNotNull", 1, 1)},
{"listflatten", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListFlatten", 1, 1)},
- // Dict builtins
+ // Dict builtins
{"dictlength", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Length", 1, 1)},
{"dicthasitems", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("HasItems", 1, 1)},
- {"dictcreate", BuildSimpleBuiltinFactoryCallback<TDictCreateBuiltin>()},
+ {"dictcreate", BuildSimpleBuiltinFactoryCallback<TDictCreateBuiltin>()},
{"setcreate", BuildSimpleBuiltinFactoryCallback<TSetCreateBuiltin>()},
{"asdict", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsDict", 0, -1)},
{"asdictstrict", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AsDictStrict", 0, -1)},
@@ -2557,114 +2557,114 @@ struct TBuiltinFuncData {
{"tomultidict", BuildNamedBuiltinFactoryCallback<TYqlToDict<false>>("Many")},
{"tosorteddict", BuildNamedBuiltinFactoryCallback<TYqlToDict<true>>("One")},
{"tosortedmultidict", BuildNamedBuiltinFactoryCallback<TYqlToDict<true>>("Many")},
- {"dictkeys", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictKeys", 1, 1) },
- {"dictpayloads", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictPayloads", 1, 1) },
- {"dictitems", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictItems", 1, 1) },
- {"dictlookup", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Lookup", 2, 2) },
+ {"dictkeys", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictKeys", 1, 1) },
+ {"dictpayloads", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictPayloads", 1, 1) },
+ {"dictitems", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictItems", 1, 1) },
+ {"dictlookup", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Lookup", 2, 2) },
{"dictcontains", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Contains", 2, 2) },
- // Atom builtins
- {"asatom", BuildSimpleBuiltinFactoryCallback<TYqlAsAtom>()},
+ // Atom builtins
+ {"asatom", BuildSimpleBuiltinFactoryCallback<TYqlAsAtom>()},
{"secureparam", BuildNamedBuiltinFactoryCallback<TYqlAtom>("SecureParam")},
{"void", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Void", 0, 0)},
{"emptylist", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EmptyList", 0, 0)},
{"emptydict", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EmptyDict", 0, 0)},
{"callable", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Callable", 2, 2)},
- {"way", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Way", 1, 1) },
- {"variant", BuildSimpleBuiltinFactoryCallback<TYqlVariant>() },
+ {"way", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Way", 1, 1) },
+ {"variant", BuildSimpleBuiltinFactoryCallback<TYqlVariant>() },
{"enum", BuildSimpleBuiltinFactoryCallback<TYqlEnum>() },
{"asvariant", BuildSimpleBuiltinFactoryCallback<TYqlAsVariant>() },
{"asenum", BuildSimpleBuiltinFactoryCallback<TYqlAsEnum>() },
- {"astagged", BuildSimpleBuiltinFactoryCallback<TYqlAsTagged>() },
- {"untag", BuildSimpleBuiltinFactoryCallback<TYqlUntag>() },
- {"parsetype", BuildSimpleBuiltinFactoryCallback<TYqlParseType>() },
- {"ensuretype", BuildSimpleBuiltinFactoryCallback<TYqlTypeAssert<true>>() },
- {"ensureconvertibleto", BuildSimpleBuiltinFactoryCallback<TYqlTypeAssert<false>>() },
- {"ensure", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Ensure", 2, 3) },
- {"evaluateexpr", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateExpr", 1, 1) },
- {"evaluateatom", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateAtom", 1, 1) },
- {"evaluatetype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateType", 1, 1) },
- {"unwrap", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Unwrap", 1, 2) },
- {"just", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Just", 1, 1) },
- {"nothing", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Nothing", 1, 1) },
- {"formattype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FormatType", 1, 1) },
- {"typeof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeOf", 1, 1) },
- {"instanceof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("InstanceOf", 1, 1) },
- {"datatype", BuildSimpleBuiltinFactoryCallback<TYqlDataType>() },
- {"optionaltype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalType", 1, 1) },
- {"listtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListType", 1, 1) },
- {"streamtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamType", 1, 1) },
- {"dicttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictType", 2, 2) },
- {"tupletype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleType", 0, -1) },
- {"generictype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("GenericType", 0, 0) },
- {"unittype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("UnitType", 0, 0) },
- {"voidtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VoidType", 0, 0) },
- {"resourcetype", BuildSimpleBuiltinFactoryCallback<TYqlResourceType>() },
- {"taggedtype", BuildSimpleBuiltinFactoryCallback<TYqlTaggedType>() },
- {"varianttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantType", 1, 1) },
- {"callabletype", BuildSimpleBuiltinFactoryCallback<TYqlCallableType>() },
- {"optionalitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalItemType", 1, 1) },
- {"listitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListItemType", 1, 1) },
- {"streamitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamItemType", 1, 1) },
- {"dictkeytype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictKeyType", 1, 1) },
- {"dictpayloadtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictPayloadType", 1, 1) },
- {"tupleelementtype", BuildSimpleBuiltinFactoryCallback<TYqlTupleElementType>() },
- {"structmembertype", BuildSimpleBuiltinFactoryCallback<TYqlStructMemberType>() },
- {"callableresulttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableResultType", 1, 1) },
- {"callableargumenttype", BuildSimpleBuiltinFactoryCallback<TYqlCallableArgumentType>() },
- {"variantunderlyingtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantUnderlyingType", 1, 1) },
- {"fromysonsimpletype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FromYsonSimpleType", 2, 2) },
- {"currentutcdate", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcDate", 0, -1) },
- {"currentutcdatetime", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcDatetime", 0, -1) },
- {"currentutctimestamp", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcTimestamp", 0, -1) },
+ {"astagged", BuildSimpleBuiltinFactoryCallback<TYqlAsTagged>() },
+ {"untag", BuildSimpleBuiltinFactoryCallback<TYqlUntag>() },
+ {"parsetype", BuildSimpleBuiltinFactoryCallback<TYqlParseType>() },
+ {"ensuretype", BuildSimpleBuiltinFactoryCallback<TYqlTypeAssert<true>>() },
+ {"ensureconvertibleto", BuildSimpleBuiltinFactoryCallback<TYqlTypeAssert<false>>() },
+ {"ensure", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Ensure", 2, 3) },
+ {"evaluateexpr", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateExpr", 1, 1) },
+ {"evaluateatom", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateAtom", 1, 1) },
+ {"evaluatetype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateType", 1, 1) },
+ {"unwrap", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Unwrap", 1, 2) },
+ {"just", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Just", 1, 1) },
+ {"nothing", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Nothing", 1, 1) },
+ {"formattype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FormatType", 1, 1) },
+ {"typeof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeOf", 1, 1) },
+ {"instanceof", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("InstanceOf", 1, 1) },
+ {"datatype", BuildSimpleBuiltinFactoryCallback<TYqlDataType>() },
+ {"optionaltype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalType", 1, 1) },
+ {"listtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListType", 1, 1) },
+ {"streamtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamType", 1, 1) },
+ {"dicttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictType", 2, 2) },
+ {"tupletype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleType", 0, -1) },
+ {"generictype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("GenericType", 0, 0) },
+ {"unittype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("UnitType", 0, 0) },
+ {"voidtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VoidType", 0, 0) },
+ {"resourcetype", BuildSimpleBuiltinFactoryCallback<TYqlResourceType>() },
+ {"taggedtype", BuildSimpleBuiltinFactoryCallback<TYqlTaggedType>() },
+ {"varianttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantType", 1, 1) },
+ {"callabletype", BuildSimpleBuiltinFactoryCallback<TYqlCallableType>() },
+ {"optionalitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalItemType", 1, 1) },
+ {"listitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListItemType", 1, 1) },
+ {"streamitemtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamItemType", 1, 1) },
+ {"dictkeytype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictKeyType", 1, 1) },
+ {"dictpayloadtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictPayloadType", 1, 1) },
+ {"tupleelementtype", BuildSimpleBuiltinFactoryCallback<TYqlTupleElementType>() },
+ {"structmembertype", BuildSimpleBuiltinFactoryCallback<TYqlStructMemberType>() },
+ {"callableresulttype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableResultType", 1, 1) },
+ {"callableargumenttype", BuildSimpleBuiltinFactoryCallback<TYqlCallableArgumentType>() },
+ {"variantunderlyingtype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantUnderlyingType", 1, 1) },
+ {"fromysonsimpletype", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FromYsonSimpleType", 2, 2) },
+ {"currentutcdate", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcDate", 0, -1) },
+ {"currentutcdatetime", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcDatetime", 0, -1) },
+ {"currentutctimestamp", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "CurrentUtcTimestamp", 0, -1) },
{ "currenttzdate", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(1, "CurrentTzDate", 1, -1) },
{ "currenttzdatetime", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(1, "CurrentTzDatetime", 1, -1) },
{ "currenttztimestamp", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(1, "CurrentTzTimestamp", 1, -1) },
- {"currentoperationid", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentOperationId", 0, 0) },
- {"currentoperationsharedid", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentOperationSharedId", 0, 0) },
- {"currentauthenticateduser", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentAuthenticatedUser", 0, 0) },
- {"addtimezone", BuildSimpleBuiltinFactoryCallback<TYqlAddTimezone>() },
- {"removetimezone", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("RemoveTimezone", 1, 1) },
+ {"currentoperationid", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentOperationId", 0, 0) },
+ {"currentoperationsharedid", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentOperationSharedId", 0, 0) },
+ {"currentauthenticateduser", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CurrentAuthenticatedUser", 0, 0) },
+ {"addtimezone", BuildSimpleBuiltinFactoryCallback<TYqlAddTimezone>() },
+ {"removetimezone", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("RemoveTimezone", 1, 1) },
{"pickle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Pickle", 1, 1) },
{"stablepickle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StablePickle", 1, 1) },
{"unpickle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Unpickle", 2, 2) },
- {"typehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeHandle", 1, 1) },
- {"parsetypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ParseTypeHandle", 1, 1) },
- {"typekind", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeKind", 1, 1) },
- {"datatypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DataTypeComponents", 1, 1) },
- {"datatypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DataTypeHandle", 1, 1) },
- {"optionaltypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalTypeHandle", 1, 1) },
- {"listtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListTypeHandle", 1, 1) },
- {"streamtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamTypeHandle", 1, 1) },
- {"tupletypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleTypeComponents", 1, 1) },
- {"tupletypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleTypeHandle", 1, 1) },
- {"structtypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StructTypeComponents", 1, 1) },
- {"structtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StructTypeHandle", 1, 1) },
- {"dicttypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictTypeComponents", 1, 1) },
- {"dicttypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictTypeHandle", 2, 2) },
- {"resourcetypetag", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ResourceTypeTag", 1, 1) },
- {"resourcetypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ResourceTypeHandle", 1, 1) },
- {"taggedtypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TaggedTypeComponents", 1, 1) },
- {"taggedtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TaggedTypeHandle", 2, 2) },
- {"varianttypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantTypeHandle", 1, 1) },
- {"voidtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VoidTypeHandle", 0, 0) },
- {"nulltypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("NullTypeHandle", 0, 0) },
+ {"typehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeHandle", 1, 1) },
+ {"parsetypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ParseTypeHandle", 1, 1) },
+ {"typekind", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TypeKind", 1, 1) },
+ {"datatypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DataTypeComponents", 1, 1) },
+ {"datatypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DataTypeHandle", 1, 1) },
+ {"optionaltypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("OptionalTypeHandle", 1, 1) },
+ {"listtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListTypeHandle", 1, 1) },
+ {"streamtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StreamTypeHandle", 1, 1) },
+ {"tupletypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleTypeComponents", 1, 1) },
+ {"tupletypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TupleTypeHandle", 1, 1) },
+ {"structtypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StructTypeComponents", 1, 1) },
+ {"structtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StructTypeHandle", 1, 1) },
+ {"dicttypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictTypeComponents", 1, 1) },
+ {"dicttypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("DictTypeHandle", 2, 2) },
+ {"resourcetypetag", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ResourceTypeTag", 1, 1) },
+ {"resourcetypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ResourceTypeHandle", 1, 1) },
+ {"taggedtypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TaggedTypeComponents", 1, 1) },
+ {"taggedtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("TaggedTypeHandle", 2, 2) },
+ {"varianttypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VariantTypeHandle", 1, 1) },
+ {"voidtypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("VoidTypeHandle", 0, 0) },
+ {"nulltypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("NullTypeHandle", 0, 0) },
{"emptylisttypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EmptyListTypeHandle", 0, 0) },
{"emptydicttypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EmptyDictTypeHandle", 0, 0) },
- {"callabletypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableTypeComponents", 1, 1) },
- {"callableargument", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableArgument", 1, 3) },
- {"callabletypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableTypeHandle", 2, 4) },
- {"formatcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FormatCode", 1, 1) },
+ {"callabletypecomponents", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableTypeComponents", 1, 1) },
+ {"callableargument", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableArgument", 1, 3) },
+ {"callabletypehandle", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("CallableTypeHandle", 2, 4) },
+ {"formatcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FormatCode", 1, 1) },
{"worldcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("WorldCode", 0, 0) },
- {"atomcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AtomCode", 1, 1) },
- {"listcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListCode", 0, -1) },
- {"funccode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FuncCode", 1, -1) },
- {"lambdacode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("LambdaCode", 1, 2) },
- {"evaluatecode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateCode", 1, 1) },
- {"reprcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ReprCode", 1, 1) },
- {"quotecode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("QuoteCode", 1, 1) },
+ {"atomcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("AtomCode", 1, 1) },
+ {"listcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ListCode", 0, -1) },
+ {"funccode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FuncCode", 1, -1) },
+ {"lambdacode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("LambdaCode", 1, 2) },
+ {"evaluatecode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("EvaluateCode", 1, 1) },
+ {"reprcode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ReprCode", 1, 1) },
+ {"quotecode", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("QuoteCode", 1, 1) },
{"lambdaargumentscount", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("LambdaArgumentsCount", 1, 1) },
{"subqueryextend", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("SubqueryExtend", 1, -1) },
{"subqueryunionall", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("SubqueryUnionAll", 1, -1) },
@@ -2677,8 +2677,8 @@ struct TBuiltinFuncData {
{"subqueryorderby", BuildSimpleBuiltinFactoryCallback<TYqlSubqueryOrderBy<SubqueryOrderBy>>() },
{"subqueryassumeorderby", BuildSimpleBuiltinFactoryCallback<TYqlSubqueryOrderBy<SubqueryAssumeOrderBy>>() },
- // Tuple builtins
- {"astuple", BuildSimpleBuiltinFactoryCallback<TTupleNode>()},
+ // Tuple builtins
+ {"astuple", BuildSimpleBuiltinFactoryCallback<TTupleNode>()},
// Struct builtins
{"trymember", BuildNamedBuiltinFactoryCallback<TTryMember>("TryMember")},
@@ -2691,54 +2691,54 @@ struct TBuiltinFuncData {
{"staticmap", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StaticMap", 2, 2) },
{"staticzip", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("StaticZip", 1, -1) },
- // File builtins
+ // File builtins
{"filepath", BuildNamedBuiltinFactoryCallback<TYqlAtom>("FilePath")},
{"filecontent", BuildNamedBuiltinFactoryCallback<TYqlAtom>("FileContent")},
{"folderpath", BuildNamedBuiltinFactoryCallback<TYqlAtom>("FolderPath") },
{"files", BuildNamedBuiltinFactoryCallback<TYqlAtom>("Files")},
- {"parsefile", BuildSimpleBuiltinFactoryCallback<TYqlParseFileOp>()},
-
- // Misc builtins
- {"coalesce", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Coalesce", 1, -1)},
- {"nvl", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Coalesce", 1, -1) },
- {"nanvl", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Nanvl", 2, 2) },
- {"likely", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Likely", 1, -1)},
- {"random", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "Random", 1, -1)},
- {"randomnumber", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "RandomNumber", 1, -1)},
- {"randomuuid", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "RandomUuid", 1, -1) },
- {"tablepath", BuildNamedBuiltinFactoryCallback<TCallDirectRow>("TablePath") },
+ {"parsefile", BuildSimpleBuiltinFactoryCallback<TYqlParseFileOp>()},
+
+ // Misc builtins
+ {"coalesce", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Coalesce", 1, -1)},
+ {"nvl", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Coalesce", 1, -1) },
+ {"nanvl", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Nanvl", 2, 2) },
+ {"likely", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Likely", 1, -1)},
+ {"random", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "Random", 1, -1)},
+ {"randomnumber", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "RandomNumber", 1, -1)},
+ {"randomuuid", BuildNamedDepsArgcBuiltinFactoryCallback<TCallNodeDepArgs>(0, "RandomUuid", 1, -1) },
+ {"tablepath", BuildNamedBuiltinFactoryCallback<TCallDirectRow>("TablePath") },
{"tablerecordindex", BuildNamedBuiltinFactoryCallback<TCallDirectRow>("TableRecord") },
{"tablerow", BuildSimpleBuiltinFactoryCallback<TTableRow<false>>() },
{"jointablerow", BuildSimpleBuiltinFactoryCallback<TTableRow<true>>() },
{"tablerows", BuildSimpleBuiltinFactoryCallback<TTableRows>() },
- {"weakfield", BuildSimpleBuiltinFactoryCallback<TWeakFieldOp>()},
+ {"weakfield", BuildSimpleBuiltinFactoryCallback<TWeakFieldOp>()},
- // Hint builtins
- {"grouping", BuildSimpleBuiltinFactoryCallback<TGroupingNode>()},
+ // Hint builtins
+ {"grouping", BuildSimpleBuiltinFactoryCallback<TGroupingNode>()},
- // Window funcitons
- {"rownumber", BuildNamedArgcBuiltinFactoryCallback<TWinRowNumber>("RowNumber", 0, 0)},
+ // Window funcitons
+ {"rownumber", BuildNamedArgcBuiltinFactoryCallback<TWinRowNumber>("RowNumber", 0, 0)},
{"rank", BuildNamedArgcBuiltinFactoryCallback<TWinRank>("Rank", 0, 1)},
{"denserank", BuildNamedArgcBuiltinFactoryCallback<TWinRank>("DenseRank", 0, 1)},
{"lead", BuildNamedArgcBuiltinFactoryCallback<TWinLeadLag>("Lead", 1, 2)},
{"lag", BuildNamedArgcBuiltinFactoryCallback<TWinLeadLag>("Lag", 1, 2)},
-
+
// Session window
{"sessionwindow", BuildSimpleBuiltinFactoryCallback<TSessionWindow>()},
{"sessionstart", BuildSimpleBuiltinFactoryCallback<TSessionStart<true>>()},
{"sessionstate", BuildSimpleBuiltinFactoryCallback<TSessionStart<false>>()},
- // Hopping intervals time functions
- {"hopstart", BuildSimpleBuiltinFactoryCallback<THoppingTime<true>>()},
- {"hopend", BuildSimpleBuiltinFactoryCallback<THoppingTime<false>>()},
- };
- return builtinFuncs;
- }
-
- TAggrFuncFactoryCallbackMap MakeAggrFuncs() {
- constexpr auto OverWindow = EAggregateMode::OverWindow;
-
- TAggrFuncFactoryCallbackMap aggrFuncs = {
+ // Hopping intervals time functions
+ {"hopstart", BuildSimpleBuiltinFactoryCallback<THoppingTime<true>>()},
+ {"hopend", BuildSimpleBuiltinFactoryCallback<THoppingTime<false>>()},
+ };
+ return builtinFuncs;
+ }
+
+ TAggrFuncFactoryCallbackMap MakeAggrFuncs() {
+ constexpr auto OverWindow = EAggregateMode::OverWindow;
+
+ TAggrFuncFactoryCallbackMap aggrFuncs = {
{"min", BuildAggrFuncFactoryCallback("Min", "min_traits_factory")},
{"max", BuildAggrFuncFactoryCallback("Max", "max_traits_factory")},
@@ -2828,29 +2828,29 @@ struct TBuiltinFuncData {
{"udaf", BuildAggrFuncFactoryCallback("UDAF", "udaf_traits_factory", UDAF)},
- // Window functions
- {"firstvalue", BuildAggrFuncFactoryCallback("FirstValue", "first_value_traits_factory", {OverWindow})},
- {"lastvalue", BuildAggrFuncFactoryCallback("LastValue", "last_value_traits_factory", {OverWindow})},
- {"firstvalueignorenulls", BuildAggrFuncFactoryCallback("FirstValueIgnoreNulls", "first_value_ignore_nulls_traits_factory", {OverWindow})},
- {"lastvalueignorenulls", BuildAggrFuncFactoryCallback("LastValueIgnoreNulls", "last_value_ignore_nulls_traits_factory", {OverWindow})},
+ // Window functions
+ {"firstvalue", BuildAggrFuncFactoryCallback("FirstValue", "first_value_traits_factory", {OverWindow})},
+ {"lastvalue", BuildAggrFuncFactoryCallback("LastValue", "last_value_traits_factory", {OverWindow})},
+ {"firstvalueignorenulls", BuildAggrFuncFactoryCallback("FirstValueIgnoreNulls", "first_value_ignore_nulls_traits_factory", {OverWindow})},
+ {"lastvalueignorenulls", BuildAggrFuncFactoryCallback("LastValueIgnoreNulls", "last_value_ignore_nulls_traits_factory", {OverWindow})},
};
- return aggrFuncs;
- }
-
- TCoreFuncMap MakeCoreFuncs() {
- TCoreFuncMap coreFuncs = {
- {"listindexof", { "IndexOf", 2, 2}},
- {"testbit", { "TestBit", 2, 2}},
- {"setbit", { "SetBit", 2, 2}},
- {"clearbit", { "ClearBit", 2, 2}},
- {"flipbit", { "FlipBit", 2, 2 }},
- {"toset", { "ToSet", 1, 1 }},
- {"setisdisjoint", { "SetIsDisjoint", 2, 2}},
- {"setintersection", { "SetIntersection", 2, 3}},
- {"setincludes", { "SetIncludes", 2, 2}},
- {"setunion", { "SetUnion", 2, 3}},
- {"setdifference", { "SetDifference", 2, 2}},
- {"setsymmetricdifference", { "SetSymmetricDifference", 2, 3}},
+ return aggrFuncs;
+ }
+
+ TCoreFuncMap MakeCoreFuncs() {
+ TCoreFuncMap coreFuncs = {
+ {"listindexof", { "IndexOf", 2, 2}},
+ {"testbit", { "TestBit", 2, 2}},
+ {"setbit", { "SetBit", 2, 2}},
+ {"clearbit", { "ClearBit", 2, 2}},
+ {"flipbit", { "FlipBit", 2, 2 }},
+ {"toset", { "ToSet", 1, 1 }},
+ {"setisdisjoint", { "SetIsDisjoint", 2, 2}},
+ {"setintersection", { "SetIntersection", 2, 3}},
+ {"setincludes", { "SetIncludes", 2, 2}},
+ {"setunion", { "SetUnion", 2, 3}},
+ {"setdifference", { "SetDifference", 2, 2}},
+ {"setsymmetricdifference", { "SetSymmetricDifference", 2, 3}},
{"listaggregate", { "ListAggregate", 2, 2}},
{"dictaggregate", { "DictAggregate", 2, 2}},
{"aggregatetransforminput", { "AggregateTransformInput", 2, 2}},
@@ -2865,19 +2865,19 @@ struct TBuiltinFuncData {
{"forcerenamemembers", { "ForceRenameMembers", 2, 2}},
{"spreadmembers", { "SpreadMembers", 2, 2}},
{"forcespreadmembers", { "ForceSpreadMembers", 2, 2}},
- };
- return coreFuncs;
- }
-};
+ };
+ return coreFuncs;
+ }
+};
-TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVector<TNodePtr>& args,
+TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVector<TNodePtr>& args,
const TString& originalNameSpace, EAggregateMode aggMode, bool* mustUseNamed, bool warnOnYqlNameSpace) {
-
- const TBuiltinFuncData* funcData = Singleton<TBuiltinFuncData>();
- const TBuiltinFactoryCallbackMap& builtinFuncs = funcData->BuiltinFuncs;
- const TAggrFuncFactoryCallbackMap& aggrFuncs = funcData->AggrFuncs;
- const TCoreFuncMap& coreFuncs = funcData->CoreFuncs;
-
+
+ const TBuiltinFuncData* funcData = Singleton<TBuiltinFuncData>();
+ const TBuiltinFactoryCallbackMap& builtinFuncs = funcData->BuiltinFuncs;
+ const TAggrFuncFactoryCallbackMap& aggrFuncs = funcData->AggrFuncs;
+ const TCoreFuncMap& coreFuncs = funcData->CoreFuncs;
+
for (auto& arg: args) {
if (!arg) {
return nullptr;
diff --git a/ydb/library/yql/sql/v1/node.cpp b/ydb/library/yql/sql/v1/node.cpp
index 870bbd9cc7f..7bc888a0429 100644
--- a/ydb/library/yql/sql/v1/node.cpp
+++ b/ydb/library/yql/sql/v1/node.cpp
@@ -108,10 +108,10 @@ bool INode::IsAggregated() const {
return HasState(ENodeState::Aggregated);
}
-bool INode::IsAggregationKey() const {
- return HasState(ENodeState::AggregationKey);
-}
-
+bool INode::IsAggregationKey() const {
+ return HasState(ENodeState::AggregationKey);
+}
+
bool INode::IsOverWindow() const {
return HasState(ENodeState::OverWindow);
}
diff --git a/ydb/library/yql/sql/v1/node.h b/ydb/library/yql/sql/v1/node.h
index de82b45a238..77d745a7105 100644
--- a/ydb/library/yql/sql/v1/node.h
+++ b/ydb/library/yql/sql/v1/node.h
@@ -132,7 +132,7 @@ namespace NSQLTranslationV1 {
bool IsConstant() const;
bool MaybeConstant() const;
bool IsAggregated() const;
- bool IsAggregationKey() const;
+ bool IsAggregationKey() const;
bool IsOverWindow() const;
bool HasState(ENodeState state) const {
PrecacheState();
diff --git a/ydb/library/yql/sql/v1/query.cpp b/ydb/library/yql/sql/v1/query.cpp
index 725356b9f57..95506b2c783 100644
--- a/ydb/library/yql/sql/v1/query.cpp
+++ b/ydb/library/yql/sql/v1/query.cpp
@@ -1901,10 +1901,10 @@ public:
return {};
}
- void DoUpdateState() const override {
- State.Set(ENodeState::Const);
- }
-
+ void DoUpdateState() const override {
+ State.Set(ENodeState::Const);
+ }
+
private:
TVector<TString> Args;
TVector<TNodePtr> ExprSeq;
diff --git a/ydb/library/yql/sql/v1/select.cpp b/ydb/library/yql/sql/v1/select.cpp
index 2841f05a5b5..9825b08bc4b 100644
--- a/ydb/library/yql/sql/v1/select.cpp
+++ b/ydb/library/yql/sql/v1/select.cpp
@@ -1535,12 +1535,12 @@ public:
return false;
}
src->AddWindowSpecs(WinSpecs);
-
+
const bool isJoin = Source->GetJoin();
if (!InitSelect(ctx, src, isJoin, hasError)) {
return false;
- }
-
+ }
+
src->FinishColumns();
Aggregate = src->BuildAggregation("core");
if (src->IsFlattenByColumns() || src->IsFlattenColumns()) {
@@ -1620,35 +1620,35 @@ public:
}
bool ordered = ctx.UseUnordered(*this);
- auto block(Y(Y("let", "core", input)));
+ auto block(Y(Y("let", "core", input)));
if (PreFlattenMap) {
block = L(block, Y("let", "core", Y(ordered ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos, Y("row"), PreFlattenMap))));
}
- if (Flatten) {
+ if (Flatten) {
block = L(block, Y("let", "core", Y(ordered ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos, Y("row"), Flatten, "res"))));
- }
- if (PreaggregatedMap) {
+ }
+ if (PreaggregatedMap) {
block = L(block, Y("let", "core", PreaggregatedMap));
- if (Source->IsCompositeSource() && !Columns.QualifiedAll) {
- block = L(block, Y("let", "preaggregated", "core"));
- }
- } else if (Source->IsCompositeSource() && !Columns.QualifiedAll) {
- block = L(block, Y("let", "origcore", "core"));
- }
+ if (Source->IsCompositeSource() && !Columns.QualifiedAll) {
+ block = L(block, Y("let", "preaggregated", "core"));
+ }
+ } else if (Source->IsCompositeSource() && !Columns.QualifiedAll) {
+ block = L(block, Y("let", "origcore", "core"));
+ }
auto filter = Source->BuildFilter(ctx, "core");
- if (filter) {
- block = L(block, Y("let", "core", filter));
- }
- if (Aggregate) {
- block = L(block, Y("let", "core", Aggregate));
+ if (filter) {
+ block = L(block, Y("let", "core", filter));
+ }
+ if (Aggregate) {
+ block = L(block, Y("let", "core", Aggregate));
ordered = false;
- }
- if (PrewindowMap) {
- block = L(block, Y("let", "core", PrewindowMap));
- }
- if (CalcOverWindow) {
- block = L(block, Y("let", "core", CalcOverWindow));
- }
+ }
+ if (PrewindowMap) {
+ block = L(block, Y("let", "core", PrewindowMap));
+ }
+ if (CalcOverWindow) {
+ block = L(block, Y("let", "core", CalcOverWindow));
+ }
block = L(block, Y("let", "core", Y("PersistableRepr", BuildSqlProject(ctx, ordered))));
@@ -1656,18 +1656,18 @@ public:
block = L(block, Y("let", "core", Y("PersistableRepr", Y("SqlAggregateAll", Y("RemoveSystemMembers", "core")))));
}
- return Y("block", Q(L(block, Y("return", "core"))));
- }
-
- TNodePtr BuildSort(TContext& ctx, const TString& label) override {
- Y_UNUSED(ctx);
- if (OrderBy.empty()) {
- return nullptr;
- }
-
+ return Y("block", Q(L(block, Y("return", "core"))));
+ }
+
+ TNodePtr BuildSort(TContext& ctx, const TString& label) override {
+ Y_UNUSED(ctx);
+ if (OrderBy.empty()) {
+ return nullptr;
+ }
+
return Y("let", label, BuildSortSpec(OrderBy, label, false, AssumeSorted));
- }
-
+ }
+
TNodePtr BuildCleanupColumns(TContext& ctx, const TString& label) override {
TNodePtr cleanup;
if (ctx.EnableSystemColumns && ctx.Settings.Mode != NSQLTranslation::ESqlMode::LIMITED_VIEW) {
@@ -1698,14 +1698,14 @@ public:
return cleanup;
}
- bool IsSelect() const override {
+ bool IsSelect() const override {
return true;
- }
-
- bool IsStream() const override {
+ }
+
+ bool IsStream() const override {
return Source->IsStream();
- }
-
+ }
+
EOrderKind GetOrderKind() const override {
if (OrderBy.empty()) {
return EOrderKind::None;
@@ -1715,31 +1715,31 @@ public:
TWriteSettings GetWriteSettings() const override {
return Settings;
- }
-
- TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override {
- if (OrderByInit && Source->GetJoin()) {
- column.SetAsNotReliable();
- auto maybeExist = IRealSource::AddColumn(ctx, column);
- if (maybeExist && maybeExist.GetRef()) {
- return true;
- }
- return Source->AddColumn(ctx, column);
- }
- return IRealSource::AddColumn(ctx, column);
- }
-
- TNodePtr PrepareWithout(const TNodePtr& base) {
- auto terms = base;
- if (Without) {
- for (auto without: Without) {
- auto name = *without->GetColumnName();
- if (Source && Source->GetJoin()) {
- name = DotJoin(*without->GetSourceName(), name);
- }
+ }
+
+ TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override {
+ if (OrderByInit && Source->GetJoin()) {
+ column.SetAsNotReliable();
+ auto maybeExist = IRealSource::AddColumn(ctx, column);
+ if (maybeExist && maybeExist.GetRef()) {
+ return true;
+ }
+ return Source->AddColumn(ctx, column);
+ }
+ return IRealSource::AddColumn(ctx, column);
+ }
+
+ TNodePtr PrepareWithout(const TNodePtr& base) {
+ auto terms = base;
+ if (Without) {
+ for (auto without: Without) {
+ auto name = *without->GetColumnName();
+ if (Source && Source->GetJoin()) {
+ name = DotJoin(*without->GetSourceName(), name);
+ }
terms = L(terms, Y("let", "row", Y("RemoveMember", "row", Q(name))));
- }
- }
+ }
+ }
if (Source) {
for (auto column : Source->GetTmpWindowColumns()) {
@@ -1747,22 +1747,22 @@ public:
}
}
- return terms;
- }
-
- TNodePtr DoClone() const final {
- TWinSpecs newSpecs;
- for (auto cur: WinSpecs) {
- newSpecs.emplace(cur.first, cur.second->Clone());
- }
+ return terms;
+ }
+
+ TNodePtr DoClone() const final {
+ TWinSpecs newSpecs;
+ for (auto cur: WinSpecs) {
+ newSpecs.emplace(cur.first, cur.second->Clone());
+ }
return new TSelectCore(Pos, Source->CloneSource(), CloneContainer(GroupByExpr),
CloneContainer(GroupBy), CompactGroupBy, AssumeSorted, CloneContainer(OrderBy),
SafeClone(Having), newSpecs, SafeClone(HoppingWindowSpec),
CloneContainer(Terms), Distinct, Without, SelectStream, Settings);
- }
-
-private:
- bool InitSelect(TContext& ctx, ISource* src, bool isJoin, bool& hasError) {
+ }
+
+private:
+ bool InitSelect(TContext& ctx, ISource* src, bool isJoin, bool& hasError) {
for (auto& [name, winSpec] : WinSpecs) {
for (size_t i = 0; i < winSpec->Partitions.size(); ++i) {
auto partitionNode = winSpec->Partitions[i];
@@ -1775,60 +1775,60 @@ private:
}
sessionWindow->MarkValid();
winSpec->Session = partitionNode;
- }
+ }
- if (!partitionNode->Init(ctx, src)) {
- hasError = true;
- continue;
- }
- if (!partitionNode->GetLabel() && !partitionNode->GetColumnName()) {
+ if (!partitionNode->Init(ctx, src)) {
+ hasError = true;
+ continue;
+ }
+ if (!partitionNode->GetLabel() && !partitionNode->GetColumnName()) {
TString label = TStringBuilder() << "group_" << name << "_" << i;
partitionNode->SetLabel(label);
- }
- }
+ }
+ }
if (!src->AddExpressions(ctx, winSpec->Partitions, EExprSeat::WindowPartitionBy)) {
- hasError = true;
- }
- }
-
- if (HoppingWindowSpec) {
- if (!HoppingWindowSpec->TimeExtractor->Init(ctx, src)) {
- hasError = true;
- }
- src->SetHoppingWindowSpec(HoppingWindowSpec);
- }
-
- for (auto& term: Terms) {
+ hasError = true;
+ }
+ }
+
+ if (HoppingWindowSpec) {
+ if (!HoppingWindowSpec->TimeExtractor->Init(ctx, src)) {
+ hasError = true;
+ }
+ src->SetHoppingWindowSpec(HoppingWindowSpec);
+ }
+
+ for (auto& term: Terms) {
if (!term->Init(ctx, src)) {
- hasError = true;
- continue;
- }
- auto column = term->GetColumnName();
- TString label(term->GetLabel());
+ hasError = true;
+ continue;
+ }
+ auto column = term->GetColumnName();
+ TString label(term->GetLabel());
bool hasName = true;
- if (label.empty()) {
- auto source = term->GetSourceName();
+ if (label.empty()) {
+ auto source = term->GetSourceName();
if (term->IsAsterisk() && !source->empty()) {
- Columns.QualifiedAll = true;
- label = DotJoin(*source, "*");
- } else if (column) {
- label = isJoin && source && *source ? DotJoin(*source, *column) : *column;
- } else {
- label = TStringBuilder() << "column" << Columns.List.size();
+ Columns.QualifiedAll = true;
+ label = DotJoin(*source, "*");
+ } else if (column) {
+ label = isJoin && source && *source ? DotJoin(*source, *column) : *column;
+ } else {
+ label = TStringBuilder() << "column" << Columns.List.size();
hasName = false;
if (ctx.WarnUnnamedColumns) {
ctx.Warning(term->GetPos(), TIssuesIds::YQL_UNNAMED_COLUMN)
<< "Autogenerated column name " << label << " will be used for expression";
}
- }
- }
+ }
+ }
if (!Columns.Add(&label, false, false, true, hasName)) {
- ctx.Error(Pos) << "Duplicate column: " << label;
- hasError = true;
- continue;
- }
- }
-
+ ctx.Error(Pos) << "Duplicate column: " << label;
+ hasError = true;
+ continue;
+ }
+ }
+
CompositeTerms = Y();
if (!hasError && Source->IsCompositeSource() && !Columns.All && !Columns.QualifiedAll && !Columns.List.empty()) {
auto compositeSrcPtr = static_cast<TCompositeSelect*>(Source->GetCompositeSource());
@@ -1855,59 +1855,59 @@ private:
}
}
- if (Columns.All || Columns.QualifiedAll) {
- Source->AllColumns();
- }
- for (const auto& without: Without) {
- auto namePtr = without->GetColumnName();
- auto sourcePtr = without->GetSourceName();
- YQL_ENSURE(namePtr && *namePtr);
- if (isJoin && !(sourcePtr && *sourcePtr)) {
- ctx.Error(without->GetPos()) << "Expected correlation name for WITHOUT in JOIN";
- hasError = true;
- continue;
- }
- }
- if (Having && !Having->Init(ctx, src)) {
- hasError = true;
- }
- if (!src->IsCompositeSource() && !Distinct && !Columns.All && src->HasAggregations()) {
+ if (Columns.All || Columns.QualifiedAll) {
+ Source->AllColumns();
+ }
+ for (const auto& without: Without) {
+ auto namePtr = without->GetColumnName();
+ auto sourcePtr = without->GetSourceName();
+ YQL_ENSURE(namePtr && *namePtr);
+ if (isJoin && !(sourcePtr && *sourcePtr)) {
+ ctx.Error(without->GetPos()) << "Expected correlation name for WITHOUT in JOIN";
+ hasError = true;
+ continue;
+ }
+ }
+ if (Having && !Having->Init(ctx, src)) {
+ hasError = true;
+ }
+ if (!src->IsCompositeSource() && !Distinct && !Columns.All && src->HasAggregations()) {
WarnIfAliasFromSelectIsUsedInGroupBy(ctx, Terms, GroupBy, GroupByExpr);
- /// verify select aggregation compatibility
- TVector<TNodePtr> exprs(Terms);
- if (Having) {
- exprs.push_back(Having);
- }
- for (const auto& iter: WinSpecs) {
- for (const auto& sortSpec: iter.second->OrderBy) {
- exprs.push_back(sortSpec->OrderExpr);
- }
- }
- if (!ValidateAllNodesForAggregation(ctx, exprs)) {
- hasError = true;
- }
- }
- const auto label = GetLabel();
- for (const auto& sortSpec: OrderBy) {
- auto& expr = sortSpec->OrderExpr;
- SetLabel(Source->GetLabel());
- OrderByInit = true;
- if (!expr->Init(ctx, this)) {
- hasError = true;
- continue;
- }
- OrderByInit = false;
+ /// verify select aggregation compatibility
+ TVector<TNodePtr> exprs(Terms);
+ if (Having) {
+ exprs.push_back(Having);
+ }
+ for (const auto& iter: WinSpecs) {
+ for (const auto& sortSpec: iter.second->OrderBy) {
+ exprs.push_back(sortSpec->OrderExpr);
+ }
+ }
+ if (!ValidateAllNodesForAggregation(ctx, exprs)) {
+ hasError = true;
+ }
+ }
+ const auto label = GetLabel();
+ for (const auto& sortSpec: OrderBy) {
+ auto& expr = sortSpec->OrderExpr;
+ SetLabel(Source->GetLabel());
+ OrderByInit = true;
+ if (!expr->Init(ctx, this)) {
+ hasError = true;
+ continue;
+ }
+ OrderByInit = false;
if (!IsComparableExpression(ctx, expr, AssumeSorted, AssumeSorted ? "ASSUME ORDER BY" : "ORDER BY")) {
- hasError = true;
- continue;
- }
- }
- SetLabel(label);
-
+ hasError = true;
+ continue;
+ }
+ }
+ SetLabel(label);
+
return !hasError;
- }
-
+ }
+
TNodePtr PrepareJoinCoalesce(TContext& ctx, const TNodePtr& base, bool multipleQualifiedAll, const TVector<TString>& coalesceLabels) {
const bool isJoin = Source->GetJoin();
const bool needCoalesce = isJoin && ctx.SimpleColumns &&
diff --git a/ydb/library/yql/sql/v1/sql.cpp b/ydb/library/yql/sql/v1/sql.cpp
index ab5a8647885..82d6b0b447f 100644
--- a/ydb/library/yql/sql/v1/sql.cpp
+++ b/ydb/library/yql/sql/v1/sql.cpp
@@ -982,19 +982,19 @@ private:
TNodePtr SubExpr(const TRule_xor_subexpr& node, const TTrailingQuestions& tail);
TNodePtr SubExpr(const TRule_mul_subexpr& node, const TTrailingQuestions& tail) {
- // mul_subexpr: con_subexpr (DOUBLE_PIPE con_subexpr)*;
+ // mul_subexpr: con_subexpr (DOUBLE_PIPE con_subexpr)*;
auto getNode = [](const TRule_mul_subexpr::TBlock2& b) -> const TRule_con_subexpr& { return b.GetRule_con_subexpr2(); };
return BinOper("Concat", node.GetRule_con_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end(), tail);
}
TNodePtr SubExpr(const TRule_add_subexpr& node, const TTrailingQuestions& tail) {
- // add_subexpr: mul_subexpr ((ASTERISK | SLASH | PERCENT) mul_subexpr)*;
+ // add_subexpr: mul_subexpr ((ASTERISK | SLASH | PERCENT) mul_subexpr)*;
auto getNode = [](const TRule_add_subexpr::TBlock2& b) -> const TRule_mul_subexpr& { return b.GetRule_mul_subexpr2(); };
return BinOpList(node.GetRule_mul_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end(), tail);
}
TNodePtr SubExpr(const TRule_bit_subexpr& node, const TTrailingQuestions& tail) {
- // bit_subexpr: add_subexpr ((PLUS | MINUS) add_subexpr)*;
+ // bit_subexpr: add_subexpr ((PLUS | MINUS) add_subexpr)*;
auto getNode = [](const TRule_bit_subexpr::TBlock2& b) -> const TRule_add_subexpr& { return b.GetRule_add_subexpr2(); };
return BinOpList(node.GetRule_add_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end(), tail);
}
@@ -1034,19 +1034,19 @@ private:
}
TNodePtr SubExpr(const TRule_eq_subexpr& node, const TTrailingQuestions& tail) {
- // eq_subexpr: neq_subexpr ((LESS | LESS_OR_EQ | GREATER | GREATER_OR_EQ) neq_subexpr)*;
+ // eq_subexpr: neq_subexpr ((LESS | LESS_OR_EQ | GREATER | GREATER_OR_EQ) neq_subexpr)*;
auto getNode = [](const TRule_eq_subexpr::TBlock2& b) -> const TRule_neq_subexpr& { return b.GetRule_neq_subexpr2(); };
return BinOpList(node.GetRule_neq_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end(), tail);
}
TNodePtr SubExpr(const TRule_or_subexpr& node, const TTrailingQuestions& tail) {
- // or_subexpr: and_subexpr (AND and_subexpr)*;
+ // or_subexpr: and_subexpr (AND and_subexpr)*;
auto getNode = [](const TRule_or_subexpr::TBlock2& b) -> const TRule_and_subexpr& { return b.GetRule_and_subexpr2(); };
return BinOper("And", node.GetRule_and_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end(), tail);
}
TNodePtr SubExpr(const TRule_and_subexpr& node, const TTrailingQuestions& tail) {
- // and_subexpr: xor_subexpr (XOR xor_subexpr)*;
+ // and_subexpr: xor_subexpr (XOR xor_subexpr)*;
auto getNode = [](const TRule_and_subexpr::TBlock2& b) -> const TRule_xor_subexpr& { return b.GetRule_xor_subexpr2(); };
return BinOper("Xor", node.GetRule_xor_subexpr1(), getNode, node.GetBlock2().begin(), node.GetBlock2().end(), tail);
}
@@ -4581,10 +4581,10 @@ TNodePtr TSqlExpression::CaseRule(const TRule_case_expr& rule) {
}
TMaybe<TExprOrIdent> TSqlExpression::AtomExpr(const TRule_atom_expr& node, const TTrailingQuestions& tail) {
- // atom_expr:
- // literal_value
- // | bind_parameter
- // | lambda
+ // atom_expr:
+ // literal_value
+ // | bind_parameter
+ // | lambda
// | cast_expr
// | exists_expr
// | case_expr
@@ -4594,7 +4594,7 @@ TMaybe<TExprOrIdent> TSqlExpression::AtomExpr(const TRule_atom_expr& node, const
// | list_literal
// | dict_literal
// | struct_literal
- // ;
+ // ;
if (node.Alt_case() != TRule_atom_expr::kAltAtomExpr2 && tail.Count) {
UnexpectedQuestionToken(tail);
return {};
@@ -4878,7 +4878,7 @@ bool TSqlExpression::SqlLambdaExprBody(TContext& ctx, const TRule_lambda_body& n
}
TNodePtr TSqlExpression::SubExpr(const TRule_con_subexpr& node, const TTrailingQuestions& tail) {
- // con_subexpr: unary_subexpr | unary_op unary_subexpr;
+ // con_subexpr: unary_subexpr | unary_op unary_subexpr;
switch (node.Alt_case()) {
case TRule_con_subexpr::kAltConSubexpr1:
return UnaryExpr(node.GetAlt_con_subexpr1().GetRule_unary_subexpr1(), tail);
@@ -4909,7 +4909,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_con_subexpr& node, const TTrailingQ
}
TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQuestions& tail) {
- // xor_subexpr: eq_subexpr cond_expr?;
+ // xor_subexpr: eq_subexpr cond_expr?;
TNodePtr res(SubExpr(node.GetRule_eq_subexpr1(), node.HasBlock2() ? TTrailingQuestions{} : tail));
if (!res) {
return {};
@@ -5232,7 +5232,7 @@ TNodePtr TSqlExpression::BinOpList(const TNode& node, TGetNode getNode, TIter be
Ctx.IncrementMonCounter("sql_binary_operations", "Divide");
if (!Ctx.Scoped->PragmaClassicDivision && partialResult) {
partialResult = new TCallNodeImpl(pos, "SafeCast", {std::move(partialResult), BuildDataType(pos, "Double")});
- }
+ }
break;
case SQLv1LexerTokens::TOKEN_PERCENT:
opName = "%";
@@ -5880,10 +5880,10 @@ TSourcePtr TSqlSelect::JoinSource(const TRule_join_source& node) {
}
bool TSqlSelect::SelectTerm(TVector<TNodePtr>& terms, const TRule_result_column& node) {
- // result_column:
- // opt_id_prefix ASTERISK
+ // result_column:
+ // opt_id_prefix ASTERISK
// | expr ((AS an_id) | an_id_pure)?
- // ;
+ // ;
switch (node.Alt_case()) {
case TRule_result_column::kAltResultColumn1: {
auto alt = node.GetAlt_result_column1();
@@ -9157,7 +9157,7 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
}
}
- const bool withConfigure = prefix || normalizedPragma == "file" || normalizedPragma == "folder" || normalizedPragma == "udf";
+ const bool withConfigure = prefix || normalizedPragma == "file" || normalizedPragma == "folder" || normalizedPragma == "udf";
static const THashSet<TStringBuf> lexicalScopePragmas = {"classicdivision", "strictjoinkeytypes", "disablestrictjoinkeytypes"};
const bool hasLexicalScope = withConfigure || lexicalScopePragmas.contains(normalizedPragma);
for (auto pragmaValue : pragmaValues) {
@@ -9197,7 +9197,7 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
}
if (prefix.empty()) {
- if (!TopLevel && !hasLexicalScope) {
+ if (!TopLevel && !hasLexicalScope) {
Error() << "This pragma '" << pragma << "' is not allowed to be used in actions or subqueries";
Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
return{};
@@ -9435,13 +9435,13 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
return {};
}
Ctx.Error(Ctx.Pos()) << *values[0].GetLiteral();
- } else if (normalizedPragma == "classicdivision") {
+ } else if (normalizedPragma == "classicdivision") {
if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx.Scoped->PragmaClassicDivision)) {
Error() << "Expected boolean literal as a single argument for: " << pragma;
- Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
- return {};
- }
- Ctx.IncrementMonCounter("sql_pragma", "ClassicDivision");
+ Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
+ return {};
+ }
+ Ctx.IncrementMonCounter("sql_pragma", "ClassicDivision");
} else if (normalizedPragma == "disableunordered") {
Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA)
<< "Use of deprecated DisableUnordered pragma. It will be dropped soon";