diff options
author | vvvv <[email protected]> | 2025-06-18 15:12:37 +0300 |
---|---|---|
committer | vvvv <[email protected]> | 2025-06-18 15:49:04 +0300 |
commit | 379a419911ee1bbb93f56085133712fa5d8c3112 (patch) | |
tree | c68bfc7f62d5a601925ee586521da83ab69ea791 /yql/essentials/sql | |
parent | f96379cdde0b2b470d341cb8df3c4866478a3b1c (diff) |
YQL-20086 sql
commit_hash:b06f3d2f5fa81e2073966eb172758758bd94fdf2
Diffstat (limited to 'yql/essentials/sql')
57 files changed, 8995 insertions, 8995 deletions
diff --git a/yql/essentials/sql/cluster_mapping.cpp b/yql/essentials/sql/cluster_mapping.cpp index 7a6ab64ecd0..fb2a5100b5b 100644 --- a/yql/essentials/sql/cluster_mapping.cpp +++ b/yql/essentials/sql/cluster_mapping.cpp @@ -7,24 +7,24 @@ namespace NSQLTranslation { TClusterMapping::TClusterMapping(const THashMap<TString, TString>& mapping) { for (const auto& p : mapping) { if (p.second == KikimrProviderName) { - CaseSensitiveClusters.emplace(p); + CaseSensitiveClusters_.emplace(p); continue; } TString clusterLowerCase = to_lower(p.first); - CaseInsensitiveClusters.emplace(clusterLowerCase, p.second); + CaseInsensitiveClusters_.emplace(clusterLowerCase, p.second); } } TMaybe<TString> TClusterMapping::GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const { - auto providerPtr1 = CaseSensitiveClusters.FindPtr(cluster); + auto providerPtr1 = CaseSensitiveClusters_.FindPtr(cluster); if (providerPtr1) { normalizedClusterName = cluster; return *providerPtr1; } TString clusterLowerCase = to_lower(cluster); - auto providerPtr2 = CaseInsensitiveClusters.FindPtr(clusterLowerCase); + auto providerPtr2 = CaseInsensitiveClusters_.FindPtr(clusterLowerCase); if (providerPtr2) { normalizedClusterName = clusterLowerCase; return *providerPtr2; diff --git a/yql/essentials/sql/cluster_mapping.h b/yql/essentials/sql/cluster_mapping.h index c2de2163713..bf943253642 100644 --- a/yql/essentials/sql/cluster_mapping.h +++ b/yql/essentials/sql/cluster_mapping.h @@ -10,7 +10,7 @@ public: TMaybe<TString> GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const; private: - THashMap<TString, TString> CaseSensitiveClusters; - THashMap<TString, TString> CaseInsensitiveClusters; + THashMap<TString, TString> CaseSensitiveClusters_; + THashMap<TString, TString> CaseInsensitiveClusters_; }; } diff --git a/yql/essentials/sql/pg/optimizer.cpp b/yql/essentials/sql/pg/optimizer.cpp index 2cec690807b..6ce6fd0fa30 100644 --- a/yql/essentials/sql/pg/optimizer.cpp +++ b/yql/essentials/sql/pg/optimizer.cpp @@ -13,8 +13,8 @@ #define __restrict #endif -#define TypeName PG_TypeName -#define SortBy PG_SortBy +#define TypeName PG_TypeName // NOLINT(readability-identifier-naming) +#define SortBy PG_SortBy // NOLINT(readability-identifier-naming) #undef SIZEOF_SIZE_T extern "C" { @@ -120,8 +120,8 @@ List* MakeRelOptInfoList(const IOptimizer::TInput& input) { TPgOptimizer::TPgOptimizer( const TInput& input, const std::function<void(const TString&)>& log) - : Input(input) - , Log(log) + : Input_(input) + , Log_(log) { get_relation_stats_hook = RelationStatsHook; } @@ -143,7 +143,7 @@ TPgOptimizer::TOutput TPgOptimizer::JoinSearch() } Var* TPgOptimizer::MakeVar(TVarId varId) { - auto*& var = Vars[varId]; + auto*& var = Vars_[varId]; return var ? var : (var = ::NYql::MakeVar(std::get<0>(varId), std::get<1>(varId))); @@ -152,7 +152,7 @@ Var* TPgOptimizer::MakeVar(TVarId varId) { EquivalenceClass* TPgOptimizer::MakeEqClass(int i) { EquivalenceClass* eq = makeNode(EquivalenceClass); - for (auto [relno, varno] : Input.EqClasses[i].Vars) { + for (auto [relno, varno] : Input_.EqClasses[i].Vars) { EquivalenceMember* m = makeNode(EquivalenceMember); m->em_expr = (Expr*)MakeVar(TVarId{relno, varno}); m->em_relids = bms_add_member(nullptr, relno); @@ -166,7 +166,7 @@ EquivalenceClass* TPgOptimizer::MakeEqClass(int i) { List* TPgOptimizer::MakeEqClasses() { List* l = nullptr; - for (int i = 0; i < (int)Input.EqClasses.size(); i++) { + for (int i = 0; i < (int)Input_.EqClasses.size(); i++) { l = lappend(l, MakeEqClass(i)); } return l; @@ -174,17 +174,17 @@ List* TPgOptimizer::MakeEqClasses() { void TPgOptimizer::LogNode(const TString& prefix, void* node) { - if (Log) { + if (Log_) { auto* str = nodeToString(node); auto* fmt = pretty_format_node_dump(str); pfree(str); - Log(TStringBuilder() << prefix << ": " << fmt); + Log_(TStringBuilder() << prefix << ": " << fmt); pfree(fmt); } } IOptimizer::TOutput TPgOptimizer::MakeOutput(Path* path) { - TOutput output = {{}, &Input}; + TOutput output = {{}, &Input_}; output.Rows = path->rows; output.TotalCost = path->total_cost; MakeOutputJoin(output, path); @@ -200,7 +200,7 @@ int TPgOptimizer::MakeOutputJoin(TOutput& output, Path* path) { int relid = -1; while ((relid = bms_next_member(path->parent->relids, relid)) >= 0) - { + { node.Rels.emplace_back(relid); } @@ -301,32 +301,32 @@ void TPgOptimizer::MakeLeftOrRightRestrictions(std::vector<RestrictInfo*>& dst, } oe->args = lappend(oe->args, MakeVar(TVarId{relId, varId})); - RestrictInfos[relId].emplace_back(ri); + RestrictInfos_[relId].emplace_back(ri); } dst.emplace_back(ri); } } RelOptInfo* TPgOptimizer::JoinSearchInternal() { - RestrictInfos.clear(); - RestrictInfos.resize(Input.Rels.size()+1); - LeftRestriction.clear(); - LeftRestriction.reserve(Input.Left.size()); - MakeLeftOrRightRestrictions(LeftRestriction, Input.Left); - MakeLeftOrRightRestrictions(RightRestriction, Input.Right); - - List* rels = MakeRelOptInfoList(Input); + RestrictInfos_.clear(); + RestrictInfos_.resize(Input_.Rels.size()+1); + LeftRestriction_.clear(); + LeftRestriction_.reserve(Input_.Left.size()); + MakeLeftOrRightRestrictions(LeftRestriction_, Input_.Left); + MakeLeftOrRightRestrictions(RightRestriction_, Input_.Right); + + List* rels = MakeRelOptInfoList(Input_); ListCell* l; int relId = 1; foreach (l, rels) { RelOptInfo* rel = (RelOptInfo*)lfirst(l); - for (auto* ri : RestrictInfos[relId++]) { + for (auto* ri : RestrictInfos_[relId++]) { rel->joininfo = lappend(rel->joininfo, ri); } } - if (Log) { + if (Log_) { int i = 1; foreach (l, rels) { LogNode(TStringBuilder() << "Input: " << i++, lfirst(l)); @@ -351,7 +351,7 @@ RelOptInfo* TPgOptimizer::JoinSearchInternal() { root.all_baserels = bms_add_range(nullptr, 1, rels->length); root.eq_classes = MakeEqClasses(); - for (auto* ri : LeftRestriction) { + for (auto* ri : LeftRestriction_) { root.left_join_clauses = lappend(root.left_join_clauses, ri); root.hasJoinRTEs = 1; root.outer_join_rels = bms_add_members(root.outer_join_rels, ri->right_relids); @@ -368,7 +368,7 @@ RelOptInfo* TPgOptimizer::JoinSearchInternal() { root.join_info_list = lappend(root.join_info_list, ji); } - for (auto* ri : RightRestriction) { + for (auto* ri : RightRestriction_) { root.right_join_clauses = lappend(root.right_join_clauses, ri); root.hasJoinRTEs = 1; root.outer_join_rels = bms_add_members(root.outer_join_rels, ri->left_relids); @@ -392,8 +392,8 @@ RelOptInfo* TPgOptimizer::JoinSearchInternal() { root.simple_rel_array[i+1] = r; } - for (int eqId = 0; eqId < (int)Input.EqClasses.size(); eqId++) { - for (auto& [relno, _] : Input.EqClasses[eqId].Vars) { + for (int eqId = 0; eqId < (int)Input_.EqClasses.size(); eqId++) { + for (auto& [relno, _] : Input_.EqClasses[eqId].Vars) { root.simple_rel_array[relno]->eclass_indexes = bms_add_member( root.simple_rel_array[relno]->eclass_indexes, eqId); @@ -689,21 +689,21 @@ class TPgOptimizerNew: public IOptimizerNew public: TPgOptimizerNew(IProviderContext& pctx, TExprContext& ctx, const std::function<void(const TString&)>& log) : IOptimizerNew(pctx) - , Ctx(ctx) - , Log(log) + , Ctx_(ctx) + , Log_(log) { } std::shared_ptr<TJoinOptimizerNode> JoinSearch( - const std::shared_ptr<TJoinOptimizerNode>& joinTree, + const std::shared_ptr<TJoinOptimizerNode>& joinTree, const TOptimizerHints& hints = {}) override { Y_UNUSED(hints); - return TPgOptimizerImpl(joinTree, Ctx, Log).Do(); + return TPgOptimizerImpl(joinTree, Ctx_, Log_).Do(); } private: - TExprContext& Ctx; - std::function<void(const TString&)> Log; + TExprContext& Ctx_; + std::function<void(const TString&)> Log_; }; IOptimizer* MakePgOptimizerInternal(const IOptimizer::TInput& input, const std::function<void(const TString&)>& log) diff --git a/yql/essentials/sql/pg/optimizer.h b/yql/essentials/sql/pg/optimizer.h index 2b56b86b7e7..b7a874bcda3 100644 --- a/yql/essentials/sql/pg/optimizer.h +++ b/yql/essentials/sql/pg/optimizer.h @@ -19,12 +19,12 @@ public: TOutput JoinSearch() override; private: - TInput Input; - std::function<void(const TString&)> Log; - std::map<TVarId, Var*> Vars; - std::vector<std::vector<RestrictInfo*>> RestrictInfos; - std::vector<RestrictInfo*> LeftRestriction; - std::vector<RestrictInfo*> RightRestriction; + TInput Input_; + std::function<void(const TString&)> Log_; + std::map<TVarId, Var*> Vars_; + std::vector<std::vector<RestrictInfo*>> RestrictInfos_; + std::vector<RestrictInfo*> LeftRestriction_; + std::vector<RestrictInfo*> RightRestriction_; void MakeLeftOrRightRestrictions(std::vector<RestrictInfo*>& dst, const std::vector<TEq>& src); void LogNode(const TString& prefix, void* node); diff --git a/yql/essentials/sql/pg/optimizer_impl_ut.cpp b/yql/essentials/sql/pg/optimizer_impl_ut.cpp index 6a58139de9b..43828ad912a 100644 --- a/yql/essentials/sql/pg/optimizer_impl_ut.cpp +++ b/yql/essentials/sql/pg/optimizer_impl_ut.cpp @@ -15,8 +15,8 @@ extern "C" { #define __restrict #endif -#define TypeName PG_TypeName -#define SortBy PG_SortBy +#define TypeName PG_TypeName // NOLINT(readability-identifier-naming) +#define SortBy PG_SortBy // NOLINT(readability-identifier-naming) #undef SIZEOF_SIZE_T extern "C" { diff --git a/yql/essentials/sql/pg/pg_sql.cpp b/yql/essentials/sql/pg/pg_sql.cpp index 1843ea4f9e9..534c6b95104 100644 --- a/yql/essentials/sql/pg/pg_sql.cpp +++ b/yql/essentials/sql/pg/pg_sql.cpp @@ -4,8 +4,8 @@ #define __restrict #endif -#define TypeName PG_TypeName -#define SortBy PG_SortBy +#define TypeName PG_TypeName // NOLINT(readability-identifier-naming) +#define SortBy PG_SortBy // NOLINT(readability-identifier-naming) #undef SIZEOF_SIZE_T extern "C" { #include "postgres.h" @@ -193,7 +193,7 @@ const IndexElem* IndexElement(const Node* node) { #define AT_LOCATION_EX(node, field) \ TLocationGuard guard(this, node->field); -std::tuple<TStringBuf, TStringBuf> getSchemaAndObjectName(const List* nameList) { +std::tuple<TStringBuf, TStringBuf> GetSchemaAndObjectName(const List* nameList) { switch (ListLength(nameList)) { case 2: { const auto clusterName = StrVal(ListNodeNth(nameList, 0)); @@ -211,8 +211,8 @@ std::tuple<TStringBuf, TStringBuf> getSchemaAndObjectName(const List* nameList) } struct TPgConst { - TMaybe<TString> value; - enum class Type { + TMaybe<TString> Value; + enum class EType { boolean, int4, int8, @@ -223,65 +223,65 @@ struct TPgConst { nil, }; - static TString ToString(const TPgConst::Type& type) { + static TString ToString(const TPgConst::EType& type) { switch (type) { - case TPgConst::Type::boolean: + case TPgConst::EType::boolean: return "bool"; - case TPgConst::Type::int4: + case TPgConst::EType::int4: return "int4"; - case TPgConst::Type::int8: + case TPgConst::EType::int8: return "int8"; - case TPgConst::Type::numeric: + case TPgConst::EType::numeric: return "numeric"; - case TPgConst::Type::text: + case TPgConst::EType::text: return "text"; - case TPgConst::Type::unknown: + case TPgConst::EType::unknown: return "unknown"; - case TPgConst::Type::bit: + case TPgConst::EType::bit: return "bit"; - case TPgConst::Type::nil: + case TPgConst::EType::nil: return "unknown"; } } - Type type; + EType Type; }; TMaybe<TPgConst> GetValueNType(const A_Const* value) { TPgConst pgConst; if (value->isnull) { - pgConst.type = TPgConst::Type::nil; + pgConst.Type = TPgConst::EType::nil; return pgConst; } const auto& val = value->val; switch (NodeTag(val)) { case T_Boolean: { - pgConst.value = BoolVal(val) ? "t" : "f"; - pgConst.type = TPgConst::Type::boolean; + pgConst.Value = BoolVal(val) ? "t" : "f"; + pgConst.Type = TPgConst::EType::boolean; return pgConst; } case T_Integer: { - pgConst.value = ToString(IntVal(val)); - pgConst.type = TPgConst::Type::int4; + pgConst.Value = ToString(IntVal(val)); + pgConst.Type = TPgConst::EType::int4; return pgConst; } case T_Float: { auto s = StrFloatVal(val); i64 v; const bool isInt8 = TryFromString<i64>(s, v); - pgConst.value = ToString(s); - pgConst.type = isInt8 ? TPgConst::Type::int8 : TPgConst::Type::numeric; + pgConst.Value = ToString(s); + pgConst.Type = isInt8 ? TPgConst::EType::int8 : TPgConst::EType::numeric; return pgConst; } case T_String: { - pgConst.value = ToString(StrVal(val)); - pgConst.type = TPgConst::Type::unknown; // to support implicit casts + pgConst.Value = ToString(StrVal(val)); + pgConst.Type = TPgConst::EType::unknown; // to support implicit casts return pgConst; } case T_BitString: { - pgConst.value = ToString(StrVal(val)); - pgConst.type = TPgConst::Type::bit; + pgConst.Value = ToString(StrVal(val)); + pgConst.Type = TPgConst::EType::bit; return pgConst; } default: { @@ -296,17 +296,17 @@ class TConverter : public IPGParseEvents { private: class TLocationGuard { private: - TConverter* Owner; + TConverter* Owner_; public: TLocationGuard(TConverter* owner, int location) - : Owner(owner) + : Owner_(owner) { - Owner->PushPosition(location); + Owner_->PushPosition(location); } ~TLocationGuard() { - Owner->PopPosition(); + Owner_->PopPosition(); } }; @@ -358,88 +358,88 @@ public: TConverter(TVector<TAstParseResult>& astParseResults, const NSQLTranslation::TTranslationSettings& settings, const TString& query, TVector<TStmtParseInfo>* stmtParseInfo, bool perStatementResult, TMaybe<ui32> sqlProcArgsCount) - : AstParseResults(astParseResults) - , Settings(settings) - , DqEngineEnabled(Settings.DqDefaultAuto->Allow()) - , BlockEngineEnabled(Settings.BlockDefaultAuto->Allow()) - , StmtParseInfo(stmtParseInfo) - , PerStatementResult(perStatementResult) - , SqlProcArgsCount(sqlProcArgsCount) + : AstParseResults_(astParseResults) + , Settings_(settings) + , DqEngineEnabled_(Settings_.DqDefaultAuto->Allow()) + , BlockEngineEnabled_(Settings_.BlockDefaultAuto->Allow()) + , StmtParseInfo_(stmtParseInfo) + , PerStatementResult_(perStatementResult) + , SqlProcArgsCount_(sqlProcArgsCount) { Y_ENSURE(settings.Mode == NSQLTranslation::ESqlMode::QUERY || settings.Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW); Y_ENSURE(settings.Mode != NSQLTranslation::ESqlMode::LIMITED_VIEW || !perStatementResult); - State.ApplicationName = Settings.ApplicationName; - AstParseResults.push_back({}); - if (StmtParseInfo) { - StmtParseInfo->push_back({}); + State_.ApplicationName = Settings_.ApplicationName; + AstParseResults_.push_back({}); + if (StmtParseInfo_) { + StmtParseInfo_->push_back({}); } ScanRows(query); - for (auto& flag : Settings.Flags) { + for (auto& flag : Settings_.Flags) { if (flag == "DqEngineEnable") { - DqEngineEnabled = true; + DqEngineEnabled_ = true; } else if (flag == "DqEngineForce") { - DqEngineForce = true; + DqEngineForce_ = true; } else if (flag == "BlockEngineEnable") { - BlockEngineEnabled = true; + BlockEngineEnabled_ = true; } else if (flag == "BlockEngineForce") { - BlockEngineForce = true; + BlockEngineForce_ = true; } if (flag == "UnorderedResult") { - UnorderedResult = true; + UnorderedResult_ = true; } } - if (Settings.PathPrefix) { - TablePathPrefix = Settings.PathPrefix + "/"; + if (Settings_.PathPrefix) { + TablePathPrefix_ = Settings_.PathPrefix + "/"; } - for (const auto& [cluster, provider] : Settings.ClusterMapping) { + for (const auto& [cluster, provider] : Settings_.ClusterMapping) { if (provider != PgProviderName) { - Provider = provider; + Provider_ = provider; break; } } - if (!Provider) { - Provider = PgProviderName; + if (!Provider_) { + Provider_ = PgProviderName; } - Y_ENSURE(!Provider.empty()); + Y_ENSURE(!Provider_.empty()); - for (size_t i = 0; i < Settings.PgParameterTypeOids.size(); ++i) { + for (size_t i = 0; i < Settings_.PgParameterTypeOids.size(); ++i) { const auto paramName = PREPARED_PARAM_PREFIX + ToString(i + 1); - const auto typeOid = Settings.PgParameterTypeOids[i]; + const auto typeOid = Settings_.PgParameterTypeOids[i]; const auto& typeName = typeOid != UNKNOWNOID ? NPg::LookupType(typeOid).Name : DEFAULT_PARAM_TYPE; - State.ParamNameToPgTypeName[paramName] = typeName; + State_.ParamNameToPgTypeName[paramName] = typeName; } } void OnResult(const List* raw) { - if (!PerStatementResult) { - AstParseResults[StatementId].Pool = std::make_unique<TMemoryPool>(4096); - AstParseResults[StatementId].Root = ParseResult(raw); - AstParseResults[StatementId].PgAutoParamValues = State.AutoParamValues; + if (!PerStatementResult_) { + AstParseResults_[StatementId_].Pool = std::make_unique<TMemoryPool>(4096); + AstParseResults_[StatementId_].Root = ParseResult(raw); + AstParseResults_[StatementId_].PgAutoParamValues = State_.AutoParamValues; return; } - AstParseResults.resize(ListLength(raw)); - if (StmtParseInfo) { - StmtParseInfo->resize(AstParseResults.size()); + AstParseResults_.resize(ListLength(raw)); + if (StmtParseInfo_) { + StmtParseInfo_->resize(AstParseResults_.size()); } - for (; StatementId < AstParseResults.size(); ++StatementId) { - AstParseResults[StatementId].Pool = std::make_unique<TMemoryPool>(4096); - AstParseResults[StatementId].Root = ParseResult(raw, StatementId); - AstParseResults[StatementId].PgAutoParamValues = State.AutoParamValues; - State = {}; + for (; StatementId_ < AstParseResults_.size(); ++StatementId_) { + AstParseResults_[StatementId_].Pool = std::make_unique<TMemoryPool>(4096); + AstParseResults_[StatementId_].Root = ParseResult(raw, StatementId_); + AstParseResults_[StatementId_].PgAutoParamValues = State_.AutoParamValues; + State_ = {}; } } void OnError(const TIssue& issue) { - AstParseResults[StatementId].Issues.AddIssue(issue); + AstParseResults_[StatementId_].Issues.AddIssue(issue); } void PrepareStatements() { auto configSource = L(A("DataSource"), QA(TString(NYql::ConfigProviderName))); - State.Statements.push_back(L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), configSource, + State_.Statements.push_back(L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), configSource, QA("OrderedColumns")))); } @@ -447,12 +447,12 @@ public: PrepareStatements(); auto configSource = L(A("DataSource"), QA(TString(NYql::ConfigProviderName))); - ui32 blockEnginePgmPos = State.Statements.size(); - State.Statements.push_back(configSource); - ui32 costBasedOptimizerPos = State.Statements.size(); - State.Statements.push_back(configSource); - ui32 dqEnginePgmPos = State.Statements.size(); - State.Statements.push_back(configSource); + ui32 blockEnginePgmPos = State_.Statements.size(); + State_.Statements.push_back(configSource); + ui32 costBasedOptimizerPos = State_.Statements.size(); + State_.Statements.push_back(configSource); + ui32 dqEnginePgmPos = State_.Statements.size(); + State_.Statements.push_back(configSource); if (statementId) { if (!ParseRawStmt(LIST_CAST_NTH(RawStmt, raw, *statementId))) { @@ -466,62 +466,62 @@ public: } } - if (!State.Views.empty()) { + if (!State_.Views.empty()) { AddError("Not all views have been dropped"); return nullptr; } - if (Settings.EndOfQueryCommit && Settings.Mode != NSQLTranslation::ESqlMode::LIMITED_VIEW) { - State.Statements.push_back(L(A("let"), A("world"), L(A("CommitAll!"), + if (Settings_.EndOfQueryCommit && Settings_.Mode != NSQLTranslation::ESqlMode::LIMITED_VIEW) { + State_.Statements.push_back(L(A("let"), A("world"), L(A("CommitAll!"), A("world")))); } AddVariableDeclarations(); - if (Settings.Mode != NSQLTranslation::ESqlMode::LIMITED_VIEW) { - State.Statements.push_back(L(A("return"), A("world"))); + if (Settings_.Mode != NSQLTranslation::ESqlMode::LIMITED_VIEW) { + State_.Statements.push_back(L(A("return"), A("world"))); } - if (DqEngineEnabled) { - State.Statements[dqEnginePgmPos] = L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), configSource, - QA("DqEngine"), QA(DqEngineForce ? "force" : "auto"))); + if (DqEngineEnabled_) { + State_.Statements[dqEnginePgmPos] = L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), configSource, + QA("DqEngine"), QA(DqEngineForce_ ? "force" : "auto"))); } else { - State.Statements.erase(State.Statements.begin() + dqEnginePgmPos); + State_.Statements.erase(State_.Statements.begin() + dqEnginePgmPos); } - if (State.CostBasedOptimizer) { - State.Statements[costBasedOptimizerPos] = L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), configSource, - QA("CostBasedOptimizer"), QA(State.CostBasedOptimizer))); + if (State_.CostBasedOptimizer) { + State_.Statements[costBasedOptimizerPos] = L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), configSource, + QA("CostBasedOptimizer"), QA(State_.CostBasedOptimizer))); } else { - State.Statements.erase(State.Statements.begin() + costBasedOptimizerPos); + State_.Statements.erase(State_.Statements.begin() + costBasedOptimizerPos); } - if (BlockEngineEnabled) { - State.Statements[blockEnginePgmPos] = L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), configSource, - QA("BlockEngine"), QA(BlockEngineForce ? "force" : "auto"))); + if (BlockEngineEnabled_) { + State_.Statements[blockEnginePgmPos] = L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), configSource, + QA("BlockEngine"), QA(BlockEngineForce_ ? "force" : "auto"))); } else { - State.Statements.erase(State.Statements.begin() + blockEnginePgmPos); + State_.Statements.erase(State_.Statements.begin() + blockEnginePgmPos); } return FinishStatements(); } TAstNode* FinishStatements() { - return VL(State.Statements.data(), State.Statements.size()); + return VL(State_.Statements.data(), State_.Statements.size()); } [[nodiscard]] bool ParseRawStmt(const RawStmt* value) { AT_LOCATION_EX(value, stmt_location); auto node = value->stmt; - if (Settings.Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW) { + if (Settings_.Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW) { if (NodeTag(node) != T_SelectStmt && NodeTag(node) != T_VariableSetStmt) { AddError("Unsupported statement in LIMITED_VIEW mode"); return false; } } - if (StmtParseInfo) { - (*StmtParseInfo)[StatementId].CommandTagName = GetCommandName(node); + if (StmtParseInfo_) { + (*StmtParseInfo_)[StatementId_].CommandTagName = GetCommandName(node); } switch (NodeTag(node)) { case T_SelectStmt: @@ -594,7 +594,7 @@ public: Y_ABORT_UNLESS(rawValuesLists); size_t rows = ListLength(rawValuesLists); - if (rows == 0 || !Settings.AutoParametrizeEnabled || !Settings.AutoParametrizeValuesStmt) { + if (rows == 0 || !Settings_.AutoParametrizeEnabled || !Settings_.AutoParametrizeValuesStmt) { return false; } @@ -620,31 +620,31 @@ public: return true; } - TMaybe<TVector<TPgConst::Type>> InferColumnTypesForValuesStmt(const TVector<TPgConst>& values, size_t cols) { + TMaybe<TVector<TPgConst::EType>> InferColumnTypesForValuesStmt(const TVector<TPgConst>& values, size_t cols) { Y_ABORT_UNLESS((values.size() % cols == 0), "wrong amount of columns for auto param values vector"); - TVector<TMaybe<TPgConst::Type>> maybeColumnTypes(cols); + TVector<TMaybe<TPgConst::EType>> maybeColumnTypes(cols); for (size_t i = 0; i < values.size(); ++i) { const auto& value = values[i]; size_t col = i % cols; auto& columnType = maybeColumnTypes[col]; - if (!columnType || columnType.GetRef() == TPgConst::Type::unknown || columnType.GetRef() == TPgConst::Type::nil) { - columnType = value.type; + if (!columnType || columnType.GetRef() == TPgConst::EType::unknown || columnType.GetRef() == TPgConst::EType::nil) { + columnType = value.Type; continue; } // should we allow compatible types here? - if (columnType.GetRef() != value.type && columnType.GetRef() != TPgConst::Type::unknown && columnType.GetRef() != TPgConst::Type::nil) { + if (columnType.GetRef() != value.Type && columnType.GetRef() != TPgConst::EType::unknown && columnType.GetRef() != TPgConst::EType::nil) { YQL_CLOG(INFO, Default) << "Failed to auto parametrize: different types: " - << TPgConst::ToString(columnType.GetRef()) << " and " << TPgConst::ToString(value.type) + << TPgConst::ToString(columnType.GetRef()) << " and " << TPgConst::ToString(value.Type) << " in col " << col; return {}; } } - TVector<TPgConst::Type> columnTypes; + TVector<TPgConst::EType> columnTypes; for (auto& maybeColumnType: maybeColumnTypes) { if (maybeColumnType.Empty()) { YQL_CLOG(INFO, Default) << "Failed to auto parametrize: can't infer PgType for column"; @@ -656,28 +656,28 @@ public: } TString AddSimpleAutoParam(TPgConst&& valueNType) { - if (!State.AutoParamValues) { - Y_ENSURE(Settings.AutoParamBuilderFactory); - State.AutoParamValues = Settings.AutoParamBuilderFactory->MakeBuilder(); + if (!State_.AutoParamValues) { + Y_ENSURE(Settings_.AutoParamBuilderFactory); + State_.AutoParamValues = Settings_.AutoParamBuilderFactory->MakeBuilder(); } - auto nextName = TString(AUTO_PARAM_PREFIX) + ToString(State.AutoParamValues->Size()); - auto& type = State.AutoParamValues->Add(nextName); - type.Pg(TPgConst::ToString(valueNType.type)); + auto nextName = TString(AUTO_PARAM_PREFIX) + ToString(State_.AutoParamValues->Size()); + auto& type = State_.AutoParamValues->Add(nextName); + type.Pg(TPgConst::ToString(valueNType.Type)); auto& data = type.FinishType(); - data.Pg(valueNType.value); + data.Pg(valueNType.Value); data.FinishData(); return nextName; } - TString AddValuesAutoParam(TVector<TPgConst>&& values, TVector<TPgConst::Type>&& columnTypes) { - if (!State.AutoParamValues) { - Y_ENSURE(Settings.AutoParamBuilderFactory); - State.AutoParamValues = Settings.AutoParamBuilderFactory->MakeBuilder(); + TString AddValuesAutoParam(TVector<TPgConst>&& values, TVector<TPgConst::EType>&& columnTypes) { + if (!State_.AutoParamValues) { + Y_ENSURE(Settings_.AutoParamBuilderFactory); + State_.AutoParamValues = Settings_.AutoParamBuilderFactory->MakeBuilder(); } - auto nextName = TString(AUTO_PARAM_PREFIX) + ToString(State.AutoParamValues->Size()); - auto& type = State.AutoParamValues->Add(nextName); + auto nextName = TString(AUTO_PARAM_PREFIX) + ToString(State_.AutoParamValues->Size()); + auto& type = State_.AutoParamValues->Add(nextName); type.BeginList(); type.BeginTuple(); for (const auto& t : columnTypes) { @@ -696,7 +696,7 @@ public: data.BeginTuple(); for (size_t delta = 0; delta < cols; ++delta) { data.BeforeItem(); - data.Pg(values[idx + delta].value); + data.Pg(values[idx + delta].Value); data.AfterItem(); } @@ -709,7 +709,7 @@ public: return nextName; } - TAstNode* MakeValuesStmtAutoParam(TVector<TPgConst>&& values, TVector<TPgConst::Type>&& columnTypes) { + TAstNode* MakeValuesStmtAutoParam(TVector<TPgConst>&& values, TVector<TPgConst::EType>&& columnTypes) { TVector<TAstNode*> autoParamTupleType; autoParamTupleType.reserve(columnTypes.size()); autoParamTupleType.push_back(A("TupleType")); @@ -720,9 +720,9 @@ public: const auto paramType = L(A("ListType"), VL(autoParamTupleType)); const auto paramName = AddValuesAutoParam(std::move(values), std::move(columnTypes)); - State.Statements.push_back(L(A("declare"), A(paramName), paramType)); + State_.Statements.push_back(L(A("declare"), A(paramName), paramType)); - YQL_CLOG(INFO, Default) << "Successfully autoparametrized VALUES at" << State.Positions.back(); + YQL_CLOG(INFO, Default) << "Successfully autoparametrized VALUES at" << State_.Positions.back(); return A(paramName); } @@ -860,23 +860,23 @@ public: const SelectStmt* value, const TSelectStmtSettings& selectSettings ) { - if (Settings.Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW) { - if (HasSelectInLimitedView) { + if (Settings_.Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW) { + if (HasSelectInLimitedView_) { AddError("Expected exactly one SELECT in LIMITED_VIEW mode"); return nullptr; } - HasSelectInLimitedView = true; + HasSelectInLimitedView_ = true; } bool isValuesClauseOfInsertStmt = selectSettings.FillTargetColumns; - State.CTE.emplace_back(); - auto prevRecursiveView = State.CurrentRecursiveView; - State.CurrentRecursiveView = selectSettings.Recursive; + State_.CTE.emplace_back(); + auto prevRecursiveView = State_.CurrentRecursiveView; + State_.CurrentRecursiveView = selectSettings.Recursive; Y_DEFER { - State.CTE.pop_back(); - State.CurrentRecursiveView = prevRecursiveView; + State_.CTE.pop_back(); + State_.CurrentRecursiveView = prevRecursiveView; }; if (value->withClause) { @@ -1401,26 +1401,26 @@ public: return output; } - if (Settings.Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW) { - State.Statements.push_back(L(A("return"), L(A("Right!"), L(A("Cons!"), A("world"), output)))); - return State.Statements.back(); + if (Settings_.Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW) { + State_.Statements.push_back(L(A("return"), L(A("Right!"), L(A("Cons!"), A("world"), output)))); + return State_.Statements.back(); } auto resOptions = BuildResultOptions(!sort); - State.Statements.push_back(L(A("let"), A("output"), output)); - State.Statements.push_back(L(A("let"), A("result_sink"), L(A("DataSink"), QA(TString(NYql::ResultProviderName))))); - State.Statements.push_back(L(A("let"), A("world"), L(A("Write!"), + State_.Statements.push_back(L(A("let"), A("output"), output)); + State_.Statements.push_back(L(A("let"), A("result_sink"), L(A("DataSink"), QA(TString(NYql::ResultProviderName))))); + State_.Statements.push_back(L(A("let"), A("world"), L(A("Write!"), A("world"), A("result_sink"), L(A("Key")), A("output"), resOptions))); - State.Statements.push_back(L(A("let"), A("world"), L(A("Commit!"), + State_.Statements.push_back(L(A("let"), A("world"), L(A("Commit!"), A("world"), A("result_sink")))); - return State.Statements.back(); + return State_.Statements.back(); } TAstNode* BuildResultOptions(bool unordered) { TVector<TAstNode*> options; options.push_back(QL(QA("type"))); options.push_back(QL(QA("autoref"))); - if (unordered && UnorderedResult) { + if (unordered && UnorderedResult_) { options.push_back(QL(QA("unordered"))); } @@ -1475,7 +1475,7 @@ public: return false; } - auto& currentCTEs = State.CTE.back(); + auto& currentCTEs = State_.CTE.back(); if (currentCTEs.find(view.Name) != currentCTEs.end()) { AddError(TStringBuilder() << "CTE already exists: '" << view.Name << "'"); return false; @@ -1637,7 +1637,7 @@ public: const auto writeOptions = BuildWriteOptions(value, std::move(returningList)); - State.Statements.push_back(L( + State_.Statements.push_back(L( A("let"), A("world"), L( @@ -1650,7 +1650,7 @@ public: ) )); - return State.Statements.back(); + return State_.Statements.back(); } [[nodiscard]] @@ -1710,13 +1710,13 @@ public: L(A("Void")), QVL(options.data(), options.size()))) )); - State.Statements.push_back(L( + State_.Statements.push_back(L( A("let"), A("world"), writeUpdate )); - return State.Statements.back(); + return State_.Statements.back(); } [[nodiscard]] @@ -1774,14 +1774,14 @@ public: return nullptr; } - auto it = State.Views.find(view.Name); - if (it != State.Views.end() && !value->replace) { + auto it = State_.Views.find(view.Name); + if (it != State_.Views.end() && !value->replace) { AddError(TStringBuilder() << "View already exists: '" << view.Name << "'"); return nullptr; } - State.Views[view.Name] = view; - return State.Statements.back(); + State_.Views[view.Name] = view; + return State_.Statements.back(); } #pragma region CreateTable @@ -1800,8 +1800,8 @@ private: std::vector<TString> ColumnOrder; std::vector<TAstNode*> PrimaryKey; std::vector<std::vector<TAstNode*>> UniqConstr; - bool isTemporary; - bool ifNotExists; + bool IsTemporary; + bool IfNotExists; }; bool CheckConstraintSupported(const Constraint* pk) { @@ -2027,7 +2027,7 @@ private: TAstNode* BuildCreateTableOptions(TCreateTableCtx& ctx) { std::vector<TAstNode*> options; - TString mode = (ctx.ifNotExists) ? "create_if_not_exists" : "create"; + TString mode = (ctx.IfNotExists) ? "create_if_not_exists" : "create"; options.push_back(QL(QA("mode"), QA(mode))); options.push_back(QL(QA("columns"), BuildColumnsOptions(ctx))); if (!ctx.PrimaryKey.empty()) { @@ -2041,7 +2041,7 @@ private: QL(QA("dataColumns"), QL()), QL(QA("indexColumns"), columns)))); } - if (ctx.isTemporary) { + if (ctx.IsTemporary) { options.push_back(QL(QA("temporary"))); } return QVL(options.data(), options.size()); @@ -2050,8 +2050,8 @@ private: TAstNode* BuildWriteOptions(const InsertStmt* value, TVector<TAstNode*> returningList = {}) { std::vector<TAstNode*> options; - const auto insertMode = (ProviderToInsertModeMap.contains(Provider)) - ? ProviderToInsertModeMap.at(Provider) + const auto insertMode = (ProviderToInsertModeMap.contains(Provider_)) + ? ProviderToInsertModeMap.at(Provider_) : "append"; options.push_back(QL(QA("mode"), QA(insertMode))); @@ -2114,13 +2114,13 @@ public: TCreateTableCtx ctx {}; if (value->if_not_exists) { - ctx.ifNotExists = true; + ctx.IfNotExists = true; } const auto relPersistence = static_cast<NPg::ERelPersistence>(value->relation->relpersistence); switch (relPersistence) { case NPg::ERelPersistence::Temp: - ctx.isTemporary = true; + ctx.IsTemporary = true; break; case NPg::ERelPersistence::Unlogged: AddError("UNLOGGED tables not supported"); @@ -2158,12 +2158,12 @@ public: } } - State.Statements.push_back( + State_.Statements.push_back( L(A("let"), A("world"), L(A("Write!"), A("world"), sink, key, L(A("Void")), BuildCreateTableOptions(ctx)))); - return State.Statements.back(); + return State_.Statements.back(); } #pragma endregion CreateTable @@ -2215,18 +2215,18 @@ public: } const auto name = StrVal(nameNode); - auto it = State.Views.find(name); - if (!value->missing_ok && it == State.Views.end()) { + auto it = State_.Views.find(name); + if (!value->missing_ok && it == State_.Views.end()) { AddError(TStringBuilder() << "View not found: '" << name << "'"); return nullptr; } - if (it != State.Views.end()) { - State.Views.erase(it); + if (it != State_.Views.end()) { + State_.Views.erase(it); } } - return State.Statements.back(); + return State_.Statements.back(); } TAstNode* ParseDropTableStmt(const DropStmt* value, const TVector<const List*>& names) { @@ -2236,7 +2236,7 @@ public: } for (const auto& nameList : names) { - const auto [clusterName, tableName] = getSchemaAndObjectName(nameList); + const auto [clusterName, tableName] = GetSchemaAndObjectName(nameList); const auto [sink, key] = ParseQualifiedRelationName( /* catalogName */ "", clusterName, @@ -2249,7 +2249,7 @@ public: } TString mode = (value->missing_ok) ? "drop_if_exists" : "drop"; - State.Statements.push_back(L( + State_.Statements.push_back(L( A("let"), A("world"), L( @@ -2265,7 +2265,7 @@ public: )); } - return State.Statements.back(); + return State_.Statements.back(); } TAstNode* ParseDropIndexStmt(const DropStmt* value, const TVector<const List*>& names) { @@ -2280,7 +2280,7 @@ public: } for (const auto& nameList : names) { - const auto [clusterName, indexName] = getSchemaAndObjectName(nameList); + const auto [clusterName, indexName] = GetSchemaAndObjectName(nameList); const auto [sink, key] = ParseQualifiedPgObjectName( /* catalogName */ "", clusterName, @@ -2289,7 +2289,7 @@ public: ); TString missingOk = (value->missing_ok) ? "true" : "false"; - State.Statements.push_back(L( + State_.Statements.push_back(L( A("let"), A("world"), L( @@ -2306,7 +2306,7 @@ public: )); } - return State.Statements.back(); + return State_.Statements.back(); } TAstNode* ParseDropSequenceStmt(const DropStmt* value, const TVector<const List*>& names) { @@ -2321,7 +2321,7 @@ public: } for (const auto& nameList : names) { - const auto [clusterName, indexName] = getSchemaAndObjectName(nameList); + const auto [clusterName, indexName] = GetSchemaAndObjectName(nameList); const auto [sink, key] = ParseQualifiedPgObjectName( /* catalogName */ "", clusterName, @@ -2330,7 +2330,7 @@ public: ); TString mode = (value->missing_ok) ? "drop_if_exists" : "drop"; - State.Statements.push_back(L( + State_.Statements.push_back(L( A("let"), A("world"), L( @@ -2346,7 +2346,7 @@ public: )); } - return State.Statements.back(); + return State_.Statements.back(); } [[nodiscard]] @@ -2381,13 +2381,13 @@ public: AddError(TStringBuilder() << "VariableSetStmt, search path supports only 'information_schema', 'public', 'pg_catalog', '' but got: '" << rawStr << "'"); return nullptr; } - if (Settings.GUCSettings) { - Settings.GUCSettings->Set(name, rawStr, value->is_local); - if (StmtParseInfo) { - (*StmtParseInfo)[StatementId].KeepInCache = false; + if (Settings_.GUCSettings) { + Settings_.GUCSettings->Set(name, rawStr, value->is_local); + if (StmtParseInfo_) { + (*StmtParseInfo_)[StatementId_].KeepInCache = false; } } - return State.Statements.back(); + return State_.Statements.back(); } if (isSetConfig) { @@ -2407,10 +2407,10 @@ public: if (NodeTag(arg) == T_A_Const && (NodeTag(CAST_NODE(A_Const, arg)->val) == T_String)) { TString rawStr = StrVal(CAST_NODE(A_Const, arg)->val); if (name == "unorderedresult") { - UnorderedResult = (rawStr == "true"); + UnorderedResult_ = (rawStr == "true"); } else { auto configSource = L(A("DataSource"), QA(TString(NYql::ConfigProviderName))); - State.Statements.push_back(L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), configSource, + State_.Statements.push_back(L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), configSource, QA(TString(rawStr == "true" ? "" : "Disable") + TString((name == "useblocks") ? "UseBlocks" : "PgEmitAggApply"))))); } } else { @@ -2428,8 +2428,8 @@ public: auto rawStr = StrVal(CAST_NODE(A_Const, arg)->val); auto str = to_lower(TString(rawStr)); const bool isDqEngine = name == "dqengine"; - auto& enable = isDqEngine ? DqEngineEnabled : BlockEngineEnabled; - auto& force = isDqEngine ? DqEngineForce : BlockEngineForce; + auto& enable = isDqEngine ? DqEngineEnabled_ : BlockEngineEnabled_; + auto& force = isDqEngine ? DqEngineForce_ : BlockEngineForce_; if (str == "auto") { enable = true; force = false; @@ -2474,7 +2474,7 @@ public: auto rawStr = StrVal(CAST_NODE(A_Const, arg)->val); - State.Statements.push_back(L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), providerSource, + State_.Statements.push_back(L(A("let"), A("world"), L(A(TString(NYql::ConfigureName)), A("world"), providerSource, QA("Attr"), QAX(name.substr(dotPos + 1)), QAX(rawStr)))); } else { AddError(TStringBuilder() << "VariableSetStmt, expected string literal for " << value->name << " option"); @@ -2489,7 +2489,7 @@ public: auto arg = ListNodeNth(value->args, 0); if (NodeTag(arg) == T_A_Const && (NodeTag(CAST_NODE(A_Const, arg)->val) == T_String)) { auto rawStr = StrVal(CAST_NODE(A_Const, arg)->val); - TablePathPrefix = rawStr; + TablePathPrefix_ = rawStr; } else { AddError(TStringBuilder() << "VariableSetStmt, expected string literal for " << value->name << " option"); return nullptr; @@ -2509,7 +2509,7 @@ public: return nullptr; } - State.CostBasedOptimizer = str; + State_.CostBasedOptimizer = str; } else { AddError(TStringBuilder() << "VariableSetStmt, expected string literal for " << value->name << " option"); return nullptr; @@ -2523,7 +2523,7 @@ public: auto arg = ListNodeNth(value->args, 0); if (NodeTag(arg) == T_A_Const && (NodeTag(CAST_NODE(A_Const, arg)->val) == T_String)) { auto rawStr = StrVal(CAST_NODE(A_Const, arg)->val); - State.ApplicationName = rawStr; + State_.ApplicationName = rawStr; } else { AddError(TStringBuilder() << "VariableSetStmt, expected string literal for " << value->name << " option"); return nullptr; @@ -2533,7 +2533,7 @@ public: return nullptr; } - return State.Statements.back(); + return State_.Statements.back(); } [[nodiscard]] @@ -2612,7 +2612,7 @@ public: if (!returningList.empty()) { options.push_back(QL(QA("returning"), QVL(returningList.data(), returningList.size()))); } - State.Statements.push_back(L( + State_.Statements.push_back(L( A("let"), A("world"), L( @@ -2624,7 +2624,7 @@ public: QVL(options.data(), options.size()) ) )); - return State.Statements.back(); + return State_.Statements.back(); } TMaybe<TString> GetConfigVariable(const TString& varName) { @@ -2638,7 +2638,7 @@ public: return "on"; } if (varName == "search_path"){ - auto searchPath = Settings.GUCSettings->Get("search_path"); + auto searchPath = Settings_.GUCSettings->Get("search_path"); return searchPath ? *searchPath : "public"; } if (varName == "default_transaction_read_only"){ @@ -2693,15 +2693,15 @@ public: const auto selectOptions = QL(setItems, setOps); const auto output = L(A("PgSelect"), selectOptions); - State.Statements.push_back(L(A("let"), A("output"), output)); - State.Statements.push_back(L(A("let"), A("result_sink"), L(A("DataSink"), QA(TString(NYql::ResultProviderName))))); + State_.Statements.push_back(L(A("let"), A("output"), output)); + State_.Statements.push_back(L(A("let"), A("result_sink"), L(A("DataSink"), QA(TString(NYql::ResultProviderName))))); const auto resOptions = BuildResultOptions(true); - State.Statements.push_back(L(A("let"), A("world"), L(A("Write!"), + State_.Statements.push_back(L(A("let"), A("world"), L(A("Write!"), A("world"), A("result_sink"), L(A("Key")), A("output"), resOptions))); - State.Statements.push_back(L(A("let"), A("world"), L(A("Commit!"), + State_.Statements.push_back(L(A("let"), A("world"), L(A("Commit!"), A("world"), A("result_sink")))); - return State.Statements.back(); + return State_.Statements.back(); } [[nodiscard]] @@ -2714,17 +2714,17 @@ public: case TRANS_STMT_ROLLBACK_TO: return true; case TRANS_STMT_COMMIT: - State.Statements.push_back(L(A("let"), A("world"), L(A("CommitAll!"), + State_.Statements.push_back(L(A("let"), A("world"), L(A("CommitAll!"), A("world")))); - if (Settings.GUCSettings) { - Settings.GUCSettings->Commit(); + if (Settings_.GUCSettings) { + Settings_.GUCSettings->Commit(); } return true; case TRANS_STMT_ROLLBACK: - State.Statements.push_back(L(A("let"), A("world"), L(A("CommitAll!"), + State_.Statements.push_back(L(A("let"), A("world"), L(A("CommitAll!"), A("world"), QL(QL(QA("mode"), QA("rollback")))))); - if (Settings.GUCSettings) { - Settings.GUCSettings->RollBack(); + if (Settings_.GUCSettings) { + Settings_.GUCSettings->RollBack(); } return true; default: @@ -2791,7 +2791,7 @@ public: desc.emplace_back(QL(QA("dataColumns"), QVL(coverColumns->data(), coverColumns->size()))); desc.emplace_back(QL(QA("flags"), QVL(flags.data(), flags.size()))); - State.Statements.push_back(L( + State_.Statements.push_back(L( A("let"), A("world"), L( @@ -2807,7 +2807,7 @@ public: ) )); - return State.Statements.back(); + return State_.Statements.back(); } [[nodiscard]] @@ -2890,12 +2890,12 @@ public: options.push_back(QL(QA("owner_id"), QA(ToString(value->ownerId)))); } - State.Statements.push_back( + State_.Statements.push_back( L(A("let"), A("world"), L(A("Write!"), A("world"), sink, key, L(A("Void")), QVL(options.data(), options.size())))); - return State.Statements.back(); + return State_.Statements.back(); } [[nodiscard]] @@ -2964,12 +2964,12 @@ public: options.push_back(QL(QA("for_identity"))); } - State.Statements.push_back( + State_.Statements.push_back( L(A("let"), A("world"), L(A("Write!"), A("world"), sink, key, L(A("Void")), QVL(options.data(), options.size())))); - return State.Statements.back(); + return State_.Statements.back(); } [[nodiscard]] @@ -3060,12 +3060,12 @@ public: ) ); - State.Statements.push_back( + State_.Statements.push_back( L(A("let"), A("world"), L(A("Write!"), A("world"), sink, key, L(A("Void")), QVL(options.data(), options.size())))); - return State.Statements.back(); + return State_.Statements.back(); } TMaybe<TFromDesc> ParseFromClause(const Node* node) { @@ -3091,11 +3091,11 @@ public: auto colNamesTuple = QVL(colNamesNodes.data(), colNamesNodes.size()); if (p.InjectRead) { - auto label = "read" + ToString(State.ReadIndex); - State.Statements.push_back(L(A("let"), A(label), p.Source)); - State.Statements.push_back(L(A("let"), A("world"), L(A("Left!"), A(label)))); + auto label = "read" + ToString(State_.ReadIndex); + State_.Statements.push_back(L(A("let"), A(label), p.Source)); + State_.Statements.push_back(L(A("let"), A("world"), L(A("Left!"), A(label)))); fromList.push_back(QL(L(A("Right!"), A(label)), aliasNode, colNamesTuple)); - ++State.ReadIndex; + ++State_.ReadIndex; } else { auto source = p.Source; if (!source) { @@ -3127,12 +3127,12 @@ public: } if (schemaname == "public") { - return Settings.DefaultCluster;; + return Settings_.DefaultCluster;; } - if (schemaname == "" && Settings.GUCSettings) { - auto search_path = Settings.GUCSettings->Get("search_path"); + if (schemaname == "" && Settings_.GUCSettings) { + auto search_path = Settings_.GUCSettings->Get("search_path"); if (!search_path || *search_path == "public" || search_path->empty()) { - return Settings.DefaultCluster; + return Settings_.DefaultCluster; } return TString(*search_path); } @@ -3142,10 +3142,10 @@ public: TAstNode* BuildClusterSinkOrSourceExpression( bool isSink, const TStringBuf schemaname) { TString usedCluster(schemaname); - auto p = Settings.ClusterMapping.FindPtr(usedCluster); + auto p = Settings_.ClusterMapping.FindPtr(usedCluster); if (!p) { usedCluster = to_lower(usedCluster); - p = Settings.ClusterMapping.FindPtr(usedCluster); + p = Settings_.ClusterMapping.FindPtr(usedCluster); } if (!p) { @@ -3161,7 +3161,7 @@ public: ) { auto lowerCluster = to_lower(TString(cluster)); bool noPrefix = (lowerCluster == "pg_catalog" || lowerCluster == "information_schema"); - TString tableName = noPrefix ? to_lower(TString(relname)) : TablePathPrefix + relname; + TString tableName = noPrefix ? to_lower(TString(relname)) : TablePathPrefix_ + relname; return L(A("Key"), QL(QA(isScheme ? "tablescheme" : "table"), L(A("String"), QAX(std::move(tableName))))); } @@ -3188,7 +3188,7 @@ public: TAstNode* BuildPgObjectExpression(const TStringBuf objectName, const TStringBuf objectType) { bool noPrefix = (objectType == "pgIndex"); - TString name = noPrefix ? TString(objectName) : TablePathPrefix + TString(objectName); + TString name = noPrefix ? TString(objectName) : TablePathPrefix_ + TString(objectName); return L(A("Key"), QL(QA("pgObject"), L(A("String"), QAX(std::move(name))), L(A("String"), QA(objectType)) @@ -3231,20 +3231,20 @@ public: const TView* view = nullptr; if (StrLength(value->schemaname) == 0) { - for (auto rit = State.CTE.rbegin(); rit != State.CTE.rend(); ++rit) { + for (auto rit = State_.CTE.rbegin(); rit != State_.CTE.rend(); ++rit) { auto cteIt = rit->find(value->relname); if (cteIt != rit->end()) { view = &cteIt->second; break; } } - if (!view && State.CurrentRecursiveView && State.CurrentRecursiveView->Name == value->relname) { - view = State.CurrentRecursiveView; + if (!view && State_.CurrentRecursiveView && State_.CurrentRecursiveView->Name == value->relname) { + view = State_.CurrentRecursiveView; } if (!view) { - auto viewIt = State.Views.find(value->relname); - if (viewIt != State.Views.end()) { + auto viewIt = State_.Views.find(value->relname); + if (viewIt != State_.Views.end()) { view = &viewIt->second; } } @@ -3267,7 +3267,7 @@ public: TString schemaname = value->schemaname; if (!StrCompare(value->schemaname, "bindings")) { bool isBinding = false; - switch (Settings.BindingsMode) { + switch (Settings_.BindingsMode) { case NSQLTranslation::EBindingsMode::DISABLED: AddError("Please remove 'bindings.' from your query, the support for this syntax has ended"); return {}; @@ -3278,7 +3278,7 @@ public: AddWarning(TIssuesIds::YQL_DEPRECATED_BINDINGS, "Please remove 'bindings.' from your query, the support for this syntax will be dropped soon"); [[fallthrough]]; case NSQLTranslation::EBindingsMode::DROP: - schemaname = Settings.DefaultCluster; + schemaname = Settings_.DefaultCluster; break; } @@ -3299,7 +3299,7 @@ public: if (source == nullptr || key == nullptr) { return {}; } - const auto readExpr = this->SqlProcArgsCount ? + const auto readExpr = this->SqlProcArgsCount_ ? L(A("Cons!"), A("world"), L( @@ -3333,7 +3333,7 @@ public: const TString binding = value->relname; NSQLTranslation::TBindingInfo bindingInfo; - if (const auto& error = ExtractBindingInfo(Settings, binding, bindingInfo)) { + if (const auto& error = ExtractBindingInfo(Settings_, binding, bindingInfo)) { AddError(error); return nullptr; } @@ -3566,14 +3566,14 @@ public: } TAstNode* ParseParamRefExpr(const ParamRef* value) { - if (SqlProcArgsCount && (value->number < 1 || (ui32)value->number > *SqlProcArgsCount)) { + if (SqlProcArgsCount_ && (value->number < 1 || (ui32)value->number > *SqlProcArgsCount_)) { AddError(TStringBuilder() << "Unexpected parameter number: " << value->number); return nullptr; } const auto varName = PREPARED_PARAM_PREFIX + ToString(value->number); - if (!State.ParamNameToPgTypeName.contains(varName)) { - State.ParamNameToPgTypeName[varName] = DEFAULT_PARAM_TYPE; + if (!State_.ParamNameToPgTypeName.contains(varName)) { + State_.ParamNameToPgTypeName[varName] = DEFAULT_PARAM_TYPE; } return A(varName); } @@ -3587,8 +3587,8 @@ public: return nullptr; } - State.Statements.push_back(L(A("return"), expr)); - return State.Statements.back(); + State_.Statements.push_back(L(A("return"), expr)); + return State_.Statements.back(); } TAstNode* ParseSQLValueFunction(const SQLValueFunction* value) { @@ -3621,13 +3621,13 @@ public: case SVFOP_CURRENT_USER: case SVFOP_CURRENT_ROLE: case SVFOP_USER: { - auto user = Settings.GUCSettings->Get("ydb_user"); + auto user = Settings_.GUCSettings->Get("ydb_user"); return L(A("PgConst"), user ? QAX(TString(*user)) : QA("postgres"), L(A("PgType"), QA("name"))); } case SVFOP_CURRENT_CATALOG: { std::optional<TString> database; - if (Settings.GUCSettings) { - database = Settings.GUCSettings->Get("ydb_database"); + if (Settings_.GUCSettings) { + database = Settings_.GUCSettings->Get("ydb_database"); } return L(A("PgConst"), QA(database ? *database : "postgres"), L(A("PgType"), QA("name"))); @@ -3642,8 +3642,8 @@ public: TAstNode* GetCurrentSchema() { std::optional<TString> searchPath; - if (Settings.GUCSettings) { - searchPath = Settings.GUCSettings->Get("search_path"); + if (Settings_.GUCSettings) { + searchPath = Settings_.GUCSettings->Get("search_path"); } return L(A("PgConst"), QA(searchPath ? *searchPath : "public"), L(A("PgType"), QA("name"))); @@ -3763,9 +3763,9 @@ public: TAstNode* AutoParametrizeConst(TPgConst&& valueNType, TAstNode* pgType) { const auto& paramName = AddSimpleAutoParam(std::move(valueNType)); - State.Statements.push_back(L(A("declare"), A(paramName), pgType)); + State_.Statements.push_back(L(A("declare"), A(paramName), pgType)); - YQL_CLOG(INFO, Default) << "Autoparametrized " << paramName << " at " << State.Positions.back(); + YQL_CLOG(INFO, Default) << "Autoparametrized " << paramName << " at " << State_.Positions.back(); return A(paramName); } @@ -3779,10 +3779,10 @@ public: } TAstNode* pgTypeNode = !value->isnull - ? L(A("PgType"), QA(TPgConst::ToString(valueNType->type))) + ? L(A("PgType"), QA(TPgConst::ToString(valueNType->Type))) : L(A("PgType"), QA("unknown")); - if (Settings.AutoParametrizeEnabled && settings.AutoParametrizeEnabled) { + if (Settings_.AutoParametrizeEnabled && settings.AutoParametrizeEnabled) { return AutoParametrizeConst(std::move(valueNType.GetRef()), pgTypeNode); } @@ -3793,12 +3793,12 @@ public: switch (NodeTag(val)) { case T_Integer: case T_Float: { - return L(A("PgConst"), QA(valueNType->value.GetRef()), pgTypeNode); + return L(A("PgConst"), QA(valueNType->Value.GetRef()), pgTypeNode); } case T_Boolean: case T_String: case T_BitString: { - return L(A("PgConst"), QAX(valueNType->value.GetRef()), pgTypeNode); + return L(A("PgConst"), QAX(valueNType->Value.GetRef()), pgTypeNode); } default: { NodeNotImplemented((const Node*)value); @@ -4729,7 +4729,7 @@ public: switch (value->sortby_dir) { case SORTBY_DEFAULT: case SORTBY_ASC: - if (Settings.PgSortNulls) { + if (Settings_.PgSortNulls) { nullsFirst = false; } break; @@ -4889,7 +4889,7 @@ public: auto sublink = CAST_NODE(SubLink, value->rexpr); auto subselect = CAST_NODE(SelectStmt, sublink->subselect); if (subselect->withClause && subselect->withClause->recursive) { - if (State.ApplicationName && State.ApplicationName->StartsWith("pgAdmin")) { + if (State_.ApplicationName && State_.ApplicationName->StartsWith("pgAdmin")) { AddWarning(TIssuesIds::PG_COMPAT, "AEXPR_OP_ANY forced to false"); return L(A("PgConst"), QA("false"), L(A("PgType"), QA("bool"))); } @@ -5105,9 +5105,9 @@ public: } void AddVariableDeclarations() { - for (const auto& [varName, typeName] : State.ParamNameToPgTypeName) { + for (const auto& [varName, typeName] : State_.ParamNameToPgTypeName) { const auto pgType = L(A("PgType"), QA(typeName)); - State.Statements.push_back(L(A("declare"), A(varName), pgType)); + State_.Statements.push_back(L(A("declare"), A(varName), pgType)); } } @@ -5132,11 +5132,11 @@ public: } TAstNode* VL(TAstNode** nodes, ui32 size, TPosition pos = {}) { - return TAstNode::NewList(pos.Row ? pos : State.Positions.back(), nodes, size, *AstParseResults[StatementId].Pool); + return TAstNode::NewList(pos.Row ? pos : State_.Positions.back(), nodes, size, *AstParseResults_[StatementId_].Pool); } TAstNode* VL(TArrayRef<TAstNode*> nodes, TPosition pos = {}) { - return TAstNode::NewList(pos.Row ? pos : State.Positions.back(), nodes.data(), nodes.size(), *AstParseResults[StatementId].Pool); + return TAstNode::NewList(pos.Row ? pos : State_.Positions.back(), nodes.data(), nodes.size(), *AstParseResults_[StatementId_].Pool); } TAstNode* QVL(TAstNode** nodes, ui32 size, TPosition pos = {}) { @@ -5152,11 +5152,11 @@ public: } TAstNode* A(const TStringBuf str, TPosition pos = {}, ui32 flags = 0) { - return TAstNode::NewAtom(pos.Row ? pos : State.Positions.back(), str, *AstParseResults[StatementId].Pool, flags); + return TAstNode::NewAtom(pos.Row ? pos : State_.Positions.back(), str, *AstParseResults_[StatementId_].Pool, flags); } TAstNode* AX(const TString& str, TPosition pos = {}) { - return A(str, pos.Row ? pos : State.Positions.back(), TNodeFlags::ArbitraryContent); + return A(str, pos.Row ? pos : State_.Positions.back(), TNodeFlags::ArbitraryContent); } TAstNode* Q(TAstNode* node, TPosition pos = {}) { @@ -5175,7 +5175,7 @@ public: TAstNode* L(TNodes... nodes) { TLState state; LImpl(state, nodes...); - return TAstNode::NewList(state.Position.Row ? state.Position : State.Positions.back(), state.Nodes.data(), state.Nodes.size(), *AstParseResults[StatementId].Pool); + return TAstNode::NewList(state.Position.Row ? state.Position : State_.Positions.back(), state.Nodes.data(), state.Nodes.size(), *AstParseResults_[StatementId_].Pool); } template <typename... TNodes> @@ -5199,11 +5199,11 @@ public: private: void AddError(const TString& value) { - AstParseResults[StatementId].Issues.AddIssue(TIssue(State.Positions.back(), value)); + AstParseResults_[StatementId_].Issues.AddIssue(TIssue(State_.Positions.back(), value)); } void AddWarning(int code, const TString& value) { - AstParseResults[StatementId].Issues.AddIssue(TIssue(State.Positions.back(), value).SetCode(code, ESeverity::TSeverityIds_ESeverityId_S_WARNING)); + AstParseResults_[StatementId_].Issues.AddIssue(TIssue(State_.Positions.back(), value).SetCode(code, ESeverity::TSeverityIds_ESeverityId_S_WARNING)); } struct TLState { @@ -5234,19 +5234,19 @@ private: void PushPosition(int location) { if (location == -1) { - State.Positions.push_back(State.Positions.back()); + State_.Positions.push_back(State_.Positions.back()); return; } - State.Positions.push_back(Location2Position(location)); + State_.Positions.push_back(Location2Position(location)); }; void PopPosition() { - State.Positions.pop_back(); + State_.Positions.pop_back(); } NYql::TPosition Location2Position(int location) const { - if (!QuerySize) { + if (!QuerySize_) { return NYql::TPosition(0, 0); } @@ -5254,36 +5254,36 @@ private: return NYql::TPosition(0, 0); } - auto it = LowerBound(RowStarts.begin(), RowStarts.end(), Min((ui32)location, QuerySize)); - Y_ENSURE(it != RowStarts.end()); + auto it = LowerBound(RowStarts_.begin(), RowStarts_.end(), Min((ui32)location, QuerySize_)); + Y_ENSURE(it != RowStarts_.end()); if (*it == (ui32)location) { - auto row = 1 + it - RowStarts.begin(); + auto row = 1 + it - RowStarts_.begin(); auto column = 1; return NYql::TPosition(column, row); } else { - Y_ENSURE(it != RowStarts.begin()); - auto row = it - RowStarts.begin(); + Y_ENSURE(it != RowStarts_.begin()); + auto row = it - RowStarts_.begin(); auto column = 1 + location - *(it - 1); return NYql::TPosition(column, row); } } void ScanRows(const TString& query) { - QuerySize = query.size(); - RowStarts.push_back(0); + QuerySize_ = query.size(); + RowStarts_.push_back(0); TPosition position(0, 1); TTextWalker walker(position, true); auto prevRow = position.Row; for (ui32 i = 0; i < query.size(); ++i) { walker.Advance(query[i]); while (position.Row != prevRow) { - RowStarts.push_back(i); + RowStarts_.push_back(i); ++prevRow; } } - RowStarts.push_back(QuerySize); + RowStarts_.push_back(QuerySize_); } TAstNode* MakeProjectionRef(const TStringBuf& scope, const A_Const* aConst) { @@ -5298,25 +5298,25 @@ private: } private: - TVector<TAstParseResult>& AstParseResults; - NSQLTranslation::TTranslationSettings Settings; - bool DqEngineEnabled = false; - bool DqEngineForce = false; - bool BlockEngineEnabled = false; - bool BlockEngineForce = false; - bool UnorderedResult = false; - TString TablePathPrefix; - TVector<ui32> RowStarts; - ui32 QuerySize; - TString Provider; + TVector<TAstParseResult>& AstParseResults_; + NSQLTranslation::TTranslationSettings Settings_; + bool DqEngineEnabled_ = false; + bool DqEngineForce_ = false; + bool BlockEngineEnabled_ = false; + bool BlockEngineForce_ = false; + bool UnorderedResult_ = false; + TString TablePathPrefix_; + TVector<ui32> RowStarts_; + ui32 QuerySize_; + TString Provider_; static const THashMap<TStringBuf, TString> ProviderToInsertModeMap; - TState State; - ui32 StatementId = 0; - TVector<TStmtParseInfo>* StmtParseInfo; - bool PerStatementResult; - TMaybe<ui32> SqlProcArgsCount; - bool HasSelectInLimitedView = false; + TState State_; + ui32 StatementId_ = 0; + TVector<TStmtParseInfo>* StmtParseInfo_; + bool PerStatementResult_; + TMaybe<ui32> SqlProcArgsCount_; + bool HasSelectInLimitedView_ = false; }; const THashMap<TStringBuf, TString> TConverter::ProviderToInsertModeMap = { @@ -5469,7 +5469,7 @@ bool ParseCreateFunctionStmtImpl(const CreateFunctionStmt* value, ui32 extension return false; } - value = pgConst->value; + value = pgConst->Value; } else { Y_ENSURE(desc.DefaultArgs.empty()); } @@ -5536,8 +5536,8 @@ bool ParseCreateFunctionStmtImpl(const CreateFunctionStmt* value, ui32 extension class TExtensionHandler : public IPGParseEvents { public: TExtensionHandler(ui32 extensionIndex, NYql::NPg::IExtensionSqlBuilder& builder) - : ExtensionIndex(extensionIndex) - , Builder(builder) + : ExtensionIndex_(extensionIndex) + , Builder_(builder) {} void OnResult(const List* raw) final { @@ -5595,7 +5595,7 @@ public: auto nameNode = ListNodeNth(value->defnames, 0); auto name = to_lower(TString(StrVal(nameNode))); - Builder.PrepareType(ExtensionIndex, name); + Builder_.PrepareType(ExtensionIndex_, name); NPg::TTypeDesc desc = NPg::LookupType(name); @@ -5737,7 +5737,7 @@ public: desc.PassByValue = true; } - Builder.UpdateType(desc); + Builder_.UpdateType(desc); return true; } @@ -5819,25 +5819,25 @@ public: args.push_back(rightType); } - Builder.PrepareOper(ExtensionIndex, name, args); + Builder_.PrepareOper(ExtensionIndex_, name, args); auto desc = NPg::LookupOper(name, args); if (!commutator.empty()) { TVector<ui32> commArgs; commArgs.push_back(rightType); commArgs.push_back(leftType); - Builder.PrepareOper(ExtensionIndex, commutator, commArgs); + Builder_.PrepareOper(ExtensionIndex_, commutator, commArgs); desc.ComId = NPg::LookupOper(commutator, commArgs).OperId; } if (!negator.empty()) { - Builder.PrepareOper(ExtensionIndex, negator, args); + Builder_.PrepareOper(ExtensionIndex_, negator, args); desc.NegateId = NPg::LookupOper(negator, args).OperId; } const auto& procDesc = NPg::LookupProc(procedureName, args); desc.ProcId = procDesc.ProcId; desc.ResultType = procDesc.ResultType; - Builder.UpdateOper(desc); + Builder_.UpdateOper(desc); return true; } @@ -5942,7 +5942,7 @@ public: NPg::TAggregateDesc desc; desc.Name = name; - desc.ExtensionIndex = ExtensionIndex; + desc.ExtensionIndex = ExtensionIndex_; if (ListLength(value->args) != 2) { return false; } @@ -5972,7 +5972,7 @@ public: return false; } - Builder.PrepareType(ExtensionIndex, argTypeStr); + Builder_.PrepareType(ExtensionIndex_, argTypeStr); auto argTypeId = NPg::LookupType(argTypeStr).TypeId; desc.ArgTypes.push_back(argTypeId); } @@ -6003,18 +6003,18 @@ public: desc.DeserializeFuncId = procDesc.ProcId; } - Builder.CreateAggregate(desc); + Builder_.CreateAggregate(desc); return true; } [[nodiscard]] bool ParseCreateFunctionStmt(const CreateFunctionStmt* value) { NYql::NPg::TProcDesc desc; - if (!ParseCreateFunctionStmtImpl(value, ExtensionIndex, &Builder, desc)) { + if (!ParseCreateFunctionStmtImpl(value, ExtensionIndex_, &Builder_, desc)) { return false; } - Builder.CreateProc(desc); + Builder_.CreateProc(desc); return true; } @@ -6024,7 +6024,7 @@ public: table.Schema = "pg_catalog"; table.Name = value->relation->relname; table.Kind = NPg::ERelKind::Relation; - table.ExtensionIndex = ExtensionIndex; + table.ExtensionIndex = ExtensionIndex_; TVector<NPg::TColumnInfo> columns; for (int i = 0; i < ListLength(value->tableElts); ++i) { auto node = ListNodeNth(value->tableElts, i); @@ -6037,12 +6037,12 @@ public: column.Schema = table.Schema; column.TableName = table.Name; column.Name = columnDef->colname; - column.ExtensionIndex = ExtensionIndex; + column.ExtensionIndex = ExtensionIndex_; Y_ENSURE(ParseTypeName(columnDef->typeName, column.UdtType)); columns.push_back(column); } - Builder.CreateTable(table, columns); + Builder_.CreateTable(table, columns); return true; } @@ -6077,11 +6077,11 @@ public: if (!pgConst) { return false; } - data.push_back(pgConst->value); + data.push_back(pgConst->Value); } } - Builder.InsertValues(NPg::TTableInfoKey{"pg_catalog", tableName}, colNames, data); + Builder_.InsertValues(NPg::TTableInfoKey{"pg_catalog", tableName}, colNames, data); return true; } @@ -6098,7 +6098,7 @@ public: } NPg::TCastDesc desc; - desc.ExtensionIndex = ExtensionIndex; + desc.ExtensionIndex = ExtensionIndex_; desc.SourceId = NPg::LookupType(sourceType).TypeId; desc.TargetId = NPg::LookupType(targetType).TypeId; if (value->func) { @@ -6143,7 +6143,7 @@ public: return false; } - Builder.CreateCast(desc); + Builder_.CreateCast(desc); return true; } @@ -6184,7 +6184,7 @@ public: auto typeId = NPg::LookupType(dataType).TypeId; NPg::TOpClassDesc desc; - desc.ExtensionIndex = ExtensionIndex; + desc.ExtensionIndex = ExtensionIndex_; desc.Method = method; desc.TypeId = typeId; desc.Name = opClassName; @@ -6209,7 +6209,7 @@ public: TString funcName = StrVal(ListNodeNth(node->name->objname, 0)); if (node->itemtype == OPCLASS_ITEM_OPERATOR) { NPg::TAmOpDesc amOpDesc; - amOpDesc.ExtensionIndex = ExtensionIndex; + amOpDesc.ExtensionIndex = ExtensionIndex_; amOpDesc.Family = familyName; amOpDesc.Strategy = node->number; amOpDesc.LeftType = typeId; @@ -6218,7 +6218,7 @@ public: ops.push_back(amOpDesc); } else { NPg::TAmProcDesc amProcDesc; - amProcDesc.ExtensionIndex = ExtensionIndex; + amProcDesc.ExtensionIndex = ExtensionIndex_; amProcDesc.Family = familyName; amProcDesc.ProcNum = node->number; amProcDesc.LeftType = typeId; @@ -6243,13 +6243,13 @@ public: } } - Builder.CreateOpClass(desc, ops, procs); + Builder_.CreateOpClass(desc, ops, procs); return true; } private: - const ui32 ExtensionIndex; - NYql::NPg::IExtensionSqlBuilder& Builder; + const ui32 ExtensionIndex_; + NYql::NPg::IExtensionSqlBuilder& Builder_; }; class TExtensionSqlParser : public NYql::NPg::IExtensionSqlParser { @@ -6267,7 +6267,7 @@ public: class TSystemFunctionsHandler : public IPGParseEvents { public: TSystemFunctionsHandler(TVector<NPg::TProcDesc>& procs) - : Procs(procs) + : Procs_(procs) {} void OnResult(const List* raw) final { @@ -6300,12 +6300,12 @@ public: return false; } - Procs.push_back(desc); + Procs_.push_back(desc); return true; } private: - TVector<NPg::TProcDesc>& Procs; + TVector<NPg::TProcDesc>& Procs_; }; class TSystemFunctionsParser : public NYql::NPg::ISystemFunctionsParser { @@ -6319,19 +6319,19 @@ public: class TSqlLanguageParser : public NYql::NPg::ISqlLanguageParser, public IPGParseEvents { public: TSqlLanguageParser() { - Settings.ClusterMapping["pg_catalog"] = TString(PgProviderName); - Settings.Mode = NSQLTranslation::ESqlMode::LIMITED_VIEW; + Settings_.ClusterMapping["pg_catalog"] = TString(PgProviderName); + Settings_.Mode = NSQLTranslation::ESqlMode::LIMITED_VIEW; } void Parse(const TString& sql, NPg::TProcDesc& proc) final { - Y_ENSURE(!FreezeGuard.Defined()); - CurrentProc = &proc; + Y_ENSURE(!FreezeGuard_.Defined()); + CurrentProc_ = &proc; NYql::PGParse(sql, *this); - CurrentProc = nullptr; + CurrentProc_ = nullptr; } void ParseNode(const Node* stmt, NPg::TProcDesc& proc) final { - Y_ENSURE(!FreezeGuard.Defined()); + Y_ENSURE(!FreezeGuard_.Defined()); proc.ExprNode = nullptr; if (proc.VariadicType) { // Can't be expressed as usual lambda @@ -6341,7 +6341,7 @@ public: TVector<NYql::TAstParseResult> results(1); results[0].Pool = std::make_unique<TMemoryPool>(4096); TVector<TStmtParseInfo> stmtParseInfos(1); - TConverter converter(results, Settings, "", &stmtParseInfos, false, proc.ArgTypes.size()); + TConverter converter(results, Settings_, "", &stmtParseInfos, false, proc.ArgTypes.size()); converter.PrepareStatements(); TAstNode* root = nullptr; switch (NodeTag(stmt)) { @@ -6373,42 +6373,42 @@ public: root = converter.MakeLambda(args, root); auto program = converter.L(converter.L(converter.A("return"), root)); TExprNode::TPtr graph; - Ctx.IssueManager.Reset(); - if (!CompileExpr(*program, graph, Ctx, nullptr, nullptr, false, Max<ui32>(), 1)) { - Cerr << "Can't compile SQL for function: " << proc.Name << ", " << Ctx.IssueManager.GetIssues().ToString(); + Ctx_.IssueManager.Reset(); + if (!CompileExpr(*program, graph, Ctx_, nullptr, nullptr, false, Max<ui32>(), 1)) { + Cerr << "Can't compile SQL for function: " << proc.Name << ", " << Ctx_.IssueManager.GetIssues().ToString(); return; } - SavedNodes.push_back(graph); + SavedNodes_.push_back(graph); proc.ExprNode = graph.Get(); } void Freeze() final { - Y_ENSURE(!FreezeGuard.Defined()); - FreezeGuard.ConstructInPlace(Ctx); + Y_ENSURE(!FreezeGuard_.Defined()); + FreezeGuard_.ConstructInPlace(Ctx_); } TExprContext& GetContext() final { - Y_ENSURE(FreezeGuard.Defined()); - return Ctx; + Y_ENSURE(FreezeGuard_.Defined()); + return Ctx_; } void OnResult(const List* raw) final { if (ListLength(raw) == 1) { - ParseNode(LIST_CAST_NTH(RawStmt, raw, 0)->stmt, *CurrentProc); + ParseNode(LIST_CAST_NTH(RawStmt, raw, 0)->stmt, *CurrentProc_); } } void OnError(const TIssue& issue) final { - throw yexception() << "Can't parse SQL for function: " << CurrentProc->Name << ", " << issue.ToString(); + throw yexception() << "Can't parse SQL for function: " << CurrentProc_->Name << ", " << issue.ToString(); } private: - NSQLTranslation::TTranslationSettings Settings; - TExprContext Ctx; - TVector<TExprNode::TPtr> SavedNodes; - TMaybe<TExprContext::TFreezeGuard> FreezeGuard; - NPg::TProcDesc* CurrentProc = nullptr; + NSQLTranslation::TTranslationSettings Settings_; + TExprContext Ctx_; + TVector<TExprNode::TPtr> SavedNodes_; + TMaybe<TExprContext::TFreezeGuard> FreezeGuard_; + NPg::TProcDesc* CurrentProc_ = nullptr; }; std::unique_ptr<NPg::IExtensionSqlParser> CreateExtensionSqlParser() { diff --git a/yql/essentials/sql/v0/aggregation.cpp b/yql/essentials/sql/v0/aggregation.cpp index 558648cd641..f62c51946d0 100644 --- a/yql/essentials/sql/v0/aggregation.cpp +++ b/yql/essentials/sql/v0/aggregation.cpp @@ -16,35 +16,35 @@ namespace NSQLTranslationV0 { class TAggregationFactory : public IAggregation { public: TAggregationFactory(TPosition pos, const TString& name, const TString& func, EAggregateMode aggMode, bool multi = false) - : IAggregation(pos, name, func, aggMode), Factory(!func.empty() ? - BuildBind(Pos, aggMode == EAggregateMode::OverWindow ? "window_module" : "aggregate_module", func) : nullptr), - DynamicFactory(!Factory), Multi(multi) + : IAggregation(pos, name, func, aggMode), Factory_(!func.empty() ? + BuildBind(Pos_, aggMode == EAggregateMode::OverWindow ? "window_module" : "aggregate_module", func) : nullptr), + DynamicFactory_(!Factory_), Multi_(multi) { - if (!Factory) { - FakeSource = BuildFakeSource(pos); + if (!Factory_) { + FakeSource_ = BuildFakeSource(pos); } } protected: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) override { - ui32 expectedArgs = !Factory ? 2 : (isFactory ? 0 : 1); - if (!Factory) { + ui32 expectedArgs = !Factory_ ? 2 : (isFactory ? 0 : 1); + if (!Factory_) { YQL_ENSURE(!isFactory); } if (expectedArgs != exprs.size()) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires exactly " << expectedArgs << " argument(s), given: " << exprs.size(); return false; } - if (!Factory) { - Factory = exprs[1]; + if (!Factory_) { + Factory_ = exprs[1]; } if (!isFactory) { - Expr = exprs.front(); - Name = src->MakeLocalName(Name); + Expr_ = exprs.front(); + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -52,85 +52,85 @@ protected: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); } return true; } TNodePtr AggregationTraitsFactory() const override { - return Factory; + return Factory_; } TNodePtr GetApply(const TNodePtr& type) const override { - if (!Multi) { - return Y("Apply", Factory, (DynamicFactory ? Y("ListItemType", type) : type), - BuildLambda(Pos, Y("row"), Y("EnsurePersistable", Expr))); + if (!Multi_) { + return Y("Apply", Factory_, (DynamicFactory_ ? Y("ListItemType", type) : type), + BuildLambda(Pos_, Y("row"), Y("EnsurePersistable", Expr_))); } return Y("MultiAggregate", Y("ListItemType", type), - BuildLambda(Pos, Y("row"), Y("EnsurePersistable", Expr)), - Factory); + BuildLambda(Pos_, Y("row"), Y("EnsurePersistable", Expr_)), + Factory_); } bool DoInit(TContext& ctx, ISource* src) override { - if (!Expr) { + if (!Expr_) { return true; } ctx.PushBlockShortcuts(); - if (!Expr->Init(ctx, src)) { + if (!Expr_->Init(ctx, src)) { return false; } - if (Expr->IsAggregated() && !Expr->IsAggregationKey() && !IsOverWindow()) { - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden for non window functions"; + if (Expr_->IsAggregated() && !Expr_->IsAggregationKey() && !IsOverWindow()) { + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden for non window functions"; return false; } - if (AggMode == EAggregateMode::Distinct) { - const auto column = Expr->GetColumnName(); + if (AggMode_ == EAggregateMode::Distinct) { + const auto column = Expr_->GetColumnName(); if (!column) { - ctx.Error(Expr->GetPos()) << "DISTINCT qualifier may only be used with column references"; + ctx.Error(Expr_->GetPos()) << "DISTINCT qualifier may only be used with column references"; return false; } - DistinctKey = *column; + DistinctKey_ = *column; YQL_ENSURE(src); if (src->GetJoin()) { - const auto sourcePtr = Expr->GetSourceName(); + const auto sourcePtr = Expr_->GetSourceName(); if (!sourcePtr || !*sourcePtr) { - if (!src->IsGroupByColumn(DistinctKey)) { - ctx.Error(Expr->GetPos()) << ErrorDistinctWithoutCorrelation(DistinctKey); + if (!src->IsGroupByColumn(DistinctKey_)) { + ctx.Error(Expr_->GetPos()) << ErrorDistinctWithoutCorrelation(DistinctKey_); return false; } } else { - DistinctKey = DotJoin(*sourcePtr, DistinctKey); + DistinctKey_ = DotJoin(*sourcePtr, DistinctKey_); } } - if (src->IsGroupByColumn(DistinctKey)) { - ctx.Error(Expr->GetPos()) << ErrorDistinctByGroupKey(DistinctKey); + if (src->IsGroupByColumn(DistinctKey_)) { + ctx.Error(Expr_->GetPos()) << ErrorDistinctByGroupKey(DistinctKey_); return false; } - Expr = AstNode("row"); + Expr_ = AstNode("row"); ctx.PopBlockShortcuts(); } else { - Expr = ctx.GroundBlockShortcutsForExpr(Expr); + Expr_ = ctx.GroundBlockShortcutsForExpr(Expr_); } - if (FakeSource) { + if (FakeSource_) { ctx.PushBlockShortcuts(); - if (!Factory->Init(ctx, FakeSource.Get())) { + if (!Factory_->Init(ctx, FakeSource_.Get())) { return false; } - Factory = ctx.GroundBlockShortcutsForExpr(Factory); - if (AggMode == EAggregateMode::OverWindow) { - Factory = BuildLambda(Pos, Y("type", "extractor"), Y("block", Q(Y( - Y("let", "x", Y("Apply", Factory, "type", "extractor")), + Factory_ = ctx.GroundBlockShortcutsForExpr(Factory_); + if (AggMode_ == EAggregateMode::OverWindow) { + Factory_ = BuildLambda(Pos_, Y("type", "extractor"), Y("block", Q(Y( + Y("let", "x", Y("Apply", Factory_, "type", "extractor")), Y("return", Y("WindowTraits", Y("NthArg", Q("0"), "x"), Y("NthArg", Q("1"), "x"), Y("NthArg", Q("2"), "x"), - BuildLambda(Pos, Y("value", "state"), Y("Void")), + BuildLambda(Pos_, Y("value", "state"), Y("Void")), Y("NthArg", Q("6"), "x"), Y("NthArg", Q("7"), "x") )) @@ -141,11 +141,11 @@ protected: return true; } - TNodePtr Factory; - TSourcePtr FakeSource; - TNodePtr Expr; - bool DynamicFactory; - bool Multi; + TNodePtr Factory_; + TSourcePtr FakeSource_; + TNodePtr Expr_; + bool DynamicFactory_; + bool Multi_; }; class TAggregationFactoryImpl final : public TAggregationFactory { @@ -156,7 +156,7 @@ public: private: TNodePtr DoClone() const final { - return new TAggregationFactoryImpl(Pos, Name, Func, AggMode, Multi); + return new TAggregationFactoryImpl(Pos_, Name_, Func_, AggMode_, Multi_); } }; @@ -169,7 +169,7 @@ public: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) override { Y_UNUSED(isFactory); if (!IsOverWindow()) { - ctx.Error(Pos) << "Expected aggregation function: " << GetName() << " only as window function. You may have forgotten OVER instruction."; + ctx.Error(Pos_) << "Expected aggregation function: " << GetName() << " only as window function. You may have forgotten OVER instruction."; return false; } TVector<TNodePtr> exprsAuto; @@ -182,7 +182,7 @@ public: } const auto& orderSpec = winSpecPtr->OrderBy; if (!orderSpec) { - ctx.Warning(Pos, TIssuesIds::YQL_AGGREGATE_BY_WIN_FUNC_WITHOUT_ORDER_BY) << + ctx.Warning(Pos_, TIssuesIds::YQL_AGGREGATE_BY_WIN_FUNC_WITHOUT_ORDER_BY) << "Expected ORDER BY specification for window: '" << *winNamePtr << "' used in aggregation function: '" << GetName() << " You may have forgotten to ORDER BY in WINDOW specification or choose the wrong WINDOW."; @@ -198,7 +198,7 @@ public: } private: TNodePtr DoClone() const final { - return new TAggregationFactoryWinAutoargImpl(Pos, Name, Func, AggMode); + return new TAggregationFactoryWinAutoargImpl(Pos_, Name_, Func_, AggMode_); } }; @@ -220,19 +220,19 @@ private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 2; if (exprs.size() < adjustArgsCount || exprs.size() > 1 + adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name << " requires " + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires " << adjustArgsCount << " or " << (1 + adjustArgsCount) << " arguments, given: " << exprs.size(); return false; } if (!isFactory) { - Payload = exprs.front(); - Key = exprs[1]; + Payload_ = exprs.front(); + Key_ = exprs[1]; } - Limit = (1 + adjustArgsCount == exprs.size() ? exprs.back() : Y("Void")); + Limit_ = (1 + adjustArgsCount == exprs.size() ? exprs.back() : Y("Void")); if (!isFactory) { - Name = src->MakeLocalName(Name); + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -240,24 +240,24 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); } return true; } TNodePtr DoClone() const final { - return new TKeyPayloadAggregationFactory(Pos, Name, Func, AggMode); + return new TKeyPayloadAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type) const final { - auto apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), Key), BuildLambda(Pos, Y("row"), Payload)); + auto apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), Key_), BuildLambda(Pos_, Y("row"), Payload_)); AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, Limit); + apply = L(apply, Limit_); } std::vector<ui32> GetFactoryColumnIndices() const final { @@ -265,32 +265,32 @@ private: } bool DoInit(TContext& ctx, ISource* src) final { - if (!Key) { + if (!Key_) { return true; } ctx.PushBlockShortcuts(); - if (!Key->Init(ctx, src)) { + if (!Key_->Init(ctx, src)) { return false; } - Key = ctx.GroundBlockShortcutsForExpr(Key); + Key_ = ctx.GroundBlockShortcutsForExpr(Key_); ctx.PushBlockShortcuts(); - if (!Payload->Init(ctx, src)) { + if (!Payload_->Init(ctx, src)) { return false; } - Payload = ctx.GroundBlockShortcutsForExpr(Payload); - if (!Limit->Init(ctx, src)) { + Payload_ = ctx.GroundBlockShortcutsForExpr(Payload_); + if (!Limit_->Init(ctx, src)) { return false; } - if (Key->IsAggregated()) { - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; + if (Key_->IsAggregated()) { + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden"; return false; } return true; } - TNodePtr Key, Payload, Limit; + TNodePtr Key_, Payload_, Limit_; }; TAggregationPtr BuildKeyPayloadFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -307,16 +307,16 @@ private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 2; if (exprs.size() != adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name << " requires " << + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires " << adjustArgsCount << " arguments, given: " << exprs.size(); return false; } if (!isFactory) { - Payload = exprs.front(); - Predicate = exprs.back(); + Payload_ = exprs.front(); + Predicate_ = exprs.back(); - Name = src->MakeLocalName(Name); + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -324,18 +324,18 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); } return true; } TNodePtr DoClone() const final { - return new TPayloadPredicateAggregationFactory(Pos, Name, Func, AggMode); + return new TPayloadPredicateAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type) const final { - return Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), Payload), BuildLambda(Pos, Y("row"), Predicate)); + return Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), Payload_), BuildLambda(Pos_, Y("row"), Predicate_)); } std::vector<ui32> GetFactoryColumnIndices() const final { @@ -343,30 +343,30 @@ private: } bool DoInit(TContext& ctx, ISource* src) final { - if (!Predicate) { + if (!Predicate_) { return true; } ctx.PushBlockShortcuts(); - if (!Predicate->Init(ctx, src)) { + if (!Predicate_->Init(ctx, src)) { return false; } - Predicate = ctx.GroundBlockShortcutsForExpr(Predicate); + Predicate_ = ctx.GroundBlockShortcutsForExpr(Predicate_); ctx.PushBlockShortcuts(); - if (!Payload->Init(ctx, src)) { + if (!Payload_->Init(ctx, src)) { return false; } - Payload = ctx.GroundBlockShortcutsForExpr(Payload); + Payload_ = ctx.GroundBlockShortcutsForExpr(Payload_); - if (Payload->IsAggregated()) { - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; + if (Payload_->IsAggregated()) { + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden"; return false; } return true; } - TNodePtr Payload, Predicate; + TNodePtr Payload_, Predicate_; }; TAggregationPtr BuildPayloadPredicateFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -383,16 +383,16 @@ private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 2; if (exprs.size() != adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name << " requires " << + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires " << adjustArgsCount << " arguments, given: " << exprs.size(); return false; } if (!isFactory) { - One = exprs.front(); - Two = exprs.back(); + One_ = exprs.front(); + Two_ = exprs.back(); - Name = src->MakeLocalName(Name); + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -400,45 +400,45 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); } return true; } TNodePtr DoClone() const final { - return new TTwoArgsAggregationFactory(Pos, Name, Func, AggMode); + return new TTwoArgsAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type) const final { - auto tuple = Q(Y(One, Two)); - return Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), tuple)); + auto tuple = Q(Y(One_, Two_)); + return Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), tuple)); } bool DoInit(TContext& ctx, ISource* src) final { - if (!One) { + if (!One_) { return true; } ctx.PushBlockShortcuts(); - if (!One->Init(ctx, src)) { + if (!One_->Init(ctx, src)) { return false; } - One = ctx.GroundBlockShortcutsForExpr(One); + One_ = ctx.GroundBlockShortcutsForExpr(One_); ctx.PushBlockShortcuts(); - if (!Two->Init(ctx, src)) { + if (!Two_->Init(ctx, src)) { return false; } - Two = ctx.GroundBlockShortcutsForExpr(Two); + Two_ = ctx.GroundBlockShortcutsForExpr(Two_); - if ((One->IsAggregated() || Two->IsAggregated()) && !IsOverWindow()) { - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; + if ((One_->IsAggregated() || Two_->IsAggregated()) && !IsOverWindow()) { + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden"; return false; } return true; } - TNodePtr One, Two; + TNodePtr One_, Two_; }; TAggregationPtr BuildTwoArgsFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -449,21 +449,21 @@ class THistogramAggregationFactory final : public TAggregationFactory { public: THistogramAggregationFactory(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) - , Weight(Y("Double", Q("1.0"))) - , Intervals(Y("Uint32", Q("100"))) + , FakeSource_(BuildFakeSource(pos)) + , Weight_(Y("Double", Q("1.0"))) + , Intervals_(Y("Uint32", Q("100"))) {} private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { if (isFactory) { if (exprs.size() > 1) { - ctx.Error(Pos) << "Aggregation function factory " << Name << " requires 0 or 1 argument(s), given: " << exprs.size(); + ctx.Error(Pos_) << "Aggregation function factory " << Name_ << " requires 0 or 1 argument(s), given: " << exprs.size(); return false; } } else { if (exprs.empty() || exprs.size() > 3) { - ctx.Error(Pos) << "Aggregation function " << Name << " requires one, two or three arguments, given: " << exprs.size(); + ctx.Error(Pos_) << "Aggregation function " << Name_ << " requires one, two or three arguments, given: " << exprs.size(); return false; } } @@ -474,29 +474,29 @@ private: switch (exprs.size()) { case 2U: if (!integer) { - Weight = exprs.back(); + Weight_ = exprs.back(); } break; case 3U: if (!integer) { - ctx.Error(Pos) << "Aggregation function " << Name << " for case with 3 argument should have second interger argument"; + ctx.Error(Pos_) << "Aggregation function " << Name_ << " for case with 3 argument should have second interger argument"; return false; } - Weight = exprs[1]; + Weight_ = exprs[1]; break; } if (exprs.size() >= 2 && integer) { - Intervals = Y("Cast", exprs.back(), Q("Uint32")); + Intervals_ = Y("Cast", exprs.back(), Q("Uint32")); } } else { if (exprs.size() >= 1) { const auto integer = exprs.back()->IsIntegerLiteral(); if (!integer) { - ctx.Error(Pos) << "Aggregation function factory " << Name << " should have second interger argument"; + ctx.Error(Pos_) << "Aggregation function factory " << Name_ << " should have second interger argument"; return false; } - Intervals = Y("Cast", exprs.back(), Q("Uint32")); + Intervals_ = Y("Cast", exprs.back(), Q("Uint32")); } } @@ -504,17 +504,17 @@ private: } TNodePtr DoClone() const final { - return new THistogramAggregationFactory(Pos, Name, Func, AggMode); + return new THistogramAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type) const final { - auto apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), Expr), BuildLambda(Pos, Y("row"), Weight)); + auto apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), Expr_), BuildLambda(Pos_, Y("row"), Weight_)); AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, Intervals); + apply = L(apply, Intervals_); } std::vector<ui32> GetFactoryColumnIndices() const final { @@ -523,21 +523,21 @@ private: bool DoInit(TContext& ctx, ISource* src) final { ctx.PushBlockShortcuts(); - if (!Weight->Init(ctx, src)) { + if (!Weight_->Init(ctx, src)) { return false; } - Weight = ctx.GroundBlockShortcutsForExpr(Weight); + Weight_ = ctx.GroundBlockShortcutsForExpr(Weight_); ctx.PushBlockShortcuts(); - if (!Intervals->Init(ctx, FakeSource.Get())) { + if (!Intervals_->Init(ctx, FakeSource_.Get())) { return false; } - Intervals = ctx.GroundBlockShortcutsForExpr(Intervals); + Intervals_ = ctx.GroundBlockShortcutsForExpr(Intervals_); return TAggregationFactory::DoInit(ctx, src); } - TSourcePtr FakeSource; - TNodePtr Weight, Intervals; + TSourcePtr FakeSource_; + TNodePtr Weight_, Intervals_; }; TAggregationPtr BuildHistogramFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -548,67 +548,67 @@ class TLinearHistogramAggregationFactory final : public TAggregationFactory { public: TLinearHistogramAggregationFactory(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) - , BinSize(Y("Double", Q("10.0"))) - , Minimum(Y("Double", Q(ToString(-1.0 * Max<double>())))) - , Maximum(Y("Double", Q(ToString(Max<double>())))) + , FakeSource_(BuildFakeSource(pos)) + , BinSize_(Y("Double", Q("10.0"))) + , Minimum_(Y("Double", Q(ToString(-1.0 * Max<double>())))) + , Maximum_(Y("Double", Q(ToString(Max<double>())))) {} private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { Y_UNUSED(isFactory); if (exprs.empty() || exprs.size() > 4) { - ctx.Error(Pos) << "Aggregation function " << Name << " requires one to four arguments, given: " << exprs.size(); + ctx.Error(Pos_) << "Aggregation function " << Name_ << " requires one to four arguments, given: " << exprs.size(); return false; } if (exprs.size() > 1) { - BinSize = exprs[1]; + BinSize_ = exprs[1]; } if (exprs.size() > 2) { - Minimum = exprs[2]; + Minimum_ = exprs[2]; } if (exprs.size() > 3) { - Maximum = exprs[3]; + Maximum_ = exprs[3]; } return TAggregationFactory::InitAggr(ctx, isFactory, src, node, { exprs.front() }); } TNodePtr DoClone() const final { - return new TLinearHistogramAggregationFactory(Pos, Name, Func, AggMode); + return new TLinearHistogramAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type) const final { - return Y("Apply", Factory, type, - BuildLambda(Pos, Y("row"), Expr), - BinSize, Minimum, Maximum); + return Y("Apply", Factory_, type, + BuildLambda(Pos_, Y("row"), Expr_), + BinSize_, Minimum_, Maximum_); } bool DoInit(TContext& ctx, ISource* src) final { ctx.PushBlockShortcuts(); - if (!BinSize->Init(ctx, FakeSource.Get())) { + if (!BinSize_->Init(ctx, FakeSource_.Get())) { return false; } - BinSize = ctx.GroundBlockShortcutsForExpr(BinSize); + BinSize_ = ctx.GroundBlockShortcutsForExpr(BinSize_); ctx.PushBlockShortcuts(); - if (!Minimum->Init(ctx, FakeSource.Get())) { + if (!Minimum_->Init(ctx, FakeSource_.Get())) { return false; } - Minimum = ctx.GroundBlockShortcutsForExpr(Minimum); + Minimum_ = ctx.GroundBlockShortcutsForExpr(Minimum_); ctx.PushBlockShortcuts(); - if (!Maximum->Init(ctx, FakeSource.Get())) { + if (!Maximum_->Init(ctx, FakeSource_.Get())) { return false; } - Maximum = ctx.GroundBlockShortcutsForExpr(Maximum); + Maximum_ = ctx.GroundBlockShortcutsForExpr(Maximum_); return TAggregationFactory::DoInit(ctx, src); } - TSourcePtr FakeSource; - TNodePtr BinSize, Minimum, Maximum; + TSourcePtr FakeSource_; + TNodePtr BinSize_, Minimum_, Maximum_; }; TAggregationPtr BuildLinearHistogramFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -619,35 +619,35 @@ class TPercentileFactory final : public TAggregationFactory { public: TPercentileFactory(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) + , FakeSource_(BuildFakeSource(pos)) {} private: const TString* GetGenericKey() const final { - return Column; + return Column_; } void Join(IAggregation* aggr) final { const auto percentile = dynamic_cast<TPercentileFactory*>(aggr); Y_ABORT_UNLESS(percentile); - Y_ABORT_UNLESS(*Column == *percentile->Column); - Y_ABORT_UNLESS(AggMode == percentile->AggMode); - Percentiles.insert(percentile->Percentiles.cbegin(), percentile->Percentiles.cend()); - percentile->Percentiles.clear(); + Y_ABORT_UNLESS(*Column_ == *percentile->Column_); + Y_ABORT_UNLESS(AggMode_ == percentile->AggMode_); + Percentiles_.insert(percentile->Percentiles_.cbegin(), percentile->Percentiles_.cend()); + percentile->Percentiles_.clear(); } bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 1; if (exprs.size() < 0 + adjustArgsCount || exprs.size() > 1 + adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name << " requires " + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires " << (0 + adjustArgsCount) << " or " << (1 + adjustArgsCount) << " arguments, given: " << exprs.size(); return false; } if (!isFactory) { - Column = exprs.front()->GetColumnName(); - if (!Column) { - ctx.Error(Pos) << Name << " may only be used with column reference as first argument."; + Column_ = exprs.front()->GetColumnName(); + if (!Column_) { + ctx.Error(Pos_) << Name_ << " may only be used with column reference as first argument."; return false; } } @@ -659,7 +659,7 @@ private: if (1 + adjustArgsCount == exprs.size()) { x = exprs.back(); ctx.PushBlockShortcuts(); - if (!x->Init(ctx, FakeSource.Get())) { + if (!x->Init(ctx, FakeSource_.Get())) { return false; } x = ctx.GroundBlockShortcutsForExpr(x); @@ -668,56 +668,56 @@ private: } if (isFactory) { - FactoryPercentile = x; + FactoryPercentile_ = x; } else { - Percentiles.emplace(Name, x); + Percentiles_.emplace(Name_, x); } return true; } TNodePtr DoClone() const final { - return new TPercentileFactory(Pos, Name, Func, AggMode); + return new TPercentileFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type) const final { - TNodePtr percentiles(Percentiles.cbegin()->second); + TNodePtr percentiles(Percentiles_.cbegin()->second); - if (Percentiles.size() > 1U) { + if (Percentiles_.size() > 1U) { percentiles = Y(); - for (const auto& percentile : Percentiles) { + for (const auto& percentile : Percentiles_) { percentiles = L(percentiles, percentile.second); } percentiles = Q(percentiles); } - return Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), Expr), percentiles); + return Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), Expr_), percentiles); } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, FactoryPercentile); + apply = L(apply, FactoryPercentile_); } TNodePtr AggregationTraits(const TNodePtr& type) const final { - if (Percentiles.empty()) + if (Percentiles_.empty()) return TNodePtr(); - TNodePtr names(Q(Percentiles.cbegin()->first)); + TNodePtr names(Q(Percentiles_.cbegin()->first)); - if (Percentiles.size() > 1U) { + if (Percentiles_.size() > 1U) { names = Y(); - for (const auto& percentile : Percentiles) + for (const auto& percentile : Percentiles_) names = L(names, Q(percentile.first)); names = Q(names); } - const bool distinct = AggMode == EAggregateMode::Distinct; - const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos, DistinctKey))) : type; - return distinct ? Q(Y(names, GetApply(listType), BuildQuotedAtom(Pos, DistinctKey))) : Q(Y(names, GetApply(listType))); + const bool distinct = AggMode_ == EAggregateMode::Distinct; + const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos_, DistinctKey_))) : type; + return distinct ? Q(Y(names, GetApply(listType), BuildQuotedAtom(Pos_, DistinctKey_))) : Q(Y(names, GetApply(listType))); } bool DoInit(TContext& ctx, ISource* src) final { - for (const auto& p : Percentiles) { + for (const auto& p : Percentiles_) { if (!p.second->Init(ctx, src)) { return false; } @@ -726,10 +726,10 @@ private: return TAggregationFactory::DoInit(ctx, src); } - TSourcePtr FakeSource; - std::multimap<TString, TNodePtr> Percentiles; - TNodePtr FactoryPercentile; - const TString* Column = nullptr; + TSourcePtr FakeSource_; + std::multimap<TString, TNodePtr> Percentiles_; + TNodePtr FactoryPercentile_; + const TString* Column_ = nullptr; }; TAggregationPtr BuildPercentileFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -753,7 +753,7 @@ private: const ui32 MinBuffer = 100; if (exprs.size() < adjustArgsCount || exprs.size() > 2 + adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory? "factory " : "") << Name << + ctx.Error(Pos_) << "Aggregation function " << (isFactory? "factory " : "") << Name_ << " requires " << adjustArgsCount << " to " << (2 + adjustArgsCount) << " arguments, given: " << exprs.size(); return false; } @@ -791,57 +791,57 @@ private: auto x = TPair{ Y("Uint32", Q(ToString(n))), Y("Uint32", Q(ToString(buffer))) }; if (isFactory) { - TopFreqFactoryParams = x; + TopFreqFactoryParams_ = x; } else { - TopFreqs.emplace(Name, x); + TopFreqs_.emplace(Name_, x); } return true; } TNodePtr DoClone() const final { - return new TTopFreqFactory(Pos, Name, Func, AggMode); + return new TTopFreqFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type) const final { - TPair topFreqs(TopFreqs.cbegin()->second); + TPair topFreqs(TopFreqs_.cbegin()->second); - if (TopFreqs.size() > 1U) { + if (TopFreqs_.size() > 1U) { topFreqs = { Y(), Y() }; - for (const auto& topFreq : TopFreqs) { + for (const auto& topFreq : TopFreqs_) { topFreqs = { L(topFreqs.first, topFreq.second.first), L(topFreqs.second, topFreq.second.second) }; } topFreqs = { Q(topFreqs.first), Q(topFreqs.second) }; } - auto apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), Expr), topFreqs.first, topFreqs.second); + auto apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), Expr_), topFreqs.first, topFreqs.second); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, TopFreqFactoryParams.first, TopFreqFactoryParams.second); + apply = L(apply, TopFreqFactoryParams_.first, TopFreqFactoryParams_.second); } TNodePtr AggregationTraits(const TNodePtr& type) const final { - if (TopFreqs.empty()) + if (TopFreqs_.empty()) return TNodePtr(); - TNodePtr names(Q(TopFreqs.cbegin()->first)); + TNodePtr names(Q(TopFreqs_.cbegin()->first)); - if (TopFreqs.size() > 1U) { + if (TopFreqs_.size() > 1U) { names = Y(); - for (const auto& topFreq : TopFreqs) + for (const auto& topFreq : TopFreqs_) names = L(names, Q(topFreq.first)); names = Q(names); } - const bool distinct = AggMode == EAggregateMode::Distinct; - const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos, DistinctKey))) : type; - return distinct ? Q(Y(names, GetApply(listType), BuildQuotedAtom(Pos, DistinctKey))) : Q(Y(names, GetApply(listType))); + const bool distinct = AggMode_ == EAggregateMode::Distinct; + const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos_, DistinctKey_))) : type; + return distinct ? Q(Y(names, GetApply(listType), BuildQuotedAtom(Pos_, DistinctKey_))) : Q(Y(names, GetApply(listType))); } bool DoInit(TContext& ctx, ISource* src) final { - for (const auto& topFreq : TopFreqs) { + for (const auto& topFreq : TopFreqs_) { if (!topFreq.second.first->Init(ctx, src)) { return false; } @@ -854,8 +854,8 @@ private: return TAggregationFactory::DoInit(ctx, src); } - std::multimap<TString, TPair> TopFreqs; - TPair TopFreqFactoryParams; + std::multimap<TString, TPair> TopFreqs_; + TPair TopFreqFactoryParams_; }; TAggregationPtr BuildTopFreqFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -867,29 +867,29 @@ class TTopAggregationFactory final : public TAggregationFactory { public: TTopAggregationFactory(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) + , FakeSource_(BuildFakeSource(pos)) {} private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 1 : (HasKey ? 3 : 2); if (exprs.size() != adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name << " requires " + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires " << adjustArgsCount << " arguments, given: " << exprs.size(); return false; } if (!isFactory) { - Payload = exprs[0]; + Payload_ = exprs[0]; if (HasKey) { - Key = exprs[1]; + Key_ = exprs[1]; } } - Count = exprs.back(); + Count_ = exprs.back(); if (!isFactory) { - Name = src->MakeLocalName(Name); + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -897,29 +897,29 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); } return true; } TNodePtr DoClone() const final { - return new TTopAggregationFactory(Pos, Name, Func, AggMode); + return new TTopAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type) const final { TNodePtr apply; if (HasKey) { - apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), Key), BuildLambda(Pos, Y("row"), Payload)); + apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), Key_), BuildLambda(Pos_, Y("row"), Payload_)); } else { - apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), Payload)); + apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), Payload_)); } AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, Count); + apply = L(apply, Count_); } std::vector<ui32> GetFactoryColumnIndices() const final { @@ -932,38 +932,38 @@ private: bool DoInit(TContext& ctx, ISource* src) final { ctx.PushBlockShortcuts(); - if (!Count->Init(ctx, FakeSource.Get())) { + if (!Count_->Init(ctx, FakeSource_.Get())) { return false; } - Count = ctx.GroundBlockShortcutsForExpr(Count); + Count_ = ctx.GroundBlockShortcutsForExpr(Count_); - if (!Payload) { + if (!Payload_) { return true; } if (HasKey) { ctx.PushBlockShortcuts(); - if (!Key->Init(ctx, src)) { + if (!Key_->Init(ctx, src)) { return false; } - Key = ctx.GroundBlockShortcutsForExpr(Key); + Key_ = ctx.GroundBlockShortcutsForExpr(Key_); } ctx.PushBlockShortcuts(); - if (!Payload->Init(ctx, src)) { + if (!Payload_->Init(ctx, src)) { return false; } - Payload = ctx.GroundBlockShortcutsForExpr(Payload); + Payload_ = ctx.GroundBlockShortcutsForExpr(Payload_); - if ((HasKey && Key->IsAggregated()) || (!HasKey && Payload->IsAggregated())) { - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; + if ((HasKey && Key_->IsAggregated()) || (!HasKey && Payload_->IsAggregated())) { + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden"; return false; } return true; } - TSourcePtr FakeSource; - TNodePtr Key, Payload, Count; + TSourcePtr FakeSource_; + TNodePtr Key_, Payload_, Count_; }; template <bool HasKey> @@ -984,27 +984,27 @@ private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 1; if (exprs.size() < adjustArgsCount || exprs.size() > 1 + adjustArgsCount) { - ctx.Error(Pos) << Name << " aggregation function " << (isFactory ? "factory " : "") << " requires " << + ctx.Error(Pos_) << Name_ << " aggregation function " << (isFactory ? "factory " : "") << " requires " << adjustArgsCount << " or " << (1 + adjustArgsCount) << " argument(s), given: " << exprs.size(); return false; } - Precision = 14; + Precision_ = 14; if (1 + adjustArgsCount <= exprs.size()) { auto posSecondArg = exprs[adjustArgsCount]->GetPos(); - if (!Parseui32(exprs[adjustArgsCount], Precision)) { - ctx.Error(posSecondArg) << Name << ": invalid argument, numeric literal is expected"; + if (!Parseui32(exprs[adjustArgsCount], Precision_)) { + ctx.Error(posSecondArg) << Name_ << ": invalid argument, numeric literal is expected"; return false; } } - if (Precision > 18 || Precision < 4) { - ctx.Error(Pos) << Name << ": precision is expected to be between 4 and 18 (inclusive), got " << Precision; + if (Precision_ > 18 || Precision_ < 4) { + ctx.Error(Pos_) << Name_ << ": precision is expected to be between 4 and 18 (inclusive), got " << Precision_; return false; } if (!isFactory) { - Expr = exprs[0]; - Name = src->MakeLocalName(Name); + Expr_ = exprs[0]; + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -1012,28 +1012,28 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); } return true; } TNodePtr DoClone() const final { - return new TCountDistinctEstimateAggregationFactory(Pos, Name, Func, AggMode); + return new TCountDistinctEstimateAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type) const final { - auto apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), Expr)); + auto apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), Expr_)); AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, Y("Uint32", Q(ToString(Precision)))); + apply = L(apply, Y("Uint32", Q(ToString(Precision_)))); } private: - ui32 Precision = 0; + ui32 Precision_ = 0; }; TAggregationPtr BuildCountDistinctEstimateFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -1052,23 +1052,23 @@ private: ui32 minArgs = (0 + adjustArgsCount); ui32 maxArgs = (1 + adjustArgsCount); if (exprs.size() < minArgs || exprs.size() > maxArgs) { - ctx.Error(Pos) << "List aggregation " << (isFactory ? "factory " : "") << "function require " << minArgs + ctx.Error(Pos_) << "List aggregation " << (isFactory ? "factory " : "") << "function require " << minArgs << " or " << maxArgs << " arguments, given: " << exprs.size(); return false; } - Limit = 0; + Limit_ = 0; if (adjustArgsCount + 1U <= exprs.size()) { auto posSecondArg = exprs[adjustArgsCount]->GetPos(); - if (!Parseui32(exprs[adjustArgsCount], Limit)) { + if (!Parseui32(exprs[adjustArgsCount], Limit_)) { ctx.Error(posSecondArg) << "List: invalid last argument, numeric literal is expected"; return false; } } if (!isFactory) { - Expr = exprs[0]; - Name = src->MakeLocalName(Name); + Expr_ = exprs[0]; + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -1076,28 +1076,28 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); } return true; } TNodePtr DoClone() const final { - return new TListAggregationFactory(Pos, Name, Func, AggMode); + return new TListAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type) const final { - auto apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), Expr)); + auto apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), Expr_)); AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, Y("Uint64", Q(ToString(Limit)))); + apply = L(apply, Y("Uint64", Q(ToString(Limit_)))); } private: - ui32 Limit = 0; + ui32 Limit_ = 0; }; TAggregationPtr BuildListFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -1114,54 +1114,54 @@ private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 1; if (exprs.size() < (3 + adjustArgsCount) || exprs.size() > (7 + adjustArgsCount)) { - ctx.Error(Pos) << "User defined aggregation function " << (isFactory ? "factory " : "") << " requires " << + ctx.Error(Pos_) << "User defined aggregation function " << (isFactory ? "factory " : "") << " requires " << (3 + adjustArgsCount) << " to " << (7 + adjustArgsCount) << " arguments, given: " << exprs.size(); return false; } - Lambdas[0] = BuildLambda(Pos, Y("value", "parent"), Y("NamedApply", exprs[adjustArgsCount], Q(Y("value")), Y("AsStruct"), Y("DependsOn", "parent"))); - Lambdas[1] = BuildLambda(Pos, Y("value", "state", "parent"), Y("NamedApply", exprs[adjustArgsCount + 1], Q(Y("state", "value")), Y("AsStruct"), Y("DependsOn", "parent"))); - Lambdas[2] = BuildLambda(Pos, Y("one", "two"), Y("Apply", exprs[adjustArgsCount + 2], "one", "two")); + Lambdas_[0] = BuildLambda(Pos_, Y("value", "parent"), Y("NamedApply", exprs[adjustArgsCount], Q(Y("value")), Y("AsStruct"), Y("DependsOn", "parent"))); + Lambdas_[1] = BuildLambda(Pos_, Y("value", "state", "parent"), Y("NamedApply", exprs[adjustArgsCount + 1], Q(Y("state", "value")), Y("AsStruct"), Y("DependsOn", "parent"))); + Lambdas_[2] = BuildLambda(Pos_, Y("one", "two"), Y("Apply", exprs[adjustArgsCount + 2], "one", "two")); - for (size_t i = 3U; i < Lambdas.size(); ++i) { + for (size_t i = 3U; i < Lambdas_.size(); ++i) { const auto j = adjustArgsCount + i; - Lambdas[i] = BuildLambda(Pos, Y("state"), j >= exprs.size() ? AstNode("state") : Y("Apply", exprs[j], "state")); + Lambdas_[i] = BuildLambda(Pos_, Y("state"), j >= exprs.size() ? AstNode("state") : Y("Apply", exprs[j], "state")); } - DefVal = (exprs.size() == (7 + adjustArgsCount)) ? exprs[adjustArgsCount + 6] : Y("Null"); + DefVal_ = (exprs.size() == (7 + adjustArgsCount)) ? exprs[adjustArgsCount + 6] : Y("Null"); return TAggregationFactory::InitAggr(ctx, isFactory, src, node, isFactory ? TVector<TNodePtr>() : TVector<TNodePtr>(1, exprs.front())); } TNodePtr DoClone() const final { - return new TUserDefinedAggregationFactory(Pos, Name, Func, AggMode); + return new TUserDefinedAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type) const final { - auto apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), Expr)); + auto apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), Expr_)); AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, Lambdas[0], Lambdas[1], Lambdas[2], Lambdas[3], Lambdas[4], Lambdas[5], DefVal); + apply = L(apply, Lambdas_[0], Lambdas_[1], Lambdas_[2], Lambdas_[3], Lambdas_[4], Lambdas_[5], DefVal_); } bool DoInit(TContext& ctx, ISource* src) final { - for (const auto& lambda : Lambdas) { + for (const auto& lambda : Lambdas_) { if (!lambda->Init(ctx, src)) { return false; } } - if (!DefVal->Init(ctx, src)) { + if (!DefVal_->Init(ctx, src)) { return false; } return TAggregationFactory::DoInit(ctx, src); } - std::array<TNodePtr, 6> Lambdas; - TNodePtr DefVal; + std::array<TNodePtr, 6> Lambdas_; + TNodePtr DefVal_; }; TAggregationPtr BuildUserDefinedFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -1176,23 +1176,23 @@ public: private: TNodePtr DoClone() const final { - return new TCountAggregation(Pos, Name, Func, AggMode); + return new TCountAggregation(Pos_, Name_, Func_, AggMode_); } bool DoInit(TContext& ctx, ISource* src) final { - if (!Expr) { + if (!Expr_) { return true; } - if (Expr->IsAsterisk()) { - Expr = Y("Void"); + if (Expr_->IsAsterisk()) { + Expr_ = Y("Void"); } ctx.PushBlockShortcuts(); - if (!Expr->Init(ctx, src)) { + if (!Expr_->Init(ctx, src)) { return false; } - Expr->SetCountHint(Expr->IsConstant()); - Expr = ctx.GroundBlockShortcutsForExpr(Expr); + Expr_->SetCountHint(Expr_->IsConstant()); + Expr_ = ctx.GroundBlockShortcutsForExpr(Expr_); return TAggregationFactory::DoInit(ctx, src); } }; diff --git a/yql/essentials/sql/v0/builtin.cpp b/yql/essentials/sql/v0/builtin.cpp index 4c872fba7a9..67cbd55884c 100644 --- a/yql/essentials/sql/v0/builtin.cpp +++ b/yql/essentials/sql/v0/builtin.cpp @@ -25,20 +25,20 @@ class TGroupingNode final: public TAstListNode { public: TGroupingNode(TPosition pos, const TVector<TNodePtr>& args) : TAstListNode(pos) - , Args(args) + , Args_(args) {} bool DoInit(TContext& ctx, ISource* src) final { if (!src) { - ctx.Error(Pos) << "Grouping function should have source"; + ctx.Error(Pos_) << "Grouping function should have source"; return false; } TVector<TString> columns; - columns.reserve(Args.size()); - for (const auto& node: Args) { + columns.reserve(Args_.size()); + for (const auto& node: Args_) { auto namePtr = node->GetColumnName(); if (!namePtr || !*namePtr) { - ctx.Error(Pos) << "Grouping function should use columns as arguments"; + ctx.Error(Pos_) << "Grouping function should use columns as arguments"; return false; } const auto column = *namePtr; @@ -53,35 +53,35 @@ public: if (!src->CalculateGroupingHint(ctx, columns, hint)) { return false; } - Nodes.push_back(BuildAtom(Pos, "Uint64")); - Nodes.push_back(BuildQuotedAtom(Pos, IntToString<10>(hint))); + Nodes_.push_back(BuildAtom(Pos_, "Uint64")); + Nodes_.push_back(BuildQuotedAtom(Pos_, IntToString<10>(hint))); return TAstListNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TGroupingNode(Pos, Args); + return new TGroupingNode(Pos_, Args_); } private: - const TVector<TNodePtr> Args; + const TVector<TNodePtr> Args_; }; class TBasicAggrFunc final: public TAstListNode { public: TBasicAggrFunc(TPosition pos, const TString& name, TAggregationPtr aggr, const TVector<TNodePtr>& args) : TAstListNode(pos) - , Name(name) - , Aggr(aggr) - , Args(args) + , Name_(name) + , Aggr_(aggr) + , Args_(args) {} TCiString GetName() const { - return Name; + return Name_; } bool DoInit(TContext& ctx, ISource* src) final { if (!src) { - ctx.Error(Pos) << "Unable to use aggregation function '" << Name << "' without data source"; + ctx.Error(Pos_) << "Unable to use aggregation function '" << Name_ << "' without data source"; return false; } if (!DoInitAggregation(ctx, src)) { @@ -92,44 +92,44 @@ public: } TNodePtr DoClone() const final { - TAggregationPtr aggrClone = static_cast<IAggregation*>(Aggr->Clone().Release()); - return new TBasicAggrFunc(Pos, Name, aggrClone, CloneContainer(Args)); + TAggregationPtr aggrClone = static_cast<IAggregation*>(Aggr_->Clone().Release()); + return new TBasicAggrFunc(Pos_, Name_, aggrClone, CloneContainer(Args_)); } TAggregationPtr GetAggregation() const override { - return Aggr; + return Aggr_; } private: bool DoInitAggregation(TContext& ctx, ISource* src) { - if (!Aggr->InitAggr(ctx, false, src, *this, Args)) { + if (!Aggr_->InitAggr(ctx, false, src, *this, Args_)) { return false; } - return src->AddAggregation(ctx, Aggr); + return src->AddAggregation(ctx, Aggr_); } void DoUpdateState() const final { - State.Set(ENodeState::Const, Args.front()->IsConstant()); - State.Set(ENodeState::Aggregated); + State_.Set(ENodeState::Const, Args_.front()->IsConstant()); + State_.Set(ENodeState::Aggregated); } protected: - const TString Name; - TAggregationPtr Aggr; - TVector<TNodePtr> Args; + const TString Name_; + TAggregationPtr Aggr_; + TVector<TNodePtr> Args_; }; class TBasicAggrFactory final : public TAstListNode { public: TBasicAggrFactory(TPosition pos, const TString& name, TAggregationPtr aggr, const TVector<TNodePtr>& args) : TAstListNode(pos) - , Name(name) - , Aggr(aggr) - , Args(args) + , Name_(name) + , Aggr_(aggr) + , Args_(args) {} TCiString GetName() const { - return Name; + return Name_; } bool DoInit(TContext& ctx, ISource* src) final { @@ -137,48 +137,48 @@ public: return false; } - auto factory = Aggr->AggregationTraitsFactory(); + auto factory = Aggr_->AggregationTraitsFactory(); auto apply = Y("Apply", factory, Y("ListType", "type")); - auto columnIndices = Aggr->GetFactoryColumnIndices(); + auto columnIndices = Aggr_->GetFactoryColumnIndices(); if (columnIndices.size() == 1) { apply = L(apply, "extractor"); } else { // make several extractors from main that returns a tuple for (ui32 arg = 0; arg < columnIndices.size(); ++arg) { - auto partial = BuildLambda(Pos, Y("row"), Y("Nth", Y("Apply", "extractor", "row"), Q(ToString(columnIndices[arg])))); + auto partial = BuildLambda(Pos_, Y("row"), Y("Nth", Y("Apply", "extractor", "row"), Q(ToString(columnIndices[arg])))); apply = L(apply, partial); } } - Aggr->AddFactoryArguments(apply); - Lambda = BuildLambda(Pos, Y("type", "extractor"), apply); + Aggr_->AddFactoryArguments(apply); + Lambda_ = BuildLambda(Pos_, Y("type", "extractor"), apply); return TAstListNode::DoInit(ctx, src); } TAstNode* Translate(TContext& ctx) const override { - return Lambda->Translate(ctx); + return Lambda_->Translate(ctx); } TNodePtr DoClone() const final { - TAggregationPtr aggrClone = static_cast<IAggregation*>(Aggr->Clone().Release()); - return new TBasicAggrFactory(Pos, Name, aggrClone, CloneContainer(Args)); + TAggregationPtr aggrClone = static_cast<IAggregation*>(Aggr_->Clone().Release()); + return new TBasicAggrFactory(Pos_, Name_, aggrClone, CloneContainer(Args_)); } TAggregationPtr GetAggregation() const override { - return Aggr; + return Aggr_; } private: bool DoInitAggregation(TContext& ctx) { - return Aggr->InitAggr(ctx, true, nullptr, *this, Args); + return Aggr_->InitAggr(ctx, true, nullptr, *this, Args_); } protected: - const TString Name; - TAggregationPtr Aggr; - TVector<TNodePtr> Args; - TNodePtr Lambda; + const TString Name_; + TAggregationPtr Aggr_; + TVector<TNodePtr> Args_; + TNodePtr Lambda_; }; typedef THolder<TBasicAggrFunc> TAggrFuncPtr; @@ -187,28 +187,28 @@ class TLiteralStringAtom: public INode { public: TLiteralStringAtom(TPosition pos, TNodePtr node, const TString& info) : INode(pos) - , Node(node) - , Info(info) + , Node_(node) + , Info_(info) { } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - if (!Node) { - ctx.Error(Pos) << Info; + if (!Node_) { + ctx.Error(Pos_) << Info_; return false; } - if (!Node->Init(ctx, src)) { + if (!Node_->Init(ctx, src)) { return false; } - Atom = MakeAtomFromExpression(ctx, Node).Build(); + Atom_ = MakeAtomFromExpression(ctx, Node_).Build(); return true; } TAstNode* Translate(TContext& ctx) const override { - return Atom->Translate(ctx); + return Atom_->Translate(ctx); } TPtr DoClone() const final { @@ -216,9 +216,9 @@ public: } private: - TNodePtr Node; - TNodePtr Atom; - TString Info; + TNodePtr Node_; + TNodePtr Atom_; + TString Info_; }; class TYqlAsAtom: public TLiteralStringAtom { @@ -239,54 +239,54 @@ public: bool DoInit(TContext& ctx, ISource* src) override { auto slot = NUdf::FindDataSlot(GetOpName()); if (!slot) { - ctx.Error(Pos) << "Unexpected type " << GetOpName(); + ctx.Error(Pos_) << "Unexpected type " << GetOpName(); return false; } if (*slot == NUdf::EDataSlot::Decimal) { - MinArgs = MaxArgs = 3; + MinArgs_ = MaxArgs_ = 3; } if (!ValidateArguments(ctx)) { return false; } - auto stringNode = Args[0]; + auto stringNode = Args_[0]; auto atom = stringNode->GetLiteral("String"); if (!atom) { - ctx.Error(Pos) << "Expected literal string as argument in " << GetOpName() << " function"; + ctx.Error(Pos_) << "Expected literal string as argument in " << GetOpName() << " function"; return false; } TString value; if (*slot == NUdf::EDataSlot::Decimal) { - const auto precision = Args[1]->GetLiteral("Int32"); - const auto scale = Args[2]->GetLiteral("Int32"); + const auto precision = Args_[1]->GetLiteral("Int32"); + const auto scale = Args_[2]->GetLiteral("Int32"); if (!NKikimr::NMiniKQL::IsValidDecimal(*atom)) { - ctx.Error(Pos) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); return false; } ui8 stub; if (!(precision && TryFromString<ui8>(*precision, stub))) { - ctx.Error(Pos) << "Invalid precision " << (precision ? precision->Quote() : "") << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid precision " << (precision ? precision->Quote() : "") << " for type " << GetOpName(); return false; } if (!(scale && TryFromString<ui8>(*scale, stub))) { - ctx.Error(Pos) << "Invalid scale " << (scale ? scale->Quote() : "") << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid scale " << (scale ? scale->Quote() : "") << " for type " << GetOpName(); return false; } - Args[0] = BuildQuotedAtom(GetPos(), *atom); - Args[1] = BuildQuotedAtom(GetPos(), *precision); - Args[2] = BuildQuotedAtom(GetPos(), *scale); + Args_[0] = BuildQuotedAtom(GetPos(), *atom); + Args_[1] = BuildQuotedAtom(GetPos(), *precision); + Args_[2] = BuildQuotedAtom(GetPos(), *scale); return TCallNode::DoInit(ctx, src); } else if (NUdf::GetDataTypeInfo(*slot).Features & (NUdf::DateType | NUdf::TzDateType | NUdf::TimeIntervalType)) { const auto out = NKikimr::NMiniKQL::ValueFromString(*slot, *atom); if (!out) { - ctx.Error(Pos) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); return false; } @@ -306,7 +306,7 @@ public: case NUdf::EDataSlot::Interval: value = ToString(out.Get<i64>()); if ('T' == atom->back()) { - ctx.Warning(Pos, TIssuesIds::YQL_DEPRECATED_INTERVAL_CONSTANT) << "Time prefix 'T' at end of interval constant"; + ctx.Warning(Pos_, TIssuesIds::YQL_DEPRECATED_INTERVAL_CONSTANT) << "Time prefix 'T' at end of interval constant"; } break; default: @@ -320,26 +320,26 @@ public: } else if (NUdf::EDataSlot::Uuid == *slot) { char out[0x10]; if (!NKikimr::NMiniKQL::ParseUuid(*atom, out)) { - ctx.Error(Pos) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); return false; } value.assign(out, sizeof(out)); } else { if (!NKikimr::NMiniKQL::IsValidStringValue(*slot, *atom)) { - ctx.Error(Pos) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); return false; } value = *atom; } - Args[0] = BuildQuotedAtom(GetPos(), value); + Args_[0] = BuildQuotedAtom(GetPos(), value); return TCallNode::DoInit(ctx, src); } TPtr DoClone() const final { - return new TYqlData(GetPos(), OpName, CloneContainer(Args)); + return new TYqlData(GetPos(), OpName_, CloneContainer(Args_)); } }; @@ -347,7 +347,7 @@ class TTableName : public TCallNode { public: TTableName(TPosition pos, const TVector<TNodePtr>& args, const TString& cluster) : TCallNode(pos, "TableName", 0, 2, args) - , Cluster(cluster) + , Cluster_(cluster) { } @@ -356,70 +356,70 @@ public: return false; } - if (Args.empty()) { - Args.push_back(Y("TablePath", Y("DependsOn", "row"))); + if (Args_.empty()) { + Args_.push_back(Y("TablePath", Y("DependsOn", "row"))); } - if (Args.size() == 2) { - auto literal = Args[1]->GetLiteral("String"); + if (Args_.size() == 2) { + auto literal = Args_[1]->GetLiteral("String"); if (!literal) { - ctx.Error(Args[1]->GetPos()) << "Expected literal string as second argument in TableName function"; + ctx.Error(Args_[1]->GetPos()) << "Expected literal string as second argument in TableName function"; return false; } - Args[1] = BuildQuotedAtom(Args[1]->GetPos(), to_lower(*literal)); + Args_[1] = BuildQuotedAtom(Args_[1]->GetPos(), to_lower(*literal)); } else { - if (Cluster.empty()) { + if (Cluster_.empty()) { ctx.Error(GetPos()) << GetOpName() << " requires either one of \"yt\"/\"kikimr\"/\"rtmr\" as second argument or current cluster name"; return false; } - auto service = ctx.GetClusterProvider(Cluster); + auto service = ctx.GetClusterProvider(Cluster_); if (!service) { - ctx.Error() << "Unknown cluster name: " << Cluster; + ctx.Error() << "Unknown cluster name: " << Cluster_; return false; } - Args.push_back(BuildQuotedAtom(GetPos(), to_lower(*service))); + Args_.push_back(BuildQuotedAtom(GetPos(), to_lower(*service))); } return TCallNode::DoInit(ctx, src); } TPtr DoClone() const final { - return new TTableName(GetPos(), CloneContainer(Args), Cluster); + return new TTableName(GetPos(), CloneContainer(Args_), Cluster_); } void DoUpdateState() const override { - State.Set(ENodeState::Const, false); + State_.Set(ENodeState::Const, false); } private: - TString Cluster; + TString Cluster_; }; class TYqlParseType final : public INode { public: TYqlParseType(TPosition pos, const TVector<TNodePtr>& args) : INode(pos) - , Args(args) + , Args_(args) {} TAstNode* Translate(TContext& ctx) const override { - if (Args.size() != 1) { - ctx.Error(Pos) << "Expected 1 argument in ParseType function"; + if (Args_.size() != 1) { + ctx.Error(Pos_) << "Expected 1 argument in ParseType function"; return nullptr; } - auto literal = Args[0]->GetLiteral("String"); + auto literal = Args_[0]->GetLiteral("String"); if (!literal) { - ctx.Error(Args[0]->GetPos()) << "Expected literal string as argument in ParseType function"; + ctx.Error(Args_[0]->GetPos()) << "Expected literal string as argument in ParseType function"; return nullptr; } - auto parsed = ParseType(*literal, *ctx.Pool, ctx.Issues, Args[0]->GetPos()); + auto parsed = ParseType(*literal, *ctx.Pool, ctx.Issues, Args_[0]->GetPos()); if (!parsed) { - ctx.Error(Args[0]->GetPos()) << "Failed to parse type"; + ctx.Error(Args_[0]->GetPos()) << "Failed to parse type"; return nullptr; } @@ -427,11 +427,11 @@ public: } TNodePtr DoClone() const final { - return new TYqlParseType(Pos, Args); + return new TYqlParseType(Pos_, Args_); } private: - TVector<TNodePtr> Args; + TVector<TNodePtr> Args_; }; class TYqlAddTimezone: public TCallNode { @@ -446,12 +446,12 @@ public: return false; } - Args[1] = Y("TimezoneId", Args[1]); + Args_[1] = Y("TimezoneId", Args_[1]); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlAddTimezone(Pos, CloneContainer(Args)); + return new TYqlAddTimezone(Pos_, CloneContainer(Args_)); } }; @@ -468,39 +468,39 @@ public: return false; } - auto literal = Args[1]->GetLiteral("String"); + auto literal = Args_[1]->GetLiteral("String"); INode::TPtr type; if (literal) { - auto parsed = ParseType(*literal, *ctx.Pool, ctx.Issues, Args[0]->GetPos()); + auto parsed = ParseType(*literal, *ctx.Pool, ctx.Issues, Args_[0]->GetPos()); if (!parsed) { - ctx.Error(Args[1]->GetPos()) << "Failed to parse type"; + ctx.Error(Args_[1]->GetPos()) << "Failed to parse type"; return false; } type = AstNode(parsed); } else { - type = Args[1]; + type = Args_[1]; } if (!type->Init(ctx, src)) { return false; } - Args[1] = type; - if (Args.size() == 3) { - if (!Args[2]->Init(ctx, src)) { + Args_[1] = type; + if (Args_.size() == 3) { + if (!Args_[2]->Init(ctx, src)) { return false; } - auto message = MakeAtomFromExpression(ctx, Args[2]).Build(); - Args[2] = message; + auto message = MakeAtomFromExpression(ctx, Args_[2]).Build(); + Args_[2] = message; } return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlTypeAssert<Strict>(Pos, Args); + return new TYqlTypeAssert<Strict>(Pos_, Args_); } }; @@ -515,16 +515,16 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TFromBytes(Pos, Args); + return new TFromBytes(Pos_, Args_); } }; @@ -539,11 +539,11 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } }; @@ -555,7 +555,7 @@ public: {} TNodePtr DoClone() const final { - return new TYqlAsTagged(Pos, Args); + return new TYqlAsTagged(Pos_, Args_); } }; @@ -566,7 +566,7 @@ public: {} TNodePtr DoClone() const final { - return new TYqlUntag(Pos, Args); + return new TYqlUntag(Pos_, Args_); } }; @@ -581,16 +581,16 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlVariant(Pos, Args); + return new TYqlVariant(Pos_, Args_); } }; @@ -605,14 +605,14 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (!Args.empty()) { - Args[0] = BuildFileNameArgument(ctx.Pos(), Args[0]); + if (!Args_.empty()) { + Args_[0] = BuildFileNameArgument(ctx.Pos(), Args_[0]); } return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlAtom(Pos, OpName, Args); + return new TYqlAtom(Pos_, OpName_, Args_); } }; @@ -623,21 +623,21 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (Args.size() != 3) { - ctx.Error(Pos) << OpName << " requires exactly three arguments"; + if (Args_.size() != 3) { + ctx.Error(Pos_) << OpName_ << " requires exactly three arguments"; return false; } - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (!arg->Init(ctx, src)) { return false; } } - Args[1] = MakeAtomFromExpression(ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TAddMember(Pos, OpName, Args); + return new TAddMember(Pos_, OpName_, Args_); } }; class TRemoveMember final: public TCallNode { @@ -647,21 +647,21 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (Args.size() != 2) { - ctx.Error(Pos) << OpName << " requires exactly two arguments"; + if (Args_.size() != 2) { + ctx.Error(Pos_) << OpName_ << " requires exactly two arguments"; return false; } - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (!arg->Init(ctx, src)) { return false; } } - Args[1] = MakeAtomFromExpression(ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TRemoveMember(Pos, OpName, Args); + return new TRemoveMember(Pos_, OpName_, Args_); } }; @@ -672,18 +672,18 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (Args.empty()) { - ctx.Error(Pos) << "CombineMembers requires at least one argument"; + if (Args_.empty()) { + ctx.Error(Pos_) << "CombineMembers requires at least one argument"; return false; } - for (size_t i = 0; i < Args.size(); ++i) { - Args[i] = Q(Y(Q(""), Args[i])); // flatten without prefix + for (size_t i = 0; i < Args_.size(); ++i) { + Args_[i] = Q(Y(Q(""), Args_[i])); // flatten without prefix } return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TCombineMembers(Pos, OpName, Args); + return new TCombineMembers(Pos_, OpName_, Args_); } }; @@ -694,22 +694,22 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (Args.empty()) { - ctx.Error(Pos) << OpName << " requires at least one argument"; + if (Args_.empty()) { + ctx.Error(Pos_) << OpName_ << " requires at least one argument"; return false; } - for (size_t i = 0; i < Args.size(); ++i) { - if (!Args[i]->Init(ctx, src)) { + for (size_t i = 0; i < Args_.size(); ++i) { + if (!Args_[i]->Init(ctx, src)) { return false; } - if (Args[i]->GetTupleSize() == 2) { + if (Args_[i]->GetTupleSize() == 2) { // flatten with prefix - Args[i] = Q(Y( - MakeAtomFromExpression(ctx, Args[i]->GetTupleElement(0)).Build(), - Args[i]->GetTupleElement(1) + Args_[i] = Q(Y( + MakeAtomFromExpression(ctx, Args_[i]->GetTupleElement(0)).Build(), + Args_[i]->GetTupleElement(1) )); } else { - ctx.Error(Pos) << OpName << " requires arguments to be tuples of size 2: prefix and struct"; + ctx.Error(Pos_) << OpName_ << " requires arguments to be tuples of size 2: prefix and struct"; return false; } } @@ -717,7 +717,7 @@ public: } TNodePtr DoClone() const final { - return new TFlattenMembers(Pos, OpName, Args); + return new TFlattenMembers(Pos_, OpName_, Args_); } }; @@ -775,15 +775,15 @@ public: if (!dataTypeStringNode) { return false; } - auto aliasNode = BuildFileNameArgument(Args[1]->GetPos(), Args[1]); - OpName = "Apply"; - Args[0] = Y("Udf", Q("File.ByLines"), Y("Void"), + auto aliasNode = BuildFileNameArgument(Args_[1]->GetPos(), Args_[1]); + OpName_ = "Apply"; + Args_[0] = Y("Udf", Q("File.ByLines"), Y("Void"), Y("TupleType", Y("TupleType", Y("DataType", dataTypeStringNode)), Y("StructType"), Y("TupleType"))); - Args[1] = Y("FilePath", aliasNode); + Args_[1] = Y("FilePath", aliasNode); return TCallNode::DoInit(ctx, src); } @@ -792,7 +792,7 @@ public: } TNodePtr DoClone() const final { - return new TYqlParseFileOp(Pos, Args); + return new TYqlParseFileOp(Pos_, Args_); } }; @@ -811,12 +811,12 @@ public: if (!dataTypeStringNode) { return false; } - Args[0] = dataTypeStringNode; + Args_[0] = dataTypeStringNode; return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlDataType(Pos, Args); + return new TYqlDataType(Pos_, Args_); } }; @@ -839,16 +839,16 @@ public: return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - Args[0] = MakeAtomFromExpression(ctx, Args[0]).Build(); + Args_[0] = MakeAtomFromExpression(ctx, Args_[0]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlResourceType(Pos, Args); + return new TYqlResourceType(Pos_, Args_); } }; @@ -863,16 +863,16 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlTaggedType(Pos, Args); + return new TYqlTaggedType(Pos_, Args_); } }; @@ -887,23 +887,23 @@ public: return false; } - if (!dynamic_cast<TTupleNode*>(Args[0].Get())) { + if (!dynamic_cast<TTupleNode*>(Args_[0].Get())) { ui32 numOptArgs; - if (!Parseui32(Args[0], numOptArgs)) { - ctx.Error(Args[0]->GetPos()) << "Expected either tuple or number of optional arguments"; + if (!Parseui32(Args_[0], numOptArgs)) { + ctx.Error(Args_[0]->GetPos()) << "Expected either tuple or number of optional arguments"; return false; } - Args[0] = Q(Y(BuildQuotedAtom(Args[0]->GetPos(), ToString(numOptArgs)))); + Args_[0] = Q(Y(BuildQuotedAtom(Args_[0]->GetPos(), ToString(numOptArgs)))); } - if (!dynamic_cast<TTupleNode*>(Args[1].Get())) { - Args[1] = Q(Y(Args[1])); + if (!dynamic_cast<TTupleNode*>(Args_[1].Get())) { + Args_[1] = Q(Y(Args_[1])); } - for (ui32 index = 2; index < Args.size(); ++index) { - if (!dynamic_cast<TTupleNode*>(Args[index].Get())) { - Args[index] = Q(Y(Args[index])); + for (ui32 index = 2; index < Args_.size(); ++index) { + if (!dynamic_cast<TTupleNode*>(Args_[index].Get())) { + Args_[index] = Q(Y(Args_[index])); } } @@ -911,7 +911,7 @@ public: } TNodePtr DoClone() const final { - return new TYqlCallableType(Pos, Args); + return new TYqlCallableType(Pos_, Args_); } }; @@ -926,16 +926,16 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlTupleElementType(Pos, Args); + return new TYqlTupleElementType(Pos_, Args_); } }; @@ -950,16 +950,16 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlStructMemberType(Pos, Args); + return new TYqlStructMemberType(Pos_, Args_); } }; @@ -975,17 +975,17 @@ public: } ui32 index; - if (!Parseui32(Args[1], index)) { - ctx.Error(Args[1]->GetPos()) << "Expected index of the callable argument"; + if (!Parseui32(Args_[1], index)) { + ctx.Error(Args_[1]->GetPos()) << "Expected index of the callable argument"; return false; } - Args[1] = BuildQuotedAtom(Args[1]->GetPos(), ToString(index)); + Args_[1] = BuildQuotedAtom(Args_[1]->GetPos(), ToString(index)); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlCallableArgumentType(Pos, Args); + return new TYqlCallableArgumentType(Pos_, Args_); } }; @@ -993,28 +993,28 @@ class TStructTypeNode : public TAstListNode { public: TStructTypeNode(TPosition pos, const TVector<TNodePtr>& exprs) : TAstListNode(pos) - , Exprs(exprs) + , Exprs_(exprs) {} bool DoInit(TContext& ctx, ISource* src) override { - Nodes.push_back(BuildAtom(Pos, "StructType", TNodeFlags::Default)); - for (const auto& expr : Exprs) { + Nodes_.push_back(BuildAtom(Pos_, "StructType", TNodeFlags::Default)); + for (const auto& expr : Exprs_) { const auto& label = expr->GetLabel(); if (!label) { ctx.Error(expr->GetPos()) << "Structure does not allow anonymous members"; return false; } - Nodes.push_back(Q(Y(Q(label), expr))); + Nodes_.push_back(Q(Y(Q(label), expr))); } return TAstListNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TStructTypeNode(Pos, CloneContainer(Exprs)); + return new TStructTypeNode(Pos_, CloneContainer(Exprs_)); } private: - const TVector<TNodePtr> Exprs; + const TVector<TNodePtr> Exprs_; }; template <bool IsStrict> @@ -1026,7 +1026,7 @@ public: private: TCallNode::TPtr DoClone() const override { - return new TYqlIf(GetPos(), CloneContainer(Args)); + return new TYqlIf(GetPos(), CloneContainer(Args_)); } bool DoInit(TContext& ctx, ISource* src) override { @@ -1034,9 +1034,9 @@ private: return false; } - Args[0] = Y("Coalesce", Args[0], Y("Bool", Q("false"))); - if (Args.size() == 2) { - Args.push_back(Y("Null")); + Args_[0] = Y("Coalesce", Args_[0], Y("Bool", Q("false"))); + if (Args_.size() == 2) { + Args_.push_back(Y("Null")); } return TCallNode::DoInit(ctx, src); } @@ -1050,12 +1050,12 @@ public: private: TCallNode::TPtr DoClone() const override { - return new TYqlSubstring(GetPos(), CloneContainer(Args)); + return new TYqlSubstring(GetPos(), CloneContainer(Args_)); } bool DoInit(TContext& ctx, ISource* src) override { - if (Args.size() == 2) { - Args.push_back(Y("Uint32", Q(ToString(Max<ui32>())))); + if (Args_.size() == 2) { + Args_.push_back(Y("Uint32", Q(ToString(Max<ui32>())))); } return TCallNode::DoInit(ctx, src); } @@ -1069,16 +1069,16 @@ public: private: TNodePtr DoClone() const final { - return new TYqlIn(Pos, CloneContainer(Args)); + return new TYqlIn(Pos_, CloneContainer(Args_)); } bool DoInit(TContext& ctx, ISource* src) override { if (!ValidateArguments(ctx)) { return false; } - auto key = Args[0]; - auto inNode = Args[1]; - auto hints = Args[2]; + auto key = Args_[0]; + auto inNode = Args_[1]; + auto hints = Args_[2]; if (!key->Init(ctx, src)) { return false; @@ -1117,9 +1117,9 @@ private: hints = BuildTuple(pos, hintElements); } - OpName = "SqlIn"; - MinArgs = MaxArgs = 3; - Args = { + OpName_ = "SqlIn"; + MinArgs_ = MaxArgs_ = 3; + Args_ = { inNode->GetSource() ? inNode->GetSource() : inNode, key, hints @@ -1159,12 +1159,12 @@ private: void DoUpdateState() const override { TCallNode::DoUpdateState(); - State.Set(ENodeState::Aggregated, false/*!RunConfig || RunConfig->IsAggregated()*/); - State.Set(ENodeState::Const, true /* FIXME: To avoid CheckAggregationLevel issue for non-const TypeOf. */); + State_.Set(ENodeState::Aggregated, false/*!RunConfig || RunConfig->IsAggregated()*/); + State_.Set(ENodeState::Const, true /* FIXME: To avoid CheckAggregationLevel issue for non-const TypeOf. */); } private: - TNodePtr RunConfig; + TNodePtr RunConfig_; }; class TYqlUdf final : public TYqlUdfBase { @@ -1179,7 +1179,7 @@ public: private: TYqlUdf(const TYqlUdf& other) - : TYqlUdfBase(other.GetPos(), "Udf", other.MinArgs, other.MaxArgs, CloneContainer(other.Args)) + : TYqlUdfBase(other.GetPos(), "Udf", other.MinArgs_, other.MaxArgs_, CloneContainer(other.Args_)) {} TNodePtr DoClone() const final { @@ -1199,7 +1199,7 @@ public: private: TYqlTypeConfigUdf(const TYqlTypeConfigUdf& other) - : TYqlUdfBase(other.GetPos(), "Udf", other.MinArgs, other.MaxArgs, CloneContainer(other.Args)) + : TYqlUdfBase(other.GetPos(), "Udf", other.MinArgs_, other.MaxArgs_, CloneContainer(other.Args_)) {} bool DoInit(TContext& ctx, ISource* src) override { @@ -1207,11 +1207,11 @@ private: return false; } - if (!Args[3]->Init(ctx, src)) { + if (!Args_[3]->Init(ctx, src)) { return false; } - Args[3] = MakeAtomFromExpression(ctx, Args[3]).Build(); + Args_[3] = MakeAtomFromExpression(ctx, Args_[3]).Build(); return TYqlUdfBase::DoInit(ctx, src); } @@ -1228,7 +1228,7 @@ public: bool DoInit(TContext& ctx, ISource* src) override { if (!src) { - ctx.Error(Pos) << GetCallExplain() << " unable use without source"; + ctx.Error(Pos_) << GetCallExplain() << " unable use without source"; return false; } @@ -1239,53 +1239,53 @@ public: } PrecacheState(); - const auto memberPos = Args[0]->GetPos(); + const auto memberPos = Args_[0]->GetPos(); TVector<TNodePtr> repackArgs = {BuildAtom(memberPos, "row", NYql::TNodeFlags::Default)}; - if (auto literal = Args[1]->GetLiteral("String")) { + if (auto literal = Args_[1]->GetLiteral("String")) { TString targetType; if (!GetDataTypeStringNode(ctx, *this, 1, &targetType)) { return false; } - repackArgs.push_back(Args[1]->Q(targetType)); + repackArgs.push_back(Args_[1]->Q(targetType)); } else { - repackArgs.push_back(Args[1]); + repackArgs.push_back(Args_[1]); } TVector<TNodePtr> column; - auto namePtr = Args[0]->GetColumnName(); + auto namePtr = Args_[0]->GetColumnName(); if (!namePtr || !*namePtr) { - ctx.Error(Pos) << GetCallExplain() << " expect as first argument column name"; + ctx.Error(Pos_) << GetCallExplain() << " expect as first argument column name"; return false; } auto memberName = *namePtr; - column.push_back(Args[0]->Q(*namePtr)); + column.push_back(Args_[0]->Q(*namePtr)); if (src->GetJoin() && !src->IsJoinKeysInitializing()) { - const auto sourcePtr = Args[0]->GetSourceName(); + const auto sourcePtr = Args_[0]->GetSourceName(); if (!sourcePtr || !*sourcePtr) { - ctx.Error(Pos) << GetOpName() << " required to have correlation name in case of JOIN for column at first parameter"; + ctx.Error(Pos_) << GetOpName() << " required to have correlation name in case of JOIN for column at first parameter"; return false; } - column.push_back(Args[0]->Q(*sourcePtr)); + column.push_back(Args_[0]->Q(*sourcePtr)); memberName = DotJoin(*sourcePtr, memberName); } if (!GetLabel()) { SetLabel(memberName); } repackArgs.push_back(BuildTuple(memberPos, column)); - if (Args.size() == 3) { - repackArgs.push_back(Args[2]); + if (Args_.size() == 3) { + repackArgs.push_back(Args_[2]); } - ++MinArgs; - ++MaxArgs; - Args.swap(repackArgs); + ++MinArgs_; + ++MaxArgs_; + Args_.swap(repackArgs); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TWeakFieldOp(Pos, Args); + return new TWeakFieldOp(Pos_, Args_); } }; @@ -1297,17 +1297,17 @@ public: TTableRow(TPosition pos, ui32 argsCount) : TAstAtomNode(pos, "row", 0) - , ArgsCount(argsCount) + , ArgsCount_(argsCount) {} bool DoInit(TContext& ctx, ISource* src) override { if (!src || src->IsFake()) { - ctx.Error(Pos) << "TableRow requires FROM section"; + ctx.Error(Pos_) << "TableRow requires FROM section"; return false; } - if (ArgsCount > 0) { - ctx.Error(Pos) << "TableRow requires exactly 0 arguments"; + if (ArgsCount_ > 0) { + ctx.Error(Pos_) << "TableRow requires exactly 0 arguments"; return false; } @@ -1316,15 +1316,15 @@ public: } void DoUpdateState() const final { - State.Set(ENodeState::Const, false); + State_.Set(ENodeState::Const, false); } TNodePtr DoClone() const final { - return MakeIntrusive<TTableRow>(Pos, ArgsCount); + return MakeIntrusive<TTableRow>(Pos_, ArgsCount_); } private: - ui32 ArgsCount; + ui32 ArgsCount_; }; TNodePtr BuildUdfUserTypeArg(TPosition pos, const TVector<TNodePtr>& args, TNodePtr customUserType) { @@ -1379,18 +1379,18 @@ class TCallableNode final: public INode { public: TCallableNode(TPosition pos, const TString& module, const TString& name, const TVector<TNodePtr>& args) : INode(pos) - , Module(module) - , Name(name) - , Args(args) + , Module_(module) + , Name_(name) + , Args_(args) {} bool DoInit(TContext& ctx, ISource* src) override { - if (Module == "yql") { + if (Module_ == "yql") { ui32 flags; TString nameParseError; - TPosition pos = Pos; + TPosition pos = Pos_; TString parsedName; - if (!TryStringContent(Name, parsedName, flags, nameParseError, pos)) { + if (!TryStringContent(Name_, parsedName, flags, nameParseError, pos)) { ctx.Error(pos) << "Failed to parse YQL: " << nameParseError; return false; } @@ -1399,56 +1399,56 @@ public: TAstParseResult ast = ParseAst(yql, ctx.Pool.get()); /// TODO: do not drop warnings if (ast.IsOk()) { - Node = AstNode(ast.Root->GetChild(0)); + Node_ = AstNode(ast.Root->GetChild(0)); } else { - ctx.Error(Pos) << "Failed to parse YQL: " << ast.Issues.ToString(); + ctx.Error(Pos_) << "Failed to parse YQL: " << ast.Issues.ToString(); return false; } if (src) { src->AllColumns(); } - } else if (ctx.Settings.ModuleMapping.contains(Module)) { - Node = Y("bind", Module + "_module", Q(Name)); + } else if (ctx.Settings.ModuleMapping.contains(Module_)) { + Node_ = Y("bind", Module_ + "_module", Q(Name_)); if (src) { src->AllColumns(); } } else { TNodePtr customUserType = nullptr; - if (Module == "Tensorflow" && Name == "RunBatch") { - if (Args.size() > 2) { + if (Module_ == "Tensorflow" && Name_ == "RunBatch") { + if (Args_.size() > 2) { auto passThroughAtom = Q("PassThrough"); - auto passThroughType = Y("StructMemberType", Y("ListItemType", Y("TypeOf", Args[1])), passThroughAtom); - customUserType = Y("AddMemberType", Args[2], passThroughAtom, passThroughType); - Args.erase(Args.begin() + 2); + auto passThroughType = Y("StructMemberType", Y("ListItemType", Y("TypeOf", Args_[1])), passThroughAtom); + customUserType = Y("AddMemberType", Args_[2], passThroughAtom, passThroughType); + Args_.erase(Args_.begin() + 2); } } - auto udfArgs = BuildUdfArgs(ctx, Pos, Args, nullptr, nullptr, customUserType); - Node = BuildUdf(ctx, Pos, Module, Name, udfArgs); + auto udfArgs = BuildUdfArgs(ctx, Pos_, Args_, nullptr, nullptr, customUserType); + Node_ = BuildUdf(ctx, Pos_, Module_, Name_, udfArgs); } - return Node->Init(ctx, src); + return Node_->Init(ctx, src); } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } void DoUpdateState() const override { - YQL_ENSURE(Node); - State.Set(ENodeState::Const, Node->IsConstant()); - State.Set(ENodeState::Aggregated, Node->IsAggregated()); + YQL_ENSURE(Node_); + State_.Set(ENodeState::Const, Node_->IsConstant()); + State_.Set(ENodeState::Aggregated, Node_->IsAggregated()); } TNodePtr DoClone() const override { - return new TCallableNode(Pos, Module, Name, Args); + return new TCallableNode(Pos_, Module_, Name_, Args_); } private: - TCiString Module; - TString Name; - TVector<TNodePtr> Args; - TNodePtr Node; + TCiString Module_; + TString Name_; + TVector<TNodePtr> Args_; + TNodePtr Node_; }; TNodePtr BuildCallable(TPosition pos, const TString& module, const TString& name, const TVector<TNodePtr>& args) { @@ -1470,54 +1470,54 @@ class TScriptUdf final: public INode { public: TScriptUdf(TPosition pos, const TString& moduleName, const TString& funcName, const TVector<TNodePtr>& args) : INode(pos) - , ModuleName(moduleName) - , FuncName(funcName) - , Args(args) + , ModuleName_(moduleName) + , FuncName_(funcName) + , Args_(args) {} bool DoInit(TContext& ctx, ISource* src) override { - const bool isPython = ModuleName.find(TStringBuf("Python")) != TString::npos; + const bool isPython = ModuleName_.find(TStringBuf("Python")) != TString::npos; if (!isPython) { - if (Args.size() != 2) { - ctx.Error(Pos) << ModuleName << " script declaration requires exactly two parameters"; + if (Args_.size() != 2) { + ctx.Error(Pos_) << ModuleName_ << " script declaration requires exactly two parameters"; return false; } } else { - if (Args.size() < 1 || Args.size() > 2) { - ctx.Error(Pos) << ModuleName << " script declaration requires one or two parameters"; + if (Args_.size() < 1 || Args_.size() > 2) { + ctx.Error(Pos_) << ModuleName_ << " script declaration requires one or two parameters"; return false; } } - auto nameAtom = BuildQuotedAtom(Pos, FuncName); - auto scriptNode = Args.back(); + auto nameAtom = BuildQuotedAtom(Pos_, FuncName_); + auto scriptNode = Args_.back(); if (!scriptNode->Init(ctx, src)) { return false; } - auto scriptStrPtr = Args.back()->GetLiteral("String"); + auto scriptStrPtr = Args_.back()->GetLiteral("String"); if (scriptStrPtr && scriptStrPtr->size() > SQL_MAX_INLINE_SCRIPT_LEN) { scriptNode = ctx.UniversalAlias("scriptudf", std::move(scriptNode)); } INode::TPtr type; - if (Args.size() == 2) { - auto literal = Args[0]->GetLiteral("String"); + if (Args_.size() == 2) { + auto literal = Args_[0]->GetLiteral("String"); if (literal) { - auto parsed = ParseType(*literal, *ctx.Pool, ctx.Issues, Args[0]->GetPos()); + auto parsed = ParseType(*literal, *ctx.Pool, ctx.Issues, Args_[0]->GetPos()); if (!parsed) { - ctx.Error(Args[0]->GetPos()) << "Failed to parse script signature"; + ctx.Error(Args_[0]->GetPos()) << "Failed to parse script signature"; return false; } type = AstNode(parsed); } else { - type = Args[0]; + type = Args_[0]; } } else { // Python supports getting functions signatures right from docstrings type = Y("EvaluateType", Y("ParseTypeHandle", Y("Apply", Y("bind", "core_module", Q("PythonFuncSignature")), - Q(ModuleName), + Q(ModuleName_), scriptNode, Y("String", nameAtom) ))); @@ -1527,28 +1527,28 @@ public: return false; } - Node = Y("ScriptUdf", Q(ModuleName), nameAtom, type, scriptNode); + Node_ = Y("ScriptUdf", Q(ModuleName_), nameAtom, type, scriptNode); return true; } TAstNode* Translate(TContext& ctx) const override { Y_UNUSED(ctx); - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } void DoUpdateState() const override { - State.Set(ENodeState::Const, true); + State_.Set(ENodeState::Const, true); } TNodePtr DoClone() const final { - return new TScriptUdf(GetPos(), ModuleName, FuncName, CloneContainer(Args)); + return new TScriptUdf(GetPos(), ModuleName_, FuncName_, CloneContainer(Args_)); } private: - TString ModuleName; - TString FuncName; - TVector<TNodePtr> Args; - TNodePtr Node; + TString ModuleName_; + TString FuncName_; + TVector<TNodePtr> Args_; + TNodePtr Node_; }; template <bool Sorted> @@ -1556,26 +1556,26 @@ class TYqlToDict final: public TCallNode { public: TYqlToDict(TPosition pos, const TString& mode, const TVector<TNodePtr>& args) : TCallNode(pos, "ToDict", 4, 4, args) - , Mode(mode) + , Mode_(mode) {} private: TCallNode::TPtr DoClone() const override { - return new TYqlToDict<Sorted>(GetPos(), Mode, CloneContainer(Args)); + return new TYqlToDict<Sorted>(GetPos(), Mode_, CloneContainer(Args_)); } bool DoInit(TContext& ctx, ISource* src) override { - if (Args.size() != 1) { - ctx.Error(Pos) << "ToDict required exactly one argument"; + if (Args_.size() != 1) { + ctx.Error(Pos_) << "ToDict required exactly one argument"; return false; } - Args.push_back(BuildLambda(Pos, Y("val"), Y("Nth", "val", Q("0")))); - Args.push_back(BuildLambda(Pos, Y("val"), Y("Nth", "val", Q("1")))); - Args.push_back(Q(Y(Q(Sorted ? "Sorted" : "Hashed"), Q(Mode)))); + Args_.push_back(BuildLambda(Pos_, Y("val"), Y("Nth", "val", Q("0")))); + Args_.push_back(BuildLambda(Pos_, Y("val"), Y("Nth", "val", Q("1")))); + Args_.push_back(Q(Y(Q(Sorted ? "Sorted" : "Hashed"), Q(Mode_)))); return TCallNode::DoInit(ctx, src); } private: - TString Mode; + TString Mode_; }; template <bool IsStart> @@ -1597,11 +1597,11 @@ private: auto window = src->GetHoppingWindowSpec(); if (!window) { - ctx.Error(Pos) << "No hopping window parameters in aggregation"; + ctx.Error(Pos_) << "No hopping window parameters in aggregation"; return false; } - Nodes.clear(); + Nodes_.clear(); if (!IsStart) { Add("Member", "row", Q("_yql_time")); @@ -1615,7 +1615,7 @@ private: } void DoUpdateState() const override { - State.Set(ENodeState::Aggregated, true); + State_.Set(ENodeState::Aggregated, true); } }; @@ -1623,12 +1623,12 @@ class TInvalidBuiltin final: public INode { public: TInvalidBuiltin(TPosition pos, const TString& info) : INode(pos) - , Info(info) + , Info_(info) { } bool DoInit(TContext& ctx, ISource*) override { - ctx.Error(Pos) << Info; + ctx.Error(Pos_) << Info_; return false; } @@ -1640,7 +1640,7 @@ public: return {}; } private: - TString Info; + TString Info_; }; enum EAggrFuncTypeCallback { diff --git a/yql/essentials/sql/v0/context.cpp b/yql/essentials/sql/v0/context.cpp index 01f2c1e71b3..4e9a03f387e 100644 --- a/yql/essentials/sql/v0/context.cpp +++ b/yql/essentials/sql/v0/context.cpp @@ -46,9 +46,9 @@ THashMap<TStringBuf, TPragmaField> CTX_PRAGMA_FIELDS = { TContext::TContext(const NSQLTranslation::TTranslationSettings& settings, TIssues& issues) - : ClusterMapping(settings.ClusterMapping) - , PathPrefix(settings.PathPrefix) - , ClusterPathPrefixes(settings.ClusterPathPrefixes) + : ClusterMapping_(settings.ClusterMapping) + , PathPrefix_(settings.PathPrefix) + , ClusterPathPrefixes_(settings.ClusterPathPrefixes) , Settings(settings) , Pool(new TMemoryPool(4096)) , Issues(issues) @@ -57,7 +57,7 @@ TContext::TContext(const NSQLTranslation::TTranslationSettings& settings, , HasPendingErrors(false) , Libraries(settings.Libraries) { - Position.File = settings.File; + Position_.File = settings.File; for (auto& flag: settings.Flags) { bool value = true; @@ -78,7 +78,7 @@ TContext::~TContext() } const NYql::TPosition& TContext::Pos() const { - return Position; + return Position_; } TString TContext::MakeName(const TString& name) { @@ -141,8 +141,8 @@ IOutputStream& TContext::MakeIssue(ESeverity severity, TIssueCode code, NYql::TP auto& curIssue = Issues.back(); curIssue.Severity = severity; curIssue.IssueCode = code; - IssueMsgHolder.Reset(new TStringOutput(*Issues.back().MutableMessage())); - return *IssueMsgHolder; + IssueMsgHolder_.Reset(new TStringOutput(*Issues.back().MutableMessage())); + return *IssueMsgHolder_; } bool TContext::SetPathPrefix(const TString& value, TMaybe<TString> arg) { @@ -152,7 +152,7 @@ bool TContext::SetPathPrefix(const TString& value, TMaybe<TString> arg) { || *arg == RtmrProviderName ) { - ProviderPathPrefixes[*arg] = value; + ProviderPathPrefixes_[*arg] = value; return true; } @@ -163,27 +163,27 @@ bool TContext::SetPathPrefix(const TString& value, TMaybe<TString> arg) { return false; } - ClusterPathPrefixes[normalizedClusterName] = value; + ClusterPathPrefixes_[normalizedClusterName] = value; } else { - PathPrefix = value; + PathPrefix_ = value; } return true; } TNodePtr TContext::GetPrefixedPath(const TString& cluster, const TDeferredAtom& path) { - auto* clusterPrefix = ClusterPathPrefixes.FindPtr(cluster); + auto* clusterPrefix = ClusterPathPrefixes_.FindPtr(cluster); if (clusterPrefix && !clusterPrefix->empty()) { return AddTablePathPrefix(*this, *clusterPrefix, path); } else { auto provider = GetClusterProvider(cluster); YQL_ENSURE(provider.Defined()); - auto* providerPrefix = ProviderPathPrefixes.FindPtr(*provider); + auto* providerPrefix = ProviderPathPrefixes_.FindPtr(*provider); if (providerPrefix && !providerPrefix->empty()) { return AddTablePathPrefix(*this, *providerPrefix, path); - } else if (!PathPrefix.empty()) { - return AddTablePathPrefix(*this, PathPrefix, path); + } else if (!PathPrefix_.empty()) { + return AddTablePathPrefix(*this, PathPrefix_, path); } return path.Build(); @@ -338,22 +338,22 @@ bool TContext::UseUnordered(const TTableRef& table) const { } TTranslation::TTranslation(TContext& ctx) - : Ctx(ctx) + : Ctx_(ctx) { } TContext& TTranslation::Context() { - return Ctx; + return Ctx_; } IOutputStream& TTranslation::Error() { - return Ctx.Error(); + return Ctx_.Error(); } TNodePtr TTranslation::GetNamedNode(const TString& name) { - auto mapIt = Ctx.NamedNodes.find(name); - if (mapIt == Ctx.NamedNodes.end()) { - Ctx.Error() << "Unknown name: " << name; + auto mapIt = Ctx_.NamedNodes.find(name); + if (mapIt == Ctx_.NamedNodes.end()) { + Ctx_.Error() << "Unknown name: " << name; return nullptr; } Y_DEBUG_ABORT_UNLESS(!mapIt->second.empty()); @@ -362,9 +362,9 @@ TNodePtr TTranslation::GetNamedNode(const TString& name) { void TTranslation::PushNamedNode(const TString& name, TNodePtr node) { Y_DEBUG_ABORT_UNLESS(node); - auto mapIt = Ctx.NamedNodes.find(name); - if (mapIt == Ctx.NamedNodes.end()) { - auto result = Ctx.NamedNodes.insert(std::make_pair(name, TStack<TNodePtr>())); + auto mapIt = Ctx_.NamedNodes.find(name); + if (mapIt == Ctx_.NamedNodes.end()) { + auto result = Ctx_.NamedNodes.insert(std::make_pair(name, TStack<TNodePtr>())); Y_DEBUG_ABORT_UNLESS(result.second); mapIt = result.first; } @@ -373,12 +373,12 @@ void TTranslation::PushNamedNode(const TString& name, TNodePtr node) { } void TTranslation::PopNamedNode(const TString& name) { - auto mapIt = Ctx.NamedNodes.find(name); - Y_DEBUG_ABORT_UNLESS(mapIt != Ctx.NamedNodes.end()); + auto mapIt = Ctx_.NamedNodes.find(name); + Y_DEBUG_ABORT_UNLESS(mapIt != Ctx_.NamedNodes.end()); Y_DEBUG_ABORT_UNLESS(mapIt->second.size() > 0); mapIt->second.pop(); if (mapIt->second.empty()) { - Ctx.NamedNodes.erase(mapIt); + Ctx_.NamedNodes.erase(mapIt); } } diff --git a/yql/essentials/sql/v0/context.h b/yql/essentials/sql/v0/context.h index 6e669fff5a5..4c08659ce68 100644 --- a/yql/essentials/sql/v0/context.h +++ b/yql/essentials/sql/v0/context.h @@ -39,14 +39,14 @@ namespace NSQLTranslationV0 { template <typename TToken> const TString& Token(const TToken& token) { - Position.Row = token.GetLine(); - Position.Column = token.GetColumn() + 1; + Position_.Row = token.GetLine(); + Position_.Column = token.GetColumn() + 1; return token.GetValue(); } template <typename TToken> TPosition TokenPosition(const TToken& token) { - TPosition pos = Position; + TPosition pos = Position_; pos.Row = token.GetLine(); pos.Column = token.GetColumn() + 1; return pos; @@ -68,7 +68,7 @@ namespace NSQLTranslationV0 { } TMaybe<TString> GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const { - auto provider = ClusterMapping.GetClusterProvider(cluster, normalizedClusterName); + auto provider = ClusterMapping_.GetClusterProvider(cluster, normalizedClusterName); if (!provider) { if (Settings.AssumeYdbOnClusterWithSlash && cluster.StartsWith('/')) { normalizedClusterName = cluster; @@ -100,11 +100,11 @@ namespace NSQLTranslationV0 { void PopBlockShortcuts(); void BodyPart() { - IntoHeading = false; + IntoHeading_ = false; } bool IsParseHeading() const { - return IntoHeading; + return IntoHeading_; } bool DeclareVariable(const TString& varName, const TNodePtr& typeNode); @@ -116,13 +116,13 @@ namespace NSQLTranslationV0 { IOutputStream& MakeIssue(NYql::ESeverity severity, NYql::TIssueCode code, NYql::TPosition pos); private: - NYql::TPosition Position; - THolder<TStringOutput> IssueMsgHolder; - NSQLTranslation::TClusterMapping ClusterMapping; - TString PathPrefix; - THashMap<TString, TString> ProviderPathPrefixes; - THashMap<TString, TString> ClusterPathPrefixes; - bool IntoHeading = true; + NYql::TPosition Position_; + THolder<TStringOutput> IssueMsgHolder_; + NSQLTranslation::TClusterMapping ClusterMapping_; + TString PathPrefix_; + THashMap<TString, TString> ProviderPathPrefixes_; + THashMap<TString, TString> ClusterPathPrefixes_; + bool IntoHeading_ = true; public: THashMap<TString, TNodePtr> Variables; @@ -181,16 +181,16 @@ namespace NSQLTranslationV0 { template <typename TToken> const TString& Token(const TToken& token) { - return Ctx.Token(token); + return Ctx_.Token(token); } template <typename TToken> TString Identifier(const TToken& token) { - return IdContent(Ctx, Token(token)); + return IdContent(Ctx_, Token(token)); } TString Identifier(const TString& str) const { - return IdContent(Ctx, str); + return IdContent(Ctx_, str); } TNodePtr GetNamedNode(const TString& name); @@ -212,6 +212,6 @@ namespace NSQLTranslationV0 { TString AltDescription(const google::protobuf::Message& node, ui32 altCase, const google::protobuf::Descriptor* descr) const; protected: - TContext& Ctx; + TContext& Ctx_; }; } // namespace NSQLTranslationV0 diff --git a/yql/essentials/sql/v0/insert.cpp b/yql/essentials/sql/v0/insert.cpp index 9558a04f0eb..dbb5afe54b5 100644 --- a/yql/essentials/sql/v0/insert.cpp +++ b/yql/essentials/sql/v0/insert.cpp @@ -23,25 +23,25 @@ class TModifySourceBase: public ISource { public: TModifySourceBase(TPosition pos, const TVector<TString>& columnsHint) : ISource(pos) - , ColumnsHint(columnsHint) + , ColumnsHint_(columnsHint) { } bool AddFilter(TContext& ctx, TNodePtr filter) override { Y_UNUSED(filter); - ctx.Error(Pos) << "Source does not allow filtering"; + ctx.Error(Pos_) << "Source does not allow filtering"; return false; } bool AddGroupKey(TContext& ctx, const TString& column) override { Y_UNUSED(column); - ctx.Error(Pos) << "Source does not allow grouping"; + ctx.Error(Pos_) << "Source does not allow grouping"; return false; } bool AddAggregation(TContext& ctx, TAggregationPtr aggr) override { Y_UNUSED(aggr); - ctx.Error(Pos) << "Source does not allow aggregation"; + ctx.Error(Pos_) << "Source does not allow aggregation"; return false; } @@ -58,24 +58,24 @@ public: } protected: - TVector<TString> ColumnsHint; - TString OperationHumanName; + TVector<TString> ColumnsHint_; + TString OperationHumanName_; }; class TUpdateByValues: public TModifySourceBase { public: TUpdateByValues(TPosition pos, const TString& operationHumanName, const TVector<TString>& columnsHint, const TVector<TNodePtr>& values) : TModifySourceBase(pos, columnsHint) - , OperationHumanName(operationHumanName) - , Values(values) + , OperationHumanName_(operationHumanName) + , Values_(values) {} bool DoInit(TContext& ctx, ISource* src) override { - if (ColumnsHint.size() != Values.size()) { - ctx.Error(Pos) << "VALUES have " << Values.size() << " columns, " << OperationHumanName << " expects: " << ColumnsHint.size(); + if (ColumnsHint_.size() != Values_.size()) { + ctx.Error(Pos_) << "VALUES have " << Values_.size() << " columns, " << OperationHumanName_ << " expects: " << ColumnsHint_.size(); return false; } - for (auto& value: Values) { + for (auto& value: Values_) { if (!value->Init(ctx, src)) { return false; } @@ -85,56 +85,56 @@ public: TNodePtr Build(TContext& ctx) override { Y_UNUSED(ctx); - YQL_ENSURE(Values.size() == ColumnsHint.size()); + YQL_ENSURE(Values_.size() == ColumnsHint_.size()); auto structObj = Y("AsStruct"); - for (size_t i = 0; i < Values.size(); ++i) { - TString column = ColumnsHint[i]; - TNodePtr value = Values[i]; + for (size_t i = 0; i < Values_.size(); ++i) { + TString column = ColumnsHint_[i]; + TNodePtr value = Values_[i]; structObj = L(structObj, Q(Y(Q(column), value))); } - auto updateRow = BuildLambda(Pos, Y("row"), structObj); + auto updateRow = BuildLambda(Pos_, Y("row"), structObj); return updateRow; } TNodePtr DoClone() const final { - return new TUpdateByValues(Pos, OperationHumanName, ColumnsHint, CloneContainer(Values)); + return new TUpdateByValues(Pos_, OperationHumanName_, ColumnsHint_, CloneContainer(Values_)); } private: - TString OperationHumanName; + TString OperationHumanName_; protected: - TVector<TNodePtr> Values; + TVector<TNodePtr> Values_; }; class TModifyByValues: public TModifySourceBase { public: TModifyByValues(TPosition pos, const TString& operationHumanName, const TVector<TString>& columnsHint, const TVector<TVector<TNodePtr>>& values) : TModifySourceBase(pos, columnsHint) - , OperationHumanName(operationHumanName) - , Values(values) + , OperationHumanName_(operationHumanName) + , Values_(values) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); bool hasError = false; - for (const auto& row: Values) { - if (ColumnsHint.empty()) { - ctx.Error(Pos) << OperationHumanName << " ... VALUES requires specification of table columns"; + for (const auto& row: Values_) { + if (ColumnsHint_.empty()) { + ctx.Error(Pos_) << OperationHumanName_ << " ... VALUES requires specification of table columns"; hasError = true; continue; } - if (ColumnsHint.size() != row.size()) { - ctx.Error(Pos) << "VALUES have " << row.size() << " columns, " << OperationHumanName << " expects: " << ColumnsHint.size(); + if (ColumnsHint_.size() != row.size()) { + ctx.Error(Pos_) << "VALUES have " << row.size() << " columns, " << OperationHumanName_ << " expects: " << ColumnsHint_.size(); hasError = true; continue; } for (auto& value: row) { - if (!value->Init(ctx, FakeSource.Get())) { + if (!value->Init(ctx, FakeSource_.Get())) { hasError = true; continue; } @@ -146,11 +146,11 @@ public: TNodePtr Build(TContext& ctx) override { Y_UNUSED(ctx); auto tuple = Y(); - for (const auto& row: Values) { + for (const auto& row: Values_) { auto rowValues = Y("AsStruct"); - auto column = ColumnsHint.begin(); + auto column = ColumnsHint_.begin(); for (auto value: row) { - rowValues = L(rowValues, Q(Y(BuildQuotedAtom(Pos, *column), value))); + rowValues = L(rowValues, Q(Y(BuildQuotedAtom(Pos_, *column), value))); ++column; } tuple = L(tuple, rowValues); @@ -160,41 +160,41 @@ public: TNodePtr DoClone() const final { TVector<TVector<TNodePtr>> clonedValues; - clonedValues.reserve(Values.size()); - for (auto cur: Values) { + clonedValues.reserve(Values_.size()); + for (auto cur: Values_) { clonedValues.push_back(CloneContainer(cur)); } - return new TModifyByValues(Pos, OperationHumanName, ColumnsHint, clonedValues); + return new TModifyByValues(Pos_, OperationHumanName_, ColumnsHint_, clonedValues); } private: - TString OperationHumanName; - TVector<TVector<TNodePtr>> Values; - TSourcePtr FakeSource; + TString OperationHumanName_; + TVector<TVector<TNodePtr>> Values_; + TSourcePtr FakeSource_; }; class TModifyBySource: public TModifySourceBase { public: TModifyBySource(TPosition pos, const TString& operationHumanName, const TVector<TString>& columnsHint, TSourcePtr source) : TModifySourceBase(pos, columnsHint) - , OperationHumanName(operationHumanName) - , Source(std::move(source)) + , OperationHumanName_(operationHumanName) + , Source_(std::move(source)) {} void GetInputTables(TTableList& tableList) const override { - if (Source) { - return Source->GetInputTables(tableList); + if (Source_) { + return Source_->GetInputTables(tableList); } } bool DoInit(TContext& ctx, ISource* src) override { - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - const auto& sourceColumns = Source->GetColumns(); - const auto numColumns = !ColumnsHint.empty() && sourceColumns ? sourceColumns->List.size() : 0; - if (ColumnsHint.size() != numColumns) { - ctx.Error(Pos) << "SELECT has " << numColumns << " columns, " << OperationHumanName << " expects: " << ColumnsHint.size(); + const auto& sourceColumns = Source_->GetColumns(); + const auto numColumns = !ColumnsHint_.empty() && sourceColumns ? sourceColumns->List.size() : 0; + if (ColumnsHint_.size() != numColumns) { + ctx.Error(Pos_) << "SELECT has " << numColumns << " columns, " << OperationHumanName_ << " expects: " << ColumnsHint_.size(); return false; } if (numColumns) { @@ -203,7 +203,7 @@ public: for (size_t i = 0; i < numColumns; ++i) { bool hasName = sourceColumns->NamedColumns[i]; if (hasName) { - const auto& hintColumn = ColumnsHint[i]; + const auto& hintColumn = ColumnsHint_[i]; const auto& sourceColumn = sourceColumns->List[i]; if (hintColumn != sourceColumn) { if (!mismatchFound) { @@ -215,39 +215,39 @@ public: } } if (mismatchFound) { - ctx.Warning(Pos, TIssuesIds::YQL_SOURCE_SELECT_COLUMN_MISMATCH) << str.Str(); + ctx.Warning(Pos_, TIssuesIds::YQL_SOURCE_SELECT_COLUMN_MISMATCH) << str.Str(); } } return true; } TNodePtr Build(TContext& ctx) override { - auto input = Source->Build(ctx); - if (ColumnsHint.empty() || !Source->GetColumns()) { + auto input = Source_->Build(ctx); + if (ColumnsHint_.empty() || !Source_->GetColumns()) { return input; } - auto srcColumn = Source->GetColumns()->List.begin(); + auto srcColumn = Source_->GetColumns()->List.begin(); auto structObj = Y("AsStruct"); - for (auto column: ColumnsHint) { - structObj = L(structObj, Q(Y(BuildQuotedAtom(Pos, column), - Y("Member", "row", BuildQuotedAtom(Pos, *srcColumn)) + for (auto column: ColumnsHint_) { + structObj = L(structObj, Q(Y(BuildQuotedAtom(Pos_, column), + Y("Member", "row", BuildQuotedAtom(Pos_, *srcColumn)) ))); ++srcColumn; } - return Y("OrderedMap", input, BuildLambda(Pos, Y("row"), structObj)); + return Y("OrderedMap", input, BuildLambda(Pos_, Y("row"), structObj)); } TNodePtr DoClone() const final { - return new TModifyBySource(Pos, OperationHumanName, ColumnsHint, Source->CloneSource()); + return new TModifyBySource(Pos_, OperationHumanName_, ColumnsHint_, Source_->CloneSource()); } bool IsOrdered() const final { - return Source->IsOrdered(); + return Source_->IsOrdered(); } private: - TString OperationHumanName; - TSourcePtr Source; + TString OperationHumanName_; + TSourcePtr Source_; }; TSourcePtr BuildWriteValues(TPosition pos, const TString& operationHumanName, const TVector<TString>& columnsHint, const TVector<TVector<TNodePtr>>& values) { @@ -270,83 +270,83 @@ class TWriteColumnsNode: public TAstListNode { public: TWriteColumnsNode(TPosition pos, const TTableRef& table, EWriteColumnMode mode, TSourcePtr values = nullptr, TNodePtr options = nullptr) : TAstListNode(pos) - , Table(table) - , Mode(mode) - , Values(std::move(values)) - , Options(std::move(options)) + , Table_(table) + , Mode_(mode) + , Values_(std::move(values)) + , Options_(std::move(options)) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } void ResetSource(TSourcePtr source) { - TableSource = std::move(source); + TableSource_ = std::move(source); } void ResetUpdate(TSourcePtr update) { - Update = std::move(update); + Update_ = std::move(update); } bool DoInit(TContext& ctx, ISource* src) override { - if (!Table.Check(ctx)) { + if (!Table_.Check(ctx)) { return false; } TTableList tableList; TNodePtr values; auto options = Y(); - if (Options) { - if (!Options->Init(ctx, src)) { + if (Options_) { + if (!Options_->Init(ctx, src)) { return false; } - options = L(Options); + options = L(Options_); } ISource* underlyingSrc = src; - if (TableSource) { + if (TableSource_) { ctx.PushBlockShortcuts(); - if (!TableSource->Init(ctx, src) || !TableSource->InitFilters(ctx)) { + if (!TableSource_->Init(ctx, src) || !TableSource_->InitFilters(ctx)) { return false; } - options = L(options, Q(Y(Q("filter"), TableSource->BuildFilterLambda(ctx.GroundBlockShortcuts(Pos))))); + options = L(options, Q(Y(Q("filter"), TableSource_->BuildFilterLambda(ctx.GroundBlockShortcuts(Pos_))))); } bool unordered = false; ctx.PushBlockShortcuts(); - if (Values) { - if (!Values->Init(ctx, TableSource.Get())) { + if (Values_) { + if (!Values_->Init(ctx, TableSource_.Get())) { return false; } - Values->GetInputTables(tableList); - underlyingSrc = Values.Get(); - values = Values->Build(ctx); + Values_->GetInputTables(tableList); + underlyingSrc = Values_.Get(); + values = Values_->Build(ctx); if (!values) { return false; } - unordered = !Values->IsOrdered(); + unordered = !Values_->IsOrdered(); } - TNodePtr node(BuildInputTables(Pos, tableList, false)); + TNodePtr node(BuildInputTables(Pos_, tableList, false)); if (!node->Init(ctx, underlyingSrc)) { return false; } - if (Update) { - if (!Update->Init(ctx, TableSource.Get()) || !Update->InitFilters(ctx)) { + if (Update_) { + if (!Update_->Init(ctx, TableSource_.Get()) || !Update_->InitFilters(ctx)) { return false; } - options = L(options, Q(Y(Q("update"), Update->Build(ctx)))); + options = L(options, Q(Y(Q("update"), Update_->Build(ctx)))); } - auto write = BuildWriteTable(Pos, "values", Table, Mode, std::move(options)); - if (!write->Init(ctx, FakeSource.Get())) { + auto write = BuildWriteTable(Pos_, "values", Table_, Mode_, std::move(options)); + if (!write->Init(ctx, FakeSource_.Get())) { return false; } - node = ctx.GroundBlockShortcuts(Pos, node); + node = ctx.GroundBlockShortcuts(Pos_, node); if (values) { node = L(node, Y("let", "values", values)); - if (unordered && ctx.UseUnordered(Table)) { + if (unordered && ctx.UseUnordered(Table_)) { node = L(node, Y("let", "values", Y("Unordered", "values"))); } } else { @@ -364,13 +364,13 @@ public: } protected: - TTableRef Table; - TSourcePtr TableSource; - EWriteColumnMode Mode; - TSourcePtr Values; - TSourcePtr Update; - TSourcePtr FakeSource; - TNodePtr Options; + TTableRef Table_; + TSourcePtr TableSource_; + EWriteColumnMode Mode_; + TSourcePtr Values_; + TSourcePtr Update_; + TSourcePtr FakeSource_; + TNodePtr Options_; }; EWriteColumnMode ToWriteColumnsMode(ESQLWriteColumnMode sqlWriteColumnMode) { @@ -401,7 +401,7 @@ class TEraseColumnsNode: public TAstListNode { public: TEraseColumnsNode(TPosition pos, const TVector<TString>& columns) : TAstListNode(pos) - , Columns(columns) + , Columns_(columns) { } @@ -410,7 +410,7 @@ public: Y_UNUSED(src); TNodePtr columnList = Y(); - for (const auto& column: Columns) { + for (const auto& column: Columns_) { columnList->Add(Q(column)); } @@ -424,7 +424,7 @@ public: } private: - TVector<TString> Columns; + TVector<TString> Columns_; }; diff --git a/yql/essentials/sql/v0/join.cpp b/yql/essentials/sql/v0/join.cpp index 7a63e796599..7303322f124 100644 --- a/yql/essentials/sql/v0/join.cpp +++ b/yql/essentials/sql/v0/join.cpp @@ -46,7 +46,7 @@ class TJoinBase: public IJoin { public: TJoinBase(TPosition pos, TVector<TSourcePtr>&& sources) : IJoin(pos) - , Sources(std::move(sources)) + , Sources_(std::move(sources)) { } @@ -56,7 +56,7 @@ public: return true; } if (const auto sourceName = *column.GetSourceName()) { - for (auto& source: Sources) { + for (auto& source: Sources_) { if (sourceName == source->GetLabel()) { srcByName = source.Get(); break; @@ -79,7 +79,7 @@ public: if (srcByName) { srcByName->AllColumns(); } else { - for (auto& source: Sources) { + for (auto& source: Sources_) { source->AllColumns(); } } @@ -91,7 +91,7 @@ public: if (!srcByName->AddColumn(ctx, column)) { return {}; } - if (!KeysInitializing && !column.IsAsterisk()) { + if (!KeysInitializing_ && !column.IsAsterisk()) { column.SetUseSource(); } return true; @@ -100,7 +100,7 @@ public: TIntrusivePtr<TColumnNode> tryColumn = static_cast<TColumnNode*>(column.Clone().Get()); tryColumn->SetAsNotReliable(); TString lastAcceptedColumnSource; - for (auto& source: Sources) { + for (auto& source: Sources_) { if (source->AddColumn(ctx, *tryColumn)) { ++acceptedColumns; lastAcceptedColumnSource = source->GetLabel(); @@ -110,7 +110,7 @@ public: TStringBuilder sb; const auto& fullColumnName = FullColumnName(column); sb << "Column " << fullColumnName << " is not fit to any source"; - for (auto& source: Sources) { + for (auto& source: Sources_) { if (const auto mistype = source->FindColumnMistype(fullColumnName)) { sb << ". Did you mean " << mistype.GetRef() << "?"; break; @@ -126,30 +126,30 @@ public: } const TColumns* GetColumns() const override { - YQL_ENSURE(IsColumnDone, "Unable to GetColumns while it's not finished"); - return &JoinedColumns; + YQL_ENSURE(IsColumnDone_, "Unable to GetColumns while it's not finished"); + return &JoinedColumns_; } void GetInputTables(TTableList& tableList) const override { - for (auto& src: Sources) { + for (auto& src: Sources_) { src->GetInputTables(tableList); } ISource::GetInputTables(tableList); } TNodePtr BuildJoinKeys(TContext& ctx, const TVector<TDeferredAtom>& names) override { - const size_t n = JoinOps.size(); - TString what(Sources[n]->GetLabel()); + const size_t n = JoinOps_.size(); + TString what(Sources_[n]->GetLabel()); static const TSet<TString> noRightSourceJoinOps = {"LeftOnly", "LeftSemi"}; - for (size_t nn = n; nn > 0 && noRightSourceJoinOps.contains(JoinOps[nn-1]); --nn) { - what = Sources[nn-1]->GetLabel(); + for (size_t nn = n; nn > 0 && noRightSourceJoinOps.contains(JoinOps_[nn-1]); --nn) { + what = Sources_[nn-1]->GetLabel(); } - const TString with(Sources[n + 1]->GetLabel()); + const TString with(Sources_[n + 1]->GetLabel()); for (auto index = n; index <= n + 1; ++index) { - const auto& label = Sources[index]->GetLabel(); + const auto& label = Sources_[index]->GetLabel(); if (label.Contains('.')) { - ctx.Error(Sources[index]->GetPos()) << "Invalid label: " << label << ", unable to use name with dot symbol, you should use AS <simple alias name>"; + ctx.Error(Sources_[index]->GetPos()) << "Invalid label: " << label << ", unable to use name with dot symbol, you should use AS <simple alias name>"; return nullptr; } } @@ -164,8 +164,8 @@ public: TPosition pos(ctx.Pos()); TNodePtr expr; for (auto& name: names) { - auto lhs = BuildColumn(Pos, name, what); - auto rhs = BuildColumn(Pos, name, with); + auto lhs = BuildColumn(Pos_, name, what); + auto rhs = BuildColumn(Pos_, name, with); if (!lhs || !rhs) { return nullptr; } @@ -176,7 +176,7 @@ public: expr = eq; } } - if (expr && Sources.size() > 2) { + if (expr && Sources_.size() > 2) { ctx.Warning(ctx.Pos(), TIssuesIds::YQL_MULTIWAY_JOIN_WITH_USING) << "Multi-way JOINs should be connected with ON clause instead of USING clause"; } return expr; @@ -185,8 +185,8 @@ public: bool DoInit(TContext& ctx, ISource* src) override; void SetupJoin(const TString& opName, TNodePtr expr) override { - JoinOps.push_back(opName); - JoinExprs.push_back(expr); + JoinOps_.push_back(opName); + JoinExprs_.push_back(expr); } protected: @@ -197,7 +197,7 @@ protected: } bool InitKeysOrFilters(TContext& ctx, ui32 joinIdx, TNodePtr expr) { - const TString joinOp(JoinOps[joinIdx]); + const TString joinOp(JoinOps_[joinIdx]); const TCallNode* op = nullptr; if (expr) { const TString opName(expr->GetOpName()); @@ -213,12 +213,12 @@ protected: ui32 idx = 0; THashMap<TString, ui32> sources; - for (auto& source: Sources) { + for (auto& source: Sources_) { sources.insert({ source->GetLabel(), idx }); ++idx; } - if (sources.size() != Sources.size()) { - ctx.Error(expr ? expr->GetPos() : Pos) << "JOIN: all correlation names must be different"; + if (sources.size() != Sources_.size()) { + ctx.Error(expr ? expr->GetPos() : Pos_) << "JOIN: all correlation names must be different"; return false; } @@ -292,7 +292,7 @@ protected: } if (joinedSources.size() == 1) { - ctx.Error(expr ? expr->GetPos() : Pos) << "JOIN: different correlation names are required for joined tables"; + ctx.Error(expr ? expr->GetPos() : Pos_) << "JOIN: different correlation names are required for joined tables"; return false; } @@ -307,7 +307,7 @@ protected: } } - KeysInitializing = true; + KeysInitializing_ = true; if (op) { ctx.PushBlockShortcuts(); for (auto& arg : op->GetArgs()) { @@ -315,56 +315,56 @@ protected: return false; } } - KeysGround = ctx.GroundBlockShortcuts(GetPos(), KeysGround); + KeysGround_ = ctx.GroundBlockShortcuts(GetPos(), KeysGround_); Y_DEBUG_ABORT_UNLESS(leftSource); if (sameColumnNamePtr) { - SameKeyMap[*sameColumnNamePtr].insert(*leftSource); - SameKeyMap[*sameColumnNamePtr].insert(*rightSource); + SameKeyMap_[*sameColumnNamePtr].insert(*leftSource); + SameKeyMap_[*sameColumnNamePtr].insert(*rightSource); } } - if (joinIdx == JoinDescrs.size()) { - JoinDescrs.push_back(TJoinDescr(joinOp)); + if (joinIdx == JoinDescrs_.size()) { + JoinDescrs_.push_back(TJoinDescr(joinOp)); } - JoinDescrs.back().Keys.push_back({ { leftSourceIdx, op ? op->GetArgs()[leftArg] : nullptr}, + JoinDescrs_.back().Keys.push_back({ { leftSourceIdx, op ? op->GetArgs()[leftArg] : nullptr}, { rightSourceIdx, op ? op->GetArgs()[rightArg] : nullptr } }); - KeysInitializing = false; + KeysInitializing_ = false; return true; } bool IsJoinKeysInitializing() const override { - return KeysInitializing; + return KeysInitializing_; } protected: - TVector<TString> JoinOps; - TVector<TNodePtr> JoinExprs; - TVector<TJoinDescr> JoinDescrs; - TNodePtr KeysGround; - THashMap<TString, THashSet<TString>> SameKeyMap; - TVector<TSourcePtr> Sources; - TColumns JoinedColumns; - bool KeysInitializing = false; - bool IsColumnDone = false; + TVector<TString> JoinOps_; + TVector<TNodePtr> JoinExprs_; + TVector<TJoinDescr> JoinDescrs_; + TNodePtr KeysGround_; + THashMap<TString, THashSet<TString>> SameKeyMap_; + TVector<TSourcePtr> Sources_; + TColumns JoinedColumns_; + bool KeysInitializing_ = false; + bool IsColumnDone_ = false; void FinishColumns() override { - if (IsColumnDone) { + if (IsColumnDone_) { return; } - YQL_ENSURE(JoinOps.size()+1 == Sources.size()); + YQL_ENSURE(JoinOps_.size()+1 == Sources_.size()); bool excludeNextSource = false; - decltype(JoinOps)::const_iterator opIter = JoinOps.begin(); - for (auto& src: Sources) { + decltype(JoinOps_)::const_iterator opIter = JoinOps_.begin(); + for (auto& src: Sources_) { if (excludeNextSource) { excludeNextSource = false; - if (opIter != JoinOps.end()) { + if (opIter != JoinOps_.end()) { ++opIter; } continue; } - if (opIter != JoinOps.end()) { + if (opIter != JoinOps_.end()) { auto joinOper = *opIter; ++opIter; if (joinOper == "LeftSemi" || joinOper == "LeftOnly") { @@ -381,31 +381,31 @@ protected: TColumns upColumns; upColumns.Merge(*columnsPtr); upColumns.SetPrefix(src->GetLabel()); - JoinedColumns.Merge(upColumns); + JoinedColumns_.Merge(upColumns); } - IsColumnDone = true; + IsColumnDone_ = true; } }; bool TJoinBase::DoInit(TContext& ctx, ISource* src) { - for (auto& source: Sources) { + for (auto& source: Sources_) { if (!source->Init(ctx, src)) { return false; } } - YQL_ENSURE(JoinOps.size() == JoinExprs.size(), "Invalid join exprs number"); + YQL_ENSURE(JoinOps_.size() == JoinExprs_.size(), "Invalid join exprs number"); const TSet<TString> allowedJoinOps = {"Inner", "Left", "Right", "Full", "LeftOnly", "RightOnly", "Exclusion", "LeftSemi", "RightSemi", "Cross"}; - for (auto& opName: JoinOps) { + for (auto& opName: JoinOps_) { if (!allowedJoinOps.contains(opName)) { - ctx.Error(Pos) << "Invalid join op: " << opName; + ctx.Error(Pos_) << "Invalid join op: " << opName; return false; } } ui32 idx = 0; - for (auto expr: JoinExprs) { + for (auto expr: JoinExprs_) { if (expr) { TDeque<TNodePtr> conjQueue; conjQueue.push_back(expr); @@ -429,15 +429,15 @@ bool TJoinBase::DoInit(TContext& ctx, ISource* src) { } TSet<ui32> joinedSources; - for (auto& descr: JoinDescrs) { + for (auto& descr: JoinDescrs_) { for (auto& key : descr.Keys) { joinedSources.insert(key.first.Source); joinedSources.insert(key.second.Source); } } - for (idx = 0; idx < Sources.size(); ++idx) { + for (idx = 0; idx < Sources_.size(); ++idx) { if (!joinedSources.contains(idx)) { - ctx.Error(Sources[idx]->GetPos()) << "Source: " << Sources[idx]->GetLabel() << " was not used in join expressions"; + ctx.Error(Sources_[idx]->GetPos()) << "Source: " << Sources_[idx]->GetLabel() << " was not used in join expressions"; return false; } } @@ -455,10 +455,10 @@ public: TNodePtr Build(TContext& ctx) override { TMap<std::pair<TString, TString>, TNodePtr> extraColumns; TNodePtr joinTree; - for (auto& descr: JoinDescrs) { + for (auto& descr: JoinDescrs_) { auto leftBranch = joinTree; if (!leftBranch) { - leftBranch = BuildQuotedAtom(Pos, Sources[descr.Keys[0].first.Source]->GetLabel()); + leftBranch = BuildQuotedAtom(Pos_, Sources_[descr.Keys[0].first.Source]->GetLabel()); } auto leftKeys = GetColumnNames(ctx, extraColumns, descr.Keys, true); auto rightKeys = GetColumnNames(ctx, extraColumns, descr.Keys, false); @@ -469,7 +469,7 @@ public: joinTree = Q(Y( Q(descr.Op), leftBranch, - BuildQuotedAtom(Pos, Sources[descr.Keys[0].second.Source]->GetLabel()), + BuildQuotedAtom(Pos_, Sources_[descr.Keys[0].second.Source]->GetLabel()), leftKeys, rightKeys, Q(Y()) @@ -478,7 +478,7 @@ public: TNodePtr equiJoin(Y("EquiJoin")); bool ordered = false; - for (auto& source: Sources) { + for (auto& source: Sources_) { auto sourceNode = source->Build(ctx); if (!sourceNode) { return nullptr; @@ -494,7 +494,7 @@ public: return nullptr; } auto block = Y(Y("let", "flatten", sourceNode)); - block = L(block, Y("let", "flatten", Y(useOrderedForSource ? "OrderedFlatMap" : "FlatMap", "flatten", BuildLambda(Pos, Y("row"), flatten, "res")))); + block = L(block, Y("let", "flatten", Y(useOrderedForSource ? "OrderedFlatMap" : "FlatMap", "flatten", BuildLambda(Pos_, Y("row"), flatten, "res")))); sourceNode = Y("block", Q(L(block, Y("return", "flatten")))); } TNodePtr extraMembers; @@ -503,7 +503,7 @@ public: break; } if (!extraMembers) { - extraMembers = KeysGround ? KeysGround : Y(); + extraMembers = KeysGround_ ? KeysGround_ : Y(); } extraMembers = L( extraMembers, @@ -511,7 +511,7 @@ public: ); } if (extraMembers) { - sourceNode = Y(useOrderedForSource ? "OrderedMap" : "Map", sourceNode, BuildLambda(Pos, Y("row"), extraMembers, "row")); + sourceNode = Y(useOrderedForSource ? "OrderedMap" : "Map", sourceNode, BuildLambda(Pos_, Y("row"), extraMembers, "row")); } if (ctx.EnableSystemColumns && source->IsTableSource()) { sourceNode = Y("RemoveSystemMembers", sourceNode); @@ -525,24 +525,24 @@ public: } removeMembers = L( removeMembers, - Y("let", "row", Y("ForceRemoveMember", "row", BuildQuotedAtom(Pos, DotJoin(it.first.first, it.first.second)))) + Y("let", "row", Y("ForceRemoveMember", "row", BuildQuotedAtom(Pos_, DotJoin(it.first.first, it.first.second)))) ); } auto options = Y(); equiJoin = L(equiJoin, joinTree, Q(options)); if (removeMembers) { - equiJoin = Y(ordered ? "OrderedMap" : "Map", equiJoin, BuildLambda(Pos, Y("row"), removeMembers, "row")); + equiJoin = Y(ordered ? "OrderedMap" : "Map", equiJoin, BuildLambda(Pos_, Y("row"), removeMembers, "row")); } return equiJoin; } const THashMap<TString, THashSet<TString>>& GetSameKeysMap() const override { - return SameKeyMap; + return SameKeyMap_; } const TSet<TString> GetJoinLabels() const override { TSet<TString> labels; - for (auto& source: Sources) { + for (auto& source: Sources_) { const auto label = source->GetLabel(); YQL_ENSURE(label); labels.emplace(label); @@ -552,12 +552,12 @@ public: TPtr DoClone() const final { TVector<TSourcePtr> clonedSources; - for (auto& cur: Sources) { + for (auto& cur: Sources_) { clonedSources.push_back(cur->CloneSource()); } - auto newSource = MakeIntrusive<TEquiJoin>(Pos, std::move(clonedSources)); - newSource->JoinOps = JoinOps; - newSource->JoinExprs = CloneContainer(JoinExprs); + auto newSource = MakeIntrusive<TEquiJoin>(Pos_, std::move(clonedSources)); + newSource->JoinOps_ = JoinOps_; + newSource->JoinExprs_ = CloneContainer(JoinExprs_); return newSource; } @@ -571,7 +571,7 @@ private: Y_UNUSED(ctx); auto res = Y(); for (auto& it: keys) { - auto tableName = Sources[left ? it.first.Source : it.second.Source]->GetLabel(); + auto tableName = Sources_[left ? it.first.Source : it.second.Source]->GetLabel(); TString columnName; auto column = left ? it.first.Column : it.second.Column; if (!column) { @@ -587,8 +587,8 @@ private: extraColumns.insert({ std::make_pair(tableName, columnName), column }); } - res = L(res, BuildQuotedAtom(Pos, tableName)); - res = L(res, BuildQuotedAtom(Pos, columnName)); + res = L(res, BuildQuotedAtom(Pos_, tableName)); + res = L(res, BuildQuotedAtom(Pos_, columnName)); } return Q(res); diff --git a/yql/essentials/sql/v0/list_builtin.cpp b/yql/essentials/sql/v0/list_builtin.cpp index 1b510450824..9a59d052f80 100644 --- a/yql/essentials/sql/v0/list_builtin.cpp +++ b/yql/essentials/sql/v0/list_builtin.cpp @@ -6,101 +6,101 @@ namespace NSQLTranslationV0 { TAstNode* TListBuiltin::Translate(TContext& ctx) const { Y_UNUSED(ctx); - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } TNodePtr TListBuiltin::GetIdentityLambda() { - return BuildLambda(Pos, Y("arg"), Y(), "arg"); + return BuildLambda(Pos_, Y("arg"), Y(), "arg"); } TNodePtr TListBuiltin::SkipEmpty(TNodePtr arg) { - auto sameArgLambda = BuildLambda(Pos, Y(), AstNode("item")); - auto handleNotSkippableType = BuildLambda(Pos, Y(), Y("Just", "item")); + auto sameArgLambda = BuildLambda(Pos_, Y(), AstNode("item")); + auto handleNotSkippableType = BuildLambda(Pos_, Y(), Y("Just", "item")); auto checkOptional = Y("MatchType", "item", Q("Optional"), sameArgLambda, handleNotSkippableType); - auto checkOptionalLambda = BuildLambda(Pos, Y(), checkOptional); + auto checkOptionalLambda = BuildLambda(Pos_, Y(), checkOptional); auto checkList = Y("MatchType", "item", Q("List"), sameArgLambda, checkOptionalLambda); - return Y("OrderedFlatMap", arg, BuildLambda(Pos, Y("item"), checkList)); + return Y("OrderedFlatMap", arg, BuildLambda(Pos_, Y("item"), checkList)); } bool TListSortBuiltin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() < 1 || Args.size() > 2) { - ctx.Error(Pos) << "List" << OpName + if (Args_.size() < 1 || Args_.size() > 2) { + ctx.Error(Pos_) << "List" << OpName_ << " requires one or two parameters"; return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - if (Args.size() == 2) { - if (!Args[1]->Init(ctx, src)) { + if (Args_.size() == 2) { + if (!Args_[1]->Init(ctx, src)) { return false; } } else { - Args.push_back(GetIdentityLambda()); + Args_.push_back(GetIdentityLambda()); } - Node = Y(OpName, SkipEmpty(Args[0]), Y("Bool", Q(Asc ? "true" : "false")), Args[1]); + Node_ = Y(OpName_, SkipEmpty(Args_[0]), Y("Bool", Q(Asc_ ? "true" : "false")), Args_[1]); return true; } bool TListExtractBuiltin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() != 2) { - ctx.Error(Pos) << "List" << OpName + if (Args_.size() != 2) { + ctx.Error(Pos_) << "List" << OpName_ << " requires exactly two parameters"; return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(ctx, Args[1]).Build(); - Node = Y(OpName, SkipEmpty(Args[0]), Args[1]); + Args_[1] = MakeAtomFromExpression(ctx, Args_[1]).Build(); + Node_ = Y(OpName_, SkipEmpty(Args_[0]), Args_[1]); return true; } bool TListProcessBuiltin::CheckArgs(TContext& ctx, ISource* src) { - if (Args.size() < 2 ) { - ctx.Error(Pos) << "List" << OpName + if (Args_.size() < 2 ) { + ctx.Error(Pos_) << "List" << OpName_ << " requires at least two parameters"; return false; } - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (!arg->Init(ctx, src)) { return false; } } - OpLiteral = Args[1]->GetLiteral("String"); + OpLiteral_ = Args_[1]->GetLiteral("String"); return true; } TNodePtr TListProcessBuiltin::PrepareResult() { TNodePtr result; - if (OpLiteral) { - size_t modulePos = OpLiteral->find("::"); + if (OpLiteral_) { + size_t modulePos = OpLiteral_->find("::"); if (modulePos != TString::npos) { - const TString& module = OpLiteral->substr(0, modulePos); - const TString& function = OpLiteral->substr(modulePos + 2); + const TString& module = OpLiteral_->substr(0, modulePos); + const TString& function = OpLiteral_->substr(modulePos + 2); auto udf = Y("Udf", Q(module + "." + function)); result = Y("Apply", udf, "item"); } else { - result = Y(*OpLiteral, "item"); + result = Y(*OpLiteral_, "item"); } } else { - result = Y("Apply", Args[1], "item"); + result = Y("Apply", Args_[1], "item"); } - for (size_t i = 0; i < Args.size(); ++i) { + for (size_t i = 0; i < Args_.size(); ++i) { if (i > 1) { - result->Add(Args[i]); + result->Add(Args_[i]); } } @@ -113,12 +113,12 @@ bool TListMapBuiltin::DoInit(TContext& ctx, ISource* src) { return false; }; auto prepare = PrepareResult(); - auto just = BuildLambda(Pos, Y(), Y("Just", prepare)); - auto sameArgLambda = BuildLambda(Pos, Y(), prepare); + auto just = BuildLambda(Pos_, Y(), Y("Just", prepare)); + auto sameArgLambda = BuildLambda(Pos_, Y(), prepare); auto match = Y("MatchType", prepare, Q("Data"), just, sameArgLambda); - auto lambda = Flat ? BuildLambda(Pos, Y("item"), match) : GetMapLambda(); - Node = Y(OpName, - Flat ? SkipEmpty(Args[0]) : Args[0], + auto lambda = Flat_ ? BuildLambda(Pos_, Y("item"), match) : GetMapLambda(); + Node_ = Y(OpName_, + Flat_ ? SkipEmpty(Args_[0]) : Args_[0], lambda ); @@ -126,7 +126,7 @@ bool TListMapBuiltin::DoInit(TContext& ctx, ISource* src) { } TNodePtr TListMapBuiltin::GetMapLambda() { - return BuildLambda(Pos, Y("item"), PrepareResult()); + return BuildLambda(Pos_, Y("item"), PrepareResult()); } @@ -134,30 +134,30 @@ bool TListFilterBuiltin::DoInit(TContext& ctx, ISource* src) { if (!CheckArgs(ctx, src)) { return false; }; - Node = Y("OrderedFlatMap", - SkipEmpty(Args[0]), + Node_ = Y("OrderedFlatMap", + SkipEmpty(Args_[0]), GetFilterLambda() ); return true; } TNodePtr TListFilterBuiltin::GetFilterLambda() { - return BuildLambda(Pos, Y("item"), Y("OptionalIf", Y("Coalesce", PrepareResult(), Y("Bool", Q("false"))), "item")); + return BuildLambda(Pos_, Y("item"), Y("OptionalIf", Y("Coalesce", PrepareResult(), Y("Bool", Q("false"))), "item")); } bool TListFoldBuiltin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() != ArgCount) { - ctx.Error(Pos) << "Folding list with " << OpName << "requires exactly " << ArgCount << " parameter"; + if (Args_.size() != ArgCount_) { + ctx.Error(Pos_) << "Folding list with " << OpName_ << "requires exactly " << ArgCount_ << " parameter"; return false; } - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (!arg->Init(ctx, src)) { return false; } } - Node = Y("Fold", - SkipEmpty(Args[0]), + Node_ = Y("Fold", + SkipEmpty(Args_[0]), GetInitialState(), GetUpdateLambda() ); @@ -166,24 +166,24 @@ bool TListFoldBuiltin::DoInit(TContext& ctx, ISource* src) { TNodePtr TListFoldBuiltin::GetInitialState() { - return Y(StateType, Q(StateValue)); + return Y(StateType_, Q(StateValue_)); } TNodePtr TListFoldBuiltin::GetUpdateLambda() { - return BuildLambda(Pos, Y("item", "state"), Y(OpName, "item", "state")); + return BuildLambda(Pos_, Y("item", "state"), Y(OpName_, "item", "state")); } TNodePtr TListCountBuiltin::GetUpdateLambda() { - return BuildLambda(Pos, Y("item", "state"), Y(OpName, "state")); + return BuildLambda(Pos_, Y("item", "state"), Y(OpName_, "state")); } bool TListAvgBuiltin::DoInit(TContext& ctx, ISource* src) { if (TListFoldBuiltin::DoInit(ctx, src)) { - auto foldResult = Node; - Node = Y("Div", Y("Nth", foldResult, Q("1")), Y("Nth", foldResult, Q("0"))); + auto foldResult = Node_; + Node_ = Y("Div", Y("Nth", foldResult, Q("1")), Y("Nth", foldResult, Q("0"))); return true; } else { return false; @@ -197,24 +197,24 @@ TNodePtr TListAvgBuiltin::GetInitialState() { TNodePtr TListAvgBuiltin::GetUpdateLambda() { auto count = Y("Inc", Y("Nth", "state", Q("0"))); auto sum = Y("Add", "item", Y("Nth", "state", Q("1"))); - return BuildLambda(Pos, Y("item", "state"), Q(Y(count, sum))); + return BuildLambda(Pos_, Y("item", "state"), Q(Y(count, sum))); } TNodePtr TListHasBuiltin::GetUpdateLambda() { - return BuildLambda(Pos, Y("item", "state"), Y("Or", "state", - Y("Coalesce", Y(OpName, "item", Args[1]), Y("Bool", Q("false"))))); + return BuildLambda(Pos_, Y("item", "state"), Y("Or", "state", + Y("Coalesce", Y(OpName_, "item", Args_[1]), Y("Bool", Q("false"))))); } bool TListFold1Builtin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() != 1) { - ctx.Error(Pos) << "Folding list with " << OpName << " requires only one parameter"; + if (Args_.size() != 1) { + ctx.Error(Pos_) << "Folding list with " << OpName_ << " requires only one parameter"; return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - Node = Y("Fold1", - SkipEmpty(Args[0]), + Node_ = Y("Fold1", + SkipEmpty(Args_[0]), GetInitLambda(), GetUpdateLambda() ); @@ -225,64 +225,64 @@ TNodePtr TListFold1Builtin::GetInitLambda() { } TNodePtr TListFold1Builtin::GetUpdateLambda() { - return BuildLambda(Pos, Y("item", "state"), Y(OpName, "state", "item")); + return BuildLambda(Pos_, Y("item", "state"), Y(OpName_, "state", "item")); } bool TListUniqBuiltin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() != 1) { - ctx.Error(Pos) << OpName << " requires only one parameter"; + if (Args_.size() != 1) { + ctx.Error(Pos_) << OpName_ << " requires only one parameter"; return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - Node = Y("DictKeys", - Y("ToDict", Args[0], GetIdentityLambda(), BuildLambda(Pos, Y("item"), Y("Void")), Q(Y(Q("Hashed"), Q("One")))) + Node_ = Y("DictKeys", + Y("ToDict", Args_[0], GetIdentityLambda(), BuildLambda(Pos_, Y("item"), Y("Void")), Q(Y(Q("Hashed"), Q("One")))) ); return true; } bool TListCreateBuiltin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() != 1) { - ctx.Error(Pos) << OpName << " requires only one parameter"; + if (Args_.size() != 1) { + ctx.Error(Pos_) << OpName_ << " requires only one parameter"; return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - auto literal = Args[0]->GetLiteral("String"); + auto literal = Args_[0]->GetLiteral("String"); if (literal) { - Node = Y("List", + Node_ = Y("List", Y("ListType", Y("ParseType", Q(*literal)))); } else { - Node = Y("List", - Y("ListType", Args[0])); + Node_ = Y("List", + Y("ListType", Args_[0])); } return true; } bool TDictCreateBuiltin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() != 2) { - ctx.Error(Pos) << OpName << " requires two parameters"; + if (Args_.size() != 2) { + ctx.Error(Pos_) << OpName_ << " requires two parameters"; return false; } TNodePtr types[2]; for (ui32 i = 0; i < 2; ++i) { - if (!Args[i]->Init(ctx, src)) { + if (!Args_[i]->Init(ctx, src)) { return false; } - auto literal = Args[i]->GetLiteral("String"); + auto literal = Args_[i]->GetLiteral("String"); if (literal) { types[i] = Y("ParseType", Q(*literal)); } else { - types[i] = Args[i]; + types[i] = Args_[i]; } } - Node = Y("Dict", + Node_ = Y("Dict", Y("DictType", types[0], types[1])); return true; diff --git a/yql/essentials/sql/v0/list_builtin.h b/yql/essentials/sql/v0/list_builtin.h index b1d1b2e0f58..a2c65d0d4fd 100644 --- a/yql/essentials/sql/v0/list_builtin.h +++ b/yql/essentials/sql/v0/list_builtin.h @@ -20,8 +20,8 @@ public: const TString& opName, const TVector<TNodePtr>& args) : TCallNode(pos, opName, args.size(), args.size(), args) - , OpName(opName) - , Args(args) + , OpName_(opName) + , Args_(args) {} bool DoInit(TContext& ctx, ISource* src) override = 0; @@ -29,16 +29,16 @@ public: TAstNode* Translate(TContext& ctx) const override; protected: - const TString OpName; - TVector<TNodePtr> Args; - TNodePtr Node; + const TString OpName_; + TVector<TNodePtr> Args_; + TNodePtr Node_; inline TNodePtr GetIdentityLambda(); inline TNodePtr SkipEmpty(TNodePtr arg); void DoUpdateState() const override { - State.Set(ENodeState::Aggregated, Args[0]->IsAggregated()); + State_.Set(ENodeState::Aggregated, Args_[0]->IsAggregated()); } }; @@ -46,17 +46,17 @@ class TListSortBuiltin final: public TListBuiltin { public: TListSortBuiltin(TPosition pos, const TVector<TNodePtr>& args, bool asc) : TListBuiltin(pos, "Sort", args) - , Asc(asc) + , Asc_(asc) {} bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TListSortBuiltin(Pos, CloneContainer(Args), Asc); + return new TListSortBuiltin(Pos_, CloneContainer(Args_), Asc_); } private: - bool Asc; + bool Asc_; }; class TListExtractBuiltin final: public TListBuiltin { @@ -68,7 +68,7 @@ public: bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TListExtractBuiltin(Pos, CloneContainer(Args)); + return new TListExtractBuiltin(Pos_, CloneContainer(Args_)); } }; @@ -78,14 +78,14 @@ protected: const TString& opName, const TVector<TNodePtr>& args) : TListBuiltin(pos, opName, args) - , OpLiteral(nullptr) + , OpLiteral_(nullptr) {} bool CheckArgs(TContext& ctx, ISource* src); TNodePtr PrepareResult(); - const TString* OpLiteral; + const TString* OpLiteral_; }; class TListMapBuiltin final: public TListProcessBuiltin { @@ -94,18 +94,18 @@ public: const TVector<TNodePtr>& args, bool flat) : TListProcessBuiltin(pos, flat ? "OrderedFlatMap" : "OrderedMap", args) - , Flat(flat) + , Flat_(flat) {} bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TListMapBuiltin(Pos, CloneContainer(Args), Flat); + return new TListMapBuiltin(Pos_, CloneContainer(Args_), Flat_); } protected: virtual TNodePtr GetMapLambda(); private: - bool Flat; + bool Flat_; }; class TListFilterBuiltin final: public TListProcessBuiltin { @@ -119,7 +119,7 @@ public: bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TListFilterBuiltin(Pos, CloneContainer(Args)); + return new TListFilterBuiltin(Pos_, CloneContainer(Args_)); } protected: virtual TNodePtr GetFilterLambda(); @@ -134,17 +134,17 @@ public: const ui32 argCount, const TVector<TNodePtr>& args) : TListBuiltin(pos, opName, args) - , StateType(stateType) - , StateValue(stateValue) - , ArgCount(argCount) + , StateType_(stateType) + , StateValue_(stateValue) + , ArgCount_(argCount) { } bool DoInit(TContext& ctx, ISource* src) override; protected: - const TString StateType; - const TString StateValue; - const ui32 ArgCount; + const TString StateType_; + const TString StateValue_; + const ui32 ArgCount_; virtual TNodePtr GetInitialState(); @@ -159,7 +159,7 @@ public: {} TNodePtr DoClone() const final { - return new TListFoldBuiltinImpl(Pos, OpName, StateType, StateValue, ArgCount, CloneContainer(Args)); + return new TListFoldBuiltinImpl(Pos_, OpName_, StateType_, StateValue_, ArgCount_, CloneContainer(Args_)); } }; @@ -170,7 +170,7 @@ public: {} TNodePtr DoClone() const final { - return new TListCountBuiltin(Pos, CloneContainer(Args)); + return new TListCountBuiltin(Pos_, CloneContainer(Args_)); } private: virtual TNodePtr GetUpdateLambda(); @@ -184,7 +184,7 @@ public: } TNodePtr DoClone() const final { - return new TListAvgBuiltin(Pos, CloneContainer(Args)); + return new TListAvgBuiltin(Pos_, CloneContainer(Args_)); } private: bool DoInit(TContext& ctx, ISource* src) override; @@ -202,20 +202,20 @@ public: } TNodePtr DoClone() const final { - return new TListHasBuiltin(Pos, CloneContainer(Args)); + return new TListHasBuiltin(Pos_, CloneContainer(Args_)); } private: TNodePtr GetUpdateLambda() override; void DoUpdateState() const override { bool isAggregated = true; - for (const auto& arg: Args) { + for (const auto& arg: Args_) { if (!arg->IsAggregated()) { isAggregated = false; break; } } - State.Set(ENodeState::Aggregated, isAggregated); + State_.Set(ENodeState::Aggregated, isAggregated); } }; @@ -232,7 +232,7 @@ public: bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TListFold1Builtin(Pos, OpName, CloneContainer(Args)); + return new TListFold1Builtin(Pos_, OpName_, CloneContainer(Args_)); } protected: @@ -251,7 +251,7 @@ public: bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TListUniqBuiltin(Pos, CloneContainer(Args)); + return new TListUniqBuiltin(Pos_, CloneContainer(Args_)); } }; @@ -265,7 +265,7 @@ public: bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TListCreateBuiltin(Pos, CloneContainer(Args)); + return new TListCreateBuiltin(Pos_, CloneContainer(Args_)); } }; @@ -279,7 +279,7 @@ public: bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TDictCreateBuiltin(Pos, CloneContainer(Args)); + return new TDictCreateBuiltin(Pos_, CloneContainer(Args_)); } }; diff --git a/yql/essentials/sql/v0/node.cpp b/yql/essentials/sql/v0/node.cpp index 0b4c9f0694a..ae448da087b 100644 --- a/yql/essentials/sql/v0/node.cpp +++ b/yql/essentials/sql/v0/node.cpp @@ -85,7 +85,7 @@ TColumnSchema::TColumnSchema(TPosition pos, const TString& name, const TString& } INode::INode(TPosition pos) - : Pos(pos) + : Pos_(pos) { } @@ -94,23 +94,23 @@ INode::~INode() } TPosition INode::GetPos() const { - return Pos; + return Pos_; } const TString& INode::GetLabel() const { - return Label; + return Label_; } void INode::SetLabel(const TString& label) { - Label = label; + Label_ = label; } void INode::SetCountHint(bool isCount) { - State.Set(ENodeState::CountHint, isCount); + State_.Set(ENodeState::CountHint, isCount); } bool INode::GetCountHint() const { - return State.Test(ENodeState::CountHint); + return State_.Test(ENodeState::CountHint); } bool INode::IsConstant() const { @@ -191,16 +191,16 @@ TVector<TNodePtr>* INode::ContentListPtr() { } bool INode::Init(TContext& ctx, ISource* src) { - if (State.Test(ENodeState::Failed)) { + if (State_.Test(ENodeState::Failed)) { return false; } - if (!State.Test(ENodeState::Initialized)) { + if (!State_.Test(ENodeState::Initialized)) { if (!DoInit(ctx, src)) { - State.Set(ENodeState::Failed); + State_.Set(ENodeState::Failed); return false; } - State.Set(ENodeState::Initialized); + State_.Set(ENodeState::Initialized); } return true; } @@ -212,7 +212,7 @@ bool INode::DoInit(TContext& ctx, ISource* src) { } TNodePtr INode::AstNode() const { - return new TAstListNodeImpl(Pos); + return new TAstListNodeImpl(Pos_); } TNodePtr INode::AstNode(TNodePtr node) const { @@ -220,7 +220,7 @@ TNodePtr INode::AstNode(TNodePtr node) const { } TNodePtr INode::AstNode(const TString& str) const { - return new TAstAtomNodeImpl(Pos, str, TNodeFlags::Default); + return new TAstAtomNodeImpl(Pos_, str, TNodeFlags::Default); } TNodePtr INode::AstNode(TAstNode* node) const { @@ -232,8 +232,8 @@ TNodePtr INode::Clone() const { if (!clone) { clone = const_cast<INode*>(this); } else { - YQL_ENSURE(!State.Test(ENodeState::Initialized), "Clone shold be for uninitialized or persistent node"); - clone->SetLabel(Label); + YQL_ENSURE(!State_.Test(ENodeState::Initialized), "Clone shold be for uninitialized or persistent node"); + clone->SetLabel(Label_); } return clone; } @@ -248,7 +248,7 @@ INode::TPtr INode::WindowSpecFunc(const TPtr& type) const { } void INode::UseAsInner() { - AsInner = true; + AsInner_ = true; } bool INode::UsedSubquery() const { @@ -268,18 +268,18 @@ void INode::DoUpdateState() const { } void INode::PrecacheState() const { - if (State.Test(ENodeState::Failed)) { + if (State_.Test(ENodeState::Failed)) { return; } /// Not work right now! It's better use Init at first, because some kind of update depend on it /// \todo turn on and remove all issues //Y_DEBUG_ABORT_UNLESS(State.Test(ENodeState::Initialized)); - if (State.Test(ENodeState::Precached)) { + if (State_.Test(ENodeState::Precached)) { return; } DoUpdateState(); - State.Set(ENodeState::Precached); + State_.Set(ENodeState::Precached); } void INode::DoAdd(TNodePtr node) { @@ -289,8 +289,8 @@ void INode::DoAdd(TNodePtr node) { TAstAtomNode::TAstAtomNode(TPosition pos, const TString& content, ui32 flags) : INode(pos) - , Content(content) - , Flags(flags) + , Content_(content) + , Flags_(flags) { } @@ -299,26 +299,26 @@ TAstAtomNode::~TAstAtomNode() } void TAstAtomNode::DoUpdateState() const { - State.Set(ENodeState::Const); + State_.Set(ENodeState::Const); } TAstNode* TAstAtomNode::Translate(TContext& ctx) const { - return TAstNode::NewAtom(Pos, Content, *ctx.Pool, Flags); + return TAstNode::NewAtom(Pos_, Content_, *ctx.Pool, Flags_); } const TString* TAstAtomNode::GetAtomContent() const { - return &Content; + return &Content_; } TAstDirectNode::TAstDirectNode(TAstNode* node) : INode(node->GetPosition()) - , Node(node) + , Node_(node) { } TAstNode* TAstDirectNode::Translate(TContext& ctx) const { Y_UNUSED(ctx); - return Node; + return Node_; } TNodePtr BuildAtom(TPosition pos, const TString& content, ui32 flags) { @@ -335,7 +335,7 @@ TAstListNode::~TAstListNode() } bool TAstListNode::DoInit(TContext& ctx, ISource* src) { - for (auto& node: Nodes) { + for (auto& node: Nodes_) { if (!node->Init(ctx, src)) { return false; } @@ -345,9 +345,9 @@ bool TAstListNode::DoInit(TContext& ctx, ISource* src) { TAstNode* TAstListNode::Translate(TContext& ctx) const { TSmallVec<TAstNode*> children; - children.reserve(Nodes.size()); - auto listPos = Pos; - for (auto& node: Nodes) { + children.reserve(Nodes_.size()); + auto listPos = Pos_; + for (auto& node: Nodes_) { if (node) { auto astNode = node->Translate(ctx); if (!astNode) { @@ -355,7 +355,7 @@ TAstNode* TAstListNode::Translate(TContext& ctx) const { } children.push_back(astNode); } else { - ctx.Error(Pos) << "Translation error: encountered empty TNodePtr"; + ctx.Error(Pos_) << "Translation error: encountered empty TNodePtr"; return nullptr; } } @@ -366,8 +366,8 @@ TAstNode* TAstListNode::Translate(TContext& ctx) const { void TAstListNode::UpdateStateByListNodes(const TVector<TNodePtr>& nodes) const { bool isConst = true; struct TAttributesFlags { - bool has = false; - bool all = true; + bool Has = false; + bool All = true; }; std::array<ENodeState, 3> checkStates = {{ENodeState::Aggregated, ENodeState::AggregationKey, ENodeState::OverWindow}}; std::map<ENodeState, TAttributesFlags> flags; @@ -375,45 +375,45 @@ void TAstListNode::UpdateStateByListNodes(const TVector<TNodePtr>& nodes) const const bool isNodeConst = node->IsConstant(); for (auto state: checkStates) { if (node->HasState(state)) { - flags[state].has = true; + flags[state].Has = true; } else if (!isNodeConst) { isConst = false; - flags[state].all = false; + flags[state].All = false; } } } - State.Set(ENodeState::Const, isConst); + State_.Set(ENodeState::Const, isConst); for (auto& flag: flags) { - State.Set(flag.first, flag.second.has && flag.second.all); + State_.Set(flag.first, flag.second.Has && flag.second.All); } } void TAstListNode::DoUpdateState() const { - UpdateStateByListNodes(Nodes); + UpdateStateByListNodes(Nodes_); } TAstListNode::TAstListNode(const TAstListNode& node) - : INode(node.Pos) - , Nodes(node.Nodes) + : INode(node.Pos_) + , Nodes_(node.Nodes_) { - Label = node.Label; - State = node.State; + Label_ = node.Label_; + State_ = node.State_; } TAstListNode::TAstListNode(TPosition pos, TVector<TNodePtr>&& nodes) : INode(pos) - , Nodes(std::move(nodes)) + , Nodes_(std::move(nodes)) { } TNodePtr TAstListNode::ShallowCopy() const { - return new TAstListNodeImpl(Pos, Nodes); + return new TAstListNodeImpl(Pos_, Nodes_); } void TAstListNode::DoAdd(TNodePtr node) { Y_DEBUG_ABORT_UNLESS(node); Y_DEBUG_ABORT_UNLESS(node.Get() != this); - Nodes.push_back(node); + Nodes_.push_back(node); } TAstListNodeImpl::TAstListNodeImpl(TPosition pos) @@ -423,11 +423,11 @@ TAstListNodeImpl::TAstListNodeImpl(TPosition pos) TAstListNodeImpl::TAstListNodeImpl(TPosition pos, TVector<TNodePtr> nodes) : TAstListNode(pos) { - Nodes.swap(nodes); + Nodes_.swap(nodes); } TNodePtr TAstListNodeImpl::DoClone() const { - return new TAstListNodeImpl(Pos, CloneContainer(Nodes)); + return new TAstListNodeImpl(Pos_, CloneContainer(Nodes_)); } bool ValidateAllNodesForAggregation(TContext& ctx, const TVector<TNodePtr>& nodes) { @@ -445,20 +445,20 @@ bool ValidateAllNodesForAggregation(TContext& ctx, const TVector<TNodePtr>& node TCallNode::TCallNode(TPosition pos, const TString& opName, i32 minArgs, i32 maxArgs, const TVector<TNodePtr>& args) : TAstListNode(pos) - , OpName(opName) - , MinArgs(minArgs) - , MaxArgs(maxArgs) - , Args(args) + , OpName_(opName) + , MinArgs_(minArgs) + , MaxArgs_(maxArgs) + , Args_(args) { } TString TCallNode::GetOpName() const { - return OpName; + return OpName_; } const TString* TCallNode::GetSourceName() const { const TString* name = nullptr; - for (auto& arg: Args) { + for (auto& arg: Args_) { auto n = arg->GetSourceName(); if (!n) { continue; @@ -472,37 +472,37 @@ const TString* TCallNode::GetSourceName() const { } const TVector<TNodePtr>& TCallNode::GetArgs() const { - return Args; + return Args_; } void TCallNode::DoUpdateState() const { - UpdateStateByListNodes(Args); + UpdateStateByListNodes(Args_); } TString TCallNode::GetCallExplain() const { auto derivedName = GetOpName(); TStringBuilder sb; sb << derivedName << "()"; - if (derivedName != OpName) { - sb << ", converted to " << OpName << "()"; + if (derivedName != OpName_) { + sb << ", converted to " << OpName_ << "()"; } return std::move(sb); } bool TCallNode::ValidateArguments(TContext& ctx) const { - const auto argsCount = static_cast<i32>(Args.size()); - if (MinArgs >= 0 && MaxArgs == MinArgs && argsCount != MinArgs) { - ctx.Error(Pos) << GetCallExplain() << " requires exactly " << MinArgs << " arguments, given: " << Args.size(); + const auto argsCount = static_cast<i32>(Args_.size()); + if (MinArgs_ >= 0 && MaxArgs_ == MinArgs_ && argsCount != MinArgs_) { + ctx.Error(Pos_) << GetCallExplain() << " requires exactly " << MinArgs_ << " arguments, given: " << Args_.size(); return false; } - if (MinArgs >= 0 && argsCount < MinArgs) { - ctx.Error(Pos) << GetCallExplain() << " requires at least " << MinArgs << " arguments, given: " << Args.size(); + if (MinArgs_ >= 0 && argsCount < MinArgs_) { + ctx.Error(Pos_) << GetCallExplain() << " requires at least " << MinArgs_ << " arguments, given: " << Args_.size(); return false; } - if (MaxArgs >= 0 && argsCount > MaxArgs) { - ctx.Error(Pos) << GetCallExplain() << " requires at most " << MaxArgs << " arguments, given: " << Args.size(); + if (MaxArgs_ >= 0 && argsCount > MaxArgs_) { + ctx.Error(Pos_) << GetCallExplain() << " requires at most " << MaxArgs_ << " arguments, given: " << Args_.size(); return false; } @@ -515,7 +515,7 @@ bool TCallNode::DoInit(TContext& ctx, ISource* src) { } bool hasError = false; - for (auto& arg: Args) { + for (auto& arg: Args_) { if (!arg->Init(ctx, src)) { hasError = true; continue; @@ -526,8 +526,8 @@ bool TCallNode::DoInit(TContext& ctx, ISource* src) { return false; } - Nodes.push_back(BuildAtom(Pos, OpName)); - Nodes.insert(Nodes.end(), Args.begin(), Args.end()); + Nodes_.push_back(BuildAtom(Pos_, OpName_)); + Nodes_.insert(Nodes_.end(), Args_.begin(), Args_.end()); return true; } @@ -540,21 +540,21 @@ TCallNodeImpl::TCallNodeImpl(TPosition pos, const TString& opName, const TVector {} TCallNode::TPtr TCallNodeImpl::DoClone() const { - return new TCallNodeImpl(GetPos(), OpName, MinArgs, MaxArgs, CloneContainer(Args)); + return new TCallNodeImpl(GetPos(), OpName_, MinArgs_, MaxArgs_, CloneContainer(Args_)); } TCallNodeDepArgs::TCallNodeDepArgs(ui32 reqArgsCount, TPosition pos, const TString& opName, i32 minArgs, i32 maxArgs, const TVector<TNodePtr>& args) : TCallNode(pos, opName, minArgs, maxArgs, args) - , ReqArgsCount(reqArgsCount) + , ReqArgsCount_(reqArgsCount) {} TCallNodeDepArgs::TCallNodeDepArgs(ui32 reqArgsCount, TPosition pos, const TString& opName, const TVector<TNodePtr>& args) : TCallNode(pos, opName, args.size(), args.size(), args) - , ReqArgsCount(reqArgsCount) + , ReqArgsCount_(reqArgsCount) {} TCallNode::TPtr TCallNodeDepArgs::DoClone() const { - return new TCallNodeDepArgs(ReqArgsCount, GetPos(), OpName, MinArgs, MaxArgs, CloneContainer(Args)); + return new TCallNodeDepArgs(ReqArgsCount_, GetPos(), OpName_, MinArgs_, MaxArgs_, CloneContainer(Args_)); } bool TCallNodeDepArgs::DoInit(TContext& ctx, ISource* src) { @@ -562,14 +562,14 @@ bool TCallNodeDepArgs::DoInit(TContext& ctx, ISource* src) { return false; } - for (ui32 i = 1 + ReqArgsCount; i < Nodes.size(); ++i) { - Nodes[i] = Y("DependsOn", Nodes[i]); + for (ui32 i = 1 + ReqArgsCount_; i < Nodes_.size(); ++i) { + Nodes_[i] = Y("DependsOn", Nodes_[i]); } return true; } TCallDirectRow::TPtr TCallDirectRow::DoClone() const { - return new TCallDirectRow(Pos, OpName, CloneContainer(Args)); + return new TCallDirectRow(Pos_, OpName_, CloneContainer(Args_)); } TCallDirectRow::TCallDirectRow(TPosition pos, const TString& opName, const TVector<TNodePtr>& args) @@ -578,66 +578,66 @@ TCallDirectRow::TCallDirectRow(TPosition pos, const TString& opName, const TVect bool TCallDirectRow::DoInit(TContext& ctx, ISource* src) { if (!src) { - ctx.Error(Pos) << "Unable to use function: " << OpName << " without source"; + ctx.Error(Pos_) << "Unable to use function: " << OpName_ << " without source"; return false; } if (src->IsCompositeSource() || src->GetJoin() || src->HasAggregations() || src->IsFlattenByColumns() || src->IsOverWindowSource()) { - ctx.Error(Pos) << "Failed to use function: " << OpName << " with aggregation, join, flatten by or window functions"; + ctx.Error(Pos_) << "Failed to use function: " << OpName_ << " with aggregation, join, flatten by or window functions"; return false; } if (!TCallNode::DoInit(ctx, src)) { return false; } - Nodes.push_back(Y("DependsOn", "row")); + Nodes_.push_back(Y("DependsOn", "row")); return true; } void TCallDirectRow::DoUpdateState() const { - State.Set(ENodeState::Const, false); + State_.Set(ENodeState::Const, false); } void TWinAggrEmulation::DoUpdateState() const { - State.Set(ENodeState::OverWindow, true); + State_.Set(ENodeState::OverWindow, true); } bool TWinAggrEmulation::DoInit(TContext& ctx, ISource* src) { if (!src) { - ctx.Error(Pos) << "Unable to use window function: " << OpName << " without source"; + ctx.Error(Pos_) << "Unable to use window function: " << OpName_ << " without source"; return false; } if (!src->IsOverWindowSource()) { - ctx.Error(Pos) << "Failed to use window function: " << OpName << " without window specification"; + ctx.Error(Pos_) << "Failed to use window function: " << OpName_ << " without window specification"; return false; } if (!src->AddFuncOverWindow(ctx, this)) { - ctx.Error(Pos) << "Failed to use window function: " << OpName << " without specification or in wrong place"; + ctx.Error(Pos_) << "Failed to use window function: " << OpName_ << " without specification or in wrong place"; return false; } - FuncAlias = "_yql_" + src->MakeLocalName(OpName); - src->AddTmpWindowColumn(FuncAlias); + FuncAlias_ = "_yql_" + src->MakeLocalName(OpName_); + src->AddTmpWindowColumn(FuncAlias_); ctx.PushBlockShortcuts(); if (!TCallNode::DoInit(ctx, src)) { return false; } - WinAggrGround = ctx.GroundBlockShortcuts(Pos); - Nodes.clear(); - Add("Member", "row", Q(FuncAlias)); + WinAggrGround_ = ctx.GroundBlockShortcuts(Pos_); + Nodes_.clear(); + Add("Member", "row", Q(FuncAlias_)); return true; } INode::TPtr TWinAggrEmulation::WindowSpecFunc(const TPtr& type) const { - auto result = Y(OpName, type); - for (const auto& arg: Args) { + auto result = Y(OpName_, type); + for (const auto& arg: Args_) { result = L(result, arg); } - return Q(Y(Q(FuncAlias), result)); + return Q(Y(Q(FuncAlias_), result)); } TWinAggrEmulation::TWinAggrEmulation(TPosition pos, const TString& opName, i32 minArgs, i32 maxArgs, const TVector<TNodePtr>& args) : TCallNode(pos, opName, minArgs, maxArgs, args) - , FuncAlias(opName) + , FuncAlias_(opName) {} TWinRowNumber::TWinRowNumber(TPosition pos, const TString& opName, i32 minArgs, i32 maxArgs, const TVector<TNodePtr>& args) @@ -649,17 +649,17 @@ TWinLeadLag::TWinLeadLag(TPosition pos, const TString& opName, i32 minArgs, i32 {} bool TWinLeadLag::DoInit(TContext& ctx, ISource* src) { - if (Args.size() >= 2) { - if (!Args[1]->IsIntegerLiteral()) { - ctx.Error(Args[1]->GetPos()) << "Expected integer literal as second parameter of " << OpName << "( ) function"; + if (Args_.size() >= 2) { + if (!Args_[1]->IsIntegerLiteral()) { + ctx.Error(Args_[1]->GetPos()) << "Expected integer literal as second parameter of " << OpName_ << "( ) function"; return false; } } if (!TWinAggrEmulation::DoInit(ctx, src)) { return false; } - if (Args.size() >= 1) { - Args[0] = BuildLambda(Pos, Y("row"), GroundWithExpr(WinAggrGround, Args[0])); + if (Args_.size() >= 1) { + Args_[0] = BuildLambda(Pos_, Y("row"), GroundWithExpr(WinAggrGround_, Args_[0])); } return true; } @@ -674,9 +674,9 @@ public: protected: TQuotedAtomNode(const TQuotedAtomNode& other) - : TAstListNode(other.Pos) + : TAstListNode(other.Pos_) { - Nodes = CloneContainer(other.Nodes); + Nodes_ = CloneContainer(other.Nodes_); } TPtr DoClone() const final { return new TQuotedAtomNode(*this); @@ -802,15 +802,15 @@ THoppingWindowSpecPtr THoppingWindowSpec::Clone() const { TColumnNode::TColumnNode(TPosition pos, const TString& column, const TString& source) : INode(pos) - , ColumnName(column) - , Source(source) + , ColumnName_(column) + , Source_(source) { } TColumnNode::TColumnNode(TPosition pos, const TNodePtr& column, const TString& source) : INode(pos) - , ColumnExpr(column) - , Source(source) + , ColumnExpr_(column) + , Source_(source) { } @@ -819,24 +819,24 @@ TColumnNode::~TColumnNode() } bool TColumnNode::IsAsterisk() const { - return ColumnName == "*"; + return ColumnName_ == "*"; } bool TColumnNode::IsArtificial() const { - return Artificial; + return Artificial_; } const TString* TColumnNode::GetColumnName() const { - return UseSourceAsColumn ? &Source : (ColumnExpr ? nullptr : &ColumnName); + return UseSourceAsColumn_ ? &Source_ : (ColumnExpr_ ? nullptr : &ColumnName_); } const TString* TColumnNode::GetSourceName() const { - return UseSourceAsColumn ? &Empty : &Source; + return UseSourceAsColumn_ ? &Empty : &Source_; } bool TColumnNode::DoInit(TContext& ctx, ISource* src) { if (src) { - YQL_ENSURE(!State.Test(ENodeState::Initialized)); /// should be not initialized or Aggregated already invalid + YQL_ENSURE(!State_.Test(ENodeState::Initialized)); /// should be not initialized or Aggregated already invalid if (src->ShouldUseSourceAsColumn(*GetSourceName())) { if (!IsAsterisk() && IsReliable()) { SetUseSourceAsColumn(); @@ -844,103 +844,103 @@ bool TColumnNode::DoInit(TContext& ctx, ISource* src) { } if (GetColumnName()) { - auto fullName = Source ? DotJoin(Source, *GetColumnName()) : *GetColumnName(); + auto fullName = Source_ ? DotJoin(Source_, *GetColumnName()) : *GetColumnName(); auto alias = src->GetGroupByColumnAlias(fullName); if (alias) { ResetColumn(alias, {}); } - Artificial = !Source && src->IsExprAlias(*GetColumnName()); + Artificial_ = !Source_ && src->IsExprAlias(*GetColumnName()); } if (!src->AddColumn(ctx, *this)) { return false; } if (GetColumnName()) { - if (src->GetJoin() && Source) { - GroupKey = src->IsGroupByColumn(DotJoin(Source, *GetColumnName())); + if (src->GetJoin() && Source_) { + GroupKey_ = src->IsGroupByColumn(DotJoin(Source_, *GetColumnName())); } else { - GroupKey = src->IsGroupByColumn(*GetColumnName()) || src->IsAlias(EExprSeat::GroupBy, *GetColumnName()); + GroupKey_ = src->IsGroupByColumn(*GetColumnName()) || src->IsAlias(EExprSeat::GroupBy, *GetColumnName()); } } } if (IsAsterisk()) { - Node = AstNode("row"); + Node_ = AstNode("row"); } else { - Node = Y(Reliable && !UseSource ? "Member" : "SqlColumn", "row", ColumnExpr ? - Y("EvaluateAtom", ColumnExpr) : BuildQuotedAtom(Pos, *GetColumnName())); - if (UseSource) { - YQL_ENSURE(Source); - Node = L(Node, BuildQuotedAtom(Pos, Source)); + Node_ = Y(Reliable_ && !UseSource_ ? "Member" : "SqlColumn", "row", ColumnExpr_ ? + Y("EvaluateAtom", ColumnExpr_) : BuildQuotedAtom(Pos_, *GetColumnName())); + if (UseSource_) { + YQL_ENSURE(Source_); + Node_ = L(Node_, BuildQuotedAtom(Pos_, Source_)); } } - return Node->Init(ctx, src); + return Node_->Init(ctx, src); } void TColumnNode::SetUseSourceAsColumn() { - YQL_ENSURE(!State.Test(ENodeState::Initialized)); /// should be not initialized or Aggregated already invalid + YQL_ENSURE(!State_.Test(ENodeState::Initialized)); /// should be not initialized or Aggregated already invalid YQL_ENSURE(!IsAsterisk()); - UseSourceAsColumn = true; + UseSourceAsColumn_ = true; } void TColumnNode::ResetAsReliable() { - Reliable = true; + Reliable_ = true; } void TColumnNode::SetAsNotReliable() { - Reliable = false; + Reliable_ = false; } void TColumnNode::SetUseSource() { - UseSource = true; + UseSource_ = true; } bool TColumnNode::IsUseSourceAsColumn() const { - return UseSourceAsColumn; + return UseSourceAsColumn_; } bool TColumnNode::IsReliable() const { - return Reliable; + return Reliable_; } TNodePtr TColumnNode::DoClone() const { - YQL_ENSURE(!Node, "TColumnNode::Clone: Node should not be initialized"); - auto copy = ColumnExpr ? new TColumnNode(Pos, ColumnExpr, Source) : new TColumnNode(Pos, ColumnName, Source); - copy->GroupKey = GroupKey; - copy->Artificial = Artificial; - copy->Reliable = Reliable; - copy->UseSource = UseSource; - copy->UseSourceAsColumn = UseSourceAsColumn; + YQL_ENSURE(!Node_, "TColumnNode::Clone: Node should not be initialized"); + auto copy = ColumnExpr_ ? new TColumnNode(Pos_, ColumnExpr_, Source_) : new TColumnNode(Pos_, ColumnName_, Source_); + copy->GroupKey_ = GroupKey_; + copy->Artificial_ = Artificial_; + copy->Reliable_ = Reliable_; + copy->UseSource_ = UseSource_; + copy->UseSourceAsColumn_ = UseSourceAsColumn_; return copy; } void TColumnNode::DoUpdateState() const { - State.Set(ENodeState::Const, false); - State.Set(ENodeState::Aggregated, GroupKey); - State.Set(ENodeState::AggregationKey, GroupKey); + State_.Set(ENodeState::Const, false); + State_.Set(ENodeState::Aggregated, GroupKey_); + State_.Set(ENodeState::AggregationKey, GroupKey_); } TAstNode* TColumnNode::Translate(TContext& ctx) const { - return Node->Translate(ctx); + return Node_->Translate(ctx); } void TColumnNode::ResetColumn(const TString& column, const TString& source) { - YQL_ENSURE(!State.Test(ENodeState::Initialized)); /// should be not initialized - Reliable = true; - UseSource = false; - UseSourceAsColumn = false; - ColumnName = column; - ColumnExpr = nullptr; - Source = source; + YQL_ENSURE(!State_.Test(ENodeState::Initialized)); /// should be not initialized + Reliable_ = true; + UseSource_ = false; + UseSourceAsColumn_ = false; + ColumnName_ = column; + ColumnExpr_ = nullptr; + Source_ = source; } void TColumnNode::ResetColumn(const TNodePtr& column, const TString& source) { - YQL_ENSURE(!State.Test(ENodeState::Initialized)); /// should be not initialized - Reliable = true; - UseSource = false; - UseSourceAsColumn = false; - ColumnName = ""; - ColumnExpr = column; - Source = source; + YQL_ENSURE(!State_.Test(ENodeState::Initialized)); /// should be not initialized + Reliable_ = true; + UseSource_ = false; + UseSourceAsColumn_ = false; + ColumnName_ = ""; + ColumnExpr_ = column; + Source_ = source; } const TString TColumnNode::Empty; @@ -978,12 +978,12 @@ TAstNode* ITableKeys::Translate(TContext& ctx) const { } bool IAggregation::IsDistinct() const { - return !DistinctKey.empty(); + return !DistinctKey_.empty(); } void IAggregation::DoUpdateState() const { - State.Set(ENodeState::Aggregated, AggMode == EAggregateMode::Normal); - State.Set(ENodeState::OverWindow, AggMode == EAggregateMode::OverWindow); + State_.Set(ENodeState::Aggregated, AggMode_ == EAggregateMode::Normal); + State_.Set(ENodeState::OverWindow, AggMode_ == EAggregateMode::OverWindow); } const TString* IAggregation::GetGenericKey() const { @@ -995,11 +995,11 @@ void IAggregation::Join(IAggregation*) { } const TString& IAggregation::GetName() const { - return Name; + return Name_; } IAggregation::IAggregation(TPosition pos, const TString& name, const TString& func, EAggregateMode aggMode) - : INode(pos), Name(name), Func(func), AggMode(aggMode) + : INode(pos), Name_(name), Func_(func), AggMode_(aggMode) {} TAstNode* IAggregation::Translate(TContext& ctx) const { @@ -1009,9 +1009,9 @@ TAstNode* IAggregation::Translate(TContext& ctx) const { } TNodePtr IAggregation::AggregationTraits(const TNodePtr& type) const { - const bool distinct = AggMode == EAggregateMode::Distinct; - const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos, DistinctKey))) : type; - return distinct ? Q(Y(Q(Name), GetApply(listType), BuildQuotedAtom(Pos, DistinctKey))): Q(Y(Q(Name), GetApply(listType))); + const bool distinct = AggMode_ == EAggregateMode::Distinct; + const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos_, DistinctKey_))) : type; + return distinct ? Q(Y(Q(Name_), GetApply(listType), BuildQuotedAtom(Pos_, DistinctKey_))): Q(Y(Q(Name_), GetApply(listType))); } void IAggregation::AddFactoryArguments(TNodePtr& apply) const { @@ -1023,8 +1023,8 @@ std::vector<ui32> IAggregation::GetFactoryColumnIndices() const { } TNodePtr IAggregation::WindowTraits(const TNodePtr& type) const { - YQL_ENSURE(AggMode == EAggregateMode::OverWindow, "Windows traits is unavailable"); - return Q(Y(Q(Name), GetApply(type))); + YQL_ENSURE(AggMode_ == EAggregateMode::OverWindow, "Windows traits is unavailable"); + return Q(Y(Q(Name_), GetApply(type))); } ISource::ISource(TPosition pos) @@ -1039,13 +1039,13 @@ ISource::~ISource() TSourcePtr ISource::CloneSource() const { Y_DEBUG_ABORT_UNLESS(dynamic_cast<ISource*>(Clone().Get()), "Cloned node is no source"); TSourcePtr result = static_cast<ISource*>(Clone().Get()); - for (auto curFilter: Filters) { - result->Filters.emplace_back(curFilter->Clone()); + for (auto curFilter: Filters_) { + result->Filters_.emplace_back(curFilter->Clone()); } for (int i = 0; i < static_cast<int>(EExprSeat::Max); ++i) { - result->NamedExprs[i] = CloneContainer(NamedExprs[i]); + result->NamedExprs_[i] = CloneContainer(NamedExprs_[i]); } - result->FlattenColumns = FlattenColumns; + result->FlattenColumns_ = FlattenColumns_; return result; } @@ -1062,7 +1062,7 @@ const TColumns* ISource::GetColumns() const { } void ISource::GetInputTables(TTableList& tableList) const { - for (auto srcPtr: UsedSources) { + for (auto srcPtr: UsedSources_) { srcPtr->GetInputTables(tableList); } return; @@ -1070,7 +1070,7 @@ void ISource::GetInputTables(TTableList& tableList) const { TMaybe<bool> ISource::AddColumn(TContext& ctx, TColumnNode& column) { if (column.IsReliable()) { - ctx.Error(Pos) << "Source does not allow column references"; + ctx.Error(Pos_) << "Source does not allow column references"; } return {}; } @@ -1081,16 +1081,16 @@ void ISource::FinishColumns() { bool ISource::AddFilter(TContext& ctx, TNodePtr filter) { Y_UNUSED(ctx); - Filters.push_back(filter); + Filters_.push_back(filter); return true; } bool ISource::AddGroupKey(TContext& ctx, const TString& column) { - if (!GroupKeys.insert(column).second) { + if (!GroupKeys_.insert(column).second) { ctx.Error() << "Duplicate grouping column: " << column; return false; } - OrderedGroupKeys.push_back(column); + OrderedGroupKeys_.push_back(column); return true; } @@ -1101,7 +1101,7 @@ bool ISource::AddExpressions(TContext& ctx, const TVector<TNodePtr>& expressions const auto& alias = expr->GetLabel(); const auto& columnNamePtr = expr->GetColumnName(); if (alias) { - if (!ExprAliases.emplace(alias).second) { + if (!ExprAliases_.emplace(alias).second) { ctx.Error(expr->GetPos()) << "Duplicate alias found: " << alias << " in " << exprSeat << " section"; return false; } @@ -1120,12 +1120,12 @@ bool ISource::AddExpressions(TContext& ctx, const TVector<TNodePtr>& expressions ctx.Error(expr->GetPos()) << "Duplicate column name found: " << columnName << " in " << exprSeat << " section"; return false; } - if (!alias && ExprAliases.contains(columnName)) { + if (!alias && ExprAliases_.contains(columnName)) { ctx.Error(expr->GetPos()) << "Collision between alias and column name: " << columnName << " in " << exprSeat << " section"; return false; } if (alias && exprSeat == EExprSeat::GroupBy) { - auto columnAlias = GroupByColumnAliases.emplace(columnName, alias); + auto columnAlias = GroupByColumnAliases_.emplace(columnName, alias); auto oldAlias = columnAlias.first->second; if (columnAlias.second && oldAlias != alias) { ctx.Error(expr->GetPos()) << "Alias for column not same, column: " << columnName << @@ -1140,21 +1140,21 @@ bool ISource::AddExpressions(TContext& ctx, const TVector<TNodePtr>& expressions } void ISource::SetFlattenByMode(const TString& mode) { - FlattenMode = mode; + FlattenMode_ = mode; } void ISource::MarkFlattenColumns() { - FlattenColumns = true; + FlattenColumns_ = true; } bool ISource::IsFlattenColumns() const { - return FlattenColumns; + return FlattenColumns_; } TString ISource::MakeLocalName(const TString& name) { - auto iter = GenIndexes.find(name); - if (iter == GenIndexes.end()) { - iter = GenIndexes.emplace(name, 0).first; + auto iter = GenIndexes_.find(name); + if (iter == GenIndexes_.end()) { + iter = GenIndexes_.emplace(name, 0).first; } TStringBuilder str; str << name << iter->second; @@ -1164,16 +1164,16 @@ TString ISource::MakeLocalName(const TString& name) { bool ISource::AddAggregation(TContext& ctx, TAggregationPtr aggr) { Y_UNUSED(ctx); - Aggregations.push_back(aggr); + Aggregations_.push_back(aggr); return true; } bool ISource::HasAggregations() const { - return !Aggregations.empty() || !GroupKeys.empty(); + return !Aggregations_.empty() || !GroupKeys_.empty(); } void ISource::AddWindowSpecs(TWinSpecs winSpecs) { - WinSpecs = winSpecs; + WinSpecs_ = winSpecs; } bool ISource::AddFuncOverWindow(TContext& ctx, TNodePtr expr) { @@ -1183,41 +1183,41 @@ bool ISource::AddFuncOverWindow(TContext& ctx, TNodePtr expr) { } void ISource::AddTmpWindowColumn(const TString& column) { - TmpWindowColumns.push_back(column); + TmpWindowColumns_.push_back(column); } const TVector<TString>& ISource::GetTmpWindowColumns() const { - return TmpWindowColumns; + return TmpWindowColumns_; } void ISource::SetHoppingWindowSpec(THoppingWindowSpecPtr spec) { - HoppingWindowSpec = spec; + HoppingWindowSpec_ = spec; } THoppingWindowSpecPtr ISource::GetHoppingWindowSpec() const { - return HoppingWindowSpec; + return HoppingWindowSpec_; } TWindowSpecificationPtr ISource::FindWindowSpecification(TContext& ctx, const TString& windowName) const { - auto winIter = WinSpecs.find(windowName); - if (winIter == WinSpecs.end()) { - ctx.Error(Pos) << "Can't refer to the window specification with name: " << windowName; + auto winIter = WinSpecs_.find(windowName); + if (winIter == WinSpecs_.end()) { + ctx.Error(Pos_) << "Can't refer to the window specification with name: " << windowName; return {}; } auto winSpec = winIter->second; if (winSpec->Frame) { - ctx.Error(Pos) << "Frame that not default is not supported yet for window: " << windowName; + ctx.Error(Pos_) << "Frame that not default is not supported yet for window: " << windowName; return {}; } return winSpec; } inline TVector<TNodePtr>& ISource::Expressions(EExprSeat exprSeat) { - return NamedExprs[static_cast<size_t>(exprSeat)]; + return NamedExprs_[static_cast<size_t>(exprSeat)]; } inline const TVector<TNodePtr>& ISource::Expressions(EExprSeat exprSeat) const { - return NamedExprs[static_cast<size_t>(exprSeat)]; + return NamedExprs_[static_cast<size_t>(exprSeat)]; } inline TNodePtr ISource::AliasOrColumn(const TNodePtr& node, bool withSource) { @@ -1244,7 +1244,7 @@ bool ISource::AddAggregationOverWindow(TContext& ctx, const TString& windowName, if (!FindWindowSpecification(ctx, windowName)) { return false; } - AggregationOverWindow.emplace(windowName, func); + AggregationOverWindow_.emplace(windowName, func); return true; } @@ -1252,7 +1252,7 @@ bool ISource::AddFuncOverWindow(TContext& ctx, const TString& windowName, TNodeP if (!FindWindowSpecification(ctx, windowName)) { return false; } - FuncOverWindow.emplace(windowName, func); + FuncOverWindow_.emplace(windowName, func); return true; } @@ -1261,7 +1261,7 @@ bool ISource::IsCompositeSource() const { } bool ISource::IsGroupByColumn(const TString& column) const { - return GroupKeys.contains(column); + return GroupKeys_.contains(column); } bool ISource::IsFlattenByColumns() const { @@ -1302,8 +1302,8 @@ bool ISource::IsExprSeat(EExprSeat exprSeat, EExprType type) const { } TString ISource::GetGroupByColumnAlias(const TString& column) const { - auto iter = GroupByColumnAliases.find(column); - if (iter == GroupByColumnAliases.end()) { + auto iter = GroupByColumnAliases_.find(column); + if (iter == GroupByColumnAliases_.end()) { return {}; } return iter->second; @@ -1314,11 +1314,11 @@ const TString* ISource::GetWindowName() const { } bool ISource::IsCalcOverWindow() const { - return !AggregationOverWindow.empty() || !FuncOverWindow.empty(); + return !AggregationOverWindow_.empty() || !FuncOverWindow_.empty(); } bool ISource::IsOverWindowSource() const { - return !WinSpecs.empty(); + return !WinSpecs_.empty(); } bool ISource::IsStream() const { @@ -1354,28 +1354,28 @@ bool ISource::CalculateGroupingHint(TContext& ctx, const TVector<TString>& colum } TNodePtr ISource::BuildFilter(TContext& ctx, const TString& label, const TNodePtr& groundNode) { - return Filters.empty() ? nullptr : Y(ctx.UseUnordered(*this) ? "OrderedFilter" : "Filter", label, BuildFilterLambda(groundNode)); + return Filters_.empty() ? nullptr : Y(ctx.UseUnordered(*this) ? "OrderedFilter" : "Filter", label, BuildFilterLambda(groundNode)); } TNodePtr ISource::BuildFilterLambda(const TNodePtr& groundNode) { - if (Filters.empty()) { - return BuildLambda(Pos, Y("row"), Y("Bool", Q("true"))); + if (Filters_.empty()) { + return BuildLambda(Pos_, Y("row"), Y("Bool", Q("true"))); } - YQL_ENSURE(Filters[0]->HasState(ENodeState::Initialized)); - TNodePtr filter(Filters[0]); - for (ui32 i = 1; i < Filters.size(); ++i) { - YQL_ENSURE(Filters[i]->HasState(ENodeState::Initialized)); - filter = Y("And", filter, Filters[i]); + YQL_ENSURE(Filters_[0]->HasState(ENodeState::Initialized)); + TNodePtr filter(Filters_[0]); + for (ui32 i = 1; i < Filters_.size(); ++i) { + YQL_ENSURE(Filters_[i]->HasState(ENodeState::Initialized)); + filter = Y("And", filter, Filters_[i]); } filter = Y("Coalesce", filter, Y("Bool", Q("false"))); if (groundNode) { filter = Y("block", Q(L(groundNode, Y("return", filter)))); } - return BuildLambda(Pos, Y("row"), filter); + return BuildLambda(Pos_, Y("row"), filter); } TNodePtr ISource::BuildFlattenByColumns(const TString& label) { - auto columnsList = Y("FlattenByColumns", Q(FlattenMode), label); + auto columnsList = Y("FlattenByColumns", Q(FlattenMode_), label); for (const auto& column: Expressions(EExprSeat::FlattenBy)) { const auto columnNamePtr = column->GetColumnName(); YQL_ENSURE(columnNamePtr); @@ -1398,7 +1398,7 @@ TNodePtr ISource::BuildPreaggregatedMap(TContext& ctx) { ctx.Error(GetPos()) << "Missed columns for preaggregated map"; return nullptr; } - auto structObj = BuildAtom(Pos, "row", TNodeFlags::Default); + auto structObj = BuildAtom(Pos_, "row", TNodeFlags::Default); for (const auto& exprNode: Expressions(EExprSeat::GroupBy)) { const auto name = exprNode->GetLabel(); if (name) { @@ -1412,28 +1412,28 @@ TNodePtr ISource::BuildPreaggregatedMap(TContext& ctx) { TNodePtr ISource::BuildPrewindowMap(TContext& ctx, const TNodePtr& groundNode) { Y_UNUSED(ctx); - auto feed = BuildAtom(Pos, "row", TNodeFlags::Default); + auto feed = BuildAtom(Pos_, "row", TNodeFlags::Default); for (const auto& exprNode: Expressions(EExprSeat::WindowPartitionBy)) { const auto name = exprNode->GetLabel(); if (name) { feed = Y("AddMember", feed, Q(name), GroundWithExpr(groundNode, exprNode)); } } - return Y(ctx.UseUnordered(*this) ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos, Y("row"), Y("AsList", feed))); + return Y(ctx.UseUnordered(*this) ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos_, Y("row"), Y("AsList", feed))); } TNodePtr ISource::BuildAggregation(const TString& label) { - if (GroupKeys.empty() && Aggregations.empty() && !IsCompositeSource()) { + if (GroupKeys_.empty() && Aggregations_.empty() && !IsCompositeSource()) { return nullptr; } auto keysTuple = Y(); - for (const auto& key: GroupKeys) { - keysTuple = L(keysTuple, BuildQuotedAtom(Pos, key)); + for (const auto& key: GroupKeys_) { + keysTuple = L(keysTuple, BuildQuotedAtom(Pos_, key)); } std::map<std::pair<bool, TString>, std::vector<IAggregation*>> genericAggrs; - for (const auto& aggr: Aggregations) { + for (const auto& aggr: Aggregations_) { if (const auto key = aggr->GetGenericKey()) { genericAggrs[{aggr->IsDistinct(), *key}].emplace_back(aggr.Get()); } @@ -1447,36 +1447,36 @@ TNodePtr ISource::BuildAggregation(const TString& label) { const auto listType = Y("TypeOf", label); auto aggrArgs = Y(); - for (const auto& aggr: Aggregations) { + for (const auto& aggr: Aggregations_) { if (const auto traits = aggr->AggregationTraits(listType)) aggrArgs = L(aggrArgs, traits); } - if (HoppingWindowSpec) { + if (HoppingWindowSpec_) { auto hoppingTraits = Y( "HoppingTraits", Y("ListItemType", listType), - BuildLambda(Pos, Y("row"), HoppingWindowSpec->TimeExtractor), - HoppingWindowSpec->Hop, - HoppingWindowSpec->Interval, - HoppingWindowSpec->Delay, + BuildLambda(Pos_, Y("row"), HoppingWindowSpec_->TimeExtractor), + HoppingWindowSpec_->Hop, + HoppingWindowSpec_->Interval, + HoppingWindowSpec_->Delay, Q("False"), Q("v1")); return Y("Aggregate", label, Q(keysTuple), Q(aggrArgs), - Q(Y(Q(Y(BuildQuotedAtom(Pos, "hopping"), hoppingTraits))))); + Q(Y(Q(Y(BuildQuotedAtom(Pos_, "hopping"), hoppingTraits))))); } return Y("Aggregate", label, Q(keysTuple), Q(aggrArgs)); } TMaybe<TString> ISource::FindColumnMistype(const TString& name) const { - auto result = FindMistypeIn(GroupKeys, name); - return result ? result : FindMistypeIn(ExprAliases, name); + auto result = FindMistypeIn(GroupKeys_, name); + return result ? result : FindMistypeIn(ExprAliases_, name); } void ISource::AddDependentSource(ISource* usedSource) { - UsedSources.push_back(usedSource); + UsedSources_.push_back(usedSource); } /// \todo fill it @@ -1500,14 +1500,14 @@ public: }; size_t GetWindowByName(const TString& windowName) { - auto iter = WindowMap.find(windowName); - return iter != WindowMap.end() ? iter->second : 0; + auto iter = WindowMap_.find(windowName); + return iter != WindowMap_.end() ? iter->second : 0; } size_t CreateWindowBySpec(const TString& windowName, const TWindowSpecificationPtr& winSpec) { Y_UNUSED(windowName); auto curPartitions = winSpec->Partitions; auto curOrderBy = winSpec->OrderBy; - auto partition = std::find_if(Partitions.begin(), Partitions.end(), [&curPartitions, &curOrderBy](const TWinPartition& other) { + auto partition = std::find_if(Partitions_.begin(), Partitions_.end(), [&curPartitions, &curOrderBy](const TWinPartition& other) { /// \todo this compare is too strong; if (curPartitions != other.Partitions) { return false; @@ -1526,38 +1526,38 @@ public: } return true; }); - if (partition == Partitions.end()) { + if (partition == Partitions_.end()) { TWinPartition newPartition; newPartition.Partitions = curPartitions; newPartition.OrderBy = curOrderBy; - Partitions.emplace_back(newPartition); - partition = Partitions.end() - 1; + Partitions_.emplace_back(newPartition); + partition = Partitions_.end() - 1; } /// \todo add smart frame search and creation auto frame = partition->FrameIds.begin(); if (frame == partition->FrameIds.end()) { YQL_ENSURE(!winSpec->Frame, "Supported only default frame yet!"); - Evals.push_back({}); - const size_t curEval = Evals.size(); + Evals_.push_back({}); + const size_t curEval = Evals_.size(); partition->FrameIds.push_back(curEval); frame = partition->FrameIds.end() - 1; } return *frame; } void AddAggregationFunc(size_t windowId, TAggregationPtr func) { - Evals[windowId-1].Aggregations.push_back(func); + Evals_[windowId-1].Aggregations.push_back(func); } void AddSimpleFunc(size_t windowId, TNodePtr func) { - Evals[windowId-1].Functions.push_back(func); + Evals_[windowId-1].Functions.push_back(func); } const TVector<TWinPartition>& GetPartitions() { - return Partitions; + return Partitions_; } const EvalOverWindow& GetEvals(size_t frameId) { - YQL_ENSURE(frameId && frameId <= Evals.size()); - return Evals[frameId-1]; + YQL_ENSURE(frameId && frameId <= Evals_.size()); + return Evals_[frameId-1]; } TNodePtr BuildFrame(TPosition pos, size_t frameId) { Y_UNUSED(frameId); @@ -1566,28 +1566,28 @@ public: } private: - TVector<TWinPartition> Partitions; - TMap<TString, size_t> WindowMap; - TVector<EvalOverWindow> Evals; + TVector<TWinPartition> Partitions_; + TMap<TString, size_t> WindowMap_; + TVector<EvalOverWindow> Evals_; }; TNodePtr ISource::BuildCalcOverWindow(TContext& ctx, const TString& label, const TNodePtr& ground) { - if (AggregationOverWindow.empty() && FuncOverWindow.empty()) { + if (AggregationOverWindow_.empty() && FuncOverWindow_.empty()) { return {}; } WindowFuncSupp winSupp; - for (auto iter: AggregationOverWindow) { + for (auto iter: AggregationOverWindow_) { auto windowId = winSupp.GetWindowByName(iter.first); if (!windowId) { - windowId = winSupp.CreateWindowBySpec(iter.first, WinSpecs.at(iter.first)); + windowId = winSupp.CreateWindowBySpec(iter.first, WinSpecs_.at(iter.first)); } winSupp.AddAggregationFunc(windowId, iter.second); } - for (auto iter: FuncOverWindow) { + for (auto iter: FuncOverWindow_) { auto windowId = winSupp.GetWindowByName(iter.first); if (!windowId) { - windowId = winSupp.CreateWindowBySpec(iter.first, WinSpecs.at(iter.first)); + windowId = winSupp.CreateWindowBySpec(iter.first, WinSpecs_.at(iter.first)); } winSupp.AddSimpleFunc(windowId, iter.second); } @@ -1685,7 +1685,7 @@ bool ISource::DoInit(TContext& ctx, ISource* src) { } bool ISource::InitFilters(TContext& ctx) { - for (auto& filter: Filters) { + for (auto& filter: Filters_) { if (!filter->Init(ctx, this)) { return false; } @@ -1725,7 +1725,7 @@ void ISource::FillSortParts(const TVector<TSortSpecificationPtr>& orderBy, TNode expr = Q(exprList); } expr = sortKeySelector ? expr->Y("block", expr->Q(expr->L(sortKeySelector, expr->Y("return", expr)))) : expr; - sortKeySelector = BuildLambda(Pos, Y("row"), expr); + sortKeySelector = BuildLambda(Pos_, Y("row"), expr); } TNodePtr ISource::BuildSortSpec(const TVector<TSortSpecificationPtr>& orderBy, const TString& label, const TNodePtr& ground, bool traits) { @@ -1881,47 +1881,47 @@ public: TLiteralNode::TLiteralNode(TPosition pos, bool isNull) : TAstListNode(pos) - , Null(isNull) - , Void(!isNull) + , Null_(isNull) + , Void_(!isNull) { Add(isNull ? "Null" : "Void"); } TLiteralNode::TLiteralNode(TPosition pos, const TString& type, const TString& value) : TAstListNode(pos) - , Null(false) - , Void(false) - , Type(type) - , Value(value) + , Null_(false) + , Void_(false) + , Type_(type) + , Value_(value) { - Add(Type, BuildQuotedAtom(Pos, Value)); + Add(Type_, BuildQuotedAtom(Pos_, Value_)); } TLiteralNode::TLiteralNode(TPosition pos, const TString& value, ui32 nodeFlags) : TAstListNode(pos) - , Null(false) - , Void(false) - , Type("String") - , Value(value) + , Null_(false) + , Void_(false) + , Type_("String") + , Value_(value) { - Add(Type, BuildQuotedAtom(pos, Value, nodeFlags)); + Add(Type_, BuildQuotedAtom(pos, Value_, nodeFlags)); } bool TLiteralNode::IsNull() const { - return Null; + return Null_; } const TString* TLiteralNode::GetLiteral(const TString& type) const { - return type == Type ? &Value : nullptr; + return type == Type_ ? &Value_ : nullptr; } void TLiteralNode::DoUpdateState() const { - State.Set(ENodeState::Const); + State_.Set(ENodeState::Const); } TNodePtr TLiteralNode::DoClone() const { - auto res = (Null || Void) ? MakeIntrusive<TLiteralNode>(Pos, Null) : MakeIntrusive<TLiteralNode>(Pos, Type, Value); - res->Nodes = Nodes; + auto res = (Null_ || Void_) ? MakeIntrusive<TLiteralNode>(Pos_, Null_) : MakeIntrusive<TLiteralNode>(Pos_, Type_, Value_); + res->Nodes_ = Nodes_; return res; } @@ -1932,15 +1932,15 @@ TLiteralNumberNode<T>::TLiteralNumberNode(TPosition pos, const TString& type, co template<typename T> TNodePtr TLiteralNumberNode<T>::DoClone() const { - return new TLiteralNumberNode<T>(Pos, Type, Value); + return new TLiteralNumberNode<T>(Pos_, Type_, Value_); } template<typename T> bool TLiteralNumberNode<T>::DoInit(TContext& ctx, ISource* src) { Y_UNUSED(src); T val; - if (!TryFromString(Value, val)) { - ctx.Error(Pos) << "Failed to convert string: " << Value << " to " << Type << " value"; + if (!TryFromString(Value_, val)) { + ctx.Error(Pos_) << "Failed to convert string: " << Value_ << " to " << Type_ << " value"; return false; } return true; @@ -2005,49 +2005,49 @@ TDeferredAtom::TDeferredAtom() TDeferredAtom::TDeferredAtom(TPosition pos, const TString& str) { - Node = BuildQuotedAtom(pos, str); - Explicit = str; - Repr = str; + Node_ = BuildQuotedAtom(pos, str); + Explicit_ = str; + Repr_ = str; } TDeferredAtom::TDeferredAtom(TNodePtr node, TContext& ctx) { - Node = node; - Repr = ctx.MakeName("DeferredAtom"); + Node_ = node; + Repr_ = ctx.MakeName("DeferredAtom"); } const TString* TDeferredAtom::GetLiteral() const { - return Explicit.Get(); + return Explicit_.Get(); } TNodePtr TDeferredAtom::Build() const { - return Node; + return Node_; } TString TDeferredAtom::GetRepr() const { - return Repr; + return Repr_; } bool TDeferredAtom::Empty() const { - return !Node || Repr.empty(); + return !Node_ || Repr_.empty(); } TTupleNode::TTupleNode(TPosition pos, const TVector<TNodePtr>& exprs) : TAstListNode(pos) - , Exprs(exprs) + , Exprs_(exprs) {} bool TTupleNode::IsEmpty() const { - return Exprs.empty(); + return Exprs_.empty(); } const TVector<TNodePtr>& TTupleNode::Elements() const { - return Exprs; + return Exprs_; } bool TTupleNode::DoInit(TContext& ctx, ISource* src) { auto node(Y()); - for (auto& expr: Exprs) { + for (auto& expr: Exprs_) { if (expr->GetLabel()) { ctx.Error(expr->GetPos()) << "Tuple does not allow named members"; return false; @@ -2059,15 +2059,15 @@ bool TTupleNode::DoInit(TContext& ctx, ISource* src) { } size_t TTupleNode::GetTupleSize() const { - return Exprs.size(); + return Exprs_.size(); } TNodePtr TTupleNode::GetTupleElement(size_t index) const { - return Exprs[index]; + return Exprs_[index]; } TNodePtr TTupleNode::DoClone() const { - return new TTupleNode(Pos, CloneContainer(Exprs)); + return new TTupleNode(Pos_, CloneContainer(Exprs_)); } TNodePtr BuildTuple(TPosition pos, const TVector<TNodePtr>& exprs) { @@ -2076,24 +2076,24 @@ TNodePtr BuildTuple(TPosition pos, const TVector<TNodePtr>& exprs) { TStructNode::TStructNode(TPosition pos, const TVector<TNodePtr>& exprs) : TAstListNode(pos) - , Exprs(exprs) + , Exprs_(exprs) {} bool TStructNode::DoInit(TContext& ctx, ISource* src) { - Nodes.push_back(BuildAtom(Pos, "AsStruct", TNodeFlags::Default)); - for (const auto& expr : Exprs) { + Nodes_.push_back(BuildAtom(Pos_, "AsStruct", TNodeFlags::Default)); + for (const auto& expr : Exprs_) { const auto& label = expr->GetLabel(); if (!label) { ctx.Error(expr->GetPos()) << "Structure does not allow anonymous members"; return false; } - Nodes.push_back(Q(Y(BuildQuotedAtom(expr->GetPos(), label), expr))); + Nodes_.push_back(Q(Y(BuildQuotedAtom(expr->GetPos(), label), expr))); } return TAstListNode::DoInit(ctx, src); } TNodePtr TStructNode::DoClone() const { - return new TStructNode(Pos, CloneContainer(Exprs)); + return new TStructNode(Pos_, CloneContainer(Exprs_)); } TNodePtr BuildStructure(TPosition pos, const TVector<TNodePtr>& exprs) { @@ -2102,11 +2102,11 @@ TNodePtr BuildStructure(TPosition pos, const TVector<TNodePtr>& exprs) { TListOfNamedNodes::TListOfNamedNodes(TPosition pos, TVector<TNodePtr>&& exprs) : INode(pos) - , Exprs(std::move(exprs)) + , Exprs_(std::move(exprs)) {} TVector<TNodePtr>* TListOfNamedNodes::ContentListPtr() { - return &Exprs; + return &Exprs_; } TAstNode* TListOfNamedNodes::Translate(TContext& ctx) const { @@ -2128,13 +2128,13 @@ const char* const TArgPlaceholderNode::ProcessRow = "$ROW"; TArgPlaceholderNode::TArgPlaceholderNode(TPosition pos, const TString &name) : INode(pos), - Name(name) + Name_(name) { } bool TArgPlaceholderNode::DoInit(TContext& ctx, ISource* src) { Y_UNUSED(src); - ctx.Error(Pos) << Name << " can't be used as a part of expression."; + ctx.Error(Pos_) << Name_ << " can't be used as a part of expression."; return false; } @@ -2144,7 +2144,7 @@ TAstNode* TArgPlaceholderNode::Translate(TContext& ctx) const { } TString TArgPlaceholderNode::GetName() const { - return Name; + return Name_; } TNodePtr TArgPlaceholderNode::DoClone() const { @@ -2159,45 +2159,45 @@ class TAccessNode: public INode { public: TAccessNode(TPosition pos, const TVector<TIdPart>& ids, bool isLookup) : INode(pos) - , Ids(ids) - , IsLookup(isLookup) - , ColumnOnly(false) - , IsColumnRequired(false) + , Ids_(ids) + , IsLookup_(isLookup) + , ColumnOnly_(false) + , IsColumnRequired_(false) { - Y_DEBUG_ABORT_UNLESS(Ids.size() > 1); - Y_DEBUG_ABORT_UNLESS(Ids[0].Expr); - auto column = dynamic_cast<TColumnNode*>(Ids[0].Expr.Get()); + Y_DEBUG_ABORT_UNLESS(Ids_.size() > 1); + Y_DEBUG_ABORT_UNLESS(Ids_[0].Expr); + auto column = dynamic_cast<TColumnNode*>(Ids_[0].Expr.Get()); if (column) { ui32 idx = 1; TString source; - if (Ids.size() > 2) { - source = Ids[idx].Name; + if (Ids_.size() > 2) { + source = Ids_[idx].Name; ++idx; } - ColumnOnly = !IsLookup && Ids.size() < 4; - if (ColumnOnly && Ids[idx].Expr) { - column->ResetColumn(Ids[idx].Expr, source); + ColumnOnly_ = !IsLookup_ && Ids_.size() < 4; + if (ColumnOnly_ && Ids_[idx].Expr) { + column->ResetColumn(Ids_[idx].Expr, source); } else { - column->ResetColumn(Ids[idx].Name, source); + column->ResetColumn(Ids_[idx].Name, source); } } } void AssumeColumn() override { - IsColumnRequired = true; + IsColumnRequired_ = true; } TMaybe<std::pair<TString, TString>> TryMakeClusterAndTable(TContext& ctx, bool& hasErrors) { hasErrors = false; - if (!ColumnOnly) { + if (!ColumnOnly_) { return Nothing(); } ui32 idx = 1; TString cluster; - if (Ids.size() > 2) { - cluster = Ids[idx].Name; + if (Ids_.size() > 2) { + cluster = Ids_[idx].Name; ++idx; } @@ -2212,7 +2212,7 @@ public: return Nothing(); } - auto tableName = Ids[idx].Name; + auto tableName = Ids_[idx].Name; if (tableName.empty()) { return Nothing(); } @@ -2234,28 +2234,28 @@ public: } TMaybe<TString> TryMakeTable() { - if (!ColumnOnly) { + if (!ColumnOnly_) { return Nothing(); } ui32 idx = 1; - if (Ids.size() > 2) { + if (Ids_.size() > 2) { return Nothing(); } - return Ids[idx].Name; + return Ids_[idx].Name; } const TString* GetColumnName() const override { - return ColumnOnly ? Ids[0].Expr->GetColumnName() : nullptr; + return ColumnOnly_ ? Ids_[0].Expr->GetColumnName() : nullptr; } const TString* GetSourceName() const override { - return Ids[0].Expr->GetSourceName(); + return Ids_[0].Expr->GetSourceName(); } bool DoInit(TContext& ctx, ISource* src) override { - auto expr = Ids[0].Expr; + auto expr = Ids_[0].Expr; const TPosition pos(expr->GetPos()); if (expr->IsAsterisk()) { ctx.Error(pos) << "Asterisk column does not allow any access"; @@ -2264,7 +2264,7 @@ public: if (!expr->Init(ctx, src)) { return false; } - for (auto& id: Ids) { + for (auto& id: Ids_) { if (id.Expr && !id.Expr->Init(ctx, src)) { return false; } @@ -2273,36 +2273,36 @@ public: auto column = dynamic_cast<TColumnNode*>(expr.Get()); if (column) { const bool useSourceAsColumn = column->IsUseSourceAsColumn(); - ColumnOnly &= !useSourceAsColumn; - if (IsColumnRequired && !ColumnOnly) { + ColumnOnly_ &= !useSourceAsColumn; + if (IsColumnRequired_ && !ColumnOnly_) { ctx.Error(pos) << "Please use a full form (corellation.struct.field) or an alias (struct.field as alias) to access struct's field in the GROUP BY"; return false; } - if (Ids.size() > 2) { - if (!CheckColumnId(pos, ctx, Ids[idx], ColumnOnly ? "Correlation" : "Column", true)) { + if (Ids_.size() > 2) { + if (!CheckColumnId(pos, ctx, Ids_[idx], ColumnOnly_ ? "Correlation" : "Column", true)) { return false; } ++idx; } if (!useSourceAsColumn) { - if (!IsLookup && !CheckColumnId(pos, ctx, Ids[idx], ColumnOnly ? "Column" : "Member", false)) { + if (!IsLookup_ && !CheckColumnId(pos, ctx, Ids_[idx], ColumnOnly_ ? "Column" : "Member", false)) { return false; } ++idx; } } - for (; idx < Ids.size(); ++idx) { - const auto& id = Ids[idx]; + for (; idx < Ids_.size(); ++idx) { + const auto& id = Ids_[idx]; if (!id.Name.empty()) { - expr = Y("SqlAccess", Q("struct"), expr, id.Expr ? Y("EvaluateAtom", id.Expr) : BuildQuotedAtom(Pos, id.Name)); - AccessOpName = "AccessStructMember"; + expr = Y("SqlAccess", Q("struct"), expr, id.Expr ? Y("EvaluateAtom", id.Expr) : BuildQuotedAtom(Pos_, id.Name)); + AccessOpName_ = "AccessStructMember"; } else if (id.Expr) { expr = Y("SqlAccess", Q("dict"), expr, id.Expr); - AccessOpName = "AccessDictMember"; + AccessOpName_ = "AccessDictMember"; } else if (id.Pos >= 0) { expr = Y("SqlAccess", Q("tuple"), expr, Q(ToString(id.Pos))); - AccessOpName = "AccessTupleElement"; + AccessOpName_ = "AccessTupleElement"; } else { continue; } @@ -2310,41 +2310,41 @@ public: if (ctx.PragmaYsonAutoConvert || ctx.PragmaYsonStrict) { auto ysonOptions = Y(); if (ctx.PragmaYsonAutoConvert) { - ysonOptions->Add(BuildQuotedAtom(Pos, "yson_auto_convert")); + ysonOptions->Add(BuildQuotedAtom(Pos_, "yson_auto_convert")); } if (ctx.PragmaYsonStrict) { - ysonOptions->Add(BuildQuotedAtom(Pos, "yson_strict")); + ysonOptions->Add(BuildQuotedAtom(Pos_, "yson_strict")); } expr->Add(Q(ysonOptions)); } } - Node = expr; + Node_ = expr; return true; } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } TPtr DoClone() const override { - YQL_ENSURE(!Node, "TAccessNode::Clone: Node should not be initialized"); + YQL_ENSURE(!Node_, "TAccessNode::Clone: Node should not be initialized"); TVector<TIdPart> cloneIds; - cloneIds.reserve(Ids.size()); - for (const auto& id: Ids) { + cloneIds.reserve(Ids_.size()); + for (const auto& id: Ids_) { cloneIds.emplace_back(id.Clone()); } - auto copy = new TAccessNode(Pos, cloneIds, IsLookup); - copy->ColumnOnly = ColumnOnly; + auto copy = new TAccessNode(Pos_, cloneIds, IsLookup_); + copy->ColumnOnly_ = ColumnOnly_; return copy; } protected: void DoUpdateState() const override { - State.Set(ENodeState::Const, Ids[0].Expr->IsConstant()); - State.Set(ENodeState::Aggregated, Ids[0].Expr->IsAggregated()); - State.Set(ENodeState::AggregationKey, Ids[0].Expr->HasState(ENodeState::AggregationKey)); - State.Set(ENodeState::OverWindow, Ids[0].Expr->IsOverWindow()); + State_.Set(ENodeState::Const, Ids_[0].Expr->IsConstant()); + State_.Set(ENodeState::Aggregated, Ids_[0].Expr->IsAggregated()); + State_.Set(ENodeState::AggregationKey, Ids_[0].Expr->HasState(ENodeState::AggregationKey)); + State_.Set(ENodeState::OverWindow, Ids_[0].Expr->IsOverWindow()); } bool CheckColumnId(TPosition pos, TContext& ctx, const TIdPart& id, const TString& where, bool checkLookup) { @@ -2364,16 +2364,16 @@ protected: } TString GetOpName() const override { - return AccessOpName; + return AccessOpName_; } private: - TNodePtr Node; - TVector<TIdPart> Ids; - bool IsLookup; - bool ColumnOnly; - bool IsColumnRequired; - TString AccessOpName; + TNodePtr Node_; + TVector<TIdPart> Ids_; + bool IsLookup_; + bool ColumnOnly_; + bool IsColumnRequired_; + TString AccessOpName_; }; TNodePtr BuildAccess(TPosition pos, const TVector<INode::TIdPart>& ids, bool isLookup) { @@ -2422,14 +2422,14 @@ class TCastNode: public TAstListNode { public: TCastNode(TPosition pos, TNodePtr expr, const TString& typeName, const TString& paramOne, const TString& paramTwo) : TAstListNode(pos) - , Expr(expr) - , NormalizedTypeName(TypeByAlias(typeName)) - , ParamOne(paramOne) - , ParamTwo(paramTwo) + , Expr_(expr) + , NormalizedTypeName_(TypeByAlias(typeName)) + , ParamOne_(paramOne) + , ParamTwo_(paramTwo) {} const TString* GetSourceName() const override { - return Expr->GetSourceName(); + return Expr_->GetSourceName(); } TString GetOpName() const override { @@ -2437,39 +2437,39 @@ public: } void DoUpdateState() const override { - State.Set(ENodeState::Const, Expr->IsConstant()); - State.Set(ENodeState::Aggregated, Expr->IsAggregated()); - State.Set(ENodeState::OverWindow, Expr->IsOverWindow()); + State_.Set(ENodeState::Const, Expr_->IsConstant()); + State_.Set(ENodeState::Aggregated, Expr_->IsAggregated()); + State_.Set(ENodeState::OverWindow, Expr_->IsOverWindow()); } TPtr DoClone() const final { - return new TCastNode(Pos, Expr->Clone(), NormalizedTypeName, ParamOne, ParamTwo); + return new TCastNode(Pos_, Expr_->Clone(), NormalizedTypeName_, ParamOne_, ParamTwo_); } bool DoInit(TContext& ctx, ISource* src) override; private: - TNodePtr Expr; - const TString NormalizedTypeName; - const TString ParamOne, ParamTwo; + TNodePtr Expr_; + const TString NormalizedTypeName_; + const TString ParamOne_, ParamTwo_; }; template <> bool TCastNode<false>::DoInit(TContext& ctx, ISource* src) { - if (Expr->IsNull()) { - if (ParamOne.empty() && ParamTwo.empty()) { - Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName)))); - } else if (ParamTwo.empty()) { - Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName), Q(ParamOne)))); + if (Expr_->IsNull()) { + if (ParamOne_.empty() && ParamTwo_.empty()) { + Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName_)))); + } else if (ParamTwo_.empty()) { + Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName_), Q(ParamOne_)))); } else { - Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName), Q(ParamOne), Q(ParamTwo)))); + Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName_), Q(ParamOne_), Q(ParamTwo_)))); } } else { - if (ParamOne.empty() && ParamTwo.empty()) { - Add("Cast", Expr, Q(NormalizedTypeName)); - } else if (ParamTwo.empty()) { - Add("Cast", Expr, Q(NormalizedTypeName), Q(ParamOne)); + if (ParamOne_.empty() && ParamTwo_.empty()) { + Add("Cast", Expr_, Q(NormalizedTypeName_)); + } else if (ParamTwo_.empty()) { + Add("Cast", Expr_, Q(NormalizedTypeName_), Q(ParamOne_)); } else { - Add("Cast", Expr, Q(NormalizedTypeName), Q(ParamOne), Q(ParamTwo)); + Add("Cast", Expr_, Q(NormalizedTypeName_), Q(ParamOne_), Q(ParamTwo_)); } } return TAstListNode::DoInit(ctx, src); @@ -2477,21 +2477,21 @@ bool TCastNode<false>::DoInit(TContext& ctx, ISource* src) { template <> bool TCastNode<true>::DoInit(TContext& ctx, ISource* src) { - if (Expr->IsNull()) { - if (ParamOne.empty() && ParamTwo.empty()) { - Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName)))); - } else if (ParamTwo.empty()) { - Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName), Q(ParamOne)))); + if (Expr_->IsNull()) { + if (ParamOne_.empty() && ParamTwo_.empty()) { + Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName_)))); + } else if (ParamTwo_.empty()) { + Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName_), Q(ParamOne_)))); } else { - Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName), Q(ParamOne), Q(ParamTwo)))); + Add("Nothing", Y("OptionalType", Y("DataType", Q(NormalizedTypeName_), Q(ParamOne_), Q(ParamTwo_)))); } } else { - if (ParamOne.empty() && ParamTwo.empty()) { - Add("BitCast", Expr, Q(NormalizedTypeName)); - } else if (ParamTwo.empty()) { - Add("BitCast", Expr, Q(NormalizedTypeName), Q(ParamOne)); + if (ParamOne_.empty() && ParamTwo_.empty()) { + Add("BitCast", Expr_, Q(NormalizedTypeName_)); + } else if (ParamTwo_.empty()) { + Add("BitCast", Expr_, Q(NormalizedTypeName_), Q(ParamOne_)); } else { - Add("BitCast", Expr, Q(NormalizedTypeName), Q(ParamOne), Q(ParamTwo)); + Add("BitCast", Expr_, Q(NormalizedTypeName_), Q(ParamOne_), Q(ParamTwo_)); } } return TAstListNode::DoInit(ctx, src); @@ -2557,8 +2557,8 @@ public: TBinaryOpNode(TPosition pos, const TString& opName, TNodePtr a, TNodePtr b); TNodePtr DoClone() const final { - YQL_ENSURE(Args.size() == 2); - return new TBinaryOpNode(Pos, OpName, Args[0]->Clone(), Args[1]->Clone()); + YQL_ENSURE(Args_.size() == 2); + return new TBinaryOpNode(Pos_, OpName_, Args_[0]->Clone(), Args_[1]->Clone()); } }; @@ -2581,35 +2581,35 @@ class TCalcOverWindow final: public INode { public: TCalcOverWindow(TPosition pos, const TString& windowName, TNodePtr node) : INode(pos) - , WindowName(windowName) - , FuncNode(node) + , WindowName_(windowName) + , FuncNode_(node) {} TAstNode* Translate(TContext& ctx) const override { - return FuncNode->Translate(ctx); + return FuncNode_->Translate(ctx); } bool DoInit(TContext& ctx, ISource* src) override { YQL_ENSURE(src); - TSourcePtr overWindowSource = BuildOverWindowSource(ctx.Pos(), WindowName, src); - if (!FuncNode->Init(ctx, overWindowSource.Get())) { + TSourcePtr overWindowSource = BuildOverWindowSource(ctx.Pos(), WindowName_, src); + if (!FuncNode_->Init(ctx, overWindowSource.Get())) { return false; } return true; } TPtr DoClone() const final { - return new TCalcOverWindow(Pos, WindowName, SafeClone(FuncNode)); + return new TCalcOverWindow(Pos_, WindowName_, SafeClone(FuncNode_)); } void DoUpdateState() const override { - State.Set(ENodeState::Const, FuncNode->IsConstant()); - State.Set(ENodeState::Aggregated, FuncNode->IsAggregated()); - State.Set(ENodeState::OverWindow, true); + State_.Set(ENodeState::Const, FuncNode_->IsConstant()); + State_.Set(ENodeState::Aggregated, FuncNode_->IsAggregated()); + State_.Set(ENodeState::OverWindow, true); } protected: - const TString WindowName; - TNodePtr FuncNode; + const TString WindowName_; + TNodePtr FuncNode_; }; TNodePtr BuildCalcOverWindow(TPosition pos, const TString& windowName, TNodePtr call) { @@ -2620,37 +2620,37 @@ class TYsonOptionsNode final: public INode { public: TYsonOptionsNode(TPosition pos, bool autoConvert, bool strict) : INode(pos) - , AutoConvert(autoConvert) - , Strict(strict) + , AutoConvert_(autoConvert) + , Strict_(strict) { auto udf = Y("Udf", Q("Yson.Options")); auto autoConvertNode = BuildLiteralBool(pos, autoConvert ? "true" : "false"); autoConvertNode->SetLabel("AutoConvert"); auto strictNode = BuildLiteralBool(pos, strict ? "true" : "false"); strictNode->SetLabel("Strict"); - Node = Y("NamedApply", udf, Q(Y()), BuildStructure(pos, { autoConvertNode, strictNode })); + Node_ = Y("NamedApply", udf, Q(Y()), BuildStructure(pos, { autoConvertNode, strictNode })); } TAstNode* Translate(TContext& ctx) const override { - return Node->Translate(ctx); + return Node_->Translate(ctx); } bool DoInit(TContext& ctx, ISource* src) override { YQL_ENSURE(src); - if (!Node->Init(ctx, src)) { + if (!Node_->Init(ctx, src)) { return false; } return true; } TPtr DoClone() const final { - return new TYsonOptionsNode(Pos, AutoConvert, Strict); + return new TYsonOptionsNode(Pos_, AutoConvert_, Strict_); } protected: - TNodePtr Node; - const bool AutoConvert; - const bool Strict; + TNodePtr Node_; + const bool AutoConvert_; + const bool Strict_; }; TNodePtr BuildYsonOptionsNode(TPosition pos, bool autoConvert, bool strict) { @@ -2658,45 +2658,45 @@ TNodePtr BuildYsonOptionsNode(TPosition pos, bool autoConvert, bool strict) { } class TShortcutNode: public TAstAtomNode { - TNodePtr ShortcutNode; - TNodePtr SameNode; - const TString BaseName; + TNodePtr ShortcutNode_; + TNodePtr SameNode_; + const TString BaseName_; public: TShortcutNode(const TNodePtr& node, const TString& baseName) : TAstAtomNode(node->GetPos(), TStringBuilder() << "Shortcut" << baseName, TNodeFlags::Default) - , ShortcutNode(node) - , BaseName(baseName) + , ShortcutNode_(node) + , BaseName_(baseName) {} bool DoInit(TContext& ctx, ISource* src) override { - auto shortcut = ctx.HasBlockShortcut(ShortcutNode); + auto shortcut = ctx.HasBlockShortcut(ShortcutNode_); if (!shortcut) { - SameNode = ShortcutNode->Clone(); - if (!SameNode->Init(ctx, src)) { + SameNode_ = ShortcutNode_->Clone(); + if (!SameNode_->Init(ctx, src)) { return false; } - shortcut = ctx.RegisterBlockShortcut(ShortcutNode, SameNode, BaseName); + shortcut = ctx.RegisterBlockShortcut(ShortcutNode_, SameNode_, BaseName_); YQL_ENSURE(shortcut); } else { - SameNode = ctx.GetBlockShortcut(shortcut); + SameNode_ = ctx.GetBlockShortcut(shortcut); } - Content = shortcut; + Content_ = shortcut; return true; } const TString* GetSourceName() const override { - return ShortcutNode->GetSourceName(); + return ShortcutNode_->GetSourceName(); } void DoUpdateState() const override { - auto& workedNode = SameNode ? SameNode : ShortcutNode; - State.Set(ENodeState::Const, workedNode->IsConstant()); - State.Set(ENodeState::Aggregated, workedNode->IsAggregated()); - State.Set(ENodeState::OverWindow, workedNode->IsOverWindow()); + auto& workedNode = SameNode_ ? SameNode_ : ShortcutNode_; + State_.Set(ENodeState::Const, workedNode->IsConstant()); + State_.Set(ENodeState::Aggregated, workedNode->IsAggregated()); + State_.Set(ENodeState::OverWindow, workedNode->IsOverWindow()); } TNodePtr DoClone() const final { - return new TShortcutNode(ShortcutNode, BaseName); + return new TShortcutNode(ShortcutNode_, BaseName_); } }; @@ -2708,37 +2708,37 @@ class TDoCall final : public INode { public: TDoCall(TPosition pos, const TNodePtr& node) : INode(pos) - , Node(node) + , Node_(node) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } ISource* GetSource() final { - return FakeSource.Get(); + return FakeSource_.Get(); } bool DoInit(TContext& ctx, ISource* src) final { Y_UNUSED(src); ctx.PushBlockShortcuts(); - if (!Node->Init(ctx, FakeSource.Get())) { + if (!Node_->Init(ctx, FakeSource_.Get())) { return false; } - Node = ctx.GroundBlockShortcutsForExpr(Node); + Node_ = ctx.GroundBlockShortcutsForExpr(Node_); return true; } TAstNode* Translate(TContext& ctx) const final { - return Node->Translate(ctx); + return Node_->Translate(ctx); } TPtr DoClone() const final { - return new TDoCall(Pos, Node->Clone()); + return new TDoCall(Pos_, Node_->Clone()); } private: - TNodePtr Node; - TSourcePtr FakeSource; + TNodePtr Node_; + TSourcePtr FakeSource_; }; TNodePtr BuildDoCall(TPosition pos, const TNodePtr& node) { @@ -2854,25 +2854,25 @@ class TTupleResultNode: public INode { public: TTupleResultNode(TNodePtr&& tuple, int ensureTupleSize) : INode(tuple->GetPos()) - , Node(std::move(tuple)) - , EnsureTupleSize(ensureTupleSize) + , Node_(std::move(tuple)) + , EnsureTupleSize_(ensureTupleSize) { } bool DoInit(TContext& ctx, ISource* src) override { ctx.PushBlockShortcuts(); - if (!Node->Init(ctx, src)) { + if (!Node_->Init(ctx, src)) { return false; } - Node = ctx.GroundBlockShortcutsForExpr(Node); - Node = Y("EnsureTupleSize", Node, Q(ToString(EnsureTupleSize))); + Node_ = ctx.GroundBlockShortcutsForExpr(Node_); + Node_ = Y("EnsureTupleSize", Node_, Q(ToString(EnsureTupleSize_))); return true; } TAstNode* Translate(TContext& ctx) const override { - return Node->Translate(ctx); + return Node_->Translate(ctx); } TPtr DoClone() const final { @@ -2880,8 +2880,8 @@ public: } protected: - TNodePtr Node; - const int EnsureTupleSize; + TNodePtr Node_; + const int EnsureTupleSize_; }; TNodePtr BuildTupleResult(TNodePtr tuple, int ensureTupleSize) { diff --git a/yql/essentials/sql/v0/node.h b/yql/essentials/sql/v0/node.h index 69355bbf656..0a996501502 100644 --- a/yql/essentials/sql/v0/node.h +++ b/yql/essentials/sql/v0/node.h @@ -129,7 +129,7 @@ namespace NSQLTranslationV0 { bool IsOverWindow() const; bool HasState(ENodeState state) const { PrecacheState(); - return State.Test(state); + return State_.Test(state); } virtual bool IsNull() const; @@ -204,10 +204,10 @@ namespace NSQLTranslationV0 { virtual void DoAdd(TPtr node); protected: - TPosition Pos; - TString Label; - mutable TNodeState State; - bool AsInner = false; + TPosition Pos_; + TString Label_; + mutable TNodeState State_; + bool AsInner_ = false; }; typedef INode::TPtr TNodePtr; @@ -234,14 +234,14 @@ namespace NSQLTranslationV0 { TAstNode* Translate(TContext& ctx) const override; const TString& GetContent() const { - return Content; + return Content_; } const TString* GetAtomContent() const override; protected: - TString Content; - ui32 Flags; + TString Content_; + ui32 Flags_; void DoUpdateState() const override; }; @@ -253,7 +253,7 @@ namespace NSQLTranslationV0 { {} TNodePtr DoClone() const final { - return new TAstAtomNodeImpl(Pos, Content, Flags); + return new TAstAtomNodeImpl(Pos_, Content_, Flags_); } }; @@ -264,10 +264,10 @@ namespace NSQLTranslationV0 { TAstNode* Translate(TContext& ctx) const override; TPtr DoClone() const final { - return new TAstDirectNode(Node); + return new TAstDirectNode(Node_); } protected: - TAstNode* Node; + TAstNode* Node_; }; class TAstListNode: public INode { @@ -289,8 +289,8 @@ namespace NSQLTranslationV0 { void UpdateStateByListNodes(const TVector<TNodePtr>& Nodes) const; protected: - TVector<TNodePtr> Nodes; - mutable TMaybe<bool> CacheGroupKey; + TVector<TNodePtr> Nodes_; + mutable TMaybe<bool> CacheGroupKey_; }; class TAstListNodeImpl final: public TAstListNode { @@ -320,11 +320,11 @@ namespace NSQLTranslationV0 { TString GetCallExplain() const; protected: - TString OpName; - i32 MinArgs; - i32 MaxArgs; - TVector<TNodePtr> Args; - mutable TMaybe<bool> CacheGroupKey; + TString OpName_; + i32 MinArgs_; + i32 MaxArgs_; + TVector<TNodePtr> Args_; + mutable TMaybe<bool> CacheGroupKey_; void DoUpdateState() const override; }; @@ -345,7 +345,7 @@ namespace NSQLTranslationV0 { bool DoInit(TContext& ctx, ISource* src) override; private: - const ui32 ReqArgsCount; + const ui32 ReqArgsCount_; }; class TCallDirectRow final : public TCallNode { @@ -367,10 +367,10 @@ namespace NSQLTranslationV0 { protected: template<class TNodeType> TPtr CallNodeClone() const { - return new TNodeType(GetPos(), OpName, MinArgs, MaxArgs, CloneContainer(Args)); + return new TNodeType(GetPos(), OpName_, MinArgs_, MaxArgs_, CloneContainer(Args_)); } - TString FuncAlias; - TNodePtr WinAggrGround; + TString FuncAlias_; + TNodePtr WinAggrGround_; }; class TWinRowNumber final: public TWinAggrEmulation { @@ -536,9 +536,9 @@ namespace NSQLTranslationV0 { bool Empty() const; private: - TMaybe<TString> Explicit; - TNodePtr Node; // atom or evaluation node - TString Repr; + TMaybe<TString> Explicit_; + TNodePtr Node_; // atom or evaluation node + TString Repr_; }; struct TWriteSettings { @@ -575,15 +575,15 @@ namespace NSQLTranslationV0 { private: static const TString Empty; - TNodePtr Node; - TString ColumnName; - TNodePtr ColumnExpr; - TString Source; - bool GroupKey = false; - bool Artificial = false; - bool Reliable = true; - bool UseSource = false; - bool UseSourceAsColumn = false; + TNodePtr Node_; + TString ColumnName_; + TNodePtr ColumnExpr_; + TString Source_; + bool GroupKey_ = false; + bool Artificial_ = false; + bool Reliable_ = true; + bool UseSource_ = false; + bool UseSourceAsColumn_ = false; }; class TArgPlaceholderNode final: public INode @@ -603,7 +603,7 @@ namespace NSQLTranslationV0 { bool DoInit(TContext& ctx, ISource* src) override; private: - TString Name; + TString Name_; }; enum class EAggregateMode { @@ -623,7 +623,7 @@ namespace NSQLTranslationV0 { TPtr GetTupleElement(size_t index) const override; TNodePtr DoClone() const final; private: - const TVector<TNodePtr> Exprs; + const TVector<TNodePtr> Exprs_; }; class TStructNode: public TAstListNode { @@ -633,11 +633,11 @@ namespace NSQLTranslationV0 { bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final; const TVector<TNodePtr>& GetExprs() { - return Exprs; + return Exprs_; } private: - const TVector<TNodePtr> Exprs; + const TVector<TNodePtr> Exprs_; }; class IAggregation: public INode { @@ -671,10 +671,10 @@ namespace NSQLTranslationV0 { IAggregation(TPosition pos, const TString& name, const TString& func, EAggregateMode mode); TAstNode* Translate(TContext& ctx) const override; - TString Name; - const TString Func; - const EAggregateMode AggMode; - TString DistinctKey; + TString Name_; + const TString Func_; + const EAggregateMode AggMode_; + TString DistinctKey_; }; enum class EExprSeat: int { @@ -774,22 +774,22 @@ namespace NSQLTranslationV0 { const TVector<TNodePtr>& Expressions(EExprSeat exprSeat) const; TNodePtr AliasOrColumn(const TNodePtr& node, bool withSource); - THashSet<TString> ExprAliases; - THashMap<TString, TString> GroupByColumnAliases; - TVector<TNodePtr> Filters; - TSet<TString> GroupKeys; - TVector<TString> OrderedGroupKeys; - std::array<TVector<TNodePtr>, static_cast<unsigned>(EExprSeat::Max)> NamedExprs; - TVector<TAggregationPtr> Aggregations; - TMultiMap<TString, TAggregationPtr> AggregationOverWindow; - TMultiMap<TString, TNodePtr> FuncOverWindow; - TWinSpecs WinSpecs; - THoppingWindowSpecPtr HoppingWindowSpec; - TVector<ISource*> UsedSources; - TString FlattenMode; - bool FlattenColumns = false; - THashMap<TString, ui32> GenIndexes; - TVector<TString> TmpWindowColumns; + THashSet<TString> ExprAliases_; + THashMap<TString, TString> GroupByColumnAliases_; + TVector<TNodePtr> Filters_; + TSet<TString> GroupKeys_; + TVector<TString> OrderedGroupKeys_; + std::array<TVector<TNodePtr>, static_cast<unsigned>(EExprSeat::Max)> NamedExprs_; + TVector<TAggregationPtr> Aggregations_; + TMultiMap<TString, TAggregationPtr> AggregationOverWindow_; + TMultiMap<TString, TNodePtr> FuncOverWindow_; + TWinSpecs WinSpecs_; + THoppingWindowSpecPtr HoppingWindowSpec_; + TVector<ISource*> UsedSources_; + TString FlattenMode_; + bool FlattenColumns_ = false; + THashMap<TString, ui32> GenIndexes_; + TVector<TString> TmpWindowColumns_; }; typedef TIntrusivePtr<ISource> TSourcePtr; @@ -825,8 +825,8 @@ namespace NSQLTranslationV0 { TAstNode* Translate(TContext& ctx) const override; TPtr DoClone() const final; private: - TVector<TNodePtr> Exprs; - TString Meaning; + TVector<TNodePtr> Exprs_; + TString Meaning_; }; class TLiteralNode: public TAstListNode { @@ -839,10 +839,10 @@ namespace NSQLTranslationV0 { void DoUpdateState() const override; TPtr DoClone() const override; protected: - bool Null; - bool Void; - TString Type; - TString Value; + bool Null_; + bool Void_; + TString Type_; + TString Value_; }; template<typename T> diff --git a/yql/essentials/sql/v0/query.cpp b/yql/essentials/sql/v0/query.cpp index 81ff5fbc2c8..38d323cad57 100644 --- a/yql/essentials/sql/v0/query.cpp +++ b/yql/essentials/sql/v0/query.cpp @@ -17,43 +17,43 @@ class TUniqueTableKey: public ITableKeys { public: TUniqueTableKey(TPosition pos, const TString& cluster, const TDeferredAtom& name, const TString& view) : ITableKeys(pos) - , Cluster(cluster) - , Name(name) - , View(view) - , Full(name.GetRepr()) + , Cluster_(cluster) + , Name_(name) + , View_(view) + , Full_(name.GetRepr()) { - if (!View.empty()) { - Full += ":" + View; + if (!View_.empty()) { + Full_ += ":" + View_; } } const TString* GetTableName() const override { - return Name.GetLiteral() ? &Full : nullptr; + return Name_.GetLiteral() ? &Full_ : nullptr; } TNodePtr BuildKeys(TContext& ctx, ITableKeys::EBuildKeysMode mode) override { - if (View == "@") { - auto key = Y("TempTable", Name.Build()); + if (View_ == "@") { + auto key = Y("TempTable", Name_.Build()); return key; } bool tableScheme = mode == ITableKeys::EBuildKeysMode::CREATE; - if (tableScheme && !View.empty()) { - ctx.Error(Pos) << "Table view can not be created with CREATE TABLE clause"; + if (tableScheme && !View_.empty()) { + ctx.Error(Pos_) << "Table view can not be created with CREATE TABLE clause"; return nullptr; } - auto path = ctx.GetPrefixedPath(Cluster, Name); + auto path = ctx.GetPrefixedPath(Cluster_, Name_); if (!path) { return nullptr; } auto key = Y("Key", Q(Y(Q(tableScheme ? "tablescheme" : "table"), Y("String", path)))); - if (!View.empty()) { - key = L(key, Q(Y(Q("view"), Y("String", BuildQuotedAtom(Pos, View))))); + if (!View_.empty()) { + key = L(key, Q(Y(Q("view"), Y("String", BuildQuotedAtom(Pos_, View_))))); } if (mode == ITableKeys::EBuildKeysMode::INPUT && IsQueryMode(ctx.Settings.Mode) && - ctx.GetClusterProvider(Cluster).GetRef() != "kikimr" && - ctx.GetClusterProvider(Cluster).GetRef() != "rtmr") { + ctx.GetClusterProvider(Cluster_).GetRef() != "kikimr" && + ctx.GetClusterProvider(Cluster_).GetRef() != "rtmr") { key = Y("MrTableConcat", key); } @@ -61,10 +61,10 @@ public: } private: - TString Cluster; - TDeferredAtom Name; - TString View; - TString Full; + TString Cluster_; + TDeferredAtom Name_; + TString View_; + TString Full_; }; TNodePtr BuildTableKey(TPosition pos, const TString& cluster, const TDeferredAtom& name, const TString& view) { @@ -75,9 +75,9 @@ class TPrepTableKeys: public ITableKeys { public: TPrepTableKeys(TPosition pos, const TString& cluster, const TString& func, const TVector<TTableArg>& args) : ITableKeys(pos) - , Cluster(cluster) - , Func(func) - , Args(args) + , Cluster_(cluster) + , Func_(func) + , Args_(args) { } @@ -88,27 +88,27 @@ public: TNodePtr BuildKeys(TContext& ctx, ITableKeys::EBuildKeysMode mode) override { if (mode == ITableKeys::EBuildKeysMode::CREATE) { // TODO: allow creation of multiple tables - ctx.Error(Pos) << "Mutiple table creation is not implemented yet"; + ctx.Error(Pos_) << "Mutiple table creation is not implemented yet"; return nullptr; } - TCiString func(Func); + TCiString func(Func_); if (func == "concat_strict") { auto tuple = Y(); - for (auto& arg: Args) { + for (auto& arg: Args_) { ExtractTableName(ctx, arg); TNodePtr key; if (arg.HasAt) { key = Y("TempTable", arg.Id.Build()); } else { - auto path = ctx.GetPrefixedPath(Cluster, arg.Id); + auto path = ctx.GetPrefixedPath(Cluster_, arg.Id); if (!path) { return nullptr; } key = Y("Key", Q(Y(Q("table"), Y("String", path)))); if (!arg.View.empty()) { - key = L(key, Q(Y(Q("view"), Y("String", BuildQuotedAtom(Pos, arg.View))))); + key = L(key, Q(Y(Q("view"), Y("String", BuildQuotedAtom(Pos_, arg.View))))); } } @@ -118,20 +118,20 @@ public: } else if (func == "concat") { auto concat = Y("MrTableConcat"); - for (auto& arg : Args) { + for (auto& arg : Args_) { ExtractTableName(ctx, arg); TNodePtr key; if (arg.HasAt) { key = Y("TempTable", arg.Id.Build()); } else { - auto path = ctx.GetPrefixedPath(Cluster, arg.Id); + auto path = ctx.GetPrefixedPath(Cluster_, arg.Id); if (!path) { return nullptr; } key = Y("Key", Q(Y(Q("table"), Y("String", path)))); if (!arg.View.empty()) { - key = L(key, Q(Y(Q("view"), Y("String", BuildQuotedAtom(Pos, arg.View))))); + key = L(key, Q(Y(Q("view"), Y("String", BuildQuotedAtom(Pos_, arg.View))))); } } @@ -147,21 +147,21 @@ public: bool isFilter = func.StartsWith("filter"); size_t minArgs = isRange ? 1 : 2; size_t maxArgs = isRange ? 5 : 4; - if (Args.size() < minArgs || Args.size() > maxArgs) { - ctx.Error(Pos) << Func << " requires from " << minArgs << " to " << maxArgs << " arguments, but got: " << Args.size(); + if (Args_.size() < minArgs || Args_.size() > maxArgs) { + ctx.Error(Pos_) << Func_ << " requires from " << minArgs << " to " << maxArgs << " arguments, but got: " << Args_.size(); return nullptr; } - for (ui32 index=0; index < Args.size(); ++index) { - auto& arg = Args[index]; + for (ui32 index=0; index < Args_.size(); ++index) { + auto& arg = Args_[index]; if (arg.HasAt) { - ctx.Error(Pos) << "Temporary tables are not supported here"; + ctx.Error(Pos_) << "Temporary tables are not supported here"; return nullptr; } if (!arg.View.empty()) { TStringBuilder sb; - sb << "Use the last argument of " << Func << " to specify a VIEW." << Endl; + sb << "Use the last argument of " << Func_ << " to specify a VIEW." << Endl; if (isRange) { sb << "Possible arguments are: prefix, from, to, suffix, view." << Endl; } else if (isFilter) { @@ -171,7 +171,7 @@ public: } sb << "Pass [] to arguments you want to skip."; - ctx.Error(Pos) << sb; + ctx.Error(Pos_) << sb; return nullptr; } @@ -180,7 +180,7 @@ public: } } - auto path = ctx.GetPrefixedPath(Cluster, Args[0].Id); + auto path = ctx.GetPrefixedPath(Cluster_, Args_[0].Id); if (!path) { return nullptr; } @@ -190,59 +190,59 @@ public: if (func.StartsWith("range")) { TDeferredAtom min; TDeferredAtom max; - if (Args.size() > 1) { - min = Args[1].Id; + if (Args_.size() > 1) { + min = Args_[1].Id; } - if (Args.size() > 2) { - max = Args[2].Id; + if (Args_.size() > 2) { + max = Args_[2].Id; } - if (Args.size() > 3) { - suffix = Args[3].Id; + if (Args_.size() > 3) { + suffix = Args_[3].Id; } if (min.Empty() && max.Empty()) { - predicate = BuildLambda(Pos, Y("item"), Y("Bool", Q("true"))); + predicate = BuildLambda(Pos_, Y("item"), Y("Bool", Q("true"))); } else { auto minPred = !min.Empty() ? Y(">=", "item", Y("String", min.Build())) : nullptr; auto maxPred = !max.Empty() ? Y("<=", "item", Y("String", max.Build())) : nullptr; if (!minPred) { - predicate = BuildLambda(Pos, Y("item"), maxPred); + predicate = BuildLambda(Pos_, Y("item"), maxPred); } else if (!maxPred) { - predicate = BuildLambda(Pos, Y("item"), minPred); + predicate = BuildLambda(Pos_, Y("item"), minPred); } else { - predicate = BuildLambda(Pos, Y("item"), Y("And", minPred, maxPred)); + predicate = BuildLambda(Pos_, Y("item"), Y("And", minPred, maxPred)); } } } else { - if (Args.size() > 2) { - suffix = Args[2].Id; + if (Args_.size() > 2) { + suffix = Args_[2].Id; } if (func.StartsWith("regexp")) { - auto pattern = Args[1].Id; + auto pattern = Args_[1].Id; auto udf = Y("Udf", Q("Pcre.BacktrackingGrep"), Y("String", pattern.Build())); - predicate = BuildLambda(Pos, Y("item"), Y("Apply", udf, "item")); + predicate = BuildLambda(Pos_, Y("item"), Y("Apply", udf, "item")); } else if (func.StartsWith("like")) { - auto pattern = Args[1].Id; + auto pattern = Args_[1].Id; auto convertedPattern = Y("Apply", Y("Udf", Q("Re2.PatternFromLike")), Y("String", pattern.Build())); auto udf = Y("Udf", Q("Re2.Match"), Q(Y(convertedPattern, Y("Null")))); - predicate = BuildLambda(Pos, Y("item"), Y("Apply", udf, "item")); + predicate = BuildLambda(Pos_, Y("item"), Y("Apply", udf, "item")); } else { - predicate = BuildLambda(Pos, Y("item"), Y("Apply", Args[1].Expr, "item")); + predicate = BuildLambda(Pos_, Y("item"), Y("Apply", Args_[1].Expr, "item")); } } range = L(range, predicate); - range = L(range, suffix.Build() ? suffix.Build() : BuildQuotedAtom(Pos, "")); + range = L(range, suffix.Build() ? suffix.Build() : BuildQuotedAtom(Pos_, "")); auto key = Y("Key", Q(Y(Q("table"), range))); - if (Args.size() == maxArgs) { - const auto& lastArg = Args.back(); + if (Args_.size() == maxArgs) { + const auto& lastArg = Args_.back(); if (!lastArg.View.empty()) { - ctx.Error(Pos) << Func << " requires that view should be set as last argument"; + ctx.Error(Pos_) << Func_ << " requires that view should be set as last argument"; return nullptr; } @@ -254,9 +254,9 @@ public: return key; } else if (func == "each" || func == "each_strict") { auto each = Y(func == "each" ? "MrTableEach" : "MrTableEachStrict"); - for (auto& arg : Args) { + for (auto& arg : Args_) { if (arg.HasAt) { - ctx.Error(Pos) << "Temporary tables are not supported here"; + ctx.Error(Pos_) << "Temporary tables are not supported here"; return nullptr; } @@ -264,7 +264,7 @@ public: auto key = Y("Key", Q(Y(Q("table"), Y("EvaluateExpr", Y("EnsureType", Y("Coalesce", arg.Expr, Y("List", type)), type))))); if (!arg.View.empty()) { - key = L(key, Q(Y(Q("view"), Y("String", BuildQuotedAtom(Pos, arg.View))))); + key = L(key, Q(Y(Q("view"), Y("String", BuildQuotedAtom(Pos_, arg.View))))); } each = L(each, key); } @@ -274,20 +274,20 @@ public: else if (func == "folder") { size_t minArgs = 1; size_t maxArgs = 2; - if (Args.size() < minArgs || Args.size() > maxArgs) { - ctx.Error(Pos) << Func << " requires from " << minArgs << " to " << maxArgs << " arguments, but found: " << Args.size(); + if (Args_.size() < minArgs || Args_.size() > maxArgs) { + ctx.Error(Pos_) << Func_ << " requires from " << minArgs << " to " << maxArgs << " arguments, but found: " << Args_.size(); return nullptr; } - for (ui32 index = 0; index < Args.size(); ++index) { - auto& arg = Args[index]; + for (ui32 index = 0; index < Args_.size(); ++index) { + auto& arg = Args_[index]; if (arg.HasAt) { - ctx.Error(Pos) << "Temporary tables are not supported here"; + ctx.Error(Pos_) << "Temporary tables are not supported here"; return nullptr; } if (!arg.View.empty()) { - ctx.Error(Pos) << Func << " doesn't supports views"; + ctx.Error(Pos_) << Func_ << " doesn't supports views"; return nullptr; } @@ -295,19 +295,19 @@ public: } auto folder = Y("MrFolder"); - folder = L(folder, Args[0].Id.Build()); - folder = L(folder, Args.size() > 1 ? Args[1].Id.Build() : BuildQuotedAtom(Pos, "")); + folder = L(folder, Args_[0].Id.Build()); + folder = L(folder, Args_.size() > 1 ? Args_[1].Id.Build() : BuildQuotedAtom(Pos_, "")); return folder; } - ctx.Error(Pos) << "Unknown table name preprocessor: " << Func; + ctx.Error(Pos_) << "Unknown table name preprocessor: " << Func_; return nullptr; } private: - TString Cluster; - TString Func; - TVector<TTableArg> Args; + TString Cluster_; + TString Func_; + TVector<TTableArg> Args_; }; TNodePtr BuildTableKeys(TPosition pos, const TString& cluster, const TString& func, const TVector<TTableArg>& args) { @@ -318,15 +318,15 @@ class TInputOptions final: public TAstListNode { public: TInputOptions(TPosition pos, const TVector<TString>& hints) : TAstListNode(pos) - , Hints(hints) + , Hints_(hints) { } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); TSet<TString> used; - for (auto& hint: Hints) { - TMaybe<TIssue> normalizeError = NormalizeName(Pos, hint); + for (auto& hint: Hints_) { + TMaybe<TIssue> normalizeError = NormalizeName(Pos_, hint); if (!normalizeError.Empty()) { ctx.Error() << normalizeError->GetMessage(); ctx.IncrementMonCounter("sql_errors", "NormalizeHintError"); @@ -334,10 +334,10 @@ public: } TNodePtr option; if (used.insert(hint).second) { - option = Y(BuildQuotedAtom(Pos, hint)); + option = Y(BuildQuotedAtom(Pos_, hint)); } if (option) { - Nodes.push_back(Q(option)); + Nodes_.push_back(Q(option)); } } return true; @@ -348,7 +348,7 @@ public: } private: - TVector<TString> Hints; + TVector<TString> Hints_; }; TNodePtr BuildInputOptions(TPosition pos, const TVector<TString>& hints) { @@ -363,13 +363,13 @@ class TInputTablesNode final: public TAstListNode { public: TInputTablesNode(TPosition pos, const TTableList& tables, bool inSubquery) : TAstListNode(pos) - , Tables(tables) - , InSubquery(inSubquery) + , Tables_(tables) + , InSubquery_(inSubquery) {} bool DoInit(TContext& ctx, ISource* src) override { THashSet<TString> tables; - for (auto& tr: Tables) { + for (auto& tr: Tables_) { if (!tables.insert(tr.RefName).second) { continue; } @@ -386,11 +386,11 @@ public: keys = ctx.GroundBlockShortcutsForExpr(keys); auto service = tr.ServiceName(ctx); auto fields = Y("Void"); - auto source = Y("DataSource", BuildQuotedAtom(Pos, service), BuildQuotedAtom(Pos, tr.Cluster)); + auto source = Y("DataSource", BuildQuotedAtom(Pos_, service), BuildQuotedAtom(Pos_, tr.Cluster)); auto options = tr.Options ? Q(tr.Options) : Q(Y()); Add(Y("let", "x", keys->Y(TString(ReadName), "world", source, keys, fields, options))); if (service != YtProviderName) { - if (InSubquery) { + if (InSubquery_) { ctx.Error() << "Using of system '" << service << "' is not allowed in SUBQUERY"; return false; } @@ -409,8 +409,8 @@ public: } private: - TTableList Tables; - const bool InSubquery; + TTableList Tables_; + const bool InSubquery_; }; TNodePtr BuildInputTables(TPosition pos, const TTableList& tables, bool inSubquery) { @@ -423,43 +423,43 @@ public: const TVector<TIdentifier>& pkColumns, const TVector<TIdentifier>& partitionByColumns, const TVector<std::pair<TIdentifier, bool>>& orderByColumns) : TAstListNode(pos) - , Table(tr) - , Columns(columns) - , PkColumns(pkColumns) - , PartitionByColumns(partitionByColumns) - , OrderByColumns(orderByColumns) + , Table_(tr) + , Columns_(columns) + , PkColumns_(pkColumns) + , PartitionByColumns_(partitionByColumns) + , OrderByColumns_(orderByColumns) {} bool DoInit(TContext& ctx, ISource* src) override { - if (!Table.Check(ctx)) { + if (!Table_.Check(ctx)) { return false; } - auto keys = Table.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); + auto keys = Table_.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); ctx.PushBlockShortcuts(); if (!keys || !keys->Init(ctx, src)) { return false; } keys = ctx.GroundBlockShortcutsForExpr(keys); - if (!PkColumns.empty() || !PartitionByColumns.empty() || !OrderByColumns.empty()) { + if (!PkColumns_.empty() || !PartitionByColumns_.empty() || !OrderByColumns_.empty()) { THashSet<TString> columnsSet; - for (auto& col : Columns) { + for (auto& col : Columns_) { columnsSet.insert(col.Name); } - for (auto& keyColumn : PkColumns) { + for (auto& keyColumn : PkColumns_) { if (!columnsSet.contains(keyColumn.Name)) { ctx.Error(keyColumn.Pos) << "Undefined column: " << keyColumn.Name; return false; } } - for (auto& keyColumn : PartitionByColumns) { + for (auto& keyColumn : PartitionByColumns_) { if (!columnsSet.contains(keyColumn.Name)) { ctx.Error(keyColumn.Pos) << "Undefined column: " << keyColumn.Name; return false; } } - for (auto& keyColumn : OrderByColumns) { + for (auto& keyColumn : OrderByColumns_) { if (!columnsSet.contains(keyColumn.first.Name)) { ctx.Error(keyColumn.first.Pos) << "Undefined column: " << keyColumn.first.Name; return false; @@ -468,7 +468,7 @@ public: } auto columns = Y(); - for (auto& col: Columns) { + for (auto& col: Columns_) { auto type = ParseType(TypeByAlias(col.Type, !col.IsTypeString), *ctx.Pool, ctx.Issues, col.Pos); if (!type) { return false; @@ -493,53 +493,53 @@ public: type ); } - columns = L(columns, Q(Y(BuildQuotedAtom(Pos, col.Name), AstNode(type)))); + columns = L(columns, Q(Y(BuildQuotedAtom(Pos_, col.Name), AstNode(type)))); } auto opts = Y(); - if (Table.Options) { - if (!Table.Options->Init(ctx, src)) { + if (Table_.Options) { + if (!Table_.Options->Init(ctx, src)) { return false; } - opts = Table.Options; + opts = Table_.Options; } opts = L(opts, Q(Y(Q("mode"), Q("create")))); opts = L(opts, Q(Y(Q("columns"), Q(columns)))); - const auto serviceName = to_lower(Table.ServiceName(ctx)); + const auto serviceName = to_lower(Table_.ServiceName(ctx)); if (serviceName == RtmrProviderName) { - if (!PkColumns.empty() && !PartitionByColumns.empty()) { + if (!PkColumns_.empty() && !PartitionByColumns_.empty()) { ctx.Error() << "Only one of PRIMARY KEY or PARTITION BY constraints may be specified"; return false; } } else { - if (!PartitionByColumns.empty() || !OrderByColumns.empty()) { + if (!PartitionByColumns_.empty() || !OrderByColumns_.empty()) { ctx.Error() << "PARTITION BY and ORDER BY are supported only for " << RtmrProviderName << " provider"; return false; } } - if (!PkColumns.empty()) { + if (!PkColumns_.empty()) { auto primaryKey = Y(); - for (auto& col : PkColumns) { + for (auto& col : PkColumns_) { primaryKey = L(primaryKey, BuildQuotedAtom(col.Pos, col.Name)); } opts = L(opts, Q(Y(Q("primarykey"), Q(primaryKey)))); - if (!OrderByColumns.empty()) { + if (!OrderByColumns_.empty()) { ctx.Error() << "PRIMARY KEY cannot be used with ORDER BY, use PARTITION BY instead"; return false; } } else { - if (!PartitionByColumns.empty()) { + if (!PartitionByColumns_.empty()) { auto partitionBy = Y(); - for (auto& col : PartitionByColumns) { + for (auto& col : PartitionByColumns_) { partitionBy = L(partitionBy, BuildQuotedAtom(col.Pos, col.Name)); } opts = L(opts, Q(Y(Q("partitionby"), Q(partitionBy)))); } - if (!OrderByColumns.empty()) { + if (!OrderByColumns_.empty()) { auto orderBy = Y(); - for (auto& col : OrderByColumns) { + for (auto& col : OrderByColumns_) { orderBy = L(orderBy, Q(Y(BuildQuotedAtom(col.first.Pos, col.first.Name), col.second ? Q("1") : Q("0")))); } opts = L(opts, Q(Y(Q("orderby"), Q(orderBy)))); @@ -547,12 +547,12 @@ public: } Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Table.ServiceName(ctx)), BuildQuotedAtom(Pos, Table.Cluster))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Table_.ServiceName(ctx)), BuildQuotedAtom(Pos_, Table_.Cluster))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(opts))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); - ctx.UsedClusters.insert(Table.Cluster); + ctx.UsedClusters.insert(Table_.Cluster); return TAstListNode::DoInit(ctx, src); } @@ -560,11 +560,11 @@ public: return {}; } private: - TTableRef Table; - TVector<TColumnSchema> Columns; - TVector<TIdentifier> PkColumns; - TVector<TIdentifier> PartitionByColumns; - TVector<std::pair<TIdentifier, bool>> OrderByColumns; // column, is desc? + TTableRef Table_; + TVector<TColumnSchema> Columns_; + TVector<TIdentifier> PkColumns_; + TVector<TIdentifier> PartitionByColumns_; + TVector<std::pair<TIdentifier, bool>> OrderByColumns_; // column, is desc? }; TNodePtr BuildCreateTable(TPosition pos, const TTableRef& tr, const TVector<TColumnSchema>& columns, @@ -578,16 +578,16 @@ class TAlterTableNode final: public TAstListNode { public: TAlterTableNode(TPosition pos, const TTableRef& tr, const TVector<TColumnSchema>& columns, EAlterTableIntentnt intent) : TAstListNode(pos) - , Table(tr) - , Columns(columns) - , Intent(intent) + , Table_(tr) + , Columns_(columns) + , Intent_(intent) {} bool DoInit(TContext& ctx, ISource* src) override { - if (!Table.Check(ctx)) { + if (!Table_.Check(ctx)) { return false; } - auto keys = Table.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); + auto keys = Table_.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); ctx.PushBlockShortcuts(); if (!keys || !keys->Init(ctx, src)) { return false; @@ -596,15 +596,15 @@ public: auto actions = Y(); - if (Intent == EAlterTableIntentnt::DropColumn) { + if (Intent_ == EAlterTableIntentnt::DropColumn) { auto columns = Y(); - for (auto& col : Columns) { - columns = L(columns, BuildQuotedAtom(Pos, col.Name)); + for (auto& col : Columns_) { + columns = L(columns, BuildQuotedAtom(Pos_, col.Name)); } actions = L(actions, Q(Y(Q("dropColumns"), Q(columns)))); } else { auto columns = Y(); - for (auto& col: Columns) { + for (auto& col: Columns_) { auto type = ParseType(TypeByAlias(col.Type, !col.IsTypeString), *ctx.Pool, ctx.Issues, col.Pos); if (!type) { return false; @@ -629,7 +629,7 @@ public: type ); } - columns = L(columns, Q(Y(BuildQuotedAtom(Pos, col.Name), AstNode(type)))); + columns = L(columns, Q(Y(BuildQuotedAtom(Pos_, col.Name), AstNode(type)))); } actions = L(actions, Q(Y(Q("addColumns"), Q(columns)))); } @@ -640,21 +640,21 @@ public: opts = L(opts, Q(Y(Q("actions"), Q(actions)))); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Table.ServiceName(ctx)), BuildQuotedAtom(Pos, Table.Cluster))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Table_.ServiceName(ctx)), BuildQuotedAtom(Pos_, Table_.Cluster))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(opts))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); - ctx.UsedClusters.insert(Table.Cluster); + ctx.UsedClusters.insert(Table_.Cluster); return TAstListNode::DoInit(ctx, src); } TPtr DoClone() const final { return {}; } private: - TTableRef Table; - TVector<TColumnSchema> Columns; - EAlterTableIntentnt Intent; + TTableRef Table_; + TVector<TColumnSchema> Columns_; + EAlterTableIntentnt Intent_; }; TNodePtr BuildAlterTable(TPosition pos, const TTableRef& tr, const TVector<TColumnSchema>& columns, EAlterTableIntentnt intent) @@ -666,39 +666,39 @@ class TDropTableNode final: public TAstListNode { public: TDropTableNode(TPosition pos, const TTableRef& tr) : TAstListNode(pos) - , Table(tr) + , Table_(tr) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - if (!Table.Check(ctx)) { + if (!Table_.Check(ctx)) { return false; } - auto keys = Table.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::DROP); + auto keys = Table_.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::DROP); ctx.PushBlockShortcuts(); - if (!keys || !keys->Init(ctx, FakeSource.Get())) { + if (!keys || !keys->Init(ctx, FakeSource_.Get())) { return false; } keys = ctx.GroundBlockShortcutsForExpr(keys); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Table.ServiceName(ctx)), BuildQuotedAtom(Pos, Table.Cluster))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Table_.ServiceName(ctx)), BuildQuotedAtom(Pos_, Table_.Cluster))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(Y(Q(Y(Q("mode"), Q("drop"))))))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); - ctx.UsedClusters.insert(Table.Cluster); - return TAstListNode::DoInit(ctx, FakeSource.Get()); + ctx.UsedClusters.insert(Table_.Cluster); + return TAstListNode::DoInit(ctx, FakeSource_.Get()); } TPtr DoClone() const final { return {}; } private: - TTableRef Table; - TSourcePtr FakeSource; + TTableRef Table_; + TSourcePtr FakeSource_; }; TNodePtr BuildDropTable(TPosition pos, const TTableRef& tr) { @@ -734,24 +734,24 @@ public: TWriteTableNode(TPosition pos, const TString& label, const TTableRef& table, EWriteColumnMode mode, TNodePtr options) : TAstListNode(pos) - , Label(label) - , Table(table) - , Mode(mode) - , Options(options) + , Label_(label) + , Table_(table) + , Mode_(mode) + , Options_(options) {} bool DoInit(TContext& ctx, ISource* src) override { - if (!Table.Check(ctx)) { + if (!Table_.Check(ctx)) { return false; } - auto keys = Table.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::WRITE); + auto keys = Table_.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::WRITE); ctx.PushBlockShortcuts(); if (!keys || !keys->Init(ctx, src)) { return false; } keys = ctx.GroundBlockShortcutsForExpr(keys); - const auto serviceName = to_lower(Table.ServiceName(ctx)); + const auto serviceName = to_lower(Table_.ServiceName(ctx)); auto getModesMap = [] (const TString& serviceName) -> const TMap<EWriteColumnMode, TString>& { if (serviceName == KikimrProviderName) { return columnModeToStrMapKikimr; @@ -763,27 +763,27 @@ public: }; auto options = Y(); - if (Options) { - if (!Options->Init(ctx, src)) { + if (Options_) { + if (!Options_->Init(ctx, src)) { return false; } - options = L(Options); + options = L(Options_); } - if (Mode != EWriteColumnMode::Default) { - auto modeStr = getModesMap(serviceName).FindPtr(Mode); + if (Mode_ != EWriteColumnMode::Default) { + auto modeStr = getModesMap(serviceName).FindPtr(Mode_); options->Add(Q(Y(Q("mode"), Q(modeStr ? *modeStr : "unsupported")))); } Add("block", Q((Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Table.ServiceName(ctx)), BuildQuotedAtom(Pos, Table.Cluster))), - Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Label, Q(options))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Table_.ServiceName(ctx)), BuildQuotedAtom(Pos_, Table_.Cluster))), + Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Label_, Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) )))); - ctx.UsedClusters.insert(Table.Cluster); + ctx.UsedClusters.insert(Table_.Cluster); return TAstListNode::DoInit(ctx, src); } @@ -791,10 +791,10 @@ public: return {}; } private: - TString Label; - TTableRef Table; - EWriteColumnMode Mode; - TNodePtr Options; + TString Label_; + TTableRef Table_; + EWriteColumnMode Mode_; + TNodePtr Options_; }; TNodePtr BuildWriteTable(TPosition pos, const TString& label, const TTableRef& table, EWriteColumnMode mode, TNodePtr options) @@ -806,14 +806,14 @@ class TClustersSinkOperationBase: public TAstListNode { protected: TClustersSinkOperationBase(TPosition pos, const TSet<TString>& clusters) : TAstListNode(pos) - , Clusters(clusters) {} + , Clusters_(clusters) {} virtual TPtr ProduceOperation(TContext& ctx, const TString& sinkName, const TString& service) = 0; bool DoInit(TContext& ctx, ISource* src) override { auto block(Y()); - auto clusters = &Clusters; - if (Clusters.empty()) { + auto clusters = &Clusters_; + if (Clusters_.empty()) { clusters = &ctx.UsedClusters; } if (clusters->empty() && !ctx.CurrCluster.empty()) { @@ -835,7 +835,7 @@ protected: return false; } - block = L(block, Y("let", sinkName, Y("DataSink", BuildQuotedAtom(Pos, *service), BuildQuotedAtom(Pos, normalizedClusterName)))); + block = L(block, Y("let", sinkName, Y("DataSink", BuildQuotedAtom(Pos_, *service), BuildQuotedAtom(Pos_, normalizedClusterName)))); block = L(block, op); } @@ -850,7 +850,7 @@ protected: return {}; } private: - TSet<TString> Clusters; + TSet<TString> Clusters_; }; class TCommitClustersNode: public TClustersSinkOperationBase { @@ -892,18 +892,18 @@ class TWriteResultNode final: public TAstListNode { public: TWriteResultNode(TPosition pos, const TString& label, TNodePtr settings, const TSet<TString>& clusters) : TAstListNode(pos) - , Label(label) - , Settings(settings) - , CommitClusters(BuildCommitClusters(Pos, clusters)) + , Label_(label) + , Settings_(settings) + , CommitClusters_(BuildCommitClusters(Pos_, clusters)) {} bool DoInit(TContext& ctx, ISource* src) override { auto block(Y( Y("let", "result_sink", Y("DataSink", Q(TString(ResultProviderName)))), - Y("let", "world", Y(TString(WriteName), "world", "result_sink", Y("Key"), Label, Q(Settings))) + Y("let", "world", Y(TString(WriteName), "world", "result_sink", Y("Key"), Label_, Q(Settings_))) )); if (ctx.PragmaAutoCommit) { - block = L(block, Y("let", "world", CommitClusters)); + block = L(block, Y("let", "world", CommitClusters_)); } block = L(block, Y("return", Y(TString(CommitName), "world", "result_sink"))); @@ -915,9 +915,9 @@ public: return {}; } private: - TString Label; - TNodePtr Settings; - TNodePtr CommitClusters; + TString Label_; + TNodePtr Settings_; + TNodePtr CommitClusters_; }; TNodePtr BuildWriteResult(TPosition pos, const TString& label, TNodePtr settings, const TSet<TString>& clusters) { @@ -928,13 +928,13 @@ class TYqlProgramNode: public TAstListNode { public: TYqlProgramNode(TPosition pos, const TVector<TNodePtr>& blocks, bool topLevel) : TAstListNode(pos) - , Blocks(blocks) - , TopLevel(topLevel) + , Blocks_(blocks) + , TopLevel_(topLevel) {} bool DoInit(TContext& ctx, ISource* src) override { bool hasError = false; - if (TopLevel) { + if (TopLevel_) { for (auto& var: ctx.Variables) { if (!var.second->Init(ctx, src)) { hasError = true; @@ -945,22 +945,22 @@ public: for (const auto& lib : ctx.Libraries) { Add(Y("library", - new TAstAtomNodeImpl(Pos, lib, TNodeFlags::ArbitraryContent))); + new TAstAtomNodeImpl(Pos_, lib, TNodeFlags::ArbitraryContent))); } - Add(Y("import", "aggregate_module", BuildQuotedAtom(Pos, "/lib/yql/aggregate.yqls"))); - Add(Y("import", "window_module", BuildQuotedAtom(Pos, "/lib/yql/window.yqls"))); + Add(Y("import", "aggregate_module", BuildQuotedAtom(Pos_, "/lib/yql/aggregate.yqls"))); + Add(Y("import", "window_module", BuildQuotedAtom(Pos_, "/lib/yql/window.yqls"))); for (const auto& module : ctx.Settings.ModuleMapping) { TString moduleName(module.first + "_module"); moduleName.to_lower(); - Add(Y("import", moduleName, BuildQuotedAtom(Pos, module.second))); + Add(Y("import", moduleName, BuildQuotedAtom(Pos_, module.second))); } for (const auto& moduleAlias : ctx.ImportModuleAliases) { - Add(Y("import", moduleAlias.second, BuildQuotedAtom(Pos, moduleAlias.first))); + Add(Y("import", moduleAlias.second, BuildQuotedAtom(Pos_, moduleAlias.first))); } for (const auto& x : ctx.SimpleUdfs) { - Add(Y("let", x.second, Y("Udf", BuildQuotedAtom(Pos, x.first)))); + Add(Y("let", x.second, Y("Udf", BuildQuotedAtom(Pos_, x.first)))); } for (auto& nodes: ctx.NamedNodes) { @@ -981,28 +981,28 @@ public: } if (ctx.Settings.Mode != NSQLTranslation::ESqlMode::LIBRARY) { - auto configSource = Y("DataSource", BuildQuotedAtom(Pos, TString(ConfigProviderName))); - auto resultSink = Y("DataSink", BuildQuotedAtom(Pos, TString(ResultProviderName))); + auto configSource = Y("DataSource", BuildQuotedAtom(Pos_, TString(ConfigProviderName))); + auto resultSink = Y("DataSink", BuildQuotedAtom(Pos_, TString(ResultProviderName))); for (const auto& warningPragma : ctx.WarningPolicy.GetRules()) { Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "Warning"), BuildQuotedAtom(Pos, warningPragma.GetPattern()), - BuildQuotedAtom(Pos, to_lower(ToString(warningPragma.GetAction())))))); + BuildQuotedAtom(Pos_, "Warning"), BuildQuotedAtom(Pos_, warningPragma.GetPattern()), + BuildQuotedAtom(Pos_, to_lower(ToString(warningPragma.GetAction())))))); } if (ctx.ResultSizeLimit > 0) { Add(Y("let", "world", Y(TString(ConfigureName), "world", resultSink, - BuildQuotedAtom(Pos, "SizeLimit"), BuildQuotedAtom(Pos, ToString(ctx.ResultSizeLimit))))); + BuildQuotedAtom(Pos_, "SizeLimit"), BuildQuotedAtom(Pos_, ToString(ctx.ResultSizeLimit))))); } if (!ctx.PragmaPullUpFlatMapOverJoin) { Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "DisablePullUpFlatMapOverJoin")))); + BuildQuotedAtom(Pos_, "DisablePullUpFlatMapOverJoin")))); } } } - for (auto& block: Blocks) { + for (auto& block: Blocks_) { if (block->SubqueryAlias()) { continue; } @@ -1012,7 +1012,7 @@ public: } } - for (auto& block: Blocks) { + for (auto& block: Blocks_) { const auto subqueryAliasPtr = block->SubqueryAlias(); if (subqueryAliasPtr) { if (block->UsedSubquery()) { @@ -1028,14 +1028,14 @@ public: } } - if (TopLevel) { + if (TopLevel_) { if (ctx.UniversalAliases) { - decltype(Nodes) preparedNodes; - preparedNodes.swap(Nodes); + decltype(Nodes_) preparedNodes; + preparedNodes.swap(Nodes_); for (auto aliasPair : ctx.UniversalAliases) { Add(Y("let", aliasPair.first, aliasPair.second)); } - Nodes.insert(Nodes.end(), preparedNodes.begin(), preparedNodes.end()); + Nodes_.insert(Nodes_.end(), preparedNodes.begin(), preparedNodes.end()); } for (const auto& symbol: ctx.Exports) { @@ -1043,7 +1043,7 @@ public: } } - if (!TopLevel || ctx.Settings.Mode != NSQLTranslation::ESqlMode::LIBRARY) { + if (!TopLevel_ || ctx.Settings.Mode != NSQLTranslation::ESqlMode::LIBRARY) { Add(Y("return", "world")); } @@ -1054,8 +1054,8 @@ public: return {}; } private: - TVector<TNodePtr> Blocks; - const bool TopLevel; + TVector<TNodePtr> Blocks_; + const bool TopLevel_; }; TNodePtr BuildQuery(TPosition pos, const TVector<TNodePtr>& blocks, bool topLevel) { @@ -1066,69 +1066,69 @@ class TPragmaNode final: public INode { public: TPragmaNode(TPosition pos, const TString& prefix, const TString& name, const TVector<TDeferredAtom>& values, bool valueDefault) : INode(pos) - , Prefix(prefix) - , Name(name) - , Values(values) - , ValueDefault(valueDefault) + , Prefix_(prefix) + , Name_(name) + , Values_(values) + , ValueDefault_(valueDefault) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); TString serviceName; TString cluster; - if (std::find(Providers.cbegin(), Providers.cend(), Prefix) != Providers.cend()) { + if (std::find(Providers.cbegin(), Providers.cend(), Prefix_) != Providers.cend()) { cluster = "$all"; - serviceName = Prefix; + serviceName = Prefix_; } else { - serviceName = *ctx.GetClusterProvider(Prefix, cluster); + serviceName = *ctx.GetClusterProvider(Prefix_, cluster); } - auto datasource = Y("DataSource", BuildQuotedAtom(Pos, serviceName)); - if (Prefix != ConfigProviderName) { - datasource = L(datasource, BuildQuotedAtom(Pos, cluster)); + auto datasource = Y("DataSource", BuildQuotedAtom(Pos_, serviceName)); + if (Prefix_ != ConfigProviderName) { + datasource = L(datasource, BuildQuotedAtom(Pos_, cluster)); } - Node = Y(); - Node = L(Node, AstNode(TString(ConfigureName))); - Node = L(Node, AstNode(TString(TStringBuf("world")))); - Node = L(Node, datasource); + Node_ = Y(); + Node_ = L(Node_, AstNode(TString(ConfigureName))); + Node_ = L(Node_, AstNode(TString(TStringBuf("world")))); + Node_ = L(Node_, datasource); - if (Name == TStringBuf("flags")) { - for (ui32 i = 0; i < Values.size(); ++i) { - Node = L(Node, Values[i].Build()); + if (Name_ == TStringBuf("flags")) { + for (ui32 i = 0; i < Values_.size(); ++i) { + Node_ = L(Node_, Values_[i].Build()); } } - else if (Name == TStringBuf("AddFileByUrl") || Name == TStringBuf("AddFolderByUrl") || Name == TStringBuf("ImportUdfs")) { - Node = L(Node, BuildQuotedAtom(Pos, Name)); - for (ui32 i = 0; i < Values.size(); ++i) { - Node = L(Node, Values[i].Build()); + else if (Name_ == TStringBuf("AddFileByUrl") || Name_ == TStringBuf("AddFolderByUrl") || Name_ == TStringBuf("ImportUdfs")) { + Node_ = L(Node_, BuildQuotedAtom(Pos_, Name_)); + for (ui32 i = 0; i < Values_.size(); ++i) { + Node_ = L(Node_, Values_[i].Build()); } } - else if (Name == TStringBuf("auth")) { - Node = L(Node, BuildQuotedAtom(Pos, "Auth")); - Node = L(Node, Values.empty() ? BuildQuotedAtom(Pos, TString()) : Values.front().Build()); + else if (Name_ == TStringBuf("auth")) { + Node_ = L(Node_, BuildQuotedAtom(Pos_, "Auth")); + Node_ = L(Node_, Values_.empty() ? BuildQuotedAtom(Pos_, TString()) : Values_.front().Build()); } else { - Node = L(Node, BuildQuotedAtom(Pos, "Attr")); - Node = L(Node, BuildQuotedAtom(Pos, Name)); - if (!ValueDefault) { - Node = L(Node, Values.empty() ? BuildQuotedAtom(Pos, TString()) : Values.front().Build()); + Node_ = L(Node_, BuildQuotedAtom(Pos_, "Attr")); + Node_ = L(Node_, BuildQuotedAtom(Pos_, Name_)); + if (!ValueDefault_) { + Node_ = L(Node_, Values_.empty() ? BuildQuotedAtom(Pos_, TString()) : Values_.front().Build()); } } ctx.PushBlockShortcuts(); - if (!Node->Init(ctx, FakeSource.Get())) { + if (!Node_->Init(ctx, FakeSource_.Get())) { return false; } - Node = ctx.GroundBlockShortcutsForExpr(Node); + Node_ = ctx.GroundBlockShortcutsForExpr(Node_); return true; } TAstNode* Translate(TContext& ctx) const override { - return Node->Translate(ctx); + return Node_->Translate(ctx); } TPtr DoClone() const final { @@ -1136,12 +1136,12 @@ public: } private: - TString Prefix; - TString Name; - TVector<TDeferredAtom> Values; - bool ValueDefault; - TNodePtr Node; - TSourcePtr FakeSource; + TString Prefix_; + TString Name_; + TVector<TDeferredAtom> Values_; + bool ValueDefault_; + TNodePtr Node_; + TSourcePtr FakeSource_; }; TNodePtr BuildPragma(TPosition pos, const TString& prefix, const TString& name, const TVector<TDeferredAtom>& values, bool valueDefault) { @@ -1152,27 +1152,27 @@ class TSqlLambda final: public TAstListNode { public: TSqlLambda(TPosition pos, TVector<TString>&& args, TVector<TNodePtr>&& exprSeq) : TAstListNode(pos) - , Args(args) - , ExprSeq(exprSeq) + , Args_(args) + , ExprSeq_(exprSeq) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - for (auto& exprPtr: ExprSeq) { + for (auto& exprPtr: ExprSeq_) { ctx.PushBlockShortcuts(); - if (!exprPtr->Init(ctx, FakeSource.Get())) { + if (!exprPtr->Init(ctx, FakeSource_.Get())) { return {}; } const auto label = exprPtr->GetLabel(); exprPtr = ctx.GroundBlockShortcutsForExpr(exprPtr); exprPtr->SetLabel(label); } - YQL_ENSURE(!ExprSeq.empty()); + YQL_ENSURE(!ExprSeq_.empty()); auto body = Y(); - auto end = ExprSeq.end() - 1; - for (auto iter = ExprSeq.begin(); iter != end; ++iter) { + auto end = ExprSeq_.end() - 1; + for (auto iter = ExprSeq_.begin(); iter != end; ++iter) { auto exprPtr = *iter; const auto& label = exprPtr->GetLabel(); YQL_ENSURE(label); @@ -1180,7 +1180,7 @@ public: } body = Y("block", Q(L(body, Y("return", *end)))); auto args = Y(); - for (const auto& arg: Args) { + for (const auto& arg: Args_) { args = L(args, BuildAtom(GetPos(), arg, NYql::TNodeFlags::Default)); } Add("lambda", Q(args), body); @@ -1192,13 +1192,13 @@ public: } void DoUpdateState() const override { - State.Set(ENodeState::Const); + State_.Set(ENodeState::Const); } private: - TVector<TString> Args; - TVector<TNodePtr> ExprSeq; - TSourcePtr FakeSource; + TVector<TString> Args_; + TVector<TNodePtr> ExprSeq_; + TSourcePtr FakeSource_; }; TNodePtr BuildSqlLambda(TPosition pos, TVector<TString>&& args, TVector<TNodePtr>&& exprSeq) { @@ -1209,37 +1209,37 @@ class TEvaluateIf final : public TAstListNode { public: TEvaluateIf(TPosition pos, TNodePtr predicate, TNodePtr thenNode, TNodePtr elseNode) : TAstListNode(pos) - , Predicate(predicate) - , ThenNode(thenNode) - , ElseNode(elseNode) + , Predicate_(predicate) + , ThenNode_(thenNode) + , ElseNode_(elseNode) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { ctx.PushBlockShortcuts(); - if (!Predicate->Init(ctx, FakeSource.Get())) { + if (!Predicate_->Init(ctx, FakeSource_.Get())) { return{}; } - auto predicate = ctx.GroundBlockShortcutsForExpr(Predicate); + auto predicate = ctx.GroundBlockShortcutsForExpr(Predicate_); Add("EvaluateIf!"); Add("world"); Add(Y("EvaluateExpr", Y("EnsureType", Y("Coalesce", predicate, Y("Bool", Q("false"))), Y("DataType", Q("Bool"))))); ctx.PushBlockShortcuts(); - if (!ThenNode->Init(ctx, FakeSource.Get())) { + if (!ThenNode_->Init(ctx, FakeSource_.Get())) { return{}; } - auto thenNode = ctx.GroundBlockShortcutsForExpr(ThenNode); + auto thenNode = ctx.GroundBlockShortcutsForExpr(ThenNode_); Add(thenNode); - if (ElseNode) { + if (ElseNode_) { ctx.PushBlockShortcuts(); - if (!ElseNode->Init(ctx, FakeSource.Get())) { + if (!ElseNode_->Init(ctx, FakeSource_.Get())) { return{}; } - auto elseNode = ctx.GroundBlockShortcutsForExpr(ElseNode); + auto elseNode = ctx.GroundBlockShortcutsForExpr(ElseNode_); Add(elseNode); } @@ -1251,10 +1251,10 @@ public: } private: - TNodePtr Predicate; - TNodePtr ThenNode; - TNodePtr ElseNode; - TSourcePtr FakeSource; + TNodePtr Predicate_; + TNodePtr ThenNode_; + TNodePtr ElseNode_; + TSourcePtr FakeSource_; }; TNodePtr BuildEvaluateIfNode(TPosition pos, TNodePtr predicate, TNodePtr thenNode, TNodePtr elseNode) { @@ -1265,36 +1265,36 @@ class TEvaluateFor final : public TAstListNode { public: TEvaluateFor(TPosition pos, TNodePtr list, TNodePtr bodyNode, TNodePtr elseNode) : TAstListNode(pos) - , List(list) - , BodyNode(bodyNode) - , ElseNode(elseNode) + , List_(list) + , BodyNode_(bodyNode) + , ElseNode_(elseNode) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { ctx.PushBlockShortcuts(); - if (!List->Init(ctx, FakeSource.Get())) { + if (!List_->Init(ctx, FakeSource_.Get())) { return{}; } - auto list = ctx.GroundBlockShortcutsForExpr(List); + auto list = ctx.GroundBlockShortcutsForExpr(List_); Add("EvaluateFor!"); Add("world"); Add(Y("EvaluateExpr", list)); ctx.PushBlockShortcuts(); - if (!BodyNode->Init(ctx, FakeSource.Get())) { + if (!BodyNode_->Init(ctx, FakeSource_.Get())) { return{}; } - auto bodyNode = ctx.GroundBlockShortcutsForExpr(BodyNode); + auto bodyNode = ctx.GroundBlockShortcutsForExpr(BodyNode_); Add(bodyNode); - if (ElseNode) { + if (ElseNode_) { ctx.PushBlockShortcuts(); - if (!ElseNode->Init(ctx, FakeSource.Get())) { + if (!ElseNode_->Init(ctx, FakeSource_.Get())) { return{}; } - auto elseNode = ctx.GroundBlockShortcutsForExpr(ElseNode); + auto elseNode = ctx.GroundBlockShortcutsForExpr(ElseNode_); Add(elseNode); } @@ -1306,10 +1306,10 @@ public: } private: - TNodePtr List; - TNodePtr BodyNode; - TNodePtr ElseNode; - TSourcePtr FakeSource; + TNodePtr List_; + TNodePtr BodyNode_; + TNodePtr ElseNode_; + TSourcePtr FakeSource_; }; TNodePtr BuildEvaluateForNode(TPosition pos, TNodePtr list, TNodePtr bodyNode, TNodePtr elseNode) { diff --git a/yql/essentials/sql/v0/select.cpp b/yql/essentials/sql/v0/select.cpp index f4c641de8b2..0e5271191ef 100644 --- a/yql/essentials/sql/v0/select.cpp +++ b/yql/essentials/sql/v0/select.cpp @@ -15,61 +15,61 @@ class TSubqueryNode: public INode { public: TSubqueryNode(TSourcePtr&& source, const TString& alias, bool inSubquery, int ensureTupleSize) : INode(source->GetPos()) - , Source(std::move(source)) - , Alias(alias) - , InSubquery(inSubquery) - , EnsureTupleSize(ensureTupleSize) + , Source_(std::move(source)) + , Alias_(alias) + , InSubquery_(inSubquery) + , EnsureTupleSize_(ensureTupleSize) { - YQL_ENSURE(!Alias.empty()); + YQL_ENSURE(!Alias_.empty()); } ISource* GetSource() override { - return Source.Get(); + return Source_.Get(); } bool DoInit(TContext& ctx, ISource* src) override { YQL_ENSURE(!src, "Source not expected for subquery node"); - Source->UseAsInner(); - if (!Source->Init(ctx, nullptr)) { + Source_->UseAsInner(); + if (!Source_->Init(ctx, nullptr)) { return false; } TTableList tableList; - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); - auto tables = BuildInputTables(Pos, tableList, InSubquery); - if (!tables->Init(ctx, Source.Get())) { + auto tables = BuildInputTables(Pos_, tableList, InSubquery_); + if (!tables->Init(ctx, Source_.Get())) { return false; } - auto source = Source->Build(ctx); + auto source = Source_->Build(ctx); if (!source) { return false; } - if (EnsureTupleSize != -1) { - source = Y("EnsureTupleSize", source, Q(ToString(EnsureTupleSize))); + if (EnsureTupleSize_ != -1) { + source = Y("EnsureTupleSize", source, Q(ToString(EnsureTupleSize_))); } - Node = Y("let", Alias, Y("block", Q(L(tables, Y("return", Q(Y("world", source))))))); - IsUsed = true; + Node_ = Y("let", Alias_, Y("block", Q(L(tables, Y("return", Q(Y("world", source))))))); + IsUsed_ = true; return true; } void DoUpdateState() const override { - State.Set(ENodeState::Const, true); + State_.Set(ENodeState::Const, true); } bool UsedSubquery() const override { - return IsUsed; + return IsUsed_; } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } const TString* SubqueryAlias() const override { - return &Alias; + return &Alias_; } TPtr DoClone() const final { @@ -77,12 +77,12 @@ public: } protected: - TSourcePtr Source; - TNodePtr Node; - const TString Alias; - const bool InSubquery; - const int EnsureTupleSize; - bool IsUsed = false; + TSourcePtr Source_; + TNodePtr Node_; + const TString Alias_; + const bool InSubquery_; + const int EnsureTupleSize_; + bool IsUsed_ = false; }; TNodePtr BuildSubquery(TSourcePtr source, const TString& alias, bool inSubquery, int ensureTupleSize) { @@ -93,60 +93,60 @@ class TSourceNode: public INode { public: TSourceNode(TPosition pos, TSourcePtr&& source, bool checkExist) : INode(pos) - , Source(std::move(source)) - , CheckExist(checkExist) + , Source_(std::move(source)) + , CheckExist_(checkExist) {} ISource* GetSource() override { - return Source.Get(); + return Source_.Get(); } bool DoInit(TContext& ctx, ISource* src) override { - if (AsInner) { - Source->UseAsInner(); + if (AsInner_) { + Source_->UseAsInner(); } - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - Node = Source->Build(ctx); - if (!Node) { + Node_ = Source_->Build(ctx); + if (!Node_) { return false; } if (src) { if (IsSubquery()) { /// should be not used? - auto columnsPtr = Source->GetColumns(); + auto columnsPtr = Source_->GetColumns(); if (!columnsPtr || columnsPtr->All || columnsPtr->QualifiedAll || columnsPtr->List.size() != 1) { - ctx.Error(Pos) << "Source used in expression should contain one concrete column"; + ctx.Error(Pos_) << "Source used in expression should contain one concrete column"; return false; } - Node = Y("Member", Y("SqlAccess", Q("dict"), Y("Take", Node, Y("Uint64", Q("1"))), Y("Uint64", Q("0"))), Q(columnsPtr->List.front())); + Node_ = Y("Member", Y("SqlAccess", Q("dict"), Y("Take", Node_, Y("Uint64", Q("1"))), Y("Uint64", Q("0"))), Q(columnsPtr->List.front())); } - src->AddDependentSource(Source.Get()); + src->AddDependentSource(Source_.Get()); } return true; } bool IsSubquery() const { - return !AsInner && Source->IsSelect() && !CheckExist; + return !AsInner_ && Source_->IsSelect() && !CheckExist_; } void DoUpdateState() const override { - State.Set(ENodeState::Const, IsSubquery()); + State_.Set(ENodeState::Const, IsSubquery()); } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } TPtr DoClone() const final { - return new TSourceNode(Pos, Source->CloneSource(), CheckExist); + return new TSourceNode(Pos_, Source_->CloneSource(), CheckExist_); } protected: - TSourcePtr Source; - TNodePtr Node; - bool CheckExist; + TSourcePtr Source_; + TNodePtr Node_; + bool CheckExist_; }; TNodePtr BuildSourceNode(TPosition pos, TSourcePtr source, bool checkExist) { @@ -165,7 +165,7 @@ public: bool AddFilter(TContext& ctx, TNodePtr filter) override { Y_UNUSED(filter); - ctx.Error(Pos) << "Source does not allow filtering"; + ctx.Error(Pos_) << "Source does not allow filtering"; return false; } @@ -176,13 +176,13 @@ public: bool AddGroupKey(TContext& ctx, const TString& column) override { Y_UNUSED(column); - ctx.Error(Pos) << "Source does not allow grouping"; + ctx.Error(Pos_) << "Source does not allow grouping"; return false; } bool AddAggregation(TContext& ctx, TAggregationPtr aggr) override { Y_UNUSED(aggr); - ctx.Error(Pos) << "Source does not allow aggregation"; + ctx.Error(Pos_) << "Source does not allow aggregation"; return false; } @@ -204,7 +204,7 @@ public: } TPtr DoClone() const final { - return new TFakeSource(Pos); + return new TFakeSource(Pos_); } }; @@ -216,26 +216,26 @@ class TNodeSource: public ISource { public: TNodeSource(TPosition pos, const TNodePtr& node) : ISource(pos) - , Node(node) + , Node_(node) { - YQL_ENSURE(Node); - FakeSource = BuildFakeSource(pos); + YQL_ENSURE(Node_); + FakeSource_ = BuildFakeSource(pos); } void AllColumns() final { - UseAllColumns = true; + UseAllColumns_ = true; } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) final { Y_UNUSED(ctx); - if (UseAllColumns) { + if (UseAllColumns_) { return true; } if (column.IsAsterisk()) { AllColumns(); } else { - Columns.push_back(*column.GetColumnName()); + Columns_.push_back(*column.GetColumnName()); } return true; @@ -243,34 +243,34 @@ public: TNodePtr Build(TContext& ctx) final { ctx.PushBlockShortcuts(); - if (!Node->Init(ctx, FakeSource.Get())) { + if (!Node_->Init(ctx, FakeSource_.Get())) { return {}; } - Node = ctx.GroundBlockShortcutsForExpr(Node); - auto nodeAst = AstNode(Node); + Node_ = ctx.GroundBlockShortcutsForExpr(Node_); + auto nodeAst = AstNode(Node_); - if (UseAllColumns) { + if (UseAllColumns_) { return nodeAst; } else { auto members = Y(); - for (auto& column : Columns) { - members = L(members, BuildQuotedAtom(Pos, column)); + for (auto& column : Columns_) { + members = L(members, BuildQuotedAtom(Pos_, column)); } - return Y(ctx.UseUnordered(*this) ? "OrderedMap" : "Map", nodeAst, BuildLambda(Pos, Y("row"), Y("SelectMembers", "row", Q(members)))); + return Y(ctx.UseUnordered(*this) ? "OrderedMap" : "Map", nodeAst, BuildLambda(Pos_, Y("row"), Y("SelectMembers", "row", Q(members)))); } } TPtr DoClone() const final { - return new TNodeSource(Pos, Node); + return new TNodeSource(Pos_, Node_); } private: - TNodePtr Node; - TSourcePtr FakeSource; - TVector<TString> Columns; - bool UseAllColumns = false; + TNodePtr Node_; + TSourcePtr FakeSource_; + TVector<TString> Columns_; + bool UseAllColumns_ = false; }; TSourcePtr BuildNodeSource(TPosition pos, const TNodePtr& node) { @@ -281,58 +281,58 @@ class IProxySource: public ISource { protected: IProxySource(TPosition pos, ISource* src) : ISource(pos) - , Source(src) + , Source_(src) {} void AllColumns() override { - Y_DEBUG_ABORT_UNLESS(Source); - return Source->AllColumns(); + Y_DEBUG_ABORT_UNLESS(Source_); + return Source_->AllColumns(); } const TColumns* GetColumns() const override { - Y_DEBUG_ABORT_UNLESS(Source); - return Source->GetColumns(); + Y_DEBUG_ABORT_UNLESS(Source_); + return Source_->GetColumns(); } void GetInputTables(TTableList& tableList) const override { - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); ISource::GetInputTables(tableList); } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { - Y_DEBUG_ABORT_UNLESS(Source); - const TString label(Source->GetLabel()); - Source->SetLabel(Label); - const auto ret = Source->AddColumn(ctx, column); - Source->SetLabel(label); + Y_DEBUG_ABORT_UNLESS(Source_); + const TString label(Source_->GetLabel()); + Source_->SetLabel(Label_); + const auto ret = Source_->AddColumn(ctx, column); + Source_->SetLabel(label); return ret; } bool ShouldUseSourceAsColumn(const TString& source) override { - return Source->ShouldUseSourceAsColumn(source); + return Source_->ShouldUseSourceAsColumn(source); } bool IsStream() const override { - Y_DEBUG_ABORT_UNLESS(Source); - return Source->IsStream(); + Y_DEBUG_ABORT_UNLESS(Source_); + return Source_->IsStream(); } bool IsOrdered() const override { - Y_DEBUG_ABORT_UNLESS(Source); - return Source->IsOrdered(); + Y_DEBUG_ABORT_UNLESS(Source_); + return Source_->IsOrdered(); } TWriteSettings GetWriteSettings() const override { - Y_DEBUG_ABORT_UNLESS(Source); - return Source->GetWriteSettings(); + Y_DEBUG_ABORT_UNLESS(Source_); + return Source_->GetWriteSettings(); } protected: void SetSource(ISource* source) { - Source = source; + Source_ = source; } - ISource* Source; + ISource* Source_; }; class IRealSource: public ISource { @@ -343,11 +343,11 @@ protected: } void AllColumns() override { - Columns.SetAll(); + Columns_.SetAll(); } const TColumns* GetColumns() const override { - return &Columns; + return &Columns_; } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { @@ -362,7 +362,7 @@ protected: return true; } const auto* name = column.GetColumnName(); - if (name && !Columns.IsColumnPossible(ctx, *name) && !IsAlias(EExprSeat::GroupBy, *name)) { + if (name && !Columns_.IsColumnPossible(ctx, *name) && !IsAlias(EExprSeat::GroupBy, *name)) { if (column.IsReliable()) { TStringBuilder sb; sb << "Column " << *name << " is not in source column set"; @@ -377,51 +377,51 @@ protected: } TMaybe<TString> FindColumnMistype(const TString& name) const override { - auto result = FindMistypeIn(Columns.Real, name); + auto result = FindMistypeIn(Columns_.Real, name); if (!result) { - auto result = FindMistypeIn(Columns.Artificial, name); + auto result = FindMistypeIn(Columns_.Artificial, name); } return result ? result : ISource::FindColumnMistype(name); } protected: - TColumns Columns; + TColumns Columns_; }; class TMuxSource: public ISource { public: TMuxSource(TPosition pos, TVector<TSourcePtr>&& sources) : ISource(pos) - , Sources(std::move(sources)) + , Sources_(std::move(sources)) { - YQL_ENSURE(Sources.size() > 1); + YQL_ENSURE(Sources_.size() > 1); } void AllColumns() final { - for (auto& source: Sources) { + for (auto& source: Sources_) { source->AllColumns(); } } const TColumns* GetColumns() const final { // Columns are equal in all sources. Return from the first one - return Sources.front()->GetColumns(); + return Sources_.front()->GetColumns(); } void GetInputTables(TTableList& tableList) const final { - for (auto& source: Sources) { + for (auto& source: Sources_) { source->GetInputTables(tableList); } ISource::GetInputTables(tableList); } bool IsStream() const final { - return AnyOf(Sources, [] (const TSourcePtr& s) { return s->IsStream(); }); + return AnyOf(Sources_, [] (const TSourcePtr& s) { return s->IsStream(); }); } bool DoInit(TContext& ctx, ISource* src) final { - for (auto& source: Sources) { - if (AsInner) { + for (auto& source: Sources_) { + if (AsInner_) { source->UseAsInner(); } @@ -435,13 +435,13 @@ public: if (!source->InitFilters(ctx)) { return false; } - FiltersGrounds.push_back(ctx.GroundBlockShortcuts(Pos)); + FiltersGrounds_.push_back(ctx.GroundBlockShortcuts(Pos_)); } return true; } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) final { - for (auto& source: Sources) { + for (auto& source: Sources_) { if (!source->AddColumn(ctx, column)) { return {}; } @@ -452,8 +452,8 @@ public: TNodePtr Build(TContext& ctx) final { TNodePtr block; auto muxArgs = Y(); - for (size_t i = 0; i < Sources.size(); ++i) { - auto& source = Sources[i]; + for (size_t i = 0; i < Sources_.size(); ++i) { + auto& source = Sources_[i]; auto input = source->Build(ctx); auto ref = ctx.MakeName("src"); muxArgs->Add(ref); @@ -462,7 +462,7 @@ public: } else { block = Y(Y("let", ref, input)); } - auto filter = source->BuildFilter(ctx, ref, FiltersGrounds[i]); + auto filter = source->BuildFilter(ctx, ref, FiltersGrounds_[i]); if (filter) { block = L(block, Y("let", ref, filter)); } @@ -478,12 +478,12 @@ public: TPtr DoClone() const final { // Don't clone FiltersGrounds container because it will be initialized in DoInit of cloned object - return new TMuxSource(Pos, CloneContainer(Sources)); + return new TMuxSource(Pos_, CloneContainer(Sources_)); } protected: - TVector<TSourcePtr> Sources; - TVector<TNodePtr> FiltersGrounds; + TVector<TSourcePtr> Sources_; + TVector<TNodePtr> FiltersGrounds_; }; TSourcePtr BuildMuxSource(TPosition pos, TVector<TSourcePtr>&& sources) { @@ -494,9 +494,9 @@ class TSubqueryRefNode: public IRealSource { public: TSubqueryRefNode(const TNodePtr& subquery, const TString& alias, int tupleIndex) : IRealSource(subquery->GetPos()) - , Subquery(subquery) - , Alias(alias) - , TupleIndex(tupleIndex) + , Subquery_(subquery) + , Alias_(alias) + , TupleIndex_(tupleIndex) { YQL_ENSURE(subquery->GetSource()); } @@ -507,56 +507,56 @@ public: bool DoInit(TContext& ctx, ISource* src) override { // independent subquery should not connect source - Subquery->UseAsInner(); - if (!Subquery->Init(ctx, nullptr)) { + Subquery_->UseAsInner(); + if (!Subquery_->Init(ctx, nullptr)) { return false; } - Columns = *Subquery->GetSource()->GetColumns(); - Node = BuildAtom(Pos, Alias, TNodeFlags::Default); - if (TupleIndex != -1) { - Node = Y("Nth", Node, Q(ToString(TupleIndex))); + Columns_ = *Subquery_->GetSource()->GetColumns(); + Node_ = BuildAtom(Pos_, Alias_, TNodeFlags::Default); + if (TupleIndex_ != -1) { + Node_ = Y("Nth", Node_, Q(ToString(TupleIndex_))); } - if (!Node->Init(ctx, src)) { + if (!Node_->Init(ctx, src)) { return false; } - if (src && Subquery->GetSource()->IsSelect()) { - auto columnsPtr = &Columns; + if (src && Subquery_->GetSource()->IsSelect()) { + auto columnsPtr = &Columns_; if (!columnsPtr || columnsPtr->All || columnsPtr->QualifiedAll || columnsPtr->List.size() != 1) { - ctx.Error(Pos) << "Source used in expression should contain one concrete column"; + ctx.Error(Pos_) << "Source used in expression should contain one concrete column"; return false; } - Node = Y("Member", Y("SqlAccess", Q("dict"), Y("Take", Node, Y("Uint64", Q("1"))), Y("Uint64", Q("0"))), Q(columnsPtr->List.front())); + Node_ = Y("Member", Y("SqlAccess", Q("dict"), Y("Take", Node_, Y("Uint64", Q("1"))), Y("Uint64", Q("0"))), Q(columnsPtr->List.front())); } return true; } TNodePtr Build(TContext& ctx) override { Y_UNUSED(ctx); - return Node; + return Node_; } bool IsStream() const override { - return Subquery->GetSource()->IsStream(); + return Subquery_->GetSource()->IsStream(); } void DoUpdateState() const override { - State.Set(ENodeState::Const, true); + State_.Set(ENodeState::Const, true); } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } TPtr DoClone() const final { - return new TSubqueryRefNode(Subquery, Alias, TupleIndex); + return new TSubqueryRefNode(Subquery_, Alias_, TupleIndex_); } protected: - TNodePtr Subquery; - const TString Alias; - const int TupleIndex; - TNodePtr Node; + TNodePtr Subquery_; + const TString Alias_; + const int TupleIndex_; + TNodePtr Node_; }; TNodePtr BuildSubqueryRef(TNodePtr subquery, const TString& alias, int tupleIndex) { @@ -567,14 +567,14 @@ class TTableSource: public IRealSource { public: TTableSource(TPosition pos, const TTableRef& table, bool stream, const TString& label) : IRealSource(pos) - , Table(table) - , Stream(stream) + , Table_(table) + , Stream_(stream) { - SetLabel(label.empty() ? Table.ShortName() : label); + SetLabel(label.empty() ? Table_.ShortName() : label); } void GetInputTables(TTableList& tableList) const override { - tableList.push_back(Table); + tableList.push_back(Table_); ISource::GetInputTables(tableList); } @@ -583,7 +583,7 @@ public: } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { - Columns.Add(column.GetColumnName(), column.GetCountHint(), column.IsArtificial(), column.IsReliable()); + Columns_.Add(column.GetColumnName(), column.GetCountHint(), column.IsArtificial(), column.IsReliable()); if (!IRealSource::AddColumn(ctx, column)) { return {}; } @@ -619,38 +619,38 @@ public: samplingRate = Y("Ensure", samplingRate, Y("<=", samplingRate, Y("Double", Q("100"))), Y("String", Q("Sampling rate is over 100%"))); auto sampleSettings = Q(Y(Q(modeName), Y("EvaluateAtom", Y("ToString", samplingRate)), Y("EvaluateAtom", Y("ToString", samplingSeed)))); auto sampleOption = Q(Y(Q("sample"), sampleSettings)); - if (Table.Options) { - if (!Table.Options->Init(ctx, this)) { + if (Table_.Options) { + if (!Table_.Options->Init(ctx, this)) { return false; } - Table.Options = L(Table.Options, sampleOption); + Table_.Options = L(Table_.Options, sampleOption); } else { - Table.Options = Y(sampleOption); + Table_.Options = Y(sampleOption); } return true; } TNodePtr Build(TContext& ctx) override { - if (!Table.Keys->Init(ctx, nullptr)) { + if (!Table_.Keys->Init(ctx, nullptr)) { return nullptr; } - return AstNode(Table.RefName); + return AstNode(Table_.RefName); } bool IsStream() const override { - return Stream; + return Stream_; } TPtr DoClone() const final { - return new TTableSource(Pos, Table, Stream, GetLabel()); + return new TTableSource(Pos_, Table_, Stream_, GetLabel()); } bool IsTableSource() const override { return true; } protected: - TTableRef Table; - const bool Stream; + TTableRef Table_; + const bool Stream_; }; TSourcePtr BuildTableSource(TPosition pos, const TTableRef& table, bool stream, const TString& label) { @@ -661,7 +661,7 @@ class TInnerSource: public IProxySource { public: TInnerSource(TPosition pos, TNodePtr node, const TString& label) : IProxySource(pos, nullptr) - , Node(node) + , Node_(node) { SetLabel(label); } @@ -680,26 +680,26 @@ public: } bool DoInit(TContext& ctx, ISource* src) override { - auto source = Node->GetSource(); + auto source = Node_->GetSource(); if (!source) { - NewSource = TryMakeSourceFromExpression(ctx, Node); - source = NewSource.Get(); + NewSource_ = TryMakeSourceFromExpression(ctx, Node_); + source = NewSource_.Get(); } if (!source) { - ctx.Error(Pos) << "Invalid inner source node"; + ctx.Error(Pos_) << "Invalid inner source node"; return false; } - source->SetLabel(Label); - if (!NewSource) { - Node->UseAsInner(); - if (!Node->Init(ctx, src)) { + source->SetLabel(Label_); + if (!NewSource_) { + Node_->UseAsInner(); + if (!Node_->Init(ctx, src)) { return false; } } SetSource(source); - if (NewSource && !NewSource->Init(ctx, src)) { + if (NewSource_ && !NewSource_->Init(ctx, src)) { return false; } @@ -708,15 +708,15 @@ public: TNodePtr Build(TContext& ctx) override { Y_UNUSED(ctx); - return NewSource ? NewSource->Build(ctx) : Node; + return NewSource_ ? NewSource_->Build(ctx) : Node_; } TPtr DoClone() const final { - return new TInnerSource(Pos, SafeClone(Node), GetLabel()); + return new TInnerSource(Pos_, SafeClone(Node_), GetLabel()); } protected: - TNodePtr Node; - TSourcePtr NewSource; + TNodePtr Node_; + TSourcePtr NewSource_; }; TSourcePtr BuildInnerSource(TPosition pos, TNodePtr node, const TString& label) { @@ -736,40 +736,40 @@ public: TNodePtr having, const TWriteSettings& settings) : IRealSource(pos) - , Mode(mode) - , Source(std::move(source)) - , OrderBy(std::move(orderBy)) - , Keys(std::move(keys)) - , Args(std::move(args)) - , Udf(udf) - , Having(having) - , Settings(settings) + , Mode_(mode) + , Source_(std::move(source)) + , OrderBy_(std::move(orderBy)) + , Keys_(std::move(keys)) + , Args_(std::move(args)) + , Udf_(udf) + , Having_(having) + , Settings_(settings) { - YQL_ENSURE(!Keys.empty()); - YQL_ENSURE(Source); + YQL_ENSURE(!Keys_.empty()); + YQL_ENSURE(Source_); } void GetInputTables(TTableList& tableList) const override { - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); ISource::GetInputTables(tableList); } bool DoInit(TContext& ctx, ISource* src) final { - if (AsInner) { - Source->UseAsInner(); + if (AsInner_) { + Source_->UseAsInner(); } ctx.PushBlockShortcuts(); YQL_ENSURE(!src); - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - if (!Source->InitFilters(ctx)) { + if (!Source_->InitFilters(ctx)) { return false; } - FiltersGround = ctx.GroundBlockShortcuts(Pos); - src = Source.Get(); - for (auto& key: Keys) { + FiltersGround_ = ctx.GroundBlockShortcuts(Pos_); + src = Source_.Get(); + for (auto& key: Keys_) { if (!key->Init(ctx, src)) { return false; } @@ -780,77 +780,77 @@ public: } } ctx.PushBlockShortcuts(); - if (Having && !Having->Init(ctx, nullptr)) { + if (Having_ && !Having_->Init(ctx, nullptr)) { return false; } - HavingGround = ctx.GroundBlockShortcuts(Pos); + HavingGround_ = ctx.GroundBlockShortcuts(Pos_); /// SIN: verify reduce one argument - if (Args.size() != 1) { - ctx.Error(Pos) << "REDUCE requires exactly one UDF argument"; + if (Args_.size() != 1) { + ctx.Error(Pos_) << "REDUCE requires exactly one UDF argument"; return false; } ctx.PushBlockShortcuts(); - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - ExprGround = ctx.GroundBlockShortcuts(Pos); + ExprGround_ = ctx.GroundBlockShortcuts(Pos_); ctx.PushBlockShortcuts(); - for (auto orderSpec: OrderBy) { + for (auto orderSpec: OrderBy_) { if (!orderSpec->OrderExpr->Init(ctx, src)) { return false; } } - OrderByGround = ctx.GroundBlockShortcuts(Pos); + OrderByGround_ = ctx.GroundBlockShortcuts(Pos_); - if (!Udf->Init(ctx, src)) { + if (!Udf_->Init(ctx, src)) { return false; } - if (Udf->GetLabel().empty()) { - Columns.SetAll(); + if (Udf_->GetLabel().empty()) { + Columns_.SetAll(); } else { - Columns.Add(&Udf->GetLabel(), false); + Columns_.Add(&Udf_->GetLabel(), false); } return true; } TNodePtr Build(TContext& ctx) final { - auto input = Source->Build(ctx); + auto input = Source_->Build(ctx); if (!input) { return nullptr; } auto keysTuple = Y(); - if (Keys.size() == 1) { - keysTuple = Y("Member", "row", BuildQuotedAtom(Pos, *Keys.back()->GetColumnName())); + if (Keys_.size() == 1) { + keysTuple = Y("Member", "row", BuildQuotedAtom(Pos_, *Keys_.back()->GetColumnName())); } else { - for (const auto& key: Keys) { - keysTuple = L(keysTuple, Y("Member", "row", BuildQuotedAtom(Pos, *key->GetColumnName()))); + for (const auto& key: Keys_) { + keysTuple = L(keysTuple, Y("Member", "row", BuildQuotedAtom(Pos_, *key->GetColumnName()))); } keysTuple = Q(keysTuple); } - auto extractKey = Y("SqlExtractKey", "row", BuildLambda(Pos, Y("row"), keysTuple)); - auto extractKeyLambda = BuildLambda(Pos, Y("row"), extractKey); + auto extractKey = Y("SqlExtractKey", "row", BuildLambda(Pos_, Y("row"), keysTuple)); + auto extractKeyLambda = BuildLambda(Pos_, Y("row"), extractKey); TNodePtr processPartitions; - switch (Mode) { + switch (Mode_) { case ReduceMode::ByAll: { - auto columnPtr = Args[0]->GetColumnName(); - TNodePtr expr = BuildAtom(Pos, "partitionStream"); + auto columnPtr = Args_[0]->GetColumnName(); + TNodePtr expr = BuildAtom(Pos_, "partitionStream"); if (!columnPtr || *columnPtr != "*") { - expr = Y("Map", "partitionStream", BuildLambda(Pos, Y("keyPair"), Q(L(Y(),\ + expr = Y("Map", "partitionStream", BuildLambda(Pos_, Y("keyPair"), Q(L(Y(),\ Y("Nth", "keyPair", Q(ToString("0"))),\ - Y("Map", Y("Nth", "keyPair", Q(ToString("1"))), BuildLambda(Pos, Y("row"), - GroundWithExpr(ExprGround, Args[0]))))))); + Y("Map", Y("Nth", "keyPair", Q(ToString("1"))), BuildLambda(Pos_, Y("row"), + GroundWithExpr(ExprGround_, Args_[0]))))))); } - processPartitions = Y("ToSequence", Y("Apply", Udf, expr)); + processPartitions = Y("ToSequence", Y("Apply", Udf_, expr)); break; } case ReduceMode::ByPartition: { - processPartitions = Y("SqlReduce", "partitionStream", extractKeyLambda, Udf, - BuildLambda(Pos, Y("row"), GroundWithExpr(ExprGround, Args[0]))); + processPartitions = Y("SqlReduce", "partitionStream", extractKeyLambda, Udf_, + BuildLambda(Pos_, Y("row"), GroundWithExpr(ExprGround_, Args_[0]))); break; } default: @@ -858,50 +858,50 @@ public: } TNodePtr sortDirection; - auto sortKeySelector = OrderByGround; - FillSortParts(OrderBy, sortDirection, sortKeySelector); - if (!OrderBy.empty()) { - sortKeySelector = BuildLambda(Pos, Y("row"), Y("SqlExtractKey", "row", sortKeySelector)); + auto sortKeySelector = OrderByGround_; + FillSortParts(OrderBy_, sortDirection, sortKeySelector); + if (!OrderBy_.empty()) { + sortKeySelector = BuildLambda(Pos_, Y("row"), Y("SqlExtractKey", "row", sortKeySelector)); } - auto partitionByKey = Y(Mode == ReduceMode::ByAll ? "PartitionByKey" : "PartitionsByKeys", "core", extractKeyLambda, - sortDirection, sortKeySelector, BuildLambda(Pos, Y("partitionStream"), processPartitions)); + auto partitionByKey = Y(Mode_ == ReduceMode::ByAll ? "PartitionByKey" : "PartitionsByKeys", "core", extractKeyLambda, + sortDirection, sortKeySelector, BuildLambda(Pos_, Y("partitionStream"), processPartitions)); auto block(Y(Y("let", "core", input))); - auto filter = Source->BuildFilter(ctx, "core", FiltersGround); + auto filter = Source_->BuildFilter(ctx, "core", FiltersGround_); if (filter) { block = L(block, Y("let", "core", filter)); } block = L(block, Y("let", "core", Y("AutoDemux", partitionByKey))); - if (Having) { + if (Having_) { block = L(block, Y("let", "core", - Y("Filter", "core", BuildLambda(Pos, Y("row"), GroundWithExpr(HavingGround, Y("Coalesce", Having, Y("Bool", Q("false")))))) + Y("Filter", "core", BuildLambda(Pos_, Y("row"), GroundWithExpr(HavingGround_, Y("Coalesce", Having_, Y("Bool", Q("false")))))) )); } return Y("block", Q(L(block, Y("return", "core")))); } TWriteSettings GetWriteSettings() const final { - return Settings; + return Settings_; } TPtr DoClone() const final { - return new TReduceSource(Pos, Mode, Source->CloneSource(), CloneContainer(OrderBy), - CloneContainer(Keys), CloneContainer(Args), SafeClone(Udf), SafeClone(Having), Settings); + return new TReduceSource(Pos_, Mode_, Source_->CloneSource(), CloneContainer(OrderBy_), + CloneContainer(Keys_), CloneContainer(Args_), SafeClone(Udf_), SafeClone(Having_), Settings_); } private: - ReduceMode Mode; - TSourcePtr Source; - TVector<TSortSpecificationPtr> OrderBy; - TVector<TNodePtr> Keys; - TVector<TNodePtr> Args; - TNodePtr Udf; - TNodePtr Having; - const TWriteSettings Settings; - TNodePtr ExprGround; - TNodePtr FiltersGround; - TNodePtr OrderByGround; - TNodePtr HavingGround; + ReduceMode Mode_; + TSourcePtr Source_; + TVector<TSortSpecificationPtr> OrderBy_; + TVector<TNodePtr> Keys_; + TVector<TNodePtr> Args_; + TNodePtr Udf_; + TNodePtr Having_; + const TWriteSettings Settings_; + TNodePtr ExprGround_; + TNodePtr FiltersGround_; + TNodePtr OrderByGround_; + TNodePtr HavingGround_; }; TSourcePtr BuildReduce(TPosition pos, @@ -920,48 +920,48 @@ class TCompositeSelect: public IRealSource { public: TCompositeSelect(TPosition pos, TSourcePtr source, const TWriteSettings& settings) : IRealSource(pos) - , Source(std::move(source)) - , Settings(settings) + , Source_(std::move(source)) + , Settings_(settings) { - YQL_ENSURE(Source); + YQL_ENSURE(Source_); } void SetSubselects(TVector<TSourcePtr>&& subselects, TSet<TString>&& groupingCols) { - Subselects = std::move(subselects); - GroupingCols = std::move(groupingCols); - Y_DEBUG_ABORT_UNLESS(Subselects.size() > 1); + Subselects_ = std::move(subselects); + GroupingCols_ = std::move(groupingCols); + Y_DEBUG_ABORT_UNLESS(Subselects_.size() > 1); } void GetInputTables(TTableList& tableList) const override { - for (const auto& select: Subselects) { + for (const auto& select: Subselects_) { select->GetInputTables(tableList); } ISource::GetInputTables(tableList); } bool DoInit(TContext& ctx, ISource* src) override { - if (AsInner) { - Source->UseAsInner(); + if (AsInner_) { + Source_->UseAsInner(); } ctx.PushBlockShortcuts(); if (src) { - src->AddDependentSource(Source.Get()); + src->AddDependentSource(Source_.Get()); } - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - if (!Source->InitFilters(ctx)) { + if (!Source_->InitFilters(ctx)) { return false; } - FiltersGround = ctx.GroundBlockShortcuts(Pos); - for (const auto& select: Subselects) { - select->SetLabel(Label); - if (AsInner) { + FiltersGround_ = ctx.GroundBlockShortcuts(Pos_); + for (const auto& select: Subselects_) { + select->SetLabel(Label_); + if (AsInner_) { select->UseAsInner(); } - if (!select->Init(ctx, Source.Get())) { + if (!select->Init(ctx, Source_.Get())) { return false; } } @@ -969,7 +969,7 @@ public: } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { - for (const auto& select: Subselects) { + for (const auto& select: Subselects_) { if (!select->AddColumn(ctx, column)) { return {}; } @@ -978,15 +978,15 @@ public: } TNodePtr Build(TContext& ctx) override { - auto input = Source->Build(ctx); + auto input = Source_->Build(ctx); auto block(Y(Y("let", "composite", input))); - auto filter = Source->BuildFilter(ctx, "composite", FiltersGround); + auto filter = Source_->BuildFilter(ctx, "composite", FiltersGround_); if (filter) { block = L(block, Y("let", "composite", filter)); } TNodePtr compositeNode = Y("UnionAll"); - for (const auto& select: Subselects) { + for (const auto& select: Subselects_) { auto addNode = select->Build(ctx); if (!addNode) { return nullptr; @@ -998,44 +998,44 @@ public: } bool IsGroupByColumn(const TString& column) const override { - return GroupingCols.contains(column); + return GroupingCols_.contains(column); } const TSet<TString>& GetGroupingCols() const { - return GroupingCols; + return GroupingCols_; } TNodePtr BuildSort(TContext& ctx, const TString& label) override { - return Subselects.front()->BuildSort(ctx, label); + return Subselects_.front()->BuildSort(ctx, label); } bool IsOrdered() const override { - return Subselects.front()->IsOrdered(); + return Subselects_.front()->IsOrdered(); } const TColumns* GetColumns() const override{ - return Subselects.front()->GetColumns(); + return Subselects_.front()->GetColumns(); } ISource* RealSource() const { - return Source.Get(); + return Source_.Get(); } TWriteSettings GetWriteSettings() const override { - return Settings; + return Settings_; } TNodePtr DoClone() const final { - auto newSource = MakeIntrusive<TCompositeSelect>(Pos, Source->CloneSource(), Settings); - newSource->SetSubselects(CloneContainer(Subselects), TSet<TString>(GroupingCols)); + auto newSource = MakeIntrusive<TCompositeSelect>(Pos_, Source_->CloneSource(), Settings_); + newSource->SetSubselects(CloneContainer(Subselects_), TSet<TString>(GroupingCols_)); return newSource; } private: - TSourcePtr Source; - const TWriteSettings Settings; - TVector<TSourcePtr> Subselects; - TSet<TString> GroupingCols; - TNodePtr FiltersGround; + TSourcePtr Source_; + const TWriteSettings Settings_; + TVector<TSourcePtr> Subselects_; + TSet<TString> GroupingCols_; + TNodePtr FiltersGround_; }; /// \todo simplify class @@ -1057,23 +1057,23 @@ public: const TWriteSettings& settings ) : IRealSource(pos) - , Source(std::move(source)) - , GroupByExpr(groupByExpr) - , GroupBy(groupBy) - , OrderBy(orderBy) - , Having(having) - , WinSpecs(winSpecs) - , Terms(terms) - , Without(without) - , Distinct(distinct) - , HoppingWindowSpec(hoppingWindowSpec) - , Stream(stream) - , Settings(settings) + , Source_(std::move(source)) + , GroupByExpr_(groupByExpr) + , GroupBy_(groupBy) + , OrderBy_(orderBy) + , Having_(having) + , WinSpecs_(winSpecs) + , Terms_(terms) + , Without_(without) + , Distinct_(distinct) + , HoppingWindowSpec_(hoppingWindowSpec) + , Stream_(stream) + , Settings_(settings) { } void GetInputTables(TTableList& tableList) const override { - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); ISource::GetInputTables(tableList); } @@ -1097,43 +1097,43 @@ public: } bool DoInit(TContext& ctx, ISource* initSrc) override { - if (AsInner) { - Source->UseAsInner(); + if (AsInner_) { + Source_->UseAsInner(); } - if (!Source->Init(ctx, initSrc)) { + if (!Source_->Init(ctx, initSrc)) { return false; } - if (Stream && !Source->IsStream()) { - ctx.Error(Pos) << "SELECT STREAM is unsupported for non-streaming sources"; + if (Stream_ && !Source_->IsStream()) { + ctx.Error(Pos_) << "SELECT STREAM is unsupported for non-streaming sources"; return false; } - if (!Stream && Source->IsStream() && !ctx.PragmaDirectRead) { - ctx.Error(Pos) << "SELECT STREAM must be used for streaming sources"; + if (!Stream_ && Source_->IsStream() && !ctx.PragmaDirectRead) { + ctx.Error(Pos_) << "SELECT STREAM must be used for streaming sources"; return false; } ctx.PushBlockShortcuts(); - auto src = Source.Get(); + auto src = Source_.Get(); bool hasError = false; - for (auto& expr: GroupByExpr) { + for (auto& expr: GroupByExpr_) { if (!expr->Init(ctx, src) || !IsComparableExpression(ctx, expr, "GROUP BY")) { hasError = true; continue; } } - if (!src->AddExpressions(ctx, GroupByExpr, EExprSeat::GroupBy)) { + if (!src->AddExpressions(ctx, GroupByExpr_, EExprSeat::GroupBy)) { hasError = true; } - GroupByExprGround = ctx.GroundBlockShortcuts(Pos); + GroupByExprGround_ = ctx.GroundBlockShortcuts(Pos_); /// grouped expressions are available in filters ctx.PushBlockShortcuts(); - if (!Source->InitFilters(ctx)) { + if (!Source_->InitFilters(ctx)) { hasError = true; } - FiltersGround = ctx.GroundBlockShortcuts(Pos); - const bool isJoin = Source->GetJoin(); - for (auto& expr: GroupBy) { + FiltersGround_ = ctx.GroundBlockShortcuts(Pos_); + const bool isJoin = Source_->GetJoin(); + for (auto& expr: GroupBy_) { if (!expr->Init(ctx, src)) { hasError = true; continue; @@ -1158,51 +1158,51 @@ public: } } ctx.PushBlockShortcuts(); - if (Having && !Having->Init(ctx, src)) { + if (Having_ && !Having_->Init(ctx, src)) { hasError = true; } - HavingGround = ctx.GroundBlockShortcuts(Pos); - src->AddWindowSpecs(WinSpecs); + HavingGround_ = ctx.GroundBlockShortcuts(Pos_); + src->AddWindowSpecs(WinSpecs_); if (!InitSelect(ctx, src, isJoin, hasError)) { return false; } src->FinishColumns(); - Aggregate = src->BuildAggregation("core"); + Aggregate_ = src->BuildAggregation("core"); if (src->IsFlattenByColumns() || src->IsFlattenColumns()) { - Flatten = src->IsFlattenByColumns() ? + Flatten_ = src->IsFlattenByColumns() ? src->BuildFlattenByColumns("row") : src->BuildFlattenColumns("row"); - if (!Flatten || !Flatten->Init(ctx, src)) { + if (!Flatten_ || !Flatten_->Init(ctx, src)) { hasError = true; } } - if (GroupByExpr) { + if (GroupByExpr_) { auto sourcePreaggregate = src->BuildPreaggregatedMap(ctx); if (!sourcePreaggregate) { hasError = true; } else { - PreaggregatedMap = !GroupByExprGround ? sourcePreaggregate : - Y("block", Q(L(GroupByExprGround, Y("return", sourcePreaggregate)))); + PreaggregatedMap_ = !GroupByExprGround_ ? sourcePreaggregate : + Y("block", Q(L(GroupByExprGround_, Y("return", sourcePreaggregate)))); } } - if (Aggregate) { - if (!Aggregate->Init(ctx, src)) { + if (Aggregate_) { + if (!Aggregate_->Init(ctx, src)) { hasError = true; } - if (Having) { - Aggregate = Y( + if (Having_) { + Aggregate_ = Y( "Filter", - Aggregate, - BuildLambda(Pos, Y("row"), GroundWithExpr(HavingGround, Y("Coalesce", Having, Y("Bool", Q("false"))))) + Aggregate_, + BuildLambda(Pos_, Y("row"), GroundWithExpr(HavingGround_, Y("Coalesce", Having_, Y("Bool", Q("false"))))) ); } - } else if (Having) { - ctx.Error(Having->GetPos()) << "HAVING with meaning GROUP BY () should be with aggregation function."; + } else if (Having_) { + ctx.Error(Having_->GetPos()) << "HAVING with meaning GROUP BY () should be with aggregation function."; hasError = true; - } else if (!Distinct && !GroupBy.empty()) { - ctx.Error(Pos) << "No aggregations were specified"; + } else if (!Distinct_ && !GroupBy_.empty()) { + ctx.Error(Pos_) << "No aggregations were specified"; hasError = true; } if (hasError) { @@ -1211,13 +1211,13 @@ public: if (src->IsCalcOverWindow()) { if (src->IsExprSeat(EExprSeat::WindowPartitionBy, EExprType::WithExpression)) { - PrewindowMap = src->BuildPrewindowMap(ctx, WinSpecsPartitionByGround); - if (!PrewindowMap) { + PrewindowMap_ = src->BuildPrewindowMap(ctx, WinSpecsPartitionByGround_); + if (!PrewindowMap_) { hasError = true; } } - CalcOverWindow = src->BuildCalcOverWindow(ctx, "core", WinSpecsOrderByGround); - if (!CalcOverWindow) { + CalcOverWindow_ = src->BuildCalcOverWindow(ctx, "core", WinSpecsOrderByGround_); + if (!CalcOverWindow_) { hasError = true; } } @@ -1229,7 +1229,7 @@ public: } TNodePtr Build(TContext& ctx) override { - auto input = Source->Build(ctx); + auto input = Source_->Build(ctx); if (!input) { return nullptr; } @@ -1238,42 +1238,42 @@ public: bool ordered = ctx.UseUnordered(*this); 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 (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) { + 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) { + } else if (Source_->IsCompositeSource() && !Columns_.QualifiedAll) { block = L(block, Y("let", "origcore", "core")); } - auto filter = Source->BuildFilter(ctx, "core", FiltersGround); + 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 (Aggregate_) { + block = L(block, Y("let", "core", Aggregate_)); ordered = false; } - if (PrewindowMap) { - block = L(block, Y("let", "core", PrewindowMap)); + if (PrewindowMap_) { + block = L(block, Y("let", "core", PrewindowMap_)); } - if (CalcOverWindow) { - block = L(block, Y("let", "core", CalcOverWindow)); + 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"))))); + 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()) { + if (OrderBy_.empty()) { return nullptr; } - return Y("let", label, BuildSortSpec(OrderBy, label, OrderByGround)); + return Y("let", label, BuildSortSpec(OrderBy_, label, OrderByGround_)); } bool IsSelect() const override { @@ -1281,43 +1281,43 @@ public: } bool IsStream() const override { - return Stream; + return Stream_; } bool IsOrdered() const override { - return !OrderBy.empty(); + return !OrderBy_.empty(); } TWriteSettings GetWriteSettings() const override { - return Settings; + return Settings_; } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { - if (OrderByInit && Source->GetJoin()) { + if (OrderByInit_ && Source_->GetJoin()) { column.SetAsNotReliable(); auto maybeExist = IRealSource::AddColumn(ctx, column); if (maybeExist && maybeExist.GetRef()) { return true; } - return Source->AddColumn(ctx, column); + return Source_->AddColumn(ctx, column); } return IRealSource::AddColumn(ctx, column); } TNodePtr PrepareWithout(const TNodePtr& base) { auto terms = base; - if (Without) { - for (auto without: Without) { + if (Without_) { + for (auto without: Without_) { auto name = *without->GetColumnName(); - if (Source && Source->GetJoin()) { + 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()) { + if (Source_) { + for (auto column : Source_->GetTmpWindowColumns()) { terms = L(terms, Y("let", "row", Y("RemoveMember", "row", Q(column)))); } } @@ -1327,17 +1327,17 @@ public: TNodePtr DoClone() const final { TWinSpecs newSpecs; - for (auto cur: WinSpecs) { + 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(Terms), Distinct, Without, Stream, Settings); + return new TSelectCore(Pos_, Source_->CloneSource(), CloneContainer(GroupByExpr_), + 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) { + for (auto iter: WinSpecs_) { auto winSpec = *iter.second; ctx.PushBlockShortcuts(); for (auto& partitionNode: winSpec.Partitions) { @@ -1359,7 +1359,7 @@ private: continue; } } - WinSpecsPartitionByGround = ctx.GroundBlockShortcuts(Pos, WinSpecsPartitionByGround); + WinSpecsPartitionByGround_ = ctx.GroundBlockShortcuts(Pos_, WinSpecsPartitionByGround_); if (!src->AddExpressions(ctx, winSpec.Partitions, EExprSeat::WindowPartitionBy)) { hasError = true; } @@ -1370,33 +1370,33 @@ private: hasError = true; } } - WinSpecsOrderByGround = ctx.GroundBlockShortcuts(Pos, WinSpecsOrderByGround); + WinSpecsOrderByGround_ = ctx.GroundBlockShortcuts(Pos_, WinSpecsOrderByGround_); } - if (HoppingWindowSpec) { + if (HoppingWindowSpec_) { ctx.PushBlockShortcuts(); - if (!HoppingWindowSpec->TimeExtractor->Init(ctx, src)) { + if (!HoppingWindowSpec_->TimeExtractor->Init(ctx, src)) { hasError = true; } - HoppingWindowSpec->TimeExtractor = ctx.GroundBlockShortcutsForExpr(HoppingWindowSpec->TimeExtractor); - src->SetHoppingWindowSpec(HoppingWindowSpec); + HoppingWindowSpec_->TimeExtractor = ctx.GroundBlockShortcutsForExpr(HoppingWindowSpec_->TimeExtractor); + src->SetHoppingWindowSpec(HoppingWindowSpec_); } ctx.PushBlockShortcuts(); - for (auto& term: Terms) { + for (auto& term: Terms_) { if (!term->Init(ctx, src)) { hasError = true; continue; } auto column = term->GetColumnName(); - if (Distinct) { + if (Distinct_) { if (!column) { - ctx.Error(Pos) << "SELECT DISTINCT requires a list of column references"; + 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"; + ctx.Error(Pos_) << "SELECT DISTINCT * is not implemented yet"; hasError = true; continue; } @@ -1425,45 +1425,45 @@ private: hasError = true; continue; } - GroupBy.push_back(BuildColumn(Pos, columnName)); + GroupBy_.push_back(BuildColumn(Pos_, columnName)); } TString label(term->GetLabel()); bool hasName = true; if (label.empty()) { auto source = term->GetSourceName(); if (term->IsAsterisk() && !source->empty()) { - Columns.QualifiedAll = true; + Columns_.QualifiedAll = true; label = DotJoin(*source, "*"); } else if (column) { label = isJoin && source && *source ? DotJoin(*source, *column) : *column; } else { - label = TStringBuilder() << "column" << Columns.List.size(); + label = TStringBuilder() << "column" << Columns_.List.size(); hasName = false; } } - if (!Columns.Add(&label, false, false, true, hasName)) { - ctx.Error(Pos) << "Duplicate column: " << label; + if (!Columns_.Add(&label, false, false, true, hasName)) { + ctx.Error(Pos_) << "Duplicate column: " << label; hasError = true; continue; } } - TermsGround = ctx.GroundBlockShortcuts(Pos); + 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()) { + 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)); + Columns_.Add(&withDot, false); + Terms_.push_back(BuildColumn(pos, "*", source)); } } } - for (const auto& without: Without) { + for (const auto& without: Without_) { auto namePtr = without->GetColumnName(); auto sourcePtr = without->GetSourceName(); YQL_ENSURE(namePtr && *namePtr); @@ -1473,16 +1473,16 @@ private: continue; } } - if (Having && !Having->Init(ctx, src)) { + if (Having_ && !Having_->Init(ctx, src)) { hasError = true; } - if (!src->IsCompositeSource() && !Distinct && !Columns.All && src->HasAggregations()) { + if (!src->IsCompositeSource() && !Distinct_ && !Columns_.All && src->HasAggregations()) { /// verify select aggregation compatibility - TVector<TNodePtr> exprs(Terms); - if (Having) { - exprs.push_back(Having); + TVector<TNodePtr> exprs(Terms_); + if (Having_) { + exprs.push_back(Having_); } - for (const auto& iter: WinSpecs) { + for (const auto& iter: WinSpecs_) { for (const auto& sortSpec: iter.second->OrderBy) { exprs.push_back(sortSpec->OrderExpr); } @@ -1493,21 +1493,21 @@ private: } const auto label = GetLabel(); ctx.PushBlockShortcuts(); - for (const auto& sortSpec: OrderBy) { + for (const auto& sortSpec: OrderBy_) { auto& expr = sortSpec->OrderExpr; - SetLabel(Source->GetLabel()); - OrderByInit = true; + SetLabel(Source_->GetLabel()); + OrderByInit_ = true; if (!expr->Init(ctx, this)) { hasError = true; continue; } - OrderByInit = false; + OrderByInit_ = false; if (!IsComparableExpression(ctx, expr, "ORDER BY")) { hasError = true; continue; } } - OrderByGround = ctx.GroundBlockShortcuts(Pos); + OrderByGround_ = ctx.GroundBlockShortcuts(Pos_); SetLabel(label); return true; @@ -1515,26 +1515,26 @@ private: TNodePtr BuildColumnsTerms(TContext& ctx) { TNodePtr terms; - if (Columns.All) { - Y_DEBUG_ABORT_UNLESS(Columns.List.empty()); + if (Columns_.All) { + Y_DEBUG_ABORT_UNLESS(Columns_.List.empty()); terms = PrepareWithout(Y()); if (ctx.EnableSystemColumns) { terms = L(terms, Y("let", "res", Y("AsList", Y("RemoveSystemMembers", "row")))); } else { terms = L(terms, (Y("let", "res", Y("AsList", "row")))); } - } else if (!Columns.List.empty()) { - Y_DEBUG_ABORT_UNLESS(Columns.List.size() == Terms.size()); - const bool isJoin = Source->GetJoin(); + } else if (!Columns_.List.empty()) { + Y_DEBUG_ABORT_UNLESS(Columns_.List.size() == Terms_.size()); + const bool isJoin = Source_->GetJoin(); - terms = TermsGround ? TermsGround : Y(); - if (Source->IsCompositeSource() && !Columns.QualifiedAll) { - auto compositeSrcPtr = static_cast<TCompositeSelect*>(Source->GetCompositeSource()); + terms = TermsGround_ ? TermsGround_ : Y(); + if (Source_->IsCompositeSource() && !Columns_.QualifiedAll) { + auto compositeSrcPtr = static_cast<TCompositeSelect*>(Source_->GetCompositeSource()); if (compositeSrcPtr) { const auto& groupings = compositeSrcPtr->GetGroupingCols(); for (const auto& column: groupings) { bool isAggregated = false; - for (const auto& group: GroupBy) { + for (const auto& group: GroupBy_) { const auto columnName = group->GetColumnName(); if (columnName && *columnName == column) { isAggregated = true; @@ -1544,8 +1544,8 @@ private: if (isAggregated) { continue; } - const TString tableName = PreaggregatedMap ? "preaggregated" : "origcore"; - terms = L(terms, Y("let", "row", Y("AddMember", "row", BuildQuotedAtom(Pos, column), Y("Nothing", Y("MatchType", + const TString tableName = PreaggregatedMap_ ? "preaggregated" : "origcore"; + terms = L(terms, Y("let", "row", Y("AddMember", "row", BuildQuotedAtom(Pos_, column), Y("Nothing", Y("MatchType", Y("StructMemberType", Y("ListItemType", Y("TypeOf", tableName)), Q(column)), Q("Optional"), Y("lambda", Q(Y("item")), "item"), Y("lambda", Q(Y("item")), Y("OptionalType", "item"))))))); } @@ -1553,25 +1553,25 @@ private: } TNodePtr structObj = nullptr; - auto column = Columns.List.begin(); - for (auto& term: Terms) { + auto column = Columns_.List.begin(); + for (auto& term: Terms_) { if (!term->IsAsterisk()) { if (!structObj) { structObj = Y("AsStruct"); } - structObj = L(structObj, Q(Y(BuildQuotedAtom(Pos, *column), term))); + structObj = L(structObj, Q(Y(BuildQuotedAtom(Pos_, *column), term))); } ++column; } terms = structObj ? L(terms, Y("let", "res", structObj)) : Y(Y("let", "res", Y("AsStruct"))); terms = PrepareWithout(terms); - if (Columns.QualifiedAll) { + if (Columns_.QualifiedAll) { if (ctx.SimpleColumns && !isJoin) { - terms = L(terms, Y("let", "res", Y("FlattenMembers", Q(Y(BuildQuotedAtom(Pos, ""), "res")), - Q(Y(BuildQuotedAtom(Pos, ""), "row"))))); + terms = L(terms, Y("let", "res", Y("FlattenMembers", Q(Y(BuildQuotedAtom(Pos_, ""), "res")), + Q(Y(BuildQuotedAtom(Pos_, ""), "row"))))); } else { if (isJoin && ctx.SimpleColumns) { - const auto& sameKeyMap = Source->GetJoin()->GetSameKeysMap(); + const auto& sameKeyMap = Source_->GetJoin()->GetSameKeysMap(); if (sameKeyMap) { terms = L(terms, Y("let", "flatSameKeys", "row")); for (const auto& sameKeysPair: sameKeyMap) { @@ -1595,12 +1595,12 @@ private: } auto members = isJoin ? Y() : Y("FlattenMembers"); - for (auto& term: Terms) { + for (auto& term: Terms_) { if (term->IsAsterisk()) { auto sourceName = term->GetSourceName(); YQL_ENSURE(*sourceName && !sourceName->empty()); if (isJoin) { - members = L(members, BuildQuotedAtom(Pos, *sourceName + ".")); + members = L(members, BuildQuotedAtom(Pos_, *sourceName + ".")); } else { auto prefix = ctx.SimpleColumns ? "" : *sourceName + "."; members = L(members, Q(Y(Q(prefix), "row"))); @@ -1610,10 +1610,10 @@ private: if (isJoin) { members = Y(ctx.SimpleColumns ? "DivePrefixMembers" : "SelectMembers", "row", Q(members)); } - terms = L(terms, Y("let", "res", Y("FlattenMembers", Q(Y(BuildQuotedAtom(Pos, ""), "res")), - Q(Y(BuildQuotedAtom(Pos, ""), members))))); + terms = L(terms, Y("let", "res", Y("FlattenMembers", Q(Y(BuildQuotedAtom(Pos_, ""), "res")), + Q(Y(BuildQuotedAtom(Pos_, ""), members))))); if (isJoin && ctx.SimpleColumns) { - for (const auto& sameKeysPair: Source->GetJoin()->GetSameKeysMap()) { + for (const auto& sameKeysPair: Source_->GetJoin()->GetSameKeysMap()) { const auto& column = sameKeysPair.first; auto addMemberKeyNode = Y("Member", "row", Q(column)); terms = L(terms, Y("let", "res", Y("AddMember", "res", Q(column), addMemberKeyNode))); @@ -1627,31 +1627,31 @@ private: } private: - TSourcePtr Source; - TVector<TNodePtr> GroupByExpr; - TVector<TNodePtr> GroupBy; - TVector<TSortSpecificationPtr> OrderBy; - TNodePtr Having; - TWinSpecs WinSpecs; - TNodePtr Flatten; - TNodePtr PreaggregatedMap; - TNodePtr PrewindowMap; - TNodePtr Aggregate; - TNodePtr CalcOverWindow; - TNodePtr FiltersGround; - TNodePtr TermsGround; - TNodePtr GroupByExprGround; - TNodePtr HavingGround; - TNodePtr OrderByGround; - TNodePtr WinSpecsPartitionByGround; - TNodePtr WinSpecsOrderByGround; - TVector<TNodePtr> Terms; - TVector<TNodePtr> Without; - const bool Distinct; - bool OrderByInit = false; - THoppingWindowSpecPtr HoppingWindowSpec; - const bool Stream; - const TWriteSettings Settings; + TSourcePtr Source_; + TVector<TNodePtr> GroupByExpr_; + TVector<TNodePtr> GroupBy_; + TVector<TSortSpecificationPtr> OrderBy_; + TNodePtr Having_; + TWinSpecs WinSpecs_; + TNodePtr Flatten_; + TNodePtr PreaggregatedMap_; + TNodePtr PrewindowMap_; + TNodePtr Aggregate_; + TNodePtr CalcOverWindow_; + TNodePtr FiltersGround_; + TNodePtr TermsGround_; + TNodePtr GroupByExprGround_; + TNodePtr HavingGround_; + TNodePtr OrderByGround_; + TNodePtr WinSpecsPartitionByGround_; + TNodePtr WinSpecsOrderByGround_; + TVector<TNodePtr> Terms_; + TVector<TNodePtr> Without_; + const bool Distinct_; + bool OrderByInit_ = false; + THoppingWindowSpecPtr HoppingWindowSpec_; + const bool Stream_; + const TWriteSettings Settings_; }; class TProcessSource: public IRealSource { @@ -1666,85 +1666,85 @@ public: const TWriteSettings& settings ) : IRealSource(pos) - , Source(std::move(source)) - , With(with) - , Terms(std::move(terms)) - , ListCall(listCall) - , Stream(stream) - , Settings(settings) + , Source_(std::move(source)) + , With_(with) + , Terms_(std::move(terms)) + , ListCall_(listCall) + , Stream_(stream) + , Settings_(settings) { } void GetInputTables(TTableList& tableList) const override { - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); ISource::GetInputTables(tableList); } bool DoInit(TContext& ctx, ISource* initSrc) override { - if (AsInner) { - Source->UseAsInner(); + if (AsInner_) { + Source_->UseAsInner(); } - if (!Source->Init(ctx, initSrc)) { + if (!Source_->Init(ctx, initSrc)) { return false; } - if (Stream && !Source->IsStream()) { - ctx.Error(Pos) << "PROCESS STREAM is unsupported for non-streaming sources"; + if (Stream_ && !Source_->IsStream()) { + ctx.Error(Pos_) << "PROCESS STREAM is unsupported for non-streaming sources"; return false; } - if (!Stream && Source->IsStream() && !ctx.PragmaDirectRead) { - ctx.Error(Pos) << "PROCESS STREAM must be used for streaming sources"; + if (!Stream_ && Source_->IsStream() && !ctx.PragmaDirectRead) { + ctx.Error(Pos_) << "PROCESS STREAM must be used for streaming sources"; return false; } - auto src = Source.Get(); - if (!With) { + auto src = Source_.Get(); + if (!With_) { src->AllColumns(); - Columns.SetAll(); + Columns_.SetAll(); src->FinishColumns(); return true; } /// grouped expressions are available in filters ctx.PushBlockShortcuts(); - if (!Source->InitFilters(ctx)) { + if (!Source_->InitFilters(ctx)) { return false; } - FiltersGround = ctx.GroundBlockShortcuts(Pos); + FiltersGround_ = ctx.GroundBlockShortcuts(Pos_); // Use fake source in case of list process to restrict column access. TSourcePtr fakeSource; - if (ListCall) { + if (ListCall_) { fakeSource = BuildFakeSource(src->GetPos()); src->AllColumns(); } - auto processSource = ListCall ? fakeSource.Get() : src; + auto processSource = ListCall_ ? fakeSource.Get() : src; Y_DEBUG_ABORT_UNLESS(processSource != nullptr); ctx.PushBlockShortcuts(); - if (!With->Init(ctx, processSource)) { + if (!With_->Init(ctx, processSource)) { return false; } - if (With->GetLabel().empty()) { - Columns.SetAll(); + if (With_->GetLabel().empty()) { + Columns_.SetAll(); } else { - if (ListCall) { - ctx.Error(With->GetPos()) << "Label is not allowed to use with $ROWS"; + if (ListCall_) { + ctx.Error(With_->GetPos()) << "Label is not allowed to use with $ROWS"; return false; } - Columns.Add(&With->GetLabel(), false); + Columns_.Add(&With_->GetLabel(), false); } bool hasError = false; - auto produce = Y(ListCall ? "SqlProcess" : "Apply", With); + auto produce = Y(ListCall_ ? "SqlProcess" : "Apply", With_); TMaybe<ui32> listPosIndex; ui32 termIndex = 0; - for (auto& term: Terms) { - if (ListCall) { + for (auto& term: Terms_) { + if (ListCall_) { if (auto atom = dynamic_cast<TAstAtomNode*>(term.Get())) { if (atom->GetContent() == "inputRowsList") { listPosIndex = termIndex; @@ -1767,7 +1767,7 @@ public: produce = L(produce, term); } - if (ListCall) { + if (ListCall_) { produce = L(produce, Q(ToString(*listPosIndex))); } @@ -1776,7 +1776,7 @@ public: } produce = ctx.GroundBlockShortcutsForExpr(produce); - TVector<TNodePtr>(1, produce).swap(Terms); + TVector<TNodePtr>(1, produce).swap(Terms_); src->FinishColumns(); @@ -1788,29 +1788,29 @@ public: } TNodePtr Build(TContext& ctx) override { - auto input = Source->Build(ctx); + auto input = Source_->Build(ctx); if (!input) { return nullptr; } - if (!With) { + if (!With_) { return input; } - TString inputLabel = ListCall ? "inputRowsList" : "core"; + TString inputLabel = ListCall_ ? "inputRowsList" : "core"; auto block(Y(Y("let", inputLabel, input))); - auto filter = Source->BuildFilter(ctx, inputLabel, FiltersGround); + auto filter = Source_->BuildFilter(ctx, inputLabel, FiltersGround_); if (filter) { block = L(block, Y("let", inputLabel, filter)); } - if (ListCall) { - block = L(block, Y("let", "core", Terms[0])); + if (ListCall_) { + block = L(block, Y("let", "core", Terms_[0])); } else { auto terms = BuildColumnsTerms(ctx); - block = L(block, Y("let", "core", Y(ctx.UseUnordered(*this) ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos, Y("row"), terms, "res")))); + block = L(block, Y("let", "core", Y(ctx.UseUnordered(*this) ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos_, Y("row"), terms, "res")))); } block = L(block, Y("let", "core", Y("AutoDemux", Y("EnsurePersistable", "core")))); return Y("block", Q(L(block, Y("return", "core")))); @@ -1821,44 +1821,44 @@ public: } bool IsStream() const override { - return Stream; + return Stream_; } TWriteSettings GetWriteSettings() const override { - return Settings; + return Settings_; } TNodePtr DoClone() const final { - return new TProcessSource(Pos, Source->CloneSource(), SafeClone(With), - CloneContainer(Terms), ListCall, Stream, Settings); + return new TProcessSource(Pos_, Source_->CloneSource(), SafeClone(With_), + CloneContainer(Terms_), ListCall_, Stream_, Settings_); } private: TNodePtr BuildColumnsTerms(TContext& ctx) { Y_UNUSED(ctx); TNodePtr terms; - Y_DEBUG_ABORT_UNLESS(Terms.size() == 1); - if (Columns.All) { - terms = Y(Y("let", "res", Y("ToSequence", Terms.front()))); + Y_DEBUG_ABORT_UNLESS(Terms_.size() == 1); + if (Columns_.All) { + terms = Y(Y("let", "res", Y("ToSequence", Terms_.front()))); } else { - Y_DEBUG_ABORT_UNLESS(Columns.List.size() == Terms.size()); - terms = TermsGround ? TermsGround : Y(); + Y_DEBUG_ABORT_UNLESS(Columns_.List.size() == Terms_.size()); + terms = TermsGround_ ? TermsGround_ : Y(); terms = L(terms, Y("let", "res", - L(Y("AsStruct"), Q(Y(BuildQuotedAtom(Pos, Columns.List.front()), Terms.front()))))); + L(Y("AsStruct"), Q(Y(BuildQuotedAtom(Pos_, Columns_.List.front()), Terms_.front()))))); terms = L(terms, Y("let", "res", Y("Just", "res"))); } return terms; } private: - TSourcePtr Source; - TNodePtr With; - TNodePtr FiltersGround; - TNodePtr TermsGround; - TVector<TNodePtr> Terms; - const bool ListCall; - const bool Stream; - const TWriteSettings Settings; + TSourcePtr Source_; + TNodePtr With_; + TNodePtr FiltersGround_; + TNodePtr TermsGround_; + TVector<TNodePtr> Terms_; + const bool ListCall_; + const bool Stream_; + const TWriteSettings Settings_; }; TSourcePtr BuildProcess( @@ -1877,31 +1877,31 @@ class TNestedProxySource: public IProxySource { public: TNestedProxySource(TPosition pos, const TVector<TNodePtr>& groupBy, TSourcePtr source) : IProxySource(pos, source.Get()) - , CompositeSelect(nullptr) - , Holder(std::move(source)) - , GroupBy(groupBy) + , CompositeSelect_(nullptr) + , Holder_(std::move(source)) + , GroupBy_(groupBy) {} TNestedProxySource(TCompositeSelect* compositeSelect, const TVector<TNodePtr>& groupBy) : IProxySource(compositeSelect->GetPos(), compositeSelect->RealSource()) - , CompositeSelect(compositeSelect) - , GroupBy(groupBy) + , CompositeSelect_(compositeSelect) + , GroupBy_(groupBy) {} bool DoInit(TContext& ctx, ISource* src) override { - return Source->Init(ctx, src); + return Source_->Init(ctx, src); } TNodePtr Build(TContext& ctx) override { - return CompositeSelect ? BuildAtom(Pos, "composite", TNodeFlags::Default) : Source->Build(ctx); + return CompositeSelect_ ? BuildAtom(Pos_, "composite", TNodeFlags::Default) : Source_->Build(ctx); } bool InitFilters(TContext& ctx) override { - return CompositeSelect ? true : Source->InitFilters(ctx); + return CompositeSelect_ ? true : Source_->InitFilters(ctx); } TNodePtr BuildFilter(TContext& ctx, const TString& label, const TNodePtr& groundNode) override { - return CompositeSelect ? nullptr : Source->BuildFilter(ctx, label, groundNode); + return CompositeSelect_ ? nullptr : Source_->BuildFilter(ctx, label, groundNode); } bool IsCompositeSource() const override { @@ -1909,22 +1909,22 @@ public: } ISource* GetCompositeSource() override { - return CompositeSelect; + return CompositeSelect_; } bool CalculateGroupingHint(TContext& ctx, const TVector<TString>& columns, ui64& hint) const override { Y_UNUSED(ctx); hint = 0; - if (GroupByColumns.empty()) { - for (const auto& groupByNode: GroupBy) { + if (GroupByColumns_.empty()) { + for (const auto& groupByNode: GroupBy_) { auto namePtr = groupByNode->GetColumnName(); YQL_ENSURE(namePtr); - GroupByColumns.insert(*namePtr); + GroupByColumns_.insert(*namePtr); } } for (const auto& column: columns) { hint <<= 1; - if (!GroupByColumns.contains(column)) { + if (!GroupByColumns_.contains(column)) { hint += 1; } } @@ -1932,23 +1932,23 @@ public: } void FinishColumns() override { - Source->FinishColumns(); + Source_->FinishColumns(); } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { - return Source->AddColumn(ctx, column); + return Source_->AddColumn(ctx, column); } TPtr DoClone() const final { - return Holder.Get() ? new TNestedProxySource(Pos, CloneContainer(GroupBy), Holder->CloneSource()) : - new TNestedProxySource(CompositeSelect, CloneContainer(GroupBy)); + return Holder_.Get() ? new TNestedProxySource(Pos_, CloneContainer(GroupBy_), Holder_->CloneSource()) : + new TNestedProxySource(CompositeSelect_, CloneContainer(GroupBy_)); } private: - TCompositeSelect* CompositeSelect; - TSourcePtr Holder; - TVector<TNodePtr> GroupBy; - mutable TSet<TString> GroupByColumns; + TCompositeSelect* CompositeSelect_; + TSourcePtr Holder_; + TVector<TNodePtr> GroupBy_; + mutable TSet<TString> GroupByColumns_; }; TSourcePtr BuildSelectCore( @@ -2021,7 +2021,7 @@ class TUnionAll: public IRealSource { public: TUnionAll(TPosition pos, TVector<TSourcePtr>&& sources) : IRealSource(pos) - , Sources(std::move(sources)) + , Sources_(std::move(sources)) { } @@ -2030,7 +2030,7 @@ public: } void GetInputTables(TTableList& tableList) const override { - for (auto& x : Sources) { + for (auto& x : Sources_) { x->GetInputTables(tableList); } @@ -2038,21 +2038,21 @@ public: } bool DoInit(TContext& ctx, ISource* src) override { - for (auto& s: Sources) { + for (auto& s: Sources_) { s->UseAsInner(); if (!s->Init(ctx, src)) { return false; } auto c = s->GetColumns(); Y_DEBUG_ABORT_UNLESS(c); - Columns.Merge(*c); + Columns_.Merge(*c); } return true; } TNodePtr Build(TContext& ctx) override { auto res = Y("UnionAll"); - for (auto& s: Sources) { + for (auto& s: Sources_) { auto input = s->Build(ctx); if (!input) { return nullptr; @@ -2064,7 +2064,7 @@ public: bool IsStream() const override { - for (auto& s: Sources) { + for (auto& s: Sources_) { if (!s->IsStream()) { return false; } @@ -2073,11 +2073,11 @@ public: } TNodePtr DoClone() const final { - return MakeIntrusive<TUnionAll>(Pos, CloneContainer(Sources)); + return MakeIntrusive<TUnionAll>(Pos_, CloneContainer(Sources_)); } private: - TVector<TSourcePtr> Sources; + TVector<TSourcePtr> Sources_; }; TSourcePtr BuildUnionAll(TPosition pos, TVector<TSourcePtr>&& sources) { @@ -2088,28 +2088,28 @@ class TOverWindowSource: public IProxySource { public: TOverWindowSource(TPosition pos, const TString& windowName, ISource* origSource) : IProxySource(pos, origSource) - , WindowName(windowName) + , WindowName_(windowName) { - Source->SetLabel(origSource->GetLabel()); + Source_->SetLabel(origSource->GetLabel()); } TString MakeLocalName(const TString& name) override { - return Source->MakeLocalName(name); + return Source_->MakeLocalName(name); } void AddTmpWindowColumn(const TString& column) override { - return Source->AddTmpWindowColumn(column); + return Source_->AddTmpWindowColumn(column); } bool AddAggregation(TContext& ctx, TAggregationPtr aggr) override { if (aggr->IsOverWindow()) { - return Source->AddAggregationOverWindow(ctx, WindowName, aggr); + return Source_->AddAggregationOverWindow(ctx, WindowName_, aggr); } - return Source->AddAggregation(ctx, aggr); + return Source_->AddAggregation(ctx, aggr); } bool AddFuncOverWindow(TContext& ctx, TNodePtr expr) override { - return Source->AddFuncOverWindow(ctx, WindowName, expr); + return Source_->AddFuncOverWindow(ctx, WindowName_, expr); } bool IsOverWindowSource() const override { @@ -2117,7 +2117,7 @@ public: } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { - return Source->AddColumn(ctx, column); + return Source_->AddColumn(ctx, column); } TNodePtr Build(TContext& ctx) override { @@ -2126,11 +2126,11 @@ public: } const TString* GetWindowName() const override { - return &WindowName; + return &WindowName_; } TWindowSpecificationPtr FindWindowSpecification(TContext& ctx, const TString& windowName) const override { - return Source->FindWindowSpecification(ctx, windowName); + return Source_->FindWindowSpecification(ctx, windowName); } TNodePtr DoClone() const final { @@ -2138,7 +2138,7 @@ public: } private: - const TString WindowName; + const TString WindowName_; }; TSourcePtr BuildOverWindowSource(TPosition pos, const TString& windowName, ISource* origSource) { @@ -2170,56 +2170,56 @@ class TSelect: public IProxySource { public: TSelect(TPosition pos, TSourcePtr source, TNodePtr skipTake) : IProxySource(pos, source.Get()) - , Source(std::move(source)) - , SkipTake(skipTake) + , Source_(std::move(source)) + , SkipTake_(skipTake) {} bool DoInit(TContext& ctx, ISource* src) override { - Source->SetLabel(Label); - if (AsInner) { - Source->UseAsInner(); + Source_->SetLabel(Label_); + if (AsInner_) { + Source_->UseAsInner(); } - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - src = Source.Get(); - if (SkipTake) { + src = Source_.Get(); + if (SkipTake_) { ctx.PushBlockShortcuts(); - FakeSource.Reset(new TFakeSource(SkipTake->GetPos())); - if (!SkipTake->Init(ctx, FakeSource.Get())) { + FakeSource_.Reset(new TFakeSource(SkipTake_->GetPos())); + if (!SkipTake_->Init(ctx, FakeSource_.Get())) { return false; } - SkipTakeGround = ctx.GroundBlockShortcuts(ctx.Pos()); + SkipTakeGround_ = ctx.GroundBlockShortcuts(ctx.Pos()); } return true; } TNodePtr Build(TContext& ctx) override { - auto input = Source->Build(ctx); + auto input = Source_->Build(ctx); if (!input) { return nullptr; } const auto label = "select"; auto block(Y(Y("let", label, input))); - auto sortNode = Source->BuildSort(ctx, label); + auto sortNode = Source_->BuildSort(ctx, label); if (sortNode) { - if (AsInner && !SkipTake) { + if (AsInner_ && !SkipTake_) { ctx.Warning(sortNode->GetPos(), TIssuesIds::YQL_ORDER_BY_WITHOUT_LIMIT_IN_SUBQUERY) << "ORDER BY without LIMIT in subquery will be ignored"; } else { block = L(block, sortNode); } } - if (SkipTake) { - if (SkipTakeGround) { - block = L(block, SkipTake->Y("let", "select", SkipTake->Y("block", SkipTake->Q( - SkipTake->L(SkipTake->L(SkipTakeGround, SkipTake), Y("return", "select")))))); + if (SkipTake_) { + if (SkipTakeGround_) { + block = L(block, SkipTake_->Y("let", "select", SkipTake_->Y("block", SkipTake_->Q( + SkipTake_->L(SkipTake_->L(SkipTakeGround_, SkipTake_), Y("return", "select")))))); } else { - block = L(block, SkipTake); + block = L(block, SkipTake_); } } block = L(block, Y("return", label)); @@ -2227,17 +2227,17 @@ public: } bool IsSelect() const override { - return Source->IsSelect(); + return Source_->IsSelect(); } TPtr DoClone() const final { - return MakeIntrusive<TSelect>(Pos, Source->CloneSource(), SafeClone(SkipTake)); + return MakeIntrusive<TSelect>(Pos_, Source_->CloneSource(), SafeClone(SkipTake_)); } protected: - TSourcePtr Source; - TNodePtr SkipTake; - TNodePtr SkipTakeGround; - THolder<TFakeSource> FakeSource; + TSourcePtr Source_; + TNodePtr SkipTake_; + TNodePtr SkipTakeGround_; + THolder<TFakeSource> FakeSource_; }; TSourcePtr BuildSelect(TPosition pos, TSourcePtr source, TNodePtr skipTake) { @@ -2248,12 +2248,12 @@ class TSelectResultNode final: public TAstListNode { public: TSelectResultNode(TPosition pos, TSourcePtr source, bool writeResult, bool inSubquery) : TAstListNode(pos) - , Source(std::move(source)) - , WriteResult(writeResult) - , InSubquery(inSubquery) + , Source_(std::move(source)) + , WriteResult_(writeResult) + , InSubquery_(inSubquery) { - YQL_ENSURE(Source, "Invalid source node"); - FakeSource = BuildFakeSource(pos); + YQL_ENSURE(Source_, "Invalid source node"); + FakeSource_ = BuildFakeSource(pos); } bool IsSelect() const override { @@ -2261,15 +2261,15 @@ public: } bool DoInit(TContext& ctx, ISource* src) override { - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - src = Source.Get(); + src = Source_.Get(); TTableList tableList; - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); - TNodePtr node(BuildInputTables(Pos, tableList, InSubquery)); + TNodePtr node(BuildInputTables(Pos_, tableList, InSubquery_)); if (!node->Init(ctx, src)) { return false; } @@ -2299,7 +2299,7 @@ public: } ctx.PushBlockShortcuts(); - if (!labelNode->Init(ctx, FakeSource.Get())) { + if (!labelNode->Init(ctx, FakeSource_.Get())) { return false; } @@ -2313,14 +2313,14 @@ public: settings = L(settings, Q(Y(Q("autoref")))); } - auto columns = Source->GetColumns(); + auto columns = Source_->GetColumns(); if (columns && !columns->All && !(columns->QualifiedAll && ctx.SimpleColumns)) { auto list = Y(); for (auto& c: columns->List) { if (c.EndsWith('*')) { - list = L(list, Q(Y(Q("prefix"), BuildQuotedAtom(Pos, c.substr(0, c.size() - 1))))); + list = L(list, Q(Y(Q("prefix"), BuildQuotedAtom(Pos_, c.substr(0, c.size() - 1))))); } else { - list = L(list, BuildQuotedAtom(Pos, c)); + list = L(list, BuildQuotedAtom(Pos_, c)); } } settings = L(settings, Q(Y(Q("columns"), Q(list)))); @@ -2330,16 +2330,16 @@ public: settings = L(settings, Q(Y(Q("take"), Q(ToString(ctx.ResultRowsLimit))))); } - auto output = Source->Build(ctx); + auto output = Source_->Build(ctx); if (!output) { return false; } node = L(node, Y("let", "output", output)); - if (WriteResult) { - if (!Source->IsOrdered() && ctx.UseUnordered(*Source)) { + if (WriteResult_) { + if (!Source_->IsOrdered() && ctx.UseUnordered(*Source_)) { node = L(node, Y("let", "output", Y("Unordered", "output"))); } - auto writeResult(BuildWriteResult(Pos, "output", settings, clusters)); + auto writeResult(BuildWriteResult(Pos_, "output", settings, clusters)); if (!writeResult->Init(ctx, src)) { return false; } @@ -2357,11 +2357,11 @@ public: return {}; } protected: - TSourcePtr Source; + TSourcePtr Source_; - const bool WriteResult; - const bool InSubquery; - TSourcePtr FakeSource; + const bool WriteResult_; + const bool InSubquery_; + TSourcePtr FakeSource_; }; TNodePtr BuildSelectResult(TPosition pos, TSourcePtr source, bool writeResult, bool inSubquery) { diff --git a/yql/essentials/sql/v0/sql.cpp b/yql/essentials/sql/v0/sql.cpp index f83a016b228..b4fab79deaa 100644 --- a/yql/essentials/sql/v0/sql.cpp +++ b/yql/essentials/sql/v0/sql.cpp @@ -542,7 +542,7 @@ class TSqlTranslation: public TTranslation { protected: TSqlTranslation(TContext& ctx, NSQLTranslation::ESqlMode mode) : TTranslation(ctx) - , Mode(mode) + , Mode_(mode) { /// \todo remove NSQLTranslation::ESqlMode params YQL_ENSURE(ctx.Settings.Mode == mode); @@ -571,7 +571,7 @@ protected: TTableRef TableRefImpl(const TRule_table_ref& node); TMaybe<TSourcePtr> AsTableImpl(const TRule_table_ref& node); - NSQLTranslation::ESqlMode Mode; + NSQLTranslation::ESqlMode Mode_; }; class TSqlExpression: public TSqlTranslation { @@ -608,7 +608,7 @@ public: } void SetSmartParenthesisMode(ESmartParenthesis mode) { - SmartParenthesisMode = mode; + SmartParenthesisMode_ = mode; } TNodePtr ExprShortcut(const TString& baseName, const TNodePtr& node) { @@ -639,7 +639,7 @@ private: bool SqlLambdaExprBody(TContext& ctx, const TRule_lambda_body& node, TVector<TNodePtr>& exprSeq); TNodePtr KeyExpr(const TRule_key_expr& node) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); return expr.WrapExprShortcuts(expr.Build(node.GetRule_expr2())); } @@ -673,14 +673,14 @@ private: } if (node.HasBlock3()) { auto block = node.GetBlock3(); - TSqlExpression altExpr(Ctx, Mode); + TSqlExpression altExpr(Ctx_, Mode_); auto altResult = altExpr.WrapExprShortcuts(SubExpr(block.GetRule_neq_subexpr2())); if (!altResult) { return nullptr; } const TVector<TNodePtr> args({result, altResult}); Token(block.GetToken1()); - result = BuildBuiltinFunc(Ctx, Ctx.Pos(), "Coalesce", args); + result = BuildBuiltinFunc(Ctx_, Ctx_.Pos(), "Coalesce", args); } return result; } @@ -714,27 +714,27 @@ private: TNodePtr SqlInExpr(const TRule_in_expr& node); TNodePtr SmartParenthesis(const TRule_smart_parenthesis& node); - ESmartParenthesis SmartParenthesisMode = ESmartParenthesis::Default; + ESmartParenthesis SmartParenthesisMode_ = ESmartParenthesis::Default; - THashMap<TString, TNodePtr> ExprShortcuts; + THashMap<TString, TNodePtr> ExprShortcuts_; }; class TSqlCallExpr: public TSqlTranslation { public: TSqlCallExpr(TContext& ctx, NSQLTranslation::ESqlMode mode, TSqlExpression* usedExpr = nullptr) : TSqlTranslation(ctx, mode) - , UsedExpr(usedExpr) + , UsedExpr_(usedExpr) { } TSqlCallExpr(const TSqlCallExpr& call, const TVector<TNodePtr>& args) - : TSqlTranslation(call.Ctx, call.Mode) - , Pos(call.Pos) - , Func(call.Func) - , Module(call.Module) - , Node(call.Node) - , Args(args) - , AggMode(call.AggMode) + : TSqlTranslation(call.Ctx_, call.Mode_) + , Pos_(call.Pos_) + , Func_(call.Func_) + , Module_(call.Module_) + , Node_(call.Node_) + , Args_(args) + , AggMode_(call.AggMode_) { } @@ -743,83 +743,83 @@ public: void IncCounters(); TNodePtr BuildUdf(bool withArgsType) { - auto result = Node ? Node : BuildCallable(Pos, Module, Func, withArgsType ? Args : TVector<TNodePtr>()); - if (to_lower(Module) == "tensorflow" && Func == "RunBatch") { - Args.erase(Args.begin() + 2); + auto result = Node_ ? Node_ : BuildCallable(Pos_, Module_, Func_, withArgsType ? Args_ : TVector<TNodePtr>()); + if (to_lower(Module_) == "tensorflow" && Func_ == "RunBatch") { + Args_.erase(Args_.begin() + 2); } return result; } TNodePtr BuildCall() { TVector<TNodePtr> args; - if (Node) { - Module = "YQL"; - Func = NamedArgs.empty() ? "Apply" : "NamedApply"; - args.push_back(Node); + if (Node_) { + Module_ = "YQL"; + Func_ = NamedArgs_.empty() ? "Apply" : "NamedApply"; + args.push_back(Node_); } - bool mustUseNamed = !NamedArgs.empty(); + bool mustUseNamed = !NamedArgs_.empty(); if (mustUseNamed) { - if (Node) { + if (Node_) { mustUseNamed = false; } - args.emplace_back(BuildTuple(Pos, PositionalArgs)); - args.emplace_back(BuildStructure(Pos, NamedArgs)); + args.emplace_back(BuildTuple(Pos_, PositionalArgs_)); + args.emplace_back(BuildStructure(Pos_, NamedArgs_)); } else { - args.insert(args.end(), Args.begin(), Args.end()); + args.insert(args.end(), Args_.begin(), Args_.end()); } TFuncPrepareNameNode funcPrepareNameNode; - if (UsedExpr) { + if (UsedExpr_) { funcPrepareNameNode = [this](const TString& baseName, const TNodePtr& node) { - return UsedExpr->ExprShortcut(baseName, node); + return UsedExpr_->ExprShortcut(baseName, node); }; } - auto result = BuildBuiltinFunc(Ctx, Pos, Func, args, Module, AggMode, &mustUseNamed, funcPrepareNameNode); + auto result = BuildBuiltinFunc(Ctx_, Pos_, Func_, args, Module_, AggMode_, &mustUseNamed, funcPrepareNameNode); if (mustUseNamed) { - Error() << "Named args are used for call, but unsupported by function: " << Func; + Error() << "Named args are used for call, but unsupported by function: " << Func_; return nullptr; } return result; } TPosition GetPos() const { - return Pos; + return Pos_; } const TVector<TNodePtr>& GetArgs() const { - return Args; + return Args_; } bool EnsureNotDistinct(const TString& request) const { - if (AggMode == EAggregateMode::Distinct) { - Ctx.Error() << request << " does not allow DISTINCT arguments"; + if (AggMode_ == EAggregateMode::Distinct) { + Ctx_.Error() << request << " does not allow DISTINCT arguments"; return false; } return true; } void SetOverWindow() { - YQL_ENSURE(AggMode == EAggregateMode::Normal); - AggMode = EAggregateMode::OverWindow; + YQL_ENSURE(AggMode_ == EAggregateMode::Normal); + AggMode_ = EAggregateMode::OverWindow; } void SetIgnoreNulls() { - Func += "_IgnoreNulls"; + Func_ += "_IgnoreNulls"; } private: - TPosition Pos; - TString Func; - TString Module; - TNodePtr Node; - TVector<TNodePtr> Args; - TVector<TNodePtr> PositionalArgs; - TVector<TNodePtr> NamedArgs; - EAggregateMode AggMode = EAggregateMode::Normal; - TSqlExpression* UsedExpr = nullptr; + TPosition Pos_; + TString Func_; + TString Module_; + TNodePtr Node_; + TVector<TNodePtr> Args_; + TVector<TNodePtr> PositionalArgs_; + TVector<TNodePtr> NamedArgs_; + EAggregateMode AggMode_ = EAggregateMode::Normal; + TSqlExpression* UsedExpr_ = nullptr; }; TNodePtr TSqlTranslation::NamedExpr(const TRule_named_expr& node, EExpr exprMode) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); if (exprMode == EExpr::GroupBy) { expr.SetSmartParenthesisMode(TSqlExpression::ESmartParenthesis::GroupBy); } else if (exprMode == EExpr::SqlLambdaParams) { @@ -827,7 +827,7 @@ TNodePtr TSqlTranslation::NamedExpr(const TRule_named_expr& node, EExpr exprMode } TNodePtr exprNode(expr.WrapExprShortcuts(expr.Build(node.GetRule_expr1()))); if (!exprNode) { - Ctx.IncrementMonCounter("sql_errors", "NamedExprInvalid"); + Ctx_.IncrementMonCounter("sql_errors", "NamedExprInvalid"); return nullptr; } if (node.HasBlock2()) { @@ -880,7 +880,7 @@ bool TSqlTranslation::NamedBindList(const TRule_named_bind_parameter_list& node, TNodePtr TSqlTranslation::NamedBindParam(const TRule_named_bind_parameter& node) { auto bindName = NamedNodeImpl(node.GetRule_bind_parameter1(), *this); - auto result = BuildAtom(Ctx.Pos(), bindName, NYql::TNodeFlags::Default); + auto result = BuildAtom(Ctx_.Pos(), bindName, NYql::TNodeFlags::Default); if (node.HasBlock2()) { result->SetLabel(NamedNodeImpl(node.GetBlock2().GetRule_bind_parameter2(), *this)); } @@ -890,7 +890,7 @@ TNodePtr TSqlTranslation::NamedBindParam(const TRule_named_bind_parameter& node) TMaybe<TTableArg> TSqlTranslation::TableArgImpl(const TRule_table_arg& node) { TTableArg ret; ret.HasAt = node.HasBlock1(); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); ret.Expr = expr.Build(node.GetRule_expr2()); if (!ret.Expr) { return Nothing(); @@ -905,13 +905,13 @@ TMaybe<TTableArg> TSqlTranslation::TableArgImpl(const TRule_table_arg& node) { } TTableRef TSqlTranslation::TableRefImpl(const TRule_table_ref& node) { - if (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW && node.GetRule_opt_id_prefix1().HasBlock1()) { - Ctx.Error() << "Cluster should not be used in limited view"; - return TTableRef(Ctx.MakeName("table"), Ctx.CurrCluster, nullptr); + if (Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW && node.GetRule_opt_id_prefix1().HasBlock1()) { + Ctx_.Error() << "Cluster should not be used in limited view"; + return TTableRef(Ctx_.MakeName("table"), Ctx_.CurrCluster, nullptr); } auto cluster = OptIdPrefixAsClusterStr(node.GetRule_opt_id_prefix1(), *this, Context().CurrCluster); if (!cluster) { - return TTableRef(Ctx.MakeName("table"), Ctx.CurrCluster, nullptr); + return TTableRef(Ctx_.MakeName("table"), Ctx_.CurrCluster, nullptr); } TTableRef tr(Context().MakeName("table"), cluster, nullptr); @@ -929,13 +929,13 @@ TTableRef TSqlTranslation::TableRefImpl(const TRule_table_ref& node) { const TString func(Id(alt.GetRule_id_expr1(), *this)); auto arg = TableArgImpl(alt.GetRule_table_arg3()); if (!arg) { - return TTableRef(Ctx.MakeName("table"), Ctx.CurrCluster, nullptr); + return TTableRef(Ctx_.MakeName("table"), Ctx_.CurrCluster, nullptr); } TVector<TTableArg> args(1, *arg); for (auto& b : alt.GetBlock4()) { arg = TableArgImpl(b.GetRule_table_arg2()); if (!arg) { - return TTableRef(Ctx.MakeName("table"), Ctx.CurrCluster, nullptr); + return TTableRef(Ctx_.MakeName("table"), Ctx_.CurrCluster, nullptr); } args.push_back(*arg); @@ -947,7 +947,7 @@ TTableRef TSqlTranslation::TableRefImpl(const TRule_table_ref& node) { default: Y_ABORT("You should change implementation according grammar changes"); } - TVector<TString> hints = GetContextHints(Ctx); + TVector<TString> hints = GetContextHints(Ctx_); if (node.HasBlock3()) { hints = TableHintsImpl(node.GetBlock3().GetRule_table_hints1(), *this); } @@ -970,17 +970,17 @@ TMaybe<TSourcePtr> TSqlTranslation::AsTableImpl(const TRule_table_ref& node) { if (func == "as_table") { if (node.GetRule_opt_id_prefix1().HasBlock1()) { - Ctx.Error() << "Cluster shouldn't be specified for AS_TABLE source"; + Ctx_.Error() << "Cluster shouldn't be specified for AS_TABLE source"; return TMaybe<TSourcePtr>(nullptr); } if (!alt.GetBlock4().empty()) { - Ctx.Error() << "Expected single argument for AS_TABLE source"; + Ctx_.Error() << "Expected single argument for AS_TABLE source"; return TMaybe<TSourcePtr>(nullptr); } if (node.HasBlock3()) { - Ctx.Error() << "No hints expected for AS_TABLE source"; + Ctx_.Error() << "No hints expected for AS_TABLE source"; return TMaybe<TSourcePtr>(nullptr); } @@ -990,11 +990,11 @@ TMaybe<TSourcePtr> TSqlTranslation::AsTableImpl(const TRule_table_ref& node) { } if (arg->Expr->GetSource()) { - Ctx.Error() << "AS_TABLE shouldn't be used for table sources"; + Ctx_.Error() << "AS_TABLE shouldn't be used for table sources"; return TMaybe<TSourcePtr>(nullptr); } - return BuildNodeSource(Ctx.Pos(), arg->Expr); + return BuildNodeSource(Ctx_.Pos(), arg->Expr); } } @@ -1032,47 +1032,47 @@ bool TSqlCallExpr::Init(const TCallExprRule& node) { switch (block.Alt_case()) { case TCallExprRule::TBlock1::kAlt1: { auto& subblock = block.GetAlt1().GetBlock1(); - Module = IdOrString(subblock.GetRule_id_or_string1(), *this); - Func = IdOrString(subblock.GetRule_id_or_string3(), *this); + Module_ = IdOrString(subblock.GetRule_id_or_string1(), *this); + Func_ = IdOrString(subblock.GetRule_id_or_string3(), *this); break; } case TCallExprRule::TBlock1::kAlt2: { if constexpr (std::is_same_v<TCallExprRule, TRule_call_expr>) { - Func = Id(block.GetAlt2().GetRule_id_expr1(), *this); + Func_ = Id(block.GetAlt2().GetRule_id_expr1(), *this); } else { - Func = Id(block.GetAlt2().GetRule_in_id_expr1(), *this); + Func_ = Id(block.GetAlt2().GetRule_in_id_expr1(), *this); } break; } case TCallExprRule::TBlock1::kAlt3: - Node = GetNamedNode(NamedNodeImpl(block.GetAlt3().GetRule_bind_parameter1(), *this)); - if (!Node) { + Node_ = GetNamedNode(NamedNodeImpl(block.GetAlt3().GetRule_bind_parameter1(), *this)); + if (!Node_) { return false; } break; default: Y_ABORT("You should change implementation according grammar changes"); } - Pos = Ctx.Pos(); + Pos_ = Ctx_.Pos(); if (node.HasBlock3()) { switch (node.GetBlock3().Alt_case()) { case TCallExprRule::TBlock3::kAlt1: { const auto& alt = node.GetBlock3().GetAlt1(); if (IsDistinctOptSet(alt.GetRule_opt_set_quantifier1())) { - YQL_ENSURE(AggMode == EAggregateMode::Normal); - AggMode = EAggregateMode::Distinct; - Ctx.IncrementMonCounter("sql_features", "DistinctInCallExpr"); + YQL_ENSURE(AggMode_ == EAggregateMode::Normal); + AggMode_ = EAggregateMode::Distinct; + Ctx_.IncrementMonCounter("sql_features", "DistinctInCallExpr"); } - if (!NamedExprList(alt.GetRule_named_expr_list2(), Args)) { + if (!NamedExprList(alt.GetRule_named_expr_list2(), Args_)) { return false; } - for (const auto& arg: Args) { + for (const auto& arg: Args_) { if (arg->GetLabel()) { - NamedArgs.push_back(arg); + NamedArgs_.push_back(arg); } else { - PositionalArgs.push_back(arg); - if (!NamedArgs.empty()) { - Ctx.Error(arg->GetPos()) << "Unnamed arguments can not follow after named one"; + PositionalArgs_.push_back(arg); + if (!NamedArgs_.empty()) { + Ctx_.Error(arg->GetPos()) << "Unnamed arguments can not follow after named one"; return false; } } @@ -1080,7 +1080,7 @@ bool TSqlCallExpr::Init(const TCallExprRule& node) { break; } case TCallExprRule::TBlock3::kAlt2: - Args.push_back(BuildColumn(Pos, "*")); + Args_.push_back(BuildColumn(Pos_, "*")); break; default: Y_ABORT("You should change implementation according grammar changes"); @@ -1090,22 +1090,22 @@ bool TSqlCallExpr::Init(const TCallExprRule& node) { } void TSqlCallExpr::IncCounters() { - if (Node) { - Ctx.IncrementMonCounter("sql_features", "NamedNodeUseApply"); - } else if (!Module.empty()) { - if (ValidateForCounters(Module)) { - Ctx.IncrementMonCounter("udf_modules", Module); - Ctx.IncrementMonCounter("sql_features", "CallUdf"); - if (ValidateForCounters(Func)) { - auto scriptType = NKikimr::NMiniKQL::ScriptTypeFromStr(Module); + if (Node_) { + Ctx_.IncrementMonCounter("sql_features", "NamedNodeUseApply"); + } else if (!Module_.empty()) { + if (ValidateForCounters(Module_)) { + Ctx_.IncrementMonCounter("udf_modules", Module_); + Ctx_.IncrementMonCounter("sql_features", "CallUdf"); + if (ValidateForCounters(Func_)) { + auto scriptType = NKikimr::NMiniKQL::ScriptTypeFromStr(Module_); if (scriptType == NKikimr::NMiniKQL::EScriptType::Unknown) { - Ctx.IncrementMonCounter("udf_functions", Module + "." + Func); + Ctx_.IncrementMonCounter("udf_functions", Module_ + "." + Func_); } } } - } else if (ValidateForCounters(Func)) { - Ctx.IncrementMonCounter("sql_builtins", Func); - Ctx.IncrementMonCounter("sql_features", "CallBuiltin"); + } else if (ValidateForCounters(Func_)) { + Ctx_.IncrementMonCounter("sql_builtins", Func_); + Ctx_.IncrementMonCounter("sql_features", "CallBuiltin"); } } @@ -1174,7 +1174,7 @@ class TGroupByClause: public TSqlTranslation { public: TGroupByClause(TContext& ctx, NSQLTranslation::ESqlMode mode, TGroupByClauseCtx::TPtr groupSetContext = {}) : TSqlTranslation(ctx, mode) - , GroupSetContext(groupSetContext ? groupSetContext : TGroupByClauseCtx::TPtr(new TGroupByClauseCtx())) + , GroupSetContext_(groupSetContext ? groupSetContext : TGroupByClauseCtx::TPtr(new TGroupByClauseCtx())) {} bool Build(const TRule_group_by_clause& node, bool stream); @@ -1202,9 +1202,9 @@ private: TString GenerateGroupByExprName(); bool IsAutogenerated(const TString* name) const; - TVector<TNodePtr> GroupBySet; - TGroupByClauseCtx::TPtr GroupSetContext; - THoppingWindowSpecPtr HoppingWindowSpec; // stream queries + TVector<TNodePtr> GroupBySet_; + TGroupByClauseCtx::TPtr GroupSetContext_; + THoppingWindowSpecPtr HoppingWindowSpec_; // stream queries static const TString AutogenerateNamePrefix; }; @@ -1320,25 +1320,25 @@ TNodePtr Literal(TContext& ctx, const TRule_unsigned_number& rule) { TNodePtr TSqlExpression::LiteralExpr(const TRule_literal_value& node) { switch (node.Alt_case()) { case TRule_literal_value::kAltLiteralValue1: { - return LiteralNumber(Ctx, node.GetAlt_literal_value1().GetRule_integer1()); + return LiteralNumber(Ctx_, node.GetAlt_literal_value1().GetRule_integer1()); } case TRule_literal_value::kAltLiteralValue2: { - return LiteralReal(Ctx, node.GetAlt_literal_value2().GetRule_real1()); + return LiteralReal(Ctx_, node.GetAlt_literal_value2().GetRule_real1()); } case TRule_literal_value::kAltLiteralValue3: { const TString value(Token(node.GetAlt_literal_value3().GetToken1())); - return BuildLiteralSmartString(Ctx, value); + return BuildLiteralSmartString(Ctx_, value); } case TRule_literal_value::kAltLiteralValue5: { Token(node.GetAlt_literal_value5().GetToken1()); - return BuildLiteralNull(Ctx.Pos()); + return BuildLiteralNull(Ctx_.Pos()); } case TRule_literal_value::kAltLiteralValue9: { const TString value(Token(node.GetAlt_literal_value9().GetRule_bool_value1().GetToken1())); - return BuildLiteralBool(Ctx.Pos(), value); + return BuildLiteralBool(Ctx_.Pos(), value); } case TRule_literal_value::kAltLiteralValue10: { - return BuildEmptyAction(Ctx.Pos()); + return BuildEmptyAction(Ctx_.Pos()); } default: AltNotImplemented("literal_value", node); @@ -1362,7 +1362,7 @@ TNodePtr TSqlExpression::UnaryExpr(const TUnarySubExprType& node) { } else { name = Id(alt.GetRule_in_id_expr1(), *this); } - ids.push_back(BuildColumn(Ctx.Pos())); + ids.push_back(BuildColumn(Ctx_.Pos())); ids.push_back(name); break; } @@ -1375,7 +1375,7 @@ TNodePtr TSqlExpression::UnaryExpr(const TUnarySubExprType& node) { } if (!expr) { - Ctx.IncrementMonCounter("sql_errors", "BadAtomExpr"); + Ctx_.IncrementMonCounter("sql_errors", "BadAtomExpr"); return nullptr; } ids.push_back(expr); @@ -1388,13 +1388,13 @@ TNodePtr TSqlExpression::UnaryExpr(const TUnarySubExprType& node) { for (auto& b: node.GetBlock2()) { auto expr = KeyExpr(b.GetRule_key_expr1()); if (!expr) { - Ctx.IncrementMonCounter("sql_errors", "BadKeyExpr"); + Ctx_.IncrementMonCounter("sql_errors", "BadKeyExpr"); return nullptr; } ids.push_back(expr); isLookup = true; } - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); for (auto& dotBlock: node.GetBlock3()) { auto bb = dotBlock.GetBlock2(); switch (bb.Alt_case()) { @@ -1413,8 +1413,8 @@ TNodePtr TSqlExpression::UnaryExpr(const TUnarySubExprType& node) { const TString str(Token(bb.GetAlt2().GetToken1())); i32 pos = -1; if (!TryFromString<i32>(str, pos)) { - Ctx.Error() << "Failed to parse i32 from string: " << str; - Ctx.IncrementMonCounter("sql_errors", "FailedToParsePos"); + Ctx_.Error() << "Failed to parse i32 from string: " << str; + Ctx_.IncrementMonCounter("sql_errors", "FailedToParsePos"); return nullptr; } ids.push_back(pos); @@ -1430,7 +1430,7 @@ TNodePtr TSqlExpression::UnaryExpr(const TUnarySubExprType& node) { for (auto& b: dotBlock.GetBlock3()) { auto expr = KeyExpr(b.GetRule_key_expr1()); if (!expr) { - Ctx.IncrementMonCounter("sql_errors", "BadKeyExpr"); + Ctx_.IncrementMonCounter("sql_errors", "BadKeyExpr"); return nullptr; } ids.push_back(expr); @@ -1438,7 +1438,7 @@ TNodePtr TSqlExpression::UnaryExpr(const TUnarySubExprType& node) { } } if (node.HasBlock4()) { - Ctx.IncrementMonCounter("sql_errors", "CollateUnarySubexpr"); + Ctx_.IncrementMonCounter("sql_errors", "CollateUnarySubexpr"); Error() << "unary_subexpr: COLLATE is not implemented yet"; } Y_DEBUG_ABORT_UNLESS(!ids.empty()); @@ -1448,11 +1448,11 @@ TNodePtr TSqlExpression::UnaryExpr(const TUnarySubExprType& node) { TNodePtr TSqlExpression::BindParameterRule(const TRule_bind_parameter& rule) { const auto namedArg = NamedNodeImpl(rule, *this); - if (SmartParenthesisMode == ESmartParenthesis::SqlLambdaParams) { - Ctx.IncrementMonCounter("sql_features", "LambdaArgument"); - return BuildAtom(Ctx.Pos(), namedArg); + if (SmartParenthesisMode_ == ESmartParenthesis::SqlLambdaParams) { + Ctx_.IncrementMonCounter("sql_features", "LambdaArgument"); + return BuildAtom(Ctx_.Pos(), namedArg); } else { - Ctx.IncrementMonCounter("sql_features", "NamedNodeUseAtom"); + Ctx_.IncrementMonCounter("sql_features", "NamedNodeUseAtom"); return GetNamedNode(namedArg); } } @@ -1463,7 +1463,7 @@ TNodePtr TSqlExpression::LambdaRule(const TRule_lambda& rule) { if (!isSqlLambda) { return SmartParenthesis(alt.GetRule_smart_parenthesis1()); } - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); expr.SetSmartParenthesisMode(ESmartParenthesis::SqlLambdaParams); auto parenthesis = expr.SmartParenthesis(alt.GetRule_smart_parenthesis1()); if (!parenthesis) { @@ -1475,12 +1475,12 @@ TNodePtr TSqlExpression::LambdaRule(const TRule_lambda& rule) { } auto bodyBlock = alt.GetBlock2(); Token(bodyBlock.GetToken1()); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TVector<TNodePtr> exprSeq; for (const auto& arg: args) { PushNamedNode(arg, BuildAtom(pos, arg, NYql::TNodeFlags::Default)); } - const bool ret = SqlLambdaExprBody(Ctx, bodyBlock.GetRule_lambda_body3(), exprSeq); + const bool ret = SqlLambdaExprBody(Ctx_, bodyBlock.GetRule_lambda_body3(), exprSeq); for (const auto& arg : args) { PopNamedNode(arg); } @@ -1491,54 +1491,54 @@ TNodePtr TSqlExpression::LambdaRule(const TRule_lambda& rule) { } TNodePtr TSqlExpression::CastRule(const TRule_cast_expr& rule) { - Ctx.IncrementMonCounter("sql_features", "Cast"); + Ctx_.IncrementMonCounter("sql_features", "Cast"); const auto& alt = rule; Token(alt.GetToken1()); - TPosition pos(Ctx.Pos()); - TSqlExpression expr(Ctx, Mode); + TPosition pos(Ctx_.Pos()); + TSqlExpression expr(Ctx_, Mode_); const auto& paramOne = alt.GetRule_type_name5().HasBlock2() ? alt.GetRule_type_name5().GetBlock2().GetRule_integer2().GetToken1().GetValue() : TString(); const auto& paramTwo = !paramOne.empty() && alt.GetRule_type_name5().GetBlock2().HasBlock3() ? alt.GetRule_type_name5().GetBlock2().GetBlock3().GetRule_integer2().GetToken1().GetValue() : TString(); - return BuildCast(Ctx, pos, expr.Build(alt.GetRule_expr3()), Id(alt.GetRule_type_name5().GetRule_id1(), *this), paramOne, paramTwo); + return BuildCast(Ctx_, pos, expr.Build(alt.GetRule_expr3()), Id(alt.GetRule_type_name5().GetRule_id1(), *this), paramOne, paramTwo); } TNodePtr TSqlExpression::BitCastRule(const TRule_bitcast_expr& rule) { - Ctx.IncrementMonCounter("sql_features", "BitCast"); + Ctx_.IncrementMonCounter("sql_features", "BitCast"); const auto& alt = rule; Token(alt.GetToken1()); - TPosition pos(Ctx.Pos()); - TSqlExpression expr(Ctx, Mode); + TPosition pos(Ctx_.Pos()); + TSqlExpression expr(Ctx_, Mode_); const auto& paramOne = alt.GetRule_type_name5().HasBlock2() ? alt.GetRule_type_name5().GetBlock2().GetRule_integer2().GetToken1().GetValue() : TString(); const auto& paramTwo = !paramOne.empty() && alt.GetRule_type_name5().GetBlock2().HasBlock3() ? alt.GetRule_type_name5().GetBlock2().GetBlock3().GetRule_integer2().GetToken1().GetValue() : TString(); - return BuildBitCast(Ctx, pos, expr.Build(alt.GetRule_expr3()), Id(alt.GetRule_type_name5().GetRule_id1(), *this), paramOne, paramTwo); + return BuildBitCast(Ctx_, pos, expr.Build(alt.GetRule_expr3()), Id(alt.GetRule_type_name5().GetRule_id1(), *this), paramOne, paramTwo); } TNodePtr TSqlExpression::ExistsRule(const TRule_exists_expr& rule) { - Ctx.IncrementMonCounter("sql_features", "Exists"); + Ctx_.IncrementMonCounter("sql_features", "Exists"); const auto& alt = rule; Token(alt.GetToken2()); - TSqlSelect select(Ctx, Mode); + TSqlSelect select(Ctx_, Mode_); TPosition pos; auto source = select.Build(alt.GetRule_select_stmt3(), pos); if (!source) { - Ctx.IncrementMonCounter("sql_errors", "BadSource"); + Ctx_.IncrementMonCounter("sql_errors", "BadSource"); return nullptr; } const bool checkExist = true; - return BuildBuiltinFunc(Ctx, Ctx.Pos(), "ListHasItems", {BuildSourceNode(pos, std::move(source), checkExist)}); + return BuildBuiltinFunc(Ctx_, Ctx_.Pos(), "ListHasItems", {BuildSourceNode(pos, std::move(source), checkExist)}); } TNodePtr TSqlExpression::CaseRule(const TRule_case_expr& rule) { - Ctx.IncrementMonCounter("sql_features", "Case"); + Ctx_.IncrementMonCounter("sql_features", "Case"); const auto& alt = rule; Token(alt.GetToken1()); TNodePtr elseExpr; if (alt.HasBlock4()) { Token(alt.GetBlock4().GetToken1()); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); elseExpr = expr.Build(alt.GetBlock4().GetRule_expr2()); } else { - Ctx.IncrementMonCounter("sql_errors", "ElseIsRequired"); + Ctx_.IncrementMonCounter("sql_errors", "ElseIsRequired"); Error() << "ELSE is required"; return nullptr; } @@ -1547,21 +1547,21 @@ TNodePtr TSqlExpression::CaseRule(const TRule_case_expr& rule) { const auto& block = alt.GetBlock3(i).GetRule_when_expr1(); args.clear(); Token(block.GetToken1()); - TSqlExpression condExpr(Ctx, Mode); + TSqlExpression condExpr(Ctx_, Mode_); args.push_back(condExpr.Build(block.GetRule_expr2())); if (alt.HasBlock2()) { - TSqlExpression expr(Ctx, Mode); - args.back() = BuildBinaryOp(Ctx.Pos(), "==", expr.Build(alt.GetBlock2().GetRule_expr1()), args.back()); + TSqlExpression expr(Ctx_, Mode_); + args.back() = BuildBinaryOp(Ctx_.Pos(), "==", expr.Build(alt.GetBlock2().GetRule_expr1()), args.back()); } Token(block.GetToken3()); - TSqlExpression thenExpr(Ctx, Mode); + TSqlExpression thenExpr(Ctx_, Mode_); args.push_back(thenExpr.Build(block.GetRule_expr4())); args.push_back(elseExpr); if (i > 0) { - elseExpr = BuildBuiltinFunc(Ctx, Ctx.Pos(), "If", args); + elseExpr = BuildBuiltinFunc(Ctx_, Ctx_.Pos(), "If", args); } } - return BuildBuiltinFunc(Ctx, Ctx.Pos(), "If", args); + return BuildBuiltinFunc(Ctx_, Ctx_.Pos(), "If", args); } template<typename TWindowFunctionType> @@ -1570,7 +1570,7 @@ TNodePtr TSqlExpression::WindowFunctionRule(const TWindowFunctionType& rule) { // OR // in_window_function: in_call_expr (null_treatment? OVER window_name_or_specification)?; const bool overWindow = rule.HasBlock2(); - TSqlCallExpr call(Ctx, Mode, this); + TSqlCallExpr call(Ctx_, Mode_, this); bool initResult; if constexpr (std::is_same_v<TWindowFunctionType, TRule_window_function>) { @@ -1597,8 +1597,8 @@ TNodePtr TSqlExpression::WindowFunctionRule(const TWindowFunctionType& rule) { call.SetIgnoreNulls(); } const TString windowName = Id(winRule.GetAlt_window_name_or_specification1().GetRule_window_name1().GetRule_id1(), *this); - Ctx.IncrementMonCounter("sql_features", "WindowFunctionOver"); - return BuildCalcOverWindow(Ctx.Pos(), windowName, call.BuildCall()); + Ctx_.IncrementMonCounter("sql_features", "WindowFunctionOver"); + return BuildCalcOverWindow(Ctx_.Pos(), windowName, call.BuildCall()); } TNodePtr TSqlExpression::AtomExpr(const TRule_atom_expr& node) { @@ -1615,7 +1615,7 @@ TNodePtr TSqlExpression::AtomExpr(const TRule_atom_expr& node) { switch (node.Alt_case()) { case TRule_atom_expr::kAltAtomExpr1: - Ctx.IncrementMonCounter("sql_features", "LiteralExpr"); + Ctx_.IncrementMonCounter("sql_features", "LiteralExpr"); return LiteralExpr(node.GetAlt_atom_expr1().GetRule_literal_value1()); case TRule_atom_expr::kAltAtomExpr2: return BindParameterRule(node.GetAlt_atom_expr2().GetRule_bind_parameter1()); @@ -1632,7 +1632,7 @@ TNodePtr TSqlExpression::AtomExpr(const TRule_atom_expr& node) { case TRule_atom_expr::kAltAtomExpr8: { const auto& alt = node.GetAlt_atom_expr8(); const TString module(IdOrString(alt.GetRule_id_or_string1(), *this)); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); bool rawString = true; const TString name(IdOrString(alt.GetRule_id_or_string3(), *this, rawString)); return BuildCallable(pos, module, name, {}); @@ -1658,7 +1658,7 @@ TNodePtr TSqlExpression::InAtomExpr(const TRule_in_atom_expr& node) { switch (node.Alt_case()) { case TRule_in_atom_expr::kAltInAtomExpr1: - Ctx.IncrementMonCounter("sql_features", "LiteralExpr"); + Ctx_.IncrementMonCounter("sql_features", "LiteralExpr"); return LiteralExpr(node.GetAlt_in_atom_expr1().GetRule_literal_value1()); case TRule_in_atom_expr::kAltInAtomExpr2: return BindParameterRule(node.GetAlt_in_atom_expr2().GetRule_bind_parameter1()); @@ -1672,15 +1672,15 @@ TNodePtr TSqlExpression::InAtomExpr(const TRule_in_atom_expr& node) { return CaseRule(node.GetAlt_in_atom_expr6().GetRule_case_expr1()); case TRule_in_atom_expr::kAltInAtomExpr7: { Token(node.GetAlt_in_atom_expr7().GetToken1()); - TSqlSelect select(Ctx, Mode); + TSqlSelect select(Ctx_, Mode_); TPosition pos; auto source = select.Build(node.GetAlt_in_atom_expr7().GetRule_select_stmt2(), pos); if (!source) { - Ctx.IncrementMonCounter("sql_errors", "BadSource"); + Ctx_.IncrementMonCounter("sql_errors", "BadSource"); return {}; } - Ctx.IncrementMonCounter("sql_features", "InSubquery"); - return BuildSelectResult(pos, std::move(source), false, Mode == NSQLTranslation::ESqlMode::SUBQUERY); + Ctx_.IncrementMonCounter("sql_features", "InSubquery"); + return BuildSelectResult(pos, std::move(source), false, Mode_ == NSQLTranslation::ESqlMode::SUBQUERY); } case TRule_in_atom_expr::kAltInAtomExpr8: return BitCastRule(node.GetAlt_in_atom_expr8().GetRule_bitcast_expr1()); @@ -1694,18 +1694,18 @@ bool TSqlExpression::SqlLambdaParams(const TNodePtr& node, TVector<TString>& arg auto errMsg = TStringBuf("Invalid lambda arguments syntax. Lambda arguments should starts with '$' as named value."); auto tupleNodePtr = dynamic_cast<TTupleNode*>(node.Get()); if (!tupleNodePtr) { - Ctx.Error(node->GetPos()) << errMsg; + Ctx_.Error(node->GetPos()) << errMsg; return false; } THashSet<TString> dupArgsChecker; for (const auto& argPtr: tupleNodePtr->Elements()) { auto contentPtr = argPtr->GetAtomContent(); if (!contentPtr || !contentPtr->StartsWith("$")) { - Ctx.Error(argPtr->GetPos()) << errMsg; + Ctx_.Error(argPtr->GetPos()) << errMsg; return false; } if (!dupArgsChecker.insert(*contentPtr).second) { - Ctx.Error(argPtr->GetPos()) << "Duplicate lambda argument parametr: '" << *contentPtr << "'."; + Ctx_.Error(argPtr->GetPos()) << "Duplicate lambda argument parametr: '" << *contentPtr << "'."; return false; } args.push_back(*contentPtr); @@ -1784,22 +1784,22 @@ TNodePtr TSqlExpression::SubExpr(const TRule_con_subexpr& node) { case TRule_con_subexpr::kAltConSubexpr1: return UnaryExpr(node.GetAlt_con_subexpr1().GetRule_unary_subexpr1()); case TRule_con_subexpr::kAltConSubexpr2: { - Ctx.IncrementMonCounter("sql_features", "UnaryOperation"); + Ctx_.IncrementMonCounter("sql_features", "UnaryOperation"); TString opName; auto token = node.GetAlt_con_subexpr2().GetRule_unary_op1().GetToken1(); Token(token); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); switch (token.GetId()) { case SQLLexerTokens::TOKEN_NOT: opName = "Not"; break; case SQLLexerTokens::TOKEN_PLUS: opName = "Plus"; break; case SQLLexerTokens::TOKEN_MINUS: opName = "Minus"; break; case SQLLexerTokens::TOKEN_TILDA: opName = "BitNot"; break; default: - Ctx.IncrementMonCounter("sql_errors", "UnsupportedUnaryOperation"); + Ctx_.IncrementMonCounter("sql_errors", "UnsupportedUnaryOperation"); Error() << "Unsupported unary operation: " << token.GetValue(); return nullptr; } - Ctx.IncrementMonCounter("sql_unary_operations", opName); + Ctx_.IncrementMonCounter("sql_unary_operations", opName); return BuildUnaryOp(pos, opName, UnaryExpr(node.GetAlt_con_subexpr2().GetRule_unary_subexpr2())); } default: @@ -1814,7 +1814,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { if (!res) { return {}; } - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); if (node.HasBlock2()) { auto cond = node.GetBlock2().GetRule_cond_expr1(); switch (cond.Alt_case()) { @@ -1830,7 +1830,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { if (opName == "like" || opName == "ilike") { const TString* escapeLiteral = nullptr; TNodePtr escapeNode; - const auto& escaper = BuildUdf(Ctx, pos, "Re2", "PatternFromLike", {}); + const auto& escaper = BuildUdf(Ctx_, pos, "Re2", "PatternFromLike", {}); TVector<TNodePtr> escaperArgs({ escaper, pattern }); if (matchOp.HasBlock4()) { @@ -1842,30 +1842,30 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { escapeLiteral = escapeExpr->GetLiteral("String"); escapeNode = escapeExpr; if (escapeLiteral) { - Ctx.IncrementMonCounter("sql_features", "LikeEscape"); + Ctx_.IncrementMonCounter("sql_features", "LikeEscape"); if (escapeLiteral->size() != 1) { - Ctx.IncrementMonCounter("sql_errors", "LikeMultiCharEscape"); + Ctx_.IncrementMonCounter("sql_errors", "LikeMultiCharEscape"); Error() << "ESCAPE clause requires single character argument"; return nullptr; } if (escapeLiteral[0] == "%" || escapeLiteral[0] == "_" || escapeLiteral[0] == "\\") { - Ctx.IncrementMonCounter("sql_errors", "LikeUnsupportedEscapeChar"); + Ctx_.IncrementMonCounter("sql_errors", "LikeUnsupportedEscapeChar"); Error() << "'%', '_' and '\\' are currently not supported in ESCAPE clause, "; Error() << "please choose any other character"; return nullptr; } escaperArgs.push_back(BuildLiteralRawString(pos, *escapeLiteral)); } else { - Ctx.IncrementMonCounter("sql_errors", "LikeNotLiteralEscape"); + Ctx_.IncrementMonCounter("sql_errors", "LikeNotLiteralEscape"); Error() << "ESCAPE clause requires String literal argument"; return nullptr; } } - auto re2options = BuildUdf(Ctx, pos, "Re2", "Options", {}); + auto re2options = BuildUdf(Ctx_, pos, "Re2", "Options", {}); TString csMode; if (opName == "ilike") { - Ctx.IncrementMonCounter("sql_features", "CaseInsensitiveLike"); + Ctx_.IncrementMonCounter("sql_features", "CaseInsensitiveLike"); csMode = "false"; } else { csMode = "true"; @@ -1879,7 +1879,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { auto list = new TAstListNodeImpl(pos, { escapedPattern, optionsApply }); auto runConfig = new TAstListNodeImpl(pos, { new TAstAtomNodeImpl(pos, "quote", 0), list }); - const auto& matcher = BuildUdf(Ctx, pos, "Re2", "Match", { runConfig }); + const auto& matcher = BuildUdf(Ctx_, pos, "Re2", "Match", { runConfig }); isMatch = new TCallNodeImpl(pos, "Apply", { matcher, res }); const TString* literalPattern = pattern->GetLiteral("String"); @@ -1906,7 +1906,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { } } else { if (inEscape) { - Ctx.IncrementMonCounter("sql_errors", "LikeEscapeNormalSymbol"); + Ctx_.IncrementMonCounter("sql_errors", "LikeEscapeNormalSymbol"); Error() << "Escape symbol should be used twice consecutively in LIKE pattern to be considered literal"; return nullptr; } else { @@ -1916,16 +1916,16 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { } } if (inEscape) { - Ctx.IncrementMonCounter("sql_errors", "LikeEscapeSymbolEnd"); + Ctx_.IncrementMonCounter("sql_errors", "LikeEscapeSymbolEnd"); Error() << "LIKE pattern should not end with escape symbol"; return nullptr; } if (opName != "ilike") { if (!hasPattern) { - isMatch = BuildBinaryOp(pos, "==", res, BuildLiteralSmartString(Ctx, + isMatch = BuildBinaryOp(pos, "==", res, BuildLiteralSmartString(Ctx_, TStringBuilder() << "@@" << lowerBound << "@@")); } else if (!lowerBound.empty()) { - const auto& lowerBoundOp = BuildBinaryOp(pos, ">=", res, BuildLiteralSmartString(Ctx, + const auto& lowerBoundOp = BuildBinaryOp(pos, ">=", res, BuildLiteralSmartString(Ctx_, TStringBuilder() << "@@" << lowerBound << "@@")); auto& isMatchCopy = isMatch; TStringBuilder upperBound; @@ -1945,7 +1945,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { pos, "And", lowerBoundOp, - BuildBinaryOp(pos, "<", res, BuildLiteralSmartString(Ctx, + BuildBinaryOp(pos, "<", res, BuildLiteralSmartString(Ctx_, TStringBuilder() << "@@" << upperBound << "@@")) ); isMatch = BuildBinaryOp(pos, "And", between, isMatchCopy); @@ -1956,26 +1956,26 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { } } - Ctx.IncrementMonCounter("sql_features", notMatch ? "NotLike" : "Like"); + Ctx_.IncrementMonCounter("sql_features", notMatch ? "NotLike" : "Like"); } else if (opName == "regexp" || opName == "rlike" || opName == "match") { if (matchOp.HasBlock4()) { - Ctx.IncrementMonCounter("sql_errors", "RegexpEscape"); + Ctx_.IncrementMonCounter("sql_errors", "RegexpEscape"); TString opNameUpper(opName); opNameUpper.to_upper(); Error() << opName << " and ESCAPE clauses should not be used together"; return nullptr; } - const auto& matcher = BuildUdf(Ctx, pos, "Pcre", opName == "match" ? "BacktrackingMatch" : "BacktrackingGrep", { pattern }); + const auto& matcher = BuildUdf(Ctx_, pos, "Pcre", opName == "match" ? "BacktrackingMatch" : "BacktrackingGrep", { pattern }); isMatch = new TCallNodeImpl(pos, "Apply", { matcher, res }); if (opName != "match") { - Ctx.IncrementMonCounter("sql_features", notMatch ? "NotRegexp" : "Regexp"); + Ctx_.IncrementMonCounter("sql_features", notMatch ? "NotRegexp" : "Regexp"); } else { - Ctx.IncrementMonCounter("sql_features", notMatch ? "NotMatch" : "Match"); + Ctx_.IncrementMonCounter("sql_features", notMatch ? "NotMatch" : "Match"); } } else { - Ctx.IncrementMonCounter("sql_errors", "UnknownMatchOp"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownMatchOp"); AltNotImplemented("match_op", cond); return nullptr; } @@ -1986,14 +1986,14 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { const bool notIn = altInExpr.HasBlock1(); auto hints = BuildTuple(pos, {}); if (altInExpr.HasBlock3()) { - Ctx.IncrementMonCounter("sql_features", "IsCompactHint"); + Ctx_.IncrementMonCounter("sql_features", "IsCompactHint"); auto sizeHint = BuildTuple(pos, { BuildQuotedAtom(pos, "isCompact", NYql::TNodeFlags::Default) }); hints = BuildTuple(pos, { sizeHint }); } - TSqlExpression inSubexpr(Ctx, Mode); + TSqlExpression inSubexpr(Ctx_, Mode_); auto inRight = inSubexpr.SqlInExpr(altInExpr.GetRule_in_expr4()); - auto isIn = BuildBuiltinFunc(Ctx, pos, "In", {res, inRight, hints}); - Ctx.IncrementMonCounter("sql_features", notIn ? "NotIn" : "In"); + auto isIn = BuildBuiltinFunc(Ctx_, pos, "In", {res, inRight, hints}); + Ctx_.IncrementMonCounter("sql_features", notIn ? "NotIn" : "In"); return notIn ? BuildUnaryOp(pos, "Not", isIn) : isIn; } case TRule_cond_expr::kAltCondExpr3: { @@ -2006,17 +2006,17 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { if (altCase == TRule_cond_expr::TAlt3::TBlock1::kAlt4 && !cond.GetAlt_cond_expr3().GetBlock1().GetAlt4().HasBlock1()) { - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_MISSING_IS_BEFORE_NOT_NULL) << "Missing IS keyword before NOT NULL"; + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_MISSING_IS_BEFORE_NOT_NULL) << "Missing IS keyword before NOT NULL"; } auto isNull = BuildIsNullOp(pos, res); - Ctx.IncrementMonCounter("sql_features", notNoll ? "NotNull" : "Null"); + Ctx_.IncrementMonCounter("sql_features", notNoll ? "NotNull" : "Null"); return notNoll ? BuildUnaryOp(pos, "Not", isNull) : isNull; } case TRule_cond_expr::kAltCondExpr4: { auto alt = cond.GetAlt_cond_expr4(); if (alt.HasBlock1()) { - Ctx.IncrementMonCounter("sql_features", "NotBetween"); + Ctx_.IncrementMonCounter("sql_features", "NotBetween"); return BuildBinaryOp( pos, "Or", @@ -2024,7 +2024,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { BuildBinaryOp(pos, ">", res, SubExpr(alt.GetRule_eq_subexpr5())) ); } else { - Ctx.IncrementMonCounter("sql_features", "Between"); + Ctx_.IncrementMonCounter("sql_features", "Between"); return BuildBinaryOp( pos, "And", @@ -2039,7 +2039,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { return BinOpList(node.GetRule_eq_subexpr1(), getNode, alt.GetBlock1().begin(), alt.GetBlock1().end()); } default: - Ctx.IncrementMonCounter("sql_errors", "UnknownConditionExpr"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownConditionExpr"); AltNotImplemented("cond_expr", cond); return nullptr; } @@ -2048,7 +2048,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node) { } TNodePtr TSqlExpression::BinOperList(const TString& opName, TVector<TNodePtr>::const_iterator begin, TVector<TNodePtr>::const_iterator end) const { - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); const size_t opCount = end - begin; Y_DEBUG_ABORT_UNLESS(opCount >= 2); if (opCount == 2) { @@ -2066,7 +2066,7 @@ TNodePtr TSqlExpression::BinOper(const TString& opName, const TNode& node, TGetN if (begin == end) { return SubExpr(node); } - Ctx.IncrementMonCounter("sql_binary_operations", opName); + Ctx_.IncrementMonCounter("sql_binary_operations", opName); const size_t listSize = end - begin; TVector<TNodePtr> nodes; nodes.reserve(1 + listSize); @@ -2081,95 +2081,95 @@ template <typename TNode, typename TGetNode, typename TIter> TNodePtr TSqlExpression::BinOpList(const TNode& node, TGetNode getNode, TIter begin, TIter end) { TNodePtr partialResult = SubExpr(node); while (begin != end) { - Ctx.IncrementMonCounter("sql_features", "BinaryOperation"); + Ctx_.IncrementMonCounter("sql_features", "BinaryOperation"); Token(begin->GetToken1()); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TString opName; auto tokenId = begin->GetToken1().GetId(); switch (tokenId) { case SQLLexerTokens::TOKEN_LESS: - Ctx.IncrementMonCounter("sql_binary_operations", "Less"); + Ctx_.IncrementMonCounter("sql_binary_operations", "Less"); opName = "<"; break; case SQLLexerTokens::TOKEN_LESS_OR_EQ: opName = "<="; - Ctx.IncrementMonCounter("sql_binary_operations", "LessOrEq"); + Ctx_.IncrementMonCounter("sql_binary_operations", "LessOrEq"); break; case SQLLexerTokens::TOKEN_GREATER: opName = ">"; - Ctx.IncrementMonCounter("sql_binary_operations", "Greater"); + Ctx_.IncrementMonCounter("sql_binary_operations", "Greater"); break; case SQLLexerTokens::TOKEN_GREATER_OR_EQ: opName = ">="; - Ctx.IncrementMonCounter("sql_binary_operations", "GreaterOrEq"); + Ctx_.IncrementMonCounter("sql_binary_operations", "GreaterOrEq"); break; case SQLLexerTokens::TOKEN_PLUS: opName = "+"; - Ctx.IncrementMonCounter("sql_binary_operations", "Plus"); + Ctx_.IncrementMonCounter("sql_binary_operations", "Plus"); break; case SQLLexerTokens::TOKEN_MINUS: opName = "-"; - Ctx.IncrementMonCounter("sql_binary_operations", "Minus"); + Ctx_.IncrementMonCounter("sql_binary_operations", "Minus"); break; case SQLLexerTokens::TOKEN_ASTERISK: opName = "*"; - Ctx.IncrementMonCounter("sql_binary_operations", "Multiply"); + Ctx_.IncrementMonCounter("sql_binary_operations", "Multiply"); break; case SQLLexerTokens::TOKEN_SLASH: opName = "/"; - Ctx.IncrementMonCounter("sql_binary_operations", "Divide"); - if (!Ctx.PragmaClassicDivision) { - partialResult = BuildCast(Ctx, pos, partialResult, "Double"); + Ctx_.IncrementMonCounter("sql_binary_operations", "Divide"); + if (!Ctx_.PragmaClassicDivision) { + partialResult = BuildCast(Ctx_, pos, partialResult, "Double"); } break; case SQLLexerTokens::TOKEN_PERCENT: opName = "%"; - Ctx.IncrementMonCounter("sql_binary_operations", "Mod"); + Ctx_.IncrementMonCounter("sql_binary_operations", "Mod"); break; case SQLLexerTokens::TOKEN_EQUALS: - Ctx.IncrementMonCounter("sql_binary_operations", "Equals"); + Ctx_.IncrementMonCounter("sql_binary_operations", "Equals"); [[fallthrough]]; case SQLLexerTokens::TOKEN_EQUALS2: - Ctx.IncrementMonCounter("sql_binary_operations", "Equals2"); + Ctx_.IncrementMonCounter("sql_binary_operations", "Equals2"); opName = "=="; break; case SQLLexerTokens::TOKEN_NOT_EQUALS: - Ctx.IncrementMonCounter("sql_binary_operations", "NotEquals"); + Ctx_.IncrementMonCounter("sql_binary_operations", "NotEquals"); [[fallthrough]]; case SQLLexerTokens::TOKEN_NOT_EQUALS2: - Ctx.IncrementMonCounter("sql_binary_operations", "NotEquals2"); + Ctx_.IncrementMonCounter("sql_binary_operations", "NotEquals2"); opName = "!="; break; case SQLLexerTokens::TOKEN_AMPERSAND: opName = "BitAnd"; - Ctx.IncrementMonCounter("sql_binary_operations", "BitAnd"); + Ctx_.IncrementMonCounter("sql_binary_operations", "BitAnd"); break; case SQLLexerTokens::TOKEN_PIPE: opName = "BitOr"; - Ctx.IncrementMonCounter("sql_binary_operations", "BitOr"); + Ctx_.IncrementMonCounter("sql_binary_operations", "BitOr"); break; case SQLLexerTokens::TOKEN_CARET: opName = "BitXor"; - Ctx.IncrementMonCounter("sql_binary_operations", "BitXor"); + Ctx_.IncrementMonCounter("sql_binary_operations", "BitXor"); break; case SQLLexerTokens::TOKEN_SHIFT_LEFT: opName = "ShiftLeft"; - Ctx.IncrementMonCounter("sql_binary_operations", "ShiftLeft"); + Ctx_.IncrementMonCounter("sql_binary_operations", "ShiftLeft"); break; case SQLLexerTokens::TOKEN_SHIFT_RIGHT: opName = "ShiftRight"; - Ctx.IncrementMonCounter("sql_binary_operations", "ShiftRight"); + Ctx_.IncrementMonCounter("sql_binary_operations", "ShiftRight"); break; case SQLLexerTokens::TOKEN_ROT_LEFT: opName = "RotLeft"; - Ctx.IncrementMonCounter("sql_binary_operations", "RotLeft"); + Ctx_.IncrementMonCounter("sql_binary_operations", "RotLeft"); break; case SQLLexerTokens::TOKEN_ROT_RIGHT: opName = "RotRight"; - Ctx.IncrementMonCounter("sql_binary_operations", "RotRight"); + Ctx_.IncrementMonCounter("sql_binary_operations", "RotRight"); break; default: - Ctx.IncrementMonCounter("sql_errors", "UnsupportedBinaryOperation"); + Ctx_.IncrementMonCounter("sql_errors", "UnsupportedBinaryOperation"); Error() << "Unsupported binary operation token: " << tokenId; return nullptr; } @@ -2182,7 +2182,7 @@ TNodePtr TSqlExpression::BinOpList(const TNode& node, TGetNode getNode, TIter be } TNodePtr TSqlExpression::SqlInExpr(const TRule_in_expr& node) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); expr.SetSmartParenthesisMode(TSqlExpression::ESmartParenthesis::InStatement); auto result = expr.WrapExprShortcuts(expr.UnaryExpr(node.GetRule_in_unary_subexpr1())); return result; @@ -2191,13 +2191,13 @@ TNodePtr TSqlExpression::SqlInExpr(const TRule_in_expr& node) { TNodePtr TSqlExpression::SmartParenthesis(const TRule_smart_parenthesis& node) { TVector<TNodePtr> exprs; Token(node.GetToken1()); - const TPosition pos(Ctx.Pos()); + const TPosition pos(Ctx_.Pos()); const bool isTuple = node.HasBlock3(); - bool expectTuple = SmartParenthesisMode == ESmartParenthesis::InStatement; + bool expectTuple = SmartParenthesisMode_ == ESmartParenthesis::InStatement; EExpr mode = EExpr::Regular; - if (SmartParenthesisMode == ESmartParenthesis::GroupBy) { + if (SmartParenthesisMode_ == ESmartParenthesis::GroupBy) { mode = EExpr::GroupBy; - } else if (SmartParenthesisMode == ESmartParenthesis::SqlLambdaParams) { + } else if (SmartParenthesisMode_ == ESmartParenthesis::SqlLambdaParams) { mode = EExpr::SqlLambdaParams; expectTuple = true; } @@ -2213,26 +2213,26 @@ TNodePtr TSqlExpression::SmartParenthesis(const TRule_smart_parenthesis& node) { } else { hasUnnamed = true; } - if (hasAliases && hasUnnamed && SmartParenthesisMode != ESmartParenthesis::GroupBy) { - Ctx.IncrementMonCounter("sql_errors", "AnonymousStructMembers"); - Ctx.Error(pos) << "Structure does not allow anonymous members"; + if (hasAliases && hasUnnamed && SmartParenthesisMode_ != ESmartParenthesis::GroupBy) { + Ctx_.IncrementMonCounter("sql_errors", "AnonymousStructMembers"); + Ctx_.Error(pos) << "Structure does not allow anonymous members"; return nullptr; } } if (exprs.size() == 1 && hasUnnamed && !isTuple && !expectTuple) { return exprs.back(); } - if (SmartParenthesisMode == ESmartParenthesis::GroupBy) { + if (SmartParenthesisMode_ == ESmartParenthesis::GroupBy) { /// \todo support nested tuple\struct if (isTuple) { - Ctx.IncrementMonCounter("sql_errors", "SimpleTupleInGroupBy"); - Ctx.Error(pos) << "Unable to use tuple in group by clause"; + Ctx_.IncrementMonCounter("sql_errors", "SimpleTupleInGroupBy"); + Ctx_.Error(pos) << "Unable to use tuple in group by clause"; return nullptr; } - Ctx.IncrementMonCounter("sql_features", "ListOfNamedNode"); + Ctx_.IncrementMonCounter("sql_features", "ListOfNamedNode"); return BuildListOfNamedNodes(pos, std::move(exprs)); } - Ctx.IncrementMonCounter("sql_features", hasUnnamed ? "SimpleTuple" : "SimpleStruct"); + Ctx_.IncrementMonCounter("sql_features", hasUnnamed ? "SimpleTuple" : "SimpleStruct"); return hasUnnamed || expectTuple ? BuildTuple(pos, exprs) : BuildStructure(pos, exprs); } @@ -2243,12 +2243,12 @@ TNodePtr TSqlTranslation::NamedNode(const TRule_named_nodes_stmt& rule, TVector< TNodePtr nodeExpr = nullptr; switch (rule.GetBlock3().Alt_case()) { case TRule_named_nodes_stmt::TBlock3::kAlt1: { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); return expr.Build(rule.GetBlock3().GetAlt1().GetRule_expr1()); } case TRule_named_nodes_stmt::TBlock3::kAlt2: { - TSqlSelect expr(Ctx, Mode); + TSqlSelect expr(Ctx_, Mode_); TPosition pos; auto source = expr.Build(rule.GetBlock3().GetAlt2().GetRule_select_stmt2(), pos); if (!source) { @@ -2259,7 +2259,7 @@ TNodePtr TSqlTranslation::NamedNode(const TRule_named_nodes_stmt& rule, TVector< default: AltNotImplemented("named_node", rule.GetBlock3()); - Ctx.IncrementMonCounter("sql_errors", "UnknownNamedNode"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownNamedNode"); return nullptr; } } @@ -2273,7 +2273,7 @@ bool TSqlTranslation::ImportStatement(const TRule_import_stmt& stmt, TVector<TSt if (!NamedBindList(stmt.GetRule_named_bind_parameter_list4(), bindNames)) { return false; } - const TString moduleAlias = Ctx.AddImport(std::move(modulePath)); + const TString moduleAlias = Ctx_.AddImport(std::move(modulePath)); if (!moduleAlias) { return false; } @@ -2302,49 +2302,49 @@ TNodePtr TSqlTranslation::DoStatement(const TRule_do_stmt& stmt, bool makeLambda break; } case TRule_do_stmt_TBlock2::kAlt2: - action = BuildEmptyAction(Ctx.Pos()); + action = BuildEmptyAction(Ctx_.Pos()); break; default: - Ctx.IncrementMonCounter("sql_errors", "UnknownDoStmt"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownDoStmt"); AltNotImplemented("do_stmt", stmt.GetBlock2()); return nullptr; } TVector<TNodePtr> values; - values.push_back(new TAstAtomNodeImpl(Ctx.Pos(), "Apply", TNodeFlags::Default)); + values.push_back(new TAstAtomNodeImpl(Ctx_.Pos(), "Apply", TNodeFlags::Default)); values.push_back(action); - values.push_back(new TAstAtomNodeImpl(Ctx.Pos(), "world", TNodeFlags::Default)); + values.push_back(new TAstAtomNodeImpl(Ctx_.Pos(), "world", TNodeFlags::Default)); - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); if (stmt.HasBlock4() && !ExprList(sqlExpr, values, stmt.GetBlock4().GetRule_expr_list1())) { return nullptr; } - TNodePtr apply = new TAstListNodeImpl(Ctx.Pos(), std::move(values)); + TNodePtr apply = new TAstListNodeImpl(Ctx_.Pos(), std::move(values)); if (!makeLambda) { - return BuildDoCall(Ctx.Pos(), apply); + return BuildDoCall(Ctx_.Pos(), apply); } - TNodePtr params = new TAstListNodeImpl(Ctx.Pos()); + TNodePtr params = new TAstListNodeImpl(Ctx_.Pos()); params->Add("world"); for (const auto& arg : args) { - params->Add(new TAstAtomNodeImpl(Ctx.Pos(), arg, TNodeFlags::ArbitraryContent)); + params->Add(new TAstAtomNodeImpl(Ctx_.Pos(), arg, TNodeFlags::ArbitraryContent)); } - return BuildDoCall(Ctx.Pos(), BuildLambda(Ctx.Pos(), params, apply)); + return BuildDoCall(Ctx_.Pos(), BuildLambda(Ctx_.Pos(), params, apply)); } bool TSqlSelect::JoinOp(ISource* join, const TRule_join_source::TBlock2& block) { const auto& node = block.GetRule_join_op1(); switch (node.Alt_case()) { case TRule_join_op::kAltJoinOp1: - Ctx.IncrementMonCounter("sql_join_operations", "CartesianProduct"); + Ctx_.IncrementMonCounter("sql_join_operations", "CartesianProduct"); Error() << "Cartesian product of tables is forbidden"; return false; case TRule_join_op::kAltJoinOp2: { auto alt = node.GetAlt_join_op2(); if (alt.HasBlock1()) { - Ctx.IncrementMonCounter("sql_join_operations", "Natural"); + Ctx_.IncrementMonCounter("sql_join_operations", "Natural"); Error() << "Natural join is not implemented yet"; return false; } @@ -2378,7 +2378,7 @@ bool TSqlSelect::JoinOp(ISource* join, const TRule_join_source::TBlock2& block) joinOp = Token(block.GetAlt4().GetToken1()); break; default: - Ctx.IncrementMonCounter("sql_errors", "UnknownJoinOperation"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownJoinOperation"); AltNotImplemented("join_op", node); return false; } @@ -2391,33 +2391,33 @@ bool TSqlSelect::JoinOp(ISource* join, const TRule_join_source::TBlock2& block) joinOp = Token(alt.GetBlock2().GetAlt3().GetToken1()); break; default: - Ctx.IncrementMonCounter("sql_errors", "UnknownJoinOperation"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownJoinOperation"); AltNotImplemented("join_op", node); return false; } joinOp = NormalizeJoinOp(joinOp); - Ctx.IncrementMonCounter("sql_features", "Join"); - Ctx.IncrementMonCounter("sql_join_operations", joinOp); + Ctx_.IncrementMonCounter("sql_features", "Join"); + Ctx_.IncrementMonCounter("sql_join_operations", joinOp); TNodePtr joinKeyExpr; if (block.HasBlock3()) { if (joinOp == "Cross") { Error() << "Cross join should not have ON or USING expression"; - Ctx.IncrementMonCounter("sql_errors", "BadJoinExpr"); + Ctx_.IncrementMonCounter("sql_errors", "BadJoinExpr"); return false; } joinKeyExpr = JoinExpr(join, block.GetBlock3().GetRule_join_constraint1()); if (!joinKeyExpr) { - Ctx.IncrementMonCounter("sql_errors", "BadJoinExpr"); + Ctx_.IncrementMonCounter("sql_errors", "BadJoinExpr"); return false; } } else { if (joinOp != "Cross") { Error() << "Expected ON or USING expression"; - Ctx.IncrementMonCounter("sql_errors", "BadJoinExpr"); + Ctx_.IncrementMonCounter("sql_errors", "BadJoinExpr"); return false; } } @@ -2427,7 +2427,7 @@ bool TSqlSelect::JoinOp(ISource* join, const TRule_join_source::TBlock2& block) break; } default: - Ctx.IncrementMonCounter("sql_errors", "UnknownJoinOperation2"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownJoinOperation2"); AltNotImplemented("join_op", node); return false; } @@ -2439,23 +2439,23 @@ TNodePtr TSqlSelect::JoinExpr(ISource* join, const TRule_join_constraint& node) case TRule_join_constraint::kAltJoinConstraint1: { auto& alt = node.GetAlt_join_constraint1(); Token(alt.GetToken1()); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); return expr.Build(alt.GetRule_expr2()); } case TRule_join_constraint::kAltJoinConstraint2: { auto& alt = node.GetAlt_join_constraint2(); Token(alt.GetToken1()); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TVector<TDeferredAtom> names; if (!PureColumnOrNamedListStr(alt.GetRule_pure_column_or_named_list2(), *this, names)) { return nullptr; } Y_DEBUG_ABORT_UNLESS(join->GetJoin()); - return join->GetJoin()->BuildJoinKeys(Ctx, names); + return join->GetJoin()->BuildJoinKeys(Ctx_, names); } default: - Ctx.IncrementMonCounter("sql_errors", "UnknownJoinConstraint"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownJoinConstraint"); AltNotImplemented("join_constraint", node); break; } @@ -2476,7 +2476,7 @@ TVector<TNodePtr> TSqlSelect::OrdinaryNamedColumnList(const TRule_ordinary_named } break; default: - Ctx.IncrementMonCounter("sql_errors", "UnknownOrdinaryNamedColumn"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownOrdinaryNamedColumn"); AltNotImplemented("ordinary_named_column_list", node); } return result; @@ -2502,8 +2502,8 @@ TSourcePtr TSqlSelect::FlattenSource(const TRule_flatten_source& node) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", "FlattenByColumns"); - if (!source->AddExpressions(Ctx, flattenColumns, EExprSeat::FlattenBy)) { + Ctx_.IncrementMonCounter("sql_features", "FlattenByColumns"); + if (!source->AddExpressions(Ctx_, flattenColumns, EExprSeat::FlattenBy)) { return nullptr; } @@ -2511,13 +2511,13 @@ TSourcePtr TSqlSelect::FlattenSource(const TRule_flatten_source& node) { break; } case TRule_flatten_source::TBlock2::TBlock2::kAlt2: { - Ctx.IncrementMonCounter("sql_features", "FlattenColumns"); + Ctx_.IncrementMonCounter("sql_features", "FlattenColumns"); source->MarkFlattenColumns(); break; } default: - Ctx.IncrementMonCounter("sql_errors", "UnknownOrdinaryNamedColumn"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownOrdinaryNamedColumn"); AltNotImplemented("flatten_source", flatten2); } } @@ -2530,20 +2530,20 @@ TSourcePtr TSqlSelect::JoinSource(const TRule_join_source& node) { return nullptr; } if (node.Block2Size()) { - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TVector<TSourcePtr> sources; sources.emplace_back(std::move(source)); for (auto& block: node.GetBlock2()) { sources.emplace_back(FlattenSource(block.GetRule_flatten_source2())); if (!sources.back()) { - Ctx.IncrementMonCounter("sql_errors", "NoJoinWith"); + Ctx_.IncrementMonCounter("sql_errors", "NoJoinWith"); return nullptr; } } source = BuildEquiJoin(pos, std::move(sources)); for (auto& block: node.GetBlock2()) { if (!JoinOp(source.Get(), block)) { - Ctx.IncrementMonCounter("sql_errors", "NoJoinOp"); + Ctx_.IncrementMonCounter("sql_errors", "NoJoinOp"); return nullptr; } } @@ -2562,16 +2562,16 @@ bool TSqlSelect::SelectTerm(TVector<TNodePtr>& terms, const TRule_result_column& Token(alt.GetToken2()); auto idAsteriskQualify = OptIdPrefixAsStr(alt.GetRule_opt_id_prefix1(), *this); - Ctx.IncrementMonCounter("sql_features", idAsteriskQualify ? "QualifyAsterisk" : "Asterisk"); - terms.push_back(BuildColumn(Ctx.Pos(), "*", idAsteriskQualify)); + Ctx_.IncrementMonCounter("sql_features", idAsteriskQualify ? "QualifyAsterisk" : "Asterisk"); + terms.push_back(BuildColumn(Ctx_.Pos(), "*", idAsteriskQualify)); break; } case TRule_result_column::kAltResultColumn2: { auto alt = node.GetAlt_result_column2(); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); TNodePtr term(expr.Build(alt.GetRule_expr1())); if (!term) { - Ctx.IncrementMonCounter("sql_errors", "NoTerm"); + Ctx_.IncrementMonCounter("sql_errors", "NoTerm"); return false; } if (alt.HasBlock2()) { @@ -2581,7 +2581,7 @@ bool TSqlSelect::SelectTerm(TVector<TNodePtr>& terms, const TRule_result_column& break; } default: - Ctx.IncrementMonCounter("sql_errors", "UnknownResultColumn"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownResultColumn"); AltNotImplemented("result_column", node); return false; } @@ -2593,23 +2593,23 @@ bool TSqlSelect::ValidateSelectColumns(const TVector<TNodePtr>& terms) { TSet<TString> asteriskSources; for (const auto& term: terms) { const auto& label = term->GetLabel(); - if (!Ctx.PragmaAllowDotInAlias && label.find('.') != TString::npos) { - Ctx.Error(term->GetPos()) << "Unable to use '.' in column name. Invalid column name: " << label; + if (!Ctx_.PragmaAllowDotInAlias && label.find('.') != TString::npos) { + Ctx_.Error(term->GetPos()) << "Unable to use '.' in column name. Invalid column name: " << label; return false; } if (!label.empty()) { if (!labels.insert(label).second) { - Ctx.Error(term->GetPos()) << "Unable to use duplicate column names. Collision in name: " << label; + Ctx_.Error(term->GetPos()) << "Unable to use duplicate column names. Collision in name: " << label; return false; } } if (term->IsAsterisk()) { const auto& source = *term->GetSourceName(); if (source.empty() && terms.ysize() > 1) { - Ctx.Error(term->GetPos()) << "Unable to use general '*' with other columns, either specify concrete table like '<table>.*', either specify concrete columns."; + Ctx_.Error(term->GetPos()) << "Unable to use general '*' with other columns, either specify concrete table like '<table>.*', either specify concrete columns."; return false; } else if (!asteriskSources.insert(source).second) { - Ctx.Error(term->GetPos()) << "Unable to use twice same quialified asterisk. Invalid source: " << source; + Ctx_.Error(term->GetPos()) << "Unable to use twice same quialified asterisk. Invalid source: " << source; return false; } } else if (label.empty()) { @@ -2618,7 +2618,7 @@ bool TSqlSelect::ValidateSelectColumns(const TVector<TNodePtr>& terms) { const auto& source = *term->GetSourceName(); const auto usedName = source.empty() ? *column : source + '.' + *column; if (!labels.insert(usedName).second) { - Ctx.Error(term->GetPos()) << "Unable to use duplicate column names. Collision in name: " << usedName; + Ctx_.Error(term->GetPos()) << "Unable to use duplicate column names. Collision in name: " << usedName; return false; } } @@ -2639,19 +2639,19 @@ TSourcePtr TSqlSelect::SingleSource(const TRule_single_source& node) { return nullptr; } - if (!source->Init(Ctx, source.Get())) { + if (!source->Init(Ctx_, source.Get())) { return nullptr; } return source; } else { TTableRef table(TableRefImpl(alt.GetRule_table_ref1())); - TPosition pos(Ctx.Pos()); - Ctx.IncrementMonCounter("sql_select_clusters", table.Cluster); - if (!table.Check(Ctx)) { + TPosition pos(Ctx_.Pos()); + Ctx_.IncrementMonCounter("sql_select_clusters", table.Cluster); + if (!table.Check(Ctx_)) { return nullptr; } - const auto serviceName = to_lower(table.ServiceName(Ctx)); + const auto serviceName = to_lower(table.ServiceName(Ctx_)); const bool stream = serviceName == RtmrProviderName; return BuildTableSource(pos, table, stream); @@ -2660,7 +2660,7 @@ TSourcePtr TSqlSelect::SingleSource(const TRule_single_source& node) { case TRule_single_source::kAltSingleSource2: { const auto& alt = node.GetAlt_single_source2(); Token(alt.GetToken1()); - TSqlSelect innerSelect(Ctx, Mode); + TSqlSelect innerSelect(Ctx_, Mode_); TPosition pos; auto source = innerSelect.Build(alt.GetRule_select_stmt2(), pos); if (!source) { @@ -2670,12 +2670,12 @@ TSourcePtr TSqlSelect::SingleSource(const TRule_single_source& node) { } case TRule_single_source::kAltSingleSource3: { const auto& alt = node.GetAlt_single_source3(); - Ctx.IncrementMonCounter("sql_features", "NamedNodeUseSource"); + Ctx_.IncrementMonCounter("sql_features", "NamedNodeUseSource"); auto named = NamedNodeImpl(alt.GetRule_bind_parameter2(), *this); auto at = alt.HasBlock1(); if (at) { if (alt.HasBlock3()) { - Ctx.Error() << "Subquery must not be used as anonymous table name"; + Ctx_.Error() << "Subquery must not be used as anonymous table name"; return nullptr; } @@ -2684,9 +2684,9 @@ TSourcePtr TSqlSelect::SingleSource(const TRule_single_source& node) { return nullptr; } - auto source = TryMakeSourceFromExpression(Ctx, namedNode, "@"); + auto source = TryMakeSourceFromExpression(Ctx_, namedNode, "@"); if (!source) { - Ctx.Error() << "Cannot infer cluster and table name"; + Ctx_.Error() << "Cannot infer cluster and table name"; return nullptr; } @@ -2694,29 +2694,29 @@ TSourcePtr TSqlSelect::SingleSource(const TRule_single_source& node) { } auto node = GetNamedNode(named); if (!node) { - Ctx.IncrementMonCounter("sql_errors", "NamedNodeSourceError"); + Ctx_.IncrementMonCounter("sql_errors", "NamedNodeSourceError"); return nullptr; } if (alt.HasBlock3()) { TVector<TNodePtr> values; - values.push_back(new TAstAtomNodeImpl(Ctx.Pos(), "Apply", TNodeFlags::Default)); + values.push_back(new TAstAtomNodeImpl(Ctx_.Pos(), "Apply", TNodeFlags::Default)); values.push_back(node); - values.push_back(new TAstAtomNodeImpl(Ctx.Pos(), "world", TNodeFlags::Default)); + values.push_back(new TAstAtomNodeImpl(Ctx_.Pos(), "world", TNodeFlags::Default)); - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); if (alt.GetBlock3().HasBlock2() && !ExprList(sqlExpr, values, alt.GetBlock3().GetBlock2().GetRule_expr_list1())) { return nullptr; } - TNodePtr apply = new TAstListNodeImpl(Ctx.Pos(), std::move(values)); - return BuildNodeSource(Ctx.Pos(), apply); + TNodePtr apply = new TAstListNodeImpl(Ctx_.Pos(), std::move(values)); + return BuildNodeSource(Ctx_.Pos(), apply); } - return BuildInnerSource(Ctx.Pos(), node); + return BuildInnerSource(Ctx_.Pos(), node); } default: AltNotImplemented("single_source", node); - Ctx.IncrementMonCounter("sql_errors", "UnknownSingleSource"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownSingleSource"); return nullptr; } } @@ -2732,7 +2732,7 @@ TSourcePtr TSqlSelect::NamedSingleSource(const TRule_named_single_source& node) } if (node.HasBlock3()) { ESampleMode mode = ESampleMode::Auto; - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); TNodePtr samplingRateNode; TNodePtr samplingSeedNode; const auto& sampleBlock = node.GetBlock3(); @@ -2746,7 +2746,7 @@ TSourcePtr TSqlSelect::NamedSingleSource(const TRule_named_single_source& node) return nullptr; } pos = GetPos(sampleBlock.GetAlt1().GetRule_sample_clause1().GetToken1()); - Ctx.IncrementMonCounter("sql_features", "SampleClause"); + Ctx_.IncrementMonCounter("sql_features", "SampleClause"); } break; case TRule_named_single_source::TBlock3::kAlt2: @@ -2759,8 +2759,8 @@ TSourcePtr TSqlSelect::NamedSingleSource(const TRule_named_single_source& node) } else if (token == "bernoulli") { mode = ESampleMode::Bernoulli; } else { - Ctx.Error(GetPos(modeToken)) << "Unsupported sampling mode: " << token; - Ctx.IncrementMonCounter("sql_errors", "UnsupportedSamplingMode"); + Ctx_.Error(GetPos(modeToken)) << "Unsupported sampling mode: " << token; + Ctx_.IncrementMonCounter("sql_errors", "UnsupportedSamplingMode"); return nullptr; } const auto& tableSampleExpr = tableSampleClause.GetRule_expr4(); @@ -2776,14 +2776,14 @@ TSourcePtr TSqlSelect::NamedSingleSource(const TRule_named_single_source& node) } } pos = GetPos(sampleBlock.GetAlt2().GetRule_tablesample_clause1().GetToken1()); - Ctx.IncrementMonCounter("sql_features", "SampleClause"); + Ctx_.IncrementMonCounter("sql_features", "SampleClause"); } break; default: Y_ABORT("SampleClause: does not corresond to grammar changes"); } - if (!singleSource->SetSamplingOptions(Ctx, pos, mode, samplingRateNode, samplingSeedNode)) { - Ctx.IncrementMonCounter("sql_errors", "IncorrectSampleClause"); + if (!singleSource->SetSamplingOptions(Ctx_, pos, mode, samplingRateNode, samplingSeedNode)) { + Ctx_.IncrementMonCounter("sql_errors", "IncorrectSampleClause"); return nullptr; } } @@ -2794,7 +2794,7 @@ bool TSqlSelect::ColumnName(TVector<TNodePtr>& keys, const TRule_column_name& no const auto sourceName = OptIdPrefixAsStr(node.GetRule_opt_id_prefix1(), *this); const auto columnName = IdOrString(node.GetRule_id_or_string2(), *this); YQL_ENSURE(!columnName.empty()); - keys.push_back(BuildColumn(Ctx.Pos(), columnName, sourceName)); + keys.push_back(BuildColumn(Ctx_.Pos(), columnName, sourceName)); return true; } @@ -2836,7 +2836,7 @@ bool TSqlSelect::NamedColumnList(TVector<TNodePtr>& columnList, const TRule_name bool TSqlSelect::SortSpecification(const TRule_sort_specification& node, TVector<TSortSpecificationPtr>& sortSpecs) { bool asc = true; - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); TNodePtr exprNode = expr.Build(node.GetRule_expr1()); if (!exprNode) { return false; @@ -2846,19 +2846,19 @@ bool TSqlSelect::SortSpecification(const TRule_sort_specification& node, TVector Token(token); switch (token.GetId()) { case SQLLexerTokens::TOKEN_ASC: - Ctx.IncrementMonCounter("sql_features", "OrderByAsc"); + Ctx_.IncrementMonCounter("sql_features", "OrderByAsc"); break; case SQLLexerTokens::TOKEN_DESC: asc = false; - Ctx.IncrementMonCounter("sql_features", "OrderByDesc"); + Ctx_.IncrementMonCounter("sql_features", "OrderByDesc"); break; default: - Ctx.IncrementMonCounter("sql_errors", "UnknownOrderBy"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownOrderBy"); Error() << "Unsupported direction token: " << token.GetId(); return false; } } else { - Ctx.IncrementMonCounter("sql_features", "OrderByDefault"); + Ctx_.IncrementMonCounter("sql_features", "OrderByDefault"); } auto sortSpecPtr = MakeIntrusive<TSortSpecification>(); sortSpecPtr->OrderExpr = exprNode; @@ -2885,7 +2885,7 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS // (WHERE expr)? (HAVING expr)?)? Token(node.GetToken1()); - TPosition startPos(Ctx.Pos()); + TPosition startPos(Ctx_.Pos()); const bool stream = node.HasBlock2(); if (!selectPos) { @@ -2915,27 +2915,27 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS const auto& block5 = node.GetBlock5(); if (block5.HasBlock4()) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); TNodePtr where = expr.Build(block5.GetBlock4().GetRule_expr2()); - if (!where || !source->AddFilter(Ctx, where)) { + if (!where || !source->AddFilter(Ctx_, where)) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", "ProcessWhere"); + Ctx_.IncrementMonCounter("sql_features", "ProcessWhere"); } else { - Ctx.IncrementMonCounter("sql_features", stream ? "ProcessStream" : "Process"); + Ctx_.IncrementMonCounter("sql_features", stream ? "ProcessStream" : "Process"); } if (block5.HasBlock5()) { - Ctx.Error() << "PROCESS does not allow HAVING yet! You may request it on yql@ maillist."; + Ctx_.Error() << "PROCESS does not allow HAVING yet! You may request it on yql@ maillist."; return nullptr; } /// \todo other solution - PushNamedNode(TArgPlaceholderNode::ProcessRows, BuildArgPlaceholder(Ctx.Pos(), TArgPlaceholderNode::ProcessRows)); - PushNamedNode(TArgPlaceholderNode::ProcessRow, BuildArgPlaceholder(Ctx.Pos(), TArgPlaceholderNode::ProcessRow)); + PushNamedNode(TArgPlaceholderNode::ProcessRows, BuildArgPlaceholder(Ctx_.Pos(), TArgPlaceholderNode::ProcessRows)); + PushNamedNode(TArgPlaceholderNode::ProcessRow, BuildArgPlaceholder(Ctx_.Pos(), TArgPlaceholderNode::ProcessRow)); bool listCall = false; - TSqlCallExpr call(Ctx, Mode); + TSqlCallExpr call(Ctx_, Mode_); bool initRet = call.Init(block5.GetRule_call_expr2()); if (initRet) { call.IncCounters(); @@ -2956,7 +2956,7 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS auto name = placeholder->GetName(); if (name == TArgPlaceholderNode::ProcessRows) { if (listCall) { - Ctx.Error(arg->GetPos()) << "Only single instance of " << name << " is allowed."; + Ctx_.Error(arg->GetPos()) << "Only single instance of " << name << " is allowed."; return nullptr; } listCall = true; @@ -2988,7 +2988,7 @@ TSourcePtr TSqlSelect::ReduceCore(const TRule_reduce_core& node, const TWriteSet // ON column_list USING ALL? call_expr (AS id_or_string)? // (WHERE expr)? (HAVING expr)? Token(node.GetToken1()); - TPosition startPos(Ctx.Pos()); + TPosition startPos(Ctx_.Pos()); if (!selectPos) { selectPos = startPos; } @@ -3022,28 +3022,28 @@ TSourcePtr TSqlSelect::ReduceCore(const TRule_reduce_core& node, const TWriteSet } if (node.HasBlock11()) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); TNodePtr where = expr.Build(node.GetBlock11().GetRule_expr2()); - if (!where || !source->AddFilter(Ctx, where)) { + if (!where || !source->AddFilter(Ctx_, where)) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", "ReduceWhere"); + Ctx_.IncrementMonCounter("sql_features", "ReduceWhere"); } else { - Ctx.IncrementMonCounter("sql_features", "Reduce"); + Ctx_.IncrementMonCounter("sql_features", "Reduce"); } TNodePtr having; if (node.HasBlock12()) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); having = expr.Build(node.GetBlock12().GetRule_expr2()); if (!having) { return nullptr; } } - PushNamedNode(TArgPlaceholderNode::ProcessRow, BuildColumn(Ctx.Pos(), "*")); + PushNamedNode(TArgPlaceholderNode::ProcessRow, BuildColumn(Ctx_.Pos(), "*")); - TSqlCallExpr call(Ctx, Mode); + TSqlCallExpr call(Ctx_, Mode_); bool initRet = call.Init(node.GetRule_call_expr9()); if (initRet) { call.IncCounters(); @@ -3080,27 +3080,27 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet Token(node.GetToken2()); } - TPosition startPos(Ctx.Pos()); + TPosition startPos(Ctx_.Pos()); if (!selectPos) { - selectPos = Ctx.Pos(); + selectPos = Ctx_.Pos(); } const bool stream = node.HasBlock3(); const bool distinct = IsDistinctOptSet(node.GetRule_opt_set_quantifier4()); if (distinct) { - Ctx.IncrementMonCounter("sql_features", "DistinctInSelect"); + Ctx_.IncrementMonCounter("sql_features", "DistinctInSelect"); } TSourcePtr source(BuildFakeSource(selectPos)); if (node.HasBlock1() && node.HasBlock8()) { Token(node.GetBlock8().GetToken1()); - Ctx.IncrementMonCounter("sql_errors", "DoubleFrom"); - Ctx.Error() << "Only one FROM clause is allowed"; + Ctx_.IncrementMonCounter("sql_errors", "DoubleFrom"); + Ctx_.Error() << "Only one FROM clause is allowed"; return nullptr; } if (node.HasBlock1()) { source = JoinSource(node.GetBlock1().GetRule_join_source2()); - Ctx.IncrementMonCounter("sql_features", "FromInFront"); + Ctx_.IncrementMonCounter("sql_features", "FromInFront"); } else if (node.HasBlock8()) { source = JoinSource(node.GetBlock8().GetRule_join_source2()); } @@ -3117,25 +3117,25 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet if (node.HasBlock9()) { auto block = node.GetBlock9(); Token(block.GetToken1()); - TPosition pos(Ctx.Pos()); - TSqlExpression expr(Ctx, Mode); + TPosition pos(Ctx_.Pos()); + TSqlExpression expr(Ctx_, Mode_); TNodePtr where = expr.WrapExprShortcuts(expr.Build(block.GetRule_expr2())); if (!where) { - Ctx.IncrementMonCounter("sql_errors", "WhereInvalid"); + Ctx_.IncrementMonCounter("sql_errors", "WhereInvalid"); return nullptr; } - if (!source->AddFilter(Ctx, where)) { - Ctx.IncrementMonCounter("sql_errors", "WhereNotSupportedBySource"); + if (!source->AddFilter(Ctx_, where)) { + Ctx_.IncrementMonCounter("sql_errors", "WhereNotSupportedBySource"); return nullptr; } - Ctx.IncrementMonCounter("sql_features", "Where"); + Ctx_.IncrementMonCounter("sql_features", "Where"); } /// \todo merge gtoupByExpr and groupBy in one TVector<TNodePtr> groupByExpr, groupBy; THoppingWindowSpecPtr hoppingWindowSpec; if (node.HasBlock10()) { - TGroupByClause clause(Ctx, Mode); + TGroupByClause clause(Ctx_, Mode_); if (!clause.Build(node.GetBlock10().GetRule_group_by_clause1(), stream)) { return nullptr; } @@ -3150,36 +3150,36 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet TNodePtr having; if (node.HasBlock11()) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); having = expr.Build(node.GetBlock11().GetRule_expr2()); if (!having) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", "Having"); + Ctx_.IncrementMonCounter("sql_features", "Having"); } TWinSpecs windowSpec; if (node.HasBlock12()) { if (stream) { - Ctx.Error() << "WINDOW is not allowed in streaming queries"; + Ctx_.Error() << "WINDOW is not allowed in streaming queries"; return nullptr; } if (!WindowClause(node.GetBlock12().GetRule_window_clause1(), windowSpec)) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", "WindowClause"); + Ctx_.IncrementMonCounter("sql_features", "WindowClause"); } TVector<TSortSpecificationPtr> orderBy; if (node.HasBlock13()) { if (stream) { - Ctx.Error() << "ORDER BY is not allowed in streaming queries"; + Ctx_.Error() << "ORDER BY is not allowed in streaming queries"; return nullptr; } if (!OrderByClause(node.GetBlock13().GetRule_order_by_clause1(), orderBy)) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", IsColumnsOnly(orderBy) ? "OrderBy" : "OrderByExpr"); + Ctx_.IncrementMonCounter("sql_features", IsColumnsOnly(orderBy) ? "OrderBy" : "OrderByExpr"); } TVector<TNodePtr> terms; if (!SelectTerm(terms, node.GetRule_result_column5())) { @@ -3193,7 +3193,7 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet if (!ValidateSelectColumns(terms)) { return nullptr; } - return BuildSelectCore(Ctx, startPos, std::move(source), groupByExpr, groupBy, orderBy, having, + return BuildSelectCore(Ctx_, startPos, std::move(source), groupByExpr, groupBy, orderBy, having, std::move(windowSpec), hoppingWindowSpec, std::move(terms), distinct, std::move(without), stream, settings); } @@ -3201,23 +3201,23 @@ bool TSqlSelect::FrameStart(const TRule_window_frame_start& rule, TNodePtr& node switch (rule.Alt_case()) { case TRule_window_frame_start::kAltWindowFrameStart1: if (!beginBound) { - Ctx.Error() << "Unable to use UNBOUNDED PRECEDING after BETWEEN ... AND"; + Ctx_.Error() << "Unable to use UNBOUNDED PRECEDING after BETWEEN ... AND"; return false; } - node = BuildLiteralVoid(Ctx.Pos()); + node = BuildLiteralVoid(Ctx_.Pos()); return true; case TRule_window_frame_start::kAltWindowFrameStart2: if (beginBound) { - Ctx.Error() << "Unable to use FOLLOWING before AND in BETWEEN ... AND syntax"; + Ctx_.Error() << "Unable to use FOLLOWING before AND in BETWEEN ... AND syntax"; return false; } { auto precedingRule = rule.GetAlt_window_frame_start2().GetRule_window_frame_preceding1(); - node = Literal(Ctx, precedingRule.GetRule_unsigned_number1()); + node = Literal(Ctx_, precedingRule.GetRule_unsigned_number1()); return true; } case TRule_window_frame_start::kAltWindowFrameStart3: - return new TLiteralNumberNode<i32>(Ctx.Pos(), "Int32", ToString("0")); + return new TLiteralNumberNode<i32>(Ctx_.Pos(), "Int32", ToString("0")); return true; default: Y_ABORT("FrameClause: frame start not corresond to grammar changes"); @@ -3230,19 +3230,19 @@ bool TSqlSelect::FrameBound(const TRule_window_frame_bound& rule, TNodePtr& node return FrameStart(rule.GetAlt_window_frame_bound1().GetRule_window_frame_start1(), node, beginBound); case TRule_window_frame_bound::kAltWindowFrameBound2: if (beginBound) { - Ctx.Error() << "Unable to use UNBOUNDED FOLLOWING before AND"; + Ctx_.Error() << "Unable to use UNBOUNDED FOLLOWING before AND"; return false; } - node = BuildLiteralVoid(Ctx.Pos()); + node = BuildLiteralVoid(Ctx_.Pos()); return true; case TRule_window_frame_bound::kAltWindowFrameBound3: if (beginBound) { - Ctx.Error() << "Unable to use FOLLOWING before AND"; + Ctx_.Error() << "Unable to use FOLLOWING before AND"; return false; } { auto followRule = rule.GetAlt_window_frame_bound3().GetRule_window_frame_following1(); - node = Literal(Ctx, followRule.GetRule_unsigned_number1()); + node = Literal(Ctx_, followRule.GetRule_unsigned_number1()); return true; } default: @@ -3258,7 +3258,7 @@ bool TSqlSelect::FrameClause(const TRule_window_frame_clause& rule, TMaybe<TFram } else if (frameUnitStr == "range") { frameSpec.FrameType = EFrameType::FrameByRange; } else { - Ctx.Error() << "Unknown frame type in window specification: " << frameUnitStr; + Ctx_.Error() << "Unknown frame type in window specification: " << frameUnitStr; return false; } auto frameExtent = rule.GetRule_window_frame_extent2(); @@ -3306,7 +3306,7 @@ bool TSqlSelect::FrameClause(const TRule_window_frame_clause& rule, TMaybe<TFram TWindowSpecificationPtr TSqlSelect::WindowSpecification(const TRule_window_specification_details& rule) { TWindowSpecificationPtr winSpecPtr = new TWindowSpecification; if (rule.HasBlock1()) { - Ctx.Error() << "Existing window name is not supported in window specification yet!"; + Ctx_.Error() << "Existing window name is not supported in window specification yet!"; return {}; } if (rule.HasBlock2()) { @@ -3330,7 +3330,7 @@ TWindowSpecificationPtr TSqlSelect::WindowSpecification(const TRule_window_speci bool TSqlSelect::WindowDefenition(const TRule_window_definition& rule, TWinSpecs& winSpecs) { const TString windowName = Id(rule.GetRule_new_window_name1().GetRule_window_name1().GetRule_id1(), *this); if (winSpecs.contains(windowName)) { - Ctx.Error() << "Unable to declare window with same name: " << windowName; + Ctx_.Error() << "Unable to declare window with same name: " << windowName; return false; } auto windowSpec = WindowSpecification(rule.GetRule_window_specification3().GetRule_window_specification_details2()); @@ -3361,20 +3361,20 @@ bool TSqlSelect::OrderByClause(const TRule_order_by_clause& node, TVector<TSortS bool TGroupByClause::Build(const TRule_group_by_clause& node, bool stream) { const bool distinct = IsDistinctOptSet(node.GetRule_opt_set_quantifier3()); if (distinct) { - Ctx.Error() << "DISTINCT is not supported in GROUP BY clause yet!"; - Ctx.IncrementMonCounter("sql_errors", "DistinctInGroupByNotSupported"); + Ctx_.Error() << "DISTINCT is not supported in GROUP BY clause yet!"; + Ctx_.IncrementMonCounter("sql_errors", "DistinctInGroupByNotSupported"); return false; } if (!ParseList(node.GetRule_grouping_element_list4())) { return false; } ResolveGroupByAndGrouping(); - if (stream && !HoppingWindowSpec) { - Ctx.Error() << "Streaming group by query must have a hopping window specification."; + if (stream && !HoppingWindowSpec_) { + Ctx_.Error() << "Streaming group by query must have a hopping window specification."; return false; } - if (!stream && HoppingWindowSpec) { - Ctx.Error() << "Hopping window specification is not supported in a non-streaming query."; + if (!stream && HoppingWindowSpec_) { + Ctx_.Error() << "Hopping window specification is not supported in a non-streaming query."; return false; } return true; @@ -3393,38 +3393,38 @@ bool TGroupByClause::ParseList(const TRule_grouping_element_list& groupingListNo } void TGroupByClause::SetFeatures(const TString& field) const { - Ctx.IncrementMonCounter(field, "GroupBy"); + Ctx_.IncrementMonCounter(field, "GroupBy"); const auto& features = Features(); if (features.Test(EGroupByFeatures::Ordinary)) { - Ctx.IncrementMonCounter(field, "GroupByOrdinary"); + Ctx_.IncrementMonCounter(field, "GroupByOrdinary"); } if (features.Test(EGroupByFeatures::Expression)) { - Ctx.IncrementMonCounter(field, "GroupByExpression"); + Ctx_.IncrementMonCounter(field, "GroupByExpression"); } if (features.Test(EGroupByFeatures::Rollup)) { - Ctx.IncrementMonCounter(field, "GroupByRollup"); + Ctx_.IncrementMonCounter(field, "GroupByRollup"); } if (features.Test(EGroupByFeatures::Cube)) { - Ctx.IncrementMonCounter(field, "GroupByCube"); + Ctx_.IncrementMonCounter(field, "GroupByCube"); } if (features.Test(EGroupByFeatures::GroupingSet)) { - Ctx.IncrementMonCounter(field, "GroupByGroupingSet"); + Ctx_.IncrementMonCounter(field, "GroupByGroupingSet"); } if (features.Test(EGroupByFeatures::Empty)) { - Ctx.IncrementMonCounter(field, "GroupByEmpty"); + Ctx_.IncrementMonCounter(field, "GroupByEmpty"); } } TVector<TNodePtr>& TGroupByClause::Content() { - return GroupBySet; + return GroupBySet_; } TMap<TString, TNodePtr>& TGroupByClause::Aliases() { - return GroupSetContext->NodeAliases; + return GroupSetContext_->NodeAliases; } THoppingWindowSpecPtr TGroupByClause::GetHoppingWindow() { - return HoppingWindowSpec; + return HoppingWindowSpec_; } TVector<TNodePtr> TGroupByClause::MultiplyGroupingSets(const TVector<TNodePtr>& lhs, const TVector<TNodePtr>& rhs) const { @@ -3437,37 +3437,37 @@ TVector<TNodePtr> TGroupByClause::MultiplyGroupingSets(const TVector<TNodePtr>& auto rightPtr = rightNode->ContentListPtr(); YQL_ENSURE(rightPtr, "Unable to multiply grouping sets"); mulItem.insert(mulItem.end(), rightPtr->begin(), rightPtr->end()); - content.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(mulItem))); + content.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(mulItem))); } } return content; } void TGroupByClause::ResolveGroupByAndGrouping() { - auto listPos = std::find_if(GroupBySet.begin(), GroupBySet.end(), [](const TNodePtr& node) { + auto listPos = std::find_if(GroupBySet_.begin(), GroupBySet_.end(), [](const TNodePtr& node) { return node->ContentListPtr(); }); - if (listPos == GroupBySet.end()) { + if (listPos == GroupBySet_.end()) { return; } auto curContent = *(*listPos)->ContentListPtr(); - if (listPos != GroupBySet.begin()) { - TVector<TNodePtr> emulate(GroupBySet.begin(), listPos); - TVector<TNodePtr> emulateContent(1, BuildListOfNamedNodes(Ctx.Pos(), std::move(emulate))); + if (listPos != GroupBySet_.begin()) { + TVector<TNodePtr> emulate(GroupBySet_.begin(), listPos); + TVector<TNodePtr> emulateContent(1, BuildListOfNamedNodes(Ctx_.Pos(), std::move(emulate))); curContent = MultiplyGroupingSets(emulateContent, curContent); } - for (++listPos; listPos != GroupBySet.end(); ++listPos) { + for (++listPos; listPos != GroupBySet_.end(); ++listPos) { auto newElem = (*listPos)->ContentListPtr(); if (newElem) { curContent = MultiplyGroupingSets(curContent, *newElem); } else { TVector<TNodePtr> emulate(1, *listPos); - TVector<TNodePtr> emulateContent(1, BuildListOfNamedNodes(Ctx.Pos(), std::move(emulate))); + TVector<TNodePtr> emulateContent(1, BuildListOfNamedNodes(Ctx_.Pos(), std::move(emulate))); curContent = MultiplyGroupingSets(curContent, emulateContent); } } - TVector<TNodePtr> result(1, BuildListOfNamedNodes(Ctx.Pos(), std::move(curContent))); - std::swap(result, GroupBySet); + TVector<TNodePtr> result(1, BuildListOfNamedNodes(Ctx_.Pos(), std::move(curContent))); + std::swap(result, GroupBySet_); } bool TGroupByClause::GroupingElement(const TRule_grouping_element& node) { @@ -3481,7 +3481,7 @@ bool TGroupByClause::GroupingElement(const TRule_grouping_element& node) { Features().Set(EGroupByFeatures::Ordinary); break; case TRule_grouping_element::kAltGroupingElement2: { - TGroupByClause subClause(Ctx, Mode, GroupSetContext); + TGroupByClause subClause(Ctx_, Mode_, GroupSetContext_); if (!subClause.OrdinaryGroupingSetList(node.GetAlt_grouping_element2().GetRule_rollup_list1().GetRule_ordinary_grouping_set_list3())) { return false; } @@ -3492,16 +3492,16 @@ bool TGroupByClause::GroupingElement(const TRule_grouping_element& node) { TVector<TNodePtr> collection; for (auto limit = content.end(), begin = content.begin(); limit != begin; --limit) { TVector<TNodePtr> grouping(begin, limit); - collection.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(grouping))); + collection.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(grouping))); } - collection.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(emptyContent))); - GroupBySet.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(collection))); - Ctx.IncrementMonCounter("sql_features", TStringBuilder() << "GroupByRollup" << content.size()); + collection.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(emptyContent))); + GroupBySet_.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(collection))); + Ctx_.IncrementMonCounter("sql_features", TStringBuilder() << "GroupByRollup" << content.size()); Features().Set(EGroupByFeatures::Rollup); break; } case TRule_grouping_element::kAltGroupingElement3: { - TGroupByClause subClause(Ctx, Mode, GroupSetContext); + TGroupByClause subClause(Ctx_, Mode_, GroupSetContext_); if (!subClause.OrdinaryGroupingSetList(node.GetAlt_grouping_element3().GetRule_cube_list1().GetRule_ordinary_grouping_set_list3())) { return false; } @@ -3509,8 +3509,8 @@ bool TGroupByClause::GroupingElement(const TRule_grouping_element& node) { if (!IsNodeColumnsOrNamedExpression(content, "CUBE")) { return false; } - if (content.size() > Ctx.PragmaGroupByCubeLimit) { - Ctx.Error() << "GROUP BY CUBE is allowed only for " << Ctx.PragmaGroupByCubeLimit << " columns, but you use " << content.size(); + if (content.size() > Ctx_.PragmaGroupByCubeLimit) { + Ctx_.Error() << "GROUP BY CUBE is allowed only for " << Ctx_.PragmaGroupByCubeLimit << " columns, but you use " << content.size(); return false; } TVector<TNodePtr> collection; @@ -3521,17 +3521,17 @@ bool TGroupByClause::GroupingElement(const TRule_grouping_element& node) { grouping.push_back(content[content.size() - index - 1]); } } - collection.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(grouping))); + collection.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(grouping))); } - collection.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(emptyContent))); - GroupBySet.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(collection))); - Ctx.IncrementMonCounter("sql_features", TStringBuilder() << "GroupByCube" << content.size()); + collection.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(emptyContent))); + GroupBySet_.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(collection))); + Ctx_.IncrementMonCounter("sql_features", TStringBuilder() << "GroupByCube" << content.size()); Features().Set(EGroupByFeatures::Cube); break; } case TRule_grouping_element::kAltGroupingElement4: { auto listNode = node.GetAlt_grouping_element4().GetRule_grouping_sets_specification1().GetRule_grouping_element_list4(); - TGroupByClause subClause(Ctx, Mode, GroupSetContext); + TGroupByClause subClause(Ctx_, Mode_, GroupSetContext_); if (!subClause.ParseList(listNode)) { return false; } @@ -3553,10 +3553,10 @@ bool TGroupByClause::GroupingElement(const TRule_grouping_element& node) { } } else { TVector<TNodePtr> elemList(1, std::move(elem)); - collection.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(elemList))); + collection.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(elemList))); } } - GroupBySet.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(collection))); + GroupBySet_.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(collection))); Features().Set(EGroupByFeatures::GroupingSet); break; } @@ -3592,8 +3592,8 @@ bool TGroupByClause::OrdinaryGroupingSet(const TRule_ordinary_grouping_set& node auto contentPtr = namedExprNode->ContentListPtr(); if (contentPtr) { if (nodeLabel && (contentPtr->size() != 1 || contentPtr->front()->GetLabel())) { - Ctx.Error() << "Unable to use aliases for list of named expressions"; - Ctx.IncrementMonCounter("sql_errors", "GroupByAliasForListOfExpressions"); + Ctx_.Error() << "Unable to use aliases for list of named expressions"; + Ctx_.IncrementMonCounter("sql_errors", "GroupByAliasForListOfExpressions"); return false; } for (auto& content: *contentPtr) { @@ -3626,7 +3626,7 @@ bool TGroupByClause::OrdinaryGroupingSet(const TRule_ordinary_grouping_set& node namedExprNode = BuildColumn(namedExprNode->GetPos(), nodeLabel); } } - GroupBySet.emplace_back(std::move(namedExprNode)); + GroupBySet_.emplace_back(std::move(namedExprNode)); return true; } @@ -3643,20 +3643,20 @@ bool TGroupByClause::OrdinaryGroupingSetList(const TRule_ordinary_grouping_set_l } bool TGroupByClause::HoppingWindow(const TRule_hopping_window_specification& node) { - if (HoppingWindowSpec) { - Ctx.Error() << "Duplicate hopping window specification."; + if (HoppingWindowSpec_) { + Ctx_.Error() << "Duplicate hopping window specification."; return false; } - HoppingWindowSpec = new THoppingWindowSpec; + HoppingWindowSpec_ = new THoppingWindowSpec; { - TSqlExpression expr(Ctx, Mode); - HoppingWindowSpec->TimeExtractor = expr.Build(node.GetRule_expr3()); - if (!HoppingWindowSpec->TimeExtractor) { + TSqlExpression expr(Ctx_, Mode_); + HoppingWindowSpec_->TimeExtractor = expr.Build(node.GetRule_expr3()); + if (!HoppingWindowSpec_->TimeExtractor) { return false; } } auto processIntervalParam = [&] (const TRule_expr& rule) -> TNodePtr { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); auto node = expr.Build(rule); if (!node) { return nullptr; @@ -3664,41 +3664,41 @@ bool TGroupByClause::HoppingWindow(const TRule_hopping_window_specification& nod auto literal = node->GetLiteral("String"); if (!literal) { - return new TAstListNodeImpl(Ctx.Pos(), { - new TAstAtomNodeImpl(Ctx.Pos(), "EvaluateExpr", TNodeFlags::Default), + return new TAstListNodeImpl(Ctx_.Pos(), { + new TAstAtomNodeImpl(Ctx_.Pos(), "EvaluateExpr", TNodeFlags::Default), node }); } const auto out = NKikimr::NMiniKQL::ValueFromString(NKikimr::NUdf::EDataSlot::Interval, *literal); if (!out) { - Ctx.Error(node->GetPos()) << "Expected interval in ISO 8601 format"; + Ctx_.Error(node->GetPos()) << "Expected interval in ISO 8601 format"; return nullptr; } if ('T' == literal->back()) { - Ctx.Warning(node->GetPos(), TIssuesIds::YQL_DEPRECATED_INTERVAL_CONSTANT) << "Time prefix 'T' at end of interval contant"; + Ctx_.Warning(node->GetPos(), TIssuesIds::YQL_DEPRECATED_INTERVAL_CONSTANT) << "Time prefix 'T' at end of interval contant"; } - return new TAstListNodeImpl(Ctx.Pos(), { - new TAstAtomNodeImpl(Ctx.Pos(), "Interval", TNodeFlags::Default), - new TAstListNodeImpl(Ctx.Pos(), { - new TAstAtomNodeImpl(Ctx.Pos(), "quote", TNodeFlags::Default), - new TAstAtomNodeImpl(Ctx.Pos(), ToString(out.Get<i64>()), TNodeFlags::Default) + return new TAstListNodeImpl(Ctx_.Pos(), { + new TAstAtomNodeImpl(Ctx_.Pos(), "Interval", TNodeFlags::Default), + new TAstListNodeImpl(Ctx_.Pos(), { + new TAstAtomNodeImpl(Ctx_.Pos(), "quote", TNodeFlags::Default), + new TAstAtomNodeImpl(Ctx_.Pos(), ToString(out.Get<i64>()), TNodeFlags::Default) }) }); }; - HoppingWindowSpec->Hop = processIntervalParam(node.GetRule_expr5()); - if (!HoppingWindowSpec->Hop) { + HoppingWindowSpec_->Hop = processIntervalParam(node.GetRule_expr5()); + if (!HoppingWindowSpec_->Hop) { return false; } - HoppingWindowSpec->Interval = processIntervalParam(node.GetRule_expr7()); - if (!HoppingWindowSpec->Interval) { + HoppingWindowSpec_->Interval = processIntervalParam(node.GetRule_expr7()); + if (!HoppingWindowSpec_->Interval) { return false; } - HoppingWindowSpec->Delay = processIntervalParam(node.GetRule_expr9()); - if (!HoppingWindowSpec->Delay) { + HoppingWindowSpec_->Delay = processIntervalParam(node.GetRule_expr9()); + if (!HoppingWindowSpec_->Delay) { return false; } @@ -3708,8 +3708,8 @@ bool TGroupByClause::HoppingWindow(const TRule_hopping_window_specification& nod bool TGroupByClause::IsNodeColumnsOrNamedExpression(const TVector<TNodePtr>& content, const TString& construction) const { for (const auto& node: content) { if (IsAutogenerated(node->GetColumnName())) { - Ctx.Error() << "You should use in " << construction << " either expression with required alias either column name or used alias."; - Ctx.IncrementMonCounter("sql_errors", "GroupBySetNoAliasOrColumn"); + Ctx_.Error() << "You should use in " << construction << " either expression with required alias either column name or used alias."; + Ctx_.IncrementMonCounter("sql_errors", "GroupBySetNoAliasOrColumn"); return false; } } @@ -3717,17 +3717,17 @@ bool TGroupByClause::IsNodeColumnsOrNamedExpression(const TVector<TNodePtr>& con } TGroupByClause::TGroupingSetFeatures& TGroupByClause::Features() { - return GroupSetContext->GroupFeatures; + return GroupSetContext_->GroupFeatures; } const TGroupByClause::TGroupingSetFeatures& TGroupByClause::Features() const { - return GroupSetContext->GroupFeatures; + return GroupSetContext_->GroupFeatures; } bool TGroupByClause::AddAlias(const TString& label, const TNodePtr& node) { if (Aliases().contains(label)) { - Ctx.Error() << "Duplicated aliases not allowed"; - Ctx.IncrementMonCounter("sql_errors", "GroupByDuplicateAliases"); + Ctx_.Error() << "Duplicated aliases not allowed"; + Ctx_.IncrementMonCounter("sql_errors", "GroupByDuplicateAliases"); return false; } Aliases().emplace(label, node); @@ -3735,7 +3735,7 @@ bool TGroupByClause::AddAlias(const TString& label, const TNodePtr& node) { } TString TGroupByClause::GenerateGroupByExprName() { - return TStringBuilder() << AutogenerateNamePrefix << GroupSetContext->UnnamedCount++; + return TStringBuilder() << AutogenerateNamePrefix << GroupSetContext_->UnnamedCount++; } bool TGroupByClause::IsAutogenerated(const TString* name) const { @@ -3747,16 +3747,16 @@ TSourcePtr TSqlSelect::SelectKind(const TRule_select_kind_partial& node, TPositi if (!source) { return {}; } - TPosition startPos(Ctx.Pos()); + TPosition startPos(Ctx_.Pos()); /// LIMIT INTEGER block TNodePtr skipTake; if (node.HasBlock2()) { auto block = node.GetBlock2(); Token(block.GetToken1()); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); - TSqlExpression takeExpr(Ctx, Mode); + TSqlExpression takeExpr(Ctx_, Mode_); auto take = takeExpr.Build(block.GetRule_expr2()); if (!take) { return{}; @@ -3764,7 +3764,7 @@ TSourcePtr TSqlSelect::SelectKind(const TRule_select_kind_partial& node, TPositi TNodePtr skip; if (block.HasBlock3()) { - TSqlExpression skipExpr(Ctx, Mode); + TSqlExpression skipExpr(Ctx_, Mode_); skip = skipExpr.Build(block.GetBlock3().GetRule_expr2()); if (!skip) { return {}; @@ -3772,13 +3772,13 @@ TSourcePtr TSqlSelect::SelectKind(const TRule_select_kind_partial& node, TPositi if (Token(block.GetBlock3().GetToken1()) == ",") { // LIMIT skip, take skip.Swap(take); - Ctx.IncrementMonCounter("sql_features", "LimitSkipTake"); + Ctx_.IncrementMonCounter("sql_features", "LimitSkipTake"); } else { - Ctx.IncrementMonCounter("sql_features", "LimitOffset"); + Ctx_.IncrementMonCounter("sql_features", "LimitOffset"); } } skipTake = BuildSkipTake(pos, skip, take); - Ctx.IncrementMonCounter("sql_features", "Limit"); + Ctx_.IncrementMonCounter("sql_features", "Limit"); } return BuildSelect(startPos, std::move(source), skipTake); } @@ -3786,18 +3786,18 @@ TSourcePtr TSqlSelect::SelectKind(const TRule_select_kind_partial& node, TPositi TSourcePtr TSqlSelect::SelectKind(const TRule_select_kind& node, TPosition& selectPos) { const bool discard = node.HasBlock1(); const bool hasLabel = node.HasBlock3(); - if ((discard || hasLabel) && (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW || Mode == NSQLTranslation::ESqlMode::SUBQUERY)) { - Ctx.Error() << "DISCARD and INTO RESULT are not allowed in current mode"; + if ((discard || hasLabel) && (Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW || Mode_ == NSQLTranslation::ESqlMode::SUBQUERY)) { + Ctx_.Error() << "DISCARD and INTO RESULT are not allowed in current mode"; return {}; } if (discard && hasLabel) { - Ctx.Error() << "DISCARD and INTO RESULT cannot be used at the same time"; + Ctx_.Error() << "DISCARD and INTO RESULT cannot be used at the same time"; return {}; } if (discard && !selectPos) { - selectPos = Ctx.TokenPosition(node.GetBlock1().GetToken1()); + selectPos = Ctx_.TokenPosition(node.GetBlock1().GetToken1()); } TWriteSettings settings; @@ -3851,7 +3851,7 @@ TSourcePtr TSqlSelect::Build(const TRule_select_stmt& node, TPosition& selectPos const bool isUnionAll = b.GetRule_select_op1().GetAlt_select_op1().HasBlock2(); if (!isUnionAll) { Token(b.GetRule_select_op1().GetAlt_select_op1().GetToken1()); - Ctx.Error() << "UNION without quantifier ALL is not supported yet. Did you mean UNION ALL?"; + Ctx_.Error() << "UNION without quantifier ALL is not supported yet. Did you mean UNION ALL?"; return nullptr; } else { sources.emplace_back(std::move(next)); @@ -3859,7 +3859,7 @@ TSourcePtr TSqlSelect::Build(const TRule_select_stmt& node, TPosition& selectPos break; } default: - Ctx.Error() << "INTERSECT and EXCEPT are not implemented yet"; + Ctx_.Error() << "INTERSECT and EXCEPT are not implemented yet"; return nullptr; } } @@ -3898,22 +3898,22 @@ TSourcePtr TSqlIntoValues::Build(const TRule_into_values_source& node, const TSt return ValuesSource(alt.GetRule_values_source2(), columnsHint, operationName); } default: - Ctx.IncrementMonCounter("sql_errors", "DefaultValuesOrOther"); + Ctx_.IncrementMonCounter("sql_errors", "DefaultValuesOrOther"); AltNotImplemented("into_values_source", node); return nullptr; } } bool TSqlIntoValues::BuildValuesRow(const TRule_values_source_row& inRow, TVector<TNodePtr>& outRow){ - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); return ExprList(sqlExpr, outRow, inRow.GetRule_expr_list2()); } TSourcePtr TSqlIntoValues::ValuesSource(const TRule_values_source& node, TVector<TString>& columnsHint, const TString& operationName) { - Ctx.IncrementMonCounter("sql_features", "ValuesSource"); - TPosition pos(Ctx.Pos()); + Ctx_.IncrementMonCounter("sql_features", "ValuesSource"); + TPosition pos(Ctx_.Pos()); switch (node.Alt_case()) { case TRule_values_source::kAltValuesSource1: { TVector<TVector<TNodePtr>> rows {{}}; @@ -3933,7 +3933,7 @@ TSourcePtr TSqlIntoValues::ValuesSource(const TRule_values_source& node, TVector return BuildWriteValues(pos, operationName, columnsHint, rows); } case TRule_values_source::kAltValuesSource2: { - TSqlSelect select(Ctx, Mode); + TSqlSelect select(Ctx_, Mode_); TPosition selectPos; auto source = select.Build(node.GetAlt_values_source2().GetRule_select_stmt1(), selectPos); if (!source) { @@ -3942,7 +3942,7 @@ TSourcePtr TSqlIntoValues::ValuesSource(const TRule_values_source& node, TVector return BuildWriteValues(pos, "UPDATE", columnsHint, std::move(source)); } default: - Ctx.IncrementMonCounter("sql_errors", "UnknownValuesSource"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownValuesSource"); AltNotImplemented("values_source", node); return nullptr; } @@ -3964,8 +3964,8 @@ private: bool ValidateServiceName(const TRule_into_table_stmt& node, const TTableRef& table, ESQLWriteColumnMode mode, const TPosition& pos); - TString SqlIntoModeStr; - TString SqlIntoUserModeStr; + TString SqlIntoModeStr_; + TString SqlIntoUserModeStr_; }; TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { @@ -4038,23 +4038,23 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { modeStrings.push_back("Into"); userModeStrings.push_back("INTO"); - SqlIntoModeStr = JoinRange("", modeStrings.begin(), modeStrings.end()); - SqlIntoUserModeStr = JoinRange(" ", userModeStrings.begin(), userModeStrings.end()); + SqlIntoModeStr_ = JoinRange("", modeStrings.begin(), modeStrings.end()); + SqlIntoUserModeStr_ = JoinRange(" ", userModeStrings.begin(), userModeStrings.end()); auto intoTableRef = node.GetRule_into_simple_table_ref3(); auto tableRef = intoTableRef.GetRule_simple_table_ref1(); - auto cluster = Ctx.CurrCluster; + auto cluster = Ctx_.CurrCluster; std::pair<bool, TDeferredAtom> nameOrAt; if (tableRef.HasBlock1()) { switch (tableRef.GetBlock1().Alt_case()) { case TRule_simple_table_ref_TBlock1::AltCase::kAlt1: { - cluster = OptIdPrefixAsClusterStr(tableRef.GetBlock1().GetAlt1().GetBlock1().GetRule_opt_id_prefix1(), *this, Ctx.CurrCluster); - if (!cluster && Ctx.CurrCluster) { + cluster = OptIdPrefixAsClusterStr(tableRef.GetBlock1().GetAlt1().GetBlock1().GetRule_opt_id_prefix1(), *this, Ctx_.CurrCluster); + if (!cluster && Ctx_.CurrCluster) { return nullptr; } auto id = Id(tableRef.GetBlock1().GetAlt1().GetBlock1().GetRule_id_or_at2(), *this); - nameOrAt = std::make_pair(id.first, TDeferredAtom(Ctx.Pos(), id.second)); + nameOrAt = std::make_pair(id.first, TDeferredAtom(Ctx_.Pos(), id.second)); break; } case TRule_simple_table_ref_TBlock1::AltCase::kAlt2: { @@ -4065,12 +4065,12 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { } TDeferredAtom table; - if (!TryMakeClusterAndTableFromExpression(named, cluster, table, Ctx)) { - Ctx.Error() << "Cannot infer cluster and table name"; + if (!TryMakeClusterAndTableFromExpression(named, cluster, table, Ctx_)) { + Ctx_.Error() << "Cannot infer cluster and table name"; return nullptr; } - cluster = cluster.empty() ? Ctx.CurrCluster : cluster; + cluster = cluster.empty() ? Ctx_.CurrCluster : cluster; nameOrAt = std::make_pair(at, table); break; } @@ -4086,7 +4086,7 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { if (to_upper(hint) == "TRUNCATE") { withTruncate = true; } else { - Ctx.Error() << "Unsupported hint: " << hint; + Ctx_.Error() << "Unsupported hint: " << hint; return nullptr; } } @@ -4094,14 +4094,14 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { TVector<TString> eraseColumns; if (intoTableRef.HasBlock2()) { - auto service = Ctx.GetClusterProvider(cluster); + auto service = Ctx_.GetClusterProvider(cluster); if (!service) { - Ctx.Error() << "Unknown cluster name: " << cluster; + Ctx_.Error() << "Unknown cluster name: " << cluster; return nullptr; } if (*service != StatProviderName) { - Ctx.Error() << "ERASE BY is unsupported for " << *service; + Ctx_.Error() << "ERASE BY is unsupported for " << *service; return nullptr; } @@ -4111,31 +4111,31 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { } if (withTruncate) { - if (SqlIntoModeStr != "InsertInto") { - Error() << "Unable " << SqlIntoUserModeStr << " with truncate mode"; + if (SqlIntoModeStr_ != "InsertInto") { + Error() << "Unable " << SqlIntoUserModeStr_ << " with truncate mode"; return nullptr; } - SqlIntoModeStr += "WithTruncate"; - SqlIntoUserModeStr += " ... WITH TRUNCATE"; + SqlIntoModeStr_ += "WithTruncate"; + SqlIntoUserModeStr_ += " ... WITH TRUNCATE"; } - const auto iterMode = str2Mode.find(SqlIntoModeStr); - YQL_ENSURE(iterMode != str2Mode.end(), "Invalid sql write mode string: " << SqlIntoModeStr); + const auto iterMode = str2Mode.find(SqlIntoModeStr_); + YQL_ENSURE(iterMode != str2Mode.end(), "Invalid sql write mode string: " << SqlIntoModeStr_); const auto SqlIntoMode = iterMode->second; - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TNodePtr tableKey = BuildTableKey(pos, cluster, nameOrAt.second, nameOrAt.first ? "@" : ""); - TTableRef table(Ctx.MakeName("table"), cluster, tableKey); - Ctx.IncrementMonCounter("sql_insert_clusters", table.Cluster); + TTableRef table(Ctx_.MakeName("table"), cluster, tableKey); + Ctx_.IncrementMonCounter("sql_insert_clusters", table.Cluster); - auto values = TSqlIntoValues(Ctx, Mode).Build(node.GetRule_into_values_source4(), SqlIntoUserModeStr); + auto values = TSqlIntoValues(Ctx_, Mode_).Build(node.GetRule_into_values_source4(), SqlIntoUserModeStr_); if (!values) { return nullptr; } if (!ValidateServiceName(node, table, SqlIntoMode, GetPos(modeTokens[0]))) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", SqlIntoModeStr); + Ctx_.IncrementMonCounter("sql_features", SqlIntoModeStr_); TNodePtr options; if (eraseColumns) { @@ -4148,10 +4148,10 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { bool TSqlIntoTable::ValidateServiceName(const TRule_into_table_stmt& node, const TTableRef& table, ESQLWriteColumnMode mode, const TPosition& pos) { Y_UNUSED(node); - if (!table.Check(Ctx)) { + if (!table.Check(Ctx_)) { return false; } - auto serviceName = to_lower(table.ServiceName(Ctx)); + auto serviceName = to_lower(table.ServiceName(Ctx_)); const bool isMapReduce = serviceName == YtProviderName; const bool isKikimr = serviceName == KikimrProviderName; const bool isRtmr = serviceName == RtmrProviderName; @@ -4163,34 +4163,34 @@ bool TSqlIntoTable::ValidateServiceName(const TRule_into_table_stmt& node, const mode == ESQLWriteColumnMode::InsertOrRevertInto || mode == ESQLWriteColumnMode::UpsertInto && !isStat) { - Ctx.Error(pos) << SqlIntoUserModeStr << " is not supported for " << serviceName << " tables"; - Ctx.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr << "UnsupportedFor" << serviceName); + Ctx_.Error(pos) << SqlIntoUserModeStr_ << " is not supported for " << serviceName << " tables"; + Ctx_.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr_ << "UnsupportedFor" << serviceName); return false; } } if (isMapReduce) { if (mode == ESQLWriteColumnMode::ReplaceInto) { - Ctx.Error(pos) << "Meaning of REPLACE INTO has been changed, now you should use INSERT INTO <table> WITH TRUNCATE ... for " << serviceName; - Ctx.IncrementMonCounter("sql_errors", "ReplaceIntoConflictUsage"); + Ctx_.Error(pos) << "Meaning of REPLACE INTO has been changed, now you should use INSERT INTO <table> WITH TRUNCATE ... for " << serviceName; + Ctx_.IncrementMonCounter("sql_errors", "ReplaceIntoConflictUsage"); return false; } } else if (isKikimr) { if (mode == ESQLWriteColumnMode::InsertIntoWithTruncate) { - Ctx.Error(pos) << "INSERT INTO WITH TRUNCATE is not supported for " << serviceName << " tables"; - Ctx.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr << "UnsupportedFor" << serviceName); + Ctx_.Error(pos) << "INSERT INTO WITH TRUNCATE is not supported for " << serviceName << " tables"; + Ctx_.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr_ << "UnsupportedFor" << serviceName); return false; } } else if (isRtmr) { if (mode != ESQLWriteColumnMode::InsertInto) { - Ctx.Error(pos) << SqlIntoUserModeStr << " is unsupported for " << serviceName; - Ctx.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr << "UnsupportedFor" << serviceName); + Ctx_.Error(pos) << SqlIntoUserModeStr_ << " is unsupported for " << serviceName; + Ctx_.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr_ << "UnsupportedFor" << serviceName); return false; } } else if (isStat) { if (mode != ESQLWriteColumnMode::UpsertInto) { - Ctx.Error(pos) << SqlIntoUserModeStr << " is unsupported for " << serviceName; - Ctx.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr << "UnsupportedFor" << serviceName); + Ctx_.Error(pos) << SqlIntoUserModeStr_ << " is unsupported for " << serviceName; + Ctx_.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr_ << "UnsupportedFor" << serviceName); return false; } } @@ -4202,7 +4202,7 @@ class TSqlQuery: public TSqlTranslation { public: TSqlQuery(TContext& ctx, NSQLTranslation::ESqlMode mode, bool topLevel) : TSqlTranslation(ctx, mode) - , TopLevel(topLevel) + , TopLevel_(topLevel) { } @@ -4247,7 +4247,7 @@ private: } } - const bool TopLevel; + const bool TopLevel_; }; void TSqlQuery::AddStatementToBlocks(TVector<TNodePtr>& blocks, TNodePtr node) { @@ -4260,13 +4260,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& TString humanStatementName; ParseStatementName(core, internalStatementName, humanStatementName); const auto& altCase = core.Alt_case(); - if (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW && (altCase >= TRule_sql_stmt_core::kAltSqlStmtCore4 && + if (Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW && (altCase >= TRule_sql_stmt_core::kAltSqlStmtCore4 && altCase != TRule_sql_stmt_core::kAltSqlStmtCore13)) { Error() << humanStatementName << " statement is not supported in limited views"; return false; } - if (Mode == NSQLTranslation::ESqlMode::SUBQUERY && (altCase >= TRule_sql_stmt_core::kAltSqlStmtCore4 && + if (Mode_ == NSQLTranslation::ESqlMode::SUBQUERY && (altCase >= TRule_sql_stmt_core::kAltSqlStmtCore4 && altCase != TRule_sql_stmt_core::kAltSqlStmtCore13 && altCase != TRule_sql_stmt_core::kAltSqlStmtCore6 && altCase != TRule_sql_stmt_core::kAltSqlStmtCore17)) { Error() << humanStatementName << " statement is not supported in subqueries"; @@ -4285,19 +4285,19 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore2: { - Ctx.BodyPart(); - TSqlSelect select(Ctx, Mode); + Ctx_.BodyPart(); + TSqlSelect select(Ctx_, Mode_); TPosition pos; auto source = select.Build(core.GetAlt_sql_stmt_core2().GetRule_select_stmt1(), pos); if (!source) { return false; } blocks.emplace_back(BuildSelectResult(pos, std::move(source), - Mode != NSQLTranslation::ESqlMode::LIMITED_VIEW && Mode != NSQLTranslation::ESqlMode::SUBQUERY, Mode == NSQLTranslation::ESqlMode::SUBQUERY)); + Mode_ != NSQLTranslation::ESqlMode::LIMITED_VIEW && Mode_ != NSQLTranslation::ESqlMode::SUBQUERY, Mode_ == NSQLTranslation::ESqlMode::SUBQUERY)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore3: { - Ctx.BodyPart(); + Ctx_.BodyPart(); TVector<TString> names; auto nodeExpr = NamedNode(core.GetAlt_sql_stmt_core3().GetRule_named_nodes_stmt1(), names); if (!nodeExpr) { @@ -4306,9 +4306,9 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& TVector<TNodePtr> nodes; auto subquery = nodeExpr->GetSource(); if (subquery) { - const auto alias = Ctx.MakeName("subquerynode"); - const auto ref = Ctx.MakeName("subquery"); - blocks.push_back(BuildSubquery(subquery, alias, Mode == NSQLTranslation::ESqlMode::SUBQUERY, names.size() == 1 ? -1 : names.size())); + const auto alias = Ctx_.MakeName("subquerynode"); + const auto ref = Ctx_.MakeName("subquery"); + blocks.push_back(BuildSubquery(subquery, alias, Mode_ == NSQLTranslation::ESqlMode::SUBQUERY, names.size() == 1 ? -1 : names.size())); blocks.back()->SetLabel(ref); for (size_t i = 0; i < names.size(); ++i) { @@ -4316,7 +4316,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } else { if (names.size() > 1) { - const auto ref = Ctx.MakeName("tie"); + const auto ref = Ctx_.MakeName("tie"); blocks.push_back(BuildTupleResult(nodeExpr, names.size())); blocks.back()->SetLabel(ref); for (size_t i = 0; i < names.size(); ++i) { @@ -4333,9 +4333,9 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore4: { - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core4().GetRule_create_table_stmt1(); - TTableRef tr(SimpleTableRefImpl(rule.GetRule_simple_table_ref3(), Mode, *this)); + TTableRef tr(SimpleTableRefImpl(rule.GetRule_simple_table_ref3(), Mode_, *this)); TVector<TColumnSchema> columns; TVector<TIdentifier> pkColumns; @@ -4351,33 +4351,33 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildCreateTable(Ctx.Pos(), tr, columns, pkColumns, partitionByColumns, orderByColumns)); + AddStatementToBlocks(blocks, BuildCreateTable(Ctx_.Pos(), tr, columns, pkColumns, partitionByColumns, orderByColumns)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore5: { - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core5().GetRule_drop_table_stmt1(); if (rule.HasBlock3()) { Context().Error(GetPos(rule.GetToken1())) << "IF EXISTS in " << humanStatementName << " is not supported."; return false; } - TTableRef tr(SimpleTableRefImpl(rule.GetRule_simple_table_ref4(), Mode, *this)); - AddStatementToBlocks(blocks, BuildDropTable(Ctx.Pos(), tr)); + TTableRef tr(SimpleTableRefImpl(rule.GetRule_simple_table_ref4(), Mode_, *this)); + AddStatementToBlocks(blocks, BuildDropTable(Ctx_.Pos(), tr)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore6: { const auto& rule = core.GetAlt_sql_stmt_core6().GetRule_use_stmt1(); Token(rule.GetToken1()); - Ctx.CurrCluster = IdOrStringAsCluster(rule.GetRule_id_or_string2(), *this); - if (!Ctx.CurrCluster) { + Ctx_.CurrCluster = IdOrStringAsCluster(rule.GetRule_id_or_string2(), *this); + if (!Ctx_.CurrCluster) { return false; } break; } case TRule_sql_stmt_core::kAltSqlStmtCore7: { - Ctx.BodyPart(); - TSqlIntoTable intoTable(Ctx, Mode); + Ctx_.BodyPart(); + TSqlIntoTable intoTable(Ctx_, Mode_); TNodePtr block(intoTable.Build(core.GetAlt_sql_stmt_core7().GetRule_into_table_stmt1())); if (!block) { return false; @@ -4386,14 +4386,14 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore8: { - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core8().GetRule_commit_stmt1(); Token(rule.GetToken1()); - blocks.emplace_back(BuildCommitClusters(Ctx.Pos())); + blocks.emplace_back(BuildCommitClusters(Ctx_.Pos())); break; } case TRule_sql_stmt_core::kAltSqlStmtCore9: { - Ctx.BodyPart(); + Ctx_.BodyPart(); auto updateNode = Build(core.GetAlt_sql_stmt_core9().GetRule_update_stmt1()); if (!updateNode) { return false; @@ -4402,7 +4402,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore10: { - Ctx.BodyPart(); + Ctx_.BodyPart(); auto deleteNode = Build(core.GetAlt_sql_stmt_core10().GetRule_delete_stmt1()); if (!deleteNode) { return false; @@ -4411,10 +4411,10 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore11: { - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core11().GetRule_rollback_stmt1(); Token(rule.GetToken1()); - blocks.emplace_back(BuildRollbackClusters(Ctx.Pos())); + blocks.emplace_back(BuildRollbackClusters(Ctx_.Pos())); break; } case TRule_sql_stmt_core::kAltSqlStmtCore12: @@ -4433,9 +4433,9 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } break; case TRule_sql_stmt_core::kAltSqlStmtCore15: { - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core15().GetRule_alter_table_stmt1(); - TTableRef tr(SimpleTableRefImpl(rule.GetRule_simple_table_ref3(), Mode, *this)); + TTableRef tr(SimpleTableRefImpl(rule.GetRule_simple_table_ref3(), Mode_, *this)); const auto& ruleAction = rule.GetRule_alter_table_action4(); switch (ruleAction.Alt_case()) { case TRule_alter_table_action::kAltAlterTableAction1: { @@ -4459,7 +4459,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore16: { - Ctx.BodyPart(); + Ctx_.BodyPart(); auto node = DoStatement(core.GetAlt_sql_stmt_core16().GetRule_do_stmt1(), false); if (!node) { return false; @@ -4469,7 +4469,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore17: { - Ctx.BodyPart(); + Ctx_.BodyPart(); if (!DefineActionOrSubqueryStatement(core.GetAlt_sql_stmt_core17().GetRule_define_action_or_subquery_stmt1())) { return false; } @@ -4477,7 +4477,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore18: { - Ctx.BodyPart(); + Ctx_.BodyPart(); auto node = EvaluateIfStatement(core.GetAlt_sql_stmt_core18().GetRule_evaluate_if_stmt1()); if (!node) { return false; @@ -4487,7 +4487,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore19: { - Ctx.BodyPart(); + Ctx_.BodyPart(); auto node = EvaluateForStatement(core.GetAlt_sql_stmt_core19().GetRule_evaluate_for_stmt1()); if (!node) { return false; @@ -4497,19 +4497,19 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } default: - Ctx.IncrementMonCounter("sql_errors", "UnknownStatement" + internalStatementName); + Ctx_.IncrementMonCounter("sql_errors", "UnknownStatement" + internalStatementName); AltNotImplemented("sql_stmt_core", core); return false; } - Ctx.IncrementMonCounter("sql_features", internalStatementName); - return !Ctx.HasPendingErrors; + Ctx_.IncrementMonCounter("sql_features", internalStatementName); + return !Ctx_.HasPendingErrors; } bool TSqlQuery::DeclareStatement(const TRule_declare_stmt& stmt) { TNodePtr defaultValue; if (stmt.HasBlock5()) { - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); if (!(defaultValue = sqlExpr.LiteralExpr(stmt.GetBlock5().GetRule_literal_value2()))) { return false; } @@ -4518,17 +4518,17 @@ bool TSqlQuery::DeclareStatement(const TRule_declare_stmt& stmt) { Error() << "DEFAULT value not supported yet"; return false; } - if (!Ctx.IsParseHeading()) { + if (!Ctx_.IsParseHeading()) { Error() << "DECLARE statement should be in beginning of query, but it's possible to use PRAGMA or USE before it"; return false; } const auto varName = NamedNodeImpl(stmt.GetRule_bind_parameter2(), *this); - const auto varPos = Ctx.Pos(); + const auto varPos = Ctx_.Pos(); const auto typeNode = FlexType(*this, stmt.GetRule_flex_type4()); if (!typeNode) { return false; } - if (!Ctx.DeclareVariable(varName, typeNode)) { + if (!Ctx_.DeclareVariable(varName, typeNode)) { return false; } PushNamedNode(varName, BuildAtom(varPos, varName)); @@ -4536,7 +4536,7 @@ bool TSqlQuery::DeclareStatement(const TRule_declare_stmt& stmt) { } bool TSqlQuery::ExportStatement(const TRule_export_stmt& stmt) { - if (Mode != NSQLTranslation::ESqlMode::LIBRARY || !TopLevel) { + if (Mode_ != NSQLTranslation::ESqlMode::LIBRARY || !TopLevel_) { Error() << "EXPORT statement should be used only in a library on the top level"; return false; } @@ -4545,7 +4545,7 @@ bool TSqlQuery::ExportStatement(const TRule_export_stmt& stmt) { if (!BindList(stmt.GetRule_bind_parameter_list2(), bindNames)) { return false; } - return Ctx.AddExports(bindNames); + return Ctx_.AddExports(bindNames); } bool TSqlQuery::AlterTableAddColumns(TVector<TNodePtr>& blocks, const TRule_alter_table_add_column& rule, const TTableRef& tr) { @@ -4556,14 +4556,14 @@ bool TSqlQuery::AlterTableAddColumns(TVector<TNodePtr>& blocks, const TRule_alte columns.push_back(ColumnSchemaImpl(block.GetRule_column_schema4(), *this)); } - AddStatementToBlocks(blocks, BuildAlterTable(Ctx.Pos(), tr, columns, EAlterTableIntentnt::AddColumn)); + AddStatementToBlocks(blocks, BuildAlterTable(Ctx_.Pos(), tr, columns, EAlterTableIntentnt::AddColumn)); return true; } bool TSqlQuery::AlterTableDropColumn(TVector<TNodePtr>& blocks, const TRule_alter_table_drop_column& node, const TTableRef& tr) { TString name = Id(node.GetRule_id3(), *this); - TColumnSchema column(Ctx.Pos(), name, "", false, false); - AddStatementToBlocks(blocks, BuildAlterTable(Ctx.Pos(), tr, TVector<TColumnSchema>{column}, EAlterTableIntentnt::DropColumn)); + TColumnSchema column(Ctx_.Pos(), name, "", false, false); + AddStatementToBlocks(blocks, BuildAlterTable(Ctx_.Pos(), tr, TVector<TColumnSchema>{column}, EAlterTableIntentnt::DropColumn)); return true; } @@ -4573,10 +4573,10 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success const TString& lowerPrefix = to_lower(prefix); const TString pragma(IdOrString(stmt.GetRule_id_or_string3(), *this)); TString normalizedPragma(pragma); - TMaybe<TIssue> normalizeError = NormalizeName(Ctx.Pos(), normalizedPragma); + TMaybe<TIssue> normalizeError = NormalizeName(Ctx_.Pos(), normalizedPragma); if (!normalizeError.Empty()) { Error() << normalizeError->GetMessage(); - Ctx.IncrementMonCounter("sql_errors", "NormalizePragmaError"); + Ctx_.IncrementMonCounter("sql_errors", "NormalizePragmaError"); return {}; } @@ -4597,7 +4597,7 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success 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()))); + values.push_back(TDeferredAtom(Ctx_.Pos(), StringContent(Ctx_, pragmaValue->GetAlt_pragma_value3().GetToken1().GetValue()))); } else if (pragmaValue->HasAlt_pragma_value2() && pragmaValue->GetAlt_pragma_value2().GetRule_id1().HasAlt_id2() @@ -4613,140 +4613,140 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success } TDeferredAtom atom; - MakeTableFromExpression(Ctx, namedNode, atom); + MakeTableFromExpression(Ctx_, namedNode, atom); values.push_back(atom); } else { Error() << "Expected string" << (withConfigure ? ", named parameter" : "") << " or 'default' keyword as pragma value for pragma: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } 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"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return{}; } if (normalizedPragma == "refselect") { - Ctx.PragmaRefSelect = true; - Ctx.IncrementMonCounter("sql_pragma", "RefSelect"); + Ctx_.PragmaRefSelect = true; + Ctx_.IncrementMonCounter("sql_pragma", "RefSelect"); } else if (normalizedPragma == "sampleselect") { - Ctx.PragmaSampleSelect = true; - Ctx.IncrementMonCounter("sql_pragma", "SampleSelect"); + Ctx_.PragmaSampleSelect = true; + Ctx_.IncrementMonCounter("sql_pragma", "SampleSelect"); } else if (normalizedPragma == "allowdotinalias") { - Ctx.PragmaAllowDotInAlias = true; - Ctx.IncrementMonCounter("sql_pragma", "AllowDotInAlias"); + Ctx_.PragmaAllowDotInAlias = true; + Ctx_.IncrementMonCounter("sql_pragma", "AllowDotInAlias"); } else if (normalizedPragma == "udf") { if (values.size() != 1 || pragmaValueDefault) { Error() << "Expected file alias as pragma value"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "udf"); + Ctx_.IncrementMonCounter("sql_pragma", "udf"); success = true; - return BuildPragma(Ctx.Pos(), TString(ConfigProviderName), "ImportUdfs", values, false); + return BuildPragma(Ctx_.Pos(), TString(ConfigProviderName), "ImportUdfs", values, false); } else if (normalizedPragma == "file") { if (values.size() != 2U || pragmaValueDefault) { Error() << "Expected file alias and url as pragma values"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "file"); + Ctx_.IncrementMonCounter("sql_pragma", "file"); success = true; - return BuildPragma(Ctx.Pos(), TString(ConfigProviderName), "AddFileByUrl", values, false); + return BuildPragma(Ctx_.Pos(), TString(ConfigProviderName), "AddFileByUrl", values, false); } else if (normalizedPragma == "folder") { if (values.size() != 2U || pragmaValueDefault) { Error() << "Expected folder alias as url as pragma values"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "folder"); + Ctx_.IncrementMonCounter("sql_pragma", "folder"); success = true; - return BuildPragma(Ctx.Pos(), TString(ConfigProviderName), "AddFolderByUrl", values, false); + return BuildPragma(Ctx_.Pos(), TString(ConfigProviderName), "AddFolderByUrl", values, false); } else if (normalizedPragma == "library") { if (values.size() != 1) { Error() << "Expected non-empty file alias"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return{}; } - Ctx.Libraries.emplace(*values.front().GetLiteral()); - Ctx.IncrementMonCounter("sql_pragma", "library"); + Ctx_.Libraries.emplace(*values.front().GetLiteral()); + Ctx_.IncrementMonCounter("sql_pragma", "library"); } else if (normalizedPragma == "inferscheme" || normalizedPragma == "inferschema") { - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_DEPRECATED_INFERSCHEME) << "PRAGMA InferScheme is deprecated, please use PRAGMA yt.InferSchema instead."; - Ctx.PragmaInferSchema = true; - Ctx.IncrementMonCounter("sql_pragma", "InferSchema"); + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_DEPRECATED_INFERSCHEME) << "PRAGMA InferScheme is deprecated, please use PRAGMA yt.InferSchema instead."; + Ctx_.PragmaInferSchema = true; + Ctx_.IncrementMonCounter("sql_pragma", "InferSchema"); } else if (normalizedPragma == "directread") { - Ctx.PragmaDirectRead = true; - Ctx.IncrementMonCounter("sql_pragma", "DirectRead"); + Ctx_.PragmaDirectRead = true; + Ctx_.IncrementMonCounter("sql_pragma", "DirectRead"); } else if (normalizedPragma == "equijoin") { - Ctx.IncrementMonCounter("sql_pragma", "EquiJoin"); + Ctx_.IncrementMonCounter("sql_pragma", "EquiJoin"); } else if (normalizedPragma == "autocommit") { - Ctx.PragmaAutoCommit = true; - Ctx.IncrementMonCounter("sql_pragma", "AutoCommit"); + Ctx_.PragmaAutoCommit = true; + Ctx_.IncrementMonCounter("sql_pragma", "AutoCommit"); } else if (normalizedPragma == "tablepathprefix") { if (values.size() == 1) { - if (!Ctx.SetPathPrefix(*values[0].GetLiteral())) { + if (!Ctx_.SetPathPrefix(*values[0].GetLiteral())) { return {}; } } else if (values.size() == 2) { - if (!Ctx.SetPathPrefix(*values[1].GetLiteral(), *values[0].GetLiteral())) { + if (!Ctx_.SetPathPrefix(*values[1].GetLiteral(), *values[0].GetLiteral())) { return {}; } } else { Error() << "Expected path prefix or tuple of (Provider, PathPrefix) or" << " (Cluster, PathPrefix) as pragma value"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "PathPrefix"); + Ctx_.IncrementMonCounter("sql_pragma", "PathPrefix"); } else if (normalizedPragma == "groupbylimit") { - if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx.PragmaGroupByLimit)) { + if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx_.PragmaGroupByLimit)) { Error() << "Expected single unsigned integer argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "GroupByLimit"); + Ctx_.IncrementMonCounter("sql_pragma", "GroupByLimit"); } else if (normalizedPragma == "groupbycubelimit") { - if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx.PragmaGroupByCubeLimit)) { + if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx_.PragmaGroupByCubeLimit)) { Error() << "Expected single unsigned integer argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "GroupByCubeLimit"); + Ctx_.IncrementMonCounter("sql_pragma", "GroupByCubeLimit"); } else if (normalizedPragma == "simplecolumns") { - Ctx.SimpleColumns = true; - Ctx.IncrementMonCounter("sql_pragma", "SimpleColumns"); + Ctx_.SimpleColumns = true; + Ctx_.IncrementMonCounter("sql_pragma", "SimpleColumns"); } else if (normalizedPragma == "disablesimplecolumns") { - Ctx.SimpleColumns = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableSimpleColumns"); + Ctx_.SimpleColumns = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableSimpleColumns"); } else if (normalizedPragma == "resultrowslimit") { - if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx.ResultRowsLimit)) { + if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx_.ResultRowsLimit)) { Error() << "Expected single unsigned integer argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "ResultRowsLimit"); + Ctx_.IncrementMonCounter("sql_pragma", "ResultRowsLimit"); } else if (normalizedPragma == "resultsizelimit") { - if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx.ResultSizeLimit)) { + if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx_.ResultSizeLimit)) { Error() << "Expected single unsigned integer argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "ResultSizeLimit"); + Ctx_.IncrementMonCounter("sql_pragma", "ResultSizeLimit"); } else if (normalizedPragma == "warning") { if (values.size() != 2U || values.front().Empty() || values.back().Empty()) { Error() << "Expected arguments <action>, <issueId> for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } @@ -4758,106 +4758,106 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success auto parseResult = TWarningRule::ParseFrom(codePattern, action, rule, parseError); switch (parseResult) { case TWarningRule::EParseResult::PARSE_OK: - Ctx.WarningPolicy.AddRule(rule); - if (Ctx.Settings.WarnOnV0 && codePattern == "*") { + Ctx_.WarningPolicy.AddRule(rule); + if (Ctx_.Settings.WarnOnV0 && codePattern == "*") { // Add exception for YQL_DEPRECATED_V0_SYNTAX TWarningRule defaultForDeprecatedV0; YQL_ENSURE(TWarningRule::ParseFrom(ToString(TIssueCode(TIssuesIds::YQL_DEPRECATED_V0_SYNTAX)), "default", defaultForDeprecatedV0, parseError) == TWarningRule::EParseResult::PARSE_OK); - Ctx.WarningPolicy.AddRule(defaultForDeprecatedV0); + Ctx_.WarningPolicy.AddRule(defaultForDeprecatedV0); } break; case TWarningRule::EParseResult::PARSE_PATTERN_FAIL: case TWarningRule::EParseResult::PARSE_ACTION_FAIL: - Ctx.Error() << parseError; + Ctx_.Error() << parseError; return {}; default: Y_ENSURE(false, "Unknown parse result"); } - Ctx.IncrementMonCounter("sql_pragma", "warning"); + Ctx_.IncrementMonCounter("sql_pragma", "warning"); } else if (normalizedPragma == "greetings") { if (values.size() > 1) { Error() << "Not expect few arguments for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } else if (values.empty()) { - values.emplace_back(TDeferredAtom(Ctx.Pos(), "Hello, world! And best wishes from the YQL Team!")); + values.emplace_back(TDeferredAtom(Ctx_.Pos(), "Hello, world! And best wishes from the YQL Team!")); } - Ctx.Info(Ctx.Pos()) << *values[0].GetLiteral(); + Ctx_.Info(Ctx_.Pos()) << *values[0].GetLiteral(); } else if (normalizedPragma == "warningmsg") { if (values.size() != 1) { Error() << "Expected single string argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_PRAGMA_WARNING_MSG) << *values[0].GetLiteral(); + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_PRAGMA_WARNING_MSG) << *values[0].GetLiteral(); } else if (normalizedPragma == "errormsg") { if (values.size() != 1) { Error() << "Expected single string argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.Error(Ctx.Pos()) << *values[0].GetLiteral(); + Ctx_.Error(Ctx_.Pos()) << *values[0].GetLiteral(); } else if (normalizedPragma == "classicdivision") { - if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx.PragmaClassicDivision)) { + if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx_.PragmaClassicDivision)) { Error() << "Expected single boolean argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "ClassicDivision"); + Ctx_.IncrementMonCounter("sql_pragma", "ClassicDivision"); } else if (normalizedPragma == "disableunordered") { - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA) + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA) << "Use of deprecated DisableUnordered pragma. It will be dropped soon"; } else if (normalizedPragma == "pullupflatmapoverjoin") { - Ctx.PragmaPullUpFlatMapOverJoin = true; - Ctx.IncrementMonCounter("sql_pragma", "PullUpFlatMapOverJoin"); + Ctx_.PragmaPullUpFlatMapOverJoin = true; + Ctx_.IncrementMonCounter("sql_pragma", "PullUpFlatMapOverJoin"); } else if (normalizedPragma == "disablepullupflatmapoverjoin") { - Ctx.PragmaPullUpFlatMapOverJoin = false; - Ctx.IncrementMonCounter("sql_pragma", "DisablePullUpFlatMapOverJoin"); + Ctx_.PragmaPullUpFlatMapOverJoin = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisablePullUpFlatMapOverJoin"); } else if (normalizedPragma == "enablesystemcolumns") { - if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx.EnableSystemColumns)) { + if (values.size() != 1 || !TryFromString(*values[0].GetLiteral(), Ctx_.EnableSystemColumns)) { Error() << "Expected single boolean argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "EnableSystemColumns"); + Ctx_.IncrementMonCounter("sql_pragma", "EnableSystemColumns"); } else { Error() << "Unknown pragma: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "UnknownPragma"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownPragma"); return {}; } } else { if (lowerPrefix == "yson") { - if (!TopLevel) { + if (!TopLevel_) { Error() << "This pragma '" << pragma << "' is not allowed to be used in actions"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } if (normalizedPragma == "autoconvert") { - Ctx.PragmaYsonAutoConvert = true; + Ctx_.PragmaYsonAutoConvert = true; success = true; return {}; } else if (normalizedPragma == "strict") { - Ctx.PragmaYsonStrict = true; + Ctx_.PragmaYsonStrict = true; success = true; return {}; } else if (normalizedPragma == "disablestrict") { - Ctx.PragmaYsonStrict = false; + Ctx_.PragmaYsonStrict = false; success = true; return {}; } else { Error() << "Unknown pragma: '" << pragma << "'"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } else if (std::find(Providers.cbegin(), Providers.cend(), lowerPrefix) == Providers.cend()) { - if (!Ctx.HasCluster(lowerPrefix)) { + if (!Ctx_.HasCluster(lowerPrefix)) { Error() << "Unknown pragma prefix: " << prefix << ", please use cluster name or one of provider " << JoinRange(", ", Providers.cbegin(), Providers.cend()); - Ctx.IncrementMonCounter("sql_errors", "UnknownPragma"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownPragma"); return {}; } } @@ -4865,64 +4865,64 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success if (normalizedPragma != "flags") { if (values.size() > 1) { Error() << "Expected at most one value in the pragma"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } else { if (pragmaValueDefault || values.size() < 1) { Error() << "Expected at least one value in the pragma"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } success = true; - Ctx.IncrementMonCounter("sql_pragma", pragma); - return BuildPragma(Ctx.Pos(), lowerPrefix, normalizedPragma, values, pragmaValueDefault); + Ctx_.IncrementMonCounter("sql_pragma", pragma); + return BuildPragma(Ctx_.Pos(), lowerPrefix, normalizedPragma, values, pragmaValueDefault); } success = true; return {}; } TNodePtr TSqlQuery::Build(const TRule_delete_stmt& stmt) { - TTableRef table = SimpleTableRefImpl(stmt.GetRule_simple_table_ref3(), Mode, *this); - if (!table.Check(Ctx)) { + TTableRef table = SimpleTableRefImpl(stmt.GetRule_simple_table_ref3(), Mode_, *this); + if (!table.Check(Ctx_)) { return nullptr; } - auto serviceName = to_lower(table.ServiceName(Ctx)); + auto serviceName = to_lower(table.ServiceName(Ctx_)); const bool isKikimr = serviceName == KikimrProviderName; if (!isKikimr) { - Ctx.Error(GetPos(stmt.GetToken1())) << "DELETE is unsupported for " << serviceName; + Ctx_.Error(GetPos(stmt.GetToken1())) << "DELETE is unsupported for " << serviceName; return nullptr; } - TSourcePtr source = BuildTableSource(Ctx.Pos(), table, false); + TSourcePtr source = BuildTableSource(Ctx_.Pos(), table, false); if (stmt.HasBlock4()) { switch (stmt.GetBlock4().Alt_case()) { case TRule_delete_stmt_TBlock4::kAlt1: { const auto& alt = stmt.GetBlock4().GetAlt1(); - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); auto whereExpr = sqlExpr.Build(alt.GetRule_expr2()); if (!whereExpr) { return nullptr; } - source->AddFilter(Ctx, whereExpr); + source->AddFilter(Ctx_, whereExpr); break; } case TRule_delete_stmt_TBlock4::kAlt2: { const auto& alt = stmt.GetBlock4().GetAlt2(); - auto values = TSqlIntoValues(Ctx, Mode).Build(alt.GetRule_into_values_source2(), "DELETE ON"); + auto values = TSqlIntoValues(Ctx_, Mode_).Build(alt.GetRule_into_values_source2(), "DELETE ON"); if (!values) { return nullptr; } - return BuildWriteColumns(Ctx.Pos(), table, EWriteColumnMode::DeleteOn, std::move(values)); + return BuildWriteColumns(Ctx_.Pos(), table, EWriteColumnMode::DeleteOn, std::move(values)); } default: @@ -4930,20 +4930,20 @@ TNodePtr TSqlQuery::Build(const TRule_delete_stmt& stmt) { } } - return BuildDelete(Ctx.Pos(), table, std::move(source)); + return BuildDelete(Ctx_.Pos(), table, std::move(source)); } TNodePtr TSqlQuery::Build(const TRule_update_stmt& stmt) { - TTableRef table = SimpleTableRefImpl(stmt.GetRule_simple_table_ref2(), Mode, *this); - if (!table.Check(Ctx)) { + TTableRef table = SimpleTableRefImpl(stmt.GetRule_simple_table_ref2(), Mode_, *this); + if (!table.Check(Ctx_)) { return nullptr; } - auto serviceName = to_lower(table.ServiceName(Ctx)); + auto serviceName = to_lower(table.ServiceName(Ctx_)); const bool isKikimr = serviceName == KikimrProviderName; if (!isKikimr) { - Ctx.Error(GetPos(stmt.GetToken1())) << "UPDATE is unsupported for " << serviceName; + Ctx_.Error(GetPos(stmt.GetToken1())) << "UPDATE is unsupported for " << serviceName; return nullptr; } @@ -4951,29 +4951,29 @@ TNodePtr TSqlQuery::Build(const TRule_update_stmt& stmt) { case TRule_update_stmt_TBlock3::kAlt1: { const auto& alt = stmt.GetBlock3().GetAlt1(); TSourcePtr values = Build(alt.GetRule_set_clause_choice2()); - auto source = BuildTableSource(Ctx.Pos(), table, false); + auto source = BuildTableSource(Ctx_.Pos(), table, false); if (alt.HasBlock3()) { - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); auto whereExpr = sqlExpr.Build(alt.GetBlock3().GetRule_expr2()); if (!whereExpr) { return nullptr; } - source->AddFilter(Ctx, whereExpr); + source->AddFilter(Ctx_, whereExpr); } - return BuildUpdateColumns(Ctx.Pos(), table, std::move(values), std::move(source)); + return BuildUpdateColumns(Ctx_.Pos(), table, std::move(values), std::move(source)); } case TRule_update_stmt_TBlock3::kAlt2: { const auto& alt = stmt.GetBlock3().GetAlt2(); - auto values = TSqlIntoValues(Ctx, Mode).Build(alt.GetRule_into_values_source2(), "UPDATE ON"); + auto values = TSqlIntoValues(Ctx_, Mode_).Build(alt.GetRule_into_values_source2(), "UPDATE ON"); if (!values) { return nullptr; } - return BuildWriteColumns(Ctx.Pos(), table, EWriteColumnMode::UpdateOn, std::move(values)); + return BuildWriteColumns(Ctx_.Pos(), table, EWriteColumnMode::UpdateOn, std::move(values)); } default: @@ -4995,7 +4995,7 @@ TSourcePtr TSqlQuery::Build(const TRule_set_clause_choice& stmt) { bool TSqlQuery::FillSetClause(const TRule_set_clause& node, TVector<TString>& targetList, TVector<TNodePtr>& values) { targetList.push_back(ColumnNameAsSingleStr(*this, node.GetRule_set_target1().GetRule_column_name1())); - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); if (!Expr(sqlExpr, values, node.GetRule_expr3())) { return false; } @@ -5005,7 +5005,7 @@ bool TSqlQuery::FillSetClause(const TRule_set_clause& node, TVector<TString>& ta TSourcePtr TSqlQuery::Build(const TRule_set_clause_list& stmt) { TVector<TString> targetList; TVector<TNodePtr> values; - const TPosition pos(Ctx.Pos()); + const TPosition pos(Ctx_.Pos()); if (!FillSetClause(stmt.GetRule_set_clause1(), targetList, values)) { return nullptr; } @@ -5022,18 +5022,18 @@ TSourcePtr TSqlQuery::Build(const TRule_multiple_column_assignment& stmt) { TVector<TString> targetList; FillTargetList(*this, stmt.GetRule_set_target_list1(), targetList); auto simpleValuesNode = stmt.GetRule_simple_values_source4(); - const TPosition pos(Ctx.Pos()); + const TPosition pos(Ctx_.Pos()); switch (simpleValuesNode.Alt_case()) { case TRule_simple_values_source::kAltSimpleValuesSource1: { TVector<TNodePtr> values; - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); if (!ExprList(sqlExpr, values, simpleValuesNode.GetAlt_simple_values_source1().GetRule_expr_list1())) { return nullptr; } return BuildUpdateValues(pos, targetList, values); } case TRule_simple_values_source::kAltSimpleValuesSource2: { - TSqlSelect select(Ctx, Mode); + TSqlSelect select(Ctx_, Mode_); TPosition selectPos; auto source = select.Build(simpleValuesNode.GetAlt_simple_values_source2().GetRule_select_stmt1(), selectPos); if (!source) { @@ -5042,7 +5042,7 @@ TSourcePtr TSqlQuery::Build(const TRule_multiple_column_assignment& stmt) { return BuildWriteValues(pos, "UPDATE", targetList, std::move(source)); } default: - Ctx.IncrementMonCounter("sql_errors", "UnknownSimpleValuesSourceAlt"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownSimpleValuesSourceAlt"); AltNotImplemented("simple_values_source", simpleValuesNode); return nullptr; } @@ -5052,17 +5052,17 @@ TNodePtr TSqlQuery::Build(const TSQLParserAST& ast) { const auto& statements = ast.GetRule_sql_stmt_list(); TVector<TNodePtr> blocks; - if (Ctx.Settings.WarnOnV0) { - if (Ctx.Settings.V0WarnAsError->Allow()) { + if (Ctx_.Settings.WarnOnV0) { + if (Ctx_.Settings.V0WarnAsError->Allow()) { Error() << "SQL v0 syntax is deprecated and no longer supported. Please switch to v1: https://clubs.at.yandex-team.ru/yql/2910"; return nullptr; } - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_DEPRECATED_V0_SYNTAX) << + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_DEPRECATED_V0_SYNTAX) << "SQL v0 syntax is deprecated and will stop working soon. Consider switching to v1: https://clubs.at.yandex-team.ru/yql/2910"; } - if (Ctx.Settings.V0Behavior == NSQLTranslation::EV0Behavior::Report) { + if (Ctx_.Settings.V0Behavior == NSQLTranslation::EV0Behavior::Report) { AddStatementToBlocks(blocks, BuildPragma(TPosition(), "config", "flags", { TDeferredAtom(TPosition(), "SQL"), TDeferredAtom(TPosition(), "0") @@ -5084,31 +5084,31 @@ TNodePtr TSqlQuery::Build(const TSQLParserAST& ast) { } } - if ((Mode == NSQLTranslation::ESqlMode::SUBQUERY || Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW) && topLevelSelects != 1) { + if ((Mode_ == NSQLTranslation::ESqlMode::SUBQUERY || Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW) && topLevelSelects != 1) { Error() << "Strictly one select/process/reduce statement must be used in the " - << (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW ? "view" : "subquery"); + << (Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW ? "view" : "subquery"); return nullptr; } - if (!Ctx.PragmaAutoCommit && Ctx.Settings.EndOfQueryCommit && IsQueryMode(Mode)) { - AddStatementToBlocks(blocks, BuildCommitClusters(Ctx.Pos())); + if (!Ctx_.PragmaAutoCommit && Ctx_.Settings.EndOfQueryCommit && IsQueryMode(Mode_)) { + AddStatementToBlocks(blocks, BuildCommitClusters(Ctx_.Pos())); } - return BuildQuery(Ctx.Pos(), blocks, true); + return BuildQuery(Ctx_.Pos(), blocks, true); } TNodePtr TSqlQuery::FlexType(TTranslation& ctx, const TRule_flex_type& node) { const auto& stringType = NSQLTranslationV0::FlexType(node, ctx); - auto res = TryBuildDataType(Ctx.Pos(), TypeByAlias(stringType.first, !stringType.second)); + auto res = TryBuildDataType(Ctx_.Pos(), TypeByAlias(stringType.first, !stringType.second)); if (!res) { - res = BuildBuiltinFunc(Ctx, Ctx.Pos(), "ParseType", {BuildLiteralRawString(Ctx.Pos(), stringType.first)}); + res = BuildBuiltinFunc(Ctx_, Ctx_.Pos(), "ParseType", {BuildLiteralRawString(Ctx_.Pos(), stringType.first)}); } return res; } bool TSqlTranslation::DefineActionOrSubqueryStatement(const TRule_define_action_or_subquery_stmt& stmt) { - auto kind = Ctx.Token(stmt.GetToken2()); + auto kind = Ctx_.Token(stmt.GetToken2()); const bool isSubquery = to_lower(kind) == "subquery"; - if (!isSubquery && Mode == NSQLTranslation::ESqlMode::SUBQUERY) { + if (!isSubquery && Mode_ == NSQLTranslation::ESqlMode::SUBQUERY) { Error() << "Definition of actions is not allowed in the subquery"; return false; } @@ -5119,19 +5119,19 @@ bool TSqlTranslation::DefineActionOrSubqueryStatement(const TRule_define_action_ return false; } - auto saveNamedNodes = Ctx.NamedNodes; + auto saveNamedNodes = Ctx_.NamedNodes; for (const auto& arg : argNames) { - PushNamedNode(arg, BuildAtom(Ctx.Pos(), arg, NYql::TNodeFlags::Default)); + PushNamedNode(arg, BuildAtom(Ctx_.Pos(), arg, NYql::TNodeFlags::Default)); } - auto saveCurrCluster = Ctx.CurrCluster; - auto savePragmaClassicDivision = Ctx.PragmaClassicDivision; - auto saveMode = Ctx.Settings.Mode; + auto saveCurrCluster = Ctx_.CurrCluster; + auto savePragmaClassicDivision = Ctx_.PragmaClassicDivision; + auto saveMode = Ctx_.Settings.Mode; if (isSubquery) { - Ctx.Settings.Mode = NSQLTranslation::ESqlMode::SUBQUERY; + Ctx_.Settings.Mode = NSQLTranslation::ESqlMode::SUBQUERY; } - TSqlQuery query(Ctx, Ctx.Settings.Mode, false); + TSqlQuery query(Ctx_, Ctx_.Settings.Mode, false); TVector<TNodePtr> blocks; const auto& body = stmt.GetRule_define_action_or_subquery_body8(); bool hasError = false; @@ -5155,33 +5155,33 @@ bool TSqlTranslation::DefineActionOrSubqueryStatement(const TRule_define_action_ return false; } - auto ret = !hasError ? BuildQuery(Ctx.Pos(), blocks, false) : nullptr; - Ctx.CurrCluster = saveCurrCluster; - Ctx.PragmaClassicDivision = savePragmaClassicDivision; - Ctx.NamedNodes = saveNamedNodes; - Ctx.Settings.Mode = saveMode; + auto ret = !hasError ? BuildQuery(Ctx_.Pos(), blocks, false) : nullptr; + Ctx_.CurrCluster = saveCurrCluster; + Ctx_.PragmaClassicDivision = savePragmaClassicDivision; + Ctx_.NamedNodes = saveNamedNodes; + Ctx_.Settings.Mode = saveMode; if (!ret) { return false; } - TNodePtr blockNode = new TAstListNodeImpl(Ctx.Pos()); + TNodePtr blockNode = new TAstListNodeImpl(Ctx_.Pos()); blockNode->Add("block"); blockNode->Add(blockNode->Q(ret)); - TNodePtr params = new TAstListNodeImpl(Ctx.Pos()); + TNodePtr params = new TAstListNodeImpl(Ctx_.Pos()); params->Add("world"); for (const auto& arg : argNames) { params->Add(arg); } - auto lambda = BuildLambda(Ctx.Pos(), params, blockNode); + auto lambda = BuildLambda(Ctx_.Pos(), params, blockNode); PushNamedNode(actionName, lambda); return true; } TNodePtr TSqlTranslation::EvaluateIfStatement(const TRule_evaluate_if_stmt& stmt) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); auto exprNode = expr.Build(stmt.GetRule_expr3()); if (!exprNode) { return {}; @@ -5200,11 +5200,11 @@ TNodePtr TSqlTranslation::EvaluateIfStatement(const TRule_evaluate_if_stmt& stmt } } - return BuildEvaluateIfNode(Ctx.Pos(), exprNode, thenNode, elseNode); + return BuildEvaluateIfNode(Ctx_.Pos(), exprNode, thenNode, elseNode); } TNodePtr TSqlTranslation::EvaluateForStatement(const TRule_evaluate_for_stmt& stmt) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); auto itemArgName = NamedNodeImpl(stmt.GetRule_bind_parameter3(), *this); auto exprNode = expr.Build(stmt.GetRule_expr5()); @@ -5212,7 +5212,7 @@ TNodePtr TSqlTranslation::EvaluateForStatement(const TRule_evaluate_for_stmt& st return{}; } - PushNamedNode(itemArgName, new TAstAtomNodeImpl(Ctx.Pos(), itemArgName, TNodeFlags::Default)); + PushNamedNode(itemArgName, new TAstAtomNodeImpl(Ctx_.Pos(), itemArgName, TNodeFlags::Default)); auto bodyNode = DoStatement(stmt.GetRule_do_stmt6(), true, { itemArgName }); PopNamedNode(itemArgName); if (!bodyNode) { @@ -5227,7 +5227,7 @@ TNodePtr TSqlTranslation::EvaluateForStatement(const TRule_evaluate_for_stmt& st } } - return BuildEvaluateForNode(Ctx.Pos(), exprNode, bodyNode, elseNode); + return BuildEvaluateForNode(Ctx_.Pos(), exprNode, bodyNode, elseNode); } google::protobuf::Message* SqlAST(const TString& query, const TString& queryName, TIssues& err, size_t maxErrors, google::protobuf::Arena* arena) { diff --git a/yql/essentials/sql/v1/aggregation.cpp b/yql/essentials/sql/v1/aggregation.cpp index a1e98d2352c..130ec26d5f7 100644 --- a/yql/essentials/sql/v1/aggregation.cpp +++ b/yql/essentials/sql/v1/aggregation.cpp @@ -48,62 +48,62 @@ class TAggregationFactory : public IAggregation { public: TAggregationFactory(TPosition pos, const TString& name, const TString& func, EAggregateMode aggMode, bool multi = false, bool validateArgs = true) - : IAggregation(pos, name, func, aggMode), Factory(!func.empty() ? - BuildBind(Pos, aggMode == EAggregateMode::OverWindow || aggMode == EAggregateMode::OverWindowDistinct ? "window_module" : "aggregate_module", func) : nullptr), - Multi(multi), ValidateArgs(validateArgs), DynamicFactory(!Factory) + : IAggregation(pos, name, func, aggMode), Factory_(!func.empty() ? + BuildBind(Pos_, aggMode == EAggregateMode::OverWindow || aggMode == EAggregateMode::OverWindowDistinct ? "window_module" : "aggregate_module", func) : nullptr), + Multi_(multi), ValidateArgs_(validateArgs), DynamicFactory_(!Factory_) { if (aggMode != EAggregateMode::OverWindow && aggMode != EAggregateMode::OverWindowDistinct && !func.empty() && AggApplyFuncs.contains(func)) { - AggApplyName = func.substr(0, func.size() - 15); + AggApplyName_ = func.substr(0, func.size() - 15); } - if (!Factory) { - FakeSource = BuildFakeSource(pos); + if (!Factory_) { + FakeSource_ = BuildFakeSource(pos); } } protected: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) override { if (!ShouldEmitAggApply(ctx)) { - AggApplyName = ""; + AggApplyName_ = ""; } - if (ValidateArgs || isFactory) { - ui32 expectedArgs = ValidateArgs && !Factory ? 2 : (isFactory ? 0 : 1); - if (!Factory && ValidateArgs) { + if (ValidateArgs_ || isFactory) { + ui32 expectedArgs = ValidateArgs_ && !Factory_ ? 2 : (isFactory ? 0 : 1); + if (!Factory_ && ValidateArgs_) { YQL_ENSURE(!isFactory); } if (expectedArgs != exprs.size()) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires exactly " << expectedArgs << " argument(s), given: " << exprs.size(); return false; } } - if (!ValidateArgs) { - Exprs = exprs; + if (!ValidateArgs_) { + Exprs_ = exprs; } - if (BlockWindowAggregationWithoutFrameSpec(Pos, GetName(), src, ctx)) { + if (BlockWindowAggregationWithoutFrameSpec(Pos_, GetName(), src, ctx)) { return false; } - if (ValidateArgs) { - if (!Factory) { - Factory = exprs[1]; + if (ValidateArgs_) { + if (!Factory_) { + Factory_ = exprs[1]; } } if (!isFactory) { - if (ValidateArgs) { - Expr = exprs.front(); + if (ValidateArgs_) { + Expr_ = exprs.front(); } - Name = src->MakeLocalName(Name); + Name_ = src->MakeLocalName(Name_); } - if (Expr && Expr->IsAsterisk() && AggApplyName == "count") { - AggApplyName = "count_all"; + if (Expr_ && Expr_->IsAsterisk() && AggApplyName_ == "count") { + AggApplyName_ = "count_all"; } if (!Init(ctx, src)) { @@ -111,9 +111,9 @@ protected: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); if (IsOverWindow() || IsOverWindowDistinct()) { - src->AddTmpWindowColumn(Name); + src->AddTmpWindowColumn(Name_); } } @@ -121,12 +121,12 @@ protected: } TNodePtr AggregationTraitsFactory() const override { - return Factory; + return Factory_; } TNodePtr GetExtractor(bool many, TContext& ctx) const override { Y_UNUSED(ctx); - return BuildLambda(Pos, Y("row"), Y("PersistableRepr", many ? Y("Unwrap", Expr) : Expr)); + return BuildLambda(Pos_, Y("row"), Y("PersistableRepr", many ? Y("Unwrap", Expr_) : Expr_)); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const override { @@ -135,29 +135,29 @@ protected: return nullptr; } - if (!Multi) { - if (!DynamicFactory && allowAggApply && !AggApplyName.empty()) { - return Y("AggApply", Q(AggApplyName), Y("ListItemType", type), extractor); + if (!Multi_) { + if (!DynamicFactory_ && allowAggApply && !AggApplyName_.empty()) { + return Y("AggApply", Q(AggApplyName_), Y("ListItemType", type), extractor); } - return Y("Apply", Factory, (DynamicFactory ? Y("ListItemType", type) : type), + return Y("Apply", Factory_, (DynamicFactory_ ? Y("ListItemType", type) : type), extractor); } return Y("MultiAggregate", Y("ListItemType", type), extractor, - Factory); + Factory_); } bool DoInit(TContext& ctx, ISource* src) override { - if (!ValidateArgs) { - for (auto x : Exprs) { + if (!ValidateArgs_) { + for (auto x : Exprs_) { if (!x->Init(ctx, src)) { return false; } if (x->IsAggregated() && !x->IsAggregationKey() && !IsOverWindow() && !IsOverWindowDistinct()) { - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden"; return false; } } @@ -165,52 +165,52 @@ protected: return true; } - if (!Expr) { + if (!Expr_) { return true; } - if (!Expr->Init(ctx, src)) { + if (!Expr_->Init(ctx, src)) { return false; } - if (Expr->IsAggregated() && !Expr->IsAggregationKey() && !IsOverWindow() && !IsOverWindowDistinct()) { - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; + if (Expr_->IsAggregated() && !Expr_->IsAggregationKey() && !IsOverWindow() && !IsOverWindowDistinct()) { + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden"; return false; } - if (AggMode == EAggregateMode::Distinct || AggMode == EAggregateMode::OverWindowDistinct) { - const auto column = Expr->GetColumnName(); + if (AggMode_ == EAggregateMode::Distinct || AggMode_ == EAggregateMode::OverWindowDistinct) { + const auto column = Expr_->GetColumnName(); if (!column) { // TODO: improve TBasicAggrFunc::CollectPreaggregateExprs() - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden"; return false; } - DistinctKey = *column; + DistinctKey_ = *column; YQL_ENSURE(src); - if (!IsGeneratedKeyColumn && src->GetJoin()) { - const auto sourcePtr = Expr->GetSourceName(); + if (!IsGeneratedKeyColumn_ && src->GetJoin()) { + const auto sourcePtr = Expr_->GetSourceName(); if (!sourcePtr || !*sourcePtr) { - if (!src->IsGroupByColumn(DistinctKey)) { - ctx.Error(Expr->GetPos()) << ErrorDistinctWithoutCorrelation(DistinctKey); + if (!src->IsGroupByColumn(DistinctKey_)) { + ctx.Error(Expr_->GetPos()) << ErrorDistinctWithoutCorrelation(DistinctKey_); return false; } } else { - DistinctKey = DotJoin(*sourcePtr, DistinctKey); + DistinctKey_ = DotJoin(*sourcePtr, DistinctKey_); } } - if (!ctx.DistinctOverKeys && src->IsGroupByColumn(DistinctKey)) { - ctx.Error(Expr->GetPos()) << ErrorDistinctByGroupKey(DistinctKey); + if (!ctx.DistinctOverKeys && src->IsGroupByColumn(DistinctKey_)) { + ctx.Error(Expr_->GetPos()) << ErrorDistinctByGroupKey(DistinctKey_); return false; } - Expr = AstNode("row"); + Expr_ = AstNode("row"); } - if (FakeSource) { - if (!Factory->Init(ctx, FakeSource.Get())) { + if (FakeSource_) { + if (!Factory_->Init(ctx, FakeSource_.Get())) { return false; } - if (AggMode == EAggregateMode::OverWindow) { - Factory = BuildLambda(Pos, Y("type", "extractor"), Y("block", Q(Y( - Y("let", "x", Y("Apply", Factory, "type", "extractor")), + if (AggMode_ == EAggregateMode::OverWindow) { + Factory_ = BuildLambda(Pos_, Y("type", "extractor"), Y("block", Q(Y( + Y("let", "x", Y("Apply", Factory_, "type", "extractor")), Y("return", Y("ToWindowTraits", "x")) )))); } @@ -219,16 +219,16 @@ protected: return true; } - TNodePtr Factory; - TNodePtr Expr; - bool Multi; - bool ValidateArgs; - TString AggApplyName; - TVector<TNodePtr> Exprs; + TNodePtr Factory_; + TNodePtr Expr_; + bool Multi_; + bool ValidateArgs_; + TString AggApplyName_; + TVector<TNodePtr> Exprs_; private: - TSourcePtr FakeSource; - bool DynamicFactory; + TSourcePtr FakeSource_; + bool DynamicFactory_; }; class TAggregationFactoryImpl final : public TAggregationFactory { @@ -239,7 +239,7 @@ public: private: TNodePtr DoClone() const final { - return new TAggregationFactoryImpl(Pos, Name, Func, AggMode, Multi); + return new TAggregationFactoryImpl(Pos_, Name_, Func_, AggMode_, Multi_); } }; @@ -251,39 +251,39 @@ class TKeyPayloadAggregationFactory final : public TAggregationFactory { public: TKeyPayloadAggregationFactory(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) + , FakeSource_(BuildFakeSource(pos)) {} private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 2; if (exprs.size() < adjustArgsCount || exprs.size() > 1 + adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name << " requires " + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires " << adjustArgsCount << " or " << (1 + adjustArgsCount) << " arguments, given: " << exprs.size(); return false; } - if (BlockWindowAggregationWithoutFrameSpec(Pos, GetName(), src, ctx)) { + if (BlockWindowAggregationWithoutFrameSpec(Pos_, GetName(), src, ctx)) { return false; } if (!isFactory) { - Payload = exprs.front(); - Key = exprs[1]; + Payload_ = exprs.front(); + Key_ = exprs[1]; } if (1 + adjustArgsCount == exprs.size()) { - Limit = exprs.back(); - Func += "2"; + Limit_ = exprs.back(); + Func_ += "2"; } else { - Func += "1"; + Func_ += "1"; } - if (Factory) { - Factory = BuildBind(Pos, AggMode == EAggregateMode::OverWindow ? "window_module" : "aggregate_module", Func); + if (Factory_) { + Factory_ = BuildBind(Pos_, AggMode_ == EAggregateMode::OverWindow ? "window_module" : "aggregate_module", Func_); } if (!isFactory) { - Name = src->MakeLocalName(Name); + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -291,9 +291,9 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); if (IsOverWindow() || IsOverWindowDistinct()) { - src->AddTmpWindowColumn(Name); + src->AddTmpWindowColumn(Name_); } } @@ -301,27 +301,27 @@ private: } TNodePtr DoClone() const final { - return new TKeyPayloadAggregationFactory(Pos, Name, Func, AggMode); + return new TKeyPayloadAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetExtractor(bool many, TContext& ctx) const final { Y_UNUSED(ctx); - return BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Payload) : Payload); + return BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Payload_) : Payload_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - auto apply = Y("Apply", Factory, type, - BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Key) : Key), - BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Payload) : Payload)); + auto apply = Y("Apply", Factory_, type, + BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Key_) : Key_), + BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Payload_) : Payload_)); AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - if (Limit) { - apply = L(apply, Limit); + if (Limit_) { + apply = L(apply, Limit_); } } @@ -330,32 +330,32 @@ private: } bool DoInit(TContext& ctx, ISource* src) final { - if (Limit) { - if (!Limit->Init(ctx, FakeSource.Get())) { + if (Limit_) { + if (!Limit_->Init(ctx, FakeSource_.Get())) { return false; } } - if (!Key) { + if (!Key_) { return true; } - if (!Key->Init(ctx, src)) { + if (!Key_->Init(ctx, src)) { return false; } - if (!Payload->Init(ctx, src)) { + if (!Payload_->Init(ctx, src)) { return false; } - if (Key->IsAggregated()) { - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; + if (Key_->IsAggregated()) { + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden"; return false; } return true; } - TSourcePtr FakeSource; - TNodePtr Key, Payload, Limit; + TSourcePtr FakeSource_; + TNodePtr Key_, Payload_, Limit_; }; TAggregationPtr BuildKeyPayloadFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -372,19 +372,19 @@ private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 2; if (exprs.size() != adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name << " requires " << + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires " << adjustArgsCount << " arguments, given: " << exprs.size(); return false; } - if (BlockWindowAggregationWithoutFrameSpec(Pos, GetName(), src, ctx)) { + if (BlockWindowAggregationWithoutFrameSpec(Pos_, GetName(), src, ctx)) { return false; } if (!isFactory) { - Payload = exprs.front(); - Predicate = exprs.back(); - Name = src->MakeLocalName(Name); + Payload_ = exprs.front(); + Predicate_ = exprs.back(); + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -392,9 +392,9 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); if (IsOverWindow() || IsOverWindowDistinct()) { - src->AddTmpWindowColumn(Name); + src->AddTmpWindowColumn(Name_); } } @@ -402,20 +402,20 @@ private: } TNodePtr DoClone() const final { - return new TPayloadPredicateAggregationFactory(Pos, Name, Func, AggMode); + return new TPayloadPredicateAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetExtractor(bool many, TContext& ctx) const final { Y_UNUSED(ctx); - return BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Payload) : Payload); + return BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Payload_) : Payload_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - return Y("Apply", Factory, type, - BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Payload) : Payload), - BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Predicate) : Predicate)); + return Y("Apply", Factory_, type, + BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Payload_) : Payload_), + BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Predicate_) : Predicate_)); } std::vector<ui32> GetFactoryColumnIndices() const final { @@ -423,26 +423,26 @@ private: } bool DoInit(TContext& ctx, ISource* src) final { - if (!Predicate) { + if (!Predicate_) { return true; } - if (!Predicate->Init(ctx, src)) { + if (!Predicate_->Init(ctx, src)) { return false; } - if (!Payload->Init(ctx, src)) { + if (!Payload_->Init(ctx, src)) { return false; } - if (Payload->IsAggregated()) { - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; + if (Payload_->IsAggregated()) { + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden"; return false; } return true; } - TNodePtr Payload, Predicate; + TNodePtr Payload_, Predicate_; }; TAggregationPtr BuildPayloadPredicateFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -459,19 +459,19 @@ private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 2; if (exprs.size() != adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name << " requires " << + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires " << adjustArgsCount << " arguments, given: " << exprs.size(); return false; } - if (BlockWindowAggregationWithoutFrameSpec(Pos, GetName(), src, ctx)) { + if (BlockWindowAggregationWithoutFrameSpec(Pos_, GetName(), src, ctx)) { return false; } if (!isFactory) { - One = exprs.front(); - Two = exprs.back(); - Name = src->MakeLocalName(Name); + One_ = exprs.front(); + Two_ = exprs.back(); + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -479,9 +479,9 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); if (IsOverWindow() || IsOverWindowDistinct()) { - src->AddTmpWindowColumn(Name); + src->AddTmpWindowColumn(Name_); } } @@ -489,41 +489,41 @@ private: } TNodePtr DoClone() const final { - return new TTwoArgsAggregationFactory(Pos, Name, Func, AggMode); + return new TTwoArgsAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetExtractor(bool many, TContext& ctx) const final { Y_UNUSED(ctx); - return BuildLambda(Pos, Y("row"), many ? Y("Unwrap", One) : One); + return BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", One_) : One_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - auto tuple = Q(Y(One, Two)); - return Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), many ? Y("Unwrap", tuple) : tuple)); + auto tuple = Q(Y(One_, Two_)); + return Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", tuple) : tuple)); } bool DoInit(TContext& ctx, ISource* src) final { - if (!One) { + if (!One_) { return true; } - if (!One->Init(ctx, src)) { + if (!One_->Init(ctx, src)) { return false; } - if (!Two->Init(ctx, src)) { + if (!Two_->Init(ctx, src)) { return false; } - if ((One->IsAggregated() || Two->IsAggregated()) && !IsOverWindow() && !IsOverWindowDistinct()) { - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; + if ((One_->IsAggregated() || Two_->IsAggregated()) && !IsOverWindow() && !IsOverWindowDistinct()) { + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden"; return false; } return true; } - TNodePtr One, Two; + TNodePtr One_, Two_; }; TAggregationPtr BuildTwoArgsFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -534,21 +534,21 @@ class THistogramAggregationFactory final : public TAggregationFactory { public: THistogramAggregationFactory(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) - , Weight(Y("Double", Q("1.0"))) - , Intervals(Y("Uint32", Q("100"))) + , FakeSource_(BuildFakeSource(pos)) + , Weight_(Y("Double", Q("1.0"))) + , Intervals_(Y("Uint32", Q("100"))) {} private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { if (isFactory) { if (exprs.size() > 1) { - ctx.Error(Pos) << "Aggregation function factory " << Name << " requires 0 or 1 argument(s), given: " << exprs.size(); + ctx.Error(Pos_) << "Aggregation function factory " << Name_ << " requires 0 or 1 argument(s), given: " << exprs.size(); return false; } } else { if (exprs.empty() || exprs.size() > 3) { - ctx.Error(Pos) << "Aggregation function " << Name << " requires one, two or three arguments, given: " << exprs.size(); + ctx.Error(Pos_) << "Aggregation function " << Name_ << " requires one, two or three arguments, given: " << exprs.size(); return false; } } @@ -559,29 +559,29 @@ private: switch (exprs.size()) { case 2U: if (!integer) { - Weight = exprs.back(); + Weight_ = exprs.back(); } break; case 3U: if (!integer) { - ctx.Error(Pos) << "Aggregation function " << Name << " for case with 3 arguments should have third argument of integer type"; + ctx.Error(Pos_) << "Aggregation function " << Name_ << " for case with 3 arguments should have third argument of integer type"; return false; } - Weight = exprs[1]; + Weight_ = exprs[1]; break; } if (exprs.size() >= 2 && integer) { - Intervals = Y("Cast", exprs.back(), Q("Uint32")); + Intervals_ = Y("Cast", exprs.back(), Q("Uint32")); } } else { if (exprs.size() >= 1) { const auto integer = exprs.back()->IsIntegerLiteral(); if (!integer) { - ctx.Error(Pos) << "Aggregation function factory " << Name << " should have second interger argument"; + ctx.Error(Pos_) << "Aggregation function factory " << Name_ << " should have second interger argument"; return false; } - Intervals = Y("Cast", exprs.back(), Q("Uint32")); + Intervals_ = Y("Cast", exprs.back(), Q("Uint32")); } } @@ -589,21 +589,21 @@ private: } TNodePtr DoClone() const final { - return new THistogramAggregationFactory(Pos, Name, Func, AggMode); + return new THistogramAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - auto apply = Y("Apply", Factory, type, - BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Expr) : Expr), - BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Weight) : Weight)); + auto apply = Y("Apply", Factory_, type, + BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Expr_) : Expr_), + BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Weight_) : Weight_)); AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, Intervals); + apply = L(apply, Intervals_); } std::vector<ui32> GetFactoryColumnIndices() const final { @@ -611,18 +611,18 @@ private: } bool DoInit(TContext& ctx, ISource* src) final { - if (!Weight->Init(ctx, src)) { + if (!Weight_->Init(ctx, src)) { return false; } - if (!Intervals->Init(ctx, FakeSource.Get())) { + if (!Intervals_->Init(ctx, FakeSource_.Get())) { return false; } return TAggregationFactory::DoInit(ctx, src); } - TSourcePtr FakeSource; - TNodePtr Weight, Intervals; + TSourcePtr FakeSource_; + TNodePtr Weight_, Intervals_; }; TAggregationPtr BuildHistogramFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -633,73 +633,73 @@ class TLinearHistogramAggregationFactory final : public TAggregationFactory { public: TLinearHistogramAggregationFactory(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) - , BinSize(Y("Double", Q("10.0"))) - , Minimum(Y("Double", Q(ToString(-1.0 * Max<double>())))) - , Maximum(Y("Double", Q(ToString(Max<double>())))) + , FakeSource_(BuildFakeSource(pos)) + , BinSize_(Y("Double", Q("10.0"))) + , Minimum_(Y("Double", Q(ToString(-1.0 * Max<double>())))) + , Maximum_(Y("Double", Q(ToString(Max<double>())))) {} private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { if (isFactory) { if (exprs.size() > 3) { - ctx.Error(Pos) << "Aggregation function " << Name << " requires zero to three arguments, given: " << exprs.size(); + ctx.Error(Pos_) << "Aggregation function " << Name_ << " requires zero to three arguments, given: " << exprs.size(); return false; } } else { if (exprs.empty() || exprs.size() > 4) { - ctx.Error(Pos) << "Aggregation function " << Name << " requires one to four arguments, given: " << exprs.size(); + ctx.Error(Pos_) << "Aggregation function " << Name_ << " requires one to four arguments, given: " << exprs.size(); return false; } } if (exprs.size() > 1 - isFactory) { - BinSize = exprs[1 - isFactory]; + BinSize_ = exprs[1 - isFactory]; } if (exprs.size() > 2 - isFactory) { - Minimum = exprs[2 - isFactory]; + Minimum_ = exprs[2 - isFactory]; } if (exprs.size() > 3 - isFactory) { - Maximum = exprs[3 - isFactory]; + Maximum_ = exprs[3 - isFactory]; } return TAggregationFactory::InitAggr(ctx, isFactory, src, node, isFactory ? TVector<TNodePtr>() : TVector<TNodePtr>(1, exprs.front())); } TNodePtr DoClone() const final { - return new TLinearHistogramAggregationFactory(Pos, Name, Func, AggMode); + return new TLinearHistogramAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - return Y("Apply", Factory, type, - BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Expr) : Expr), - BinSize, Minimum, Maximum); + return Y("Apply", Factory_, type, + BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Expr_) : Expr_), + BinSize_, Minimum_, Maximum_); } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, BinSize, Minimum, Maximum); + apply = L(apply, BinSize_, Minimum_, Maximum_); } bool DoInit(TContext& ctx, ISource* src) final { - if (!BinSize->Init(ctx, FakeSource.Get())) { + if (!BinSize_->Init(ctx, FakeSource_.Get())) { return false; } - if (!Minimum->Init(ctx, FakeSource.Get())) { + if (!Minimum_->Init(ctx, FakeSource_.Get())) { return false; } - if (!Maximum->Init(ctx, FakeSource.Get())) { + if (!Maximum_->Init(ctx, FakeSource_.Get())) { return false; } return TAggregationFactory::DoInit(ctx, src); } - TSourcePtr FakeSource; - TNodePtr BinSize, Minimum, Maximum; + TSourcePtr FakeSource_; + TNodePtr BinSize_, Minimum_, Maximum_; }; TAggregationPtr BuildLinearHistogramFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -710,33 +710,33 @@ class TPercentileFactory final : public TAggregationFactory { public: TPercentileFactory(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) + , FakeSource_(BuildFakeSource(pos)) {} private: const TString* GetGenericKey() const final { - return Column; + return Column_; } void Join(IAggregation* aggr) final { const auto percentile = dynamic_cast<TPercentileFactory*>(aggr); YQL_ENSURE(percentile); - YQL_ENSURE(Column && percentile->Column && *Column == *percentile->Column); - YQL_ENSURE(AggMode == percentile->AggMode); - Percentiles.insert(percentile->Percentiles.cbegin(), percentile->Percentiles.cend()); - percentile->Percentiles.clear(); + YQL_ENSURE(Column_ && percentile->Column_ && *Column_ == *percentile->Column_); + YQL_ENSURE(AggMode_ == percentile->AggMode_); + Percentiles_.insert(percentile->Percentiles_.cbegin(), percentile->Percentiles_.cend()); + percentile->Percentiles_.clear(); } bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 1; if (exprs.size() < 0 + adjustArgsCount || exprs.size() > 1 + adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name << " requires " + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires " << (0 + adjustArgsCount) << " or " << (1 + adjustArgsCount) << " arguments, given: " << exprs.size(); return false; } if (!isFactory) { - Column = exprs.front()->GetColumnName(); + Column_ = exprs.front()->GetColumnName(); } if (!TAggregationFactory::InitAggr(ctx, isFactory, src, node, isFactory ? TVector<TNodePtr>() : TVector<TNodePtr>(1, exprs.front()))) @@ -745,7 +745,7 @@ private: TNodePtr x; if (1 + adjustArgsCount == exprs.size()) { x = exprs.back(); - if (!x->Init(ctx, FakeSource.Get())) { + if (!x->Init(ctx, FakeSource_.Get())) { return false; } } else { @@ -753,53 +753,53 @@ private: } if (isFactory) { - FactoryPercentile = x; + FactoryPercentile_ = x; } else { - Percentiles.emplace(Name, x); + Percentiles_.emplace(Name_, x); } return true; } TNodePtr DoClone() const final { - return new TPercentileFactory(Pos, Name, Func, AggMode); + return new TPercentileFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - TNodePtr percentiles(Percentiles.cbegin()->second); + TNodePtr percentiles(Percentiles_.cbegin()->second); - if (Percentiles.size() > 1U) { + if (Percentiles_.size() > 1U) { percentiles = Y(); - for (const auto& percentile : Percentiles) { + for (const auto& percentile : Percentiles_) { percentiles = L(percentiles, percentile.second); } percentiles = Q(percentiles); } - return Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Expr) : Expr), percentiles); + return Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Expr_) : Expr_), percentiles); } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, FactoryPercentile); + apply = L(apply, FactoryPercentile_); } std::pair<TNodePtr, bool> AggregationTraits(const TNodePtr& type, bool overState, bool many, bool allowAggApply, TContext& ctx) const final { - if (Percentiles.empty()) + if (Percentiles_.empty()) return { TNodePtr(), true }; - TNodePtr names(Q(Percentiles.cbegin()->first)); + TNodePtr names(Q(Percentiles_.cbegin()->first)); - if (Percentiles.size() > 1U) { + if (Percentiles_.size() > 1U) { names = Y(); - for (const auto& percentile : Percentiles) + for (const auto& percentile : Percentiles_) names = L(names, Q(percentile.first)); names = Q(names); } - const bool distinct = AggMode == EAggregateMode::Distinct; - const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos, DistinctKey))) : type; + const bool distinct = AggMode_ == EAggregateMode::Distinct; + const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos_, DistinctKey_))) : type; auto apply = GetApply(listType, many, allowAggApply, ctx); if (!apply) { return { TNodePtr(), false }; @@ -811,12 +811,12 @@ private: } return { distinct ? - Q(Y(names, wrapped, BuildQuotedAtom(Pos, DistinctKey))) : + Q(Y(names, wrapped, BuildQuotedAtom(Pos_, DistinctKey_))) : Q(Y(names, wrapped)), true }; } bool DoInit(TContext& ctx, ISource* src) final { - for (const auto& p : Percentiles) { + for (const auto& p : Percentiles_) { if (!p.second->Init(ctx, src)) { return false; } @@ -825,10 +825,10 @@ private: return TAggregationFactory::DoInit(ctx, src); } - TSourcePtr FakeSource; - std::multimap<TString, TNodePtr> Percentiles; - TNodePtr FactoryPercentile; - const TString* Column = nullptr; + TSourcePtr FakeSource_; + std::multimap<TString, TNodePtr> Percentiles_; + TNodePtr FactoryPercentile_; + const TString* Column_ = nullptr; }; TAggregationPtr BuildPercentileFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -839,7 +839,7 @@ class TTopFreqFactory final : public TAggregationFactory { public: TTopFreqFactory(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) + , FakeSource_(BuildFakeSource(pos)) {} private: @@ -853,7 +853,7 @@ private: const ui32 MinBuffer = 100; if (exprs.size() < adjustArgsCount || exprs.size() > 2 + adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory? "factory " : "") << Name << + ctx.Error(Pos_) << "Aggregation function " << (isFactory? "factory " : "") << Name_ << " requires " << adjustArgsCount << " to " << (2 + adjustArgsCount) << " arguments, given: " << exprs.size(); return false; } @@ -866,7 +866,7 @@ private: if (1 + adjustArgsCount <= exprs.size()) { n = exprs[adjustArgsCount]; - if (!n->Init(ctx, FakeSource.Get())) { + if (!n->Init(ctx, FakeSource_.Get())) { return false; } n = Y("SafeCast", n, Q("Uint32")); @@ -875,7 +875,7 @@ private: n = Y("Coalesce", n, Y("Uint32", Q("1"))); if (2 + adjustArgsCount == exprs.size()) { buffer = exprs[1 + adjustArgsCount]; - if (!buffer->Init(ctx, FakeSource.Get())) { + if (!buffer->Init(ctx, FakeSource_.Get())) { return false; } @@ -888,54 +888,54 @@ private: auto x = TPair{ n, buffer }; if (isFactory) { - TopFreqFactoryParams = x; + TopFreqFactoryParams_ = x; } else { - TopFreqs.emplace(Name, x); + TopFreqs_.emplace(Name_, x); } return true; } TNodePtr DoClone() const final { - return new TTopFreqFactory(Pos, Name, Func, AggMode); + return new TTopFreqFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - TPair topFreqs(TopFreqs.cbegin()->second); + TPair topFreqs(TopFreqs_.cbegin()->second); - if (TopFreqs.size() > 1U) { + if (TopFreqs_.size() > 1U) { topFreqs = { Y(), Y() }; - for (const auto& topFreq : TopFreqs) { + for (const auto& topFreq : TopFreqs_) { topFreqs = { L(topFreqs.first, topFreq.second.first), L(topFreqs.second, topFreq.second.second) }; } topFreqs = { Q(topFreqs.first), Q(topFreqs.second) }; } - auto apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Expr) : Expr), topFreqs.first, topFreqs.second); + auto apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Expr_) : Expr_), topFreqs.first, topFreqs.second); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, TopFreqFactoryParams.first, TopFreqFactoryParams.second); + apply = L(apply, TopFreqFactoryParams_.first, TopFreqFactoryParams_.second); } std::pair<TNodePtr, bool> AggregationTraits(const TNodePtr& type, bool overState, bool many, bool allowAggApply, TContext& ctx) const final { - if (TopFreqs.empty()) + if (TopFreqs_.empty()) return { TNodePtr(), true }; - TNodePtr names(Q(TopFreqs.cbegin()->first)); + TNodePtr names(Q(TopFreqs_.cbegin()->first)); - if (TopFreqs.size() > 1U) { + if (TopFreqs_.size() > 1U) { names = Y(); - for (const auto& topFreq : TopFreqs) + for (const auto& topFreq : TopFreqs_) names = L(names, Q(topFreq.first)); names = Q(names); } - const bool distinct = AggMode == EAggregateMode::Distinct; - const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos, DistinctKey))) : type; + const bool distinct = AggMode_ == EAggregateMode::Distinct; + const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos_, DistinctKey_))) : type; auto apply = GetApply(listType, many, allowAggApply, ctx); if (!apply) { return { nullptr, false }; @@ -947,12 +947,12 @@ private: } return { distinct ? - Q(Y(names, wrapped, BuildQuotedAtom(Pos, DistinctKey))) : + Q(Y(names, wrapped, BuildQuotedAtom(Pos_, DistinctKey_))) : Q(Y(names, wrapped)), true }; } bool DoInit(TContext& ctx, ISource* src) final { - for (const auto& topFreq : TopFreqs) { + for (const auto& topFreq : TopFreqs_) { if (!topFreq.second.first->Init(ctx, src)) { return false; } @@ -965,9 +965,9 @@ private: return TAggregationFactory::DoInit(ctx, src); } - std::multimap<TString, TPair> TopFreqs; - TPair TopFreqFactoryParams; - TSourcePtr FakeSource; + std::multimap<TString, TPair> TopFreqs_; + TPair TopFreqFactoryParams_; + TSourcePtr FakeSource_; }; TAggregationPtr BuildTopFreqFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -979,33 +979,33 @@ class TTopAggregationFactory final : public TAggregationFactory { public: TTopAggregationFactory(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) + , FakeSource_(BuildFakeSource(pos)) {} private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 1 : (HasKey ? 3 : 2); if (exprs.size() != adjustArgsCount) { - ctx.Error(Pos) << "Aggregation function " << (isFactory ? "factory " : "") << Name << " requires " + ctx.Error(Pos_) << "Aggregation function " << (isFactory ? "factory " : "") << Name_ << " requires " << adjustArgsCount << " arguments, given: " << exprs.size(); return false; } - if (BlockWindowAggregationWithoutFrameSpec(Pos, GetName(), src, ctx)) { + if (BlockWindowAggregationWithoutFrameSpec(Pos_, GetName(), src, ctx)) { return false; } if (!isFactory) { - Payload = exprs[0]; + Payload_ = exprs[0]; if (HasKey) { - Key = exprs[1]; + Key_ = exprs[1]; } } - Count = exprs.back(); + Count_ = exprs.back(); if (!isFactory) { - Name = src->MakeLocalName(Name); + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -1013,9 +1013,9 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); if (IsOverWindow() || IsOverWindowDistinct()) { - src->AddTmpWindowColumn(Name); + src->AddTmpWindowColumn(Name_); } } @@ -1023,7 +1023,7 @@ private: } TNodePtr DoClone() const final { - return new TTopAggregationFactory(Pos, Name, Func, AggMode); + return new TTopAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { @@ -1031,18 +1031,18 @@ private: Y_UNUSED(allowAggApply); TNodePtr apply; if (HasKey) { - apply = Y("Apply", Factory, type, - BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Key) : Key), - BuildLambda(Pos, Y("row"), many ? Y("Payload", Payload) : Payload)); + apply = Y("Apply", Factory_, type, + BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Key_) : Key_), + BuildLambda(Pos_, Y("row"), many ? Y("Payload", Payload_) : Payload_)); } else { - apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Payload) : Payload)); + apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Payload_) : Payload_)); } AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, Count); + apply = L(apply, Count_); } std::vector<ui32> GetFactoryColumnIndices() const final { @@ -1054,33 +1054,33 @@ private: } bool DoInit(TContext& ctx, ISource* src) final { - if (!Count->Init(ctx, FakeSource.Get())) { + if (!Count_->Init(ctx, FakeSource_.Get())) { return false; } - if (!Payload) { + if (!Payload_) { return true; } if (HasKey) { - if (!Key->Init(ctx, src)) { + if (!Key_->Init(ctx, src)) { return false; } } - if (!Payload->Init(ctx, src)) { + if (!Payload_->Init(ctx, src)) { return false; } - if ((HasKey && Key->IsAggregated()) || (!HasKey && Payload->IsAggregated())) { - ctx.Error(Pos) << "Aggregation of aggregated values is forbidden"; + if ((HasKey && Key_->IsAggregated()) || (!HasKey && Payload_->IsAggregated())) { + ctx.Error(Pos_) << "Aggregation of aggregated values is forbidden"; return false; } return true; } - TSourcePtr FakeSource; - TNodePtr Key, Payload, Count; + TSourcePtr FakeSource_; + TNodePtr Key_, Payload_, Count_; }; template <bool HasKey> @@ -1101,27 +1101,27 @@ private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 1; if (exprs.size() < adjustArgsCount || exprs.size() > 1 + adjustArgsCount) { - ctx.Error(Pos) << Name << " aggregation function " << (isFactory ? "factory " : "") << " requires " << + ctx.Error(Pos_) << Name_ << " aggregation function " << (isFactory ? "factory " : "") << " requires " << adjustArgsCount << " or " << (1 + adjustArgsCount) << " argument(s), given: " << exprs.size(); return false; } - Precision = 14; + Precision_ = 14; if (1 + adjustArgsCount <= exprs.size()) { auto posSecondArg = exprs[adjustArgsCount]->GetPos(); - if (!Parseui32(exprs[adjustArgsCount], Precision)) { - ctx.Error(posSecondArg) << Name << ": invalid argument, numeric literal is expected"; + if (!Parseui32(exprs[adjustArgsCount], Precision_)) { + ctx.Error(posSecondArg) << Name_ << ": invalid argument, numeric literal is expected"; return false; } } - if (Precision > 18 || Precision < 4) { - ctx.Error(Pos) << Name << ": precision is expected to be between 4 and 18 (inclusive), got " << Precision; + if (Precision_ > 18 || Precision_ < 4) { + ctx.Error(Pos_) << Name_ << ": precision is expected to be between 4 and 18 (inclusive), got " << Precision_; return false; } if (!isFactory) { - Expr = exprs[0]; - Name = src->MakeLocalName(Name); + Expr_ = exprs[0]; + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -1129,9 +1129,9 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); if (IsOverWindow() || IsOverWindowDistinct()) { - src->AddTmpWindowColumn(Name); + src->AddTmpWindowColumn(Name_); } } @@ -1139,23 +1139,23 @@ private: } TNodePtr DoClone() const final { - return new TCountDistinctEstimateAggregationFactory(Pos, Name, Func, AggMode); + return new TCountDistinctEstimateAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - auto apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Expr) : Expr)); + auto apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Expr_) : Expr_)); AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, Y("Uint32", Q(ToString(Precision)))); + apply = L(apply, Y("Uint32", Q(ToString(Precision_)))); } private: - ui32 Precision = 0; + ui32 Precision_ = 0; }; TAggregationPtr BuildCountDistinctEstimateFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -1166,7 +1166,7 @@ class TListAggregationFactory final : public TAggregationFactory { public: TListAggregationFactory(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) + , FakeSource_(BuildFakeSource(pos)) { } @@ -1176,27 +1176,27 @@ private: ui32 minArgs = (0 + adjustArgsCount); ui32 maxArgs = (1 + adjustArgsCount); if (exprs.size() < minArgs || exprs.size() > maxArgs) { - ctx.Error(Pos) << "List aggregation " << (isFactory ? "factory " : "") << "function require " << minArgs + ctx.Error(Pos_) << "List aggregation " << (isFactory ? "factory " : "") << "function require " << minArgs << " or " << maxArgs << " arguments, given: " << exprs.size(); return false; } - if (BlockWindowAggregationWithoutFrameSpec(Pos, GetName(), src, ctx)) { + if (BlockWindowAggregationWithoutFrameSpec(Pos_, GetName(), src, ctx)) { return false; } - Limit = nullptr; + Limit_ = nullptr; if (adjustArgsCount + 1U <= exprs.size()) { auto posSecondArg = exprs[adjustArgsCount]->GetPos(); - Limit = exprs[adjustArgsCount]; - if (!Limit->Init(ctx, FakeSource.Get())) { + Limit_ = exprs[adjustArgsCount]; + if (!Limit_->Init(ctx, FakeSource_.Get())) { return false; } } if (!isFactory) { - Expr = exprs[0]; - Name = src->MakeLocalName(Name); + Expr_ = exprs[0]; + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -1204,9 +1204,9 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); if (IsOverWindow() || IsOverWindowDistinct()) { - src->AddTmpWindowColumn(Name); + src->AddTmpWindowColumn(Name_); } } @@ -1214,28 +1214,28 @@ private: } TNodePtr DoClone() const final { - return new TListAggregationFactory(Pos, Name, Func, AggMode); + return new TListAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - auto apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Expr) : Expr)); + auto apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Expr_) : Expr_)); AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - if (!Limit) { + if (!Limit_) { apply = L(apply, Y("Uint64", Q("0"))); } else { - apply = L(apply, Limit); + apply = L(apply, Limit_); } } private: - TSourcePtr FakeSource; - TNodePtr Limit; + TSourcePtr FakeSource_; + TNodePtr Limit_; }; TAggregationPtr BuildListFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -1252,58 +1252,58 @@ private: bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) final { ui32 adjustArgsCount = isFactory ? 0 : 1; if (exprs.size() < (3 + adjustArgsCount) || exprs.size() > (7 + adjustArgsCount)) { - ctx.Error(Pos) << "User defined aggregation function " << (isFactory ? "factory " : "") << " requires " << + ctx.Error(Pos_) << "User defined aggregation function " << (isFactory ? "factory " : "") << " requires " << (3 + adjustArgsCount) << " to " << (7 + adjustArgsCount) << " arguments, given: " << exprs.size(); return false; } - Lambdas[0] = BuildLambda(Pos, Y("value", "parent"), Y("NamedApply", exprs[adjustArgsCount], Q(Y("value")), Y("AsStruct"), Y("DependsOn", "parent"))); - Lambdas[1] = BuildLambda(Pos, Y("value", "state", "parent"), Y("NamedApply", exprs[adjustArgsCount + 1], Q(Y("state", "value")), Y("AsStruct"), Y("DependsOn", "parent"))); - Lambdas[2] = BuildLambda(Pos, Y("one", "two"), Y("IfType", exprs[adjustArgsCount + 2], Y("NullType"), - BuildLambda(Pos, Y(), Y("Void")), - BuildLambda(Pos, Y(), Y("Apply", exprs[adjustArgsCount + 2], "one", "two")))); + Lambdas_[0] = BuildLambda(Pos_, Y("value", "parent"), Y("NamedApply", exprs[adjustArgsCount], Q(Y("value")), Y("AsStruct"), Y("DependsOn", "parent"))); + Lambdas_[1] = BuildLambda(Pos_, Y("value", "state", "parent"), Y("NamedApply", exprs[adjustArgsCount + 1], Q(Y("state", "value")), Y("AsStruct"), Y("DependsOn", "parent"))); + Lambdas_[2] = BuildLambda(Pos_, Y("one", "two"), Y("IfType", exprs[adjustArgsCount + 2], Y("NullType"), + BuildLambda(Pos_, Y(), Y("Void")), + BuildLambda(Pos_, Y(), Y("Apply", exprs[adjustArgsCount + 2], "one", "two")))); - for (size_t i = 3U; i < Lambdas.size(); ++i) { + for (size_t i = 3U; i < Lambdas_.size(); ++i) { const auto j = adjustArgsCount + i; - Lambdas[i] = BuildLambda(Pos, Y("state"), j >= exprs.size() ? AstNode("state") : Y("Apply", exprs[j], "state")); + Lambdas_[i] = BuildLambda(Pos_, Y("state"), j >= exprs.size() ? AstNode("state") : Y("Apply", exprs[j], "state")); } - DefVal = (exprs.size() == (7 + adjustArgsCount)) ? exprs[adjustArgsCount + 6] : Y("Null"); + DefVal_ = (exprs.size() == (7 + adjustArgsCount)) ? exprs[adjustArgsCount + 6] : Y("Null"); return TAggregationFactory::InitAggr(ctx, isFactory, src, node, isFactory ? TVector<TNodePtr>() : TVector<TNodePtr>(1, exprs.front())); } TNodePtr DoClone() const final { - return new TUserDefinedAggregationFactory(Pos, Name, Func, AggMode); + return new TUserDefinedAggregationFactory(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - auto apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Expr) : Expr)); + auto apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Expr_) : Expr_)); AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, Lambdas[0], Lambdas[1], Lambdas[2], Lambdas[3], Lambdas[4], Lambdas[5], DefVal); + apply = L(apply, Lambdas_[0], Lambdas_[1], Lambdas_[2], Lambdas_[3], Lambdas_[4], Lambdas_[5], DefVal_); } bool DoInit(TContext& ctx, ISource* src) final { - for (const auto& lambda : Lambdas) { + for (const auto& lambda : Lambdas_) { if (!lambda->Init(ctx, src)) { return false; } } - if (!DefVal->Init(ctx, src)) { + if (!DefVal_->Init(ctx, src)) { return false; } return TAggregationFactory::DoInit(ctx, src); } - std::array<TNodePtr, 6> Lambdas; - TNodePtr DefVal; + std::array<TNodePtr, 6> Lambdas_; + TNodePtr DefVal_; }; TAggregationPtr BuildUserDefinedFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { @@ -1318,21 +1318,21 @@ public: private: TNodePtr DoClone() const final { - return new TCountAggregation(Pos, Name, Func, AggMode); + return new TCountAggregation(Pos_, Name_, Func_, AggMode_); } bool DoInit(TContext& ctx, ISource* src) final { - if (!Expr) { + if (!Expr_) { return true; } - if (Expr->IsAsterisk()) { - Expr = Y("Void"); + if (Expr_->IsAsterisk()) { + Expr_ = Y("Void"); } - if (!Expr->Init(ctx, src)) { + if (!Expr_->Init(ctx, src)) { return false; } - Expr->SetCountHint(Expr->IsConstant()); + Expr_->SetCountHint(Expr_->IsConstant()); return TAggregationFactory::DoInit(ctx, src); } }; @@ -1345,17 +1345,17 @@ class TPGFactoryAggregation final : public TAggregationFactory { public: TPGFactoryAggregation(TPosition pos, const TString& name, EAggregateMode aggMode) : TAggregationFactory(pos, name, "", aggMode, false, false) - , PgFunc(Name) + , PgFunc_(Name_) {} bool InitAggr(TContext& ctx, bool isFactory, ISource* src, TAstListNode& node, const TVector<TNodePtr>& exprs) override { auto ret = TAggregationFactory::InitAggr(ctx, isFactory, src, node, exprs); if (ret) { if (isFactory) { - Factory = BuildLambda(Pos, Y("type", "extractor"), Y(AggMode == EAggregateMode::OverWindow ? "PgWindowTraitsTuple" : "PgAggregationTraitsTuple", - Q(PgFunc), Y("ListItemType", "type"), "extractor")); + Factory_ = BuildLambda(Pos_, Y("type", "extractor"), Y(AggMode_ == EAggregateMode::OverWindow ? "PgWindowTraitsTuple" : "PgAggregationTraitsTuple", + Q(PgFunc_), Y("ListItemType", "type"), "extractor")); } else { - Lambda = BuildLambda(Pos, Y("row"), exprs); + Lambda_ = BuildLambda(Pos_, Y("row"), exprs); } } @@ -1372,22 +1372,22 @@ public: Y_UNUSED(many); Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - if (ShouldEmitAggApply(ctx) && allowAggApply && AggMode != EAggregateMode::OverWindow) { + if (ShouldEmitAggApply(ctx) && allowAggApply && AggMode_ != EAggregateMode::OverWindow) { return Y("AggApply", - Q("pg_" + to_lower(PgFunc)), Y("ListItemType", type), Lambda); + Q("pg_" + to_lower(PgFunc_)), Y("ListItemType", type), Lambda_); } - return Y(AggMode == EAggregateMode::OverWindow ? "PgWindowTraits" : "PgAggregationTraits", - Q(PgFunc), Y("ListItemType", type), Lambda); + return Y(AggMode_ == EAggregateMode::OverWindow ? "PgWindowTraits" : "PgAggregationTraits", + Q(PgFunc_), Y("ListItemType", type), Lambda_); } private: TNodePtr DoClone() const final { - return new TPGFactoryAggregation(Pos, Name, AggMode); + return new TPGFactoryAggregation(Pos_, Name_, AggMode_); } - TString PgFunc; - TNodePtr Lambda; + TString PgFunc_; + TNodePtr Lambda_; }; TAggregationPtr BuildPGFactoryAggregation(TPosition pos, const TString& name, EAggregateMode aggMode) { @@ -1399,7 +1399,7 @@ public: public: TNthValueFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) : TAggregationFactory(pos, name, factory, aggMode) - , FakeSource(BuildFakeSource(pos)) + , FakeSource_(BuildFakeSource(pos)) { } @@ -1408,23 +1408,23 @@ private: ui32 adjustArgsCount = isFactory ? 0 : 1; ui32 expectedArgs = (1 + adjustArgsCount); if (exprs.size() != expectedArgs) { - ctx.Error(Pos) << "NthValue aggregation " << (isFactory ? "factory " : "") << "function require " + ctx.Error(Pos_) << "NthValue aggregation " << (isFactory ? "factory " : "") << "function require " << expectedArgs << " arguments, given: " << exprs.size(); return false; } - if (BlockWindowAggregationWithoutFrameSpec(Pos, GetName(), src, ctx)) { + if (BlockWindowAggregationWithoutFrameSpec(Pos_, GetName(), src, ctx)) { return false; } - Index = exprs[adjustArgsCount]; - if (!Index->Init(ctx, FakeSource.Get())) { + Index_ = exprs[adjustArgsCount]; + if (!Index_->Init(ctx, FakeSource_.Get())) { return false; } if (!isFactory) { - Expr = exprs[0]; - Name = src->MakeLocalName(Name); + Expr_ = exprs[0]; + Name_ = src->MakeLocalName(Name_); } if (!Init(ctx, src)) { @@ -1432,9 +1432,9 @@ private: } if (!isFactory) { - node.Add("Member", "row", Q(Name)); + node.Add("Member", "row", Q(Name_)); if (IsOverWindow()) { - src->AddTmpWindowColumn(Name); + src->AddTmpWindowColumn(Name_); } } @@ -1442,24 +1442,24 @@ private: } TNodePtr DoClone() const final { - return new TNthValueFactoryAggregation(Pos, Name, Func, AggMode); + return new TNthValueFactoryAggregation(Pos_, Name_, Func_, AggMode_); } TNodePtr GetApply(const TNodePtr& type, bool many, bool allowAggApply, TContext& ctx) const final { Y_UNUSED(ctx); Y_UNUSED(allowAggApply); - auto apply = Y("Apply", Factory, type, BuildLambda(Pos, Y("row"), many ? Y("Unwrap", Expr) : Expr)); + auto apply = Y("Apply", Factory_, type, BuildLambda(Pos_, Y("row"), many ? Y("Unwrap", Expr_) : Expr_)); AddFactoryArguments(apply); return apply; } void AddFactoryArguments(TNodePtr& apply) const final { - apply = L(apply, Index); + apply = L(apply, Index_); } private: - TSourcePtr FakeSource; - TNodePtr Index; + TSourcePtr FakeSource_; + TNodePtr Index_; }; TAggregationPtr BuildNthFactoryAggregation(TPosition pos, const TString& name, const TString& factory, EAggregateMode aggMode) { diff --git a/yql/essentials/sql/v1/builtin.cpp b/yql/essentials/sql/v1/builtin.cpp index 0a67e6645c1..80fe3c2a93a 100644 --- a/yql/essentials/sql/v1/builtin.cpp +++ b/yql/essentials/sql/v1/builtin.cpp @@ -68,22 +68,22 @@ class TGroupingNode final: public TAstListNode { public: TGroupingNode(TPosition pos, const TVector<TNodePtr>& args) : TAstListNode(pos) - , Args(args) + , Args_(args) {} bool DoInit(TContext& ctx, ISource* src) final { if (!src) { - ctx.Error(Pos) << "Grouping function should have source"; + ctx.Error(Pos_) << "Grouping function should have source"; return false; } TVector<TString> columns; - columns.reserve(Args.size()); + columns.reserve(Args_.size()); const bool isJoin = src->GetJoin(); ISource* composite = src->GetCompositeSource(); - for (const auto& node: Args) { + for (const auto& node: Args_) { auto namePtr = node->GetColumnName(); if (!namePtr || !*namePtr) { - ctx.Error(Pos) << "GROUPING function should use columns as arguments"; + ctx.Error(Pos_) << "GROUPING function should use columns as arguments"; return false; } TString column = *namePtr; @@ -104,36 +104,36 @@ public: if (!src->AddGrouping(ctx, columns, groupingColumn)) { return false; } - Nodes.push_back(BuildAtom(Pos, "Member")); - Nodes.push_back(BuildAtom(Pos, "row")); - Nodes.push_back(BuildQuotedAtom(Pos, groupingColumn)); + Nodes_.push_back(BuildAtom(Pos_, "Member")); + Nodes_.push_back(BuildAtom(Pos_, "row")); + Nodes_.push_back(BuildQuotedAtom(Pos_, groupingColumn)); return TAstListNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TGroupingNode(Pos, CloneContainer(Args)); + return new TGroupingNode(Pos_, CloneContainer(Args_)); } private: - const TVector<TNodePtr> Args; + const TVector<TNodePtr> Args_; }; class TBasicAggrFunc final: public TAstListNode { public: TBasicAggrFunc(TPosition pos, const TString& name, TAggregationPtr aggr, const TVector<TNodePtr>& args) : TAstListNode(pos) - , Name(name) - , Aggr(aggr) - , Args(args) + , Name_(name) + , Aggr_(aggr) + , Args_(args) {} TCiString GetName() const { - return Name; + return Name_; } bool DoInit(TContext& ctx, ISource* src) final { if (!src) { - ctx.Error(Pos) << "Unable to use aggregation function '" << Name << "' without data source"; + ctx.Error(Pos_) << "Unable to use aggregation function '" << Name_ << "' without data source"; return false; } if (!DoInitAggregation(ctx, src)) { @@ -144,11 +144,11 @@ public: } void CollectPreaggregateExprs(TContext& ctx, ISource& src, TVector<INode::TPtr>& exprs) override { - if (Args.empty() || (Aggr->GetAggregationMode() != EAggregateMode::Distinct && Aggr->GetAggregationMode() != EAggregateMode::OverWindowDistinct)) { + if (Args_.empty() || (Aggr_->GetAggregationMode() != EAggregateMode::Distinct && Aggr_->GetAggregationMode() != EAggregateMode::OverWindowDistinct)) { return; } - auto& expr = Args.front(); + auto& expr = Args_.front(); // need to initialize expr before checking whether it is a column auto clone = expr->Clone(); @@ -161,65 +161,65 @@ public: return; } - auto tmpColumn = src.MakeLocalName("_yql_preagg_" + Name); + auto tmpColumn = src.MakeLocalName("_yql_preagg_" + Name_); YQL_ENSURE(!expr->GetLabel()); expr->SetLabel(tmpColumn); - PreaggregateExpr = expr; - exprs.push_back(PreaggregateExpr); + PreaggregateExpr_ = expr; + exprs.push_back(PreaggregateExpr_); expr = BuildColumn(expr->GetPos(), tmpColumn); - Aggr->MarkKeyColumnAsGenerated(); + Aggr_->MarkKeyColumnAsGenerated(); } TNodePtr DoClone() const final { - TAggregationPtr aggrClone = static_cast<IAggregation*>(Aggr->Clone().Release()); - return new TBasicAggrFunc(Pos, Name, aggrClone, CloneContainer(Args)); + TAggregationPtr aggrClone = static_cast<IAggregation*>(Aggr_->Clone().Release()); + return new TBasicAggrFunc(Pos_, Name_, aggrClone, CloneContainer(Args_)); } TAggregationPtr GetAggregation() const override { - return Aggr; + return Aggr_; } private: bool DoInitAggregation(TContext& ctx, ISource* src) { - if (PreaggregateExpr) { - YQL_ENSURE(PreaggregateExpr->HasState(ENodeState::Initialized)); - if (PreaggregateExpr->IsAggregated() && !PreaggregateExpr->IsAggregationKey() && !Aggr->IsOverWindow()) { - ctx.Error(Aggr->GetPos()) << "Aggregation of aggregated values is forbidden"; + if (PreaggregateExpr_) { + YQL_ENSURE(PreaggregateExpr_->HasState(ENodeState::Initialized)); + if (PreaggregateExpr_->IsAggregated() && !PreaggregateExpr_->IsAggregationKey() && !Aggr_->IsOverWindow()) { + ctx.Error(Aggr_->GetPos()) << "Aggregation of aggregated values is forbidden"; return false; } } - if (!Aggr->InitAggr(ctx, false, src, *this, Args)) { + if (!Aggr_->InitAggr(ctx, false, src, *this, Args_)) { return false; } - return src->AddAggregation(ctx, Aggr); + return src->AddAggregation(ctx, Aggr_); } void DoUpdateState() const final { - State.Set(ENodeState::Const, !Args.empty() && AllOf(Args, [](const auto& arg){ return arg->IsConstant(); })); - State.Set(ENodeState::Aggregated); + State_.Set(ENodeState::Const, !Args_.empty() && AllOf(Args_, [](const auto& arg){ return arg->IsConstant(); })); + State_.Set(ENodeState::Aggregated); } - TNodePtr PreaggregateExpr; + TNodePtr PreaggregateExpr_; protected: - const TString Name; - TAggregationPtr Aggr; - TVector<TNodePtr> Args; + const TString Name_; + TAggregationPtr Aggr_; + TVector<TNodePtr> Args_; }; class TBasicAggrFactory final : public TAstListNode { public: TBasicAggrFactory(TPosition pos, const TString& name, TAggregationPtr aggr, const TVector<TNodePtr>& args) : TAstListNode(pos) - , Name(name) - , Aggr(aggr) - , Args(args) + , Name_(name) + , Aggr_(aggr) + , Args_(args) {} TCiString GetName() const { - return Name; + return Name_; } bool DoInit(TContext& ctx, ISource* src) final { @@ -227,48 +227,48 @@ public: return false; } - auto factory = Aggr->AggregationTraitsFactory(); + auto factory = Aggr_->AggregationTraitsFactory(); auto apply = Y("Apply", factory, Y("ListType", "type")); - auto columnIndices = Aggr->GetFactoryColumnIndices(); + auto columnIndices = Aggr_->GetFactoryColumnIndices(); if (columnIndices.size() == 1) { apply = L(apply, "extractor"); } else { // make several extractors from main that returns a tuple for (ui32 arg = 0; arg < columnIndices.size(); ++arg) { - auto partial = BuildLambda(Pos, Y("row"), Y("Nth", Y("Apply", "extractor", "row"), Q(ToString(columnIndices[arg])))); + auto partial = BuildLambda(Pos_, Y("row"), Y("Nth", Y("Apply", "extractor", "row"), Q(ToString(columnIndices[arg])))); apply = L(apply, partial); } } - Aggr->AddFactoryArguments(apply); - Lambda = BuildLambda(Pos, Y("type", "extractor"), apply); + Aggr_->AddFactoryArguments(apply); + Lambda_ = BuildLambda(Pos_, Y("type", "extractor"), apply); return TAstListNode::DoInit(ctx, src); } TAstNode* Translate(TContext& ctx) const override { - return Lambda->Translate(ctx); + return Lambda_->Translate(ctx); } TNodePtr DoClone() const final { - TAggregationPtr aggrClone = static_cast<IAggregation*>(Aggr->Clone().Release()); - return new TBasicAggrFactory(Pos, Name, aggrClone, CloneContainer(Args)); + TAggregationPtr aggrClone = static_cast<IAggregation*>(Aggr_->Clone().Release()); + return new TBasicAggrFactory(Pos_, Name_, aggrClone, CloneContainer(Args_)); } TAggregationPtr GetAggregation() const override { - return Aggr; + return Aggr_; } private: bool DoInitAggregation(TContext& ctx) { - return Aggr->InitAggr(ctx, true, nullptr, *this, Args); + return Aggr_->InitAggr(ctx, true, nullptr, *this, Args_); } protected: - const TString Name; - TAggregationPtr Aggr; - TVector<TNodePtr> Args; - TNodePtr Lambda; + const TString Name_; + TAggregationPtr Aggr_; + TVector<TNodePtr> Args_; + TNodePtr Lambda_; }; typedef THolder<TBasicAggrFunc> TAggrFuncPtr; @@ -277,58 +277,58 @@ class TLiteralStringAtom: public INode { public: TLiteralStringAtom(TPosition pos, TNodePtr node, const TString& info, const TString& prefix = {}) : INode(pos) - , Node(node) - , Info(info) - , Prefix(prefix) + , Node_(node) + , Info_(info) + , Prefix_(prefix) { } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - if (!Node) { - ctx.Error(Pos) << Info; + if (!Node_) { + ctx.Error(Pos_) << Info_; return false; } - if (!Node->Init(ctx, src)) { + if (!Node_->Init(ctx, src)) { return false; } - Atom = MakeAtomFromExpression(Pos, ctx, Node, Prefix).Build(); + Atom_ = MakeAtomFromExpression(Pos_, ctx, Node_, Prefix_).Build(); return true; } bool IsLiteral() const override { - return Atom ? Atom->IsLiteral() : false; + return Atom_ ? Atom_->IsLiteral() : false; } TString GetLiteralType() const override { - return Atom ? Atom->GetLiteralType() : ""; + return Atom_ ? Atom_->GetLiteralType() : ""; } TString GetLiteralValue() const override { - return Atom ? Atom->GetLiteralValue() : ""; + return Atom_ ? Atom_->GetLiteralValue() : ""; } TAstNode* Translate(TContext& ctx) const override { - return Atom->Translate(ctx); + return Atom_->Translate(ctx); } TPtr DoClone() const final { - return new TLiteralStringAtom(GetPos(), SafeClone(Node), Info, Prefix); + return new TLiteralStringAtom(GetPos(), SafeClone(Node_), Info_, Prefix_); } void DoUpdateState() const override { - YQL_ENSURE(Atom); - State.Set(ENodeState::Const, Atom->IsConstant()); - State.Set(ENodeState::Aggregated, Atom->IsAggregated()); - State.Set(ENodeState::OverWindow, Atom->IsOverWindow()); + YQL_ENSURE(Atom_); + State_.Set(ENodeState::Const, Atom_->IsConstant()); + State_.Set(ENodeState::Aggregated, Atom_->IsAggregated()); + State_.Set(ENodeState::OverWindow, Atom_->IsOverWindow()); } private: - TNodePtr Node; - TNodePtr Atom; - TString Info; - TString Prefix; + TNodePtr Node_; + TNodePtr Atom_; + TString Info_; + TString Prefix_; }; class TYqlAsAtom: public TLiteralStringAtom { @@ -349,54 +349,54 @@ public: bool DoInit(TContext& ctx, ISource* src) override { auto slot = NUdf::FindDataSlot(GetOpName()); if (!slot) { - ctx.Error(Pos) << "Unexpected type " << GetOpName(); + ctx.Error(Pos_) << "Unexpected type " << GetOpName(); return false; } if (*slot == NUdf::EDataSlot::Decimal) { - MinArgs = MaxArgs = 3; + MinArgs_ = MaxArgs_ = 3; } if (!ValidateArguments(ctx)) { return false; } - auto stringNode = Args[0]; + auto stringNode = Args_[0]; auto atom = stringNode->GetLiteral("String"); if (!atom) { - ctx.Error(Pos) << "Expected literal string as argument in " << GetOpName() << " function"; + ctx.Error(Pos_) << "Expected literal string as argument in " << GetOpName() << " function"; return false; } TString value; if (*slot == NUdf::EDataSlot::Decimal) { - const auto precision = Args[1]->GetLiteral("Int32"); - const auto scale = Args[2]->GetLiteral("Int32"); + const auto precision = Args_[1]->GetLiteral("Int32"); + const auto scale = Args_[2]->GetLiteral("Int32"); if (!NKikimr::NMiniKQL::IsValidDecimal(*atom)) { - ctx.Error(Pos) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); return false; } ui8 stub; if (!(precision && TryFromString<ui8>(*precision, stub))) { - ctx.Error(Pos) << "Invalid precision " << (precision ? precision->Quote() : "") << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid precision " << (precision ? precision->Quote() : "") << " for type " << GetOpName(); return false; } if (!(scale && TryFromString<ui8>(*scale, stub))) { - ctx.Error(Pos) << "Invalid scale " << (scale ? scale->Quote() : "") << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid scale " << (scale ? scale->Quote() : "") << " for type " << GetOpName(); return false; } - Args[0] = BuildQuotedAtom(GetPos(), *atom); - Args[1] = BuildQuotedAtom(GetPos(), *precision); - Args[2] = BuildQuotedAtom(GetPos(), *scale); + Args_[0] = BuildQuotedAtom(GetPos(), *atom); + Args_[1] = BuildQuotedAtom(GetPos(), *precision); + Args_[2] = BuildQuotedAtom(GetPos(), *scale); return TCallNode::DoInit(ctx, src); } else if (NUdf::GetDataTypeInfo(*slot).Features & (NUdf::DateType | NUdf::TzDateType | NUdf::TimeIntervalType)) { const auto out = NKikimr::NMiniKQL::ValueFromString(*slot, *atom); if (!out) { - ctx.Error(Pos) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); return false; } @@ -427,7 +427,7 @@ public: case NUdf::EDataSlot::Interval64: value = ToString(out.Get<i64>()); if ('T' == atom->back()) { - ctx.Error(Pos) << "Time prefix 'T' at end of interval constant. The designator 'T' shall be absent if all of the time components are absent."; + ctx.Error(Pos_) << "Time prefix 'T' at end of interval constant. The designator 'T' shall be absent if all of the time components are absent."; return false; } break; @@ -442,26 +442,26 @@ public: } else if (NUdf::EDataSlot::Uuid == *slot) { char out[0x10]; if (!NKikimr::NMiniKQL::ParseUuid(*atom, out)) { - ctx.Error(Pos) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); return false; } value.assign(out, sizeof(out)); } else { if (!NKikimr::NMiniKQL::IsValidStringValue(*slot, *atom)) { - ctx.Error(Pos) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); + ctx.Error(Pos_) << "Invalid value " << atom->Quote() << " for type " << GetOpName(); return false; } value = *atom; } - Args[0] = BuildQuotedAtom(GetPos(), value); + Args_[0] = BuildQuotedAtom(GetPos(), value); return TCallNode::DoInit(ctx, src); } TPtr DoClone() const final { - return new TYqlData(GetPos(), OpName, CloneContainer(Args)); + return new TYqlData(GetPos(), OpName_, CloneContainer(Args_)); } }; @@ -469,8 +469,8 @@ class TTableName : public TCallNode { public: TTableName(TPosition pos, const TVector<TNodePtr>& args, const TString& service) : TCallNode(pos, "TableName", 0, 2, args) - , Service(service) - , EmptyArgs(args.empty()) + , Service_(service) + , EmptyArgs_(args.empty()) { } @@ -479,86 +479,86 @@ public: return false; } - if (Args.empty()) { + if (Args_.empty()) { if (!src) { - ctx.Error(Pos) << "Unable to use TableName() without source"; + ctx.Error(Pos_) << "Unable to use TableName() without source"; return false; } // TODO: TablePath() and TableRecordIndex() have more strict limitations if (src->GetJoin()) { - ctx.Warning(Pos, + ctx.Warning(Pos_, TIssuesIds::YQL_EMPTY_TABLENAME_RESULT) << "TableName() may produce empty result when used in ambiguous context (with JOIN)"; } if (src->HasAggregations()) { - ctx.Warning(Pos, + ctx.Warning(Pos_, TIssuesIds::YQL_EMPTY_TABLENAME_RESULT) << "TableName() will produce empty result when used with aggregation.\n" "Please consult documentation for possible workaround"; } - Args.push_back(Y("TablePath", Y("DependsOn", "row"))); + Args_.push_back(Y("TablePath", Y("DependsOn", "row"))); } - if (Args.size() == 2) { - auto literal = Args[1]->GetLiteral("String"); + if (Args_.size() == 2) { + auto literal = Args_[1]->GetLiteral("String"); if (!literal) { - ctx.Error(Args[1]->GetPos()) << "Expected literal string as second argument in TableName function"; + ctx.Error(Args_[1]->GetPos()) << "Expected literal string as second argument in TableName function"; return false; } - Args[1] = BuildQuotedAtom(Args[1]->GetPos(), *literal); + Args_[1] = BuildQuotedAtom(Args_[1]->GetPos(), *literal); } else { - if (Service.empty()) { + if (Service_.empty()) { ctx.Error(GetPos()) << GetOpName() << " requires either service name as second argument or current cluster name"; return false; } - Args.push_back(BuildQuotedAtom(GetPos(), Service)); + Args_.push_back(BuildQuotedAtom(GetPos(), Service_)); } return TCallNode::DoInit(ctx, src); } TPtr DoClone() const final { - return new TTableName(GetPos(), CloneContainer(Args), Service); + return new TTableName(GetPos(), CloneContainer(Args_), Service_); } void DoUpdateState() const override { - if (EmptyArgs) { - State.Set(ENodeState::Const, false); + if (EmptyArgs_) { + State_.Set(ENodeState::Const, false); } else { TCallNode::DoUpdateState(); } } private: - TString Service; - const bool EmptyArgs; + TString Service_; + const bool EmptyArgs_; }; class TYqlParseType final : public INode { public: TYqlParseType(TPosition pos, const TVector<TNodePtr>& args) : INode(pos) - , Args(args) + , Args_(args) {} TAstNode* Translate(TContext& ctx) const override { - if (Args.size() != 1) { - ctx.Error(Pos) << "Expected 1 argument in ParseType function"; + if (Args_.size() != 1) { + ctx.Error(Pos_) << "Expected 1 argument in ParseType function"; return nullptr; } - auto literal = Args[0]->GetLiteral("String"); + auto literal = Args_[0]->GetLiteral("String"); if (!literal) { - ctx.Error(Args[0]->GetPos()) << "Expected literal string as argument in ParseType function"; + ctx.Error(Args_[0]->GetPos()) << "Expected literal string as argument in ParseType function"; return nullptr; } - auto parsed = ParseType(*literal, *ctx.Pool, ctx.Issues, Args[0]->GetPos()); + auto parsed = ParseType(*literal, *ctx.Pool, ctx.Issues, Args_[0]->GetPos()); if (!parsed) { - ctx.Error(Args[0]->GetPos()) << "Failed to parse type"; + ctx.Error(Args_[0]->GetPos()) << "Failed to parse type"; return nullptr; } @@ -566,14 +566,14 @@ public: } TNodePtr DoClone() const final { - return new TYqlParseType(Pos, CloneContainer(Args)); + return new TYqlParseType(Pos_, CloneContainer(Args_)); } void DoUpdateState() const final { - State.Set(ENodeState::Const); + State_.Set(ENodeState::Const); } private: - TVector<TNodePtr> Args; + TVector<TNodePtr> Args_; }; class TYqlAddTimezone: public TCallNode { @@ -588,12 +588,12 @@ public: return false; } - Args[1] = Y("TimezoneId", Args[1]); + Args_[1] = Y("TimezoneId", Args_[1]); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlAddTimezone(Pos, CloneContainer(Args)); + return new TYqlAddTimezone(Pos_, CloneContainer(Args_)); } }; @@ -610,22 +610,22 @@ public: } ui32 oid; - if (Args[0]->IsIntegerLiteral() && TryFromString<ui32>(Args[0]->GetLiteralValue(), oid)) { + if (Args_[0]->IsIntegerLiteral() && TryFromString<ui32>(Args_[0]->GetLiteralValue(), oid)) { if (!NPg::HasType(oid)) { - ctx.Error(Args[0]->GetPos()) << "Unknown pg type oid: " << oid; + ctx.Error(Args_[0]->GetPos()) << "Unknown pg type oid: " << oid; return false; } else { - Args[0] = BuildQuotedAtom(Args[0]->GetPos(), NPg::LookupType(oid).Name); + Args_[0] = BuildQuotedAtom(Args_[0]->GetPos(), NPg::LookupType(oid).Name); } - } else if (Args[0]->IsLiteral() && Args[0]->GetLiteralType() == "String") { - if (!NPg::HasType(Args[0]->GetLiteralValue())) { - ctx.Error(Args[0]->GetPos()) << "Unknown pg type: " << Args[0]->GetLiteralValue(); + } else if (Args_[0]->IsLiteral() && Args_[0]->GetLiteralType() == "String") { + if (!NPg::HasType(Args_[0]->GetLiteralValue())) { + ctx.Error(Args_[0]->GetPos()) << "Unknown pg type: " << Args_[0]->GetLiteralValue(); return false; } else { - Args[0] = BuildQuotedAtom(Args[0]->GetPos(), Args[0]->GetLiteralValue()); + Args_[0] = BuildQuotedAtom(Args_[0]->GetPos(), Args_[0]->GetLiteralValue()); } } else { - ctx.Error(Args[0]->GetPos()) << "Expecting string literal with pg type name or integer literal with pg type oid"; + ctx.Error(Args_[0]->GetPos()) << "Expecting string literal with pg type name or integer literal with pg type oid"; return false; } @@ -634,7 +634,7 @@ public: TNodePtr DoClone() const final { - return new TYqlPgType(Pos, CloneContainer(Args)); + return new TYqlPgType(Pos_, CloneContainer(Args_)); } }; @@ -650,38 +650,38 @@ public: return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - if (Args[0]->IsLiteral()) { - Args[0] = BuildQuotedAtom(Args[0]->GetPos(), Args[0]->GetLiteralValue()); + if (Args_[0]->IsLiteral()) { + Args_[0] = BuildQuotedAtom(Args_[0]->GetPos(), Args_[0]->GetLiteralValue()); } else { - auto value = MakeAtomFromExpression(Pos, ctx, Args[0]).Build(); - Args[0] = value; + auto value = MakeAtomFromExpression(Pos_, ctx, Args_[0]).Build(); + Args_[0] = value; } - if (Args.size() > 2) { + if (Args_.size() > 2) { TVector<TNodePtr> typeModArgs; - typeModArgs.push_back(Args[1]); - for (ui32 i = 2; i < Args.size(); ++i) { - if (!Args[i]->IsLiteral()) { - ctx.Error(Args[i]->GetPos()) << "Expecting literal"; + typeModArgs.push_back(Args_[1]); + for (ui32 i = 2; i < Args_.size(); ++i) { + if (!Args_[i]->IsLiteral()) { + ctx.Error(Args_[i]->GetPos()) << "Expecting literal"; return false; } - typeModArgs.push_back(BuildQuotedAtom(Args[i]->GetPos(), Args[i]->GetLiteralValue())); + typeModArgs.push_back(BuildQuotedAtom(Args_[i]->GetPos(), Args_[i]->GetLiteralValue())); } - Args.erase(Args.begin() + 2, Args.end()); - Args.push_back(new TCallNodeImpl(Pos, "PgTypeMod", typeModArgs)); + Args_.erase(Args_.begin() + 2, Args_.end()); + Args_.push_back(new TCallNodeImpl(Pos_, "PgTypeMod", typeModArgs)); } return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlPgConst(Pos, CloneContainer(Args)); + return new TYqlPgConst(Pos_, CloneContainer(Args_)); } }; @@ -697,27 +697,27 @@ public: return false; } - if (Args.size() > 2) { + if (Args_.size() > 2) { TVector<TNodePtr> typeModArgs; - typeModArgs.push_back(Args[1]); - for (ui32 i = 2; i < Args.size(); ++i) { - if (!Args[i]->IsLiteral()) { - ctx.Error(Args[i]->GetPos()) << "Expecting literal"; + typeModArgs.push_back(Args_[1]); + for (ui32 i = 2; i < Args_.size(); ++i) { + if (!Args_[i]->IsLiteral()) { + ctx.Error(Args_[i]->GetPos()) << "Expecting literal"; return false; } - typeModArgs.push_back(BuildQuotedAtom(Args[i]->GetPos(), Args[i]->GetLiteralValue())); + typeModArgs.push_back(BuildQuotedAtom(Args_[i]->GetPos(), Args_[i]->GetLiteralValue())); } - Args.erase(Args.begin() + 2, Args.end()); - Args.push_back(new TCallNodeImpl(Pos, "PgTypeMod", typeModArgs)); + Args_.erase(Args_.begin() + 2, Args_.end()); + Args_.push_back(new TCallNodeImpl(Pos_, "PgTypeMod", typeModArgs)); } return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlPgCast(Pos, CloneContainer(Args)); + return new TYqlPgCast(Pos_, CloneContainer(Args_)); } }; @@ -733,21 +733,21 @@ public: return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - if (!Args[0]->IsLiteral() || Args[0]->GetLiteralType() != "String") { - ctx.Error(Args[0]->GetPos()) << "Expecting string literal as first argument"; + if (!Args_[0]->IsLiteral() || Args_[0]->GetLiteralType() != "String") { + ctx.Error(Args_[0]->GetPos()) << "Expecting string literal as first argument"; return false; } - Args[0] = BuildQuotedAtom(Args[0]->GetPos(), Args[0]->GetLiteralValue()); + Args_[0] = BuildQuotedAtom(Args_[0]->GetPos(), Args_[0]->GetLiteralValue()); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlPgOp(Pos, CloneContainer(Args)); + return new TYqlPgOp(Pos_, CloneContainer(Args_)); } }; @@ -764,22 +764,22 @@ public: return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - if (!Args[0]->IsLiteral() || Args[0]->GetLiteralType() != "String") { - ctx.Error(Args[0]->GetPos()) << "Expecting string literal as first argument"; + if (!Args_[0]->IsLiteral() || Args_[0]->GetLiteralType() != "String") { + ctx.Error(Args_[0]->GetPos()) << "Expecting string literal as first argument"; return false; } - Args[0] = BuildQuotedAtom(Args[0]->GetPos(), Args[0]->GetLiteralValue()); - Args.insert(Args.begin() + 1, RangeFunction ? Q(Y(Q(Y(Q("range"))))) : Q(Y())); + Args_[0] = BuildQuotedAtom(Args_[0]->GetPos(), Args_[0]->GetLiteralValue()); + Args_.insert(Args_.begin() + 1, RangeFunction ? Q(Y(Q(Y(Q("range"))))) : Q(Y())); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlPgCall<RangeFunction>(Pos, CloneContainer(Args)); + return new TYqlPgCall<RangeFunction>(Pos_, CloneContainer(Args_)); } }; @@ -796,12 +796,12 @@ public: return false; } - Args[0] = Y("EvaluateExpr", Args[0]); + Args_[0] = Y("EvaluateExpr", Args_[0]); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlSubqueryFor<Name>(Pos, CloneContainer(Args)); + return new TYqlSubqueryFor<Name>(Pos_, CloneContainer(Args_)); } }; @@ -818,12 +818,12 @@ public: return false; } - Args[1] = Y("EvaluateExpr", Args[1]); + Args_[1] = Y("EvaluateExpr", Args_[1]); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlSubqueryOrderBy<Name>(Pos, CloneContainer(Args)); + return new TYqlSubqueryOrderBy<Name>(Pos_, CloneContainer(Args_)); } }; @@ -841,23 +841,23 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - if (Args.size() == 3) { - if (!Args[2]->Init(ctx, src)) { + if (Args_.size() == 3) { + if (!Args_[2]->Init(ctx, src)) { return false; } - auto message = MakeAtomFromExpression(Pos, ctx, Args[2]).Build(); - Args[2] = message; + auto message = MakeAtomFromExpression(Pos_, ctx, Args_[2]).Build(); + Args_[2] = message; } return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlTypeAssert<Strict>(Pos, CloneContainer(Args)); + return new TYqlTypeAssert<Strict>(Pos_, CloneContainer(Args_)); } }; @@ -872,16 +872,16 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(Pos, ctx, Y("FormatType", Args[1])).Build(); + Args_[1] = MakeAtomFromExpression(Pos_, ctx, Y("FormatType", Args_[1])).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TFromBytes(Pos, CloneContainer(Args)); + return new TFromBytes(Pos_, CloneContainer(Args_)); } }; @@ -896,11 +896,11 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(Pos, ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(Pos_, ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } }; @@ -912,7 +912,7 @@ public: {} TNodePtr DoClone() const final { - return new TYqlAsTagged(Pos, CloneContainer(Args)); + return new TYqlAsTagged(Pos_, CloneContainer(Args_)); } }; @@ -923,7 +923,7 @@ public: {} TNodePtr DoClone() const final { - return new TYqlUntag(Pos, CloneContainer(Args)); + return new TYqlUntag(Pos_, CloneContainer(Args_)); } }; @@ -938,16 +938,16 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(Pos, ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(Pos_, ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlVariant(Pos, CloneContainer(Args)); + return new TYqlVariant(Pos_, CloneContainer(Args_)); } }; @@ -962,16 +962,16 @@ public: return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - Args[0] = MakeAtomFromExpression(Pos, ctx, Args[0]).Build(); + Args_[0] = MakeAtomFromExpression(Pos_, ctx, Args_[0]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlEnum(Pos, CloneContainer(Args)); + return new TYqlEnum(Pos_, CloneContainer(Args_)); } }; @@ -986,16 +986,16 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(Pos, ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(Pos_, ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlAsVariant(Pos, CloneContainer(Args)); + return new TYqlAsVariant(Pos_, CloneContainer(Args_)); } }; @@ -1010,16 +1010,16 @@ public: return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - Args[0] = MakeAtomFromExpression(Pos, ctx, Args[0]).Build(); + Args_[0] = MakeAtomFromExpression(Pos_, ctx, Args_[0]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlAsEnum(Pos, CloneContainer(Args)); + return new TYqlAsEnum(Pos_, CloneContainer(Args_)); } }; @@ -1035,26 +1035,26 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (!Args.empty()) { - Args[0] = BuildFileNameArgument(Pos, Args[0], IsFile ? ctx.Settings.FileAliasPrefix : TString()); + if (!Args_.empty()) { + Args_[0] = BuildFileNameArgument(Pos_, Args_[0], IsFile ? ctx.Settings.FileAliasPrefix : TString()); } return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TDerived(Pos, OpName, CloneContainer(Args)); + return new TDerived(Pos_, OpName_, CloneContainer(Args_)); } bool IsLiteral() const override { - return !Args.empty() ? Args[0]->IsLiteral() : false; + return !Args_.empty() ? Args_[0]->IsLiteral() : false; } TString GetLiteralType() const override { - return !Args.empty() ? Args[0]->GetLiteralType() : ""; + return !Args_.empty() ? Args_[0]->GetLiteralType() : ""; } TString GetLiteralValue() const override { - return !Args.empty() ? Args[0]->GetLiteralValue() : ""; + return !Args_.empty() ? Args_[0]->GetLiteralValue() : ""; } }; @@ -1077,21 +1077,21 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (Args.size() != 3) { - ctx.Error(Pos) << OpName << " requires exactly three arguments"; + if (Args_.size() != 3) { + ctx.Error(Pos_) << OpName_ << " requires exactly three arguments"; return false; } - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (!arg->Init(ctx, src)) { return false; } } - Args[1] = MakeAtomFromExpression(Pos, ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(Pos_, ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TTryMember(Pos, OpName, CloneContainer(Args)); + return new TTryMember(Pos_, OpName_, CloneContainer(Args_)); } }; @@ -1103,22 +1103,22 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (Args.size() != 2) { - ctx.Error(Pos) << OpName << " requires exactly 2 arguments"; + if (Args_.size() != 2) { + ctx.Error(Pos_) << OpName_ << " requires exactly 2 arguments"; return false; } - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (!arg->Init(ctx, src)) { return false; } } - Args.push_back(Q(Pretty ? "true" : "false")); - OpName = "FormatTypeDiff"; + Args_.push_back(Q(Pretty ? "true" : "false")); + OpName_ = "FormatTypeDiff"; return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TFormatTypeDiff<Pretty>(GetPos(), OpName, CloneContainer(Args)); + return new TFormatTypeDiff<Pretty>(GetPos(), OpName_, CloneContainer(Args_)); } }; @@ -1129,21 +1129,21 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (Args.size() != 3) { - ctx.Error(Pos) << OpName << " requires exactly three arguments"; + if (Args_.size() != 3) { + ctx.Error(Pos_) << OpName_ << " requires exactly three arguments"; return false; } - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (!arg->Init(ctx, src)) { return false; } } - Args[1] = MakeAtomFromExpression(Pos, ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(Pos_, ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TAddMember(Pos, OpName, CloneContainer(Args)); + return new TAddMember(Pos_, OpName_, CloneContainer(Args_)); } }; @@ -1154,21 +1154,21 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (Args.size() != 2) { - ctx.Error(Pos) << OpName << " requires exactly two arguments"; + if (Args_.size() != 2) { + ctx.Error(Pos_) << OpName_ << " requires exactly two arguments"; return false; } - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (!arg->Init(ctx, src)) { return false; } } - Args[1] = MakeAtomFromExpression(Pos, ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(Pos_, ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TRemoveMember(Pos, OpName, CloneContainer(Args)); + return new TRemoveMember(Pos_, OpName_, CloneContainer(Args_)); } }; @@ -1179,18 +1179,18 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (Args.empty()) { - ctx.Error(Pos) << "CombineMembers requires at least one argument"; + if (Args_.empty()) { + ctx.Error(Pos_) << "CombineMembers requires at least one argument"; return false; } - for (size_t i = 0; i < Args.size(); ++i) { - Args[i] = Q(Y(Q(""), Args[i])); // flatten without prefix + for (size_t i = 0; i < Args_.size(); ++i) { + Args_[i] = Q(Y(Q(""), Args_[i])); // flatten without prefix } return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TCombineMembers(Pos, OpName, CloneContainer(Args)); + return new TCombineMembers(Pos_, OpName_, CloneContainer(Args_)); } }; @@ -1201,22 +1201,22 @@ public: {} bool DoInit(TContext& ctx, ISource* src) override { - if (Args.empty()) { - ctx.Error(Pos) << OpName << " requires at least one argument"; + if (Args_.empty()) { + ctx.Error(Pos_) << OpName_ << " requires at least one argument"; return false; } - for (size_t i = 0; i < Args.size(); ++i) { - if (!Args[i]->Init(ctx, src)) { + for (size_t i = 0; i < Args_.size(); ++i) { + if (!Args_[i]->Init(ctx, src)) { return false; } - if (Args[i]->GetTupleSize() == 2) { + if (Args_[i]->GetTupleSize() == 2) { // flatten with prefix - Args[i] = Q(Y( - MakeAtomFromExpression(Pos, ctx, Args[i]->GetTupleElement(0)).Build(), - Args[i]->GetTupleElement(1) + Args_[i] = Q(Y( + MakeAtomFromExpression(Pos_, ctx, Args_[i]->GetTupleElement(0)).Build(), + Args_[i]->GetTupleElement(1) )); } else { - ctx.Error(Pos) << OpName << " requires arguments to be tuples of size 2: prefix and struct"; + ctx.Error(Pos_) << OpName_ << " requires arguments to be tuples of size 2: prefix and struct"; return false; } } @@ -1224,7 +1224,7 @@ public: } TNodePtr DoClone() const final { - return new TFlattenMembers(Pos, OpName, CloneContainer(Args)); + return new TFlattenMembers(Pos_, OpName_, CloneContainer(Args_)); } }; @@ -1289,15 +1289,15 @@ public: if (!dataTypeStringNode) { return false; } - auto aliasNode = BuildFileNameArgument(Args[1]->GetPos(), Args[1], ctx.Settings.FileAliasPrefix); - OpName = "Apply"; - Args[0] = Y("Udf", Q("File.ByLines"), Y("Void"), + auto aliasNode = BuildFileNameArgument(Args_[1]->GetPos(), Args_[1], ctx.Settings.FileAliasPrefix); + OpName_ = "Apply"; + Args_[0] = Y("Udf", Q("File.ByLines"), Y("Void"), Y("TupleType", Y("TupleType", Y("DataType", dataTypeStringNode)), Y("StructType"), Y("TupleType"))); - Args[1] = Y("FilePath", aliasNode); + Args_[1] = Y("FilePath", aliasNode); return TCallNode::DoInit(ctx, src); } @@ -1306,7 +1306,7 @@ public: } TNodePtr DoClone() const final { - return new TYqlParseFileOp(Pos, CloneContainer(Args)); + return new TYqlParseFileOp(Pos_, CloneContainer(Args_)); } }; @@ -1315,7 +1315,7 @@ public: TYqlDataType(TPosition pos, const TVector<TNodePtr>& args) : TCallNode(pos, "DataType", 1, 3, args) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { @@ -1323,23 +1323,23 @@ public: return false; } - for (ui32 i = 0; i < Args.size(); ++i) { - if (!Args[i]->Init(ctx, FakeSource.Get())) { + for (ui32 i = 0; i < Args_.size(); ++i) { + if (!Args_[i]->Init(ctx, FakeSource_.Get())) { return false; } - Args[i] = MakeAtomFromExpression(Pos, ctx, Args[i]).Build(); + Args_[i] = MakeAtomFromExpression(Pos_, ctx, Args_[i]).Build(); } return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlDataType(Pos, CloneContainer(Args)); + return new TYqlDataType(Pos_, CloneContainer(Args_)); } private: - TSourcePtr FakeSource; + TSourcePtr FakeSource_; }; class TYqlResourceType final : public TCallNode { @@ -1353,16 +1353,16 @@ public: return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - Args[0] = MakeAtomFromExpression(Pos, ctx, Args[0]).Build(); + Args_[0] = MakeAtomFromExpression(Pos_, ctx, Args_[0]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlResourceType(Pos, CloneContainer(Args)); + return new TYqlResourceType(Pos_, CloneContainer(Args_)); } }; @@ -1377,16 +1377,16 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(Pos, ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(Pos_, ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlTaggedType(Pos, CloneContainer(Args)); + return new TYqlTaggedType(Pos_, CloneContainer(Args_)); } }; @@ -1401,23 +1401,23 @@ public: return false; } - if (!Args[0]->GetTupleNode()) { + if (!Args_[0]->GetTupleNode()) { ui32 numOptArgs; - if (!Parseui32(Args[0], numOptArgs)) { - ctx.Error(Args[0]->GetPos()) << "Expected either tuple or number of optional arguments"; + if (!Parseui32(Args_[0], numOptArgs)) { + ctx.Error(Args_[0]->GetPos()) << "Expected either tuple or number of optional arguments"; return false; } - Args[0] = Q(Y(BuildQuotedAtom(Args[0]->GetPos(), ToString(numOptArgs)))); + Args_[0] = Q(Y(BuildQuotedAtom(Args_[0]->GetPos(), ToString(numOptArgs)))); } - if (!Args[1]->GetTupleNode()) { - Args[1] = Q(Y(Args[1])); + if (!Args_[1]->GetTupleNode()) { + Args_[1] = Q(Y(Args_[1])); } - for (ui32 index = 2; index < Args.size(); ++index) { - if (!Args[index]->GetTupleNode()) { - Args[index] = Q(Y(Args[index])); + for (ui32 index = 2; index < Args_.size(); ++index) { + if (!Args_[index]->GetTupleNode()) { + Args_[index] = Q(Y(Args_[index])); } } @@ -1425,7 +1425,7 @@ public: } TNodePtr DoClone() const final { - return new TYqlCallableType(Pos, CloneContainer(Args)); + return new TYqlCallableType(Pos_, CloneContainer(Args_)); } }; @@ -1440,16 +1440,16 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(Pos, ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(Pos_, ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlTupleElementType(Pos, CloneContainer(Args)); + return new TYqlTupleElementType(Pos_, CloneContainer(Args_)); } }; @@ -1464,16 +1464,16 @@ public: return false; } - if (!Args[1]->Init(ctx, src)) { + if (!Args_[1]->Init(ctx, src)) { return false; } - Args[1] = MakeAtomFromExpression(Pos, ctx, Args[1]).Build(); + Args_[1] = MakeAtomFromExpression(Pos_, ctx, Args_[1]).Build(); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlStructMemberType(Pos, CloneContainer(Args)); + return new TYqlStructMemberType(Pos_, CloneContainer(Args_)); } }; @@ -1489,17 +1489,17 @@ public: } ui32 index; - if (!Parseui32(Args[1], index)) { - ctx.Error(Args[1]->GetPos()) << "Expected index of the callable argument"; + if (!Parseui32(Args_[1], index)) { + ctx.Error(Args_[1]->GetPos()) << "Expected index of the callable argument"; return false; } - Args[1] = BuildQuotedAtom(Args[1]->GetPos(), ToString(index)); + Args_[1] = BuildQuotedAtom(Args_[1]->GetPos(), ToString(index)); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TYqlCallableArgumentType(Pos, CloneContainer(Args)); + return new TYqlCallableArgumentType(Pos_, CloneContainer(Args_)); } }; @@ -1507,28 +1507,28 @@ class TStructTypeNode : public TAstListNode { public: TStructTypeNode(TPosition pos, const TVector<TNodePtr>& exprs) : TAstListNode(pos) - , Exprs(exprs) + , Exprs_(exprs) {} bool DoInit(TContext& ctx, ISource* src) override { - Nodes.push_back(BuildAtom(Pos, "StructType", TNodeFlags::Default)); - for (const auto& expr : Exprs) { + Nodes_.push_back(BuildAtom(Pos_, "StructType", TNodeFlags::Default)); + for (const auto& expr : Exprs_) { const auto& label = expr->GetLabel(); if (!label) { ctx.Error(expr->GetPos()) << "Structure does not allow anonymous members"; return false; } - Nodes.push_back(Q(Y(Q(label), expr))); + Nodes_.push_back(Q(Y(Q(label), expr))); } return TAstListNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TStructTypeNode(Pos, CloneContainer(Exprs)); + return new TStructTypeNode(Pos_, CloneContainer(Exprs_)); } private: - const TVector<TNodePtr> Exprs; + const TVector<TNodePtr> Exprs_; }; template <bool IsStrict> @@ -1540,7 +1540,7 @@ public: private: TCallNode::TPtr DoClone() const override { - return new TYqlIf(GetPos(), CloneContainer(Args)); + return new TYqlIf(GetPos(), CloneContainer(Args_)); } bool DoInit(TContext& ctx, ISource* src) override { @@ -1548,9 +1548,9 @@ private: return false; } - Args[0] = Y("Coalesce", Args[0], Y("Bool", Q("false"))); - if (Args.size() == 2) { - Args.push_back(Y("Null")); + Args_[0] = Y("Coalesce", Args_[0], Y("Bool", Q("false"))); + if (Args_.size() == 2) { + Args_.push_back(Y("Null")); } return TCallNode::DoInit(ctx, src); } @@ -1564,12 +1564,12 @@ public: private: TCallNode::TPtr DoClone() const override { - return new TYqlSubstring(GetPos(), OpName, CloneContainer(Args)); + return new TYqlSubstring(GetPos(), OpName_, CloneContainer(Args_)); } bool DoInit(TContext& ctx, ISource* src) override { - if (Args.size() == 2) { - Args.push_back(Y("Null")); + if (Args_.size() == 2) { + Args_.push_back(Y("Null")); } return TCallNode::DoInit(ctx, src); } @@ -1583,16 +1583,16 @@ public: private: TNodePtr DoClone() const final { - return new TYqlIn(Pos, CloneContainer(Args)); + return new TYqlIn(Pos_, CloneContainer(Args_)); } bool DoInit(TContext& ctx, ISource* src) override { if (!ValidateArguments(ctx)) { return false; } - auto key = Args[0]; - auto inNode = Args[1]; - auto hints = Args[2]; + auto key = Args_[0]; + auto inNode = Args_[1]; + auto hints = Args_[2]; const auto pos = inNode->GetPos(); @@ -1637,9 +1637,9 @@ private: hintElements.push_back(BuildHint(pos, "ansi")); } - OpName = "SqlIn"; - MinArgs = MaxArgs = 3; - Args = { + OpName_ = "SqlIn"; + MinArgs_ = MaxArgs_ = 3; + Args_ = { inNode->GetSource() ? inNode->GetSource() : inNode, key, BuildTuple(pos, hintElements) @@ -1683,12 +1683,12 @@ private: void DoUpdateState() const override { TCallNode::DoUpdateState(); - State.Set(ENodeState::Aggregated, false/*!RunConfig || RunConfig->IsAggregated()*/); - State.Set(ENodeState::Const, true /* FIXME: To avoid CheckAggregationLevel issue for non-const TypeOf. */); + State_.Set(ENodeState::Aggregated, false/*!RunConfig || RunConfig->IsAggregated()*/); + State_.Set(ENodeState::Const, true /* FIXME: To avoid CheckAggregationLevel issue for non-const TypeOf. */); } private: - TNodePtr RunConfig; + TNodePtr RunConfig_; }; class TYqlUdf final : public TYqlUdfBase { @@ -1703,7 +1703,7 @@ public: private: TYqlUdf(const TYqlUdf& other) - : TYqlUdfBase(other.GetPos(), "Udf", other.MinArgs, other.MaxArgs, CloneContainer(other.Args)) + : TYqlUdfBase(other.GetPos(), "Udf", other.MinArgs_, other.MaxArgs_, CloneContainer(other.Args_)) {} TNodePtr DoClone() const final { @@ -1723,7 +1723,7 @@ public: private: TYqlTypeConfigUdf(const TYqlTypeConfigUdf& other) - : TYqlUdfBase(other.GetPos(), "Udf", other.MinArgs, other.MaxArgs, CloneContainer(other.Args)) + : TYqlUdfBase(other.GetPos(), "Udf", other.MinArgs_, other.MaxArgs_, CloneContainer(other.Args_)) {} bool DoInit(TContext& ctx, ISource* src) override { @@ -1731,11 +1731,11 @@ private: return false; } - if (!Args[3]->Init(ctx, src)) { + if (!Args_[3]->Init(ctx, src)) { return false; } - Args[3] = MakeAtomFromExpression(Pos, ctx, Args[3]).Build(); + Args_[3] = MakeAtomFromExpression(Pos_, ctx, Args_[3]).Build(); return TYqlUdfBase::DoInit(ctx, src); } @@ -1752,7 +1752,7 @@ public: bool DoInit(TContext& ctx, ISource* src) override { if (!src) { - ctx.Error(Pos) << GetCallExplain() << " unable use without source"; + ctx.Error(Pos_) << GetCallExplain() << " unable use without source"; return false; } @@ -1763,7 +1763,7 @@ public: } bool hasError = false; - for (auto& arg: Args) { + for (auto& arg: Args_) { if (!arg->Init(ctx, src)) { hasError = true; continue; @@ -1776,53 +1776,53 @@ public: PrecacheState(); - const auto memberPos = Args[0]->GetPos(); + const auto memberPos = Args_[0]->GetPos(); TVector<TNodePtr> repackArgs = {BuildAtom(memberPos, "row", NYql::TNodeFlags::Default)}; - if (auto literal = Args[1]->GetLiteral("String")) { + if (auto literal = Args_[1]->GetLiteral("String")) { TString targetType; if (!GetDataTypeStringNode(ctx, *this, 1, &targetType)) { return false; } - repackArgs.push_back(Args[1]->Q(targetType)); + repackArgs.push_back(Args_[1]->Q(targetType)); } else { - repackArgs.push_back(Args[1]); + repackArgs.push_back(Args_[1]); } TVector<TNodePtr> column; - auto namePtr = Args[0]->GetColumnName(); + auto namePtr = Args_[0]->GetColumnName(); if (!namePtr || !*namePtr) { - ctx.Error(Pos) << GetCallExplain() << " expects column name as first argument"; + ctx.Error(Pos_) << GetCallExplain() << " expects column name as first argument"; return false; } auto memberName = *namePtr; - column.push_back(Args[0]->Q(*namePtr)); + column.push_back(Args_[0]->Q(*namePtr)); if (src->GetJoin() && !src->IsJoinKeysInitializing()) { - const auto sourcePtr = Args[0]->GetSourceName(); + const auto sourcePtr = Args_[0]->GetSourceName(); if (!sourcePtr || !*sourcePtr) { - ctx.Error(Pos) << GetOpName() << " required to have correlation name in case of JOIN for column at first parameter"; + ctx.Error(Pos_) << GetOpName() << " required to have correlation name in case of JOIN for column at first parameter"; return false; } - column.push_back(Args[0]->Q(*sourcePtr)); + column.push_back(Args_[0]->Q(*sourcePtr)); memberName = DotJoin(*sourcePtr, memberName); } if (!GetLabel()) { SetLabel(memberName); } repackArgs.push_back(BuildTuple(memberPos, column)); - if (Args.size() == 3) { - repackArgs.push_back(Args[2]); + if (Args_.size() == 3) { + repackArgs.push_back(Args_[2]); } - ++MinArgs; - ++MaxArgs; - Args.swap(repackArgs); + ++MinArgs_; + ++MaxArgs_; + Args_.swap(repackArgs); return TCallNode::DoInit(ctx, src); } TNodePtr DoClone() const final { - return new TWeakFieldOp(Pos, CloneContainer(Args)); + return new TWeakFieldOp(Pos_, CloneContainer(Args_)); } }; @@ -1835,17 +1835,17 @@ public: TTableRow(TPosition pos, ui32 argsCount) : INode(pos) - , ArgsCount(argsCount) + , ArgsCount_(argsCount) {} bool DoInit(TContext& ctx, ISource* src) override { if (!src || src->IsFake()) { - ctx.Error(Pos) << TStringBuilder() << (Join ? "Join" : "") << "TableRow requires data source"; + ctx.Error(Pos_) << TStringBuilder() << (Join ? "Join" : "") << "TableRow requires data source"; return false; } - if (ArgsCount > 0) { - ctx.Error(Pos) << "TableRow requires exactly 0 arguments"; + if (ArgsCount_ > 0) { + ctx.Error(Pos_) << "TableRow requires exactly 0 arguments"; return false; } @@ -1877,7 +1877,7 @@ public: auto members = Y(); for (auto& joinLabel: src->GetJoin()->GetJoinLabels()) { - members = L(members, BuildQuotedAtom(Pos, joinLabel + ".")); + members = L(members, BuildQuotedAtom(Pos_, joinLabel + ".")); } block = L(block, Y("let", "res", Y("DivePrefixMembers", "row", Q(members)))); @@ -1887,24 +1887,24 @@ public: block = L(block, Y("let", "res", Y("AddMember", "res", Q(column), addMemberKeyNode))); } - Node = Y("block", Q(L(block, Y("return", "res")))); + Node_ = Y("block", Q(L(block, Y("return", "res")))); } else { - Node = ctx.EnableSystemColumns ? Y("RemoveSystemMembers", "row") : BuildAtom(Pos, "row", 0); + Node_ = ctx.EnableSystemColumns ? Y("RemoveSystemMembers", "row") : BuildAtom(Pos_, "row", 0); } return true; } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } void DoUpdateState() const override { - State.Set(ENodeState::Const, false); + State_.Set(ENodeState::Const, false); } TNodePtr DoClone() const final { - return new TTableRow<Join>(Pos, ArgsCount); + return new TTableRow<Join>(Pos_, ArgsCount_); } bool IsTableRow() const final { @@ -1912,8 +1912,8 @@ public: } private: - const size_t ArgsCount; - TNodePtr Node; + const size_t ArgsCount_; + TNodePtr Node_; }; TTableRows::TTableRows(TPosition pos, const TVector<TNodePtr>& args) @@ -1922,41 +1922,41 @@ TTableRows::TTableRows(TPosition pos, const TVector<TNodePtr>& args) TTableRows::TTableRows(TPosition pos, ui32 argsCount) : INode(pos) - , ArgsCount(argsCount) + , ArgsCount_(argsCount) {} bool TTableRows::DoInit(TContext& ctx, ISource* /*src*/) { - if (ArgsCount > 0) { - ctx.Error(Pos) << "TableRows requires exactly 0 arguments"; + if (ArgsCount_ > 0) { + ctx.Error(Pos_) << "TableRows requires exactly 0 arguments"; return false; } - Node = ctx.EnableSystemColumns ? Y("RemoveSystemMembers", "inputRowsList") : BuildAtom(Pos, "inputRowsList", 0); + Node_ = ctx.EnableSystemColumns ? Y("RemoveSystemMembers", "inputRowsList") : BuildAtom(Pos_, "inputRowsList", 0); return true; } TAstNode* TTableRows::Translate(TContext& ctx) const { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } void TTableRows::DoUpdateState() const { - State.Set(ENodeState::Const, false); + State_.Set(ENodeState::Const, false); } TNodePtr TTableRows::DoClone() const { - return MakeIntrusive<TTableRows>(Pos, ArgsCount); + return MakeIntrusive<TTableRows>(Pos_, ArgsCount_); } TSessionWindow::TSessionWindow(TPosition pos, const TVector<TNodePtr>& args) : INode(pos) - , Args(args) - , FakeSource(BuildFakeSource(pos)) - , Valid(false) + , Args_(args) + , FakeSource_(BuildFakeSource(pos)) + , Valid_(false) {} void TSessionWindow::MarkValid() { YQL_ENSURE(!HasState(ENodeState::Initialized)); - Valid = true; + Valid_ = true; } TNodePtr TSessionWindow::BuildTraits(const TString& label) const { @@ -1964,9 +1964,9 @@ TNodePtr TSessionWindow::BuildTraits(const TString& label) const { auto trueNode = Y("Bool", Q("true")); - if (Args.size() == 2) { - auto timeExpr = Args[0]; - auto timeoutExpr = Args[1]; + if (Args_.size() == 2) { + auto timeExpr = Args_[0]; + auto timeoutExpr = Args_[1]; auto coalesceLess = [&](auto first, auto second) { // first < second ?? true @@ -1980,21 +1980,21 @@ TNodePtr TSessionWindow::BuildTraits(const TString& label) const { auto newSessionPred = Y("And", Y("AggrNotEquals", "curr", "prev"), coalesceLess(timeoutExpr, absDelta)); auto timeoutLambda = BuildLambda(timeoutExpr->GetPos(), Y("prev", "curr"), newSessionPred); - auto sortSpec = Y("SortTraits", Y("TypeOf", label), trueNode, BuildLambda(Pos, Y("row"), Y("PersistableRepr", timeExpr))); + auto sortSpec = Y("SortTraits", Y("TypeOf", label), trueNode, BuildLambda(Pos_, Y("row"), Y("PersistableRepr", timeExpr))); return Y("SessionWindowTraits", Y("TypeOf", label), sortSpec, - BuildLambda(Pos, Y("row"), timeExpr), + BuildLambda(Pos_, Y("row"), timeExpr), timeoutLambda); } - auto orderExpr = Args[0]; - auto initLambda = Args[1]; - auto updateLambda = Args[2]; - auto calculateLambda = Args[3]; + auto orderExpr = Args_[0]; + auto initLambda = Args_[1]; + auto updateLambda = Args_[2]; + auto calculateLambda = Args_[3]; - auto sortSpec = Y("SortTraits", Y("TypeOf", label), trueNode, BuildLambda(Pos, Y("row"), Y("PersistableRepr", orderExpr))); + auto sortSpec = Y("SortTraits", Y("TypeOf", label), trueNode, BuildLambda(Pos_, Y("row"), Y("PersistableRepr", orderExpr))); return Y("SessionWindowTraits", Y("TypeOf", label), @@ -2006,34 +2006,34 @@ TNodePtr TSessionWindow::BuildTraits(const TString& label) const { bool TSessionWindow::DoInit(TContext& ctx, ISource* src) { if (!src || src->IsFake()) { - ctx.Error(Pos) << "SessionWindow requires data source"; + ctx.Error(Pos_) << "SessionWindow requires data source"; return false; } - if (!(Args.size() == 2 || Args.size() == 4)) { - ctx.Error(Pos) << "SessionWindow requires either two or four arguments"; + if (!(Args_.size() == 2 || Args_.size() == 4)) { + ctx.Error(Pos_) << "SessionWindow requires either two or four arguments"; return false; } - if (!Valid) { - ctx.Error(Pos) << "SessionWindow can only be used as a top-level GROUP BY / PARTITION BY expression"; + if (!Valid_) { + ctx.Error(Pos_) << "SessionWindow can only be used as a top-level GROUP BY / PARTITION BY expression"; return false; } - if (Args.size() == 2) { - auto timeExpr = Args[0]; - auto timeoutExpr = Args[1]; - return timeExpr->Init(ctx, src) && timeoutExpr->Init(ctx, FakeSource.Get()); + if (Args_.size() == 2) { + auto timeExpr = Args_[0]; + auto timeoutExpr = Args_[1]; + return timeExpr->Init(ctx, src) && timeoutExpr->Init(ctx, FakeSource_.Get()); } - auto orderExpr = Args[0]; - auto initLambda = Args[1]; - auto updateLambda = Args[2]; - auto calculateLambda = Args[3]; + auto orderExpr = Args_[0]; + auto initLambda = Args_[1]; + auto updateLambda = Args_[2]; + auto calculateLambda = Args_[3]; src->AllColumns(); - return orderExpr->Init(ctx, src) && initLambda->Init(ctx, FakeSource.Get()) && - updateLambda->Init(ctx, FakeSource.Get()) && calculateLambda->Init(ctx, FakeSource.Get()); + return orderExpr->Init(ctx, src) && initLambda->Init(ctx, FakeSource_.Get()) && + updateLambda->Init(ctx, FakeSource_.Get()) && calculateLambda->Init(ctx, FakeSource_.Get()); } TAstNode* TSessionWindow::Translate(TContext&) const { @@ -2042,11 +2042,11 @@ TAstNode* TSessionWindow::Translate(TContext&) const { } void TSessionWindow::DoUpdateState() const { - State.Set(ENodeState::Const, false); + State_.Set(ENodeState::Const, false); } TNodePtr TSessionWindow::DoClone() const { - return new TSessionWindow(Pos, CloneContainer(Args)); + return new TSessionWindow(Pos_, CloneContainer(Args_)); } TString TSessionWindow::GetOpName() const { @@ -2058,28 +2058,28 @@ class TSessionStart final : public INode { public: TSessionStart(TPosition pos, const TVector<TNodePtr>& args) : INode(pos) - , ArgsCount(args.size()) + , ArgsCount_(args.size()) { } private: TSessionStart(TPosition pos, size_t argsCount) : INode(pos) - , ArgsCount(argsCount) + , ArgsCount_(argsCount) {} bool DoInit(TContext& ctx, ISource* src) override { if (!src || src->IsFake()) { - ctx.Error(Pos) << GetOpName() << " requires data source"; + ctx.Error(Pos_) << GetOpName() << " requires data source"; return false; } - if (ArgsCount > 0) { - ctx.Error(Pos) << GetOpName() << " requires exactly 0 arguments"; + if (ArgsCount_ > 0) { + ctx.Error(Pos_) << GetOpName() << " requires exactly 0 arguments"; return false; } auto windowName = src->GetWindowName(); - OverWindow = windowName != nullptr; + OverWindow_ = windowName != nullptr; TNodePtr sessionWindow; if (windowName) { auto spec = src->FindWindowSpecification(ctx, *windowName); @@ -2088,7 +2088,7 @@ private: } sessionWindow = spec->Session; if (!sessionWindow) { - ctx.Error(Pos) << GetOpName() << " can not be used with window " << *windowName << ": SessionWindow specification is missing in PARTITION BY"; + ctx.Error(Pos_) << GetOpName() << " can not be used with window " << *windowName << ": SessionWindow specification is missing in PARTITION BY"; return false; } } else { @@ -2099,15 +2099,15 @@ private: extra = ". Maybe you forgot to add OVER `window_name`?"; } if (src->HasAggregations()) { - ctx.Error(Pos) << GetOpName() << " can not be used here: SessionWindow specification is missing in GROUP BY" << extra; + ctx.Error(Pos_) << GetOpName() << " can not be used here: SessionWindow specification is missing in GROUP BY" << extra; } else { - ctx.Error(Pos) << GetOpName() << " can not be used without aggregation by SessionWindow" << extra; + ctx.Error(Pos_) << GetOpName() << " can not be used without aggregation by SessionWindow" << extra; } return false; } if (!IsStart) { - ctx.Error(Pos) << GetOpName() << " with GROUP BY is not supported yet"; + ctx.Error(Pos_) << GetOpName() << " with GROUP BY is not supported yet"; return false; } } @@ -2118,50 +2118,50 @@ private: YQL_ENSURE(sessionWindow->HasState(ENodeState::Initialized)); YQL_ENSURE(sessionWindow->GetLabel()); - Node = Y("Member", "row", BuildQuotedAtom(Pos, sessionWindow->GetLabel())); - if (OverWindow) { - Node = Y("Member", Node, BuildQuotedAtom(Pos, IsStart ? "start" : "state")); + Node_ = Y("Member", "row", BuildQuotedAtom(Pos_, sessionWindow->GetLabel())); + if (OverWindow_) { + Node_ = Y("Member", Node_, BuildQuotedAtom(Pos_, IsStart ? "start" : "state")); } return true; } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } void DoUpdateState() const override { - State.Set(ENodeState::Const, false); - if (OverWindow) { - State.Set(ENodeState::OverWindow, true); + State_.Set(ENodeState::Const, false); + if (OverWindow_) { + State_.Set(ENodeState::OverWindow, true); } else if (IsStart) { - State.Set(ENodeState::Aggregated, true); + State_.Set(ENodeState::Aggregated, true); } } TNodePtr DoClone() const override { - return new TSessionStart<IsStart>(Pos, ArgsCount); + return new TSessionStart<IsStart>(Pos_, ArgsCount_); } TString GetOpName() const override { return IsStart ? "SessionStart" : "SessionState"; } - const size_t ArgsCount; - bool OverWindow = false; - TNodePtr Node; + const size_t ArgsCount_; + bool OverWindow_ = false; + TNodePtr Node_; }; THoppingWindow::THoppingWindow(TPosition pos, const TVector<TNodePtr>& args) : INode(pos) - , Args(args) - , FakeSource(BuildFakeSource(pos)) - , Valid(false) + , Args_(args) + , FakeSource_(BuildFakeSource(pos)) + , Valid_(false) {} void THoppingWindow::MarkValid() { YQL_ENSURE(!HasState(ENodeState::Initialized)); - Valid = true; + Valid_ = true; } TNodePtr THoppingWindow::BuildTraits(const TString& label) const { @@ -2170,7 +2170,7 @@ TNodePtr THoppingWindow::BuildTraits(const TString& label) const { return Y( "HoppingTraits", Y("ListItemType", Y("TypeOf", label)), - BuildLambda(Pos, Y("row"), Y("Just", Y("SystemMetadata", Y("String", Q("write_time")), Y("DependsOn", "row")))), + BuildLambda(Pos_, Y("row"), Y("Just", Y("SystemMetadata", Y("String", Q("write_time")), Y("DependsOn", "row")))), Hop, Interval, Interval, @@ -2180,23 +2180,23 @@ TNodePtr THoppingWindow::BuildTraits(const TString& label) const { bool THoppingWindow::DoInit(TContext& ctx, ISource* src) { if (!src || src->IsFake()) { - ctx.Error(Pos) << "HoppingWindow requires data source"; + ctx.Error(Pos_) << "HoppingWindow requires data source"; return false; } - if (!(Args.size() == 2)) { - ctx.Error(Pos) << "HoppingWindow requires two arguments"; + if (!(Args_.size() == 2)) { + ctx.Error(Pos_) << "HoppingWindow requires two arguments"; return false; } - if (!Valid) { - ctx.Error(Pos) << "HoppingWindow can only be used as a top-level GROUP BY expression"; + if (!Valid_) { + ctx.Error(Pos_) << "HoppingWindow can only be used as a top-level GROUP BY expression"; return false; } - auto hopExpr = Args[0]; - auto intervalExpr = Args[1]; - if (!(hopExpr->Init(ctx, FakeSource.Get()) && intervalExpr->Init(ctx, FakeSource.Get()))) { + auto hopExpr = Args_[0]; + auto intervalExpr = Args_[1]; + if (!(hopExpr->Init(ctx, FakeSource_.Get()) && intervalExpr->Init(ctx, FakeSource_.Get()))) { return false; } @@ -2212,11 +2212,11 @@ TAstNode* THoppingWindow::Translate(TContext&) const { } void THoppingWindow::DoUpdateState() const { - State.Set(ENodeState::Const, false); + State_.Set(ENodeState::Const, false); } TNodePtr THoppingWindow::DoClone() const { - return new THoppingWindow(Pos, CloneContainer(Args)); + return new THoppingWindow(Pos_, CloneContainer(Args_)); } TString THoppingWindow::GetOpName() const { @@ -2346,17 +2346,17 @@ class TCallableNode final: public INode { public: TCallableNode(TPosition pos, const TString& module, const TString& name, const TVector<TNodePtr>& args, bool forReduce) : INode(pos) - , Module(module) - , Name(name) - , Args(args) - , ForReduce(forReduce) + , Module_(module) + , Name_(name) + , Args_(args) + , ForReduce_(forReduce) {} bool DoInit(TContext& ctx, ISource* src) override { - if (Module == "yql") { - Node = new TFuncNodeImpl(Pos, Name); - } else if (Module == "@yql") { - auto parsedName = StringContent(ctx, Pos, Name); + if (Module_ == "yql") { + Node_ = new TFuncNodeImpl(Pos_, Name_); + } else if (Module_ == "@yql") { + auto parsedName = StringContent(ctx, Pos_, Name_); if (!parsedName) { return false; } @@ -2367,86 +2367,86 @@ public: if (ast.IsOk()) { const auto rootCount = ast.Root->GetChildrenCount(); if (rootCount != 1) { - ctx.Error(Pos) << "Failed to parse YQL: expecting AST root node with single child, but got " << rootCount; + ctx.Error(Pos_) << "Failed to parse YQL: expecting AST root node with single child, but got " << rootCount; return false; } - Node = AstNode(ast.Root->GetChild(0)); + Node_ = AstNode(ast.Root->GetChild(0)); } else { - ctx.Error(Pos) << "Failed to parse YQL: " << ast.Issues.ToString(); + ctx.Error(Pos_) << "Failed to parse YQL: " << ast.Issues.ToString(); return false; } if (src) { src->AllColumns(); } - } else if (ctx.Settings.ModuleMapping.contains(Module)) { - Node = Y("bind", Module + "_module", Q(Name)); + } else if (ctx.Settings.ModuleMapping.contains(Module_)) { + Node_ = Y("bind", Module_ + "_module", Q(Name_)); if (src) { src->AllColumns(); } } else { TNodePtr customUserType = nullptr; - if (Module == "Tensorflow" && Name == "RunBatch") { - if (Args.size() > 2) { + if (Module_ == "Tensorflow" && Name_ == "RunBatch") { + if (Args_.size() > 2) { auto passThroughAtom = Q("PassThrough"); - auto passThroughType = Y("StructMemberType", Y("ListItemType", Y("TypeOf", Args[1])), passThroughAtom); - customUserType = Y("AddMemberType", Args[2], passThroughAtom, passThroughType); - Args.erase(Args.begin() + 2); + auto passThroughType = Y("StructMemberType", Y("ListItemType", Y("TypeOf", Args_[1])), passThroughAtom); + customUserType = Y("AddMemberType", Args_[2], passThroughAtom, passThroughType); + Args_.erase(Args_.begin() + 2); } } - if ("Datetime" == Module || ("Yson" == Module && ctx.PragmaYsonFast)) - Module.append('2'); + if ("Datetime" == Module_ || ("Yson" == Module_ && ctx.PragmaYsonFast)) + Module_.append('2'); - TNodePtr typeConfig = MakeTypeConfig(Pos, to_lower(Module), Args); - if (ForReduce) { + TNodePtr typeConfig = MakeTypeConfig(Pos_, to_lower(Module_), Args_); + if (ForReduce_) { TVector<TNodePtr> udfArgs; - udfArgs.push_back(BuildQuotedAtom(Pos, TString(Module) + "." + Name)); - udfArgs.push_back(customUserType ? customUserType : new TCallNodeImpl(Pos, "TupleType", {})); + udfArgs.push_back(BuildQuotedAtom(Pos_, TString(Module_) + "." + Name_)); + udfArgs.push_back(customUserType ? customUserType : new TCallNodeImpl(Pos_, "TupleType", {})); if (typeConfig) { udfArgs.push_back(typeConfig); } - Node = new TCallNodeImpl(Pos, "SqlReduceUdf", udfArgs); + Node_ = new TCallNodeImpl(Pos_, "SqlReduceUdf", udfArgs); } else { - auto udfArgs = BuildUdfArgs(ctx, Pos, Args, nullptr, nullptr, customUserType, typeConfig); - Node = BuildUdf(ctx, Pos, Module, Name, udfArgs); + auto udfArgs = BuildUdfArgs(ctx, Pos_, Args_, nullptr, nullptr, customUserType, typeConfig); + Node_ = BuildUdf(ctx, Pos_, Module_, Name_, udfArgs); } } - return Node->Init(ctx, src); + return Node_->Init(ctx, src); } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } const TString* FuncName() const override { - return &Name; + return &Name_; } const TString* ModuleName() const override { - return &Module; + return &Module_; } void DoUpdateState() const override { - State.Set(ENodeState::Const, Node->IsConstant()); - State.Set(ENodeState::Aggregated, Node->IsAggregated()); + State_.Set(ENodeState::Const, Node_->IsConstant()); + State_.Set(ENodeState::Aggregated, Node_->IsAggregated()); } TNodePtr DoClone() const override { - return new TCallableNode(Pos, Module, Name, CloneContainer(Args), ForReduce); + return new TCallableNode(Pos_, Module_, Name_, CloneContainer(Args_), ForReduce_); } void DoVisitChildren(const TVisitFunc& func, TVisitNodeSet& visited) const final { - Y_DEBUG_ABORT_UNLESS(Node); - Node->VisitTree(func, visited); + Y_DEBUG_ABORT_UNLESS(Node_); + Node_->VisitTree(func, visited); } private: - TCiString Module; - TString Name; - TVector<TNodePtr> Args; - TNodePtr Node; - const bool ForReduce; + TCiString Module_; + TString Name_; + TVector<TNodePtr> Args_; + TNodePtr Node_; + const bool ForReduce_; }; TNodePtr BuildCallable(TPosition pos, const TString& module, const TString& name, const TVector<TNodePtr>& args, bool forReduce) { @@ -2483,17 +2483,17 @@ public: const bool isPython = ModuleName_.find(TStringBuf("Python")) != TString::npos; if (!isPython) { if (Args_.size() != 2) { - ctx.Error(Pos) << ModuleName_ << " script declaration requires exactly two parameters"; + ctx.Error(Pos_) << ModuleName_ << " script declaration requires exactly two parameters"; return false; } } else { if (Args_.size() < 1 || Args_.size() > 2) { - ctx.Error(Pos) << ModuleName_ << " script declaration requires one or two parameters"; + ctx.Error(Pos_) << ModuleName_ << " script declaration requires one or two parameters"; return false; } } - auto nameAtom = BuildQuotedAtom(Pos, FuncName_); + auto nameAtom = BuildQuotedAtom(Pos_, FuncName_); auto scriptNode = Args_.back(); if (!scriptNode->Init(ctx, src)) { return false; @@ -2535,7 +2535,7 @@ public: } void DoUpdateState() const override { - State.Set(ENodeState::Const, true); + State_.Set(ENodeState::Const, true); } TNodePtr DoClone() const final { @@ -2585,26 +2585,26 @@ class TYqlToDict final: public TCallNode { public: TYqlToDict(TPosition pos, const TString& mode, const TVector<TNodePtr>& args) : TCallNode(pos, "ToDict", 4, 4, args) - , Mode(mode) + , Mode_(mode) {} private: TCallNode::TPtr DoClone() const override { - return new TYqlToDict<Sorted, Hashed>(GetPos(), Mode, CloneContainer(Args)); + return new TYqlToDict<Sorted, Hashed>(GetPos(), Mode_, CloneContainer(Args_)); } bool DoInit(TContext& ctx, ISource* src) override { - if (Args.size() != 1) { - ctx.Error(Pos) << "ToDict required exactly one argument"; + if (Args_.size() != 1) { + ctx.Error(Pos_) << "ToDict required exactly one argument"; return false; } - Args.push_back(BuildLambda(Pos, Y("val"), Y("Nth", "val", Q("0")))); - Args.push_back(BuildLambda(Pos, Y("val"), Y("Nth", "val", Q("1")))); - Args.push_back(Q(Y(Q(Sorted ? "Sorted" : Hashed ? "Hashed" : "Auto"), Q(Mode)))); + Args_.push_back(BuildLambda(Pos_, Y("val"), Y("Nth", "val", Q("0")))); + Args_.push_back(BuildLambda(Pos_, Y("val"), Y("Nth", "val", Q("1")))); + Args_.push_back(Q(Y(Q(Sorted ? "Sorted" : Hashed ? "Hashed" : "Auto"), Q(Mode_)))); return TCallNode::DoInit(ctx, src); } private: - TString Mode; + TString Mode_; }; template <bool IsStart> @@ -2627,11 +2627,11 @@ private: auto legacySpec = src->GetLegacyHoppingWindowSpec(); auto spec = src->GetHoppingWindowSpec(); if (!legacySpec && !spec) { - ctx.Error(Pos) << "No hopping window parameters in aggregation"; + ctx.Error(Pos_) << "No hopping window parameters in aggregation"; return false; } - Nodes.clear(); + Nodes_.clear(); const auto fieldName = legacySpec ? "_yql_time" @@ -2653,7 +2653,7 @@ private: } void DoUpdateState() const override { - State.Set(ENodeState::Aggregated, true); + State_.Set(ENodeState::Aggregated, true); } }; @@ -2661,12 +2661,12 @@ class TInvalidBuiltin final: public INode { public: TInvalidBuiltin(TPosition pos, const TString& info) : INode(pos) - , Info(info) + , Info_(info) { } bool DoInit(TContext& ctx, ISource*) override { - ctx.Error(Pos) << Info; + ctx.Error(Pos_) << Info_; return false; } @@ -2675,10 +2675,10 @@ public: } TPtr DoClone() const override { - return new TInvalidBuiltin(GetPos(), Info); + return new TInvalidBuiltin(GetPos(), Info_); } private: - TString Info; + TString Info_; }; enum EAggrFuncTypeCallback { diff --git a/yql/essentials/sql/v1/complete/sql_complete.cpp b/yql/essentials/sql/v1/complete/sql_complete.cpp index 2ed153f3ecc..07e837ed3f4 100644 --- a/yql/essentials/sql/v1/complete/sql_complete.cpp +++ b/yql/essentials/sql/v1/complete/sql_complete.cpp @@ -24,9 +24,9 @@ namespace NSQLComplete { : Configuration_(std::move(configuration)) , SyntaxAnalysis_(MakeLocalSyntaxAnalysis( lexer, - Configuration_.IgnoredRules, - Configuration_.DisabledPreviousByToken, - Configuration_.ForcedPreviousByToken)) + Configuration_.IgnoredRules_, + Configuration_.DisabledPreviousByToken_, + Configuration_.ForcedPreviousByToken_)) , GlobalAnalysis_(MakeGlobalAnalysis()) , Names_(std::move(names)) { @@ -269,7 +269,7 @@ namespace NSQLComplete { ISqlCompletionEngine::TConfiguration config; for (const std::string& name : GetSqlGrammar().GetAllRules()) { if (name.ends_with("_stmt") && !allowedStmts.contains(name)) { - config.IgnoredRules.emplace(name); + config.IgnoredRules_.emplace(name); } } return config; @@ -277,7 +277,7 @@ namespace NSQLComplete { ISqlCompletionEngine::TConfiguration MakeYDBConfiguration() { ISqlCompletionEngine::TConfiguration config; - config.IgnoredRules = { + config.IgnoredRules_ = { "use_stmt", "import_stmt", "export_stmt", @@ -305,9 +305,9 @@ namespace NSQLComplete { "values_stmt", }); - config.DisabledPreviousByToken = {}; + config.DisabledPreviousByToken_ = {}; - config.ForcedPreviousByToken = { + config.ForcedPreviousByToken_ = { {"PARALLEL", {}}, {"TABLESTORE", {}}, {"FOR", {"EVALUATE"}}, diff --git a/yql/essentials/sql/v1/complete/sql_complete.h b/yql/essentials/sql/v1/complete/sql_complete.h index 90edceacbc4..ce8a7c5296f 100644 --- a/yql/essentials/sql/v1/complete/sql_complete.h +++ b/yql/essentials/sql/v1/complete/sql_complete.h @@ -61,9 +61,9 @@ namespace NSQLComplete { size_t Limit = 256; private: - THashSet<TString> IgnoredRules; - THashMap<TString, THashSet<TString>> DisabledPreviousByToken; - THashMap<TString, THashSet<TString>> ForcedPreviousByToken; + THashSet<TString> IgnoredRules_; + THashMap<TString, THashSet<TString>> DisabledPreviousByToken_; + THashMap<TString, THashSet<TString>> ForcedPreviousByToken_; }; virtual ~ISqlCompletionEngine() = default; diff --git a/yql/essentials/sql/v1/context.cpp b/yql/essentials/sql/v1/context.cpp index 893636eb673..ba64bdc5939 100644 --- a/yql/essentials/sql/v1/context.cpp +++ b/yql/essentials/sql/v1/context.cpp @@ -93,10 +93,10 @@ TContext::TContext(const TLexers& lexers, const TParsers& parsers, const TString& query) : Lexers(lexers) , Parsers(parsers) - , ClusterMapping(settings.ClusterMapping) - , PathPrefix(settings.PathPrefix) - , ClusterPathPrefixes(settings.ClusterPathPrefixes) - , SQLHints(hints) + , ClusterMapping_(settings.ClusterMapping) + , PathPrefix_(settings.PathPrefix) + , ClusterPathPrefixes_(settings.ClusterPathPrefixes) + , SqlHints_(hints) , Settings(settings) , Query(query) , Pool(new TMemoryPool(4096)) @@ -126,7 +126,7 @@ TContext::TContext(const TLexers& lexers, const TParsers& parsers, Scoped->CurrService = *provider; } - Position.File = settings.File; + Position_.File = settings.File; for (auto& flag: settings.Flags) { bool value = true; @@ -155,7 +155,7 @@ TContext::~TContext() } const NYql::TPosition& TContext::Pos() const { - return Position; + return Position_; } TString TContext::MakeName(const TString& name) { @@ -171,17 +171,17 @@ TString TContext::MakeName(const TString& name) { void TContext::PushCurrentBlocks(TBlocks* blocks) { YQL_ENSURE(blocks); - CurrentBlocks.push_back(blocks); + CurrentBlocks_.push_back(blocks); } void TContext::PopCurrentBlocks() { - YQL_ENSURE(!CurrentBlocks.empty()); - CurrentBlocks.pop_back(); + YQL_ENSURE(!CurrentBlocks_.empty()); + CurrentBlocks_.pop_back(); } TBlocks& TContext::GetCurrentBlocks() const { - YQL_ENSURE(!CurrentBlocks.empty()); - return *CurrentBlocks.back(); + YQL_ENSURE(!CurrentBlocks_.empty()); + return *CurrentBlocks_.back(); } IOutputStream& TContext::Error(NYql::TIssueCode code) { @@ -214,19 +214,19 @@ void TContext::SetWarningPolicyFor(NYql::TIssueCode code, NYql::EWarningAction a TVector<NSQLTranslation::TSQLHint> TContext::PullHintForToken(NYql::TPosition tokenPos) { TVector<NSQLTranslation::TSQLHint> result; - auto it = SQLHints.find(tokenPos); - if (it == SQLHints.end()) { + auto it = SqlHints_.find(tokenPos); + if (it == SqlHints_.end()) { return result; } result = std::move(it->second); - SQLHints.erase(it); + SqlHints_.erase(it); return result; } void TContext::WarnUnusedHints() { - if (!SQLHints.empty()) { + if (!SqlHints_.empty()) { // warn about first unused hint - auto firstUnused = SQLHints.begin(); + auto firstUnused = SqlHints_.begin(); YQL_ENSURE(!firstUnused->second.empty()); const NSQLTranslation::TSQLHint& hint = firstUnused->second.front(); Warning(hint.Pos, TIssuesIds::YQL_UNUSED_HINT) << "Hint " << hint.Name << " will not be used"; @@ -265,8 +265,8 @@ IOutputStream& TContext::MakeIssue(ESeverity severity, TIssueCode code, NYql::TP auto& curIssue = Issues.back(); curIssue.Severity = severity; curIssue.IssueCode = code; - IssueMsgHolder.Reset(new TStringOutput(*Issues.back().MutableMessage())); - return *IssueMsgHolder; + IssueMsgHolder_.Reset(new TStringOutput(*Issues.back().MutableMessage())); + return *IssueMsgHolder_; } bool TContext::IsDynamicCluster(const TDeferredAtom& cluster) const { @@ -275,7 +275,7 @@ bool TContext::IsDynamicCluster(const TDeferredAtom& cluster) const { return false; } TString unused; - if (ClusterMapping.GetClusterProvider(*clusterPtr, unused)) { + if (ClusterMapping_.GetClusterProvider(*clusterPtr, unused)) { return false; } if (Settings.AssumeYdbOnClusterWithSlash && clusterPtr->StartsWith('/')) { @@ -291,7 +291,7 @@ bool TContext::SetPathPrefix(const TString& value, TMaybe<TString> arg) { || *arg == RtmrProviderName ) { - ProviderPathPrefixes[*arg] = value; + ProviderPathPrefixes_[*arg] = value; return true; } @@ -302,9 +302,9 @@ bool TContext::SetPathPrefix(const TString& value, TMaybe<TString> arg) { return false; } - ClusterPathPrefixes[normalizedClusterName] = value; + ClusterPathPrefixes_[normalizedClusterName] = value; } else { - PathPrefix = value; + PathPrefix_ = value; } return true; @@ -323,16 +323,16 @@ TStringBuf TContext::GetPrefixPath(const TString& service, const TDeferredAtom& return {}; } auto* clusterPrefix = cluster.GetLiteral() - ? ClusterPathPrefixes.FindPtr(*cluster.GetLiteral()) + ? ClusterPathPrefixes_.FindPtr(*cluster.GetLiteral()) : nullptr; if (clusterPrefix && !clusterPrefix->empty()) { return *clusterPrefix; } else { - auto* providerPrefix = ProviderPathPrefixes.FindPtr(service); + auto* providerPrefix = ProviderPathPrefixes_.FindPtr(service); if (providerPrefix && !providerPrefix->empty()) { return *providerPrefix; - } else if (!PathPrefix.empty()) { - return PathPrefix; + } else if (!PathPrefix_.empty()) { + return PathPrefix_; } return {}; } @@ -569,26 +569,26 @@ TMaybe<EColumnRefState> GetFunctionArgColumnStatus(TContext& ctx, const TString& } TTranslation::TTranslation(TContext& ctx) - : Ctx(ctx) + : Ctx_(ctx) { } TContext& TTranslation::Context() { - return Ctx; + return Ctx_; } IOutputStream& TTranslation::Error() { - return Ctx.Error(); + return Ctx_.Error(); } TNodePtr TTranslation::GetNamedNode(const TString& name) { if (name == "$_") { - Ctx.Error() << "Unable to reference anonymous name " << name; + Ctx_.Error() << "Unable to reference anonymous name " << name; return nullptr; } - auto res = Ctx.Scoped->LookupNode(name); + auto res = Ctx_.Scoped->LookupNode(name); if (!res) { - Ctx.Error() << "Unknown name: " << name; + Ctx_.Error() << "Unknown name: " << name; } return SafeClone(res); } @@ -596,19 +596,19 @@ TNodePtr TTranslation::GetNamedNode(const TString& name) { TString TTranslation::PushNamedNode(TPosition namePos, const TString& name, const TNodeBuilderByName& builder) { TString resultName = name; if (IsAnonymousName(name)) { - resultName = "$_yql_anonymous_name_" + ToString(Ctx.AnonymousNameIndex++); - YQL_ENSURE(Ctx.Scoped->NamedNodes.find(resultName) == Ctx.Scoped->NamedNodes.end()); + resultName = "$_yql_anonymous_name_" + ToString(Ctx_.AnonymousNameIndex++); + YQL_ENSURE(Ctx_.Scoped->NamedNodes.find(resultName) == Ctx_.Scoped->NamedNodes.end()); } auto node = builder(resultName); Y_DEBUG_ABORT_UNLESS(node); - auto mapIt = Ctx.Scoped->NamedNodes.find(resultName); - if (mapIt == Ctx.Scoped->NamedNodes.end()) { - auto result = Ctx.Scoped->NamedNodes.insert(std::make_pair(resultName, TDeque<TNodeWithUsageInfoPtr>())); + auto mapIt = Ctx_.Scoped->NamedNodes.find(resultName); + if (mapIt == Ctx_.Scoped->NamedNodes.end()) { + auto result = Ctx_.Scoped->NamedNodes.insert(std::make_pair(resultName, TDeque<TNodeWithUsageInfoPtr>())); Y_DEBUG_ABORT_UNLESS(result.second); mapIt = result.first; } - mapIt->second.push_front(MakeIntrusive<TNodeWithUsageInfo>(node, namePos, Ctx.ScopeLevel)); + mapIt->second.push_front(MakeIntrusive<TNodeWithUsageInfo>(node, namePos, Ctx_.ScopeLevel)); return resultName; } @@ -624,31 +624,31 @@ TString TTranslation::PushNamedAtom(TPosition namePos, const TString& name) { } void TTranslation::PopNamedNode(const TString& name) { - auto mapIt = Ctx.Scoped->NamedNodes.find(name); - Y_DEBUG_ABORT_UNLESS(mapIt != Ctx.Scoped->NamedNodes.end()); + auto mapIt = Ctx_.Scoped->NamedNodes.find(name); + Y_DEBUG_ABORT_UNLESS(mapIt != Ctx_.Scoped->NamedNodes.end()); Y_DEBUG_ABORT_UNLESS(mapIt->second.size() > 0); auto& top = mapIt->second.front(); - if (!top->IsUsed && !Ctx.HasPendingErrors && !name.StartsWith("$_")) { - Ctx.Warning(top->NamePos, TIssuesIds::YQL_UNUSED_SYMBOL) << "Symbol " << name << " is not used"; + if (!top->IsUsed && !Ctx_.HasPendingErrors && !name.StartsWith("$_")) { + Ctx_.Warning(top->NamePos, TIssuesIds::YQL_UNUSED_SYMBOL) << "Symbol " << name << " is not used"; } mapIt->second.pop_front(); if (mapIt->second.empty()) { - Ctx.Scoped->NamedNodes.erase(mapIt); + Ctx_.Scoped->NamedNodes.erase(mapIt); } } void TTranslation::WarnUnusedNodes() const { - if (Ctx.HasPendingErrors) { + if (Ctx_.HasPendingErrors) { // result is not reliable in this case return; } - for (const auto& [name, items]: Ctx.Scoped->NamedNodes) { + for (const auto& [name, items]: Ctx_.Scoped->NamedNodes) { if (name.StartsWith("$_")) { continue; } for (const auto& item : items) { - if (!item->IsUsed && item->Level == Ctx.ScopeLevel) { - Ctx.Warning(item->NamePos, TIssuesIds::YQL_UNUSED_SYMBOL) << "Symbol " << name << " is not used"; + if (!item->IsUsed && item->Level == Ctx_.ScopeLevel) { + Ctx_.Warning(item->NamePos, TIssuesIds::YQL_UNUSED_SYMBOL) << "Symbol " << name << " is not used"; } } } diff --git a/yql/essentials/sql/v1/context.h b/yql/essentials/sql/v1/context.h index 4f13893a8ad..10f5d2ebf79 100644 --- a/yql/essentials/sql/v1/context.h +++ b/yql/essentials/sql/v1/context.h @@ -113,13 +113,13 @@ namespace NSQLTranslationV1 { void SetWarningPolicyFor(NYql::TIssueCode code, NYql::EWarningAction action); const TString& Token(const NSQLv1Generated::TToken& token) { - Position.Row = token.GetLine(); - Position.Column = token.GetColumn() + 1; + Position_.Row = token.GetLine(); + Position_.Column = token.GetColumn() + 1; return token.GetValue(); } TPosition TokenPosition(const NSQLv1Generated::TToken& token) { - TPosition pos = Position; + TPosition pos = Position_; pos.Row = token.GetLine(); pos.Column = token.GetColumn() + 1; return pos; @@ -141,7 +141,7 @@ namespace NSQLTranslationV1 { } TMaybe<TString> GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const { - auto provider = ClusterMapping.GetClusterProvider(cluster, normalizedClusterName); + auto provider = ClusterMapping_.GetClusterProvider(cluster, normalizedClusterName); if (!provider) { if (Settings.AssumeYdbOnClusterWithSlash && cluster.StartsWith('/')) { normalizedClusterName = cluster; @@ -170,11 +170,11 @@ namespace NSQLTranslationV1 { TNodePtr UniversalAlias(const TString& baseName, TNodePtr&& node); void BodyPart() { - IntoHeading = false; + IntoHeading_ = false; } bool IsParseHeading() const { - return IntoHeading; + return IntoHeading_; } bool IsAlreadyDeclared(const TString& varName) const; @@ -190,44 +190,44 @@ namespace NSQLTranslationV1 { bool CheckColumnReference(TPosition pos, const TString& name) { const bool allowed = GetColumnReferenceState() != EColumnRefState::Deny; if (!allowed) { - Error(pos) << "Column reference \"" << name << "\" is not allowed " << NoColumnErrorContext; + Error(pos) << "Column reference \"" << name << "\" is not allowed " << NoColumnErrorContext_; IncrementMonCounter("sql_errors", "ColumnReferenceInScopeIsNotAllowed"); } return allowed; } EColumnRefState GetColumnReferenceState() const { - return ColumnReferenceState; + return ColumnReferenceState_; } EColumnRefState GetTopLevelColumnReferenceState() const { - return TopLevelColumnReferenceState; + return TopLevelColumnReferenceState_; } [[nodiscard]] TString GetMatchRecognizeDefineVar() const { - YQL_ENSURE(EColumnRefState::MatchRecognizeMeasures == ColumnReferenceState - || EColumnRefState::MatchRecognizeDefine == ColumnReferenceState - || EColumnRefState::MatchRecognizeDefineAggregate == ColumnReferenceState, + YQL_ENSURE(EColumnRefState::MatchRecognizeMeasures == ColumnReferenceState_ + || EColumnRefState::MatchRecognizeDefine == ColumnReferenceState_ + || EColumnRefState::MatchRecognizeDefineAggregate == ColumnReferenceState_, "MATCH_RECOGNIZE Var can only be accessed within processing of MATCH_RECOGNIZE lambdas"); - return MatchRecognizeDefineVar; + return MatchRecognizeDefineVar_; } TString ExtractMatchRecognizeAggrVar() { - YQL_ENSURE(EColumnRefState::MatchRecognizeMeasures == ColumnReferenceState - || EColumnRefState::MatchRecognizeDefine == ColumnReferenceState - || EColumnRefState::MatchRecognizeDefineAggregate == ColumnReferenceState, + YQL_ENSURE(EColumnRefState::MatchRecognizeMeasures == ColumnReferenceState_ + || EColumnRefState::MatchRecognizeDefine == ColumnReferenceState_ + || EColumnRefState::MatchRecognizeDefineAggregate == ColumnReferenceState_, "MATCH_RECOGNIZE Var can only be accessed within processing of MATCH_RECOGNIZE lambdas"); - return std::exchange(MatchRecognizeAggrVar, ""); + return std::exchange(MatchRecognizeAggrVar_, ""); } [[nodiscard]] bool SetMatchRecognizeAggrVar(TString var) { - YQL_ENSURE(EColumnRefState::MatchRecognizeMeasures == ColumnReferenceState - || EColumnRefState::MatchRecognizeDefine == ColumnReferenceState - || EColumnRefState::MatchRecognizeDefineAggregate == ColumnReferenceState, + YQL_ENSURE(EColumnRefState::MatchRecognizeMeasures == ColumnReferenceState_ + || EColumnRefState::MatchRecognizeDefine == ColumnReferenceState_ + || EColumnRefState::MatchRecognizeDefineAggregate == ColumnReferenceState_, "MATCH_RECOGNIZE Var can only be accessed within processing of MATCH_RECOGNIZE lambdas"); - if (MatchRecognizeAggrVar.empty()) { - MatchRecognizeAggrVar = std::move(var); - } else if (MatchRecognizeAggrVar != var) { + if (MatchRecognizeAggrVar_.empty()) { + MatchRecognizeAggrVar_ = std::move(var); + } else if (MatchRecognizeAggrVar_ != var) { Error() << "Illegal use of aggregates or navigation operators in MATCH_RECOGNIZE"; return false; } @@ -235,11 +235,11 @@ namespace NSQLTranslationV1 { } [[nodiscard]] auto& GetMatchRecognizeAggregations() { - YQL_ENSURE(EColumnRefState::MatchRecognizeMeasures == ColumnReferenceState - || EColumnRefState::MatchRecognizeDefine == ColumnReferenceState - || EColumnRefState::MatchRecognizeDefineAggregate == ColumnReferenceState, + YQL_ENSURE(EColumnRefState::MatchRecognizeMeasures == ColumnReferenceState_ + || EColumnRefState::MatchRecognizeDefine == ColumnReferenceState_ + || EColumnRefState::MatchRecognizeDefineAggregate == ColumnReferenceState_, "MATCH_RECOGNIZE Var can only be accessed within processing of MATCH_RECOGNIZE lambdas"); - return MatchRecognizeAggregations; + return MatchRecognizeAggregations_; } TVector<NSQLTranslation::TSQLHint> PullHintForToken(NYql::TPosition tokenPos); @@ -253,28 +253,28 @@ namespace NSQLTranslationV1 { const TParsers Parsers; private: - NYql::TPosition Position; - THolder<TStringOutput> IssueMsgHolder; - NSQLTranslation::TClusterMapping ClusterMapping; - TString PathPrefix; - THashMap<TString, TString> ProviderPathPrefixes; - THashMap<TString, TString> ClusterPathPrefixes; - bool IntoHeading = true; - NSQLTranslation::TSQLHints SQLHints; + NYql::TPosition Position_; + THolder<TStringOutput> IssueMsgHolder_; + NSQLTranslation::TClusterMapping ClusterMapping_; + TString PathPrefix_; + THashMap<TString, TString> ProviderPathPrefixes_; + THashMap<TString, TString> ClusterPathPrefixes_; + bool IntoHeading_ = true; + NSQLTranslation::TSQLHints SqlHints_; friend class TColumnRefScope; - EColumnRefState ColumnReferenceState = EColumnRefState::Deny; - EColumnRefState TopLevelColumnReferenceState = EColumnRefState::Deny; - TString MatchRecognizeDefineVar; - TString MatchRecognizeAggrVar; + EColumnRefState ColumnReferenceState_ = EColumnRefState::Deny; + EColumnRefState TopLevelColumnReferenceState_ = EColumnRefState::Deny; + TString MatchRecognizeDefineVar_; + TString MatchRecognizeAggrVar_; struct TMatchRecognizeAggregation { TString Var; TAggregationPtr Aggr; }; - TVector<TMatchRecognizeAggregation> MatchRecognizeAggregations; - TString NoColumnErrorContext = "in current scope"; - TVector<TBlocks*> CurrentBlocks; + TVector<TMatchRecognizeAggregation> MatchRecognizeAggregations_; + TString NoColumnErrorContext_ = "in current scope"; + TVector<TBlocks*> CurrentBlocks_; public: THashMap<TString, std::pair<TPosition, TNodePtr>> Variables; @@ -386,16 +386,16 @@ namespace NSQLTranslationV1 { class TColumnRefScope { public: TColumnRefScope(TContext& ctx, EColumnRefState state, bool isTopLevelExpr = true, const TString& defineVar = "") - : PrevTop(ctx.TopLevelColumnReferenceState) - , Prev(ctx.ColumnReferenceState) - , PrevErr(ctx.NoColumnErrorContext) - , PrevDefineVar(ctx.MatchRecognizeDefineVar) - , Ctx(ctx) + : PrevTop_(ctx.TopLevelColumnReferenceState_) + , Prev_(ctx.ColumnReferenceState_) + , PrevErr_(ctx.NoColumnErrorContext_) + , PrevDefineVar_(ctx.MatchRecognizeDefineVar_) + , Ctx_(ctx) { if (isTopLevelExpr) { - Ctx.ColumnReferenceState = Ctx.TopLevelColumnReferenceState = state; + Ctx_.ColumnReferenceState_ = Ctx_.TopLevelColumnReferenceState_ = state; } else { - Ctx.ColumnReferenceState = state; + Ctx_.ColumnReferenceState_ = state; } YQL_ENSURE( defineVar.empty() @@ -404,25 +404,25 @@ namespace NSQLTranslationV1 { || EColumnRefState::MatchRecognizeDefineAggregate == state, "Internal logic error" ); - ctx.MatchRecognizeDefineVar = defineVar; + ctx.MatchRecognizeDefineVar_ = defineVar; } void SetNoColumnErrContext(const TString& msg) { - Ctx.NoColumnErrorContext = msg; + Ctx_.NoColumnErrorContext_ = msg; } ~TColumnRefScope() { - Ctx.TopLevelColumnReferenceState = PrevTop; - Ctx.ColumnReferenceState = Prev; - std::swap(Ctx.NoColumnErrorContext, PrevErr); - std::swap(Ctx.MatchRecognizeDefineVar, PrevDefineVar); + Ctx_.TopLevelColumnReferenceState_ = PrevTop_; + Ctx_.ColumnReferenceState_ = Prev_; + std::swap(Ctx_.NoColumnErrorContext_, PrevErr_); + std::swap(Ctx_.MatchRecognizeDefineVar_, PrevDefineVar_); } private: - const EColumnRefState PrevTop; - const EColumnRefState Prev; - TString PrevErr; - TString PrevDefineVar; - TContext& Ctx; + const EColumnRefState PrevTop_; + const EColumnRefState Prev_; + TString PrevErr_; + TString PrevDefineVar_; + TContext& Ctx_; }; TMaybe<EColumnRefState> GetFunctionArgColumnStatus(TContext& ctx, const TString& module, const TString& func, size_t argIndex); @@ -439,15 +439,15 @@ namespace NSQLTranslationV1 { IOutputStream& Error(); const TString& Token(const NSQLv1Generated::TToken& token) { - return Ctx.Token(token); + return Ctx_.Token(token); } TString Identifier(const NSQLv1Generated::TToken& token) { - return IdContent(Ctx, Token(token)); + return IdContent(Ctx_, Token(token)); } TString Identifier(const TString& str) const { - return IdContent(Ctx, str); + return IdContent(Ctx_, str); } TNodePtr GetNamedNode(const TString& name); @@ -474,7 +474,7 @@ namespace NSQLTranslationV1 { TString AltDescription(const google::protobuf::Message& node, ui32 altCase, const google::protobuf::Descriptor* descr) const; protected: - TContext& Ctx; + TContext& Ctx_; }; void EnumerateSqlFlags(std::function<void(std::string_view)> callback); diff --git a/yql/essentials/sql/v1/format/sql_format.cpp b/yql/essentials/sql/v1/format/sql_format.cpp index 9bdcde0f49e..4979a75d4e8 100644 --- a/yql/essentials/sql/v1/format/sql_format.cpp +++ b/yql/essentials/sql/v1/format/sql_format.cpp @@ -203,13 +203,13 @@ class TObfuscatingVisitor { friend struct TStaticData; public: TObfuscatingVisitor() - : StaticData(TStaticData::GetInstance()) + : StaticData_(TStaticData::GetInstance()) {} TString Process(const NProtoBuf::Message& msg) { - Scopes.push_back(EScope::Default); + Scopes_.push_back(EScope::Default); Visit(msg); - return SB; + return Sb_; } private: @@ -219,42 +219,42 @@ private: return; } - if (!First) { - SB << ' '; + if (!First_) { + Sb_ << ' '; } else { - First = false; + First_ = false; } - if (str == "$" && FuncCall) { - FuncCall = false; + if (str == "$" && FuncCall_) { + FuncCall_ = false; } - if (Scopes.back() == EScope::Identifier && !FuncCall) { + if (Scopes_.back() == EScope::Identifier && !FuncCall_) { if (str != "$" && !NYql::LookupSimpleTypeBySqlAlias(str, true)) { - SB << "id"; + Sb_ << "id"; } else { - SB << str; + Sb_ << str; } - } else if (NextToken) { - SB << *NextToken; - NextToken = Nothing(); + } else if (NextToken_) { + Sb_ << *NextToken_; + NextToken_ = Nothing(); } else { - SB << str; + Sb_ << str; } } void VisitPragmaValue(const TRule_pragma_value& msg) { switch (msg.Alt_case()) { case TRule_pragma_value::kAltPragmaValue1: { - NextToken = "0"; + NextToken_ = "0"; break; } case TRule_pragma_value::kAltPragmaValue3: { - NextToken = "'str'"; + NextToken_ = "'str'"; break; } case TRule_pragma_value::kAltPragmaValue4: { - NextToken = "false"; + NextToken_ = "false"; break; } default:; @@ -265,19 +265,19 @@ private: void VisitLiteralValue(const TRule_literal_value& msg) { switch (msg.Alt_case()) { case TRule_literal_value::kAltLiteralValue1: { - NextToken = "0"; + NextToken_ = "0"; break; } case TRule_literal_value::kAltLiteralValue2: { - NextToken = "0.0"; + NextToken_ = "0.0"; break; } case TRule_literal_value::kAltLiteralValue3: { - NextToken = "'str'"; + NextToken_ = "'str'"; break; } case TRule_literal_value::kAltLiteralValue9: { - NextToken = "false"; + NextToken_ = "false"; break; } default:; @@ -289,27 +289,27 @@ private: void VisitAtomExpr(const TRule_atom_expr& msg) { switch (msg.Alt_case()) { case TRule_atom_expr::kAltAtomExpr7: { - FuncCall = true; + FuncCall_ = true; break; } default:; } VisitAllFields(TRule_atom_expr::GetDescriptor(), msg); - FuncCall = false; + FuncCall_ = false; } void VisitInAtomExpr(const TRule_in_atom_expr& msg) { switch (msg.Alt_case()) { case TRule_in_atom_expr::kAltInAtomExpr6: { - FuncCall = true; + FuncCall_ = true; break; } default:; } VisitAllFields(TRule_in_atom_expr::GetDescriptor(), msg); - FuncCall = false; + FuncCall_ = false; } void VisitUnaryCasualSubexpr(const TRule_unary_casual_subexpr& msg) { @@ -327,12 +327,12 @@ private: } if (invoke) { - FuncCall = true; + FuncCall_ = true; } Visit(msg.GetBlock1()); if (invoke) { - FuncCall = false; + FuncCall_ = false; } Visit(msg.GetRule_unary_subexpr_suffix2()); @@ -353,12 +353,12 @@ private: } if (invoke) { - FuncCall = true; + FuncCall_ = true; } Visit(msg.GetBlock1()); if (invoke) { - FuncCall = false; + FuncCall_ = false; } Visit(msg.GetRule_unary_subexpr_suffix2()); @@ -366,12 +366,12 @@ private: void Visit(const NProtoBuf::Message& msg) { const NProtoBuf::Descriptor* descr = msg.GetDescriptor(); - auto scopePtr = StaticData.ScopeDispatch.FindPtr(descr); + auto scopePtr = StaticData_.ScopeDispatch.FindPtr(descr); if (scopePtr) { - Scopes.push_back(*scopePtr); + Scopes_.push_back(*scopePtr); } - auto funcPtr = StaticData.ObfuscatingVisitDispatch.FindPtr(descr); + auto funcPtr = StaticData_.ObfuscatingVisitDispatch.FindPtr(descr); if (funcPtr) { (*funcPtr)(*this, msg); } else { @@ -379,7 +379,7 @@ private: } if (scopePtr) { - Scopes.pop_back(); + Scopes_.pop_back(); } } @@ -387,48 +387,48 @@ private: VisitAllFieldsImpl<TObfuscatingVisitor, &TObfuscatingVisitor::Visit>(this, descr, msg); } - const TStaticData& StaticData; - TStringBuilder SB; - bool First = true; - TMaybe<TString> NextToken; - TVector<EScope> Scopes; - bool FuncCall = false; + const TStaticData& StaticData_; + TStringBuilder Sb_; + bool First_ = true; + TMaybe<TString> NextToken_; + TVector<EScope> Scopes_; + bool FuncCall_ = false; }; class TPrettyVisitor { friend struct TStaticData; public: TPrettyVisitor(const TParsedTokenList& parsedTokens, const TParsedTokenList& comments, bool ansiLexer) - : StaticData(TStaticData::GetInstance()) - , ParsedTokens(parsedTokens) - , Comments(comments) - , AnsiLexer(ansiLexer) + : StaticData_(TStaticData::GetInstance()) + , ParsedTokens_(parsedTokens) + , Comments_(comments) + , AnsiLexer_(ansiLexer) { } TString Process(const NProtoBuf::Message& msg, bool& addLineBefore, bool& addLineAfter, TMaybe<ui32>& stmtCoreAltCase) { - Scopes.push_back(EScope::Default); - MarkedTokens.reserve(ParsedTokens.size()); + Scopes_.push_back(EScope::Default); + MarkedTokens_.reserve(ParsedTokens_.size()); MarkTokens(msg); - Y_ENSURE(MarkTokenStack.empty()); - Y_ENSURE(TokenIndex == ParsedTokens.size()); + Y_ENSURE(MarkTokenStack_.empty()); + Y_ENSURE(TokenIndex_ == ParsedTokens_.size()); - TokenIndex = 0; + TokenIndex_ = 0; Visit(msg); - Y_ENSURE(TokenIndex == ParsedTokens.size()); - Y_ENSURE(MarkTokenStack.empty()); + Y_ENSURE(TokenIndex_ == ParsedTokens_.size()); + Y_ENSURE(MarkTokenStack_.empty()); - for (; LastComment < Comments.size(); ++LastComment) { - const auto text = Comments[LastComment].Content; + for (; LastComment_ < Comments_.size(); ++LastComment_) { + const auto text = Comments_[LastComment_].Content; AddComment(text); } - ui32 lines = OutLine - (OutColumn == 0 ? 1 : 0); - addLineBefore = AddLine.GetOrElse(true) || lines > 1; - addLineAfter = AddLine.GetOrElse(true) || lines - CommentLines > 1; - stmtCoreAltCase = StmtCoreAltCase; + ui32 lines = OutLine_ - (OutColumn_ == 0 ? 1 : 0); + addLineBefore = AddLine_.GetOrElse(true) || lines > 1; + addLineAfter = AddLine_.GetOrElse(true) || lines - CommentLines_ > 1; + stmtCoreAltCase = StmtCoreAltCase_; - return SB; + return Sb_; } private: @@ -449,52 +449,52 @@ private: void Out(char c, bool useIndent = true) { if (c == '\n' || c == '\r') { - SB << c; - if (!(c == '\n' && !SB.empty() && SB.back() == '\r')) { + Sb_ << c; + if (!(c == '\n' && !Sb_.empty() && Sb_.back() == '\r')) { // do not increase OutLine if \n is preceded by \r // this way we handle \r, \n, or \r\n as single new line - ++OutLine; + ++OutLine_; } - OutColumn = 0; + OutColumn_ = 0; } else { - if (!OutColumn && useIndent) { - ui32 indent = (CurrentIndent >= 0) ? CurrentIndent : 0; + if (!OutColumn_ && useIndent) { + ui32 indent = (CurrentIndent_ >= 0) ? CurrentIndent_ : 0; for (ui32 i = 0; i < indent; ++i) { - SB << ' '; + Sb_ << ' '; } } - SB << c; - ++OutColumn; + Sb_ << c; + ++OutColumn_; } } void NewLine() { - if (TokenIndex >= ParsedTokens.size() || ParsedTokens[TokenIndex].Line > LastLine) { + if (TokenIndex_ >= ParsedTokens_.size() || ParsedTokens_[TokenIndex_].Line > LastLine_) { WriteComments(true); } - if (OutColumn) { + if (OutColumn_) { Out('\n'); } } void AddComment(TStringBuf text) { - if (!AfterComment && OutLine > BlockFirstLine && OutColumn == 0) { + if (!AfterComment_ && OutLine_ > BlockFirstLine_ && OutColumn_ == 0) { Out('\n'); } - AfterComment = true; + AfterComment_ = true; - if (!SB.empty() && SB.back() != ' ' && SB.back() != '\n') { + if (!Sb_.empty() && Sb_.back() != ' ' && Sb_.back() != '\n') { Out(' '); } - if (OutColumn == 0) { - ++CommentLines; + if (OutColumn_ == 0) { + ++CommentLines_; } if (!text.StartsWith("--")) { - CommentLines += CountIf(text, [](auto c) { return c == '\n'; }); + CommentLines_ += CountIf(text, [](auto c) { return c == '\n'; }); } Out(text); @@ -504,9 +504,9 @@ private: } if (!text.StartsWith("--") && - TokenIndex < ParsedTokens.size() && - Comments[LastComment].Line < ParsedTokens[TokenIndex].Line && - (LastComment + 1 >= Comments.size() || Comments[LastComment].Line < Comments[LastComment + 1].Line) + TokenIndex_ < ParsedTokens_.size() && + Comments_[LastComment_].Line < ParsedTokens_[TokenIndex_].Line && + (LastComment_ + 1 >= Comments_.size() || Comments_[LastComment_].Line < Comments_[LastComment_ + 1].Line) ) { Out('\n'); } @@ -514,13 +514,13 @@ private: void MarkTokens(const NProtoBuf::Message& msg) { const NProtoBuf::Descriptor* descr = msg.GetDescriptor(); - auto scopePtr = StaticData.ScopeDispatch.FindPtr(descr); + auto scopePtr = StaticData_.ScopeDispatch.FindPtr(descr); if (scopePtr) { if (*scopePtr == EScope::TypeName) { - ++InsideType; + ++InsideType_; } - Scopes.push_back(*scopePtr); + Scopes_.push_back(*scopePtr); } bool suppressExpr = false; @@ -528,19 +528,19 @@ private: const auto& token = dynamic_cast<const TToken&>(msg); MarkToken(token); } else if (descr == TRule_sql_stmt_core::GetDescriptor()) { - if (AddLine.Empty()) { + if (AddLine_.Empty()) { const auto& rule = dynamic_cast<const TRule_sql_stmt_core&>(msg); - AddLine = !IsSimpleStatement(rule).GetOrElse(false); - StmtCoreAltCase = rule.Alt_case(); + AddLine_ = !IsSimpleStatement(rule).GetOrElse(false); + StmtCoreAltCase_ = rule.Alt_case(); } } else if (descr == TRule_lambda_body::GetDescriptor()) { - Y_ENSURE(TokenIndex >= 1); - auto prevIndex = TokenIndex - 1; - Y_ENSURE(prevIndex < ParsedTokens.size()); - Y_ENSURE(ParsedTokens[prevIndex].Content == "{"); - MarkedTokens[prevIndex].OpeningBracket = false; - ForceExpandedColumn = ParsedTokens[prevIndex].LinePos; - ForceExpandedLine = ParsedTokens[prevIndex].Line; + Y_ENSURE(TokenIndex_ >= 1); + auto prevIndex = TokenIndex_ - 1; + Y_ENSURE(prevIndex < ParsedTokens_.size()); + Y_ENSURE(ParsedTokens_[prevIndex].Content == "{"); + MarkedTokens_[prevIndex].OpeningBracket = false; + ForceExpandedColumn_ = ParsedTokens_[prevIndex].LinePos; + ForceExpandedLine_ = ParsedTokens_[prevIndex].Line; } else if (descr == TRule_in_atom_expr::GetDescriptor()) { const auto& value = dynamic_cast<const TRule_in_atom_expr&>(msg); if (value.Alt_case() == TRule_in_atom_expr::kAltInAtomExpr7) { @@ -558,48 +558,48 @@ private: details.HasBlock3() || details.HasBlock4(); if (needsNewline) { auto& paren = value.GetToken1(); - ForceExpandedColumn = paren.GetColumn(); - ForceExpandedLine = paren.GetLine(); + ForceExpandedColumn_ = paren.GetColumn(); + ForceExpandedLine_ = paren.GetLine(); } suppressExpr = true; } else if (descr == TRule_exists_expr::GetDescriptor()) { const auto& value = dynamic_cast<const TRule_exists_expr&>(msg); auto& paren = value.GetToken2(); - ForceExpandedColumn = paren.GetColumn(); - ForceExpandedLine = paren.GetLine(); + ForceExpandedColumn_ = paren.GetColumn(); + ForceExpandedLine_ = paren.GetLine(); suppressExpr = true; } else if (descr == TRule_case_expr::GetDescriptor()) { const auto& value = dynamic_cast<const TRule_case_expr&>(msg); auto& token = value.GetToken1(); - ForceExpandedColumn = token.GetColumn(); - ForceExpandedLine = token.GetLine(); + ForceExpandedColumn_ = token.GetColumn(); + ForceExpandedLine_ = token.GetLine(); } const bool expr = (descr == TRule_expr::GetDescriptor() || descr == TRule_in_expr::GetDescriptor() || descr == TRule_type_name_composite::GetDescriptor()); if (expr) { - ++InsideExpr; + ++InsideExpr_; } - ui64 prevInsideExpr = InsideExpr; + ui64 prevInsideExpr = InsideExpr_; if (suppressExpr) { - InsideExpr = 0; + InsideExpr_ = 0; } VisitAllFieldsImpl<TPrettyVisitor, &TPrettyVisitor::MarkTokens>(this, descr, msg); if (suppressExpr) { - InsideExpr = prevInsideExpr; + InsideExpr_ = prevInsideExpr; } if (scopePtr) { if (*scopePtr == EScope::TypeName) { - --InsideType; + --InsideType_; } - Scopes.pop_back(); + Scopes_.pop_back(); } if (expr) { - --InsideExpr; + --InsideExpr_; } } @@ -609,11 +609,11 @@ private: return; } - MarkedTokens.emplace_back(); - if (str == "(" || str == "[" || str == "{" || str == "<|" || (InsideType && str == "<")) { - MarkTokenStack.push_back(TokenIndex); - auto& info = MarkedTokens[TokenIndex]; - info.OpeningBracket = (InsideExpr > 0); + MarkedTokens_.emplace_back(); + if (str == "(" || str == "[" || str == "{" || str == "<|" || (InsideType_ && str == "<")) { + MarkTokenStack_.push_back(TokenIndex_); + auto& info = MarkedTokens_[TokenIndex_]; + info.OpeningBracket = (InsideExpr_ > 0); } else if (str == ")") { PopBracket("("); } else if (str == "]") { @@ -622,53 +622,53 @@ private: PopBracket("{"); } else if (str == "|>") { PopBracket("<|"); - } else if (InsideType && str == ">") { + } else if (InsideType_ && str == ">") { PopBracket("<"); } - TokenIndex++; + TokenIndex_++; } void PopBracket(const TString& expected) { - Y_ENSURE(!MarkTokenStack.empty()); - Y_ENSURE(MarkTokenStack.back() < ParsedTokens.size()); - auto& openToken = ParsedTokens[MarkTokenStack.back()]; + Y_ENSURE(!MarkTokenStack_.empty()); + Y_ENSURE(MarkTokenStack_.back() < ParsedTokens_.size()); + auto& openToken = ParsedTokens_[MarkTokenStack_.back()]; Y_ENSURE(openToken.Content == expected); - auto& openInfo = MarkedTokens[MarkTokenStack.back()]; - auto& closeInfo = MarkedTokens[TokenIndex]; - const bool forcedExpansion = openToken.Line == ForceExpandedLine && openToken.LinePos <= ForceExpandedColumn; + auto& openInfo = MarkedTokens_[MarkTokenStack_.back()]; + auto& closeInfo = MarkedTokens_[TokenIndex_]; + const bool forcedExpansion = openToken.Line == ForceExpandedLine_ && openToken.LinePos <= ForceExpandedColumn_; if (openInfo.OpeningBracket) { - openInfo.ClosingBracketIndex = TokenIndex; + openInfo.ClosingBracketIndex = TokenIndex_; openInfo.BracketForcedExpansion = forcedExpansion; closeInfo.BracketForcedExpansion = forcedExpansion; closeInfo.ClosingBracket = true; } - MarkTokenStack.pop_back(); + MarkTokenStack_.pop_back(); } void Visit(const NProtoBuf::Message& msg) { const NProtoBuf::Descriptor* descr = msg.GetDescriptor(); //Cerr << descr->name() << "\n"; - auto scopePtr = StaticData.ScopeDispatch.FindPtr(descr); + auto scopePtr = StaticData_.ScopeDispatch.FindPtr(descr); if (descr == TRule_invoke_expr::GetDescriptor()) { - AfterInvokeExpr = true; + AfterInvokeExpr_ = true; } if (descr == TRule_unary_op::GetDescriptor()) { - AfterUnaryOp = true; + AfterUnaryOp_ = true; } if (scopePtr) { if (*scopePtr == EScope::TypeName) { - ++InsideType; + ++InsideType_; } - Scopes.push_back(*scopePtr); + Scopes_.push_back(*scopePtr); } - auto funcPtr = StaticData.PrettyVisitDispatch.FindPtr(descr); + auto funcPtr = StaticData_.PrettyVisitDispatch.FindPtr(descr); if (funcPtr) { (*funcPtr)(*this, msg); } else { @@ -677,10 +677,10 @@ private: if (scopePtr) { if (*scopePtr == EScope::TypeName) { - --InsideType; + --InsideType_; } - Scopes.pop_back(); + Scopes_.pop_back(); } } @@ -736,7 +736,7 @@ private: Visit(m); printOne = false; } else { - ++TokenIndex; + ++TokenIndex_; } } if (printOne) { @@ -748,10 +748,10 @@ private: switch (msg.Alt_case()) { case TRule_value_constructor::kAltValueConstructor1: { auto& ctor = msg.GetAlt_value_constructor1(); - Scopes.push_back(EScope::TypeName); + Scopes_.push_back(EScope::TypeName); Visit(ctor.GetToken1()); - Scopes.pop_back(); - AfterInvokeExpr = true; + Scopes_.pop_back(); + AfterInvokeExpr_ = true; Visit(ctor.GetToken2()); Visit(ctor.GetRule_expr3()); Visit(ctor.GetToken4()); @@ -763,10 +763,10 @@ private: } case TRule_value_constructor::kAltValueConstructor2: { auto& ctor = msg.GetAlt_value_constructor2(); - Scopes.push_back(EScope::TypeName); + Scopes_.push_back(EScope::TypeName); Visit(ctor.GetToken1()); - Scopes.pop_back(); - AfterInvokeExpr = true; + Scopes_.pop_back(); + AfterInvokeExpr_ = true; Visit(ctor.GetToken2()); Visit(ctor.GetRule_expr3()); Visit(ctor.GetToken4()); @@ -776,10 +776,10 @@ private: } case TRule_value_constructor::kAltValueConstructor3: { auto& ctor = msg.GetAlt_value_constructor3(); - Scopes.push_back(EScope::TypeName); + Scopes_.push_back(EScope::TypeName); Visit(ctor.GetToken1()); - Scopes.pop_back(); - AfterInvokeExpr = true; + Scopes_.pop_back(); + AfterInvokeExpr_ = true; Visit(ctor.GetToken2()); Visit(ctor.GetRule_expr3()); Visit(ctor.GetToken4()); @@ -815,12 +815,12 @@ private: if (prefix.HasBlock1()) { Visit(prefix.GetBlock1().GetRule_an_id_or_type1()); VisitKeyword(prefix.GetBlock1().GetToken2()); - AfterDot = true; + AfterDot_ = true; } Visit(msg.GetRule_an_id3()); if (msg.GetBlock4().HasAlt2()) { - AfterInvokeExpr = true; + AfterInvokeExpr_ = true; const auto& alt2 = msg.GetBlock4().GetAlt2(); VisitKeyword(alt2.GetToken1()); Visit(alt2.GetRule_pragma_value2()); @@ -857,7 +857,7 @@ private: NewLine(); Visit(msg.GetRule_bind_parameter_list1()); Visit(msg.GetToken2()); - ExprLineIndent = CurrentIndent; + ExprLineIndent_ = CurrentIndent_; switch (msg.GetBlock3().Alt_case()) { case TRule_named_nodes_stmt::TBlock3::kAlt1: { @@ -905,7 +905,7 @@ private: ythrow yexception() << "Alt is not supported"; } - ExprLineIndent = 0; + ExprLineIndent_ = 0; } void VisitAlterDatabase(const TRule_alter_database_stmt& msg) { @@ -1218,7 +1218,7 @@ private: NewLine(); const auto& alt = msg.GetBlock2().GetAlt1().GetRule_call_action1(); Visit(alt.GetBlock1()); - AfterInvokeExpr = true; + AfterInvokeExpr_ = true; Visit(alt.GetToken2()); if (alt.HasBlock3()) { Visit(alt.GetBlock3()); @@ -1250,7 +1250,7 @@ private: VisitKeyword(msg.GetToken1()); VisitKeyword(msg.GetToken2()); Visit(msg.GetRule_bind_parameter3()); - AfterInvokeExpr = true; + AfterInvokeExpr_ = true; Visit(msg.GetToken4()); if (msg.HasBlock5()) { Visit(msg.GetBlock5()); @@ -1588,20 +1588,20 @@ private: } void WriteComments(bool completeLine) { - while (LastComment < Comments.size()) { - const auto& c = Comments[LastComment]; - if (c.Line > LastLine || !completeLine && c.Line == LastLine && c.LinePos > LastColumn) { + while (LastComment_ < Comments_.size()) { + const auto& c = Comments_[LastComment_]; + if (c.Line > LastLine_ || !completeLine && c.Line == LastLine_ && c.LinePos > LastColumn_) { break; } AddComment(c.Content); - ++LastComment; + ++LastComment_; } } void PosFromToken(const TToken& token) { - LastLine = token.GetLine(); - LastColumn = token.GetColumn(); + LastLine_ = token.GetLine(); + LastColumn_ = token.GetColumn(); WriteComments(false); } @@ -1622,67 +1622,67 @@ private: } //Cerr << str << "\n"; - auto currentScope = Scopes.back(); - if (!SkipSpaceAfterUnaryOp && !InMultiTokenOp) { - if (AfterLess && str == ">") { + auto currentScope = Scopes_.back(); + if (!SkipSpaceAfterUnaryOp_ && !InMultiTokenOp_) { + if (AfterLess_ && str == ">") { Out(' '); - } else if (AfterDigits && str == ".") { + } else if (AfterDigits_ && str == ".") { Out(' '); - } else if (OutColumn && (currentScope == EScope::DoubleQuestion || str != "?") + } else if (OutColumn_ && (currentScope == EScope::DoubleQuestion || str != "?") && str != ":" && str != "." && str != "," && str != ";" && str != ")" && str != "]" - && str != "}" && str != "|>" && str != "::" && !AfterNamespace && !AfterBracket - && !AfterInvokeExpr && !AfterDollarOrAt && !AfterDot && (!AfterQuestion || str != "?") - && (!InsideType || (str != "<" && str != ">" && str != "<>")) - && (!InsideType || !AfterLess) - && (!AfterKeyExpr || str != "[") + && str != "}" && str != "|>" && str != "::" && !AfterNamespace_ && !AfterBracket_ + && !AfterInvokeExpr_ && !AfterDollarOrAt_ && !AfterDot_ && (!AfterQuestion_ || str != "?") + && (!InsideType_ || (str != "<" && str != ">" && str != "<>")) + && (!InsideType_ || !AfterLess_) + && (!AfterKeyExpr_ || str != "[") ) { Out(' '); } } - SkipSpaceAfterUnaryOp = false; - if (AfterUnaryOp) { + SkipSpaceAfterUnaryOp_ = false; + if (AfterUnaryOp_) { if (str == "+" || str == "-" || str == "~") { - SkipSpaceAfterUnaryOp = true; + SkipSpaceAfterUnaryOp_ = true; } - AfterUnaryOp = false; + AfterUnaryOp_ = false; } - AfterInvokeExpr = false; - AfterNamespace = (str == "::"); - AfterBracket = (str == "(" || str == "[" || str == "{" || str == "<|"); - AfterDot = (str == "."); - AfterDigits = !str.empty() && AllOf(str, [](char c) { return c >= '0' && c <= '9'; }); - AfterQuestion = (str == "?"); - AfterLess = (str == "<"); - AfterKeyExpr = false; - AfterComment = false; + AfterInvokeExpr_ = false; + AfterNamespace_ = (str == "::"); + AfterBracket_ = (str == "(" || str == "[" || str == "{" || str == "<|"); + AfterDot_ = (str == "."); + AfterDigits_ = !str.empty() && AllOf(str, [](char c) { return c >= '0' && c <= '9'; }); + AfterQuestion_ = (str == "?"); + AfterLess_ = (str == "<"); + AfterKeyExpr_ = false; + AfterComment_ = false; if (forceKeyword) { str = to_upper(str); } else if (currentScope == EScope::Default) { - if (auto p = StaticData.Keywords.find(to_upper(str)); p != StaticData.Keywords.end()) { + if (auto p = StaticData_.Keywords.find(to_upper(str)); p != StaticData_.Keywords.end()) { str = *p; } } - AfterDollarOrAt = (str == "$" || str == "@"); + AfterDollarOrAt_ = (str == "$" || str == "@"); - const auto& markedInfo = MarkedTokens[TokenIndex]; + const auto& markedInfo = MarkedTokens_[TokenIndex_]; if (markedInfo.ClosingBracket) { - Y_ENSURE(!MarkTokenStack.empty()); - auto beginTokenIndex = MarkTokenStack.back(); - if (markedInfo.BracketForcedExpansion || ParsedTokens[beginTokenIndex].Line != ParsedTokens[TokenIndex].Line) { + Y_ENSURE(!MarkTokenStack_.empty()); + auto beginTokenIndex = MarkTokenStack_.back(); + if (markedInfo.BracketForcedExpansion || ParsedTokens_[beginTokenIndex].Line != ParsedTokens_[TokenIndex_].Line) { // multiline PopCurrentIndent(); NewLine(); } - MarkTokenStack.pop_back(); + MarkTokenStack_.pop_back(); } - if (InCondExpr) { + if (InCondExpr_) { if (str == "=") { str = "=="; } else if (str == "<>") { @@ -1690,7 +1690,7 @@ private: } } - if (!AnsiLexer && ParsedTokens[TokenIndex].Name == "STRING_VALUE") { + if (!AnsiLexer_ && ParsedTokens_[TokenIndex_].Name == "STRING_VALUE") { TStringBuf checkStr = str; if (checkStr.SkipPrefix("\"") && checkStr.ChopSuffix("\"") && !checkStr.Contains("'")) { str = TStringBuilder() << '\'' << checkStr << '\''; @@ -1699,7 +1699,7 @@ private: Out(str); - if (TokenIndex + 1 >= ParsedTokens.size() || ParsedTokens[TokenIndex + 1].Line > LastLine) { + if (TokenIndex_ + 1 >= ParsedTokens_.size() || ParsedTokens_[TokenIndex_ + 1].Line > LastLine_) { WriteComments(true); } @@ -1708,25 +1708,25 @@ private: } if (markedInfo.OpeningBracket) { - MarkTokenStack.push_back(TokenIndex); - if (markedInfo.BracketForcedExpansion || ParsedTokens[TokenIndex].Line != ParsedTokens[markedInfo.ClosingBracketIndex].Line) { + MarkTokenStack_.push_back(TokenIndex_); + if (markedInfo.BracketForcedExpansion || ParsedTokens_[TokenIndex_].Line != ParsedTokens_[markedInfo.ClosingBracketIndex].Line) { // multiline PushCurrentIndent(); NewLine(); } } - if (str == "," && !MarkTokenStack.empty()) { + if (str == "," && !MarkTokenStack_.empty()) { const bool addNewline = - (TokenIndex + 1 < ParsedTokens.size() && ParsedTokens[TokenIndex].Line != ParsedTokens[TokenIndex + 1].Line) - || (TokenIndex > 0 && ParsedTokens[TokenIndex - 1].Line != ParsedTokens[TokenIndex].Line); + (TokenIndex_ + 1 < ParsedTokens_.size() && ParsedTokens_[TokenIndex_].Line != ParsedTokens_[TokenIndex_ + 1].Line) + || (TokenIndex_ > 0 && ParsedTokens_[TokenIndex_ - 1].Line != ParsedTokens_[TokenIndex_].Line); // add line for trailing comma if (addNewline) { NewLine(); } } - TokenIndex++; + TokenIndex_++; } void VisitIntoValuesSource(const TRule_into_values_source& msg) { @@ -2337,7 +2337,7 @@ private: case TRule_table_ref::TBlock3::kAlt2: { const auto& alt = block3.GetAlt2(); Visit(alt.GetRule_an_id_expr1()); - AfterInvokeExpr = true; + AfterInvokeExpr_ = true; Visit(alt.GetToken2()); if (alt.HasBlock3()) { Visit(alt.GetBlock3()); @@ -2350,7 +2350,7 @@ private: const auto& alt = block3.GetAlt3(); Visit(alt.GetRule_bind_parameter1()); if (alt.HasBlock2()) { - AfterInvokeExpr = true; + AfterInvokeExpr_ = true; Visit(alt.GetBlock2()); } @@ -2486,12 +2486,12 @@ private: } Visit(msg.GetToken3()); - ExprLineIndent = CurrentIndent; + ExprLineIndent_ = CurrentIndent_; Visit(msg.GetRule_expr4()); SkipSemicolons(msg.GetBlock5(), /* printOne = */ true); - ExprLineIndent = 0; + ExprLineIndent_ = 0; PopCurrentIndent(); NewLine(); @@ -2529,7 +2529,7 @@ private: void VisitCastExpr(const TRule_cast_expr& msg) { Visit(msg.GetToken1()); - AfterInvokeExpr = true; + AfterInvokeExpr_ = true; Visit(msg.GetToken2()); Visit(msg.GetRule_expr3()); Visit(msg.GetToken4()); @@ -2539,7 +2539,7 @@ private: void VisitBitCastExpr(const TRule_bitcast_expr& msg) { Visit(msg.GetToken1()); - AfterInvokeExpr = true; + AfterInvokeExpr_ = true; Visit(msg.GetToken2()); Visit(msg.GetRule_expr3()); Visit(msg.GetToken4()); @@ -2556,7 +2556,7 @@ private: } void VisitKeyExpr(const TRule_key_expr& msg) { - AfterKeyExpr = true; + AfterKeyExpr_ = true; VisitAllFields(TRule_key_expr::GetDescriptor(), msg); } @@ -2697,9 +2697,9 @@ private: void VisitCondExpr(const TRule_cond_expr& msg) { if (msg.Alt_case() == TRule_cond_expr::kAltCondExpr5) { for (const auto& block : msg.GetAlt_cond_expr5().GetBlock1()) { - InCondExpr = true; + InCondExpr_ = true; Visit(block.GetBlock1()); - InCondExpr = false; + InCondExpr_ = false; Visit(block.GetRule_eq_subexpr2()); } } else { @@ -2740,12 +2740,12 @@ private: switch (b.Alt_case()) { case TRule_neq_subexpr_TBlock3::kAlt1: { const auto& alt = b.GetAlt1(); - const bool hasFirstNewline = LastLine != ParsedTokens[TokenIndex].Line; + const bool hasFirstNewline = LastLine_ != ParsedTokens_[TokenIndex_].Line; // 2 is `??` size in tokens - const bool hasSecondNewline = ParsedTokens[TokenIndex].Line != ParsedTokens[TokenIndex + 2].Line; - const ui32 currentOutLine = OutLine; + const bool hasSecondNewline = ParsedTokens_[TokenIndex_].Line != ParsedTokens_[TokenIndex_ + 2].Line; + const ui32 currentOutLine = OutLine_; - if (currentOutLine != OutLine || (hasFirstNewline && hasSecondNewline)) { + if (currentOutLine != OutLine_ || (hasFirstNewline && hasSecondNewline)) { NewLine(); if (!pushedIndent) { PushCurrentIndent(); @@ -2820,17 +2820,17 @@ private: void VisitShiftRight(const TRule_shift_right& msg) { VisitToken(msg.GetToken1()); - InMultiTokenOp = true; + InMultiTokenOp_ = true; VisitToken(msg.GetToken2()); - InMultiTokenOp = false; + InMultiTokenOp_ = false; } void VisitRotRight(const TRule_rot_right& msg) { VisitToken(msg.GetToken1()); - InMultiTokenOp = true; + InMultiTokenOp_ = true; VisitToken(msg.GetToken2()); VisitToken(msg.GetToken3()); - InMultiTokenOp = false; + InMultiTokenOp_ = false; } template <typename TExpr, typename TGetOp, typename TGetExpr, typename TIter> @@ -2841,13 +2841,13 @@ private: for (; begin != end; ++begin) { const auto op = getOp(*begin); const auto opSize = BinaryOpTokenSize(op); - const bool hasFirstNewline = LastLine != ParsedTokens[TokenIndex].Line; - const bool hasSecondNewline = ParsedTokens[TokenIndex].Line != ParsedTokens[TokenIndex + opSize].Line; - const ui32 currentOutLine = OutLine; + const bool hasFirstNewline = LastLine_ != ParsedTokens_[TokenIndex_].Line; + const bool hasSecondNewline = ParsedTokens_[TokenIndex_].Line != ParsedTokens_[TokenIndex_ + opSize].Line; + const ui32 currentOutLine = OutLine_; - if (currentOutLine != OutLine || hasFirstNewline || hasSecondNewline) { + if (currentOutLine != OutLine_ || hasFirstNewline || hasSecondNewline) { NewLine(); - if (!pushedIndent && CurrentIndent == ExprLineIndent) { + if (!pushedIndent && CurrentIndent_ == ExprLineIndent_) { PushCurrentIndent(); pushedIndent = true; } @@ -2868,58 +2868,58 @@ private: } void PushCurrentIndent() { - CurrentIndent += OneIndent; + CurrentIndent_ += OneIndent; - BlockFirstLine = OutLine; - if (OutColumn > 0) { - ++BlockFirstLine; + BlockFirstLine_ = OutLine_; + if (OutColumn_ > 0) { + ++BlockFirstLine_; } } void PopCurrentIndent() { - CurrentIndent -= OneIndent; + CurrentIndent_ -= OneIndent; } private: - const TStaticData& StaticData; - const TParsedTokenList& ParsedTokens; - const TParsedTokenList& Comments; - const bool AnsiLexer; - TStringBuilder SB; - ui32 OutColumn = 0; - ui32 OutLine = 1; - ui32 LastLine = 0; - ui32 LastColumn = 0; - ui32 LastComment = 0; - ui32 CommentLines = 0; - i32 CurrentIndent = 0; - TVector<EScope> Scopes; - TMaybe<bool> AddLine; - TMaybe<ui32> StmtCoreAltCase; - ui64 InsideType = 0; - bool AfterNamespace = false; - bool AfterBracket = false; - bool AfterInvokeExpr = false; - bool AfterUnaryOp = false; - bool SkipSpaceAfterUnaryOp = false; - bool AfterDollarOrAt = false; - bool AfterDot = false; - bool AfterDigits = false; - bool AfterQuestion = false; - bool AfterLess = false; - bool AfterKeyExpr = false; - bool AfterComment = false; - bool InMultiTokenOp = false; - bool InCondExpr = false; - ui32 ForceExpandedLine = 0; - ui32 ForceExpandedColumn = 0; - ui32 BlockFirstLine = 1; - i32 ExprLineIndent = 0; - - ui32 TokenIndex = 0; - TMarkTokenStack MarkTokenStack; - TVector<TTokenInfo> MarkedTokens; - ui64 InsideExpr = 0; + const TStaticData& StaticData_; + const TParsedTokenList& ParsedTokens_; + const TParsedTokenList& Comments_; + const bool AnsiLexer_; + TStringBuilder Sb_; + ui32 OutColumn_ = 0; + ui32 OutLine_ = 1; + ui32 LastLine_ = 0; + ui32 LastColumn_ = 0; + ui32 LastComment_ = 0; + ui32 CommentLines_ = 0; + i32 CurrentIndent_ = 0; + TVector<EScope> Scopes_; + TMaybe<bool> AddLine_; + TMaybe<ui32> StmtCoreAltCase_; + ui64 InsideType_ = 0; + bool AfterNamespace_ = false; + bool AfterBracket_ = false; + bool AfterInvokeExpr_ = false; + bool AfterUnaryOp_ = false; + bool SkipSpaceAfterUnaryOp_ = false; + bool AfterDollarOrAt_ = false; + bool AfterDot_ = false; + bool AfterDigits_ = false; + bool AfterQuestion_ = false; + bool AfterLess_ = false; + bool AfterKeyExpr_ = false; + bool AfterComment_ = false; + bool InMultiTokenOp_ = false; + bool InCondExpr_ = false; + ui32 ForceExpandedLine_ = 0; + ui32 ForceExpandedColumn_ = 0; + ui32 BlockFirstLine_ = 1; + i32 ExprLineIndent_ = 0; + + ui32 TokenIndex_ = 0; + TMarkTokenStack MarkTokenStack_; + TVector<TTokenInfo> MarkedTokens_; + ui64 InsideExpr_ = 0; }; template <typename T> @@ -3110,14 +3110,14 @@ public: TSqlFormatter(const NSQLTranslationV1::TLexers& lexers, const NSQLTranslationV1::TParsers& parsers, const NSQLTranslation::TTranslationSettings& settings) - : Lexers(lexers) - , Parsers(parsers) - , Settings(settings) + : Lexers_(lexers) + , Parsers_(parsers) + , Settings_(settings) {} bool Format(const TString& query, TString& formattedQuery, NYql::TIssues& issues, EFormatMode mode) override { formattedQuery = (mode == EFormatMode::Obfuscate) ? "" : query; - auto parsedSettings = Settings; + auto parsedSettings = Settings_; if (!NSQLTranslation::ParseTranslationSettings(query, parsedSettings, issues)) { return false; } @@ -3127,7 +3127,7 @@ public: } if (mode == EFormatMode::Obfuscate) { - auto message = NSQLTranslationV1::SqlAST(Parsers, query, parsedSettings.File, issues, NSQLTranslation::SQL_MAX_PARSER_ERRORS, parsedSettings.AnsiLexer, parsedSettings.Antlr4Parser, parsedSettings.Arena); + auto message = NSQLTranslationV1::SqlAST(Parsers_, query, parsedSettings.File, issues, NSQLTranslation::SQL_MAX_PARSER_ERRORS, parsedSettings.AnsiLexer, parsedSettings.Antlr4Parser, parsedSettings.Arena); if (!message) { return false; } @@ -3136,7 +3136,7 @@ public: return Format(visitor.Process(*message), formattedQuery, issues, EFormatMode::Pretty); } - auto lexer = NSQLTranslationV1::MakeLexer(Lexers, parsedSettings.AnsiLexer, parsedSettings.Antlr4Parser); + auto lexer = NSQLTranslationV1::MakeLexer(Lexers_, parsedSettings.AnsiLexer, parsedSettings.Antlr4Parser); TVector<TString> statements; if (!NSQLTranslationV1::SplitQueryToStatements(query, lexer, statements, issues, parsedSettings.File)) { return false; @@ -3162,7 +3162,7 @@ public: } NYql::TIssues parserIssues; - auto message = NSQLTranslationV1::SqlAST(Parsers, currentQuery, parsedSettings.File, parserIssues, NSQLTranslation::SQL_MAX_PARSER_ERRORS, parsedSettings.AnsiLexer, parsedSettings.Antlr4Parser, parsedSettings.Arena); + auto message = NSQLTranslationV1::SqlAST(Parsers_, currentQuery, parsedSettings.File, parserIssues, NSQLTranslation::SQL_MAX_PARSER_ERRORS, parsedSettings.AnsiLexer, parsedSettings.Antlr4Parser, parsedSettings.Arena); if (!message) { finalFormattedQuery << currentQuery; if (!currentQuery.EndsWith("\n")) { @@ -3210,9 +3210,9 @@ public: } private: - const NSQLTranslationV1::TLexers Lexers; - const NSQLTranslationV1::TParsers Parsers; - const NSQLTranslation::TTranslationSettings Settings; + const NSQLTranslationV1::TLexers Lexers_; + const NSQLTranslationV1::TParsers Parsers_; + const NSQLTranslation::TTranslationSettings Settings_; }; } diff --git a/yql/essentials/sql/v1/insert.cpp b/yql/essentials/sql/v1/insert.cpp index 4af4986085b..0e4da5c6163 100644 --- a/yql/essentials/sql/v1/insert.cpp +++ b/yql/essentials/sql/v1/insert.cpp @@ -23,19 +23,19 @@ class TModifySourceBase: public ISource { public: TModifySourceBase(TPosition pos, const TVector<TString>& columnsHint) : ISource(pos) - , ColumnsHint(columnsHint) + , ColumnsHint_(columnsHint) { } bool AddFilter(TContext& ctx, TNodePtr filter) override { Y_UNUSED(filter); - ctx.Error(Pos) << "Source does not allow filtering"; + ctx.Error(Pos_) << "Source does not allow filtering"; return false; } bool AddGroupKey(TContext& ctx, const TString& column) override { Y_UNUSED(column); - ctx.Error(Pos) << "Source does not allow grouping"; + ctx.Error(Pos_) << "Source does not allow grouping"; return false; } @@ -58,24 +58,24 @@ public: } protected: - TVector<TString> ColumnsHint; - TString OperationHumanName; + TVector<TString> ColumnsHint_; + TString OperationHumanName_; }; class TUpdateByValues: public TModifySourceBase { public: TUpdateByValues(TPosition pos, const TString& operationHumanName, const TVector<TString>& columnsHint, const TVector<TNodePtr>& values) : TModifySourceBase(pos, columnsHint) - , OperationHumanName(operationHumanName) - , Values(values) + , OperationHumanName_(operationHumanName) + , Values_(values) {} bool DoInit(TContext& ctx, ISource* src) override { - if (ColumnsHint.size() != Values.size()) { - ctx.Error(Pos) << "VALUES have " << Values.size() << " columns, " << OperationHumanName << " expects: " << ColumnsHint.size(); + if (ColumnsHint_.size() != Values_.size()) { + ctx.Error(Pos_) << "VALUES have " << Values_.size() << " columns, " << OperationHumanName_ << " expects: " << ColumnsHint_.size(); return false; } - for (auto& value: Values) { + for (auto& value: Values_) { if (!value->Init(ctx, src)) { return false; } @@ -85,56 +85,56 @@ public: TNodePtr Build(TContext& ctx) override { Y_UNUSED(ctx); - YQL_ENSURE(Values.size() == ColumnsHint.size()); + YQL_ENSURE(Values_.size() == ColumnsHint_.size()); auto structObj = Y("AsStruct"); - for (size_t i = 0; i < Values.size(); ++i) { - TString column = ColumnsHint[i]; - TNodePtr value = Values[i]; + for (size_t i = 0; i < Values_.size(); ++i) { + TString column = ColumnsHint_[i]; + TNodePtr value = Values_[i]; structObj = L(structObj, Q(Y(Q(column), value))); } - auto updateRow = BuildLambda(Pos, Y("row"), structObj); + auto updateRow = BuildLambda(Pos_, Y("row"), structObj); return updateRow; } TNodePtr DoClone() const final { - return new TUpdateByValues(Pos, OperationHumanName, ColumnsHint, CloneContainer(Values)); + return new TUpdateByValues(Pos_, OperationHumanName_, ColumnsHint_, CloneContainer(Values_)); } private: - TString OperationHumanName; + TString OperationHumanName_; protected: - TVector<TNodePtr> Values; + TVector<TNodePtr> Values_; }; class TModifyByValues: public TModifySourceBase { public: TModifyByValues(TPosition pos, const TString& operationHumanName, const TVector<TString>& columnsHint, const TVector<TVector<TNodePtr>>& values) : TModifySourceBase(pos, columnsHint) - , OperationHumanName(operationHumanName) - , Values(values) + , OperationHumanName_(operationHumanName) + , Values_(values) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); bool hasError = false; - for (const auto& row: Values) { - if (ColumnsHint.empty()) { - ctx.Error(Pos) << OperationHumanName << " ... VALUES requires specification of table columns"; + for (const auto& row: Values_) { + if (ColumnsHint_.empty()) { + ctx.Error(Pos_) << OperationHumanName_ << " ... VALUES requires specification of table columns"; hasError = true; continue; } - if (ColumnsHint.size() != row.size()) { - ctx.Error(Pos) << "VALUES have " << row.size() << " columns, " << OperationHumanName << " expects: " << ColumnsHint.size(); + if (ColumnsHint_.size() != row.size()) { + ctx.Error(Pos_) << "VALUES have " << row.size() << " columns, " << OperationHumanName_ << " expects: " << ColumnsHint_.size(); hasError = true; continue; } for (auto& value: row) { - if (!value->Init(ctx, FakeSource.Get())) { + if (!value->Init(ctx, FakeSource_.Get())) { hasError = true; continue; } @@ -146,11 +146,11 @@ public: TNodePtr Build(TContext& ctx) override { Y_UNUSED(ctx); auto tuple = Y(); - for (const auto& row: Values) { + for (const auto& row: Values_) { auto rowValues = Y("AsStruct"); // ordered struct - auto column = ColumnsHint.begin(); + auto column = ColumnsHint_.begin(); for (auto value: row) { - rowValues = L(rowValues, Q(Y(BuildQuotedAtom(Pos, *column), value))); + rowValues = L(rowValues, Q(Y(BuildQuotedAtom(Pos_, *column), value))); ++column; } tuple = L(tuple, rowValues); @@ -160,46 +160,46 @@ public: TNodePtr DoClone() const final { TVector<TVector<TNodePtr>> clonedValues; - clonedValues.reserve(Values.size()); - for (auto cur: Values) { + clonedValues.reserve(Values_.size()); + for (auto cur: Values_) { clonedValues.push_back(CloneContainer(cur)); } - return new TModifyByValues(Pos, OperationHumanName, ColumnsHint, clonedValues); + return new TModifyByValues(Pos_, OperationHumanName_, ColumnsHint_, clonedValues); } private: - TString OperationHumanName; - TVector<TVector<TNodePtr>> Values; - TSourcePtr FakeSource; + TString OperationHumanName_; + TVector<TVector<TNodePtr>> Values_; + TSourcePtr FakeSource_; }; class TModifyBySource: public TModifySourceBase { public: TModifyBySource(TPosition pos, const TString& operationHumanName, const TVector<TString>& columnsHint, TSourcePtr source) : TModifySourceBase(pos, columnsHint) - , OperationHumanName(operationHumanName) - , Source(std::move(source)) + , OperationHumanName_(operationHumanName) + , Source_(std::move(source)) {} void GetInputTables(TTableList& tableList) const override { - if (Source) { - return Source->GetInputTables(tableList); + if (Source_) { + return Source_->GetInputTables(tableList); } } bool DoInit(TContext& ctx, ISource* src) override { - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - const size_t numColumns = ColumnsHint.size(); + const size_t numColumns = ColumnsHint_.size(); if (numColumns) { - const auto sourceColumns = Source->GetColumns(); + const auto sourceColumns = Source_->GetColumns(); if (!sourceColumns || sourceColumns->All || sourceColumns->QualifiedAll) { return true; } if (numColumns != sourceColumns->List.size()) { - ctx.Error(Pos) << "SELECT have " << numColumns << " columns, " << OperationHumanName << " expects: " << ColumnsHint.size(); + ctx.Error(Pos_) << "SELECT have " << numColumns << " columns, " << OperationHumanName_ << " expects: " << ColumnsHint_.size(); return false; } @@ -208,7 +208,7 @@ public: for (size_t i = 0; i < numColumns; ++i) { bool hasName = sourceColumns->NamedColumns[i]; if (hasName) { - const auto& hintColumn = ColumnsHint[i]; + const auto& hintColumn = ColumnsHint_[i]; const auto& sourceColumn = sourceColumns->List[i]; if (hintColumn != sourceColumn) { if (!mismatchFound) { @@ -220,50 +220,50 @@ public: } } if (mismatchFound) { - ctx.Warning(Pos, TIssuesIds::YQL_SOURCE_SELECT_COLUMN_MISMATCH) << str.Str(); + ctx.Warning(Pos_, TIssuesIds::YQL_SOURCE_SELECT_COLUMN_MISMATCH) << str.Str(); } } return true; } TNodePtr Build(TContext& ctx) override { - auto input = Source->Build(ctx); - if (ColumnsHint.empty()) { + auto input = Source_->Build(ctx); + if (ColumnsHint_.empty()) { return input; } auto columns = Y(); - for (auto column: ColumnsHint) { - columns = L(columns, BuildQuotedAtom(Pos, column)); + for (auto column: ColumnsHint_) { + columns = L(columns, BuildQuotedAtom(Pos_, column)); } - const auto sourceColumns = Source->GetColumns(); + const auto sourceColumns = Source_->GetColumns(); if (!sourceColumns || sourceColumns->All || sourceColumns->QualifiedAll || sourceColumns->HasUnnamed) { // will try to resolve column mapping on type annotation stage return Y("OrderedSqlRename", input, Q(columns)); } - YQL_ENSURE(sourceColumns->List.size() == ColumnsHint.size()); - auto srcColumn = Source->GetColumns()->List.begin(); - auto structObj = Y("AsStruct"); // ordered struct - for (auto column: ColumnsHint) { - structObj = L(structObj, Q(Y(BuildQuotedAtom(Pos, column), - Y("Member", "row", BuildQuotedAtom(Pos, *srcColumn)) + YQL_ENSURE(sourceColumns->List.size() == ColumnsHint_.size()); + auto srcColumn = Source_->GetColumns()->List.begin(); + auto structObj = Y("AsStruct"); // ordered struct + for (auto column: ColumnsHint_) { + structObj = L(structObj, Q(Y(BuildQuotedAtom(Pos_, column), + Y("Member", "row", BuildQuotedAtom(Pos_, *srcColumn)) ))); ++srcColumn; } - return Y("AssumeColumnOrder", Y("OrderedMap", input, BuildLambda(Pos, Y("row"), structObj)), Q(columns)); + return Y("AssumeColumnOrder", Y("OrderedMap", input, BuildLambda(Pos_, Y("row"), structObj)), Q(columns)); } TNodePtr DoClone() const final { - return new TModifyBySource(Pos, OperationHumanName, ColumnsHint, Source->CloneSource()); + return new TModifyBySource(Pos_, OperationHumanName_, ColumnsHint_, Source_->CloneSource()); } EOrderKind GetOrderKind() const final { - return Source->GetOrderKind(); + return Source_->GetOrderKind(); } private: - TString OperationHumanName; - TSourcePtr Source; + TString OperationHumanName_; + TSourcePtr Source_; }; TSourcePtr BuildWriteValues(TPosition pos, const TString& operationHumanName, const TVector<TString>& columnsHint, const TVector<TVector<TNodePtr>>& values) { @@ -283,85 +283,85 @@ public: TWriteColumnsNode(TPosition pos, TScopedStatePtr scoped, const TTableRef& table, EWriteColumnMode mode, TSourcePtr values = nullptr, TNodePtr options = nullptr) : TAstListNode(pos) - , Scoped(scoped) - , Table(table) - , Mode(mode) - , Values(std::move(values)) - , Options(std::move(options)) + , Scoped_(scoped) + , Table_(table) + , Mode_(mode) + , Values_(std::move(values)) + , Options_(std::move(options)) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } void ResetSource(TSourcePtr source) { - TableSource = std::move(source); + TableSource_ = std::move(source); } void ResetUpdate(TSourcePtr update) { - Update = std::move(update); + Update_ = std::move(update); } void ResetIsBatch(bool isBatch) { - IsBatch = isBatch; + IsBatch_ = isBatch; } bool DoInit(TContext& ctx, ISource* src) override { TTableList tableList; TNodePtr values; auto options = Y(); - if (Options) { - if (!Options->Init(ctx, src)) { + if (Options_) { + if (!Options_->Init(ctx, src)) { return false; } - options = L(Options); + options = L(Options_); } ISource* underlyingSrc = src; - if (TableSource) { - if (!TableSource->Init(ctx, src) || !TableSource->InitFilters(ctx)) { + if (TableSource_) { + if (!TableSource_->Init(ctx, src) || !TableSource_->InitFilters(ctx)) { return false; } - options = L(options, Q(Y(Q("filter"), TableSource->BuildFilterLambda()))); + options = L(options, Q(Y(Q("filter"), TableSource_->BuildFilterLambda()))); } bool unordered = false; - if (Values) { - if (!Values->Init(ctx, TableSource.Get())) { + if (Values_) { + if (!Values_->Init(ctx, TableSource_.Get())) { return false; } - Values->GetInputTables(tableList); - underlyingSrc = Values.Get(); - values = Values->Build(ctx); + Values_->GetInputTables(tableList); + underlyingSrc = Values_.Get(); + values = Values_->Build(ctx); if (!values) { return false; } - unordered = (EOrderKind::None == Values->GetOrderKind()); + unordered = (EOrderKind::None == Values_->GetOrderKind()); } - TNodePtr node(BuildInputTables(Pos, tableList, false, Scoped)); + TNodePtr node(BuildInputTables(Pos_, tableList, false, Scoped_)); if (!node->Init(ctx, underlyingSrc)) { return false; } - if (Update) { - if (!Update->Init(ctx, TableSource.Get()) || !Update->InitFilters(ctx)) { + if (Update_) { + if (!Update_->Init(ctx, TableSource_.Get()) || !Update_->InitFilters(ctx)) { return false; } - options = L(options, Q(Y(Q("update"), Update->Build(ctx)))); + options = L(options, Q(Y(Q("update"), Update_->Build(ctx)))); } - if (IsBatch) { + if (IsBatch_) { options = L(options, Q(Y(Q("is_batch"), Q("true")))); } - auto write = BuildWriteTable(Pos, "values", Table, Mode, std::move(options), Scoped); - if (!write->Init(ctx, FakeSource.Get())) { + auto write = BuildWriteTable(Pos_, "values", Table_, Mode_, std::move(options), Scoped_); + if (!write->Init(ctx, FakeSource_.Get())) { return false; } if (values) { node = L(node, Y("let", "values", values)); - if (unordered && ctx.UseUnordered(Table)) { + if (unordered && ctx.UseUnordered(Table_)) { node = L(node, Y("let", "values", Y("Unordered", "values"))); } } else { @@ -379,15 +379,15 @@ public: } protected: - TScopedStatePtr Scoped; - TTableRef Table; - TSourcePtr TableSource; - EWriteColumnMode Mode; - TSourcePtr Values; - TSourcePtr Update; - TSourcePtr FakeSource; - TNodePtr Options; - bool IsBatch = false; + TScopedStatePtr Scoped_; + TTableRef Table_; + TSourcePtr TableSource_; + EWriteColumnMode Mode_; + TSourcePtr Values_; + TSourcePtr Update_; + TSourcePtr FakeSource_; + TNodePtr Options_; + bool IsBatch_ = false; }; EWriteColumnMode ToWriteColumnsMode(ESQLWriteColumnMode sqlWriteColumnMode) { @@ -434,7 +434,7 @@ class TEraseColumnsNode: public TAstListNode { public: TEraseColumnsNode(TPosition pos, const TVector<TString>& columns) : TAstListNode(pos) - , Columns(columns) + , Columns_(columns) { } @@ -443,7 +443,7 @@ public: Y_UNUSED(src); TNodePtr columnList = Y(); - for (const auto& column: Columns) { + for (const auto& column: Columns_) { columnList->Add(Q(column)); } @@ -453,11 +453,11 @@ public: } TNodePtr DoClone() const final { - return new TEraseColumnsNode(GetPos(), Columns); + return new TEraseColumnsNode(GetPos(), Columns_); } private: - TVector<TString> Columns; + TVector<TString> Columns_; }; diff --git a/yql/essentials/sql/v1/join.cpp b/yql/essentials/sql/v1/join.cpp index 11044d559de..cec0d6293e8 100644 --- a/yql/essentials/sql/v1/join.cpp +++ b/yql/essentials/sql/v1/join.cpp @@ -43,14 +43,14 @@ class TJoinBase: public IJoin { public: TJoinBase(TPosition pos, TVector<TSourcePtr>&& sources, TVector<bool>&& anyFlags) : IJoin(pos) - , Sources(std::move(sources)) - , AnyFlags(std::move(anyFlags)) + , Sources_(std::move(sources)) + , AnyFlags_(std::move(anyFlags)) { - YQL_ENSURE(Sources.size() == AnyFlags.size()); + YQL_ENSURE(Sources_.size() == AnyFlags_.size()); } void AllColumns() override { - for (auto& source: Sources) { + for (auto& source: Sources_) { source->AllColumns(); } } @@ -61,7 +61,7 @@ public: return true; } if (const auto sourceName = *column.GetSourceName()) { - for (auto& source: Sources) { + for (auto& source: Sources_) { if (sourceName == source->GetLabel()) { srcByName = source.Get(); break; @@ -84,7 +84,7 @@ public: if (srcByName) { srcByName->AllColumns(); } else { - for (auto& source: Sources) { + for (auto& source: Sources_) { source->AllColumns(); } } @@ -96,7 +96,7 @@ public: if (!srcByName->AddColumn(ctx, column)) { return {}; } - if (!KeysInitializing && !column.IsAsterisk()) { + if (!KeysInitializing_ && !column.IsAsterisk()) { column.SetUseSource(); } return true; @@ -105,7 +105,7 @@ public: TIntrusivePtr<TColumnNode> tryColumn = static_cast<TColumnNode*>(column.Clone().Get()); tryColumn->SetAsNotReliable(); TString lastAcceptedColumnSource; - for (auto& source: Sources) { + for (auto& source: Sources_) { if (source->AddColumn(ctx, *tryColumn)) { ++acceptedColumns; lastAcceptedColumnSource = source->GetLabel(); @@ -115,7 +115,7 @@ public: TStringBuilder sb; const auto& fullColumnName = FullColumnName(column); sb << "Column " << fullColumnName << " is not fit to any source"; - for (auto& source: Sources) { + for (auto& source: Sources_) { if (const auto mistype = source->FindColumnMistype(fullColumnName)) { sb << ". Did you mean " << mistype.GetRef() << "?"; break; @@ -131,30 +131,30 @@ public: } const TColumns* GetColumns() const override { - YQL_ENSURE(IsColumnDone, "Unable to GetColumns while it's not finished"); - return &JoinedColumns; + YQL_ENSURE(IsColumnDone_, "Unable to GetColumns while it's not finished"); + return &JoinedColumns_; } void GetInputTables(TTableList& tableList) const override { - for (auto& src: Sources) { + for (auto& src: Sources_) { src->GetInputTables(tableList); } ISource::GetInputTables(tableList); } TNodePtr BuildJoinKeys(TContext& ctx, const TVector<TDeferredAtom>& names) override { - const size_t n = JoinOps.size(); - TString what(Sources[n]->GetLabel()); + const size_t n = JoinOps_.size(); + TString what(Sources_[n]->GetLabel()); static const TSet<TString> noRightSourceJoinOps = {"LeftOnly", "LeftSemi"}; - for (size_t nn = n; nn > 0 && noRightSourceJoinOps.contains(JoinOps[nn-1]); --nn) { - what = Sources[nn-1]->GetLabel(); + for (size_t nn = n; nn > 0 && noRightSourceJoinOps.contains(JoinOps_[nn-1]); --nn) { + what = Sources_[nn-1]->GetLabel(); } - const TString with(Sources[n + 1]->GetLabel()); + const TString with(Sources_[n + 1]->GetLabel()); for (auto index = n; index <= n + 1; ++index) { - const auto& label = Sources[index]->GetLabel(); + const auto& label = Sources_[index]->GetLabel(); if (label.Contains('.')) { - ctx.Error(Sources[index]->GetPos()) << "Invalid label: " << label << ", unable to use name with dot symbol, you should use AS <simple alias name>"; + ctx.Error(Sources_[index]->GetPos()) << "Invalid label: " << label << ", unable to use name with dot symbol, you should use AS <simple alias name>"; return nullptr; } } @@ -169,8 +169,8 @@ public: TPosition pos(ctx.Pos()); TNodePtr expr; for (auto& name: names) { - auto lhs = BuildColumn(Pos, name, what); - auto rhs = BuildColumn(Pos, name, with); + auto lhs = BuildColumn(Pos_, name, what); + auto rhs = BuildColumn(Pos_, name, with); if (!lhs || !rhs) { return nullptr; } @@ -181,7 +181,7 @@ public: expr = eq; } } - if (expr && Sources.size() > 2) { + if (expr && Sources_.size() > 2) { ctx.Error() << "Multi-way JOINs should be connected with ON clause instead of USING clause"; return nullptr; } @@ -191,13 +191,13 @@ public: bool DoInit(TContext& ctx, ISource* src) override; void SetupJoin(const TString& opName, TNodePtr expr, const TJoinLinkSettings& linkSettings) override { - JoinOps.push_back(opName); - JoinExprs.push_back(expr); - JoinLinkSettings.push_back(linkSettings); + JoinOps_.push_back(opName); + JoinExprs_.push_back(expr); + JoinLinkSettings_.push_back(linkSettings); } bool IsStream() const override { - return AnyOf(Sources, [] (const TSourcePtr& s) { return s->IsStream(); }); + return AnyOf(Sources_, [] (const TSourcePtr& s) { return s->IsStream(); }); } protected: @@ -208,8 +208,8 @@ protected: } bool InitKeysOrFilters(TContext& ctx, ui32 joinIdx, TNodePtr expr) { - const TString joinOp(JoinOps[joinIdx]); - const TJoinLinkSettings linkSettings(JoinLinkSettings[joinIdx]); + const TString joinOp(JoinOps_[joinIdx]); + const TJoinLinkSettings linkSettings(JoinLinkSettings_[joinIdx]); const TCallNode* op = nullptr; if (expr) { const TString opName(expr->GetOpName()); @@ -225,7 +225,7 @@ protected: ui32 idx = 0; THashMap<TString, ui32> sources; - for (auto& source: Sources) { + for (auto& source: Sources_) { auto label = source->GetLabel(); if (!label) { ctx.Error(source->GetPos()) << "JOIN: missing correlation name for source"; @@ -234,8 +234,8 @@ protected: sources.insert({ source->GetLabel(), idx }); ++idx; } - if (sources.size() != Sources.size()) { - ctx.Error(expr ? expr->GetPos() : Pos) << "JOIN: all correlation names must be different"; + if (sources.size() != Sources_.size()) { + ctx.Error(expr ? expr->GetPos() : Pos_) << "JOIN: all correlation names must be different"; return false; } @@ -309,7 +309,7 @@ protected: } if (joinedSources.size() == 1) { - ctx.Error(expr ? expr->GetPos() : Pos) << "JOIN: different correlation names are required for joined tables"; + ctx.Error(expr ? expr->GetPos() : Pos_) << "JOIN: different correlation names are required for joined tables"; return false; } @@ -324,7 +324,7 @@ protected: } } - KeysInitializing = true; + KeysInitializing_ = true; if (op) { for (auto& arg : op->GetArgs()) { if (!arg->Init(ctx, this)) { @@ -334,55 +334,55 @@ protected: Y_DEBUG_ABORT_UNLESS(leftSource); if (sameColumnNamePtr) { - SameKeyMap[*sameColumnNamePtr].insert(*leftSource); - SameKeyMap[*sameColumnNamePtr].insert(*rightSource); + SameKeyMap_[*sameColumnNamePtr].insert(*leftSource); + SameKeyMap_[*sameColumnNamePtr].insert(*rightSource); } } - if (joinIdx == JoinDescrs.size()) { + if (joinIdx == JoinDescrs_.size()) { TJoinDescr newDescr(joinOp); newDescr.LinkSettings = linkSettings; - JoinDescrs.push_back(std::move(newDescr)); + JoinDescrs_.push_back(std::move(newDescr)); } - JoinDescrs.back().Keys.push_back({ { leftSourceIdx, op ? op->GetArgs()[leftArg] : nullptr}, + JoinDescrs_.back().Keys.push_back({ { leftSourceIdx, op ? op->GetArgs()[leftArg] : nullptr}, { rightSourceIdx, op ? op->GetArgs()[rightArg] : nullptr } }); - KeysInitializing = false; + KeysInitializing_ = false; return true; } bool IsJoinKeysInitializing() const override { - return KeysInitializing; + return KeysInitializing_; } protected: - TVector<TString> JoinOps; - TVector<TNodePtr> JoinExprs; - TVector<TJoinLinkSettings> JoinLinkSettings; - TVector<TJoinDescr> JoinDescrs; - THashMap<TString, THashSet<TString>> SameKeyMap; - const TVector<TSourcePtr> Sources; - const TVector<bool> AnyFlags; - TColumns JoinedColumns; - bool KeysInitializing = false; - bool IsColumnDone = false; + TVector<TString> JoinOps_; + TVector<TNodePtr> JoinExprs_; + TVector<TJoinLinkSettings> JoinLinkSettings_; + TVector<TJoinDescr> JoinDescrs_; + THashMap<TString, THashSet<TString>> SameKeyMap_; + const TVector<TSourcePtr> Sources_; + const TVector<bool> AnyFlags_; + TColumns JoinedColumns_; + bool KeysInitializing_ = false; + bool IsColumnDone_ = false; void FinishColumns() override { - if (IsColumnDone) { + if (IsColumnDone_) { return; } - YQL_ENSURE(JoinOps.size()+1 == Sources.size()); + YQL_ENSURE(JoinOps_.size()+1 == Sources_.size()); bool excludeNextSource = false; - decltype(JoinOps)::const_iterator opIter = JoinOps.begin(); - for (auto& src: Sources) { + decltype(JoinOps_)::const_iterator opIter = JoinOps_.begin(); + for (auto& src: Sources_) { if (excludeNextSource) { excludeNextSource = false; - if (opIter != JoinOps.end()) { + if (opIter != JoinOps_.end()) { ++opIter; } continue; } - if (opIter != JoinOps.end()) { + if (opIter != JoinOps_.end()) { auto joinOper = *opIter; ++opIter; if (joinOper == "LeftSemi" || joinOper == "LeftOnly") { @@ -399,14 +399,14 @@ protected: TColumns upColumns; upColumns.Merge(*columnsPtr); upColumns.SetPrefix(src->GetLabel()); - JoinedColumns.Merge(upColumns); + JoinedColumns_.Merge(upColumns); } - IsColumnDone = true; + IsColumnDone_ = true; } }; bool TJoinBase::DoInit(TContext& ctx, ISource* initSrc) { - for (auto& source: Sources) { + for (auto& source: Sources_) { if (!source->Init(ctx, initSrc)) { return false; } @@ -421,19 +421,19 @@ bool TJoinBase::DoInit(TContext& ctx, ISource* initSrc) { } } - YQL_ENSURE(JoinOps.size() == JoinExprs.size(), "Invalid join exprs number"); - YQL_ENSURE(JoinOps.size() == JoinLinkSettings.size()); + YQL_ENSURE(JoinOps_.size() == JoinExprs_.size(), "Invalid join exprs number"); + YQL_ENSURE(JoinOps_.size() == JoinLinkSettings_.size()); const TSet<TString> allowedJoinOps = {"Inner", "Left", "Right", "Full", "LeftOnly", "RightOnly", "Exclusion", "LeftSemi", "RightSemi", "Cross"}; - for (auto& opName: JoinOps) { + for (auto& opName: JoinOps_) { if (!allowedJoinOps.contains(opName)) { - ctx.Error(Pos) << "Invalid join op: " << opName; + ctx.Error(Pos_) << "Invalid join op: " << opName; return false; } } ui32 idx = 0; - for (auto expr: JoinExprs) { + for (auto expr: JoinExprs_) { if (expr) { TDeque<TNodePtr> conjQueue; conjQueue.push_back(expr); @@ -457,15 +457,15 @@ bool TJoinBase::DoInit(TContext& ctx, ISource* initSrc) { } TSet<ui32> joinedSources; - for (auto& descr: JoinDescrs) { + for (auto& descr: JoinDescrs_) { for (auto& key : descr.Keys) { joinedSources.insert(key.first.Source); joinedSources.insert(key.second.Source); } } - for (idx = 0; idx < Sources.size(); ++idx) { + for (idx = 0; idx < Sources_.size(); ++idx) { if (!joinedSources.contains(idx)) { - ctx.Error(Sources[idx]->GetPos()) << "Source: " << Sources[idx]->GetLabel() << " was not used in join expressions"; + ctx.Error(Sources_[idx]->GetPos()) << "Source: " << Sources_[idx]->GetLabel() << " was not used in join expressions"; return false; } } @@ -477,21 +477,21 @@ class TEquiJoin: public TJoinBase { public: TEquiJoin(TPosition pos, TVector<TSourcePtr>&& sources, TVector<bool>&& anyFlags, bool strictJoinKeyTypes) : TJoinBase(pos, std::move(sources), std::move(anyFlags)) - , StrictJoinKeyTypes(strictJoinKeyTypes) + , StrictJoinKeyTypes_(strictJoinKeyTypes) { } TNodePtr Build(TContext& ctx) override { TMap<std::pair<TString, TString>, TNodePtr> extraColumns; TNodePtr joinTree; - for (auto& descr: JoinDescrs) { + for (auto& descr: JoinDescrs_) { auto leftBranch = joinTree; bool leftAny = false; if (!leftBranch) { - leftBranch = BuildQuotedAtom(Pos, Sources[descr.Keys[0].first.Source]->GetLabel()); - leftAny = AnyFlags[descr.Keys[0].first.Source]; + leftBranch = BuildQuotedAtom(Pos_, Sources_[descr.Keys[0].first.Source]->GetLabel()); + leftAny = AnyFlags_[descr.Keys[0].first.Source]; } - bool rightAny = AnyFlags[descr.Keys[0].second.Source]; + bool rightAny = AnyFlags_[descr.Keys[0].second.Source]; auto leftKeys = GetColumnNames(ctx, extraColumns, descr.Keys, true); auto rightKeys = GetColumnNames(ctx, extraColumns, descr.Keys, false); if (!leftKeys || !rightKeys) { @@ -526,7 +526,7 @@ public: joinTree = Q(Y( Q(descr.Op), leftBranch, - BuildQuotedAtom(Pos, Sources[descr.Keys[0].second.Source]->GetLabel()), + BuildQuotedAtom(Pos_, Sources_[descr.Keys[0].second.Source]->GetLabel()), leftKeys, rightKeys, Q(linkOptions) @@ -535,8 +535,8 @@ public: TNodePtr equiJoin(Y("EquiJoin")); bool ordered = false; - for (size_t i = 0; i < Sources.size(); ++i) { - auto& source = Sources[i]; + for (size_t i = 0; i < Sources_.size(); ++i) { + auto& source = Sources_[i]; auto sourceNode = source->Build(ctx); if (!sourceNode) { return nullptr; @@ -559,10 +559,10 @@ public: return nullptr; } - block = L(block, Y("let", "flatten", Y(useOrderedForSource ? "OrderedFlatMap" : "FlatMap", "flatten", BuildLambda(Pos, Y("row"), premap)))); + block = L(block, Y("let", "flatten", Y(useOrderedForSource ? "OrderedFlatMap" : "FlatMap", "flatten", BuildLambda(Pos_, Y("row"), premap)))); } - block = L(block, Y("let", "flatten", Y(useOrderedForSource ? "OrderedFlatMap" : "FlatMap", "flatten", BuildLambda(Pos, Y("row"), flatten, "res")))); + block = L(block, Y("let", "flatten", Y(useOrderedForSource ? "OrderedFlatMap" : "FlatMap", "flatten", BuildLambda(Pos_, Y("row"), flatten, "res")))); sourceNode = Y("block", Q(L(block, Y("return", "flatten")))); } TNodePtr extraMembers; @@ -579,7 +579,7 @@ public: ); } if (extraMembers) { - sourceNode = Y(useOrderedForSource ? "OrderedMap" : "Map", sourceNode, BuildLambda(Pos, Y("row"), extraMembers, "row")); + sourceNode = Y(useOrderedForSource ? "OrderedMap" : "Map", sourceNode, BuildLambda(Pos_, Y("row"), extraMembers, "row")); } sourceNode = Y("RemoveSystemMembers", sourceNode); equiJoin = L(equiJoin, Q(Y(sourceNode, BuildQuotedAtom(source->GetPos(), source->GetLabel())))); @@ -591,27 +591,27 @@ public: } removeMembers = L( removeMembers, - Y("let", "row", Y("ForceRemoveMember", "row", BuildQuotedAtom(Pos, DotJoin(it.first.first, it.first.second)))) + Y("let", "row", Y("ForceRemoveMember", "row", BuildQuotedAtom(Pos_, DotJoin(it.first.first, it.first.second)))) ); } auto options = Y(); - if (StrictJoinKeyTypes) { + if (StrictJoinKeyTypes_) { options = L(options, Q(Y(Q("strict_keys")))); } equiJoin = L(equiJoin, joinTree, Q(options)); if (removeMembers) { - equiJoin = Y(ordered ? "OrderedMap" : "Map", equiJoin, BuildLambda(Pos, Y("row"), removeMembers, "row")); + equiJoin = Y(ordered ? "OrderedMap" : "Map", equiJoin, BuildLambda(Pos_, Y("row"), removeMembers, "row")); } return equiJoin; } const THashMap<TString, THashSet<TString>>& GetSameKeysMap() const override { - return SameKeyMap; + return SameKeyMap_; } TVector<TString> GetJoinLabels() const override { TVector<TString> labels; - for (auto& source: Sources) { + for (auto& source: Sources_) { const auto label = source->GetLabel(); YQL_ENSURE(label); labels.push_back(label); @@ -621,13 +621,13 @@ public: TPtr DoClone() const final { TVector<TSourcePtr> clonedSources; - for (auto& cur: Sources) { + for (auto& cur: Sources_) { clonedSources.push_back(cur->CloneSource()); } - auto newSource = MakeIntrusive<TEquiJoin>(Pos, std::move(clonedSources), TVector<bool>(AnyFlags), StrictJoinKeyTypes); - newSource->JoinOps = JoinOps; - newSource->JoinExprs = CloneContainer(JoinExprs); - newSource->JoinLinkSettings = JoinLinkSettings; + auto newSource = MakeIntrusive<TEquiJoin>(Pos_, std::move(clonedSources), TVector<bool>(AnyFlags_), StrictJoinKeyTypes_); + newSource->JoinOps_ = JoinOps_; + newSource->JoinExprs_ = CloneContainer(JoinExprs_); + newSource->JoinLinkSettings_ = JoinLinkSettings_; return newSource; } @@ -641,7 +641,7 @@ private: Y_UNUSED(ctx); auto res = Y(); for (auto& it: keys) { - auto tableName = Sources[left ? it.first.Source : it.second.Source]->GetLabel(); + auto tableName = Sources_[left ? it.first.Source : it.second.Source]->GetLabel(); TString columnName; auto column = left ? it.first.Column : it.second.Column; if (!column) { @@ -657,14 +657,14 @@ private: extraColumns.insert({ std::make_pair(tableName, columnName), column }); } - res = L(res, BuildQuotedAtom(Pos, tableName)); - res = L(res, BuildQuotedAtom(Pos, columnName)); + res = L(res, BuildQuotedAtom(Pos_, tableName)); + res = L(res, BuildQuotedAtom(Pos_, columnName)); } return Q(res); } - const bool StrictJoinKeyTypes; + const bool StrictJoinKeyTypes_; }; TSourcePtr BuildEquiJoin(TPosition pos, TVector<TSourcePtr>&& sources, TVector<bool>&& anyFlags, bool strictJoinKeyTypes) { diff --git a/yql/essentials/sql/v1/lexer/lexer.cpp b/yql/essentials/sql/v1/lexer/lexer.cpp index 88ced55ccf4..543d0ccfd93 100644 --- a/yql/essentials/sql/v1/lexer/lexer.cpp +++ b/yql/essentials/sql/v1/lexer/lexer.cpp @@ -31,7 +31,7 @@ using NSQLTranslation::MakeDummyLexerFactory; class TV1Lexer : public ILexer { public: explicit TV1Lexer(const TLexers& lexers, bool ansi, bool antlr4, ELexerFlavor flavor) - : Factory(GetFactory(lexers, ansi, antlr4, flavor)) + : Factory_(GetFactory(lexers, ansi, antlr4, flavor)) { } @@ -39,7 +39,7 @@ public: #if defined(_tsan_enabled_) TGuard<TMutex> grd(SanitizerSQLTranslationMutex); #endif - return Factory->MakeLexer()->Tokenize(query, queryName, onNextToken, issues, maxErrors); + return Factory_->MakeLexer()->Tokenize(query, queryName, onNextToken, issues, maxErrors); } private: @@ -100,7 +100,7 @@ private: } private: - NSQLTranslation::TLexerFactoryPtr Factory; + NSQLTranslation::TLexerFactoryPtr Factory_; }; } // namespace @@ -273,7 +273,7 @@ void SplitByStatements(TTokenIterator begin, TTokenIterator end, TVector<TTokenI } bool SplitQueryToStatements( - const TString& query, NSQLTranslation::ILexer::TPtr& lexer, + const TString& query, NSQLTranslation::ILexer::TPtr& lexer, TVector<TString>& statements, NYql::TIssues& issues, const TString& file, bool areBlankSkipped) { TParsedTokenList allTokens; diff --git a/yql/essentials/sql/v1/list_builtin.cpp b/yql/essentials/sql/v1/list_builtin.cpp index c059768cb4d..a6965a70755 100644 --- a/yql/essentials/sql/v1/list_builtin.cpp +++ b/yql/essentials/sql/v1/list_builtin.cpp @@ -5,57 +5,57 @@ using namespace NYql; namespace NSQLTranslationV1 { TAstNode* TListBuiltin::Translate(TContext& ctx) const { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } TNodePtr TListBuiltin::GetIdentityLambda() { - return BuildLambda(Pos, Y("arg"), Y(), "arg"); + return BuildLambda(Pos_, Y("arg"), Y(), "arg"); } bool TListSortBuiltin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() < 1 || Args.size() > 2) { - ctx.Error(Pos) << OpName << " requires one or two parameters."; + if (Args_.size() < 1 || Args_.size() > 2) { + ctx.Error(Pos_) << OpName_ << " requires one or two parameters."; return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - if (Args.size() == 2) { - if (!Args[1]->Init(ctx, src)) { + if (Args_.size() == 2) { + if (!Args_[1]->Init(ctx, src)) { return false; } } else { - Args.push_back(GetIdentityLambda()); + Args_.push_back(GetIdentityLambda()); } - Node = Y(OpName, Args[0], Y("Bool", Q(Asc ? "true" : "false")), Args[1]); + Node_ = Y(OpName_, Args_[0], Y("Bool", Q(Asc_ ? "true" : "false")), Args_[1]); return true; } bool TListExtractBuiltin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() != 2) { - ctx.Error(Pos) << OpName << " requires exactly two parameters."; + if (Args_.size() != 2) { + ctx.Error(Pos_) << OpName_ << " requires exactly two parameters."; return false; } - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (!arg->Init(ctx, src)) { return false; } } - Args[1] = MakeAtomFromExpression(Pos, ctx, Args[1]).Build(); - Node = Y(OpName, Args[0], Args[1]); + Args_[1] = MakeAtomFromExpression(Pos_, ctx, Args_[1]).Build(); + Node_ = Y(OpName_, Args_[0], Args_[1]); return true; } bool TListProcessBuiltin::CheckArgs(TContext& ctx, ISource* src) { - if (Args.size() != 2 ) { - ctx.Error(Pos) << OpName << " requires exactly two parameters"; + if (Args_.size() != 2 ) { + ctx.Error(Pos_) << OpName_ << " requires exactly two parameters"; return false; } - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (!arg->Init(ctx, src)) { return false; } @@ -68,7 +68,7 @@ bool TListMapBuiltin::DoInit(TContext& ctx, ISource* src) { if (!CheckArgs(ctx, src)) { return false; }; - Node = Y(OpName, Args[0], Args[1]); + Node_ = Y(OpName_, Args_[0], Args_[1]); return true; } @@ -77,66 +77,66 @@ bool TListFilterBuiltin::DoInit(TContext& ctx, ISource* src) { if (!CheckArgs(ctx, src)) { return false; }; - Node = Y(OpName, Args[0], GetFilterLambda()); + Node_ = Y(OpName_, Args_[0], GetFilterLambda()); return true; } TNodePtr TListFilterBuiltin::GetFilterLambda() { - return BuildLambda(Pos, Y("item"), Y("Coalesce", Y("Apply", Args[1], "item"), Y("Bool", Q("false")))); + return BuildLambda(Pos_, Y("item"), Y("Coalesce", Y("Apply", Args_[1], "item"), Y("Bool", Q("false")))); } bool TListCreateBuiltin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() != 1) { - ctx.Error(Pos) << OpName << " requires only one parameter"; + if (Args_.size() != 1) { + ctx.Error(Pos_) << OpName_ << " requires only one parameter"; return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - Node = Y("List", Y("ListType", Args[0])); + Node_ = Y("List", Y("ListType", Args_[0])); return true; } void TListCreateBuiltin::DoUpdateState() const { - State.Set(ENodeState::Const); + State_.Set(ENodeState::Const); } bool TDictCreateBuiltin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() != 2) { - ctx.Error(Pos) << OpName << " requires two parameters"; + if (Args_.size() != 2) { + ctx.Error(Pos_) << OpName_ << " requires two parameters"; return false; } for (ui32 i = 0; i < 2; ++i) { - if (!Args[i]->Init(ctx, src)) { + if (!Args_[i]->Init(ctx, src)) { return false; } } - Node = Y("Dict", Y("DictType", Args[0], Args[1])); + Node_ = Y("Dict", Y("DictType", Args_[0], Args_[1])); return true; } void TDictCreateBuiltin::DoUpdateState() const { - State.Set(ENodeState::Const); + State_.Set(ENodeState::Const); } bool TSetCreateBuiltin::DoInit(TContext& ctx, ISource* src) { - if (Args.size() != 1) { - ctx.Error(Pos) << OpName << " requires one parameter"; + if (Args_.size() != 1) { + ctx.Error(Pos_) << OpName_ << " requires one parameter"; return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - Node = Y("Dict", Y("DictType", Args[0], Y("VoidType"))); + Node_ = Y("Dict", Y("DictType", Args_[0], Y("VoidType"))); return true; } void TSetCreateBuiltin::DoUpdateState() const { - State.Set(ENodeState::Const); + State_.Set(ENodeState::Const); } } // namespace NSQLTranslationV1 diff --git a/yql/essentials/sql/v1/list_builtin.h b/yql/essentials/sql/v1/list_builtin.h index 61646498b7b..92961e2840d 100644 --- a/yql/essentials/sql/v1/list_builtin.h +++ b/yql/essentials/sql/v1/list_builtin.h @@ -20,8 +20,8 @@ public: const TString& opName, const TVector<TNodePtr>& args) : TCallNode(pos, opName, args.size(), args.size(), args) - , OpName(opName) - , Args(args) + , OpName_(opName) + , Args_(args) {} bool DoInit(TContext& ctx, ISource* src) override = 0; @@ -29,9 +29,9 @@ public: TAstNode* Translate(TContext& ctx) const override; protected: - const TString OpName; - TVector<TNodePtr> Args; - TNodePtr Node; + const TString OpName_; + TVector<TNodePtr> Args_; + TNodePtr Node_; inline TNodePtr GetIdentityLambda(); }; @@ -40,17 +40,17 @@ class TListSortBuiltin final: public TListBuiltin { public: TListSortBuiltin(TPosition pos, const TVector<TNodePtr>& args, bool asc) : TListBuiltin(pos, "ListSort", args) - , Asc(asc) + , Asc_(asc) {} bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TListSortBuiltin(Pos, CloneContainer(Args), Asc); + return new TListSortBuiltin(Pos_, CloneContainer(Args_), Asc_); } private: - const bool Asc; + const bool Asc_; }; class TListExtractBuiltin final: public TListBuiltin { @@ -62,7 +62,7 @@ public: bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TListExtractBuiltin(Pos, CloneContainer(Args)); + return new TListExtractBuiltin(Pos_, CloneContainer(Args_)); } }; @@ -83,16 +83,16 @@ public: const TVector<TNodePtr>& args, bool flat) : TListProcessBuiltin(pos, flat ? "ListFlatMap" : "ListMap", args) - , Flat(flat) + , Flat_(flat) {} bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TListMapBuiltin(Pos, CloneContainer(Args), Flat); + return new TListMapBuiltin(Pos_, CloneContainer(Args_), Flat_); } private: - bool Flat; + bool Flat_; }; class TListFilterBuiltin final: public TListProcessBuiltin { @@ -106,7 +106,7 @@ public: bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final { - return new TListFilterBuiltin(Pos, OpName, CloneContainer(Args)); + return new TListFilterBuiltin(Pos_, OpName_, CloneContainer(Args_)); } protected: virtual TNodePtr GetFilterLambda(); @@ -123,7 +123,7 @@ public: void DoUpdateState() const override; TNodePtr DoClone() const final { - return new TListCreateBuiltin(Pos, CloneContainer(Args)); + return new TListCreateBuiltin(Pos_, CloneContainer(Args_)); } }; @@ -138,7 +138,7 @@ public: void DoUpdateState() const override; TNodePtr DoClone() const final { - return new TDictCreateBuiltin(Pos, CloneContainer(Args)); + return new TDictCreateBuiltin(Pos_, CloneContainer(Args_)); } }; @@ -153,7 +153,7 @@ public: void DoUpdateState() const override; TNodePtr DoClone() const final { - return new TSetCreateBuiltin(Pos, CloneContainer(Args)); + return new TSetCreateBuiltin(Pos_, CloneContainer(Args_)); } }; diff --git a/yql/essentials/sql/v1/match_recognize.cpp b/yql/essentials/sql/v1/match_recognize.cpp index 6a0af3893ad..ce31d3fc6cf 100644 --- a/yql/essentials/sql/v1/match_recognize.cpp +++ b/yql/essentials/sql/v1/match_recognize.cpp @@ -16,48 +16,48 @@ class TMatchRecognizeColumnAccessNode final : public TAstListNode { public: TMatchRecognizeColumnAccessNode(TPosition pos, TString var, TString column) : TAstListNode(pos) - , Var(std::move(var)) - , Column(std::move(column)) { + , Var_(std::move(var)) + , Column_(std::move(column)) { } const TString* GetColumnName() const override { - return std::addressof(Column); + return std::addressof(Column_); } bool DoInit(TContext& ctx, ISource* /* src */) override { switch (ctx.GetColumnReferenceState()) { case EColumnRefState::MatchRecognizeMeasures: - if (!ctx.SetMatchRecognizeAggrVar(Var)) { + if (!ctx.SetMatchRecognizeAggrVar(Var_)) { return false; } Add( "Member", - BuildAtom(Pos, "row"), - Q(Column) + BuildAtom(Pos_, "row"), + Q(Column_) ); break; case EColumnRefState::MatchRecognizeDefine: - if (ctx.GetMatchRecognizeDefineVar() != Var) { + if (ctx.GetMatchRecognizeDefineVar() != Var_) { ctx.Error() << "Row pattern navigation function is required"; return false; } BuildLookup(VarLastRowIndexName); break; case EColumnRefState::MatchRecognizeDefineAggregate: - if (!ctx.SetMatchRecognizeAggrVar(Var)) { + if (!ctx.SetMatchRecognizeAggrVar(Var_)) { return false; } BuildLookup("index"); break; default: - ctx.Error(Pos) << "Unexpected column reference state"; + ctx.Error(Pos_) << "Unexpected column reference state"; return false; } return true; } TNodePtr DoClone() const override { - return MakeIntrusive<TMatchRecognizeColumnAccessNode>(Pos, Var, Column); + return MakeIntrusive<TMatchRecognizeColumnAccessNode>(Pos_, Var_, Column_); } private: @@ -68,90 +68,90 @@ private: "Lookup", Y( "ToIndexDict", - BuildAtom(Pos, VarDataName) + BuildAtom(Pos_, VarDataName) ), - BuildAtom(Pos, std::move(varKeyName)) + BuildAtom(Pos_, std::move(varKeyName)) ), - Q(Column) + Q(Column_) ); } private: - TString Var; - TString Column; + TString Var_; + TString Column_; }; class TMatchRecognizeDefineAggregate final : public TAstListNode { public: TMatchRecognizeDefineAggregate(TPosition pos, TString name, TVector<TNodePtr> args) : TAstListNode(pos) - , Name(std::move(name)) - , Args(std::move(args)) { + , Name_(std::move(name)) + , Args_(std::move(args)) { } bool DoInit(TContext& ctx, ISource* src) override { if (EColumnRefState::MatchRecognizeDefine != ctx.GetColumnReferenceState()) { - ctx.Error(Pos) << "Unexpected column reference state"; + ctx.Error(Pos_) << "Unexpected column reference state"; return false; } TColumnRefScope scope(ctx, EColumnRefState::MatchRecognizeDefineAggregate, false, ctx.GetMatchRecognizeDefineVar()); - if (Args.size() != 1) { + if (Args_.size() != 1) { ctx.Error() << "Exactly one argument is required in MATCH_RECOGNIZE navigation function"; return false; } - const auto arg = Args[0]; + const auto arg = Args_[0]; if (!arg || !arg->Init(ctx, src)) { return false; } const auto body = [&]() -> TNodePtr { - if ("first" == Name) { + if ("first" == Name_) { return Y("Member", Y("Head", "item"), Q("From")); - } else if ("last" == Name) { + } else if ("last" == Name_) { return Y("Member", Y("Last", "item"), Q("To")); } else { - ctx.Error() << "Unknown row pattern navigation function: " << Name; + ctx.Error() << "Unknown row pattern navigation function: " << Name_; return {}; } }(); if (!body) { return false; } - Add("Apply", BuildLambda(Pos, Y("index"), arg), body); + Add("Apply", BuildLambda(Pos_, Y("index"), arg), body); return true; } TNodePtr DoClone() const override { - return MakeIntrusive<TMatchRecognizeDefineAggregate>(Pos, Name, Args); + return MakeIntrusive<TMatchRecognizeDefineAggregate>(Pos_, Name_, Args_); } private: - TString Name; - TVector<TNodePtr> Args; + TString Name_; + TVector<TNodePtr> Args_; }; class TMatchRecognizeVarAccessNode final : public INode { public: TMatchRecognizeVarAccessNode(TPosition pos, TNodePtr aggr) : INode(pos) - , Aggr(std::move(aggr)) { + , Aggr_(std::move(aggr)) { } bool DoInit(TContext& ctx, ISource* src) override { - if (!Aggr || !Aggr->Init(ctx, src)) { + if (!Aggr_ || !Aggr_->Init(ctx, src)) { return false; } auto var = ctx.ExtractMatchRecognizeAggrVar(); - Expr = [&]() -> TNodePtr { + Expr_ = [&]() -> TNodePtr { switch (ctx.GetColumnReferenceState()) { case EColumnRefState::MatchRecognizeMeasures: { - ctx.GetMatchRecognizeAggregations().emplace_back(std::move(var), Aggr->GetAggregation()); - return Aggr; + ctx.GetMatchRecognizeAggregations().emplace_back(std::move(var), Aggr_->GetAggregation()); + return Aggr_; } case EColumnRefState::MatchRecognizeDefine: return Y( "Apply", - BuildLambda(Pos, Y("item"), Aggr), + BuildLambda(Pos_, Y("item"), Aggr_), Y( "Member", BuildAtom(ctx.Pos(), VarMatchedVarsName), @@ -159,24 +159,24 @@ public: ) ); default: - ctx.Error(Pos) << "Unexpected column reference state"; + ctx.Error(Pos_) << "Unexpected column reference state"; return {}; } }(); - return Expr && Expr->Init(ctx, src); + return Expr_ && Expr_->Init(ctx, src); } TNodePtr DoClone() const override { - return MakeIntrusive<TMatchRecognizeVarAccessNode>(Pos, Aggr); + return MakeIntrusive<TMatchRecognizeVarAccessNode>(Pos_, Aggr_); } TAstNode* Translate(TContext& ctx) const override { - return Expr->Translate(ctx); + return Expr_->Translate(ctx); } private: - TNodePtr Aggr; - TNodePtr Expr; + TNodePtr Aggr_; + TNodePtr Expr_; }; class TMatchRecognize final : public TAstListNode { @@ -195,38 +195,38 @@ public: TNodePtr subset, TVector<TNamedFunction> definitions) : TAstListNode(pos) - , Label(std::move(label)) - , PartitionKeySelector(std::move(partitionKeySelector)) - , PartitionColumns(std::move(partitionColumns)) - , SortSpecs(std::move(sortSpecs)) - , Measures(std::move(measures)) - , RowsPerMatch(std::move(rowsPerMatch)) - , SkipTo(std::move(skipTo)) - , Pattern(std::move(pattern)) - , PatternVars(std::move(patternVars)) - , Subset(std::move(subset)) - , Definitions(std::move(definitions)) { + , Label_(std::move(label)) + , PartitionKeySelector_(std::move(partitionKeySelector)) + , PartitionColumns_(std::move(partitionColumns)) + , SortSpecs_(std::move(sortSpecs)) + , Measures_(std::move(measures)) + , RowsPerMatch_(std::move(rowsPerMatch)) + , SkipTo_(std::move(skipTo)) + , Pattern_(std::move(pattern)) + , PatternVars_(std::move(patternVars)) + , Subset_(std::move(subset)) + , Definitions_(std::move(definitions)) { } private: bool DoInit(TContext& ctx, ISource* src) override { - auto inputRowType = Y("ListItemType", Y("TypeOf", Label)); + auto inputRowType = Y("ListItemType", Y("TypeOf", Label_)); - if (!PartitionKeySelector || !PartitionKeySelector->Init(ctx, src)) { + if (!PartitionKeySelector_ || !PartitionKeySelector_->Init(ctx, src)) { return false; } - if (!PartitionColumns || !PartitionColumns->Init(ctx, src)) { + if (!PartitionColumns_ || !PartitionColumns_->Init(ctx, src)) { return false; } - const auto sortTraits = SortSpecs.empty() ? Y("Void") : src->BuildSortSpec(SortSpecs, Label, true, false); + const auto sortTraits = SortSpecs_.empty() ? Y("Void") : src->BuildSortSpec(SortSpecs_, Label_, true, false); if (!sortTraits || !sortTraits->Init(ctx, src)) { return false; } auto measureNames = Y(); auto measuresCallables = Y(); - for (auto& m: Measures) { + for (auto& m: Measures_) { TColumnRefScope scope(ctx, EColumnRefState::MatchRecognizeMeasures); if (!m.Callable || !m.Callable->Init(ctx, src)) { return false; @@ -239,7 +239,7 @@ private: if (!aggr) { return false; } - auto [traits, result] = aggr->AggregationTraits(Y("TypeOf", Label), false, false, false, ctx); + auto [traits, result] = aggr->AggregationTraits(Y("TypeOf", Label_), false, false, false, ctx); if (!result) { return false; } @@ -257,30 +257,30 @@ private: ) ); } - auto measuresNode = Y("MatchRecognizeMeasuresCallables", inputRowType, Q(PatternVars), Q(measureNames), Q(measuresCallables)); + auto measuresNode = Y("MatchRecognizeMeasuresCallables", inputRowType, Q(PatternVars_), Q(measureNames), Q(measuresCallables)); - if (!RowsPerMatch || !RowsPerMatch->Init(ctx, src)) { + if (!RowsPerMatch_ || !RowsPerMatch_->Init(ctx, src)) { return false; } - if (!SkipTo || !SkipTo->Init(ctx, src)) { + if (!SkipTo_ || !SkipTo_->Init(ctx, src)) { return false; } - if (!Pattern || !Pattern->Init(ctx, src)) { + if (!Pattern_ || !Pattern_->Init(ctx, src)) { return false; } - if (!PatternVars || !PatternVars->Init(ctx, src)) { + if (!PatternVars_ || !PatternVars_->Init(ctx, src)) { return false; } auto defineNames = Y(); - for (auto& d: Definitions) { + for (auto& d: Definitions_) { defineNames = L(defineNames, BuildQuotedAtom(d.Callable->GetPos(), d.Name)); } - auto defineNode = Y("MatchRecognizeDefines", inputRowType, Q(PatternVars), Q(defineNames)); - for (auto& d: Definitions) { + auto defineNode = Y("MatchRecognizeDefines", inputRowType, Q(PatternVars_), Q(defineNames)); + for (auto& d: Definitions_) { TColumnRefScope scope(ctx, EColumnRefState::MatchRecognizeDefine, true, d.Name); if (!d.Callable || !d.Callable->Init(ctx, src)) { return false; @@ -292,15 +292,15 @@ private: Add( "block", Q(Y( - Y("let", "input", Label), - Y("let", "partitionKeySelector", PartitionKeySelector), - Y("let", "partitionColumns", PartitionColumns), + Y("let", "input", Label_), + Y("let", "partitionKeySelector", PartitionKeySelector_), + Y("let", "partitionColumns", PartitionColumns_), Y("let", "sortTraits", sortTraits), Y("let", "measures", measuresNode), - Y("let", "rowsPerMatch", RowsPerMatch), - Y("let", "skipTo", SkipTo), - Y("let", "pattern", Pattern), - Y("let", "subset", Subset ? Subset : Q("")), + Y("let", "rowsPerMatch", RowsPerMatch_), + Y("let", "skipTo", SkipTo_), + Y("let", "pattern", Pattern_), + Y("let", "subset", Subset_ ? Subset_ : Q("")), Y("let", "define", defineNode), Y("let", "res", Y("MatchRecognize", "input", @@ -323,51 +323,51 @@ private: TNodePtr DoClone() const override { return MakeIntrusive<TMatchRecognize>( - Pos, - Label, - PartitionKeySelector, - PartitionColumns, - SortSpecs, - Measures, - RowsPerMatch, - SkipTo, - Pattern, - PatternVars, - Subset, - Definitions + Pos_, + Label_, + PartitionKeySelector_, + PartitionColumns_, + SortSpecs_, + Measures_, + RowsPerMatch_, + SkipTo_, + Pattern_, + PatternVars_, + Subset_, + Definitions_ ); } private: - TString Label; - TNodePtr PartitionKeySelector; - TNodePtr PartitionColumns; - TVector<TSortSpecificationPtr> SortSpecs; - TVector<TNamedFunction> Measures; - TNodePtr RowsPerMatch; - TNodePtr SkipTo; - TNodePtr Pattern; - TNodePtr PatternVars; - TNodePtr Subset; - TVector<TNamedFunction> Definitions; + TString Label_; + TNodePtr PartitionKeySelector_; + TNodePtr PartitionColumns_; + TVector<TSortSpecificationPtr> SortSpecs_; + TVector<TNamedFunction> Measures_; + TNodePtr RowsPerMatch_; + TNodePtr SkipTo_; + TNodePtr Pattern_; + TNodePtr PatternVars_; + TNodePtr Subset_; + TVector<TNamedFunction> Definitions_; }; } // anonymous namespace TNodePtr TMatchRecognizeBuilder::Build(TContext& ctx, TString label, ISource* src) { const auto node = MakeIntrusive<TMatchRecognize>( - Pos, + Pos_, std::move(label), - std::move(PartitionKeySelector), - std::move(PartitionColumns), - std::move(SortSpecs), - std::move(Measures), - std::move(RowsPerMatch), - std::move(SkipTo), - std::move(Pattern), - std::move(PatternVars), - std::move(Subset), - std::move(Definitions) + std::move(PartitionKeySelector_), + std::move(PartitionColumns_), + std::move(SortSpecs_), + std::move(Measures_), + std::move(RowsPerMatch_), + std::move(SkipTo_), + std::move(Pattern_), + std::move(PatternVars_), + std::move(Subset_), + std::move(Definitions_) ); if (!node->Init(ctx, src)) { return {}; diff --git a/yql/essentials/sql/v1/match_recognize.h b/yql/essentials/sql/v1/match_recognize.h index 818bd6e6002..5e6f2912e98 100644 --- a/yql/essentials/sql/v1/match_recognize.h +++ b/yql/essentials/sql/v1/match_recognize.h @@ -26,33 +26,33 @@ public: TNodePtr patternVars, TNodePtr subset, TVector<TNamedFunction> definitions) - : Pos(pos) - , PartitionKeySelector(std::move(partitionKeySelector)) - , PartitionColumns(std::move(partitionColumns)) - , SortSpecs(std::move(sortSpecs)) - , Measures(std::move(measures)) - , RowsPerMatch(std::move(rowsPerMatch)) - , SkipTo(std::move(skipTo)) - , Pattern(std::move(pattern)) - , PatternVars(std::move(patternVars)) - , Subset(std::move(subset)) - , Definitions(std::move(definitions)) + : Pos_(pos) + , PartitionKeySelector_(std::move(partitionKeySelector)) + , PartitionColumns_(std::move(partitionColumns)) + , SortSpecs_(std::move(sortSpecs)) + , Measures_(std::move(measures)) + , RowsPerMatch_(std::move(rowsPerMatch)) + , SkipTo_(std::move(skipTo)) + , Pattern_(std::move(pattern)) + , PatternVars_(std::move(patternVars)) + , Subset_(std::move(subset)) + , Definitions_(std::move(definitions)) {} TNodePtr Build(TContext& ctx, TString label, ISource* source); private: - TPosition Pos; - TNodePtr PartitionKeySelector; - TNodePtr PartitionColumns; - TVector<TSortSpecificationPtr> SortSpecs; - TVector<TNamedFunction> Measures; - TNodePtr RowsPerMatch; - TNodePtr SkipTo; - TNodePtr Pattern; - TNodePtr PatternVars; - TNodePtr Subset; - TVector<TNamedFunction> Definitions; + TPosition Pos_; + TNodePtr PartitionKeySelector_; + TNodePtr PartitionColumns_; + TVector<TSortSpecificationPtr> SortSpecs_; + TVector<TNamedFunction> Measures_; + TNodePtr RowsPerMatch_; + TNodePtr SkipTo_; + TNodePtr Pattern_; + TNodePtr PatternVars_; + TNodePtr Subset_; + TVector<TNamedFunction> Definitions_; }; using TMatchRecognizeBuilderPtr = TIntrusivePtr<TMatchRecognizeBuilder>; diff --git a/yql/essentials/sql/v1/node.cpp b/yql/essentials/sql/v1/node.cpp index fe5d4dff7b0..f6763c2be07 100644 --- a/yql/essentials/sql/v1/node.cpp +++ b/yql/essentials/sql/v1/node.cpp @@ -58,7 +58,7 @@ TColumnSchema::TColumnSchema(TPosition pos, const TString& name, const TNodePtr& } INode::INode(TPosition pos) - : Pos(pos) + : Pos_(pos) { } @@ -67,44 +67,44 @@ INode::~INode() } TPosition INode::GetPos() const { - return Pos; + return Pos_; } const TString& INode::GetLabel() const { - return Label; + return Label_; } TMaybe<TPosition> INode::GetLabelPos() const { - return LabelPos; + return LabelPos_; } void INode::SetLabel(const TString& label, TMaybe<TPosition> pos) { - Label = label; - LabelPos = pos; + Label_ = label; + LabelPos_ = pos; } bool INode::IsImplicitLabel() const { - return ImplicitLabel; + return ImplicitLabel_; } void INode::MarkImplicitLabel(bool isImplicitLabel) { - ImplicitLabel = isImplicitLabel; + ImplicitLabel_ = isImplicitLabel; } void INode::SetRefPos(TPosition pos) { - RefPos = pos; + RefPos_ = pos; } TMaybe<TPosition> INode::GetRefPos() const { - return RefPos; + return RefPos_; } void INode::SetCountHint(bool isCount) { - State.Set(ENodeState::CountHint, isCount); + State_.Set(ENodeState::CountHint, isCount); } bool INode::GetCountHint() const { - return State.Test(ENodeState::CountHint); + return State_.Test(ENodeState::CountHint); } bool INode::IsConstant() const { @@ -225,16 +225,16 @@ TVector<TNodePtr>* INode::ContentListPtr() { } bool INode::Init(TContext& ctx, ISource* src) { - if (State.Test(ENodeState::Failed)) { + if (State_.Test(ENodeState::Failed)) { return false; } - if (!State.Test(ENodeState::Initialized)) { + if (!State_.Test(ENodeState::Initialized)) { if (!DoInit(ctx, src)) { - State.Set(ENodeState::Failed); + State_.Set(ENodeState::Failed); return false; } - State.Set(ENodeState::Initialized); + State_.Set(ENodeState::Initialized); } return true; } @@ -251,7 +251,7 @@ bool INode::DoInit(TContext& ctx, ISource* src) { } TNodePtr INode::AstNode() const { - return new TAstListNodeImpl(Pos); + return new TAstListNodeImpl(Pos_); } TNodePtr INode::AstNode(TNodePtr node) const { @@ -259,7 +259,7 @@ TNodePtr INode::AstNode(TNodePtr node) const { } TNodePtr INode::AstNode(const TString& str) const { - return new TAstAtomNodeImpl(Pos, str, TNodeFlags::Default); + return new TAstAtomNodeImpl(Pos_, str, TNodeFlags::Default); } TNodePtr INode::AstNode(TAstNode* node) const { @@ -271,9 +271,9 @@ TNodePtr INode::Clone() const { if (!clone) { clone = const_cast<INode*>(this); } else { - YQL_ENSURE(!State.Test(ENodeState::Initialized), "Clone should be for uninitialized or persistent node"); - clone->SetLabel(Label, LabelPos); - clone->MarkImplicitLabel(ImplicitLabel); + YQL_ENSURE(!State_.Test(ENodeState::Initialized), "Clone should be for uninitialized or persistent node"); + clone->SetLabel(Label_, LabelPos_); + clone->MarkImplicitLabel(ImplicitLabel_); } return clone; } @@ -307,7 +307,7 @@ bool INode::SetPrimaryView(TContext& ctx, TPosition pos) { } void INode::UseAsInner() { - AsInner = true; + AsInner_ = true; } void INode::DisableSort() { @@ -418,18 +418,18 @@ void INode::DoUpdateState() const { } void INode::PrecacheState() const { - if (State.Test(ENodeState::Failed)) { + if (State_.Test(ENodeState::Failed)) { return; } /// Not work right now! It's better use Init at first, because some kind of update depend on it /// \todo turn on and remove all issues //Y_DEBUG_ABORT_UNLESS(State.Test(ENodeState::Initialized)); - if (State.Test(ENodeState::Precached)) { + if (State_.Test(ENodeState::Precached)) { return; } DoUpdateState(); - State.Set(ENodeState::Precached); + State_.Set(ENodeState::Precached); } void INode::DoVisitChildren(const TVisitFunc& func, TVisitNodeSet& visited) const { @@ -443,222 +443,222 @@ void INode::DoAdd(TNodePtr node) { } bool IProxyNode::IsNull() const { - return Inner->IsNull(); + return Inner_->IsNull(); } bool IProxyNode::IsLiteral() const { - return Inner->IsNull(); + return Inner_->IsNull(); } TString IProxyNode::GetLiteralType() const { - return Inner->GetLiteralType(); + return Inner_->GetLiteralType(); } TString IProxyNode::GetLiteralValue() const { - return Inner->GetLiteralValue(); + return Inner_->GetLiteralValue(); } bool IProxyNode::IsIntegerLiteral() const { - return Inner->IsIntegerLiteral(); + return Inner_->IsIntegerLiteral(); } INode::TPtr IProxyNode::ApplyUnaryOp(TContext& ctx, TPosition pos, const TString& opName) const { - return Inner->ApplyUnaryOp(ctx, pos, opName); + return Inner_->ApplyUnaryOp(ctx, pos, opName); } bool IProxyNode::IsAsterisk() const { - return Inner->IsAsterisk(); + return Inner_->IsAsterisk(); } const TString* IProxyNode::SubqueryAlias() const { - return Inner->SubqueryAlias(); + return Inner_->SubqueryAlias(); } TString IProxyNode::GetOpName() const { - return Inner->GetOpName(); + return Inner_->GetOpName(); } const TString* IProxyNode::GetLiteral(const TString& type) const { - return Inner->GetLiteral(type); + return Inner_->GetLiteral(type); } const TString* IProxyNode::GetColumnName() const { - return Inner->GetColumnName(); + return Inner_->GetColumnName(); } bool IProxyNode::IsPlainColumn() const { - return Inner->IsPlainColumn(); + return Inner_->IsPlainColumn(); } bool IProxyNode::IsTableRow() const { - return Inner->IsTableRow(); + return Inner_->IsTableRow(); } void IProxyNode::AssumeColumn() { - Inner->AssumeColumn(); + Inner_->AssumeColumn(); } const TString* IProxyNode::GetSourceName() const { - return Inner->GetSourceName(); + return Inner_->GetSourceName(); } const TString* IProxyNode::GetAtomContent() const { - return Inner->GetAtomContent(); + return Inner_->GetAtomContent(); } bool IProxyNode::IsOptionalArg() const { - return Inner->IsOptionalArg(); + return Inner_->IsOptionalArg(); } size_t IProxyNode::GetTupleSize() const { - return Inner->GetTupleSize(); + return Inner_->GetTupleSize(); } INode::TPtr IProxyNode::GetTupleElement(size_t index) const { - return Inner->GetTupleElement(index); + return Inner_->GetTupleElement(index); } ITableKeys* IProxyNode::GetTableKeys() { - return Inner->GetTableKeys(); + return Inner_->GetTableKeys(); } ISource* IProxyNode::GetSource() { - return Inner->GetSource(); + return Inner_->GetSource(); } TVector<INode::TPtr>* IProxyNode::ContentListPtr() { - return Inner->ContentListPtr(); + return Inner_->ContentListPtr(); } TAggregationPtr IProxyNode::GetAggregation() const { - return Inner->GetAggregation(); + return Inner_->GetAggregation(); } void IProxyNode::CollectPreaggregateExprs(TContext& ctx, ISource& src, TVector<INode::TPtr>& exprs) { - Inner->CollectPreaggregateExprs(ctx, src, exprs); + Inner_->CollectPreaggregateExprs(ctx, src, exprs); } INode::TPtr IProxyNode::WindowSpecFunc(const TPtr& type) const { - return Inner->WindowSpecFunc(type); + return Inner_->WindowSpecFunc(type); } bool IProxyNode::SetViewName(TContext& ctx, TPosition pos, const TString& view) { - return Inner->SetViewName(ctx, pos, view); + return Inner_->SetViewName(ctx, pos, view); } bool IProxyNode::SetPrimaryView(TContext& ctx, TPosition pos) { - return Inner->SetPrimaryView(ctx, pos); + return Inner_->SetPrimaryView(ctx, pos); } bool IProxyNode::UsedSubquery() const { - return Inner->UsedSubquery(); + return Inner_->UsedSubquery(); } bool IProxyNode::IsSelect() const { - return Inner->IsSelect(); + return Inner_->IsSelect(); } bool IProxyNode::HasSelectResult() const { - return Inner->HasSelectResult(); + return Inner_->HasSelectResult(); } const TString* IProxyNode::FuncName() const { - return Inner->FuncName(); + return Inner_->FuncName(); } const TString* IProxyNode::ModuleName() const { - return Inner->ModuleName(); + return Inner_->ModuleName(); } bool IProxyNode::IsScript() const { - return Inner->IsScript(); + return Inner_->IsScript(); } bool IProxyNode::HasSkip() const { - return Inner->HasSkip(); + return Inner_->HasSkip(); } TColumnNode* IProxyNode::GetColumnNode() { - return Inner->GetColumnNode(); + return Inner_->GetColumnNode(); } const TColumnNode* IProxyNode::GetColumnNode() const { - return static_cast<const INode*>(Inner.Get())->GetColumnNode(); + return static_cast<const INode*>(Inner_.Get())->GetColumnNode(); } TTupleNode* IProxyNode::GetTupleNode() { - return Inner->GetTupleNode(); + return Inner_->GetTupleNode(); } const TTupleNode* IProxyNode::GetTupleNode() const { - return static_cast<const INode*>(Inner.Get())->GetTupleNode(); + return static_cast<const INode*>(Inner_.Get())->GetTupleNode(); } TCallNode* IProxyNode::GetCallNode() { - return Inner->GetCallNode(); + return Inner_->GetCallNode(); } const TCallNode* IProxyNode::GetCallNode() const { - return static_cast<const INode*>(Inner.Get())->GetCallNode(); + return static_cast<const INode*>(Inner_.Get())->GetCallNode(); } TStructNode* IProxyNode::GetStructNode() { - return Inner->GetStructNode(); + return Inner_->GetStructNode(); } const TStructNode* IProxyNode::GetStructNode() const { - return static_cast<const INode*>(Inner.Get())->GetStructNode(); + return static_cast<const INode*>(Inner_.Get())->GetStructNode(); } TAccessNode* IProxyNode::GetAccessNode() { - return Inner->GetAccessNode(); + return Inner_->GetAccessNode(); } const TAccessNode* IProxyNode::GetAccessNode() const { - return static_cast<const INode*>(Inner.Get())->GetAccessNode(); + return static_cast<const INode*>(Inner_.Get())->GetAccessNode(); } TLambdaNode* IProxyNode::GetLambdaNode() { - return Inner->GetLambdaNode(); + return Inner_->GetLambdaNode(); } const TLambdaNode* IProxyNode::GetLambdaNode() const { - return static_cast<const INode*>(Inner.Get())->GetLambdaNode(); + return static_cast<const INode*>(Inner_.Get())->GetLambdaNode(); } TUdfNode* IProxyNode::GetUdfNode() { - return Inner->GetUdfNode(); + return Inner_->GetUdfNode(); } const TUdfNode* IProxyNode::GetUdfNode() const { - return static_cast<const INode*>(Inner.Get())->GetUdfNode(); + return static_cast<const INode*>(Inner_.Get())->GetUdfNode(); } void IProxyNode::DoUpdateState() const { static_assert(static_cast<int>(ENodeState::End) == 10, "Need to support new states here"); - State.Set(ENodeState::CountHint, Inner->GetCountHint()); - State.Set(ENodeState::Const, Inner->IsConstant()); - State.Set(ENodeState::MaybeConst, Inner->MaybeConstant()); - State.Set(ENodeState::Aggregated, Inner->IsAggregated()); - State.Set(ENodeState::AggregationKey, Inner->IsAggregationKey()); - State.Set(ENodeState::OverWindow, Inner->IsOverWindow()); - State.Set(ENodeState::OverWindowDistinct, Inner->IsOverWindowDistinct()); + State_.Set(ENodeState::CountHint, Inner_->GetCountHint()); + State_.Set(ENodeState::Const, Inner_->IsConstant()); + State_.Set(ENodeState::MaybeConst, Inner_->MaybeConstant()); + State_.Set(ENodeState::Aggregated, Inner_->IsAggregated()); + State_.Set(ENodeState::AggregationKey, Inner_->IsAggregationKey()); + State_.Set(ENodeState::OverWindow, Inner_->IsOverWindow()); + State_.Set(ENodeState::OverWindowDistinct, Inner_->IsOverWindowDistinct()); } void IProxyNode::DoVisitChildren(const TVisitFunc& func, TVisitNodeSet& visited) const { - Inner->VisitTree(func, visited); + Inner_->VisitTree(func, visited); } bool IProxyNode::InitReference(TContext& ctx) { - return Inner->InitReference(ctx); + return Inner_->InitReference(ctx); } bool IProxyNode::DoInit(TContext& ctx, ISource* src) { - return Inner->Init(ctx, src); + return Inner_->Init(ctx, src); } void IProxyNode::DoAdd(TPtr node) { - Inner->Add(node); + Inner_->Add(node); } void MergeHints(TTableHints& base, const TTableHints& overrides) { @@ -677,8 +677,8 @@ TTableHints CloneContainer(const TTableHints& hints) { TAstAtomNode::TAstAtomNode(TPosition pos, const TString& content, ui32 flags, bool isOptionalArg) : INode(pos) - , Content(content) - , Flags(flags) + , Content_(content) + , Flags_(flags) , IsOptionalArg_(isOptionalArg) { } @@ -688,15 +688,15 @@ TAstAtomNode::~TAstAtomNode() } void TAstAtomNode::DoUpdateState() const { - State.Set(ENodeState::Const); + State_.Set(ENodeState::Const); } TAstNode* TAstAtomNode::Translate(TContext& ctx) const { - return TAstNode::NewAtom(Pos, Content, *ctx.Pool, Flags); + return TAstNode::NewAtom(Pos_, Content_, *ctx.Pool, Flags_); } const TString* TAstAtomNode::GetAtomContent() const { - return &Content; + return &Content_; } bool TAstAtomNode::IsOptionalArg() const { @@ -705,13 +705,13 @@ bool TAstAtomNode::IsOptionalArg() const { TAstDirectNode::TAstDirectNode(TAstNode* node) : INode(node->GetPosition()) - , Node(node) + , Node_(node) { } TAstNode* TAstDirectNode::Translate(TContext& ctx) const { Y_UNUSED(ctx); - return Node; + return Node_; } TNodePtr BuildList(TPosition pos, TVector<TNodePtr> nodes) { @@ -736,7 +736,7 @@ TAstListNode::~TAstListNode() } bool TAstListNode::DoInit(TContext& ctx, ISource* src) { - for (auto& node: Nodes) { + for (auto& node: Nodes_) { if (!node->Init(ctx, src)) { return false; } @@ -746,9 +746,9 @@ bool TAstListNode::DoInit(TContext& ctx, ISource* src) { TAstNode* TAstListNode::Translate(TContext& ctx) const { TSmallVec<TAstNode*> children; - children.reserve(Nodes.size()); - auto listPos = Pos; - for (auto& node: Nodes) { + children.reserve(Nodes_.size()); + auto listPos = Pos_; + for (auto& node: Nodes_) { if (node) { auto astNode = node->Translate(ctx); if (!astNode) { @@ -756,7 +756,7 @@ TAstNode* TAstListNode::Translate(TContext& ctx) const { } children.push_back(astNode); } else { - ctx.Error(Pos) << "Translation error: encountered empty TNodePtr"; + ctx.Error(Pos_) << "Translation error: encountered empty TNodePtr"; return nullptr; } } @@ -767,8 +767,8 @@ TAstNode* TAstListNode::Translate(TContext& ctx) const { void TAstListNode::UpdateStateByListNodes(const TVector<TNodePtr>& nodes) const { bool isConst = true; struct TAttributesFlags { - bool has = false; - bool all = true; + bool Has = false; + bool All = true; }; std::array<ENodeState, 3> checkStates = {{ENodeState::Aggregated, ENodeState::AggregationKey, ENodeState::OverWindow}}; std::map<ENodeState, TAttributesFlags> flags; @@ -777,9 +777,9 @@ void TAstListNode::UpdateStateByListNodes(const TVector<TNodePtr>& nodes) const const bool isNodeMaybeConst = node->MaybeConstant(); for (auto state: checkStates) { if (node->HasState(state)) { - flags[state].has = true; + flags[state].Has = true; } else if (!isNodeConst && !isNodeMaybeConst) { - flags[state].all = false; + flags[state].All = false; } if (!isNodeConst) { @@ -787,48 +787,48 @@ void TAstListNode::UpdateStateByListNodes(const TVector<TNodePtr>& nodes) const } } } - State.Set(ENodeState::Const, isConst); + State_.Set(ENodeState::Const, isConst); for (auto& flag: flags) { - State.Set(flag.first, flag.second.has && flag.second.all); + State_.Set(flag.first, flag.second.Has && flag.second.All); } - State.Set(ENodeState::MaybeConst, !isConst && AllOf(nodes, [](const auto& node) { return node->IsConstant() || node->MaybeConstant(); })); + State_.Set(ENodeState::MaybeConst, !isConst && AllOf(nodes, [](const auto& node) { return node->IsConstant() || node->MaybeConstant(); })); } void TAstListNode::DoUpdateState() const { - UpdateStateByListNodes(Nodes); + UpdateStateByListNodes(Nodes_); } void TAstListNode::DoVisitChildren(const TVisitFunc& func, TVisitNodeSet& visited) const { - for (auto& node : Nodes) { + for (auto& node : Nodes_) { node->VisitTree(func, visited); } } TAstListNode::TAstListNode(const TAstListNode& node) - : INode(node.Pos) - , Nodes(node.Nodes) + : INode(node.Pos_) + , Nodes_(node.Nodes_) { - Label = node.Label; - State = node.State; + Label_ = node.Label_; + State_ = node.State_; } TAstListNode::TAstListNode(TPosition pos, TVector<TNodePtr>&& nodes) : INode(pos) - , Nodes(std::move(nodes)) + , Nodes_(std::move(nodes)) { - for (const auto& node: Nodes) { + for (const auto& node: Nodes_) { YQL_ENSURE(node, "Null ptr passed as list element"); } } TNodePtr TAstListNode::ShallowCopy() const { - return new TAstListNodeImpl(Pos, Nodes); + return new TAstListNodeImpl(Pos_, Nodes_); } void TAstListNode::DoAdd(TNodePtr node) { Y_DEBUG_ABORT_UNLESS(node); Y_DEBUG_ABORT_UNLESS(node.Get() != this); - Nodes.push_back(node); + Nodes_.push_back(node); } TAstListNodeImpl::TAstListNodeImpl(TPosition pos) @@ -841,33 +841,33 @@ TAstListNodeImpl::TAstListNodeImpl(TPosition pos, TVector<TNodePtr> nodes) for (const auto& node: nodes) { YQL_ENSURE(node, "Null ptr passed as list element"); } - Nodes.swap(nodes); + Nodes_.swap(nodes); } void TAstListNodeImpl::CollectPreaggregateExprs(TContext& ctx, ISource& src, TVector<INode::TPtr>& exprs) { - for (auto& node : Nodes) { + for (auto& node : Nodes_) { node->CollectPreaggregateExprs(ctx, src, exprs); } } TNodePtr TAstListNodeImpl::DoClone() const { - return new TAstListNodeImpl(Pos, CloneContainer(Nodes)); + return new TAstListNodeImpl(Pos_, CloneContainer(Nodes_)); } TCallNode::TCallNode(TPosition pos, const TString& opName, i32 minArgs, i32 maxArgs, const TVector<TNodePtr>& args) : TAstListNode(pos) - , OpName(opName) - , MinArgs(minArgs) - , MaxArgs(maxArgs) - , Args(args) + , OpName_(opName) + , MinArgs_(minArgs) + , MaxArgs_(maxArgs) + , Args_(args) { - for (const auto& arg: Args) { + for (const auto& arg: Args_) { YQL_ENSURE(arg, "Null ptr passed as call argument"); } } TString TCallNode::GetOpName() const { - return OpName; + return OpName_; } const TString* DeriveCommonSourceName(const TVector<TNodePtr> &nodes) { @@ -887,47 +887,47 @@ const TString* DeriveCommonSourceName(const TVector<TNodePtr> &nodes) { const TString* TCallNode::GetSourceName() const { - return DeriveCommonSourceName(Args); + return DeriveCommonSourceName(Args_); } const TVector<TNodePtr>& TCallNode::GetArgs() const { - return Args; + return Args_; } void TCallNode::DoUpdateState() const { - UpdateStateByListNodes(Args); + UpdateStateByListNodes(Args_); } TString TCallNode::GetCallExplain() const { auto derivedName = GetOpName(); TStringBuilder sb; sb << derivedName << "()"; - if (derivedName != OpName) { - sb << ", converted to " << OpName << "()"; + if (derivedName != OpName_) { + sb << ", converted to " << OpName_ << "()"; } return std::move(sb); } void TCallNode::CollectPreaggregateExprs(TContext& ctx, ISource& src, TVector<INode::TPtr>& exprs) { - for (auto& arg : Args) { + for (auto& arg : Args_) { arg->CollectPreaggregateExprs(ctx, src, exprs); } } bool TCallNode::ValidateArguments(TContext& ctx) const { - const auto argsCount = static_cast<i32>(Args.size()); - if (MinArgs >= 0 && MaxArgs == MinArgs && argsCount != MinArgs) { - ctx.Error(Pos) << GetCallExplain() << " requires exactly " << MinArgs << " arguments, given: " << Args.size(); + const auto argsCount = static_cast<i32>(Args_.size()); + if (MinArgs_ >= 0 && MaxArgs_ == MinArgs_ && argsCount != MinArgs_) { + ctx.Error(Pos_) << GetCallExplain() << " requires exactly " << MinArgs_ << " arguments, given: " << Args_.size(); return false; } - if (MinArgs >= 0 && argsCount < MinArgs) { - ctx.Error(Pos) << GetCallExplain() << " requires at least " << MinArgs << " arguments, given: " << Args.size(); + if (MinArgs_ >= 0 && argsCount < MinArgs_) { + ctx.Error(Pos_) << GetCallExplain() << " requires at least " << MinArgs_ << " arguments, given: " << Args_.size(); return false; } - if (MaxArgs >= 0 && argsCount > MaxArgs) { - ctx.Error(Pos) << GetCallExplain() << " requires at most " << MaxArgs << " arguments, given: " << Args.size(); + if (MaxArgs_ >= 0 && argsCount > MaxArgs_) { + ctx.Error(Pos_) << GetCallExplain() << " requires at most " << MaxArgs_ << " arguments, given: " << Args_.size(); return false; } @@ -940,7 +940,7 @@ bool TCallNode::DoInit(TContext& ctx, ISource* src) { } bool hasError = false; - for (auto& arg: Args) { + for (auto& arg: Args_) { if (!arg->Init(ctx, src)) { hasError = true; continue; @@ -951,9 +951,9 @@ bool TCallNode::DoInit(TContext& ctx, ISource* src) { return false; } - Nodes.push_back(BuildAtom(Pos, OpName, - OpName.cend() == std::find_if_not(OpName.cbegin(), OpName.cend(), [](char c) { return bool(std::isalnum(c)); }) ? TNodeFlags::Default : TNodeFlags::ArbitraryContent)); - Nodes.insert(Nodes.end(), Args.begin(), Args.end()); + Nodes_.push_back(BuildAtom(Pos_, OpName_, + OpName_.cend() == std::find_if_not(OpName_.cbegin(), OpName_.cend(), [](char c) { return bool(std::isalnum(c)); }) ? TNodeFlags::Default : TNodeFlags::ArbitraryContent)); + Nodes_.insert(Nodes_.end(), Args_.begin(), Args_.end()); return true; } @@ -974,7 +974,7 @@ TCallNodeImpl::TCallNodeImpl(TPosition pos, const TString& opName, const TVector {} TCallNode::TPtr TCallNodeImpl::DoClone() const { - return new TCallNodeImpl(GetPos(), OpName, MinArgs, MaxArgs, CloneContainer(Args)); + return new TCallNodeImpl(GetPos(), OpName_, MinArgs_, MaxArgs_, CloneContainer(Args_)); } TFuncNodeImpl::TFuncNodeImpl(TPosition pos, const TString& opName) @@ -982,25 +982,25 @@ TFuncNodeImpl::TFuncNodeImpl(TPosition pos, const TString& opName) {} TCallNode::TPtr TFuncNodeImpl::DoClone() const { - return new TFuncNodeImpl(GetPos(), OpName); + return new TFuncNodeImpl(GetPos(), OpName_); } const TString* TFuncNodeImpl::FuncName() const { - return &OpName; + return &OpName_; } TCallNodeDepArgs::TCallNodeDepArgs(ui32 reqArgsCount, TPosition pos, const TString& opName, i32 minArgs, i32 maxArgs, const TVector<TNodePtr>& args) : TCallNode(pos, opName, minArgs, maxArgs, args) - , ReqArgsCount(reqArgsCount) + , ReqArgsCount_(reqArgsCount) {} TCallNodeDepArgs::TCallNodeDepArgs(ui32 reqArgsCount, TPosition pos, const TString& opName, const TVector<TNodePtr>& args) : TCallNode(pos, opName, args.size(), args.size(), args) - , ReqArgsCount(reqArgsCount) + , ReqArgsCount_(reqArgsCount) {} TCallNode::TPtr TCallNodeDepArgs::DoClone() const { - return new TCallNodeDepArgs(ReqArgsCount, GetPos(), OpName, MinArgs, MaxArgs, CloneContainer(Args)); + return new TCallNodeDepArgs(ReqArgsCount_, GetPos(), OpName_, MinArgs_, MaxArgs_, CloneContainer(Args_)); } bool TCallNodeDepArgs::DoInit(TContext& ctx, ISource* src) { @@ -1008,14 +1008,14 @@ bool TCallNodeDepArgs::DoInit(TContext& ctx, ISource* src) { return false; } - for (ui32 i = 1 + ReqArgsCount; i < Nodes.size(); ++i) { - Nodes[i] = Y("DependsOn", Nodes[i]); + for (ui32 i = 1 + ReqArgsCount_; i < Nodes_.size(); ++i) { + Nodes_[i] = Y("DependsOn", Nodes_[i]); } return true; } TCallDirectRow::TPtr TCallDirectRow::DoClone() const { - return new TCallDirectRow(Pos, OpName, CloneContainer(Args)); + return new TCallDirectRow(Pos_, OpName_, CloneContainer(Args_)); } TCallDirectRow::TCallDirectRow(TPosition pos, const TString& opName, i32 minArgs, i32 maxArgs, const TVector<TNodePtr>& args) @@ -1028,64 +1028,64 @@ TCallDirectRow::TCallDirectRow(TPosition pos, const TString& opName, const TVect bool TCallDirectRow::DoInit(TContext& ctx, ISource* src) { if (!src || (ctx.CompactNamedExprs && src->IsFake())) { - ctx.Error(Pos) << "Unable to use function: " << OpName << " without source"; + ctx.Error(Pos_) << "Unable to use function: " << OpName_ << " without source"; return false; } if (src->IsCompositeSource() || src->GetJoin() || src->HasAggregations() || src->IsFlattenByColumns() || src->IsOverWindowSource()) { - ctx.Error(Pos) << "Failed to use function: " << OpName << " with aggregation, join, flatten by or window functions"; + ctx.Error(Pos_) << "Failed to use function: " << OpName_ << " with aggregation, join, flatten by or window functions"; return false; } if (!TCallNode::DoInit(ctx, src)) { return false; } - Nodes.push_back(Y("DependsOn", "row")); + Nodes_.push_back(Y("DependsOn", "row")); return true; } void TCallDirectRow::DoUpdateState() const { - State.Set(ENodeState::Const, false); + State_.Set(ENodeState::Const, false); } void TWinAggrEmulation::DoUpdateState() const { - State.Set(ENodeState::OverWindow, true); + State_.Set(ENodeState::OverWindow, true); } bool TWinAggrEmulation::DoInit(TContext& ctx, ISource* src) { if (!src) { - ctx.Error(Pos) << "Unable to use window function " << OpName << " without source"; + ctx.Error(Pos_) << "Unable to use window function " << OpName_ << " without source"; return false; } if (!src->IsOverWindowSource()) { - ctx.Error(Pos) << "Failed to use window function " << OpName << " without window specification"; + ctx.Error(Pos_) << "Failed to use window function " << OpName_ << " without window specification"; return false; } if (!src->AddFuncOverWindow(ctx, this)) { - ctx.Error(Pos) << "Failed to use window function " << OpName << " without window specification or in wrong place"; + ctx.Error(Pos_) << "Failed to use window function " << OpName_ << " without window specification or in wrong place"; return false; } - FuncAlias = "_yql_" + src->MakeLocalName(OpName); - src->AddTmpWindowColumn(FuncAlias); + FuncAlias_ = "_yql_" + src->MakeLocalName(OpName_); + src->AddTmpWindowColumn(FuncAlias_); if (!TCallNode::DoInit(ctx, src)) { return false; } - Nodes.clear(); - Add("Member", "row", Q(FuncAlias)); + Nodes_.clear(); + Add("Member", "row", Q(FuncAlias_)); return true; } INode::TPtr TWinAggrEmulation::WindowSpecFunc(const TPtr& type) const { - auto result = Y(OpName, type); - for (const auto& arg: Args) { + auto result = Y(OpName_, type); + for (const auto& arg: Args_) { result = L(result, arg); } - return Q(Y(Q(FuncAlias), result)); + return Q(Y(Q(FuncAlias_), result)); } TWinAggrEmulation::TWinAggrEmulation(TPosition pos, const TString& opName, i32 minArgs, i32 maxArgs, const TVector<TNodePtr>& args) : TCallNode(pos, opName, minArgs, maxArgs, args) - , FuncAlias(opName) + , FuncAlias_(opName) {} TWinRowNumber::TWinRowNumber(TPosition pos, const TString& opName, i32 minArgs, i32 maxArgs, const TVector<TNodePtr>& args) @@ -1101,30 +1101,30 @@ bool TWinCumeDist::DoInit(TContext& ctx, ISource* src) { return false; } - YQL_ENSURE(Args.size() == 0); + YQL_ENSURE(Args_.size() == 0); TVector<TNodePtr> optionsElements; if (ctx.AnsiCurrentRow) { - optionsElements.push_back(BuildTuple(Pos, { BuildQuotedAtom(Pos, "ansi", NYql::TNodeFlags::Default) })); + optionsElements.push_back(BuildTuple(Pos_, { BuildQuotedAtom(Pos_, "ansi", NYql::TNodeFlags::Default) })); } - Args.push_back(BuildTuple(Pos, optionsElements)); + Args_.push_back(BuildTuple(Pos_, optionsElements)); - MinArgs = MaxArgs = 1; + MinArgs_ = MaxArgs_ = 1; if (!TWinAggrEmulation::DoInit(ctx, src)) { return false; } - YQL_ENSURE(Args.size() == 1); + YQL_ENSURE(Args_.size() == 1); return true; } TWinNTile::TWinNTile(TPosition pos, const TString& opName, i32 minArgs, i32 maxArgs, const TVector<TNodePtr>& args) : TWinAggrEmulation(pos, opName, minArgs, maxArgs, args) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool TWinNTile::DoInit(TContext& ctx, ISource* src) { - if (Args.size() >= 1 && !Args[0]->Init(ctx, FakeSource.Get())) { + if (Args_.size() >= 1 && !Args_[0]->Init(ctx, FakeSource_.Get())) { return false; } @@ -1139,17 +1139,17 @@ TWinLeadLag::TWinLeadLag(TPosition pos, const TString& opName, i32 minArgs, i32 {} bool TWinLeadLag::DoInit(TContext& ctx, ISource* src) { - if (Args.size() >= 2) { - if (!Args[1]->IsIntegerLiteral()) { - ctx.Error(Args[1]->GetPos()) << "Expected integer literal as second parameter of " << OpName << "( ) function"; + if (Args_.size() >= 2) { + if (!Args_[1]->IsIntegerLiteral()) { + ctx.Error(Args_[1]->GetPos()) << "Expected integer literal as second parameter of " << OpName_ << "( ) function"; return false; } } if (!TWinAggrEmulation::DoInit(ctx, src)) { return false; } - if (Args.size() >= 1) { - Args[0] = BuildLambda(Pos, Y("row"), Args[0]); + if (Args_.size() >= 1) { + Args_[0] = BuildLambda(Pos_, Y("row"), Args_[0]); } return true; } @@ -1161,19 +1161,19 @@ TWinRank::TWinRank(TPosition pos, const TString& opName, i32 minArgs, i32 maxArg } bool TExternalFunctionConfig::DoInit(TContext& ctx, ISource* src) { - for (auto& param: Config) { - auto paramName = Y(BuildQuotedAtom(Pos, param.first)); + for (auto& param: Config_) { + auto paramName = Y(BuildQuotedAtom(Pos_, param.first)); if (!param.second->Init(ctx, src)) { return false; } - Nodes.push_back(Q(L(paramName, param.second))); + Nodes_.push_back(Q(L(paramName, param.second))); } return true; } INode::TPtr TExternalFunctionConfig::DoClone() const { TFunctionConfig cloned; - for (auto& [name, node] : Config) { + for (auto& [name, node] : Config_) { cloned[name] = SafeClone(node); } @@ -1186,13 +1186,13 @@ bool TWinRank::DoInit(TContext& ctx, ISource* src) { } if (!src) { - ctx.Error(Pos) << "Unable to use window function: " << OpName << " without source"; + ctx.Error(Pos_) << "Unable to use window function: " << OpName_ << " without source"; return false; } auto winNamePtr = src->GetWindowName(); if (!winNamePtr) { - ctx.Error(Pos) << "Failed to use window function: " << OpName << " without window"; + ctx.Error(Pos_) << "Failed to use window function: " << OpName_ << " without window"; return false; } @@ -1203,42 +1203,42 @@ bool TWinRank::DoInit(TContext& ctx, ISource* src) { const auto& orderSpec = winSpecPtr->OrderBy; if (orderSpec.empty()) { - if (Args.empty()) { + if (Args_.empty()) { ctx.Warning(GetPos(), TIssuesIds::YQL_RANK_WITHOUT_ORDER_BY) << - OpName << "() is used with unordered window - all rows will be considered equal to each other"; + OpName_ << "() is used with unordered window - all rows will be considered equal to each other"; } else { ctx.Warning(GetPos(), TIssuesIds::YQL_RANK_WITHOUT_ORDER_BY) << - OpName << "(<expression>) is used with unordered window - the result is likely to be undefined"; + OpName_ << "(<expression>) is used with unordered window - the result is likely to be undefined"; } } - if (Args.empty()) { + if (Args_.empty()) { for (const auto& spec: orderSpec) { - Args.push_back(spec->Clone()->OrderExpr); + Args_.push_back(spec->Clone()->OrderExpr); } - if (Args.size() != 1) { - Args = {BuildTuple(GetPos(), Args)}; + if (Args_.size() != 1) { + Args_ = {BuildTuple(GetPos(), Args_)}; } } - YQL_ENSURE(Args.size() == 1); + YQL_ENSURE(Args_.size() == 1); TVector<TNodePtr> optionsElements; if (!ctx.AnsiRankForNullableKeys.Defined()) { - optionsElements.push_back(BuildTuple(Pos, { BuildQuotedAtom(Pos, "warnNoAnsi", NYql::TNodeFlags::Default) })); + optionsElements.push_back(BuildTuple(Pos_, { BuildQuotedAtom(Pos_, "warnNoAnsi", NYql::TNodeFlags::Default) })); } else if (*ctx.AnsiRankForNullableKeys) { - optionsElements.push_back(BuildTuple(Pos, { BuildQuotedAtom(Pos, "ansi", NYql::TNodeFlags::Default) })); + optionsElements.push_back(BuildTuple(Pos_, { BuildQuotedAtom(Pos_, "ansi", NYql::TNodeFlags::Default) })); } - Args.push_back(BuildTuple(Pos, optionsElements)); + Args_.push_back(BuildTuple(Pos_, optionsElements)); - MinArgs = MaxArgs = 2; + MinArgs_ = MaxArgs_ = 2; if (!TWinAggrEmulation::DoInit(ctx, src)) { return false; } - YQL_ENSURE(Args.size() == 2); - Args[0] = BuildLambda(Pos, Y("row"), Args[0]); + YQL_ENSURE(Args_.size() == 2); + Args_[0] = BuildLambda(Pos_, Y("row"), Args_[0]); return true; } @@ -1252,9 +1252,9 @@ public: protected: TQuotedAtomNode(const TQuotedAtomNode& other) - : TAstListNode(other.Pos) + : TAstListNode(other.Pos_) { - Nodes = CloneContainer(other.Nodes); + Nodes_ = CloneContainer(other.Nodes_); } TPtr DoClone() const final { return new TQuotedAtomNode(*this); @@ -1270,7 +1270,7 @@ TNodePtr ITableKeys::AddView(TNodePtr key, const TViewDescription& view) { if (view.PrimaryFlag) { return L(key, Q(Y(Q("primary_view")))); } else if (!view.empty()) { - return L(key, Q(Y(Q("view"), Y("String", BuildQuotedAtom(Pos, view.ViewName))))); + return L(key, Q(Y(Q("view"), Y("String", BuildQuotedAtom(Pos_, view.ViewName))))); } else { return key; } @@ -1433,12 +1433,12 @@ bool TColumns::IsColumnPossible(TContext& ctx, const TString& name) const { TSortSpecification::TSortSpecification(const TNodePtr& orderExpr, bool ascending) : OrderExpr(orderExpr->Clone()) , Ascending(ascending) - , CleanOrderExpr(orderExpr->Clone()) + , CleanOrderExpr_(orderExpr->Clone()) { } TSortSpecificationPtr TSortSpecification::Clone() const { - return MakeIntrusive<TSortSpecification>(CleanOrderExpr, Ascending); + return MakeIntrusive<TSortSpecification>(CleanOrderExpr_, Ascending); } TFrameBoundPtr TFrameBound::Clone() const { @@ -1492,16 +1492,16 @@ TLegacyHoppingWindowSpecPtr TLegacyHoppingWindowSpec::Clone() const { TColumnNode::TColumnNode(TPosition pos, const TString& column, const TString& source, bool maybeType) : INode(pos) - , ColumnName(column) - , Source(source) - , MaybeType(maybeType) + , ColumnName_(column) + , Source_(source) + , MaybeType_(maybeType) { } TColumnNode::TColumnNode(TPosition pos, const TNodePtr& column, const TString& source) : INode(pos) - , ColumnExpr(column) - , Source(source) + , ColumnExpr_(column) + , Source_(source) { } @@ -1510,19 +1510,19 @@ TColumnNode::~TColumnNode() } bool TColumnNode::IsAsterisk() const { - return ColumnName == "*"; + return ColumnName_ == "*"; } bool TColumnNode::IsArtificial() const { - return Artificial; + return Artificial_; } const TString* TColumnNode::GetColumnName() const { - return UseSourceAsColumn ? &Source : (ColumnExpr ? nullptr : &ColumnName); + return UseSourceAsColumn_ ? &Source_ : (ColumnExpr_ ? nullptr : &ColumnName_); } const TString* TColumnNode::GetSourceName() const { - return UseSourceAsColumn ? &Empty : &Source; + return UseSourceAsColumn_ ? &Empty : &Source_; } TColumnNode* TColumnNode::GetColumnNode() { @@ -1535,7 +1535,7 @@ const TColumnNode* TColumnNode::GetColumnNode () const { bool TColumnNode::DoInit(TContext& ctx, ISource* src) { if (src) { - YQL_ENSURE(!State.Test(ENodeState::Initialized)); /// should be not initialized or Aggregated already invalid + YQL_ENSURE(!State_.Test(ENodeState::Initialized)); /// should be not initialized or Aggregated already invalid if (src->ShouldUseSourceAsColumn(*GetSourceName())) { if (!IsAsterisk() && IsReliable()) { SetUseSourceAsColumn(); @@ -1543,118 +1543,118 @@ bool TColumnNode::DoInit(TContext& ctx, ISource* src) { } if (GetColumnName()) { - auto fullName = Source ? DotJoin(Source, *GetColumnName()) : *GetColumnName(); + auto fullName = Source_ ? DotJoin(Source_, *GetColumnName()) : *GetColumnName(); auto alias = src->GetGroupByColumnAlias(fullName); if (alias) { ResetColumn(alias, {}); } - Artificial = !Source && src->IsExprAlias(*GetColumnName()); + Artificial_ = !Source_ && src->IsExprAlias(*GetColumnName()); } if (!src->AddColumn(ctx, *this)) { return false; } if (GetColumnName()) { - if (src->GetJoin() && Source) { - GroupKey = src->IsGroupByColumn(DotJoin(Source, *GetColumnName())); + if (src->GetJoin() && Source_) { + GroupKey_ = src->IsGroupByColumn(DotJoin(Source_, *GetColumnName())); } else { - GroupKey = src->IsGroupByColumn(*GetColumnName()) || src->IsAlias(EExprSeat::GroupBy, *GetColumnName()); + GroupKey_ = src->IsGroupByColumn(*GetColumnName()) || src->IsAlias(EExprSeat::GroupBy, *GetColumnName()); } } } if (IsAsterisk()) { - Node = AstNode("row"); + Node_ = AstNode("row"); } else { TString callable; - if (MaybeType) { - callable = Reliable && !UseSource ? "SqlPlainColumnOrType" : "SqlColumnOrType"; + if (MaybeType_) { + callable = Reliable_ && !UseSource_ ? "SqlPlainColumnOrType" : "SqlColumnOrType"; } else { // TODO: consider replacing Member -> SqlPlainColumn - callable = Reliable && !UseSource ? "Member" : "SqlColumn"; + callable = Reliable_ && !UseSource_ ? "Member" : "SqlColumn"; } - Node = Y(callable, "row", ColumnExpr ? Y("EvaluateAtom", ColumnExpr) : BuildQuotedAtom(Pos, *GetColumnName())); - if (UseSource) { - YQL_ENSURE(Source); - Node = L(Node, BuildQuotedAtom(Pos, Source)); + Node_ = Y(callable, "row", ColumnExpr_ ? Y("EvaluateAtom", ColumnExpr_) : BuildQuotedAtom(Pos_, *GetColumnName())); + if (UseSource_) { + YQL_ENSURE(Source_); + Node_ = L(Node_, BuildQuotedAtom(Pos_, Source_)); } } - return Node->Init(ctx, src); + return Node_->Init(ctx, src); } void TColumnNode::SetUseSourceAsColumn() { - YQL_ENSURE(!State.Test(ENodeState::Initialized)); /// should be not initialized or Aggregated already invalid + YQL_ENSURE(!State_.Test(ENodeState::Initialized)); /// should be not initialized or Aggregated already invalid YQL_ENSURE(!IsAsterisk()); - UseSourceAsColumn = true; + UseSourceAsColumn_ = true; } void TColumnNode::ResetAsReliable() { - Reliable = true; + Reliable_ = true; } void TColumnNode::SetAsNotReliable() { - Reliable = false; + Reliable_ = false; } void TColumnNode::SetUseSource() { - UseSource = true; + UseSource_ = true; } bool TColumnNode::IsUseSourceAsColumn() const { - return UseSourceAsColumn; + return UseSourceAsColumn_; } bool TColumnNode::IsUseSource() const { - return UseSource; + return UseSource_; } bool TColumnNode::IsReliable() const { - return Reliable; + return Reliable_; } bool TColumnNode::CanBeType() const { - return MaybeType; + return MaybeType_; } TNodePtr TColumnNode::DoClone() const { - YQL_ENSURE(!Node, "TColumnNode::Clone: Node should not be initialized"); - auto copy = ColumnExpr ? new TColumnNode(Pos, ColumnExpr, Source) : new TColumnNode(Pos, ColumnName, Source, MaybeType); - copy->GroupKey = GroupKey; - copy->Artificial = Artificial; - copy->Reliable = Reliable; - copy->UseSource = UseSource; - copy->UseSourceAsColumn = UseSourceAsColumn; + YQL_ENSURE(!Node_, "TColumnNode::Clone: Node should not be initialized"); + auto copy = ColumnExpr_ ? new TColumnNode(Pos_, ColumnExpr_, Source_) : new TColumnNode(Pos_, ColumnName_, Source_, MaybeType_); + copy->GroupKey_ = GroupKey_; + copy->Artificial_ = Artificial_; + copy->Reliable_ = Reliable_; + copy->UseSource_ = UseSource_; + copy->UseSourceAsColumn_ = UseSourceAsColumn_; return copy; } void TColumnNode::DoUpdateState() const { - State.Set(ENodeState::Const, false); - State.Set(ENodeState::MaybeConst, MaybeType); - State.Set(ENodeState::Aggregated, GroupKey); - State.Set(ENodeState::AggregationKey, GroupKey); + State_.Set(ENodeState::Const, false); + State_.Set(ENodeState::MaybeConst, MaybeType_); + State_.Set(ENodeState::Aggregated, GroupKey_); + State_.Set(ENodeState::AggregationKey, GroupKey_); } TAstNode* TColumnNode::Translate(TContext& ctx) const { - return Node->Translate(ctx); + return Node_->Translate(ctx); } void TColumnNode::ResetColumn(const TString& column, const TString& source) { - YQL_ENSURE(!State.Test(ENodeState::Initialized)); /// should be not initialized - Reliable = true; - UseSource = false; - UseSourceAsColumn = false; - ColumnName = column; - ColumnExpr = nullptr; - Source = source; + YQL_ENSURE(!State_.Test(ENodeState::Initialized)); /// should be not initialized + Reliable_ = true; + UseSource_ = false; + UseSourceAsColumn_ = false; + ColumnName_ = column; + ColumnExpr_ = nullptr; + Source_ = source; } void TColumnNode::ResetColumn(const TNodePtr& column, const TString& source) { - YQL_ENSURE(!State.Test(ENodeState::Initialized)); /// should be not initialized - Reliable = true; - UseSource = false; - UseSourceAsColumn = false; - ColumnName = ""; - ColumnExpr = column; - Source = source; + YQL_ENSURE(!State_.Test(ENodeState::Initialized)); /// should be not initialized + Reliable_ = true; + UseSource_ = false; + UseSourceAsColumn_ = false; + ColumnName_ = ""; + ColumnExpr_ = column; + Source_ = source; } const TString TColumnNode::Empty; @@ -1698,13 +1698,13 @@ TAstNode* ITableKeys::Translate(TContext& ctx) const { } bool IAggregation::IsDistinct() const { - return !DistinctKey.empty(); + return !DistinctKey_.empty(); } void IAggregation::DoUpdateState() const { - State.Set(ENodeState::Aggregated, AggMode == EAggregateMode::Normal); - State.Set(ENodeState::OverWindow, AggMode == EAggregateMode::OverWindow); - State.Set(ENodeState::OverWindowDistinct, AggMode == EAggregateMode::OverWindowDistinct); + State_.Set(ENodeState::Aggregated, AggMode_ == EAggregateMode::Normal); + State_.Set(ENodeState::OverWindow, AggMode_ == EAggregateMode::OverWindow); + State_.Set(ENodeState::OverWindowDistinct, AggMode_ == EAggregateMode::OverWindowDistinct); } const TString* IAggregation::GetGenericKey() const { @@ -1716,19 +1716,19 @@ void IAggregation::Join(IAggregation*) { } const TString& IAggregation::GetName() const { - return Name; + return Name_; } EAggregateMode IAggregation::GetAggregationMode() const { - return AggMode; + return AggMode_; } void IAggregation::MarkKeyColumnAsGenerated() { - IsGeneratedKeyColumn = true; + IsGeneratedKeyColumn_ = true; } IAggregation::IAggregation(TPosition pos, const TString& name, const TString& func, EAggregateMode aggMode) - : INode(pos), Name(name), Func(func), AggMode(aggMode) + : INode(pos), Name_(name), Func_(func), AggMode_(aggMode) {} TAstNode* IAggregation::Translate(TContext& ctx) const { @@ -1738,8 +1738,8 @@ TAstNode* IAggregation::Translate(TContext& ctx) const { } std::pair<TNodePtr, bool> IAggregation::AggregationTraits(const TNodePtr& type, bool overState, bool many, bool allowAggApply, TContext& ctx) const { - const bool distinct = AggMode == EAggregateMode::Distinct; - const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos, DistinctKey))) : type; + const bool distinct = AggMode_ == EAggregateMode::Distinct; + const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos_, DistinctKey_))) : type; auto apply = GetApply(listType, many, allowAggApply, ctx); if (!apply) { return { nullptr, false }; @@ -1751,8 +1751,8 @@ std::pair<TNodePtr, bool> IAggregation::AggregationTraits(const TNodePtr& type, } return { distinct ? - Q(Y(Q(Name), wrapped, BuildQuotedAtom(Pos, DistinctKey))) : - Q(Y(Q(Name), wrapped)), true }; + Q(Y(Q(Name_), wrapped, BuildQuotedAtom(Pos_, DistinctKey_))) : + Q(Y(Q(Name_), wrapped)), true }; } TNodePtr IAggregation::WrapIfOverState(const TNodePtr& input, bool overState, bool many, TContext& ctx) const { @@ -1765,7 +1765,7 @@ TNodePtr IAggregation::WrapIfOverState(const TNodePtr& input, bool overState, bo return nullptr; } - return Y(ToString("AggOverState"), extractor, BuildLambda(Pos, Y(), input)); + return Y(ToString("AggOverState"), extractor, BuildLambda(Pos_, Y(), input)); } void IAggregation::AddFactoryArguments(TNodePtr& apply) const { @@ -1777,13 +1777,13 @@ std::vector<ui32> IAggregation::GetFactoryColumnIndices() const { } TNodePtr IAggregation::WindowTraits(const TNodePtr& type, TContext& ctx) const { - YQL_ENSURE(AggMode == EAggregateMode::OverWindow || AggMode == EAggregateMode::OverWindowDistinct, "Windows traits is unavailable"); + YQL_ENSURE(AggMode_ == EAggregateMode::OverWindow || AggMode_ == EAggregateMode::OverWindowDistinct, "Windows traits is unavailable"); - const bool distinct = AggMode == EAggregateMode::OverWindowDistinct; - const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos, DistinctKey))) : type; - auto traits = Y(Q(Name), GetApply(listType, false, false, ctx)); - if (AggMode == EAggregateMode::OverWindowDistinct) { - traits->Add(BuildQuotedAtom(Pos, DistinctKey)); + const bool distinct = AggMode_ == EAggregateMode::OverWindowDistinct; + const auto listType = distinct ? Y("ListType", Y("StructMemberType", Y("ListItemType", type), BuildQuotedAtom(Pos_, DistinctKey_))) : type; + auto traits = Y(Q(Name_), GetApply(listType, false, false, ctx)); + if (AggMode_ == EAggregateMode::OverWindowDistinct) { + traits->Add(BuildQuotedAtom(Pos_, DistinctKey_)); } return Q(traits); @@ -2025,56 +2025,56 @@ public: TLiteralNode::TLiteralNode(TPosition pos, bool isNull) : TAstListNode(pos) - , Null(isNull) - , Void(!isNull) + , Null_(isNull) + , Void_(!isNull) { Add(isNull ? "Null" : "Void"); } TLiteralNode::TLiteralNode(TPosition pos, const TString& type, const TString& value) : TAstListNode(pos) - , Null(false) - , Void(false) - , Type(type) - , Value(value) + , Null_(false) + , Void_(false) + , Type_(type) + , Value_(value) { - if (Type.StartsWith("Pg")) { - Add("PgConst", BuildQuotedAtom(Pos, Value), Y("PgType", Q(to_lower(Type.substr(2))))); + if (Type_.StartsWith("Pg")) { + Add("PgConst", BuildQuotedAtom(Pos_, Value_), Y("PgType", Q(to_lower(Type_.substr(2))))); } else { - Add(Type, BuildQuotedAtom(Pos, Value)); + Add(Type_, BuildQuotedAtom(Pos_, Value_)); } } TLiteralNode::TLiteralNode(TPosition pos, const TString& value, ui32 nodeFlags) : TAstListNode(pos) - , Null(false) - , Void(false) - , Type("String") - , Value(value) + , Null_(false) + , Void_(false) + , Type_("String") + , Value_(value) { - Add(Type, BuildQuotedAtom(pos, Value, nodeFlags)); + Add(Type_, BuildQuotedAtom(pos, Value_, nodeFlags)); } TLiteralNode::TLiteralNode(TPosition pos, const TString& value, ui32 nodeFlags, const TString& type) : TAstListNode(pos) - , Null(false) - , Void(false) - , Type(type) - , Value(value) + , Null_(false) + , Void_(false) + , Type_(type) + , Value_(value) { - if (Type.StartsWith("Pg")) { - Add("PgConst", BuildQuotedAtom(Pos, Value, nodeFlags), Y("PgType", Q(to_lower(Type.substr(2))))); + if (Type_.StartsWith("Pg")) { + Add("PgConst", BuildQuotedAtom(Pos_, Value_, nodeFlags), Y("PgType", Q(to_lower(Type_.substr(2))))); } else { - Add(Type, BuildQuotedAtom(pos, Value, nodeFlags)); + Add(Type_, BuildQuotedAtom(pos, Value_, nodeFlags)); } } bool TLiteralNode::IsNull() const { - return Null; + return Null_; } const TString* TLiteralNode::GetLiteral(const TString& type) const { - return type == Type ? &Value : nullptr; + return type == Type_ ? &Value_ : nullptr; } bool TLiteralNode::IsLiteral() const { @@ -2082,40 +2082,40 @@ bool TLiteralNode::IsLiteral() const { } TString TLiteralNode::GetLiteralType() const { - return Type; + return Type_; } TString TLiteralNode::GetLiteralValue() const { - return Value; + return Value_; } void TLiteralNode::DoUpdateState() const { - State.Set(ENodeState::Const); + State_.Set(ENodeState::Const); } TNodePtr TLiteralNode::DoClone() const { - auto res = (Null || Void) ? MakeIntrusive<TLiteralNode>(Pos, Null) : MakeIntrusive<TLiteralNode>(Pos, Type, Value); - res->Nodes = Nodes; + auto res = (Null_ || Void_) ? MakeIntrusive<TLiteralNode>(Pos_, Null_) : MakeIntrusive<TLiteralNode>(Pos_, Type_, Value_); + res->Nodes_ = Nodes_; return res; } template<typename T> TLiteralNumberNode<T>::TLiteralNumberNode(TPosition pos, const TString& type, const TString& value, bool implicitType) : TLiteralNode(pos, type, value) - , ImplicitType(implicitType) + , ImplicitType_(implicitType) {} template<typename T> TNodePtr TLiteralNumberNode<T>::DoClone() const { - return new TLiteralNumberNode<T>(Pos, Type, Value, ImplicitType); + return new TLiteralNumberNode<T>(Pos_, Type_, Value_, ImplicitType_); } template<typename T> bool TLiteralNumberNode<T>::DoInit(TContext& ctx, ISource* src) { Y_UNUSED(src); T val; - if (!TryFromString(Value, val)) { - ctx.Error(Pos) << "Failed to parse " << Value << " as integer literal of " << Type << " type: value out of range for " << Type; + if (!TryFromString(Value_, val)) { + ctx.Error(Pos_) << "Failed to parse " << Value_ << " as integer literal of " << Type_ << " type: value out of range for " << Type_; return false; } return true; @@ -2128,22 +2128,22 @@ bool TLiteralNumberNode<T>::IsIntegerLiteral() const { template<typename T> TNodePtr TLiteralNumberNode<T>::ApplyUnaryOp(TContext& ctx, TPosition pos, const TString& opName) const { - YQL_ENSURE(!Value.empty()); - if (opName == "Minus" && IsIntegerLiteral() && Value[0] != '-') { - if (ImplicitType) { - ui64 val = FromString<ui64>(Value); - TString negated = "-" + Value; + YQL_ENSURE(!Value_.empty()); + if (opName == "Minus" && IsIntegerLiteral() && Value_[0] != '-') { + if (ImplicitType_) { + ui64 val = FromString<ui64>(Value_); + TString negated = "-" + Value_; if (val <= ui64(std::numeric_limits<i32>::max()) + 1) { // negated value fits in Int32 i32 v; YQL_ENSURE(TryFromString(negated, v)); - return new TLiteralNumberNode<i32>(pos, Type.StartsWith("Pg") ? "PgInt4" : "Int32", negated); + return new TLiteralNumberNode<i32>(pos, Type_.StartsWith("Pg") ? "PgInt4" : "Int32", negated); } if (val <= ui64(std::numeric_limits<i64>::max()) + 1) { // negated value fits in Int64 i64 v; YQL_ENSURE(TryFromString(negated, v)); - return new TLiteralNumberNode<i64>(pos, Type.StartsWith("Pg") ? "PgInt8" : "Int64", negated); + return new TLiteralNumberNode<i64>(pos, Type_.StartsWith("Pg") ? "PgInt8" : "Int64", negated); } ctx.Error(pos) << "Failed to parse negative integer: " << negated << ", number limit overflow"; @@ -2151,7 +2151,7 @@ TNodePtr TLiteralNumberNode<T>::ApplyUnaryOp(TContext& ctx, TPosition pos, const } if (std::numeric_limits<T>::is_signed) { - return new TLiteralNumberNode<T>(pos, Type, "-" + Value); + return new TLiteralNumberNode<T>(pos, Type_, "-" + Value_); } } return INode::ApplyUnaryOp(ctx, pos, opName); @@ -2225,11 +2225,11 @@ bool TAsteriskNode::IsAsterisk() const { }; TNodePtr TAsteriskNode::DoClone() const { - return new TAsteriskNode(Pos); + return new TAsteriskNode(Pos_); } TAstNode* TAsteriskNode::Translate(TContext& ctx) const { - ctx.Error(Pos) << "* is not allowed here"; + ctx.Error(Pos_) << "* is not allowed here"; return nullptr; } @@ -2245,58 +2245,58 @@ TDeferredAtom::TDeferredAtom() TDeferredAtom::TDeferredAtom(TPosition pos, const TString& str) { - Node = BuildQuotedAtom(pos, str); - Explicit = str; - Repr = str; + Node_ = BuildQuotedAtom(pos, str); + Explicit_ = str; + Repr_ = str; } TDeferredAtom::TDeferredAtom(TNodePtr node, TContext& ctx) { - Node = node; - Repr = ctx.MakeName("DeferredAtom"); + Node_ = node; + Repr_ = ctx.MakeName("DeferredAtom"); } const TString* TDeferredAtom::GetLiteral() const { - return Explicit.Get(); + return Explicit_.Get(); } bool TDeferredAtom::GetLiteral(TString& value, TContext& ctx) const { - if (Explicit) { - value = *Explicit; + if (Explicit_) { + value = *Explicit_; return true; } - ctx.Error(Node ? Node->GetPos() : ctx.Pos()) << "Expected literal value"; + ctx.Error(Node_ ? Node_->GetPos() : ctx.Pos()) << "Expected literal value"; return false; } TNodePtr TDeferredAtom::Build() const { - return Node; + return Node_; } TString TDeferredAtom::GetRepr() const { - return Repr; + return Repr_; } bool TDeferredAtom::Empty() const { - return !Node || Repr.empty(); + return !Node_ || Repr_.empty(); } bool TDeferredAtom::HasNode() const { - return !!Node; + return !!Node_; } TTupleNode::TTupleNode(TPosition pos, const TVector<TNodePtr>& exprs) : TAstListNode(pos) - , Exprs(exprs) + , Exprs_(exprs) {} bool TTupleNode::IsEmpty() const { - return Exprs.empty(); + return Exprs_.empty(); } const TVector<TNodePtr>& TTupleNode::Elements() const { - return Exprs; + return Exprs_; } TTupleNode* TTupleNode::GetTupleNode() { @@ -2309,7 +2309,7 @@ const TTupleNode* TTupleNode::GetTupleNode() const { bool TTupleNode::DoInit(TContext& ctx, ISource* src) { auto node(Y()); - for (auto& expr: Exprs) { + for (auto& expr: Exprs_) { if (expr->GetLabel()) { ctx.Error(expr->GetPos()) << "Tuple does not allow named members"; return false; @@ -2321,25 +2321,25 @@ bool TTupleNode::DoInit(TContext& ctx, ISource* src) { } size_t TTupleNode::GetTupleSize() const { - return Exprs.size(); + return Exprs_.size(); } TNodePtr TTupleNode::GetTupleElement(size_t index) const { - return Exprs[index]; + return Exprs_[index]; } TNodePtr TTupleNode::DoClone() const { - return new TTupleNode(Pos, CloneContainer(Exprs)); + return new TTupleNode(Pos_, CloneContainer(Exprs_)); } void TTupleNode::CollectPreaggregateExprs(TContext& ctx, ISource& src, TVector<INode::TPtr>& exprs) { - for (auto& expr : Exprs) { + for (auto& expr : Exprs_) { expr->CollectPreaggregateExprs(ctx, src, exprs); } } const TString* TTupleNode::GetSourceName() const { - return DeriveCommonSourceName(Exprs); + return DeriveCommonSourceName(Exprs_); } TNodePtr BuildTuple(TPosition pos, const TVector<TNodePtr>& exprs) { @@ -2348,34 +2348,34 @@ TNodePtr BuildTuple(TPosition pos, const TVector<TNodePtr>& exprs) { TStructNode::TStructNode(TPosition pos, const TVector<TNodePtr>& exprs, const TVector<TNodePtr>& labels, bool ordered) : TAstListNode(pos) - , Exprs(exprs) - , Labels(labels) - , Ordered(ordered) + , Exprs_(exprs) + , Labels_(labels) + , Ordered_(ordered) { - YQL_ENSURE(Labels.empty() || Labels.size() == Exprs.size()); + YQL_ENSURE(Labels_.empty() || Labels_.size() == Exprs_.size()); } bool TStructNode::DoInit(TContext& ctx, ISource* src) { - Nodes.push_back(BuildAtom(Pos, (Ordered || Exprs.size() < 2) ? "AsStruct" : "AsStructUnordered", TNodeFlags::Default)); + Nodes_.push_back(BuildAtom(Pos_, (Ordered_ || Exprs_.size() < 2) ? "AsStruct" : "AsStructUnordered", TNodeFlags::Default)); size_t i = 0; - for (const auto& expr : Exprs) { + for (const auto& expr : Exprs_) { TNodePtr label; - if (Labels.empty()) { + if (Labels_.empty()) { if (!expr->GetLabel()) { ctx.Error(expr->GetPos()) << "Structure does not allow anonymous members"; return false; } label = BuildQuotedAtom(expr->GetPos(), expr->GetLabel()); } else { - label = Labels[i++]; + label = Labels_[i++]; } - Nodes.push_back(Q(Y(label, expr))); + Nodes_.push_back(Q(Y(label, expr))); } return TAstListNode::DoInit(ctx, src); } TNodePtr TStructNode::DoClone() const { - return new TStructNode(Pos, CloneContainer(Exprs), CloneContainer(Labels), Ordered); + return new TStructNode(Pos_, CloneContainer(Exprs_), CloneContainer(Labels_), Ordered_); } TStructNode* TStructNode::GetStructNode() { @@ -2387,13 +2387,13 @@ const TStructNode* TStructNode::GetStructNode() const { } void TStructNode::CollectPreaggregateExprs(TContext& ctx, ISource& src, TVector<INode::TPtr>& exprs) { - for (auto& expr : Exprs) { + for (auto& expr : Exprs_) { expr->CollectPreaggregateExprs(ctx, src, exprs); } } const TString* TStructNode::GetSourceName() const { - return DeriveCommonSourceName(Exprs); + return DeriveCommonSourceName(Exprs_); } TNodePtr BuildStructure(TPosition pos, const TVector<TNodePtr>& exprs) { @@ -2413,11 +2413,11 @@ TNodePtr BuildOrderedStructure(TPosition pos, const TVector<TNodePtr>& exprsUnla TListOfNamedNodes::TListOfNamedNodes(TPosition pos, TVector<TNodePtr>&& exprs) : INode(pos) - , Exprs(std::move(exprs)) + , Exprs_(std::move(exprs)) {} TVector<TNodePtr>* TListOfNamedNodes::ContentListPtr() { - return &Exprs; + return &Exprs_; } TAstNode* TListOfNamedNodes::Translate(TContext& ctx) const { @@ -2427,11 +2427,11 @@ TAstNode* TListOfNamedNodes::Translate(TContext& ctx) const { } TNodePtr TListOfNamedNodes::DoClone() const { - return new TListOfNamedNodes(GetPos(), CloneContainer(Exprs)); + return new TListOfNamedNodes(GetPos(), CloneContainer(Exprs_)); } void TListOfNamedNodes::DoVisitChildren(const TVisitFunc& func, TVisitNodeSet& visited) const { - for (auto& expr : Exprs) { + for (auto& expr : Exprs_) { expr->VisitTree(func, visited); } } @@ -2442,13 +2442,13 @@ TNodePtr BuildListOfNamedNodes(TPosition pos, TVector<TNodePtr>&& exprs) { TArgPlaceholderNode::TArgPlaceholderNode(TPosition pos, const TString &name) : INode(pos), - Name(name) + Name_(name) { } bool TArgPlaceholderNode::DoInit(TContext& ctx, ISource* src) { Y_UNUSED(src); - ctx.Error(Pos) << Name << " can't be used as a part of expression."; + ctx.Error(Pos_) << Name_ << " can't be used as a part of expression."; return false; } @@ -2458,11 +2458,11 @@ TAstNode* TArgPlaceholderNode::Translate(TContext& ctx) const { } TString TArgPlaceholderNode::GetName() const { - return Name; + return Name_; } TNodePtr TArgPlaceholderNode::DoClone() const { - return new TArgPlaceholderNode(GetPos(), Name); + return new TArgPlaceholderNode(GetPos(), Name_); } TNodePtr BuildArgPlaceholder(TPosition pos, const TString& name) { @@ -2473,51 +2473,51 @@ class TAccessNode: public INode { public: TAccessNode(TPosition pos, const TVector<TIdPart>& ids, bool isLookup) : INode(pos) - , Ids(ids) - , IsLookup(isLookup) - , ColumnOnly(false) - , IsColumnRequired(false) - , AccessOpName("AccessNode") + , Ids_(ids) + , IsLookup_(isLookup) + , ColumnOnly_(false) + , IsColumnRequired_(false) + , AccessOpName_("AccessNode") { - Y_DEBUG_ABORT_UNLESS(Ids.size() > 1); - Y_DEBUG_ABORT_UNLESS(Ids[0].Expr); - auto column = Ids[0].Expr->GetColumnNode(); + Y_DEBUG_ABORT_UNLESS(Ids_.size() > 1); + Y_DEBUG_ABORT_UNLESS(Ids_[0].Expr); + auto column = Ids_[0].Expr->GetColumnNode(); if (column) { ui32 idx = 1; TString source; - if (Ids.size() > 2) { - source = Ids[idx].Name; + if (Ids_.size() > 2) { + source = Ids_[idx].Name; ++idx; } - ColumnOnly = !IsLookup && Ids.size() < 4; - if (ColumnOnly && Ids[idx].Expr) { - column->ResetColumn(Ids[idx].Expr, source); + ColumnOnly_ = !IsLookup_ && Ids_.size() < 4; + if (ColumnOnly_ && Ids_[idx].Expr) { + column->ResetColumn(Ids_[idx].Expr, source); } else { - column->ResetColumn(Ids[idx].Name, source); + column->ResetColumn(Ids_[idx].Name, source); } } } void AssumeColumn() override { - IsColumnRequired = true; + IsColumnRequired_ = true; } TMaybe<TString> TryMakeTable() { - if (!ColumnOnly) { + if (!ColumnOnly_) { return Nothing(); } ui32 idx = 1; - if (Ids.size() > 2) { + if (Ids_.size() > 2) { return Nothing(); } - return Ids[idx].Name; + return Ids_[idx].Name; } const TString* GetColumnName() const override { - return ColumnOnly ? Ids[0].Expr->GetColumnName() : nullptr; + return ColumnOnly_ ? Ids_[0].Expr->GetColumnName() : nullptr; } bool IsPlainColumn() const override { @@ -2525,7 +2525,7 @@ public: return true; } - if (Ids[0].Expr->IsTableRow()) { + if (Ids_[0].Expr->IsTableRow()) { return true; } @@ -2533,7 +2533,7 @@ public: } const TString* GetSourceName() const override { - return Ids[0].Expr->GetSourceName(); + return Ids_[0].Expr->GetSourceName(); } TAccessNode* GetAccessNode() override { @@ -2545,7 +2545,7 @@ public: } bool DoInit(TContext& ctx, ISource* src) override { - auto expr = Ids[0].Expr; + auto expr = Ids_[0].Expr; const TPosition pos(expr->GetPos()); if (expr->IsAsterisk()) { ctx.Error(pos) << "Asterisk column does not allow any access"; @@ -2554,7 +2554,7 @@ public: if (!expr->Init(ctx, src)) { return false; } - for (auto& id: Ids) { + for (auto& id: Ids_) { if (id.Expr && !id.Expr->Init(ctx, src)) { return false; } @@ -2563,33 +2563,33 @@ public: auto column = expr->GetColumnNode(); if (column) { const bool useSourceAsColumn = column->IsUseSourceAsColumn(); - ColumnOnly &= !useSourceAsColumn; - if (IsColumnRequired && !ColumnOnly) { + ColumnOnly_ &= !useSourceAsColumn; + if (IsColumnRequired_ && !ColumnOnly_) { ctx.Error(pos) << "Please use a full form (corellation.struct.field) or an alias (struct.field as alias) to access struct's field in the GROUP BY"; return false; } - if (Ids.size() > 2) { - if (!CheckColumnId(pos, ctx, Ids[idx], ColumnOnly ? "Correlation" : "Column", true)) { + if (Ids_.size() > 2) { + if (!CheckColumnId(pos, ctx, Ids_[idx], ColumnOnly_ ? "Correlation" : "Column", true)) { return false; } ++idx; } if (!useSourceAsColumn) { - if (!IsLookup && !CheckColumnId(pos, ctx, Ids[idx], ColumnOnly ? "Column" : "Member", false)) { + if (!IsLookup_ && !CheckColumnId(pos, ctx, Ids_[idx], ColumnOnly_ ? "Column" : "Member", false)) { return false; } ++idx; } } - for (; idx < Ids.size(); ++idx) { - const auto& id = Ids[idx]; + for (; idx < Ids_.size(); ++idx) { + const auto& id = Ids_[idx]; if (!id.Name.empty()) { - expr = Y("SqlAccess", Q("struct"), expr, id.Expr ? Y("EvaluateAtom", id.Expr) : BuildQuotedAtom(Pos, id.Name)); - AccessOpName = "AccessStructMember"; + expr = Y("SqlAccess", Q("struct"), expr, id.Expr ? Y("EvaluateAtom", id.Expr) : BuildQuotedAtom(Pos_, id.Name)); + AccessOpName_ = "AccessStructMember"; } else if (id.Expr) { expr = Y("SqlAccess", Q("dict"), expr, id.Expr); - AccessOpName = "AccessDictMember"; + AccessOpName_ = "AccessDictMember"; } else { continue; } @@ -2597,55 +2597,55 @@ public: if (ctx.PragmaYsonAutoConvert || ctx.PragmaYsonStrict || ctx.PragmaYsonFast) { auto ysonOptions = Y(); if (ctx.PragmaYsonAutoConvert) { - ysonOptions->Add(BuildQuotedAtom(Pos, "yson_auto_convert")); + ysonOptions->Add(BuildQuotedAtom(Pos_, "yson_auto_convert")); } if (ctx.PragmaYsonStrict) { - ysonOptions->Add(BuildQuotedAtom(Pos, "yson_strict")); + ysonOptions->Add(BuildQuotedAtom(Pos_, "yson_strict")); } if (ctx.PragmaYsonFast) { - ysonOptions->Add(BuildQuotedAtom(Pos, "yson_fast")); + ysonOptions->Add(BuildQuotedAtom(Pos_, "yson_fast")); } expr->Add(Q(ysonOptions)); } } - Node = expr; + Node_ = expr; return true; } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } TPtr DoClone() const override { - YQL_ENSURE(!Node, "TAccessNode::Clone: Node should not be initialized"); + YQL_ENSURE(!Node_, "TAccessNode::Clone: Node should not be initialized"); TVector<TIdPart> cloneIds; - cloneIds.reserve(Ids.size()); - for (const auto& id: Ids) { + cloneIds.reserve(Ids_.size()); + for (const auto& id: Ids_) { cloneIds.emplace_back(id.Clone()); } - auto copy = new TAccessNode(Pos, cloneIds, IsLookup); - copy->ColumnOnly = ColumnOnly; + auto copy = new TAccessNode(Pos_, cloneIds, IsLookup_); + copy->ColumnOnly_ = ColumnOnly_; return copy; } const TVector<TIdPart>& GetParts() const { - return Ids; + return Ids_; } protected: void DoUpdateState() const override { - YQL_ENSURE(Node); - State.Set(ENodeState::Const, Node->IsConstant()); - State.Set(ENodeState::MaybeConst, Node->MaybeConstant()); - State.Set(ENodeState::Aggregated, Node->IsAggregated()); - State.Set(ENodeState::AggregationKey, Node->HasState(ENodeState::AggregationKey)); - State.Set(ENodeState::OverWindow, Node->IsOverWindow()); + YQL_ENSURE(Node_); + State_.Set(ENodeState::Const, Node_->IsConstant()); + State_.Set(ENodeState::MaybeConst, Node_->MaybeConstant()); + State_.Set(ENodeState::Aggregated, Node_->IsAggregated()); + State_.Set(ENodeState::AggregationKey, Node_->HasState(ENodeState::AggregationKey)); + State_.Set(ENodeState::OverWindow, Node_->IsOverWindow()); } void DoVisitChildren(const TVisitFunc& func, TVisitNodeSet& visited) const final { - Y_DEBUG_ABORT_UNLESS(Node); - Node->VisitTree(func, visited); + Y_DEBUG_ABORT_UNLESS(Node_); + Node_->VisitTree(func, visited); } bool CheckColumnId(TPosition pos, TContext& ctx, const TIdPart& id, const TString& where, bool checkLookup) { @@ -2661,11 +2661,11 @@ protected: } TString GetOpName() const override { - return AccessOpName; + return AccessOpName_; } void CollectPreaggregateExprs(TContext& ctx, ISource& src, TVector<INode::TPtr>& exprs) override { - for (auto& id : Ids) { + for (auto& id : Ids_) { if (id.Expr) { id.Expr->CollectPreaggregateExprs(ctx, src, exprs); } @@ -2673,12 +2673,12 @@ protected: } private: - TNodePtr Node; - TVector<TIdPart> Ids; - bool IsLookup; - bool ColumnOnly; - bool IsColumnRequired; - TString AccessOpName; + TNodePtr Node_; + TVector<TIdPart> Ids_; + bool IsLookup_; + bool ColumnOnly_; + bool IsColumnRequired_; + TString AccessOpName_; }; TNodePtr BuildAccess(TPosition pos, const TVector<INode::TIdPart>& ids, bool isLookup) { @@ -2828,7 +2828,7 @@ private: TBindNode(const TBindNode& other) : TAstListNode(other.GetPos()) { - Nodes = CloneContainer(other.Nodes); + Nodes_ = CloneContainer(other.Nodes_); } TPtr DoClone() const final { @@ -2872,7 +2872,7 @@ private: TLambdaNode(const TLambdaNode& other) : TAstListNode(other.GetPos()) { - Nodes = CloneContainer(other.Nodes); + Nodes_ = CloneContainer(other.Nodes_); } TPtr DoClone() const final { @@ -2880,7 +2880,7 @@ private: } void DoUpdateState() const final { - State.Set(ENodeState::Const); + State_.Set(ENodeState::Const); } }; @@ -3000,50 +3000,50 @@ TNodePtr BuildIsNullOp(TPosition pos, TNodePtr a) { TUdfNode::TUdfNode(TPosition pos, const TVector<TNodePtr>& args) : INode(pos) - , Args(args) + , Args_(args) { - if (Args.size()) { + if (Args_.size()) { // If there aren't any named args, args are passed as vector of positional args, // else Args has length 2: tuple for positional args and struct for named args, // so let's construct tuple of args there. Other type checks will within DoInit call. - if (!Args[0]->GetTupleNode()) { - Args = {BuildTuple(pos, args)}; + if (!Args_[0]->GetTupleNode()) { + Args_ = {BuildTuple(pos, args)}; } } } bool TUdfNode::DoInit(TContext& ctx, ISource* src) { Y_UNUSED(src); - if (Args.size() < 1) { - ctx.Error(Pos) << "Udf: expected at least one argument"; + if (Args_.size() < 1) { + ctx.Error(Pos_) << "Udf: expected at least one argument"; return false; } - TTupleNode* as_tuple = Args[0]->GetTupleNode(); + TTupleNode* as_tuple = Args_[0]->GetTupleNode(); if (!as_tuple || as_tuple->GetTupleSize() < 1) { - ctx.Error(Pos) << "Udf: first argument must be a callable, like Foo::Bar"; + ctx.Error(Pos_) << "Udf: first argument must be a callable, like Foo::Bar"; return false; } TNodePtr function = as_tuple->GetTupleElement(0); if (!function || !function->FuncName()) { - ctx.Error(Pos) << "Udf: first argument must be a callable, like Foo::Bar"; + ctx.Error(Pos_) << "Udf: first argument must be a callable, like Foo::Bar"; return false; } - FunctionName = function->FuncName(); - ModuleName = function->ModuleName(); - ScriptUdf = function->IsScript(); - if (ScriptUdf && as_tuple->GetTupleSize() > 1) { - ctx.Error(Pos) << "Udf: user type is not supported for script udfs"; + FunctionName_ = function->FuncName(); + ModuleName_ = function->ModuleName(); + ScriptUdf_ = function->IsScript(); + if (ScriptUdf_ && as_tuple->GetTupleSize() > 1) { + ctx.Error(Pos_) << "Udf: user type is not supported for script udfs"; return false; } - if (ScriptUdf) { + if (ScriptUdf_) { for (size_t i = 0; i < function->GetTupleSize(); ++i) { - ScriptArgs.push_back(function->GetTupleElement(i)); + ScriptArgs_.push_back(function->GetTupleElement(i)); } } @@ -3060,13 +3060,13 @@ bool TUdfNode::DoInit(TContext& ctx, ISource* src) { external.push_back(current); } - ExternalTypesTuple = new TCallNodeImpl(Pos, "TupleType", external); + ExternalTypesTuple_ = new TCallNodeImpl(Pos_, "TupleType", external); - if (Args.size() == 1) { + if (Args_.size() == 1) { return true; } - if (TStructNode* named_args = Args[1]->GetStructNode(); named_args) { + if (TStructNode* named_args = Args_[1]->GetStructNode(); named_args) { for (const auto &arg: named_args->GetExprs()) { if (arg->GetLabel() == "TypeConfig") { if (function->IsScript()) { @@ -3074,18 +3074,18 @@ bool TUdfNode::DoInit(TContext& ctx, ISource* src) { return false; } - TypeConfig = MakeAtomFromExpression(Pos, ctx, arg); + TypeConfig_ = MakeAtomFromExpression(Pos_, ctx, arg); } else if (arg->GetLabel() == "RunConfig") { if (function->IsScript()) { ctx.Error() << "Udf: RunConfig is not supported for script udfs"; return false; } - RunConfig = arg; + RunConfig_ = arg; } else if (arg->GetLabel() == "Cpu") { - Cpu = MakeAtomFromExpression(Pos, ctx, arg); + Cpu_ = MakeAtomFromExpression(Pos_, ctx, arg); } else if (arg->GetLabel() == "ExtraMem") { - ExtraMem = MakeAtomFromExpression(Pos, ctx, arg); + ExtraMem_ = MakeAtomFromExpression(Pos_, ctx, arg); } else { ctx.Error() << "Udf: unexpected named argument: " << arg->GetLabel(); return false; @@ -3097,48 +3097,48 @@ bool TUdfNode::DoInit(TContext& ctx, ISource* src) { } const TNodePtr TUdfNode::GetExternalTypes() const { - return ExternalTypesTuple; + return ExternalTypesTuple_; } const TString& TUdfNode::GetFunction() const { - return *FunctionName; + return *FunctionName_; } const TString& TUdfNode::GetModule() const { - return *ModuleName; + return *ModuleName_; } TNodePtr TUdfNode::GetRunConfig() const { - return RunConfig; + return RunConfig_; } const TDeferredAtom& TUdfNode::GetTypeConfig() const { - return TypeConfig; + return TypeConfig_; } TNodePtr TUdfNode::BuildOptions() const { - if (Cpu.Empty() && ExtraMem.Empty()) { + if (Cpu_.Empty() && ExtraMem_.Empty()) { return nullptr; } auto options = Y(); - if (!Cpu.Empty()) { - options = L(options, Q(Y(Q("cpu"), Cpu.Build()))); + if (!Cpu_.Empty()) { + options = L(options, Q(Y(Q("cpu"), Cpu_.Build()))); } - if (!ExtraMem.Empty()) { - options = L(options, Q(Y(Q("extraMem"), ExtraMem.Build()))); + if (!ExtraMem_.Empty()) { + options = L(options, Q(Y(Q("extraMem"), ExtraMem_.Build()))); } return Q(options); } bool TUdfNode::IsScript() const { - return ScriptUdf; + return ScriptUdf_; } const TVector<TNodePtr>& TUdfNode::GetScriptArgs() const { - return ScriptArgs; + return ScriptArgs_; } TUdfNode* TUdfNode::GetUdfNode() { @@ -3150,12 +3150,12 @@ const TUdfNode* TUdfNode::GetUdfNode() const { } TAstNode* TUdfNode::Translate(TContext& ctx) const { - ctx.Error(Pos) << "Abstract Udf Node can't be used as a part of expression."; + ctx.Error(Pos_) << "Abstract Udf Node can't be used as a part of expression."; return nullptr; } TNodePtr TUdfNode::DoClone() const { - return new TUdfNode(Pos, CloneContainer(Args)); + return new TUdfNode(Pos_, CloneContainer(Args_)); } @@ -3164,8 +3164,8 @@ public: TBinaryOpNode(TPosition pos, const TString& opName, TNodePtr a, TNodePtr b); TNodePtr DoClone() const final { - YQL_ENSURE(Args.size() == 2); - return new TBinaryOpNode(Pos, OpName, Args[0]->Clone(), Args[1]->Clone()); + YQL_ENSURE(Args_.size() == 2); + return new TBinaryOpNode(Pos_, OpName_, Args_[0]->Clone(), Args_[1]->Clone()); } }; @@ -3209,49 +3209,49 @@ class TCalcOverWindow final: public INode { public: TCalcOverWindow(TPosition pos, const TString& windowName, TNodePtr node) : INode(pos) - , WindowName(windowName) - , FuncNode(node) + , WindowName_(windowName) + , FuncNode_(node) {} TAstNode* Translate(TContext& ctx) const override { - return FuncNode->Translate(ctx); + return FuncNode_->Translate(ctx); } bool DoInit(TContext& ctx, ISource* src) override { YQL_ENSURE(src); - TSourcePtr overWindowSource = BuildOverWindowSource(ctx.Pos(), WindowName, src); - if (!FuncNode->Init(ctx, overWindowSource.Get())) { + TSourcePtr overWindowSource = BuildOverWindowSource(ctx.Pos(), WindowName_, src); + if (!FuncNode_->Init(ctx, overWindowSource.Get())) { return false; } return true; } TPtr DoClone() const final { - return new TCalcOverWindow(Pos, WindowName, SafeClone(FuncNode)); + return new TCalcOverWindow(Pos_, WindowName_, SafeClone(FuncNode_)); } void DoUpdateState() const override { - State.Set(ENodeState::Const, FuncNode->IsConstant()); - State.Set(ENodeState::MaybeConst, FuncNode->MaybeConstant()); - State.Set(ENodeState::Aggregated, FuncNode->IsAggregated()); - State.Set(ENodeState::OverWindow, true); + State_.Set(ENodeState::Const, FuncNode_->IsConstant()); + State_.Set(ENodeState::MaybeConst, FuncNode_->MaybeConstant()); + State_.Set(ENodeState::Aggregated, FuncNode_->IsAggregated()); + State_.Set(ENodeState::OverWindow, true); } void DoVisitChildren(const TVisitFunc& func, TVisitNodeSet& visited) const final { - Y_DEBUG_ABORT_UNLESS(FuncNode); - FuncNode->VisitTree(func, visited); + Y_DEBUG_ABORT_UNLESS(FuncNode_); + FuncNode_->VisitTree(func, visited); } void CollectPreaggregateExprs(TContext& ctx, ISource& src, TVector<INode::TPtr>& exprs) override { if (ctx.DistinctOverWindow) { - FuncNode->CollectPreaggregateExprs(ctx, src, exprs); + FuncNode_->CollectPreaggregateExprs(ctx, src, exprs); } else { INode::CollectPreaggregateExprs(ctx, src, exprs); } } protected: - const TString WindowName; - TNodePtr FuncNode; + const TString WindowName_; + TNodePtr FuncNode_; }; TNodePtr BuildCalcOverWindow(TPosition pos, const TString& windowName, TNodePtr call) { @@ -3263,40 +3263,40 @@ class TYsonOptionsNode final: public INode { public: TYsonOptionsNode(TPosition pos, bool autoConvert, bool strict) : INode(pos) - , AutoConvert(autoConvert) - , Strict(strict) + , AutoConvert_(autoConvert) + , Strict_(strict) { auto udf = Y("Udf", Q(Fast ? "Yson2.Options" : "Yson.Options")); auto autoConvertNode = BuildLiteralBool(pos, autoConvert); autoConvertNode->SetLabel("AutoConvert"); auto strictNode = BuildLiteralBool(pos, strict); strictNode->SetLabel("Strict"); - Node = Y("NamedApply", udf, Q(Y()), BuildStructure(pos, { autoConvertNode, strictNode })); + Node_ = Y("NamedApply", udf, Q(Y()), BuildStructure(pos, { autoConvertNode, strictNode })); } TAstNode* Translate(TContext& ctx) const override { - return Node->Translate(ctx); + return Node_->Translate(ctx); } bool DoInit(TContext& ctx, ISource* src) override { - if (!Node->Init(ctx, src)) { + if (!Node_->Init(ctx, src)) { return false; } return true; } TPtr DoClone() const final { - return new TYsonOptionsNode(Pos, AutoConvert, Strict); + return new TYsonOptionsNode(Pos_, AutoConvert_, Strict_); } void DoUpdateState() const override { - State.Set(ENodeState::Const, true); + State_.Set(ENodeState::Const, true); } protected: - TNodePtr Node; - const bool AutoConvert; - const bool Strict; + TNodePtr Node_; + const bool AutoConvert_; + const bool Strict_; }; TNodePtr BuildYsonOptionsNode(TPosition pos, bool autoConvert, bool strict, bool fastYson) { @@ -3310,18 +3310,18 @@ class TDoCall final : public INode { public: TDoCall(TPosition pos, const TNodePtr& node) : INode(pos) - , Node(node) + , Node_(node) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } ISource* GetSource() final { - return FakeSource.Get(); + return FakeSource_.Get(); } bool DoInit(TContext& ctx, ISource* src) final { Y_UNUSED(src); - if (!Node->Init(ctx, FakeSource.Get())) { + if (!Node_->Init(ctx, FakeSource_.Get())) { return false; } @@ -3329,20 +3329,20 @@ public: } TAstNode* Translate(TContext& ctx) const final { - return Node->Translate(ctx); + return Node_->Translate(ctx); } TPtr DoClone() const final { - return new TDoCall(Pos, Node->Clone()); + return new TDoCall(Pos_, Node_->Clone()); } void DoVisitChildren(const TVisitFunc& func, TVisitNodeSet& visited) const final { - Y_DEBUG_ABORT_UNLESS(Node); - Node->VisitTree(func, visited); + Y_DEBUG_ABORT_UNLESS(Node_); + Node_->VisitTree(func, visited); } private: - TNodePtr Node; - TSourcePtr FakeSource; + TNodePtr Node_; + TSourcePtr FakeSource_; }; TNodePtr BuildDoCall(TPosition pos, const TNodePtr& node) { @@ -3442,36 +3442,36 @@ class TTupleResultNode: public INode { public: TTupleResultNode(TNodePtr&& tuple, size_t ensureTupleSize) : INode(tuple->GetPos()) - , Node(std::move(tuple)) - , EnsureTupleSize(ensureTupleSize) + , Node_(std::move(tuple)) + , EnsureTupleSize_(ensureTupleSize) { } bool DoInit(TContext& ctx, ISource* src) override { - if (!Node->Init(ctx, src)) { + if (!Node_->Init(ctx, src)) { return false; } - Node = Y("EnsureTupleSize", Node, Q(ToString(EnsureTupleSize))); + Node_ = Y("EnsureTupleSize", Node_, Q(ToString(EnsureTupleSize_))); return true; } TAstNode* Translate(TContext& ctx) const override { - return Node->Translate(ctx); + return Node_->Translate(ctx); } TPtr DoClone() const final { - return new TTupleResultNode(Node->Clone(), EnsureTupleSize); + return new TTupleResultNode(Node_->Clone(), EnsureTupleSize_); } void DoVisitChildren(const TVisitFunc& func, TVisitNodeSet& visited) const final { - Y_DEBUG_ABORT_UNLESS(Node); - Node->VisitTree(func, visited); + Y_DEBUG_ABORT_UNLESS(Node_); + Node_->VisitTree(func, visited); } protected: - TNodePtr Node; - const size_t EnsureTupleSize; + TNodePtr Node_; + const size_t EnsureTupleSize_; }; TNodePtr BuildTupleResult(TNodePtr tuple, size_t ensureTupleSize) { @@ -3482,8 +3482,8 @@ class TNamedExprReferenceNode: public IProxyNode { public: TNamedExprReferenceNode(TNodePtr parent, const TString& name, TMaybe<size_t> tupleIndex) : IProxyNode(parent->GetPos(), parent) - , Name(name) - , TupleIndex(tupleIndex) + , Name_(name) + , TupleIndex_(tupleIndex) { } @@ -3493,28 +3493,28 @@ public: return false; } - Node = BuildAtom(GetPos(), Name, TNodeFlags::Default); - if (TupleIndex.Defined()) { - Node = Y("Nth", Node, Q(ToString(*TupleIndex))); + Node_ = BuildAtom(GetPos(), Name_, TNodeFlags::Default); + if (TupleIndex_.Defined()) { + Node_ = Y("Nth", Node_, Q(ToString(*TupleIndex_))); } return true; } TAstNode* Translate(TContext& ctx) const override { - YQL_ENSURE(Node, "Init() should be done before Translate()"); - return Node->Translate(ctx); + YQL_ENSURE(Node_, "Init() should be done before Translate()"); + return Node_->Translate(ctx); } TPtr DoClone() const final { // do not clone Inner here - return new TNamedExprReferenceNode(Inner, Name, TupleIndex); + return new TNamedExprReferenceNode(Inner_, Name_, TupleIndex_); } private: - const TString Name; - const TMaybe<size_t> TupleIndex; - TNodePtr Node; + const TString Name_; + const TMaybe<size_t> TupleIndex_; + TNodePtr Node_; }; TNodePtr BuildNamedExprReference(TNodePtr parent, const TString& name, TMaybe<size_t> tupleIndex) { @@ -3526,41 +3526,41 @@ class TNamedExprNode: public IProxyNode { public: TNamedExprNode(TNodePtr parent) : IProxyNode(parent->GetPos(), parent) - , FakeSource(BuildFakeSource(parent->GetPos())) - , Referenced(false) + , FakeSource_(BuildFakeSource(parent->GetPos())) + , Referenced_(false) { } bool DoInit(TContext& ctx, ISource* src) final { - YQL_ENSURE(!Referenced, "Refrence is initialized before named expr itself"); + YQL_ENSURE(!Referenced_, "Refrence is initialized before named expr itself"); Y_UNUSED(src); if (ctx.ValidateUnusedExprs) { - return IProxyNode::DoInit(ctx, FakeSource.Get()); + return IProxyNode::DoInit(ctx, FakeSource_.Get()); } // do actual init in InitReference() return true; } bool InitReference(TContext& ctx) final { - Referenced = true; - return IProxyNode::DoInit(ctx, FakeSource.Get()); + Referenced_ = true; + return IProxyNode::DoInit(ctx, FakeSource_.Get()); } TAstNode* Translate(TContext& ctx) const override { - if (ctx.ValidateUnusedExprs || Referenced) { - return Inner->Translate(ctx); + if (ctx.ValidateUnusedExprs || Referenced_) { + return Inner_->Translate(ctx); } auto unused = BuildQuotedAtom(GetPos(), "unused", TNodeFlags::Default); return unused->Translate(ctx); } TPtr DoClone() const final { - return new TNamedExprNode(Inner->Clone()); + return new TNamedExprNode(Inner_->Clone()); } private: - const TSourcePtr FakeSource; - bool Referenced; + const TSourcePtr FakeSource_; + bool Referenced_; }; TNodePtr BuildNamedExpr(TNodePtr parent) { diff --git a/yql/essentials/sql/v1/node.h b/yql/essentials/sql/v1/node.h index bb4448df2aa..b076d6df6d1 100644 --- a/yql/essentials/sql/v1/node.h +++ b/yql/essentials/sql/v1/node.h @@ -156,7 +156,7 @@ namespace NSQLTranslationV1 { bool IsOverWindowDistinct() const; bool HasState(ENodeState state) const { PrecacheState(); - return State.Test(state); + return State_.Test(state); } virtual bool IsNull() const; @@ -275,13 +275,13 @@ namespace NSQLTranslationV1 { virtual void DoAdd(TPtr node); protected: - TPosition Pos; - TString Label; - TMaybe<TPosition> LabelPos; - bool ImplicitLabel = false; - TMaybe<TPosition> RefPos; - mutable TNodeState State; - bool AsInner = false; + TPosition Pos_; + TString Label_; + TMaybe<TPosition> LabelPos_; + bool ImplicitLabel_ = false; + TMaybe<TPosition> RefPos_; + mutable TNodeState State_; + bool AsInner_ = false; bool DisableSort_ = false; }; typedef INode::TPtr TNodePtr; @@ -290,7 +290,7 @@ namespace NSQLTranslationV1 { public: IProxyNode(TPosition pos, const TNodePtr& parent) : INode(pos) - , Inner(parent) + , Inner_(parent) {} protected: @@ -360,7 +360,7 @@ namespace NSQLTranslationV1 { virtual void DoAdd(TPtr node) override; protected: - const TNodePtr Inner; + const TNodePtr Inner_; }; using TTableHints = TMap<TString, TVector<TNodePtr>>; @@ -391,15 +391,15 @@ namespace NSQLTranslationV1 { TAstNode* Translate(TContext& ctx) const override; const TString& GetContent() const { - return Content; + return Content_; } const TString* GetAtomContent() const override; bool IsOptionalArg() const override; protected: - TString Content; - ui32 Flags; + TString Content_; + ui32 Flags_; bool IsOptionalArg_; void DoUpdateState() const override; @@ -412,7 +412,7 @@ namespace NSQLTranslationV1 { {} TNodePtr DoClone() const final { - return new TAstAtomNodeImpl(Pos, Content, Flags, IsOptionalArg_); + return new TAstAtomNodeImpl(Pos_, Content_, Flags_, IsOptionalArg_); } }; @@ -423,10 +423,10 @@ namespace NSQLTranslationV1 { TAstNode* Translate(TContext& ctx) const override; TPtr DoClone() const final { - return new TAstDirectNode(Node); + return new TAstDirectNode(Node_); } protected: - TAstNode* Node; + TAstNode* Node_; }; class TAstListNode: public INode { @@ -449,8 +449,8 @@ namespace NSQLTranslationV1 { void UpdateStateByListNodes(const TVector<TNodePtr>& Nodes) const; protected: - TVector<TNodePtr> Nodes; - mutable TMaybe<bool> CacheGroupKey; + TVector<TNodePtr> Nodes_; + mutable TMaybe<bool> CacheGroupKey_; }; class TAstListNodeImpl final: public TAstListNode { @@ -484,11 +484,11 @@ namespace NSQLTranslationV1 { void CollectPreaggregateExprs(TContext& ctx, ISource& src, TVector<INode::TPtr>& exprs) override; protected: - TString OpName; - i32 MinArgs; - i32 MaxArgs; - TVector<TNodePtr> Args; - mutable TMaybe<bool> CacheGroupKey; + TString OpName_; + i32 MinArgs_; + i32 MaxArgs_; + TVector<TNodePtr> Args_; + mutable TMaybe<bool> CacheGroupKey_; void DoUpdateState() const override; }; @@ -516,7 +516,7 @@ namespace NSQLTranslationV1 { bool DoInit(TContext& ctx, ISource* src) override; private: - const ui32 ReqArgsCount; + const ui32 ReqArgsCount_; }; class TCallDirectRow final : public TCallNode { @@ -539,9 +539,9 @@ namespace NSQLTranslationV1 { protected: template<class TNodeType> TPtr CallNodeClone() const { - return new TNodeType(GetPos(), OpName, MinArgs, MaxArgs, CloneContainer(Args)); + return new TNodeType(GetPos(), OpName_, MinArgs_, MaxArgs_, CloneContainer(Args_)); } - TString FuncAlias; + TString FuncAlias_; }; using TFunctionConfig = TMap<TString, TNodePtr>; @@ -550,7 +550,7 @@ namespace NSQLTranslationV1 { public: TExternalFunctionConfig(TPosition pos, const TFunctionConfig& config) : TAstListNode(pos) - , Config(config) + , Config_(config) { } @@ -558,7 +558,7 @@ namespace NSQLTranslationV1 { TPtr DoClone() const final; private: - TFunctionConfig Config; + TFunctionConfig Config_; }; class TWinRowNumber final: public TWinAggrEmulation { @@ -588,7 +588,7 @@ namespace NSQLTranslationV1 { TWinNTile(TPosition pos, const TString& opName, i32 minArgs, i32 maxArgs, const TVector<TNodePtr>& args); private: - TSourcePtr FakeSource; + TSourcePtr FakeSource_; }; class TWinLeadLag final: public TWinAggrEmulation { @@ -666,9 +666,9 @@ namespace NSQLTranslationV1 { bool HasNode() const; private: - TMaybe<TString> Explicit; - TNodePtr Node; // atom or evaluation node - TString Repr; + TMaybe<TString> Explicit_; + TNodePtr Node_; // atom or evaluation node + TString Repr_; }; struct TTopicRef { @@ -747,7 +747,7 @@ namespace NSQLTranslationV1 { TIntrusivePtr<TSortSpecification> Clone() const; ~TSortSpecification() {} private: - const TNodePtr CleanOrderExpr; + const TNodePtr CleanOrderExpr_; }; typedef TIntrusivePtr<TSortSpecification> TSortSpecificationPtr; @@ -862,16 +862,16 @@ namespace NSQLTranslationV1 { private: static const TString Empty; - TNodePtr Node; - TString ColumnName; - TNodePtr ColumnExpr; - TString Source; - bool GroupKey = false; - bool Artificial = false; - bool Reliable = true; - bool UseSource = false; - bool UseSourceAsColumn = false; - bool MaybeType = false; + TNodePtr Node_; + TString ColumnName_; + TNodePtr ColumnExpr_; + TString Source_; + bool GroupKey_ = false; + bool Artificial_ = false; + bool Reliable_ = true; + bool UseSource_ = false; + bool UseSourceAsColumn_ = false; + bool MaybeType_ = false; }; class TArgPlaceholderNode final: public INode @@ -888,7 +888,7 @@ namespace NSQLTranslationV1 { bool DoInit(TContext& ctx, ISource* src) override; private: - TString Name; + TString Name_; }; enum class EAggregateMode { @@ -914,7 +914,7 @@ namespace NSQLTranslationV1 { void CollectPreaggregateExprs(TContext& ctx, ISource& src, TVector<INode::TPtr>& exprs) override; const TString* GetSourceName() const override; - const TVector<TNodePtr> Exprs; + const TVector<TNodePtr> Exprs_; }; class TStructNode: public TAstListNode { @@ -924,7 +924,7 @@ namespace NSQLTranslationV1 { bool DoInit(TContext& ctx, ISource* src) override; TNodePtr DoClone() const final; const TVector<TNodePtr>& GetExprs() { - return Exprs; + return Exprs_; } TStructNode* GetStructNode() override; const TStructNode* GetStructNode() const override; @@ -933,9 +933,9 @@ namespace NSQLTranslationV1 { void CollectPreaggregateExprs(TContext& ctx, ISource& src, TVector<INode::TPtr>& exprs) override; const TString* GetSourceName() const override; - const TVector<TNodePtr> Exprs; - const TVector<TNodePtr> Labels; - const bool Ordered; + const TVector<TNodePtr> Exprs_; + const TVector<TNodePtr> Labels_; + const bool Ordered_; }; @@ -956,16 +956,16 @@ namespace NSQLTranslationV1 { const TVector<TNodePtr>& GetScriptArgs() const; TNodePtr BuildOptions() const; private: - TVector<TNodePtr> Args; - const TString* FunctionName; - const TString* ModuleName; - TNodePtr ExternalTypesTuple = nullptr; - TNodePtr RunConfig; - TDeferredAtom TypeConfig; - TDeferredAtom Cpu; - TDeferredAtom ExtraMem; - bool ScriptUdf = false; - TVector<TNodePtr> ScriptArgs; + TVector<TNodePtr> Args_; + const TString* FunctionName_; + const TString* ModuleName_; + TNodePtr ExternalTypesTuple_ = nullptr; + TNodePtr RunConfig_; + TDeferredAtom TypeConfig_; + TDeferredAtom Cpu_; + TDeferredAtom ExtraMem_; + bool ScriptUdf_ = false; + TVector<TNodePtr> ScriptArgs_; }; class IAggregation: public INode { @@ -1004,11 +1004,11 @@ namespace NSQLTranslationV1 { TNodePtr WrapIfOverState(const TNodePtr& input, bool overState, bool many, TContext& ctx) const; virtual TNodePtr GetExtractor(bool many, TContext& ctx) const = 0; - TString Name; - TString Func; - const EAggregateMode AggMode; - TString DistinctKey; - bool IsGeneratedKeyColumn = false; + TString Name_; + TString Func_; + const EAggregateMode AggMode_; + TString DistinctKey_; + bool IsGeneratedKeyColumn_ = false; }; enum class EExprSeat: int { @@ -1042,8 +1042,8 @@ namespace NSQLTranslationV1 { TPtr DoClone() const final; void DoVisitChildren(const TVisitFunc& func, TVisitNodeSet& visited) const final; private: - TVector<TNodePtr> Exprs; - TString Meaning; + TVector<TNodePtr> Exprs_; + TString Meaning_; }; class TLiteralNode: public TAstListNode { @@ -1060,10 +1060,10 @@ namespace NSQLTranslationV1 { TString GetLiteralType() const override; TString GetLiteralValue() const override; protected: - bool Null; - bool Void; - TString Type; - TString Value; + bool Null_; + bool Void_; + TString Type_; + TString Value_; }; class TAsteriskNode: public INode { @@ -1083,7 +1083,7 @@ namespace NSQLTranslationV1 { bool IsIntegerLiteral() const override; TPtr ApplyUnaryOp(TContext& ctx, TPosition pos, const TString& opName) const override; private: - const bool ImplicitType; + const bool ImplicitType_; }; struct TTableArg { @@ -1106,8 +1106,8 @@ namespace NSQLTranslationV1 { TAstNode* Translate(TContext& ctx) const override; private: - ui32 ArgsCount; - TNodePtr Node; + ui32 ArgsCount_; + TNodePtr Node_; }; struct TStringContent { diff --git a/yql/essentials/sql/v1/object_processing.cpp b/yql/essentials/sql/v1/object_processing.cpp index fed6b422195..64b46d612d4 100644 --- a/yql/essentials/sql/v1/object_processing.cpp +++ b/yql/essentials/sql/v1/object_processing.cpp @@ -7,28 +7,28 @@ using namespace NYql; INode::TPtr TObjectProcessorImpl::BuildKeys() const { auto keys = Y("Key"); - keys = L(keys, Q(Y(Q("objectId"), Y("String", BuildQuotedAtom(Pos, ObjectId))))); - keys = L(keys, Q(Y(Q("typeId"), Y("String", BuildQuotedAtom(Pos, TypeId))))); + keys = L(keys, Q(Y(Q("objectId"), Y("String", BuildQuotedAtom(Pos_, ObjectId_))))); + keys = L(keys, Q(Y(Q("typeId"), Y("String", BuildQuotedAtom(Pos_, TypeId_))))); return keys; } TObjectProcessorImpl::TObjectProcessorImpl(TPosition pos, const TString& objectId, const TString& typeId, const TObjectOperatorContext& context) : TBase(pos) , TObjectOperatorContext(context) - , ObjectId(objectId) - , TypeId(typeId) + , ObjectId_(objectId) + , TypeId_(typeId) { } bool TObjectProcessorImpl::DoInit(TContext& ctx, ISource* src) { Y_UNUSED(src); - Scoped->UseCluster(ServiceId, Cluster); + Scoped_->UseCluster(ServiceId, Cluster); auto options = FillFeatures(BuildOptions()); auto keys = BuildKeys(); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, ServiceId), Scoped->WrapCluster(Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, ServiceId), Scoped_->WrapCluster(Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); @@ -36,21 +36,21 @@ bool TObjectProcessorImpl::DoInit(TContext& ctx, ISource* src) { } INode::TPtr TCreateObject::FillFeatures(INode::TPtr options) const { - if (!Features.empty()) { + if (!Features_.empty()) { auto features = Y(); - for (auto&& i : Features) { + for (auto&& i : Features_) { if (i.second.HasNode()) { - features->Add(Q(Y(BuildQuotedAtom(Pos, i.first), i.second.Build()))); + features->Add(Q(Y(BuildQuotedAtom(Pos_, i.first), i.second.Build()))); } else { - features->Add(Q(Y(BuildQuotedAtom(Pos, i.first)))); + features->Add(Q(Y(BuildQuotedAtom(Pos_, i.first)))); } } options->Add(Q(Y(Q("features"), Q(features)))); } - if (!FeaturesToReset.empty()) { + if (!FeaturesToReset_.empty()) { auto reset = Y(); - for (const auto& featureName : FeaturesToReset) { - reset->Add(BuildQuotedAtom(Pos, featureName)); + for (const auto& featureName : FeaturesToReset_) { + reset->Add(BuildQuotedAtom(Pos_, featureName)); } options->Add(Q(Y(Q("resetFeatures"), Q(reset)))); } @@ -71,16 +71,16 @@ bool InitFeatures(TContext& ctx, ISource* src, const std::map<TString, TDeferred } bool TCreateObject::DoInit(TContext& ctx, ISource* src) { - if (!InitFeatures(ctx, src, Features)) { + if (!InitFeatures(ctx, src, Features_)) { return false; } return TObjectProcessorImpl::DoInit(ctx, src); } TObjectOperatorContext::TObjectOperatorContext(TScopedStatePtr scoped) - : Scoped(scoped) - , ServiceId(Scoped->CurrService) - , Cluster(Scoped->CurrCluster) + : Scoped_(scoped) + , ServiceId(Scoped_->CurrService) + , Cluster(Scoped_->CurrCluster) { } diff --git a/yql/essentials/sql/v1/object_processing.h b/yql/essentials/sql/v1/object_processing.h index 3bfe83d5359..df3f6d13975 100644 --- a/yql/essentials/sql/v1/object_processing.h +++ b/yql/essentials/sql/v1/object_processing.h @@ -6,7 +6,7 @@ namespace NSQLTranslationV1 { class TObjectOperatorContext { protected: - TScopedStatePtr Scoped; + TScopedStatePtr Scoped_; public: TString ServiceId; TDeferredAtom Cluster; @@ -17,8 +17,8 @@ public: class TObjectProcessorImpl: public TAstListNode, public TObjectOperatorContext { protected: using TBase = TAstListNode; - TString ObjectId; - TString TypeId; + TString ObjectId_; + TString TypeId_; virtual INode::TPtr BuildOptions() const = 0; virtual INode::TPtr FillFeatures(INode::TPtr options) const = 0; @@ -36,17 +36,17 @@ public: class TCreateObject: public TObjectProcessorImpl { private: using TBase = TObjectProcessorImpl; - std::map<TString, TDeferredAtom> Features; - std::set<TString> FeaturesToReset; + std::map<TString, TDeferredAtom> Features_; + std::set<TString> FeaturesToReset_; protected: - bool ExistingOk = false; - bool ReplaceIfExists = false; + bool ExistingOk_ = false; + bool ReplaceIfExists_ = false; protected: virtual INode::TPtr BuildOptions() const override { TString mode; - if (ExistingOk) { + if (ExistingOk_) { mode = "createObjectIfNotExists"; - } else if (ReplaceIfExists) { + } else if (ReplaceIfExists_) { mode = "createObjectOrReplace"; } else { mode = "createObject"; @@ -60,10 +60,10 @@ public: TCreateObject(TPosition pos, const TString& objectId, const TString& typeId, bool existingOk, bool replaceIfExists, std::map<TString, TDeferredAtom>&& features, std::set<TString>&& featuresToReset, const TObjectOperatorContext& context) : TBase(pos, objectId, typeId, context) - , Features(std::move(features)) - , FeaturesToReset(std::move(featuresToReset)) - , ExistingOk(existingOk) - , ReplaceIfExists(replaceIfExists) { + , Features_(std::move(features)) + , FeaturesToReset_(std::move(featuresToReset)) + , ExistingOk_(existingOk) + , ReplaceIfExists_(replaceIfExists) { } }; @@ -93,7 +93,7 @@ class TDropObject final: public TCreateObject { private: using TBase = TCreateObject; bool MissingOk() const { - return ExistingOk; // Because we were derived from TCreateObject + return ExistingOk_; // Because we were derived from TCreateObject } protected: virtual INode::TPtr BuildOptions() const override { diff --git a/yql/essentials/sql/v1/query.cpp b/yql/essentials/sql/v1/query.cpp index 631aa097b58..c672d9aa90c 100644 --- a/yql/essentials/sql/v1/query.cpp +++ b/yql/essentials/sql/v1/query.cpp @@ -27,65 +27,65 @@ public: TUniqueTableKey(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TDeferredAtom& name, const TViewDescription& view) : ITableKeys(pos) - , Service(service) - , Cluster(cluster) - , Name(name) - , View(view) - , Full(name.GetRepr()) + , Service_(service) + , Cluster_(cluster) + , Name_(name) + , View_(view) + , Full_(name.GetRepr()) { - if (!View.ViewName.empty()) { - Full += ":" + View.ViewName; + if (!View_.ViewName.empty()) { + Full_ += ":" + View_.ViewName; } } bool SetPrimaryView(TContext& ctx, TPosition pos) override { Y_UNUSED(ctx); Y_UNUSED(pos); - View = {"", true}; + View_ = {"", true}; return true; } bool SetViewName(TContext& ctx, TPosition pos, const TString& view) override { Y_UNUSED(ctx); Y_UNUSED(pos); - Full = Name.GetRepr(); - View = {view}; - if (!View.empty()) { - Full = ":" + View.ViewName; + Full_ = Name_.GetRepr(); + View_ = {view}; + if (!View_.empty()) { + Full_ = ":" + View_.ViewName; } return true; } const TString* GetTableName() const override { - return Name.GetLiteral() ? &Full : nullptr; + return Name_.GetLiteral() ? &Full_ : nullptr; } TNodePtr BuildKeys(TContext& ctx, ITableKeys::EBuildKeysMode mode) override { - if (View == TViewDescription{"@"}) { - auto key = Y("TempTable", Name.Build()); + if (View_ == TViewDescription{"@"}) { + auto key = Y("TempTable", Name_.Build()); return key; } bool tableScheme = mode == ITableKeys::EBuildKeysMode::CREATE; - if (tableScheme && !View.empty()) { - ctx.Error(Pos) << "Table view can not be created with CREATE TABLE clause"; + if (tableScheme && !View_.empty()) { + ctx.Error(Pos_) << "Table view can not be created with CREATE TABLE clause"; return nullptr; } - auto path = ctx.GetPrefixedPath(Service, Cluster, Name); + auto path = ctx.GetPrefixedPath(Service_, Cluster_, Name_); if (!path) { return nullptr; } auto key = Y("Key", Q(Y(Q(tableScheme ? "tablescheme" : "table"), Y("String", path)))); - key = AddView(key, View); - if (!ValidateView(GetPos(), ctx, Service, View)) { + key = AddView(key, View_); + if (!ValidateView(GetPos(), ctx, Service_, View_)) { return nullptr; } if (mode == ITableKeys::EBuildKeysMode::INPUT && IsQueryMode(ctx.Settings.Mode) && - Service != KikimrProviderName && - Service != RtmrProviderName && - Service != YdbProviderName) { + Service_ != KikimrProviderName && + Service_ != RtmrProviderName && + Service_ != YdbProviderName) { key = Y("MrTableConcat", key); } @@ -93,11 +93,11 @@ public: } private: - TString Service; - TDeferredAtom Cluster; - TDeferredAtom Name; - TViewDescription View; - TString Full; + TString Service_; + TDeferredAtom Cluster_; + TDeferredAtom Name_; + TViewDescription View_; + TString Full_; }; TNodePtr BuildTableKey(TPosition pos, const TString& service, const TDeferredAtom& cluster, @@ -109,18 +109,18 @@ class TTopicKey: public ITableKeys { public: TTopicKey(TPosition pos, const TDeferredAtom& cluster, const TDeferredAtom& name) : ITableKeys(pos) - , Cluster(cluster) - , Name(name) - , Full(name.GetRepr()) + , Cluster_(cluster) + , Name_(name) + , Full_(name.GetRepr()) { } const TString* GetTableName() const override { - return Name.GetLiteral() ? &Full : nullptr; + return Name_.GetLiteral() ? &Full_ : nullptr; } TNodePtr BuildKeys(TContext& ctx, ITableKeys::EBuildKeysMode) override { - const auto path = ctx.GetPrefixedPath(Service, Cluster, Name); + const auto path = ctx.GetPrefixedPath(Service_, Cluster_, Name_); if (!path) { return nullptr; } @@ -129,11 +129,11 @@ public: } private: - TString Service; - TDeferredAtom Cluster; - TDeferredAtom Name; - TString View; - TString Full; + TString Service_; + TDeferredAtom Cluster_; + TDeferredAtom Name_; + TString View_; + TString Full_; }; TNodePtr BuildTopicKey(TPosition pos, const TDeferredAtom& cluster, const TDeferredAtom& name) { @@ -418,49 +418,49 @@ public: TPrepTableKeys(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TString& func, const TVector<TTableArg>& args) : ITableKeys(pos) - , Service(service) - , Cluster(cluster) - , Func(func) - , Args(args) + , Service_(service) + , Cluster_(cluster) + , Func_(func) + , Args_(args) { } void ExtractTableName(TContext&ctx, TTableArg& arg) { - MakeTableFromExpression(Pos, ctx, arg.Expr, arg.Id); + MakeTableFromExpression(Pos_, ctx, arg.Expr, arg.Id); } TNodePtr BuildKeys(TContext& ctx, ITableKeys::EBuildKeysMode mode) override { if (mode == ITableKeys::EBuildKeysMode::CREATE) { // TODO: allow creation of multiple tables - ctx.Error(Pos) << "Mutiple table creation is not implemented yet"; + ctx.Error(Pos_) << "Mutiple table creation is not implemented yet"; return nullptr; } - TCiString func(Func); + TCiString func(Func_); if (func != "object" && func != "walkfolders") { - for (auto& arg: Args) { + for (auto& arg: Args_) { if (arg.Expr->GetLabel()) { - ctx.Error(Pos) << "Named arguments are not supported for table function " << to_upper(Func); + ctx.Error(Pos_) << "Named arguments are not supported for table function " << to_upper(Func_); return nullptr; } } } if (func == "concat_strict") { auto tuple = Y(); - for (auto& arg: Args) { + for (auto& arg: Args_) { ExtractTableName(ctx, arg); TNodePtr key; if (arg.HasAt) { key = Y("TempTable", arg.Id.Build()); } else { - auto path = ctx.GetPrefixedPath(Service, Cluster, arg.Id); + auto path = ctx.GetPrefixedPath(Service_, Cluster_, arg.Id); if (!path) { return nullptr; } key = Y("Key", Q(Y(Q("table"), Y("String", path)))); key = AddView(key, arg.View); - if (!ValidateView(GetPos(), ctx, Service, arg.View)) { + if (!ValidateView(GetPos(), ctx, Service_, arg.View)) { return nullptr; } } @@ -471,20 +471,20 @@ public: } else if (func == "concat") { auto concat = Y("MrTableConcat"); - for (auto& arg : Args) { + for (auto& arg : Args_) { ExtractTableName(ctx, arg); TNodePtr key; if (arg.HasAt) { key = Y("TempTable", arg.Id.Build()); } else { - auto path = ctx.GetPrefixedPath(Service, Cluster, arg.Id); + auto path = ctx.GetPrefixedPath(Service_, Cluster_, arg.Id); if (!path) { return nullptr; } key = Y("Key", Q(Y(Q("table"), Y("String", path)))); key = AddView(key, arg.View); - if (!ValidateView(GetPos(), ctx, Service, arg.View)) { + if (!ValidateView(GetPos(), ctx, Service_, arg.View)) { return nullptr; } } @@ -501,25 +501,25 @@ public: bool isFilter = func.StartsWith("filter"); size_t minArgs = isRange ? 1 : 2; size_t maxArgs = isRange ? 5 : 4; - if (Args.size() < minArgs || Args.size() > maxArgs) { - ctx.Error(Pos) << Func << " requires from " << minArgs << " to " << maxArgs << " arguments, but got: " << Args.size(); + if (Args_.size() < minArgs || Args_.size() > maxArgs) { + ctx.Error(Pos_) << Func_ << " requires from " << minArgs << " to " << maxArgs << " arguments, but got: " << Args_.size(); return nullptr; } if (ctx.DiscoveryMode) { - ctx.Error(Pos, TIssuesIds::YQL_NOT_ALLOWED_IN_DISCOVERY) << Func << " is not allowed in Discovery mode"; + ctx.Error(Pos_, TIssuesIds::YQL_NOT_ALLOWED_IN_DISCOVERY) << Func_ << " is not allowed in Discovery mode"; return nullptr; } - for (ui32 index=0; index < Args.size(); ++index) { - auto& arg = Args[index]; + for (ui32 index=0; index < Args_.size(); ++index) { + auto& arg = Args_[index]; if (arg.HasAt) { - ctx.Error(Pos) << "Temporary tables are not supported here"; + ctx.Error(Pos_) << "Temporary tables are not supported here"; return nullptr; } if (!arg.View.empty()) { TStringBuilder sb; - sb << "Use the last argument of " << Func << " to specify a VIEW." << Endl; + sb << "Use the last argument of " << Func_ << " to specify a VIEW." << Endl; if (isRange) { sb << "Possible arguments are: prefix, from, to, suffix, view." << Endl; } else if (isFilter) { @@ -529,7 +529,7 @@ public: } sb << "Pass empty string in arguments if you want to skip."; - ctx.Error(Pos) << sb; + ctx.Error(Pos_) << sb; return nullptr; } @@ -538,7 +538,7 @@ public: } } - auto path = ctx.GetPrefixedPath(Service, Cluster, Args[0].Id); + auto path = ctx.GetPrefixedPath(Service_, Cluster_, Args_[0].Id); if (!path) { return nullptr; } @@ -548,65 +548,65 @@ public: if (func.StartsWith("range")) { TDeferredAtom min; TDeferredAtom max; - if (Args.size() > 1) { - min = Args[1].Id; + if (Args_.size() > 1) { + min = Args_[1].Id; } - if (Args.size() > 2) { - max = Args[2].Id; + if (Args_.size() > 2) { + max = Args_[2].Id; } - if (Args.size() > 3) { - suffix = Args[3].Id; + if (Args_.size() > 3) { + suffix = Args_[3].Id; } if (min.Empty() && max.Empty()) { - predicate = BuildLambda(Pos, Y("item"), Y("Bool", Q("true"))); + predicate = BuildLambda(Pos_, Y("item"), Y("Bool", Q("true"))); } else { auto minPred = !min.Empty() ? Y(">=", "item", Y("String", min.Build())) : nullptr; auto maxPred = !max.Empty() ? Y("<=", "item", Y("String", max.Build())) : nullptr; if (!minPred) { - predicate = BuildLambda(Pos, Y("item"), maxPred); + predicate = BuildLambda(Pos_, Y("item"), maxPred); } else if (!maxPred) { - predicate = BuildLambda(Pos, Y("item"), minPred); + predicate = BuildLambda(Pos_, Y("item"), minPred); } else { - predicate = BuildLambda(Pos, Y("item"), Y("And", minPred, maxPred)); + predicate = BuildLambda(Pos_, Y("item"), Y("And", minPred, maxPred)); } } } else { - if (Args.size() > 2) { - suffix = Args[2].Id; + if (Args_.size() > 2) { + suffix = Args_[2].Id; } if (func.StartsWith("regexp")) { if (!ctx.PragmaRegexUseRe2) { - ctx.Warning(Pos, TIssuesIds::CORE_LEGACY_REGEX_ENGINE) << "Legacy regex engine works incorrectly with unicode. Use PRAGMA RegexUseRe2='true';"; + ctx.Warning(Pos_, TIssuesIds::CORE_LEGACY_REGEX_ENGINE) << "Legacy regex engine works incorrectly with unicode. Use PRAGMA RegexUseRe2='true';"; } - auto pattern = Args[1].Id; + auto pattern = Args_[1].Id; auto udf = ctx.PragmaRegexUseRe2 ? Y("Udf", Q("Re2.Grep"), Q(Y(Y("String", pattern.Build()), Y("Null")))): Y("Udf", Q("Pcre.BacktrackingGrep"), Y("String", pattern.Build())); - predicate = BuildLambda(Pos, Y("item"), Y("Apply", udf, "item")); + predicate = BuildLambda(Pos_, Y("item"), Y("Apply", udf, "item")); } else if (func.StartsWith("like")) { - auto pattern = Args[1].Id; + auto pattern = Args_[1].Id; auto convertedPattern = Y("Apply", Y("Udf", Q("Re2.PatternFromLike")), Y("String", pattern.Build())); auto udf = Y("Udf", Q("Re2.Match"), Q(Y(convertedPattern, Y("Null")))); - predicate = BuildLambda(Pos, Y("item"), Y("Apply", udf, "item")); + predicate = BuildLambda(Pos_, Y("item"), Y("Apply", udf, "item")); } else { - predicate = BuildLambda(Pos, Y("item"), Y("Apply", Args[1].Expr, "item")); + predicate = BuildLambda(Pos_, Y("item"), Y("Apply", Args_[1].Expr, "item")); } } range = L(range, predicate); - range = L(range, suffix.Build() ? suffix.Build() : BuildQuotedAtom(Pos, "")); + range = L(range, suffix.Build() ? suffix.Build() : BuildQuotedAtom(Pos_, "")); auto key = Y("Key", Q(Y(Q("table"), range))); - if (Args.size() == maxArgs) { - const auto& lastArg = Args.back(); + if (Args_.size() == maxArgs) { + const auto& lastArg = Args_.back(); if (!lastArg.View.empty()) { - ctx.Error(Pos) << Func << " requires that view should be set as last argument"; + ctx.Error(Pos_) << Func_ << " requires that view should be set as last argument"; return nullptr; } @@ -618,9 +618,9 @@ public: return key; } else if (func == "each" || func == "each_strict") { auto each = Y(func == "each" ? "MrTableEach" : "MrTableEachStrict"); - for (auto& arg : Args) { + for (auto& arg : Args_) { if (arg.HasAt) { - ctx.Error(Pos) << "Temporary tables are not supported here"; + ctx.Error(Pos_) << "Temporary tables are not supported here"; return nullptr; } @@ -630,15 +630,15 @@ public: Y("List", type)), type))))); key = AddView(key, arg.View); - if (!ValidateView(GetPos(), ctx, Service, arg.View)) { + if (!ValidateView(GetPos(), ctx, Service_, arg.View)) { return nullptr; } each = L(each, key); } if (ctx.PragmaUseTablePrefixForEach) { - TStringBuf prefixPath = ctx.GetPrefixPath(Service, Cluster); + TStringBuf prefixPath = ctx.GetPrefixPath(Service_, Cluster_); if (prefixPath) { - each = L(each, BuildQuotedAtom(Pos, TString(prefixPath))); + each = L(each, BuildQuotedAtom(Pos_, TString(prefixPath))); } } return each; @@ -646,25 +646,25 @@ public: else if (func == "folder") { size_t minArgs = 1; size_t maxArgs = 2; - if (Args.size() < minArgs || Args.size() > maxArgs) { - ctx.Error(Pos) << Func << " requires from " << minArgs << " to " << maxArgs << " arguments, but found: " << Args.size(); + if (Args_.size() < minArgs || Args_.size() > maxArgs) { + ctx.Error(Pos_) << Func_ << " requires from " << minArgs << " to " << maxArgs << " arguments, but found: " << Args_.size(); return nullptr; } if (ctx.DiscoveryMode) { - ctx.Error(Pos, TIssuesIds::YQL_NOT_ALLOWED_IN_DISCOVERY) << Func << " is not allowed in Discovery mode"; + ctx.Error(Pos_, TIssuesIds::YQL_NOT_ALLOWED_IN_DISCOVERY) << Func_ << " is not allowed in Discovery mode"; return nullptr; } - for (ui32 index = 0; index < Args.size(); ++index) { - auto& arg = Args[index]; + for (ui32 index = 0; index < Args_.size(); ++index) { + auto& arg = Args_[index]; if (arg.HasAt) { - ctx.Error(Pos) << "Temporary tables are not supported here"; + ctx.Error(Pos_) << "Temporary tables are not supported here"; return nullptr; } if (!arg.View.empty()) { - ctx.Error(Pos) << Func << " doesn't supports views"; + ctx.Error(Pos_) << Func_ << " doesn't supports views"; return nullptr; } @@ -672,8 +672,8 @@ public: } auto folder = Y("MrFolder"); - folder = L(folder, Args[0].Id.Build()); - folder = L(folder, Args.size() > 1 ? Args[1].Id.Build() : BuildQuotedAtom(Pos, "")); + folder = L(folder, Args_[0].Id.Build()); + folder = L(folder, Args_.size() > 1 ? Args_[1].Id.Build() : BuildQuotedAtom(Pos_, "")); return folder; } else if (func == "walkfolders") { @@ -681,7 +681,7 @@ public: const size_t maxPositionalArgs = 2; size_t positionalArgsCnt = 0; - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (!arg.Expr->GetLabel()) { positionalArgsCnt++; } else { @@ -689,7 +689,7 @@ public: } } if (positionalArgsCnt < minPositionalArgs || positionalArgsCnt > maxPositionalArgs) { - ctx.Error(Pos) << Func << " requires from " << minPositionalArgs + ctx.Error(Pos_) << Func_ << " requires from " << minPositionalArgs << " to " << maxPositionalArgs << " positional arguments, but got: " << positionalArgsCnt; return nullptr; @@ -698,20 +698,20 @@ public: constexpr auto walkFoldersModuleName = "walk_folders_module"; ctx.RequiredModules.emplace(walkFoldersModuleName, "/lib/yql/walk_folders.yql"); - auto& rootFolderArg = Args[0]; + auto& rootFolderArg = Args_[0]; if (rootFolderArg.HasAt) { - ctx.Error(Pos) << "Temporary tables are not supported here"; + ctx.Error(Pos_) << "Temporary tables are not supported here"; return nullptr; } if (!rootFolderArg.View.empty()) { - ctx.Error(Pos) << Func << " doesn't supports views"; + ctx.Error(Pos_) << Func_ << " doesn't supports views"; return nullptr; } ExtractTableName(ctx, rootFolderArg); const auto initState = positionalArgsCnt > 1 - ? Args[1].Expr + ? Args_[1].Expr : Y("List", Y("ListType", Y("DataType", Q("String")))); TNodePtr rootAttributes; @@ -719,7 +719,7 @@ public: TNodePtr resolveHandler; TNodePtr diveHandler; TNodePtr postHandler; - for (auto it = Args.begin() + positionalArgsCnt; it != Args.end(); ++it) { + for (auto it = Args_.begin() + positionalArgsCnt; it != Args_.end(); ++it) { auto& arg = *it; const auto label = arg.Expr->GetLabel(); if (label == "RootAttributes") { @@ -739,16 +739,16 @@ public: postHandler = arg.Expr; } else { - ctx.Warning(Pos, DEFAULT_ERROR) << "Unsupported named argument: " - << label << " in " << Func; + ctx.Warning(Pos_, DEFAULT_ERROR) << "Unsupported named argument: " + << label << " in " << Func_; } } if (rootAttributes == nullptr) { - rootAttributes = BuildQuotedAtom(Pos, ""); + rootAttributes = BuildQuotedAtom(Pos_, ""); } if (preHandler != nullptr || postHandler != nullptr) { - const auto makePrePostHandlerType = BuildBind(Pos, walkFoldersModuleName, "MakePrePostHandlersType"); + const auto makePrePostHandlerType = BuildBind(Pos_, walkFoldersModuleName, "MakePrePostHandlersType"); const auto prePostHandlerType = Y("EvaluateType", Y("TypeHandle", Y("Apply", makePrePostHandlerType, Y("TypeOf", initState)))); if (preHandler != nullptr) { @@ -765,13 +765,13 @@ public: postHandler = Y("Void"); } - const auto makeResolveDiveHandlerType = BuildBind(Pos, walkFoldersModuleName, "MakeResolveDiveHandlersType"); + const auto makeResolveDiveHandlerType = BuildBind(Pos_, walkFoldersModuleName, "MakeResolveDiveHandlersType"); const auto resolveDiveHandlerType = Y("EvaluateType", Y("TypeHandle", Y("Apply", makeResolveDiveHandlerType, Y("TypeOf", initState)))); if (resolveHandler == nullptr) { - resolveHandler = BuildBind(Pos, walkFoldersModuleName, "AnyNodeDiveHandler"); + resolveHandler = BuildBind(Pos_, walkFoldersModuleName, "AnyNodeDiveHandler"); } if (diveHandler == nullptr) { - diveHandler = BuildBind(Pos, walkFoldersModuleName, "AnyNodeDiveHandler"); + diveHandler = BuildBind(Pos_, walkFoldersModuleName, "AnyNodeDiveHandler"); } resolveHandler = Y("Callable", resolveDiveHandlerType, resolveHandler); @@ -786,8 +786,8 @@ public: preHandler, resolveHandler, diveHandler, postHandler); } else if (func == "tables") { - if (!Args.empty()) { - ctx.Error(Pos) << Func << " doesn't accept arguments"; + if (!Args_.empty()) { + ctx.Error(Pos_) << Func_ << " doesn't accept arguments"; return nullptr; } @@ -799,15 +799,15 @@ public: auto settings = Y(); //TVector<TNodePtr> settings; size_t argc = 0; - for (ui32 index = 0; index < Args.size(); ++index) { - auto& arg = Args[index]; + for (ui32 index = 0; index < Args_.size(); ++index) { + auto& arg = Args_[index]; if (arg.HasAt) { ctx.Error(arg.Expr->GetPos()) << "Temporary tables are not supported here"; return nullptr; } if (!arg.View.empty()) { - ctx.Error(Pos) << to_upper(Func) << " doesn't supports views"; + ctx.Error(Pos_) << to_upper(Func_) << " doesn't supports views"; return nullptr; } @@ -821,7 +821,7 @@ public: } if (argc != positionalArgs) { - ctx.Error(Pos) << to_upper(Func) << " requires exacty " << positionalArgs << " positional args, but got " << argc; + ctx.Error(Pos_) << to_upper(Func_) << " requires exacty " << positionalArgs << " positional args, but got " << argc; return nullptr; } @@ -829,15 +829,15 @@ public: return result; } - ctx.Error(Pos) << "Unknown table name preprocessor: " << Func; + ctx.Error(Pos_) << "Unknown table name preprocessor: " << Func_; return nullptr; } private: - TString Service; - TDeferredAtom Cluster; - TString Func; - TVector<TTableArg> Args; + TString Service_; + TDeferredAtom Cluster_; + TString Func_; + TVector<TTableArg> Args_; }; TNodePtr BuildTableKeys(TPosition pos, const TString& service, const TDeferredAtom& cluster, @@ -849,20 +849,20 @@ class TInputOptions final : public TAstListNode { public: TInputOptions(TPosition pos, const TTableHints& hints) : TAstListNode(pos) - , Hints(hints) + , Hints_(hints) { } bool DoInit(TContext& ctx, ISource* src) override { - for (auto& hint: Hints) { + for (auto& hint: Hints_) { TString hintName = hint.first; - TMaybe<TIssue> normalizeError = NormalizeName(Pos, hintName); + TMaybe<TIssue> normalizeError = NormalizeName(Pos_, hintName); if (!normalizeError.Empty()) { ctx.Error() << normalizeError->GetMessage(); ctx.IncrementMonCounter("sql_errors", "NormalizeHintError"); return false; } - TNodePtr option = Y(BuildQuotedAtom(Pos, hintName)); + TNodePtr option = Y(BuildQuotedAtom(Pos_, hintName)); for (auto& x : hint.second) { if (!x->Init(ctx, src)) { return false; @@ -871,7 +871,7 @@ public: option = L(option, x); } - Nodes.push_back(Q(option)); + Nodes_.push_back(Q(option)); } return true; } @@ -881,7 +881,7 @@ public: } private: - TTableHints Hints; + TTableHints Hints_; }; TNodePtr BuildInputOptions(TPosition pos, const TTableHints& hints) { @@ -896,8 +896,8 @@ class TIntoTableOptions : public TAstListNode { public: TIntoTableOptions(TPosition pos, const TVector<TString>& columns, const TTableHints& hints) : TAstListNode(pos) - , Columns(columns) - , Hints(hints) + , Columns_(columns) + , Hints_(hints) { } @@ -906,22 +906,22 @@ public: Y_UNUSED(src); TNodePtr options = Y(); - for (const auto& column: Columns) { + for (const auto& column: Columns_) { options->Add(Q(column)); } - if (Columns) { + if (Columns_) { Add(Q(Y(Q("erase_columns"), Q(options)))); } - for (const auto& hint : Hints) { + for (const auto& hint : Hints_) { TString hintName = hint.first; - TMaybe<TIssue> normalizeError = NormalizeName(Pos, hintName); + TMaybe<TIssue> normalizeError = NormalizeName(Pos_, hintName); if (!normalizeError.Empty()) { ctx.Error() << normalizeError->GetMessage(); ctx.IncrementMonCounter("sql_errors", "NormalizeHintError"); return false; } - TNodePtr option = Y(BuildQuotedAtom(Pos, hintName)); + TNodePtr option = Y(BuildQuotedAtom(Pos_, hintName)); for (auto& x : hint.second) { if (!x->Init(ctx, src)) { return false; @@ -935,12 +935,12 @@ public: } TNodePtr DoClone() const final { - return new TIntoTableOptions(GetPos(), Columns, CloneContainer(Hints)); + return new TIntoTableOptions(GetPos(), Columns_, CloneContainer(Hints_)); } private: - TVector<TString> Columns; - TTableHints Hints; + TVector<TString> Columns_; + TTableHints Hints_; }; TNodePtr BuildIntoTableOptions(TPosition pos, const TVector<TString>& eraseColumns, const TTableHints& hints) { @@ -951,31 +951,31 @@ class TInputTablesNode final : public TAstListNode { public: TInputTablesNode(TPosition pos, const TTableList& tables, bool inSubquery, TScopedStatePtr scoped) : TAstListNode(pos) - , Tables(tables) - , InSubquery(inSubquery) - , Scoped(scoped) + , Tables_(tables) + , InSubquery_(inSubquery) + , Scoped_(scoped) { } bool DoInit(TContext& ctx, ISource* src) override { THashSet<TString> processedTables; - for (auto& tr: Tables) { + for (auto& tr: Tables_) { if (!processedTables.insert(tr.RefName).second) { continue; } - Scoped->UseCluster(tr.Service, tr.Cluster); + Scoped_->UseCluster(tr.Service, tr.Cluster); auto tableKeys = tr.Keys->GetTableKeys(); auto keys = tableKeys->BuildKeys(ctx, ITableKeys::EBuildKeysMode::INPUT); if (!keys || !keys->Init(ctx, src)) { return false; } auto fields = Y("Void"); - auto source = Y("DataSource", BuildQuotedAtom(Pos, tr.Service), Scoped->WrapCluster(tr.Cluster, ctx)); + auto source = Y("DataSource", BuildQuotedAtom(Pos_, tr.Service), Scoped_->WrapCluster(tr.Cluster, ctx)); auto options = tr.Options ? Q(tr.Options) : Q(Y()); Add(Y("let", "x", keys->Y(TString(ReadName), "world", source, keys, fields, options))); - if (IsIn({KikimrProviderName, YdbProviderName}, tr.Service) && InSubquery) { + if (IsIn({KikimrProviderName, YdbProviderName}, tr.Service) && InSubquery_) { ctx.Error() << "Using of system '" << tr.Service << "' is not allowed in SUBQUERY"; return false; } @@ -994,9 +994,9 @@ public: } private: - TTableList Tables; - const bool InSubquery; - TScopedStatePtr Scoped; + TTableList Tables_; + const bool InSubquery_; + TScopedStatePtr Scoped_; }; TNodePtr BuildInputTables(TPosition pos, const TTableList& tables, bool inSubquery, TScopedStatePtr scoped) { @@ -1007,37 +1007,37 @@ class TCreateTableNode final : public TAstListNode { public: TCreateTableNode(TPosition pos, const TTableRef& tr, bool existingOk, bool replaceIfExists, const TCreateTableParameters& params, TSourcePtr values, TScopedStatePtr scoped) : TAstListNode(pos) - , Table(tr) - , Params(params) - , ExistingOk(existingOk) - , ReplaceIfExists(replaceIfExists) - , Values(std::move(values)) - , Scoped(scoped) + , Table_(tr) + , Params_(params) + , ExistingOk_(existingOk) + , ReplaceIfExists_(replaceIfExists) + , Values_(std::move(values)) + , Scoped_(scoped) { - scoped->UseCluster(Table.Service, Table.Cluster); + scoped->UseCluster(Table_.Service, Table_.Cluster); } bool DoInit(TContext& ctx, ISource* src) override { - auto keys = Table.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); + auto keys = Table_.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); if (!keys || !keys->Init(ctx, src)) { return false; } - if (!Params.PkColumns.empty() - || !Params.PartitionByColumns.empty() - || !Params.OrderByColumns.empty() - || !Params.Indexes.empty() - || !Params.Changefeeds.empty()) + if (!Params_.PkColumns.empty() + || !Params_.PartitionByColumns.empty() + || !Params_.OrderByColumns.empty() + || !Params_.Indexes.empty() + || !Params_.Changefeeds.empty()) { THashSet<TString> columnsSet; - for (auto& col : Params.Columns) { + for (auto& col : Params_.Columns) { columnsSet.insert(col.Name); } - const bool allowUndefinedColumns = (Values != nullptr) && columnsSet.empty(); + const bool allowUndefinedColumns = (Values_ != nullptr) && columnsSet.empty(); THashSet<TString> pkColumns; - for (auto& keyColumn : Params.PkColumns) { + for (auto& keyColumn : Params_.PkColumns) { if (!allowUndefinedColumns && !columnsSet.contains(keyColumn.Name)) { ctx.Error(keyColumn.Pos) << "Undefined column: " << keyColumn.Name; return false; @@ -1047,13 +1047,13 @@ public: return false; } } - for (auto& keyColumn : Params.PartitionByColumns) { + for (auto& keyColumn : Params_.PartitionByColumns) { if (!allowUndefinedColumns && !columnsSet.contains(keyColumn.Name)) { ctx.Error(keyColumn.Pos) << "Undefined column: " << keyColumn.Name; return false; } } - for (auto& keyColumn : Params.OrderByColumns) { + for (auto& keyColumn : Params_.OrderByColumns) { if (!allowUndefinedColumns && !columnsSet.contains(keyColumn.first.Name)) { ctx.Error(keyColumn.first.Pos) << "Undefined column: " << keyColumn.first.Name; return false; @@ -1061,7 +1061,7 @@ public: } THashSet<TString> indexNames; - for (const auto& index : Params.Indexes) { + for (const auto& index : Params_.Indexes) { if (!indexNames.insert(index.Name.Name).second) { ctx.Error(index.Name.Pos) << "Index " << index.Name.Name << " must be defined once"; return false; @@ -1083,7 +1083,7 @@ public: } THashSet<TString> cfNames; - for (const auto& cf : Params.Changefeeds) { + for (const auto& cf : Params_.Changefeeds) { if (!cfNames.insert(cf.Name.Name).second) { ctx.Error(cf.Name.Pos) << "Changefeed " << cf.Name.Name << " must be defined once"; return false; @@ -1092,16 +1092,16 @@ public: } auto opts = Y(); - if (Table.Options) { - if (!Table.Options->Init(ctx, src)) { + if (Table_.Options) { + if (!Table_.Options->Init(ctx, src)) { return false; } - opts = Table.Options; + opts = Table_.Options; } - if (ExistingOk) { + if (ExistingOk_) { opts = L(opts, Q(Y(Q("mode"), Q("create_if_not_exists")))); - } else if (ReplaceIfExists) { + } else if (ReplaceIfExists_) { opts = L(opts, Q(Y(Q("mode"), Q("create_or_replace")))); } else { opts = L(opts, Q(Y(Q("mode"), Q("create")))); @@ -1109,9 +1109,9 @@ public: THashSet<TString> columnFamilyNames; - if (Params.ColumnFamilies) { + if (Params_.ColumnFamilies) { auto columnFamilies = Y(); - for (const auto& family : Params.ColumnFamilies) { + for (const auto& family : Params_.ColumnFamilies) { if (!columnFamilyNames.insert(family.Name.Name).second) { ctx.Error(family.Name.Pos) << "Family " << family.Name.Name << " specified more than once"; return false; @@ -1136,9 +1136,9 @@ public: THashSet<TString> columnsWithDefaultValue; auto columnsDefaultValueSettings = Y(); - for (auto& col : Params.Columns) { + for (auto& col : Params_.Columns) { auto columnDesc = Y(); - columnDesc = L(columnDesc, BuildQuotedAtom(Pos, col.Name)); + columnDesc = L(columnDesc, BuildQuotedAtom(Pos_, col.Name)); auto type = col.Type; if (type) { @@ -1191,63 +1191,63 @@ public: opts = L(opts, Q(Y(Q("columnsDefaultValues"), Q(columnsDefaultValueSettings)))); } - if (Table.Service == RtmrProviderName) { - if (!Params.PkColumns.empty() && !Params.PartitionByColumns.empty()) { + if (Table_.Service == RtmrProviderName) { + if (!Params_.PkColumns.empty() && !Params_.PartitionByColumns.empty()) { ctx.Error() << "Only one of PRIMARY KEY or PARTITION BY constraints may be specified"; return false; } } else { - if (!Params.OrderByColumns.empty()) { + if (!Params_.OrderByColumns.empty()) { ctx.Error() << "ORDER BY is supported only for " << RtmrProviderName << " provider"; return false; } } - if (!Params.PkColumns.empty()) { + if (!Params_.PkColumns.empty()) { auto primaryKey = Y(); - for (auto& col : Params.PkColumns) { + for (auto& col : Params_.PkColumns) { primaryKey = L(primaryKey, BuildQuotedAtom(col.Pos, col.Name)); } opts = L(opts, Q(Y(Q("primarykey"), Q(primaryKey)))); - if (!Params.OrderByColumns.empty()) { + if (!Params_.OrderByColumns.empty()) { ctx.Error() << "PRIMARY KEY cannot be used with ORDER BY, use PARTITION BY instead"; return false; } } - if (!Params.PartitionByColumns.empty()) { + if (!Params_.PartitionByColumns.empty()) { auto partitionBy = Y(); - for (auto& col : Params.PartitionByColumns) { + for (auto& col : Params_.PartitionByColumns) { partitionBy = L(partitionBy, BuildQuotedAtom(col.Pos, col.Name)); } opts = L(opts, Q(Y(Q("partitionby"), Q(partitionBy)))); } - if (!Params.OrderByColumns.empty()) { + if (!Params_.OrderByColumns.empty()) { auto orderBy = Y(); - for (auto& col : Params.OrderByColumns) { + for (auto& col : Params_.OrderByColumns) { orderBy = L(orderBy, Q(Y(BuildQuotedAtom(col.first.Pos, col.first.Name), col.second ? Q("1") : Q("0")))); } opts = L(opts, Q(Y(Q("orderby"), Q(orderBy)))); } - for (const auto& index : Params.Indexes) { + for (const auto& index : Params_.Indexes) { const auto& desc = CreateIndexDesc(index, ETableSettingsParsingMode::Create, *this); opts = L(opts, Q(Y(Q("index"), Q(desc)))); } - for (const auto& cf : Params.Changefeeds) { + for (const auto& cf : Params_.Changefeeds) { const auto& desc = CreateChangefeedDesc(cf, *this); opts = L(opts, Q(Y(Q("changefeed"), Q(desc)))); } - if (Params.TableSettings.IsSet()) { + if (Params_.TableSettings.IsSet()) { opts = L(opts, Q(Y(Q("tableSettings"), Q( - CreateTableSettings(Params.TableSettings, ETableSettingsParsingMode::Create, *this) + CreateTableSettings(Params_.TableSettings, ETableSettingsParsingMode::Create, *this) )))); } - switch (Params.TableType) { + switch (Params_.TableType) { case ETableType::TableStore: opts = L(opts, Q(Y(Q("tableType"), Q("tableStore")))); break; @@ -1258,24 +1258,24 @@ public: break; } - if (Params.Temporary) { + if (Params_.Temporary) { opts = L(opts, Q(Y(Q("temporary")))); } TNodePtr node = nullptr; - if (Values) { - if (!Values->Init(ctx, nullptr)) { + if (Values_) { + if (!Values_->Init(ctx, nullptr)) { return false; } TTableList tableList; - Values->GetInputTables(tableList); - auto valuesSource = Values.Get(); - auto values = Values->Build(ctx); - if (!Values) { + Values_->GetInputTables(tableList); + auto valuesSource = Values_.Get(); + auto values = Values_->Build(ctx); + if (!Values_) { return false; } - TNodePtr inputTables(BuildInputTables(Pos, tableList, false, Scoped)); + TNodePtr inputTables(BuildInputTables(Pos_, tableList, false, Scoped_)); if (!inputTables->Init(ctx, valuesSource)) { return false; } @@ -1287,7 +1287,7 @@ public: } auto write = Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Table.Service), Scoped->WrapCluster(Table.Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Table_.Service), Scoped_->WrapCluster(Table_.Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, "values", Q(opts))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ); @@ -1304,12 +1304,12 @@ public: return {}; } private: - const TTableRef Table; - const TCreateTableParameters Params; - const bool ExistingOk; - const bool ReplaceIfExists; - const TSourcePtr Values; - TScopedStatePtr Scoped; + const TTableRef Table_; + const TCreateTableParameters Params_; + const bool ExistingOk_; + const bool ReplaceIfExists_; + const TSourcePtr Values_; + TScopedStatePtr Scoped_; }; TNodePtr BuildCreateTable(TPosition pos, const TTableRef& tr, bool existingOk, bool replaceIfExists, const TCreateTableParameters& params, TSourcePtr values, TScopedStatePtr scoped) @@ -1340,30 +1340,30 @@ public: TScopedStatePtr scoped ) : TAstListNode(pos) - , Params(params) - , Scoped(scoped) - , Cluster(cluster) - , Service(service) + , Params_(params) + , Scoped_(scoped) + , Cluster_(cluster) + , Service_(service) { scoped->UseCluster(service, cluster); } bool DoInit(TContext& ctx, ISource* src) override { - TNodePtr cluster = Scoped->WrapCluster(Cluster, ctx); + TNodePtr cluster = Scoped_->WrapCluster(Cluster_, ctx); auto options = Y(Q(Y(Q("mode"), Q("alterDatabase")))); - if (Params.Owner.has_value()) { - options = L(options, Q(Y(Q("owner"), Params.Owner.value().Build()))); + if (Params_.Owner.has_value()) { + options = L(options, Q(Y(Q("owner"), Params_.Owner.value().Build()))); } - if (!InitDatabaseSettings(ctx, src, Params.DatabaseSettings)) { + if (!InitDatabaseSettings(ctx, src, Params_.DatabaseSettings)) { return false; } - AddDatabaseSettings(options, Params.DatabaseSettings); + AddDatabaseSettings(options, Params_.DatabaseSettings); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Service), cluster)), - Y("let", "world", Y(TString(WriteName), "world", "sink", Y("Key", Q(Y(Q("databasePath"), Y("String", Params.DbPath.Build())))), Y("Void"), Q(options))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Service_), cluster)), + Y("let", "world", Y(TString(WriteName), "world", "sink", Y("Key", Q(Y(Q("databasePath"), Y("String", Params_.DbPath.Build())))), Y("Void"), Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); @@ -1375,14 +1375,14 @@ public: } private: - const TAlterDatabaseParameters Params; - TScopedStatePtr Scoped; - TDeferredAtom Cluster; - TString Service; + const TAlterDatabaseParameters Params_; + TScopedStatePtr Scoped_; + TDeferredAtom Cluster_; + TString Service_; void AddDatabaseSettings(TNodePtr& options, const THashMap<TString, TNodePtr>& settings) { for (const auto& [setting, value] : settings) { - options = L(options, Q(Y(BuildQuotedAtom(Pos, setting), value))); + options = L(options, Q(Y(BuildQuotedAtom(Pos_, setting), value))); } } @@ -1409,26 +1409,26 @@ class TAlterTableNode final : public TAstListNode { public: TAlterTableNode(TPosition pos, const TTableRef& tr, const TAlterTableParameters& params, TScopedStatePtr scoped) : TAstListNode(pos) - , Table(tr) - , Params(params) - , Scoped(scoped) + , Table_(tr) + , Params_(params) + , Scoped_(scoped) { - scoped->UseCluster(Table.Service, Table.Cluster); + scoped->UseCluster(Table_.Service, Table_.Cluster); } bool DoInit(TContext& ctx, ISource* src) override { - auto keys = Table.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); + auto keys = Table_.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); if (!keys || !keys->Init(ctx, src)) { return false; } auto actions = Y(); - if (Params.AddColumns) { + if (Params_.AddColumns) { auto columns = Y(); - for (auto& col : Params.AddColumns) { + for (auto& col : Params_.AddColumns) { auto columnDesc = Y(); - columnDesc = L(columnDesc, BuildQuotedAtom(Pos, col.Name)); + columnDesc = L(columnDesc, BuildQuotedAtom(Pos_, col.Name)); auto type = col.Type; if (col.Nullable) { type = Y("AsOptionalType", type); @@ -1465,20 +1465,20 @@ public: actions = L(actions, Q(Y(Q("addColumns"), Q(columns)))); } - if (Params.DropColumns) { + if (Params_.DropColumns) { auto columns = Y(); - for (auto& colName : Params.DropColumns) { - columns = L(columns, BuildQuotedAtom(Pos, colName)); + for (auto& colName : Params_.DropColumns) { + columns = L(columns, BuildQuotedAtom(Pos_, colName)); } actions = L(actions, Q(Y(Q("dropColumns"), Q(columns)))); } - if (Params.AlterColumns) { + if (Params_.AlterColumns) { auto columns = Y(); - for (auto& col : Params.AlterColumns) { + for (auto& col : Params_.AlterColumns) { if (col.TypeOfChange == TColumnSchema::ETypeOfChange::DropNotNullConstraint) { auto columnDesc = Y(); - columnDesc = L(columnDesc, BuildQuotedAtom(Pos, col.Name)); + columnDesc = L(columnDesc, BuildQuotedAtom(Pos_, col.Name)); auto columnConstraints = Y(); columnConstraints = L(columnConstraints, Q(Y(Q("drop_not_null")))); @@ -1488,7 +1488,7 @@ public: // todo flown4qqqq } else if (col.TypeOfChange == TColumnSchema::ETypeOfChange::SetFamily) { auto columnDesc = Y(); - columnDesc = L(columnDesc, BuildQuotedAtom(Pos, col.Name)); + columnDesc = L(columnDesc, BuildQuotedAtom(Pos_, col.Name)); auto familiesDesc = Y(); for (const auto& family : col.Families) { familiesDesc = L(familiesDesc, BuildQuotedAtom(family.Pos, family.Name)); @@ -1499,15 +1499,15 @@ public: } else if (col.TypeOfChange == TColumnSchema::ETypeOfChange::Nothing) { // do nothing } else { - ctx.Error(Pos) << " action is not supported"; + ctx.Error(Pos_) << " action is not supported"; } } actions = L(actions, Q(Y(Q("alterColumns"), Q(columns)))); } - if (Params.AddColumnFamilies) { + if (Params_.AddColumnFamilies) { auto columnFamilies = Y(); - for (const auto& family : Params.AddColumnFamilies) { + for (const auto& family : Params_.AddColumnFamilies) { auto familyDesc = Y(); familyDesc = L(familyDesc, Q(Y(Q("name"), BuildQuotedAtom(family.Name.Pos, family.Name.Name)))); if (family.Data) { @@ -1524,9 +1524,9 @@ public: actions = L(actions, Q(Y(Q("addColumnFamilies"), Q(columnFamilies)))); } - if (Params.AlterColumnFamilies) { + if (Params_.AlterColumnFamilies) { auto columnFamilies = Y(); - for (const auto& family : Params.AlterColumnFamilies) { + for (const auto& family : Params_.AlterColumnFamilies) { auto familyDesc = Y(); familyDesc = L(familyDesc, Q(Y(Q("name"), BuildQuotedAtom(family.Name.Pos, family.Name.Name)))); if (family.Data) { @@ -1543,30 +1543,30 @@ public: actions = L(actions, Q(Y(Q("alterColumnFamilies"), Q(columnFamilies)))); } - if (Params.TableSettings.IsSet()) { + if (Params_.TableSettings.IsSet()) { actions = L(actions, Q(Y(Q("setTableSettings"), Q( - CreateTableSettings(Params.TableSettings, ETableSettingsParsingMode::Alter, *this) + CreateTableSettings(Params_.TableSettings, ETableSettingsParsingMode::Alter, *this) )))); } - for (const auto& index : Params.AddIndexes) { + for (const auto& index : Params_.AddIndexes) { const auto& desc = CreateIndexDesc(index, ETableSettingsParsingMode::Alter, *this); actions = L(actions, Q(Y(Q("addIndex"), Q(desc)))); } - for (const auto& index : Params.AlterIndexes) { + for (const auto& index : Params_.AlterIndexes) { const auto& desc = CreateAlterIndex(index, *this); actions = L(actions, Q(Y(Q("alterIndex"), Q(desc)))); } - for (const auto& id : Params.DropIndexes) { + for (const auto& id : Params_.DropIndexes) { auto indexName = BuildQuotedAtom(id.Pos, id.Name); actions = L(actions, Q(Y(Q("dropIndex"), indexName))); } - if (Params.RenameIndexTo) { - auto src = BuildQuotedAtom(Params.RenameIndexTo->first.Pos, Params.RenameIndexTo->first.Name); - auto dst = BuildQuotedAtom(Params.RenameIndexTo->second.Pos, Params.RenameIndexTo->second.Name); + if (Params_.RenameIndexTo) { + auto src = BuildQuotedAtom(Params_.RenameIndexTo->first.Pos, Params_.RenameIndexTo->first.Name); + auto dst = BuildQuotedAtom(Params_.RenameIndexTo->second.Pos, Params_.RenameIndexTo->second.Name); auto desc = Y(); @@ -1576,23 +1576,23 @@ public: actions = L(actions, Q(Y(Q("renameIndexTo"), Q(desc)))); } - if (Params.RenameTo) { - auto destination = ctx.GetPrefixedPath(Scoped->CurrService, Scoped->CurrCluster, - TDeferredAtom(Params.RenameTo->Pos, Params.RenameTo->Name)); + if (Params_.RenameTo) { + auto destination = ctx.GetPrefixedPath(Scoped_->CurrService, Scoped_->CurrCluster, + TDeferredAtom(Params_.RenameTo->Pos, Params_.RenameTo->Name)); actions = L(actions, Q(Y(Q("renameTo"), destination))); } - for (const auto& cf : Params.AddChangefeeds) { + for (const auto& cf : Params_.AddChangefeeds) { const auto& desc = CreateChangefeedDesc(cf, *this); actions = L(actions, Q(Y(Q("addChangefeed"), Q(desc)))); } - for (const auto& cf : Params.AlterChangefeeds) { + for (const auto& cf : Params_.AlterChangefeeds) { const auto& desc = CreateChangefeedDesc(cf, *this); actions = L(actions, Q(Y(Q("alterChangefeed"), Q(desc)))); } - for (const auto& id : Params.DropChangefeeds) { + for (const auto& id : Params_.DropChangefeeds) { const auto name = BuildQuotedAtom(id.Pos, id.Name); actions = L(actions, Q(Y(Q("dropChangefeed"), name))); } @@ -1602,7 +1602,7 @@ public: opts = L(opts, Q(Y(Q("mode"), Q("alter")))); opts = L(opts, Q(Y(Q("actions"), Q(actions)))); - switch (Params.TableType) { + switch (Params_.TableType) { case ETableType::TableStore: opts = L(opts, Q(Y(Q("tableType"), Q("tableStore")))); break; @@ -1614,7 +1614,7 @@ public: } Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Table.Service), Scoped->WrapCluster(Table.Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Table_.Service), Scoped_->WrapCluster(Table_.Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(opts))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); @@ -1625,9 +1625,9 @@ public: return {}; } private: - TTableRef Table; - const TAlterTableParameters Params; - TScopedStatePtr Scoped; + TTableRef Table_; + const TAlterTableParameters Params_; + TScopedStatePtr Scoped_; }; TNodePtr BuildAlterTable(TPosition pos, const TTableRef& tr, const TAlterTableParameters& params, TScopedStatePtr scoped) @@ -1639,27 +1639,27 @@ class TDropTableNode final : public TAstListNode { public: TDropTableNode(TPosition pos, const TTableRef& tr, bool missingOk, ETableType tableType, TScopedStatePtr scoped) : TAstListNode(pos) - , Table(tr) - , TableType(tableType) - , Scoped(scoped) - , MissingOk(missingOk) + , Table_(tr) + , TableType_(tableType) + , Scoped_(scoped) + , MissingOk_(missingOk) { - FakeSource = BuildFakeSource(pos); - scoped->UseCluster(Table.Service, Table.Cluster); + FakeSource_ = BuildFakeSource(pos); + scoped->UseCluster(Table_.Service, Table_.Cluster); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - auto keys = Table.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::DROP); - if (!keys || !keys->Init(ctx, FakeSource.Get())) { + auto keys = Table_.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::DROP); + if (!keys || !keys->Init(ctx, FakeSource_.Get())) { return false; } auto opts = Y(); - opts = L(opts, Q(Y(Q("mode"), Q(MissingOk ? "drop_if_exists" : "drop")))); + opts = L(opts, Q(Y(Q("mode"), Q(MissingOk_ ? "drop_if_exists" : "drop")))); - switch (TableType) { + switch (TableType_) { case ETableType::TableStore: opts = L(opts, Q(Y(Q("tableType"), Q("tableStore")))); break; @@ -1671,23 +1671,23 @@ public: } Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Table.Service), Scoped->WrapCluster(Table.Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Table_.Service), Scoped_->WrapCluster(Table_.Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(opts))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); - return TAstListNode::DoInit(ctx, FakeSource.Get()); + return TAstListNode::DoInit(ctx, FakeSource_.Get()); } TPtr DoClone() const final { return {}; } private: - TTableRef Table; - ETableType TableType; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; - const bool MissingOk; + TTableRef Table_; + ETableType TableType_; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; + const bool MissingOk_; }; TNodePtr BuildDropTable(TPosition pos, const TTableRef& tr, bool missingOk, ETableType tableType, TScopedStatePtr scoped) { @@ -1728,23 +1728,23 @@ class TCreateTopicNode final : public TAstListNode { public: TCreateTopicNode(TPosition pos, const TTopicRef& tr, const TCreateTopicParameters& params, TScopedStatePtr scoped) : TAstListNode(pos) - , Topic(tr) - , Params(params) - , Scoped(scoped) + , Topic_(tr) + , Params_(params) + , Scoped_(scoped) { - scoped->UseCluster(TString(KikimrProviderName), Topic.Cluster); + scoped->UseCluster(TString(KikimrProviderName), Topic_.Cluster); } bool DoInit(TContext& ctx, ISource* src) override { - auto keys = Topic.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); + auto keys = Topic_.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); if (!keys || !keys->Init(ctx, src)) { return false; } - if (!Params.Consumers.empty()) + if (!Params_.Consumers.empty()) { THashSet<TString> consumerNames; - for (const auto& consumer : Params.Consumers) { + for (const auto& consumer : Params_.Consumers) { if (!consumerNames.insert(consumer.Name.Name).second) { ctx.Error(consumer.Name.Pos) << "Consumer " << consumer.Name.Name << " defined more than once"; return false; @@ -1753,19 +1753,19 @@ public: } auto opts = Y(); - TString mode = Params.ExistingOk ? "create_if_not_exists" : "create"; + TString mode = Params_.ExistingOk ? "create_if_not_exists" : "create"; opts = L(opts, Q(Y(Q("mode"), Q(mode)))); - for (const auto& consumer : Params.Consumers) { + for (const auto& consumer : Params_.Consumers) { const auto& desc = CreateConsumerDesc(consumer, *this, false); opts = L(opts, Q(Y(Q("consumer"), Q(desc)))); } - if (Params.TopicSettings.IsSet()) { + if (Params_.TopicSettings.IsSet()) { auto settings = Y(); #define INSERT_TOPIC_SETTING(NAME) \ - if (const auto& NAME##Val = Params.TopicSettings.NAME) { \ + if (const auto& NAME##Val = Params_.TopicSettings.NAME) { \ if (NAME##Val.IsSet()) { \ settings = L(settings, Q(Y(Q(Y_STRINGIZE(set##NAME)), NAME##Val.GetValueSet()))); \ } else { \ @@ -1792,8 +1792,8 @@ public: Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, TString(KikimrProviderName)), - Scoped->WrapCluster(Topic.Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, TString(KikimrProviderName)), + Scoped_->WrapCluster(Topic_.Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(opts))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); @@ -1805,9 +1805,9 @@ public: return {}; } private: - const TTopicRef Topic; - const TCreateTopicParameters Params; - TScopedStatePtr Scoped; + const TTopicRef Topic_; + const TCreateTopicParameters Params_; + TScopedStatePtr Scoped_; }; TNodePtr BuildCreateTopic( @@ -1820,43 +1820,43 @@ class TAlterTopicNode final : public TAstListNode { public: TAlterTopicNode(TPosition pos, const TTopicRef& tr, const TAlterTopicParameters& params, TScopedStatePtr scoped) : TAstListNode(pos) - , Topic(tr) - , Params(params) - , Scoped(scoped) + , Topic_(tr) + , Params_(params) + , Scoped_(scoped) { - scoped->UseCluster(TString(KikimrProviderName), Topic.Cluster); + scoped->UseCluster(TString(KikimrProviderName), Topic_.Cluster); } bool DoInit(TContext& ctx, ISource* src) override { - auto keys = Topic.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); + auto keys = Topic_.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::CREATE); if (!keys || !keys->Init(ctx, src)) { return false; } - if (!Params.AddConsumers.empty()) + if (!Params_.AddConsumers.empty()) { THashSet<TString> consumerNames; - for (const auto& consumer : Params.AddConsumers) { + for (const auto& consumer : Params_.AddConsumers) { if (!consumerNames.insert(consumer.Name.Name).second) { ctx.Error(consumer.Name.Pos) << "Consumer " << consumer.Name.Name << " defined more than once"; return false; } } } - if (!Params.AlterConsumers.empty()) + if (!Params_.AlterConsumers.empty()) { THashSet<TString> consumerNames; - for (const auto& [_, consumer] : Params.AlterConsumers) { + for (const auto& [_, consumer] : Params_.AlterConsumers) { if (!consumerNames.insert(consumer.Name.Name).second) { ctx.Error(consumer.Name.Pos) << "Consumer " << consumer.Name.Name << " altered more than once"; return false; } } } - if (!Params.DropConsumers.empty()) + if (!Params_.DropConsumers.empty()) { THashSet<TString> consumerNames; - for (const auto& consumer : Params.DropConsumers) { + for (const auto& consumer : Params_.DropConsumers) { if (!consumerNames.insert(consumer.Name).second) { ctx.Error(consumer.Pos) << "Consumer " << consumer.Name << " dropped more than once"; return false; @@ -1865,29 +1865,29 @@ public: } auto opts = Y(); - TString mode = Params.MissingOk ? "alter_if_exists" : "alter"; + TString mode = Params_.MissingOk ? "alter_if_exists" : "alter"; opts = L(opts, Q(Y(Q("mode"), Q(mode)))); - for (const auto& consumer : Params.AddConsumers) { + for (const auto& consumer : Params_.AddConsumers) { const auto& desc = CreateConsumerDesc(consumer, *this, false); opts = L(opts, Q(Y(Q("addConsumer"), Q(desc)))); } - for (const auto& [_, consumer] : Params.AlterConsumers) { + for (const auto& [_, consumer] : Params_.AlterConsumers) { const auto& desc = CreateConsumerDesc(consumer, *this, true); opts = L(opts, Q(Y(Q("alterConsumer"), Q(desc)))); } - for (const auto& consumer : Params.DropConsumers) { + for (const auto& consumer : Params_.DropConsumers) { const auto name = BuildQuotedAtom(consumer.Pos, consumer.Name); opts = L(opts, Q(Y(Q("dropConsumer"), name))); } - if (Params.TopicSettings.IsSet()) { + if (Params_.TopicSettings.IsSet()) { auto settings = Y(); #define INSERT_TOPIC_SETTING(NAME) \ - if (const auto& NAME##Val = Params.TopicSettings.NAME) { \ + if (const auto& NAME##Val = Params_.TopicSettings.NAME) { \ if (NAME##Val.IsSet()) { \ settings = L(settings, Q(Y(Q(Y_STRINGIZE(set##NAME)), NAME##Val.GetValueSet()))); \ } else { \ @@ -1914,8 +1914,8 @@ public: Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, TString(KikimrProviderName)), - Scoped->WrapCluster(Topic.Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, TString(KikimrProviderName)), + Scoped_->WrapCluster(Topic_.Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(opts))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); @@ -1927,9 +1927,9 @@ public: return {}; } private: - const TTopicRef Topic; - const TAlterTopicParameters Params; - TScopedStatePtr Scoped; + const TTopicRef Topic_; + const TAlterTopicParameters Params_; + TScopedStatePtr Scoped_; }; TNodePtr BuildAlterTopic( @@ -1942,44 +1942,44 @@ class TDropTopicNode final : public TAstListNode { public: TDropTopicNode(TPosition pos, const TTopicRef& tr, const TDropTopicParameters& params, TScopedStatePtr scoped) : TAstListNode(pos) - , Topic(tr) - , Params(params) - , Scoped(scoped) + , Topic_(tr) + , Params_(params) + , Scoped_(scoped) { - scoped->UseCluster(TString(KikimrProviderName), Topic.Cluster); + scoped->UseCluster(TString(KikimrProviderName), Topic_.Cluster); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - auto keys = Topic.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::DROP); - if (!keys || !keys->Init(ctx, FakeSource.Get())) { + auto keys = Topic_.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::DROP); + if (!keys || !keys->Init(ctx, FakeSource_.Get())) { return false; } auto opts = Y(); - TString mode = Params.MissingOk ? "drop_if_exists" : "drop"; + TString mode = Params_.MissingOk ? "drop_if_exists" : "drop"; opts = L(opts, Q(Y(Q("mode"), Q(mode)))); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, TString(KikimrProviderName)), - Scoped->WrapCluster(Topic.Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, TString(KikimrProviderName)), + Scoped_->WrapCluster(Topic_.Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(opts))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); - return TAstListNode::DoInit(ctx, FakeSource.Get()); + return TAstListNode::DoInit(ctx, FakeSource_.Get()); } TPtr DoClone() const final { return {}; } private: - TTopicRef Topic; - TDropTopicParameters Params; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; + TTopicRef Topic_; + TDropTopicParameters Params_; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; }; TNodePtr BuildDropTopic(TPosition pos, const TTopicRef& tr, const TDropTopicParameters& params, TScopedStatePtr scoped) { @@ -1990,80 +1990,80 @@ class TControlUser final : public TAstListNode { public: TControlUser(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TDeferredAtom& name, const TMaybe<TUserParameters>& params, TScopedStatePtr scoped, bool IsCreateUser) : TAstListNode(pos) - , Service(service) - , Cluster(cluster) - , Name(name) - , Params(params) - , Scoped(scoped) - , IsCreateUser(IsCreateUser) + , Service_(service) + , Cluster_(cluster) + , Name_(name) + , Params_(params) + , Scoped_(scoped) + , IsCreateUser_(IsCreateUser) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); scoped->UseCluster(service, cluster); } bool DoInit(TContext& ctx, ISource*) override { - auto name = Name.Build(); + auto name = Name_.Build(); TNodePtr password; TNodePtr hash; - if (Params) { - if (Params->Password) { - password = Params->Password->Build(); - } else if (Params->Hash) { - hash = Params->Hash->Build(); + if (Params_) { + if (Params_->Password) { + password = Params_->Password->Build(); + } else if (Params_->Hash) { + hash = Params_->Hash->Build(); } } - TNodePtr cluster = Scoped->WrapCluster(Cluster, ctx); + TNodePtr cluster = Scoped_->WrapCluster(Cluster_, ctx); - if (!name->Init(ctx, FakeSource.Get()) - || !cluster->Init(ctx, FakeSource.Get()) - || password && !password->Init(ctx, FakeSource.Get()) - || hash && !hash->Init(ctx, FakeSource.Get()) + if (!name->Init(ctx, FakeSource_.Get()) + || !cluster->Init(ctx, FakeSource_.Get()) + || password && !password->Init(ctx, FakeSource_.Get()) + || hash && !hash->Init(ctx, FakeSource_.Get()) ) { return false; } - auto options = Y(Q(Y(Q("mode"), Q(IsCreateUser ? "createUser" : "alterUser")))) ; + auto options = Y(Q(Y(Q("mode"), Q(IsCreateUser_ ? "createUser" : "alterUser")))) ; TVector<TNodePtr> roles; - if (Params && !Params->Roles.empty()) { - for (auto& item : Params->Roles) { + if (Params_ && !Params_->Roles.empty()) { + for (auto& item : Params_->Roles) { roles.push_back(item.Build()); - if (!roles.back()->Init(ctx, FakeSource.Get())) { + if (!roles.back()->Init(ctx, FakeSource_.Get())) { return false; } } - options = L(options, Q(Y(Q("roles"), Q(new TAstListNodeImpl(Pos, std::move(roles)))))); + options = L(options, Q(Y(Q("roles"), Q(new TAstListNodeImpl(Pos_, std::move(roles)))))); } - if (Params) { - if (Params->IsPasswordEncrypted) { + if (Params_) { + if (Params_->IsPasswordEncrypted) { options = L(options, Q(Y(Q("passwordEncrypted")))); } - if (Params->Password) { + if (Params_->Password) { options = L(options, Q(Y(Q("password"), password))); - } else if (Params->Hash) { + } else if (Params_->Hash) { options = L(options, Q(Y(Q("hash"), hash))); - } else if (Params->IsPasswordNull) { + } else if (Params_->IsPasswordNull) { options = L(options, Q(Y(Q("nullPassword")))); } - if (Params->CanLogin.has_value()) { - options = L(options, Q(Y(Q(Params->CanLogin.value() ? "login" : "noLogin")))); + if (Params_->CanLogin.has_value()) { + options = L(options, Q(Y(Q(Params_->CanLogin.value() ? "login" : "noLogin")))); } } Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Service), cluster)), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Service_), cluster)), Y("let", "world", Y(TString(WriteName), "world", "sink", Y("Key", Q(Y(Q("role"), Y("String", name)))), Y("Void"), Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); - return TAstListNode::DoInit(ctx, FakeSource.Get()); + return TAstListNode::DoInit(ctx, FakeSource_.Get()); } TPtr DoClone() const final { @@ -2071,13 +2071,13 @@ public: } private: - const TString Service; - TDeferredAtom Cluster; - TDeferredAtom Name; - const TMaybe<TUserParameters> Params; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; - bool IsCreateUser; + const TString Service_; + TDeferredAtom Cluster_; + TDeferredAtom Name_; + const TMaybe<TUserParameters> Params_; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; + bool IsCreateUser_; }; TNodePtr BuildControlUser( TPosition pos, @@ -2095,13 +2095,13 @@ class TCreateGroup final : public TAstListNode { public: TCreateGroup(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TDeferredAtom& name, const TMaybe<TCreateGroupParameters>& params, TScopedStatePtr scoped) : TAstListNode(pos) - , Service(service) - , Cluster(cluster) - , Name(name) - , Params(params) - , Scoped(scoped) + , Service_(service) + , Cluster_(cluster) + , Name_(name) + , Params_(params) + , Scoped_(scoped) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); scoped->UseCluster(service, cluster); } @@ -2109,26 +2109,26 @@ public: auto options = Y(Q(Y(Q("mode"), Q("createGroup")))); TVector<TNodePtr> roles; - if (Params && !Params->Roles.empty()) { - for (auto& item : Params->Roles) { + if (Params_ && !Params_->Roles.empty()) { + for (auto& item : Params_->Roles) { roles.push_back(item.Build()); - if (!roles.back()->Init(ctx, FakeSource.Get())) { + if (!roles.back()->Init(ctx, FakeSource_.Get())) { return false; } } - options = L(options, Q(Y(Q("roles"), Q(new TAstListNodeImpl(Pos, std::move(roles)))))); + options = L(options, Q(Y(Q("roles"), Q(new TAstListNodeImpl(Pos_, std::move(roles)))))); } - TNodePtr cluster = Scoped->WrapCluster(Cluster, ctx); + TNodePtr cluster = Scoped_->WrapCluster(Cluster_, ctx); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Service), cluster)), - Y("let", "world", Y(TString(WriteName), "world", "sink", Y("Key", Q(Y(Q("role"), Y("String", Name.Build())))), Y("Void"), Q(options))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Service_), cluster)), + Y("let", "world", Y(TString(WriteName), "world", "sink", Y("Key", Q(Y(Q("role"), Y("String", Name_.Build())))), Y("Void"), Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); - return TAstListNode::DoInit(ctx, FakeSource.Get()); + return TAstListNode::DoInit(ctx, FakeSource_.Get()); } TPtr DoClone() const final { @@ -2136,12 +2136,12 @@ public: } private: - const TString Service; - TDeferredAtom Cluster; - TDeferredAtom Name; - const TMaybe<TCreateGroupParameters> Params; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; + const TString Service_; + TDeferredAtom Cluster_; + TDeferredAtom Name_; + const TMaybe<TCreateGroupParameters> Params_; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; }; TNodePtr BuildCreateGroup(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TDeferredAtom& name, const TMaybe<TCreateGroupParameters>& params, TScopedStatePtr scoped) { @@ -2152,41 +2152,41 @@ class TAlterSequence final : public TAstListNode { public: TAlterSequence(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TString& id, const TSequenceParameters& params, TScopedStatePtr scoped) : TAstListNode(pos) - , Service(service) - , Cluster(cluster) - , Id(id) - , Params(params) - , Scoped(scoped) + , Service_(service) + , Cluster_(cluster) + , Id_(id) + , Params_(params) + , Scoped_(scoped) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); scoped->UseCluster(service, cluster); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - TNodePtr cluster = Scoped->WrapCluster(Cluster, ctx); + TNodePtr cluster = Scoped_->WrapCluster(Cluster_, ctx); - if (!cluster->Init(ctx, FakeSource.Get())) { + if (!cluster->Init(ctx, FakeSource_.Get())) { return false; } auto options = Y(); - TString mode = Params.MissingOk ? "alter_if_exists" : "alter"; + TString mode = Params_.MissingOk ? "alter_if_exists" : "alter"; options = L(options, Q(Y(Q("mode"), Q(mode)))); - if (Params.IsRestart) { - if (Params.RestartValue) { - TString strValue = Params.RestartValue->Build()->GetLiteralValue(); + if (Params_.IsRestart) { + if (Params_.RestartValue) { + TString strValue = Params_.RestartValue->Build()->GetLiteralValue(); ui64 value = FromString<ui64>(strValue); ui64 maxValue = ui64(std::numeric_limits<i64>::max()); ui64 minValue = 1; if (value > maxValue) { - ctx.Error(Pos) << "Restart value: " << value << " cannot be greater than max value: " << maxValue; + ctx.Error(Pos_) << "Restart value: " << value << " cannot be greater than max value: " << maxValue; return false; } if (value < minValue) { - ctx.Error(Pos) << "Restart value: " << value << " cannot be less than min value: " << minValue; + ctx.Error(Pos_) << "Restart value: " << value << " cannot be less than min value: " << minValue; return false; } options = L(options, Q(Y(Q("restart"), Q(ToString(value))))); @@ -2194,41 +2194,41 @@ public: options = L(options, Q(Y(Q("restart"), Q(TString())))); } } - if (Params.StartValue) { - TString strValue = Params.StartValue->Build()->GetLiteralValue(); + if (Params_.StartValue) { + TString strValue = Params_.StartValue->Build()->GetLiteralValue(); ui64 value = FromString<ui64>(strValue); ui64 maxValue = ui64(std::numeric_limits<i64>::max()); ui64 minValue = 1; if (value > maxValue) { - ctx.Error(Pos) << "Start value: " << value << " cannot be greater than max value: " << maxValue; + ctx.Error(Pos_) << "Start value: " << value << " cannot be greater than max value: " << maxValue; return false; } if (value < minValue) { - ctx.Error(Pos) << "Start value: " << value << " cannot be less than min value: " << minValue; + ctx.Error(Pos_) << "Start value: " << value << " cannot be less than min value: " << minValue; return false; } options = L(options, Q(Y(Q("start"), Q(ToString(value))))); } - if (Params.Increment) { - TString strValue = Params.Increment->Build()->GetLiteralValue(); + if (Params_.Increment) { + TString strValue = Params_.Increment->Build()->GetLiteralValue(); ui64 value = FromString<ui64>(strValue); ui64 maxValue = ui64(std::numeric_limits<i64>::max()); if (value > maxValue) { - ctx.Error(Pos) << "Increment: " << value << " cannot be greater than max value: " << maxValue; + ctx.Error(Pos_) << "Increment: " << value << " cannot be greater than max value: " << maxValue; return false; } if (value == 0) { - ctx.Error(Pos) << "Increment must not be zero"; + ctx.Error(Pos_) << "Increment must not be zero"; return false; } options = L(options, Q(Y(Q("increment"), Q(ToString(value))))); } Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, TString(KikimrProviderName)), - Scoped->WrapCluster(Cluster, ctx))), - Y("let", "world", Y(TString(WriteName), "world", "sink", Y("Key", Q(Y(Q("sequence"), Y("String", BuildQuotedAtom(Pos, Id))))), Y("Void"), Q(options))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, TString(KikimrProviderName)), + Scoped_->WrapCluster(Cluster_, ctx))), + Y("let", "world", Y(TString(WriteName), "world", "sink", Y("Key", Q(Y(Q("sequence"), Y("String", BuildQuotedAtom(Pos_, Id_))))), Y("Void"), Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); @@ -2239,13 +2239,13 @@ public: return {}; } private: - const TString Service; - TDeferredAtom Cluster; - TString Id; - const TSequenceParameters Params; + const TString Service_; + TDeferredAtom Cluster_; + TString Id_; + const TSequenceParameters Params_; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; }; TNodePtr BuildAlterSequence(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TString& id, const TSequenceParameters& params, TScopedStatePtr scoped) { @@ -2256,53 +2256,53 @@ class TRenameRole final : public TAstListNode { public: TRenameRole(TPosition pos, bool isUser, const TString& service, const TDeferredAtom& cluster, const TDeferredAtom& name, const TDeferredAtom& newName, TScopedStatePtr scoped) : TAstListNode(pos) - , IsUser(isUser) - , Service(service) - , Cluster(cluster) - , Name(name) - , NewName(newName) - , Scoped(scoped) + , IsUser_(isUser) + , Service_(service) + , Cluster_(cluster) + , Name_(name) + , NewName_(newName) + , Scoped_(scoped) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); scoped->UseCluster(service, cluster); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - auto name = Name.Build(); - auto newName = NewName.Build(); - TNodePtr cluster = Scoped->WrapCluster(Cluster, ctx); + auto name = Name_.Build(); + auto newName = NewName_.Build(); + TNodePtr cluster = Scoped_->WrapCluster(Cluster_, ctx); - if (!name->Init(ctx, FakeSource.Get()) || - !newName->Init(ctx, FakeSource.Get()) || - !cluster->Init(ctx, FakeSource.Get())) + if (!name->Init(ctx, FakeSource_.Get()) || + !newName->Init(ctx, FakeSource_.Get()) || + !cluster->Init(ctx, FakeSource_.Get())) { return false; } - auto options = Y(Q(Y(Q("mode"), Q(IsUser ? "renameUser" : "renameGroup")))); + auto options = Y(Q(Y(Q("mode"), Q(IsUser_ ? "renameUser" : "renameGroup")))); options = L(options, Q(Y(Q("newName"), newName))); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Service), cluster)), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Service_), cluster)), Y("let", "world", Y(TString(WriteName), "world", "sink", Y("Key", Q(Y(Q("role"), Y("String", name)))), Y("Void"), Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); - return TAstListNode::DoInit(ctx, FakeSource.Get()); + return TAstListNode::DoInit(ctx, FakeSource_.Get()); } TPtr DoClone() const final { return {}; } private: - const bool IsUser; - const TString Service; - TDeferredAtom Cluster; - TDeferredAtom Name; - TDeferredAtom NewName; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; + const bool IsUser_; + const TString Service_; + TDeferredAtom Cluster_; + TDeferredAtom Name_; + TDeferredAtom NewName_; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; }; TNodePtr BuildRenameUser(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TDeferredAtom& name, const TDeferredAtom& newName, TScopedStatePtr scoped) { @@ -2319,57 +2319,57 @@ class TAlterGroup final : public TAstListNode { public: TAlterGroup(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TDeferredAtom& name, const TVector<TDeferredAtom>& toChange, bool isDrop, TScopedStatePtr scoped) : TAstListNode(pos) - , Service(service) - , Cluster(cluster) - , Name(name) - , ToChange(toChange) - , IsDrop(isDrop) - , Scoped(scoped) + , Service_(service) + , Cluster_(cluster) + , Name_(name) + , ToChange_(toChange) + , IsDrop_(isDrop) + , Scoped_(scoped) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); scoped->UseCluster(service, cluster); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - auto name = Name.Build(); - TNodePtr cluster = Scoped->WrapCluster(Cluster, ctx); + auto name = Name_.Build(); + TNodePtr cluster = Scoped_->WrapCluster(Cluster_, ctx); - if (!name->Init(ctx, FakeSource.Get()) || !cluster->Init(ctx, FakeSource.Get())) { + if (!name->Init(ctx, FakeSource_.Get()) || !cluster->Init(ctx, FakeSource_.Get())) { return false; } TVector<TNodePtr> toChange; - for (auto& item : ToChange) { + for (auto& item : ToChange_) { toChange.push_back(item.Build()); - if (!toChange.back()->Init(ctx, FakeSource.Get())) { + if (!toChange.back()->Init(ctx, FakeSource_.Get())) { return false; } } - auto options = Y(Q(Y(Q("mode"), Q(IsDrop ? "dropUsersFromGroup" : "addUsersToGroup")))); - options = L(options, Q(Y(Q("roles"), Q(new TAstListNodeImpl(Pos, std::move(toChange)))))); + auto options = Y(Q(Y(Q("mode"), Q(IsDrop_ ? "dropUsersFromGroup" : "addUsersToGroup")))); + options = L(options, Q(Y(Q("roles"), Q(new TAstListNodeImpl(Pos_, std::move(toChange)))))); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Service), cluster)), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Service_), cluster)), Y("let", "world", Y(TString(WriteName), "world", "sink", Y("Key", Q(Y(Q("role"), Y("String", name)))), Y("Void"), Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); - return TAstListNode::DoInit(ctx, FakeSource.Get()); + return TAstListNode::DoInit(ctx, FakeSource_.Get()); } TPtr DoClone() const final { return {}; } private: - const TString Service; - TDeferredAtom Cluster; - TDeferredAtom Name; - TVector<TDeferredAtom> ToChange; - const bool IsDrop; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; + const TString Service_; + TDeferredAtom Cluster_; + TDeferredAtom Name_; + TVector<TDeferredAtom> ToChange_; + const bool IsDrop_; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; }; TNodePtr BuildAlterGroup(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TDeferredAtom& name, const TVector<TDeferredAtom>& toChange, bool isDrop, @@ -2382,35 +2382,35 @@ class TDropRoles final : public TAstListNode { public: TDropRoles(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TVector<TDeferredAtom>& toDrop, bool isUser, bool missingOk, TScopedStatePtr scoped) : TAstListNode(pos) - , Service(service) - , Cluster(cluster) - , ToDrop(toDrop) - , IsUser(isUser) - , MissingOk(missingOk) - , Scoped(scoped) + , Service_(service) + , Cluster_(cluster) + , ToDrop_(toDrop) + , IsUser_(isUser) + , MissingOk_(missingOk) + , Scoped_(scoped) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); scoped->UseCluster(service, cluster); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - TNodePtr cluster = Scoped->WrapCluster(Cluster, ctx); + TNodePtr cluster = Scoped_->WrapCluster(Cluster_, ctx); - if (!cluster->Init(ctx, FakeSource.Get())) { + if (!cluster->Init(ctx, FakeSource_.Get())) { return false; } - const char* mode = IsUser ? - (MissingOk ? "dropUserIfExists" : "dropUser") : - (MissingOk ? "dropGroupIfExists" : "dropGroup"); + const char* mode = IsUser_ ? + (MissingOk_ ? "dropUserIfExists" : "dropUser") : + (MissingOk_ ? "dropGroupIfExists" : "dropGroup"); auto options = Y(Q(Y(Q("mode"), Q(mode)))); - auto block = Y(Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Service), cluster))); - for (auto& item : ToDrop) { + auto block = Y(Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Service_), cluster))); + for (auto& item : ToDrop_) { auto name = item.Build(); - if (!name->Init(ctx, FakeSource.Get())) { + if (!name->Init(ctx, FakeSource_.Get())) { return false; } @@ -2419,20 +2419,20 @@ public: block = L(block, Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world"))); Add("block", Q(block)); - return TAstListNode::DoInit(ctx, FakeSource.Get()); + return TAstListNode::DoInit(ctx, FakeSource_.Get()); } TPtr DoClone() const final { return {}; } private: - const TString Service; - TDeferredAtom Cluster; - TVector<TDeferredAtom> ToDrop; - const bool IsUser; - const bool MissingOk; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; + const TString Service_; + TDeferredAtom Cluster_; + TVector<TDeferredAtom> ToDrop_; + const bool IsUser_; + const bool MissingOk_; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; }; TNodePtr BuildUpsertObjectOperation(TPosition pos, const TString& objectId, const TString& typeId, @@ -2469,62 +2469,62 @@ public: TPermissionsAction(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TPermissionParameters& parameters, TScopedStatePtr scoped) : TAstListNode(pos) - , Service(service) - , Cluster(cluster) - , Parameters(parameters) - , Scoped(scoped) + , Service_(service) + , Cluster_(cluster) + , Parameters_(parameters) + , Scoped_(scoped) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); scoped->UseCluster(service, cluster); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - TNodePtr cluster = Scoped->WrapCluster(Cluster, ctx); - TNodePtr permissionAction = TDeferredAtom(Pos, Parameters.PermissionAction).Build(); + TNodePtr cluster = Scoped_->WrapCluster(Cluster_, ctx); + TNodePtr permissionAction = TDeferredAtom(Pos_, Parameters_.PermissionAction).Build(); - if (!permissionAction->Init(ctx, FakeSource.Get()) || - !cluster->Init(ctx, FakeSource.Get())) { + if (!permissionAction->Init(ctx, FakeSource_.Get()) || + !cluster->Init(ctx, FakeSource_.Get())) { return false; } TVector<TNodePtr> paths; - paths.reserve(Parameters.SchemaPaths.size()); - for (auto& item : Parameters.SchemaPaths) { + paths.reserve(Parameters_.SchemaPaths.size()); + for (auto& item : Parameters_.SchemaPaths) { paths.push_back(item.Build()); - if (!paths.back()->Init(ctx, FakeSource.Get())) { + if (!paths.back()->Init(ctx, FakeSource_.Get())) { return false; } } - auto options = Y(Q(Y(Q("paths"), Q(new TAstListNodeImpl(Pos, std::move(paths)))))); + auto options = Y(Q(Y(Q("paths"), Q(new TAstListNodeImpl(Pos_, std::move(paths)))))); TVector<TNodePtr> permissions; - permissions.reserve(Parameters.Permissions.size()); - for (auto& item : Parameters.Permissions) { + permissions.reserve(Parameters_.Permissions.size()); + for (auto& item : Parameters_.Permissions) { permissions.push_back(item.Build()); - if (!permissions.back()->Init(ctx, FakeSource.Get())) { + if (!permissions.back()->Init(ctx, FakeSource_.Get())) { return false; } } - options = L(options, Q(Y(Q("permissions"), Q(new TAstListNodeImpl(Pos, std::move(permissions)))))); + options = L(options, Q(Y(Q("permissions"), Q(new TAstListNodeImpl(Pos_, std::move(permissions)))))); TVector<TNodePtr> roles; - roles.reserve(Parameters.RoleNames.size()); - for (auto& item : Parameters.RoleNames) { + roles.reserve(Parameters_.RoleNames.size()); + for (auto& item : Parameters_.RoleNames) { roles.push_back(item.Build()); - if (!roles.back()->Init(ctx, FakeSource.Get())) { + if (!roles.back()->Init(ctx, FakeSource_.Get())) { return false; } } - options = L(options, Q(Y(Q("roles"), Q(new TAstListNodeImpl(Pos, std::move(roles)))))); + options = L(options, Q(Y(Q("roles"), Q(new TAstListNodeImpl(Pos_, std::move(roles)))))); - auto block = Y(Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Service), cluster))); + auto block = Y(Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Service_), cluster))); block = L(block, Y("let", "world", Y(TString(WriteName), "world", "sink", Y("Key", Q(Y(Q("permission"), Y("String", permissionAction)))), Y("Void"), Q(options)))); block = L(block, Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world"))); Add("block", Q(block)); - return TAstListNode::DoInit(ctx, FakeSource.Get()); + return TAstListNode::DoInit(ctx, FakeSource_.Get()); } TPtr DoClone() const final { @@ -2532,11 +2532,11 @@ public: } private: - const TString Service; - TDeferredAtom Cluster; - TPermissionParameters Parameters; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; + const TString Service_; + TDeferredAtom Cluster_; + TPermissionParameters Parameters_; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; }; TNodePtr BuildGrantPermissions(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TVector<TDeferredAtom>& permissions, const TVector<TDeferredAtom>& schemaPaths, const TVector<TDeferredAtom>& roleNames, TScopedStatePtr scoped) { @@ -2572,19 +2572,19 @@ public: explicit TAsyncReplication(TPosition pos, const TString& id, const TString& mode, const TObjectOperatorContext& context) : TAstListNode(pos) , TObjectOperatorContext(context) - , Id(id) - , Mode(mode) + , Id_(id) + , Mode_(mode) { } bool DoInit(TContext& ctx, ISource* src) override { - Scoped->UseCluster(ServiceId, Cluster); + Scoped_->UseCluster(ServiceId, Cluster); - auto keys = Y("Key", Q(Y(Q("replication"), Y("String", BuildQuotedAtom(Pos, Id))))); - auto options = FillOptions(Y(Q(Y(Q("mode"), Q(Mode))))); + auto keys = Y("Key", Q(Y(Q("replication"), Y("String", BuildQuotedAtom(Pos_, Id_))))); + auto options = FillOptions(Y(Q(Y(Q("mode"), Q(Mode_))))); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, ServiceId), Scoped->WrapCluster(Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, ServiceId), Scoped_->WrapCluster(Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); @@ -2597,8 +2597,8 @@ public: } private: - const TString Id; - const TString Mode; + const TString Id_; + const TString Mode_; }; // TAsyncReplication @@ -2609,16 +2609,16 @@ public: std::map<TString, TNodePtr>&& settings, const TObjectOperatorContext& context) : TAsyncReplication(pos, id, "create", context) - , Targets(std::move(targets)) - , Settings(std::move(settings)) + , Targets_(std::move(targets)) + , Settings_(std::move(settings)) { } protected: INode::TPtr FillOptions(INode::TPtr options) const override { - if (!Targets.empty()) { + if (!Targets_.empty()) { auto targets = Y(); - for (auto&& [remote, local] : Targets) { + for (auto&& [remote, local] : Targets_) { auto target = Y(); target = L(target, Q(Y(Q("remote"), Q(remote)))); target = L(target, Q(Y(Q("local"), Q(local)))); @@ -2627,13 +2627,13 @@ protected: options = L(options, Q(Y(Q("targets"), Q(targets)))); } - if (!Settings.empty()) { + if (!Settings_.empty()) { auto settings = Y(); - for (auto&& [k, v] : Settings) { + for (auto&& [k, v] : Settings_) { if (v) { - settings = L(settings, Q(Y(BuildQuotedAtom(Pos, k), v))); + settings = L(settings, Q(Y(BuildQuotedAtom(Pos_, k), v))); } else { - settings = L(settings, Q(Y(BuildQuotedAtom(Pos, k)))); + settings = L(settings, Q(Y(BuildQuotedAtom(Pos_, k)))); } } options = L(options, Q(Y(Q("settings"), Q(settings)))); @@ -2643,8 +2643,8 @@ protected: } private: - std::vector<std::pair<TString, TString>> Targets; // (remote, local) - std::map<TString, TNodePtr> Settings; + std::vector<std::pair<TString, TString>> Targets_; // (remote, local) + std::map<TString, TNodePtr> Settings_; }; // TCreateAsyncReplication @@ -2680,19 +2680,19 @@ public: std::map<TString, TNodePtr>&& settings, const TObjectOperatorContext& context) : TAsyncReplication(pos, id, "alter", context) - , Settings(std::move(settings)) + , Settings_(std::move(settings)) { } protected: INode::TPtr FillOptions(INode::TPtr options) const override { - if (!Settings.empty()) { + if (!Settings_.empty()) { auto settings = Y(); - for (auto&& [k, v] : Settings) { + for (auto&& [k, v] : Settings_) { if (v) { - settings = L(settings, Q(Y(BuildQuotedAtom(Pos, k), v))); + settings = L(settings, Q(Y(BuildQuotedAtom(Pos_, k), v))); } else { - settings = L(settings, Q(Y(BuildQuotedAtom(Pos, k)))); + settings = L(settings, Q(Y(BuildQuotedAtom(Pos_, k)))); } } options = L(options, Q(Y(Q("settings"), Q(settings)))); @@ -2702,7 +2702,7 @@ protected: } private: - std::map<TString, TNodePtr> Settings; + std::map<TString, TNodePtr> Settings_; }; // TAlterAsyncReplication @@ -2724,19 +2724,19 @@ public: explicit TTransfer(TPosition pos, const TString& id, const TString& mode, const TObjectOperatorContext& context) : TAstListNode(pos) , TObjectOperatorContext(context) - , Id(id) - , Mode(mode) + , Id_(id) + , Mode_(mode) { } bool DoInit(TContext& ctx, ISource* src) override { - Scoped->UseCluster(ServiceId, Cluster); + Scoped_->UseCluster(ServiceId, Cluster); - auto keys = Y("Key", Q(Y(Q("transfer"), Y("String", BuildQuotedAtom(Pos, Id))))); - auto options = FillOptions(Y(Q(Y(Q("mode"), Q(Mode))))); + auto keys = Y("Key", Q(Y(Q("transfer"), Y("String", BuildQuotedAtom(Pos_, Id_))))); + auto options = FillOptions(Y(Q(Y(Q("mode"), Q(Mode_))))); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, ServiceId), Scoped->WrapCluster(Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, ServiceId), Scoped_->WrapCluster(Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); @@ -2749,8 +2749,8 @@ public: } private: - const TString Id; - const TString Mode; + const TString Id_; + const TString Mode_; }; // TTransfer @@ -2761,26 +2761,26 @@ public: std::map<TString, TNodePtr>&& settings, const TObjectOperatorContext& context) : TTransfer(pos, id, "create", context) - , Source(std::move(source)) - , Target(std::move(target)) - , TransformLambda(std::move(transformLambda)) - , Settings(std::move(settings)) + , Source_(std::move(source)) + , Target_(std::move(target)) + , TransformLambda_(std::move(transformLambda)) + , Settings_(std::move(settings)) { } protected: INode::TPtr FillOptions(INode::TPtr options) const override { - options = L(options, Q(Y(Q("source"), Q(Source)))); - options = L(options, Q(Y(Q("target"), Q(Target)))); - options = L(options, Q(Y(Q("transformLambda"), Q(TransformLambda)))); + options = L(options, Q(Y(Q("source"), Q(Source_)))); + options = L(options, Q(Y(Q("target"), Q(Target_)))); + options = L(options, Q(Y(Q("transformLambda"), Q(TransformLambda_)))); - if (!Settings.empty()) { + if (!Settings_.empty()) { auto settings = Y(); - for (auto&& [k, v] : Settings) { + for (auto&& [k, v] : Settings_) { if (v) { - settings = L(settings, Q(Y(BuildQuotedAtom(Pos, k), v))); + settings = L(settings, Q(Y(BuildQuotedAtom(Pos_, k), v))); } else { - settings = L(settings, Q(Y(BuildQuotedAtom(Pos, k)))); + settings = L(settings, Q(Y(BuildQuotedAtom(Pos_, k)))); } } options = L(options, Q(Y(Q("settings"), Q(settings)))); @@ -2790,10 +2790,10 @@ protected: } private: - const TString Source; - const TString Target; - const TString TransformLambda; - std::map<TString, TNodePtr> Settings; + const TString Source_; + const TString Target_; + const TString TransformLambda_; + std::map<TString, TNodePtr> Settings_; }; // TCreateTransfer @@ -2829,22 +2829,22 @@ public: std::map<TString, TNodePtr>&& settings, const TObjectOperatorContext& context) : TTransfer(pos, id, "alter", context) - , TransformLambda(std::move(transformLambda)) - , Settings(std::move(settings)) + , TransformLambda_(std::move(transformLambda)) + , Settings_(std::move(settings)) { } protected: INode::TPtr FillOptions(INode::TPtr options) const override { - options = L(options, Q(Y(Q("transformLambda"), Q(TransformLambda ? TransformLambda.value() : "")))); + options = L(options, Q(Y(Q("transformLambda"), Q(TransformLambda_ ? TransformLambda_.value() : "")))); - if (!Settings.empty()) { + if (!Settings_.empty()) { auto settings = Y(); - for (auto&& [k, v] : Settings) { + for (auto&& [k, v] : Settings_) { if (v) { - settings = L(settings, Q(Y(BuildQuotedAtom(Pos, k), v))); + settings = L(settings, Q(Y(BuildQuotedAtom(Pos_, k), v))); } else { - settings = L(settings, Q(Y(BuildQuotedAtom(Pos, k)))); + settings = L(settings, Q(Y(BuildQuotedAtom(Pos_, k)))); } } options = L(options, Q(Y(Q("settings"), Q(settings)))); @@ -2854,8 +2854,8 @@ protected: } private: - const std::optional<TString> TransformLambda; - std::map<TString, TNodePtr> Settings; + const std::optional<TString> TransformLambda_; + std::map<TString, TNodePtr> Settings_; }; // TAlterTransfer @@ -2895,17 +2895,17 @@ public: TWriteTableNode(TPosition pos, const TString& label, const TTableRef& table, EWriteColumnMode mode, TNodePtr options, TScopedStatePtr scoped) : TAstListNode(pos) - , Label(label) - , Table(table) - , Mode(mode) - , Options(options) - , Scoped(scoped) + , Label_(label) + , Table_(table) + , Mode_(mode) + , Options_(options) + , Scoped_(scoped) { - scoped->UseCluster(Table.Service, Table.Cluster); + scoped->UseCluster(Table_.Service, Table_.Cluster); } bool DoInit(TContext& ctx, ISource* src) override { - auto keys = Table.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::WRITE); + auto keys = Table_.Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::WRITE); if (!keys || !keys->Init(ctx, src)) { return false; } @@ -2921,23 +2921,23 @@ public: }; auto options = Y(); - if (Options) { - if (!Options->Init(ctx, src)) { + if (Options_) { + if (!Options_->Init(ctx, src)) { return false; } - options = L(Options); + options = L(Options_); } - if (Mode != EWriteColumnMode::Default) { - auto modeStr = getModesMap(Table.Service).FindPtr(Mode); + if (Mode_ != EWriteColumnMode::Default) { + auto modeStr = getModesMap(Table_.Service).FindPtr(Mode_); options->Add(Q(Y(Q("mode"), Q(modeStr ? *modeStr : "unsupported")))); } Add("block", Q((Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Table.Service), Scoped->WrapCluster(Table.Cluster, ctx))), - Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Label, Q(options))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Table_.Service), Scoped_->WrapCluster(Table_.Cluster, ctx))), + Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Label_, Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) )))); @@ -2948,11 +2948,11 @@ public: return {}; } private: - TString Label; - TTableRef Table; - EWriteColumnMode Mode; - TNodePtr Options; - TScopedStatePtr Scoped; + TString Label_; + TTableRef Table_; + EWriteColumnMode Mode_; + TNodePtr Options_; + TScopedStatePtr Scoped_; }; TNodePtr BuildWriteTable(TPosition pos, const TString& label, const TTableRef& table, EWriteColumnMode mode, TNodePtr options, @@ -3025,18 +3025,18 @@ class TWriteResultNode final : public TAstListNode { public: TWriteResultNode(TPosition pos, const TString& label, TNodePtr settings) : TAstListNode(pos) - , Label(label) - , Settings(settings) - , CommitClusters(BuildCommitClusters(Pos)) + , Label_(label) + , Settings_(settings) + , CommitClusters_(BuildCommitClusters(Pos_)) {} bool DoInit(TContext& ctx, ISource* src) override { auto block(Y( Y("let", "result_sink", Y("DataSink", Q(TString(ResultProviderName)))), - Y("let", "world", Y(TString(WriteName), "world", "result_sink", Y("Key"), Label, Q(Settings))) + Y("let", "world", Y(TString(WriteName), "world", "result_sink", Y("Key"), Label_, Q(Settings_))) )); if (ctx.PragmaAutoCommit) { - block = L(block, Y("let", "world", CommitClusters)); + block = L(block, Y("let", "world", CommitClusters_)); } block = L(block, Y("return", Y(TString(CommitName), "world", "result_sink"))); @@ -3048,9 +3048,9 @@ public: return {}; } private: - TString Label; - TNodePtr Settings; - TNodePtr CommitClusters; + TString Label_; + TNodePtr Settings_; + TNodePtr CommitClusters_; }; TNodePtr BuildWriteResult(TPosition pos, const TString& label, TNodePtr settings) { @@ -3061,23 +3061,23 @@ class TYqlProgramNode : public TAstListNode { public: TYqlProgramNode(TPosition pos, const TVector<TNodePtr>& blocks, bool topLevel, TScopedStatePtr scoped, bool useSeq) : TAstListNode(pos) - , Blocks(blocks) - , TopLevel(topLevel) - , Scoped(scoped) - , UseSeq(useSeq) + , Blocks_(blocks) + , TopLevel_(topLevel) + , Scoped_(scoped) + , UseSeq_(useSeq) {} bool DoInit(TContext& ctx, ISource* src) override { bool hasError = false; INode::TPtr currentWorldsHolder; INode::TPtr seqNode; - if (UseSeq) { + if (UseSeq_) { currentWorldsHolder = new TAstListNodeImpl(GetPos()); seqNode = new TAstListNodeImpl(GetPos()); seqNode->Add("Seq!","world"); } - INode* currentWorlds = UseSeq ? currentWorldsHolder.Get() : this; + INode* currentWorlds = UseSeq_ ? currentWorldsHolder.Get() : this; auto flushCurrentWorlds = [&](bool changeSeq, bool finish) { currentWorldsHolder->Add(Y("return","world")); auto lambda = BuildLambda(GetPos(), Y("world"), Y("block", Q(currentWorldsHolder))); @@ -3097,7 +3097,7 @@ public: } }; - if (TopLevel) { + if (TopLevel_) { for (auto& var: ctx.Variables) { if (!var.second.second->Init(ctx, src)) { hasError = true; @@ -3153,26 +3153,26 @@ public: } for (const auto& p : ctx.PackageVersions) { - Add(Y("set_package_version", BuildQuotedAtom(Pos, p.first), BuildQuotedAtom(Pos, ToString(p.second)))); + Add(Y("set_package_version", BuildQuotedAtom(Pos_, p.first), BuildQuotedAtom(Pos_, ToString(p.second)))); } - Add(Y("import", "aggregate_module", BuildQuotedAtom(Pos, "/lib/yql/aggregate.yqls"))); - Add(Y("import", "window_module", BuildQuotedAtom(Pos, "/lib/yql/window.yqls"))); + Add(Y("import", "aggregate_module", BuildQuotedAtom(Pos_, "/lib/yql/aggregate.yqls"))); + Add(Y("import", "window_module", BuildQuotedAtom(Pos_, "/lib/yql/window.yqls"))); for (const auto& module : ctx.Settings.ModuleMapping) { TString moduleName(module.first + "_module"); moduleName.to_lower(); - Add(Y("import", moduleName, BuildQuotedAtom(Pos, module.second))); + Add(Y("import", moduleName, BuildQuotedAtom(Pos_, module.second))); } for (const auto& moduleAlias : ctx.ImportModuleAliases) { - Add(Y("import", moduleAlias.second, BuildQuotedAtom(Pos, moduleAlias.first))); + Add(Y("import", moduleAlias.second, BuildQuotedAtom(Pos_, moduleAlias.first))); } for (const auto& x : ctx.SimpleUdfs) { - Add(Y("let", x.second, Y("Udf", BuildQuotedAtom(Pos, x.first)))); + Add(Y("let", x.second, Y("Udf", BuildQuotedAtom(Pos_, x.first)))); } if (!ctx.CompactNamedExprs) { - for (auto& nodes: Scoped->NamedNodes) { + for (auto& nodes: Scoped_->NamedNodes) { if (src || ctx.Exports.contains(nodes.first)) { auto& item = nodes.second.front(); if (!item->Node->Init(ctx, src)) { @@ -3189,43 +3189,43 @@ public: } if (ctx.Settings.Mode != NSQLTranslation::ESqlMode::LIBRARY) { - auto configSource = Y("DataSource", BuildQuotedAtom(Pos, TString(ConfigProviderName))); - auto resultSink = Y("DataSink", BuildQuotedAtom(Pos, TString(ResultProviderName))); + auto configSource = Y("DataSource", BuildQuotedAtom(Pos_, TString(ConfigProviderName))); + auto resultSink = Y("DataSink", BuildQuotedAtom(Pos_, TString(ResultProviderName))); for (const auto& warningPragma : ctx.WarningPolicy.GetRules()) { currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "Warning"), BuildQuotedAtom(Pos, warningPragma.GetPattern()), - BuildQuotedAtom(Pos, to_lower(ToString(warningPragma.GetAction())))))); + BuildQuotedAtom(Pos_, "Warning"), BuildQuotedAtom(Pos_, warningPragma.GetPattern()), + BuildQuotedAtom(Pos_, to_lower(ToString(warningPragma.GetAction())))))); } if (ctx.RuntimeLogLevel) { currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "RuntimeLogLevel"), BuildQuotedAtom(Pos, ctx.RuntimeLogLevel)))); + BuildQuotedAtom(Pos_, "RuntimeLogLevel"), BuildQuotedAtom(Pos_, ctx.RuntimeLogLevel)))); } if (ctx.ResultSizeLimit > 0) { currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", resultSink, - BuildQuotedAtom(Pos, "SizeLimit"), BuildQuotedAtom(Pos, ToString(ctx.ResultSizeLimit))))); + BuildQuotedAtom(Pos_, "SizeLimit"), BuildQuotedAtom(Pos_, ToString(ctx.ResultSizeLimit))))); } if (!ctx.PragmaPullUpFlatMapOverJoin) { currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "DisablePullUpFlatMapOverJoin")))); + BuildQuotedAtom(Pos_, "DisablePullUpFlatMapOverJoin")))); } if (ctx.FilterPushdownOverJoinOptionalSide) { currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "FilterPushdownOverJoinOptionalSide")))); + BuildQuotedAtom(Pos_, "FilterPushdownOverJoinOptionalSide")))); } if (!ctx.RotateJoinTree) { currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "RotateJoinTree"), BuildQuotedAtom(Pos, "false")))); + BuildQuotedAtom(Pos_, "RotateJoinTree"), BuildQuotedAtom(Pos_, "false")))); } if (ctx.DiscoveryMode) { currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "DiscoveryMode")))); + BuildQuotedAtom(Pos_, "DiscoveryMode")))); } if (ctx.DqEngineEnable) { @@ -3236,12 +3236,12 @@ public: mode = "force"; } currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "DqEngine"), BuildQuotedAtom(Pos, mode)))); + BuildQuotedAtom(Pos_, "DqEngine"), BuildQuotedAtom(Pos_, mode)))); } if (ctx.CostBasedOptimizer) { currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "CostBasedOptimizer"), BuildQuotedAtom(Pos, ctx.CostBasedOptimizer)))); + BuildQuotedAtom(Pos_, "CostBasedOptimizer"), BuildQuotedAtom(Pos_, ctx.CostBasedOptimizer)))); } if (ctx.JsonQueryReturnsJsonDocument.Defined()) { @@ -3250,59 +3250,59 @@ public: pragmaName = "JsonQueryReturnsJsonDocument"; } - currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, BuildQuotedAtom(Pos, pragmaName)))); + currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, BuildQuotedAtom(Pos_, pragmaName)))); } if (ctx.OrderedColumns) { currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "OrderedColumns")))); + BuildQuotedAtom(Pos_, "OrderedColumns")))); } if (ctx.DeriveColumnOrder) { currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "DeriveColumnOrder")))); + BuildQuotedAtom(Pos_, "DeriveColumnOrder")))); } if (ctx.PqReadByRtmrCluster) { - auto pqSourceAll = Y("DataSource", BuildQuotedAtom(Pos, TString(PqProviderName)), BuildQuotedAtom(Pos, "$all")); + auto pqSourceAll = Y("DataSource", BuildQuotedAtom(Pos_, TString(PqProviderName)), BuildQuotedAtom(Pos_, "$all")); currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", pqSourceAll, - BuildQuotedAtom(Pos, "Attr"), BuildQuotedAtom(Pos, "PqReadByRtmrCluster_"), BuildQuotedAtom(Pos, ctx.PqReadByRtmrCluster)))); + BuildQuotedAtom(Pos_, "Attr"), BuildQuotedAtom(Pos_, "PqReadByRtmrCluster_"), BuildQuotedAtom(Pos_, ctx.PqReadByRtmrCluster)))); - auto rtmrSourceAll = Y("DataSource", BuildQuotedAtom(Pos, TString(RtmrProviderName)), BuildQuotedAtom(Pos, "$all")); + auto rtmrSourceAll = Y("DataSource", BuildQuotedAtom(Pos_, TString(RtmrProviderName)), BuildQuotedAtom(Pos_, "$all")); currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", rtmrSourceAll, - BuildQuotedAtom(Pos, "Attr"), BuildQuotedAtom(Pos, "PqReadByRtmrCluster_"), BuildQuotedAtom(Pos, ctx.PqReadByRtmrCluster)))); + BuildQuotedAtom(Pos_, "Attr"), BuildQuotedAtom(Pos_, "PqReadByRtmrCluster_"), BuildQuotedAtom(Pos_, ctx.PqReadByRtmrCluster)))); if (ctx.PqReadByRtmrCluster != "dq") { // set any dynamic settings for particular RTMR cluster for CommitAll! - auto rtmrSource = Y("DataSource", BuildQuotedAtom(Pos, TString(RtmrProviderName)), BuildQuotedAtom(Pos, ctx.PqReadByRtmrCluster)); + auto rtmrSource = Y("DataSource", BuildQuotedAtom(Pos_, TString(RtmrProviderName)), BuildQuotedAtom(Pos_, ctx.PqReadByRtmrCluster)); currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", rtmrSource, - BuildQuotedAtom(Pos, "Attr"), BuildQuotedAtom(Pos, "Dummy_"), BuildQuotedAtom(Pos, "1")))); + BuildQuotedAtom(Pos_, "Attr"), BuildQuotedAtom(Pos_, "Dummy_"), BuildQuotedAtom(Pos_, "1")))); } } if (ctx.YsonCastToString.Defined()) { const TString pragmaName = *ctx.YsonCastToString ? "YsonCastToString" : "DisableYsonCastToString"; - currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, BuildQuotedAtom(Pos, pragmaName)))); + currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, BuildQuotedAtom(Pos_, pragmaName)))); } if (ctx.UseBlocks) { - currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, BuildQuotedAtom(Pos, "UseBlocks")))); + currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, BuildQuotedAtom(Pos_, "UseBlocks")))); } if (ctx.BlockEngineEnable) { TString mode = ctx.BlockEngineForce ? "force" : "auto"; currentWorlds->Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "BlockEngine"), BuildQuotedAtom(Pos, mode)))); + BuildQuotedAtom(Pos_, "BlockEngine"), BuildQuotedAtom(Pos_, mode)))); } if (ctx.Engine) { Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource, - BuildQuotedAtom(Pos, "Engine"), BuildQuotedAtom(Pos, *ctx.Engine)))); + BuildQuotedAtom(Pos_, "Engine"), BuildQuotedAtom(Pos_, *ctx.Engine)))); } } } - for (auto& block: Blocks) { + for (auto& block: Blocks_) { if (block->SubqueryAlias()) { continue; } @@ -3312,8 +3312,8 @@ public: } } - for (const auto& x : Scoped->Local.ExprClusters) { - auto& data = Scoped->Local.ExprClustersMap[x.Get()]; + for (const auto& x : Scoped_->Local.ExprClusters) { + auto& data = Scoped_->Local.ExprClustersMap[x.Get()]; auto& node = data.second; if (!node->Init(ctx, nullptr)) { @@ -3324,15 +3324,15 @@ public: Add(Y("let", data.first, node)); } - if (UseSeq) { + if (UseSeq_) { flushCurrentWorlds(false, false); } - for (auto& block: Blocks) { + for (auto& block: Blocks_) { const auto subqueryAliasPtr = block->SubqueryAlias(); if (subqueryAliasPtr) { if (block->UsedSubquery()) { - if (UseSeq) { + if (UseSeq_) { flushCurrentWorlds(true, false); } @@ -3348,36 +3348,36 @@ public: Add(Y("let", ref, block)); } else { currentWorlds->Add(Y("let", "world", block)); - if (UseSeq) { + if (UseSeq_) { flushCurrentWorlds(false, false); } } } } - if (UseSeq) { + if (UseSeq_) { flushCurrentWorlds(false, true); } - if (TopLevel) { + if (TopLevel_) { if (ctx.UniversalAliases) { - decltype(Nodes) preparedNodes; - preparedNodes.swap(Nodes); + decltype(Nodes_) preparedNodes; + preparedNodes.swap(Nodes_); for (const auto& [name, node] : ctx.UniversalAliases) { Add(Y("let", name, node)); } - Nodes.insert(Nodes.end(), preparedNodes.begin(), preparedNodes.end()); + Nodes_.insert(Nodes_.end(), preparedNodes.begin(), preparedNodes.end()); } - decltype(Nodes) imports; + decltype(Nodes_) imports; for (const auto& [alias, path]: ctx.RequiredModules) { - imports.push_back(Y("import", alias, BuildQuotedAtom(Pos, path))); + imports.push_back(Y("import", alias, BuildQuotedAtom(Pos_, path))); } - Nodes.insert(Nodes.begin(), std::make_move_iterator(imports.begin()), std::make_move_iterator(imports.end())); + Nodes_.insert(Nodes_.begin(), std::make_move_iterator(imports.begin()), std::make_move_iterator(imports.end())); for (const auto& symbol: ctx.Exports) { if (ctx.CompactNamedExprs) { - auto node = Scoped->LookupNode(symbol); + auto node = Scoped_->LookupNode(symbol); YQL_ENSURE(node); if (!node->Init(ctx, src)) { hasError = true; @@ -3389,7 +3389,7 @@ public: } } - if (!TopLevel || ctx.Settings.Mode != NSQLTranslation::ESqlMode::LIBRARY) { + if (!TopLevel_ || ctx.Settings.Mode != NSQLTranslation::ESqlMode::LIBRARY) { Add(Y("return", "world")); } @@ -3400,10 +3400,10 @@ public: return {}; } private: - TVector<TNodePtr> Blocks; - const bool TopLevel; - TScopedStatePtr Scoped; - const bool UseSeq; + TVector<TNodePtr> Blocks_; + const bool TopLevel_; + TScopedStatePtr Scoped_; + const bool UseSeq_; }; TNodePtr BuildQuery(TPosition pos, const TVector<TNodePtr>& blocks, bool topLevel, TScopedStatePtr scoped, bool useSeq) { @@ -3414,59 +3414,59 @@ class TPragmaNode final : public INode { public: TPragmaNode(TPosition pos, const TString& prefix, const TString& name, const TVector<TDeferredAtom>& values, bool valueDefault) : INode(pos) - , Prefix(prefix) - , Name(name) - , Values(values) - , ValueDefault(valueDefault) + , Prefix_(prefix) + , Name_(name) + , Values_(values) + , ValueDefault_(valueDefault) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); TString serviceName; TString cluster; - if (std::find(Providers.cbegin(), Providers.cend(), Prefix) != Providers.cend()) { + if (std::find(Providers.cbegin(), Providers.cend(), Prefix_) != Providers.cend()) { cluster = "$all"; - serviceName = Prefix; + serviceName = Prefix_; } else { - serviceName = *ctx.GetClusterProvider(Prefix, cluster); + serviceName = *ctx.GetClusterProvider(Prefix_, cluster); } - auto datasource = Y("DataSource", BuildQuotedAtom(Pos, serviceName)); - if (Prefix != ConfigProviderName) { - datasource = L(datasource, BuildQuotedAtom(Pos, cluster)); + auto datasource = Y("DataSource", BuildQuotedAtom(Pos_, serviceName)); + if (Prefix_ != ConfigProviderName) { + datasource = L(datasource, BuildQuotedAtom(Pos_, cluster)); } - Node = Y(); - Node = L(Node, AstNode(TString(ConfigureName))); - Node = L(Node, AstNode(TString(TStringBuf("world")))); - Node = L(Node, datasource); + Node_ = Y(); + Node_ = L(Node_, AstNode(TString(ConfigureName))); + Node_ = L(Node_, AstNode(TString(TStringBuf("world")))); + Node_ = L(Node_, datasource); - if (Name == TStringBuf("flags")) { - for (ui32 i = 0; i < Values.size(); ++i) { - Node = L(Node, Values[i].Build()); + if (Name_ == TStringBuf("flags")) { + for (ui32 i = 0; i < Values_.size(); ++i) { + Node_ = L(Node_, Values_[i].Build()); } } - else if (Name == TStringBuf("AddFileByUrl") || Name == TStringBuf("SetFileOption") || Name == TStringBuf("AddFolderByUrl") || Name == TStringBuf("ImportUdfs") || Name == TStringBuf("SetPackageVersion")) { - Node = L(Node, BuildQuotedAtom(Pos, Name)); - for (ui32 i = 0; i < Values.size(); ++i) { - Node = L(Node, Values[i].Build()); + else if (Name_ == TStringBuf("AddFileByUrl") || Name_ == TStringBuf("SetFileOption") || Name_ == TStringBuf("AddFolderByUrl") || Name_ == TStringBuf("ImportUdfs") || Name_ == TStringBuf("SetPackageVersion")) { + Node_ = L(Node_, BuildQuotedAtom(Pos_, Name_)); + for (ui32 i = 0; i < Values_.size(); ++i) { + Node_ = L(Node_, Values_[i].Build()); } } - else if (Name == TStringBuf("auth")) { - Node = L(Node, BuildQuotedAtom(Pos, "Auth")); - Node = L(Node, Values.empty() ? BuildQuotedAtom(Pos, TString()) : Values.front().Build()); + else if (Name_ == TStringBuf("auth")) { + Node_ = L(Node_, BuildQuotedAtom(Pos_, "Auth")); + Node_ = L(Node_, Values_.empty() ? BuildQuotedAtom(Pos_, TString()) : Values_.front().Build()); } else { - Node = L(Node, BuildQuotedAtom(Pos, "Attr")); - Node = L(Node, BuildQuotedAtom(Pos, Name)); - if (!ValueDefault) { - Node = L(Node, Values.empty() ? BuildQuotedAtom(Pos, TString()) : Values.front().Build()); + Node_ = L(Node_, BuildQuotedAtom(Pos_, "Attr")); + Node_ = L(Node_, BuildQuotedAtom(Pos_, Name_)); + if (!ValueDefault_) { + Node_ = L(Node_, Values_.empty() ? BuildQuotedAtom(Pos_, TString()) : Values_.front().Build()); } } - if (!Node->Init(ctx, FakeSource.Get())) { + if (!Node_->Init(ctx, FakeSource_.Get())) { return false; } @@ -3474,7 +3474,7 @@ public: } TAstNode* Translate(TContext& ctx) const final { - return Node->Translate(ctx); + return Node_->Translate(ctx); } TPtr DoClone() const final { @@ -3482,12 +3482,12 @@ public: } private: - TString Prefix; - TString Name; - TVector<TDeferredAtom> Values; - bool ValueDefault; - TNodePtr Node; - TSourcePtr FakeSource; + TString Prefix_; + TString Name_; + TVector<TDeferredAtom> Values_; + bool ValueDefault_; + TNodePtr Node_; + TSourcePtr FakeSource_; }; TNodePtr BuildPragma(TPosition pos, const TString& prefix, const TString& name, const TVector<TDeferredAtom>& values, bool valueDefault) { @@ -3498,23 +3498,23 @@ class TSqlLambda final : public TAstListNode { public: TSqlLambda(TPosition pos, TVector<TString>&& args, TVector<TNodePtr>&& exprSeq) : TAstListNode(pos) - , Args(args) - , ExprSeq(exprSeq) + , Args_(args) + , ExprSeq_(exprSeq) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - for (auto& exprPtr: ExprSeq) { - if (!exprPtr->Init(ctx, FakeSource.Get())) { + for (auto& exprPtr: ExprSeq_) { + if (!exprPtr->Init(ctx, FakeSource_.Get())) { return {}; } } - YQL_ENSURE(!ExprSeq.empty()); + YQL_ENSURE(!ExprSeq_.empty()); auto body = Y(); - auto end = ExprSeq.end() - 1; - for (auto iter = ExprSeq.begin(); iter != end; ++iter) { + auto end = ExprSeq_.end() - 1; + for (auto iter = ExprSeq_.begin(); iter != end; ++iter) { auto exprPtr = *iter; const auto& label = exprPtr->GetLabel(); YQL_ENSURE(label); @@ -3522,7 +3522,7 @@ public: } body = Y("block", Q(L(body, Y("return", *end)))); auto args = Y(); - for (const auto& arg: Args) { + for (const auto& arg: Args_) { args = L(args, BuildAtom(GetPos(), arg)); } Add("lambda", Q(args), body); @@ -3530,17 +3530,17 @@ public: } TPtr DoClone() const final { - return new TSqlLambda(Pos, TVector<TString>(Args), CloneContainer(ExprSeq)); + return new TSqlLambda(Pos_, TVector<TString>(Args_), CloneContainer(ExprSeq_)); } void DoUpdateState() const override { - State.Set(ENodeState::Const); + State_.Set(ENodeState::Const); } private: - TVector<TString> Args; - TVector<TNodePtr> ExprSeq; - TSourcePtr FakeSource; + TVector<TString> Args_; + TVector<TNodePtr> ExprSeq_; + TSourcePtr FakeSource_; }; TNodePtr BuildSqlLambda(TPosition pos, TVector<TString>&& args, TVector<TNodePtr>&& exprSeq) { @@ -3551,49 +3551,49 @@ class TWorldIf final : public TAstListNode { public: TWorldIf(TPosition pos, TNodePtr predicate, TNodePtr thenNode, TNodePtr elseNode, bool isEvaluate) : TAstListNode(pos) - , Predicate(predicate) - , ThenNode(thenNode) - , ElseNode(elseNode) - , IsEvaluate(isEvaluate) + , Predicate_(predicate) + , ThenNode_(thenNode) + , ElseNode_(elseNode) + , IsEvaluate_(isEvaluate) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { - if (!Predicate->Init(ctx, FakeSource.Get())) { + if (!Predicate_->Init(ctx, FakeSource_.Get())) { return{}; } - Add(IsEvaluate ? "EvaluateIf!" : "If!"); + Add(IsEvaluate_ ? "EvaluateIf!" : "If!"); Add("world"); - auto coalesced = Y("Coalesce", Predicate, Y("Bool", Q("false"))); - Add(IsEvaluate ? Y("EvaluateExpr", Y("EnsureType", coalesced, Y("DataType", Q("Bool")))) : coalesced); + auto coalesced = Y("Coalesce", Predicate_, Y("Bool", Q("false"))); + Add(IsEvaluate_ ? Y("EvaluateExpr", Y("EnsureType", coalesced, Y("DataType", Q("Bool")))) : coalesced); - if (!ThenNode->Init(ctx, FakeSource.Get())) { + if (!ThenNode_->Init(ctx, FakeSource_.Get())) { return{}; } - Add(ThenNode); - if (ElseNode) { - if (!ElseNode->Init(ctx, FakeSource.Get())) { + Add(ThenNode_); + if (ElseNode_) { + if (!ElseNode_->Init(ctx, FakeSource_.Get())) { return{}; } - Add(ElseNode); + Add(ElseNode_); } return TAstListNode::DoInit(ctx, src); } TPtr DoClone() const final { - return new TWorldIf(GetPos(), SafeClone(Predicate), SafeClone(ThenNode), SafeClone(ElseNode), IsEvaluate); + return new TWorldIf(GetPos(), SafeClone(Predicate_), SafeClone(ThenNode_), SafeClone(ElseNode_), IsEvaluate_); } private: - TNodePtr Predicate; - TNodePtr ThenNode; - TNodePtr ElseNode; - bool IsEvaluate; - TSourcePtr FakeSource; + TNodePtr Predicate_; + TNodePtr ThenNode_; + TNodePtr ElseNode_; + bool IsEvaluate_; + TSourcePtr FakeSource_; }; TNodePtr BuildWorldIfNode(TPosition pos, TNodePtr predicate, TNodePtr thenNode, TNodePtr elseNode, bool isEvaluate) { @@ -3604,49 +3604,49 @@ class TWorldFor final : public TAstListNode { public: TWorldFor(TPosition pos, TNodePtr list, TNodePtr bodyNode, TNodePtr elseNode, bool isEvaluate, bool isParallel) : TAstListNode(pos) - , List(list) - , BodyNode(bodyNode) - , ElseNode(elseNode) - , IsEvaluate(isEvaluate) - , IsParallel(isParallel) + , List_(list) + , BodyNode_(bodyNode) + , ElseNode_(elseNode) + , IsEvaluate_(isEvaluate) + , IsParallel_(isParallel) { - FakeSource = BuildFakeSource(pos); + FakeSource_ = BuildFakeSource(pos); } bool DoInit(TContext& ctx, ISource* src) override { - if (!List->Init(ctx, FakeSource.Get())) { + if (!List_->Init(ctx, FakeSource_.Get())) { return{}; } - Add(TStringBuilder() << (IsEvaluate ? "Evaluate": "") << (IsParallel ? "Parallel" : "") << "For!"); + Add(TStringBuilder() << (IsEvaluate_ ? "Evaluate": "") << (IsParallel_ ? "Parallel" : "") << "For!"); Add("world"); - Add(IsEvaluate ? Y("EvaluateExpr", List) : List); + Add(IsEvaluate_ ? Y("EvaluateExpr", List_) : List_); - if (!BodyNode->Init(ctx, FakeSource.Get())) { + if (!BodyNode_->Init(ctx, FakeSource_.Get())) { return{}; } - Add(BodyNode); + Add(BodyNode_); - if (ElseNode) { - if (!ElseNode->Init(ctx, FakeSource.Get())) { + if (ElseNode_) { + if (!ElseNode_->Init(ctx, FakeSource_.Get())) { return{}; } - Add(ElseNode); + Add(ElseNode_); } return TAstListNode::DoInit(ctx, src); } TPtr DoClone() const final { - return new TWorldFor(GetPos(), SafeClone(List), SafeClone(BodyNode), SafeClone(ElseNode), IsEvaluate, IsParallel); + return new TWorldFor(GetPos(), SafeClone(List_), SafeClone(BodyNode_), SafeClone(ElseNode_), IsEvaluate_, IsParallel_); } private: - TNodePtr List; - TNodePtr BodyNode; - TNodePtr ElseNode; - bool IsEvaluate; - bool IsParallel; - TSourcePtr FakeSource; + TNodePtr List_; + TNodePtr BodyNode_; + TNodePtr ElseNode_; + bool IsEvaluate_; + bool IsParallel_; + TSourcePtr FakeSource_; }; TNodePtr BuildWorldForNode(TPosition pos, TNodePtr list, TNodePtr bodyNode, TNodePtr elseNode, bool isEvaluate, bool isParallel) { @@ -3657,50 +3657,50 @@ class TAnalyzeNode final : public TAstListNode { public: TAnalyzeNode(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TAnalyzeParams& params, TScopedStatePtr scoped) : TAstListNode(pos) - , Service(service) - , Cluster(cluster) - , Params(params) - , Scoped(scoped) + , Service_(service) + , Cluster_(cluster) + , Params_(params) + , Scoped_(scoped) { - FakeSource = BuildFakeSource(pos); - scoped->UseCluster(Service, Cluster); + FakeSource_ = BuildFakeSource(pos); + scoped->UseCluster(Service_, Cluster_); } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - auto keys = Params.Table->Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::DROP); - if (!keys || !keys->Init(ctx, FakeSource.Get())) { + auto keys = Params_.Table->Keys->GetTableKeys()->BuildKeys(ctx, ITableKeys::EBuildKeysMode::DROP); + if (!keys || !keys->Init(ctx, FakeSource_.Get())) { return false; } auto opts = Y(); auto columns = Y(); - for (const auto& column: Params.Columns) { + for (const auto& column: Params_.Columns) { columns->Add(Q(column)); } opts->Add(Q(Y(Q("columns"), Q(columns)))); opts->Add(Q(Y(Q("mode"), Q("analyze")))); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Service), Scoped->WrapCluster(Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, Service_), Scoped_->WrapCluster(Cluster_, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(opts))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); - return TAstListNode::DoInit(ctx, FakeSource.Get()); + return TAstListNode::DoInit(ctx, FakeSource_.Get()); } TPtr DoClone() const final { return {}; } private: - TString Service; - TDeferredAtom Cluster; - TAnalyzeParams Params; + TString Service_; + TDeferredAtom Cluster_; + TAnalyzeParams Params_; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; }; TNodePtr BuildAnalyze(TPosition pos, const TString& service, const TDeferredAtom& cluster, const TAnalyzeParams& params, TScopedStatePtr scoped) { @@ -3711,22 +3711,22 @@ class TShowCreateNode final : public TAstListNode { public: TShowCreateNode(TPosition pos, const TTableRef& tr, const TString& type, TScopedStatePtr scoped) : TAstListNode(pos) - , Table(tr) - , Type(type) - , Scoped(scoped) - , FakeSource(BuildFakeSource(pos)) + , Table_(tr) + , Type_(type) + , Scoped_(scoped) + , FakeSource_(BuildFakeSource(pos)) { - Scoped->UseCluster(Table.Service, Table.Cluster); + Scoped_->UseCluster(Table_.Service, Table_.Cluster); } bool DoInit(TContext& ctx, ISource* src) override { - if (Table.Options) { - if (!Table.Options->Init(ctx, src)) { + if (Table_.Options) { + if (!Table_.Options->Init(ctx, src)) { return false; } - Table.Options = L(Table.Options, Q(Y(Q(Type)))); + Table_.Options = L(Table_.Options, Q(Y(Q(Type_)))); } else { - Table.Options = Y(Q(Y(Q(Type)))); + Table_.Options = Y(Q(Y(Q(Type_)))); } bool asRef = ctx.PragmaRefSelect; @@ -3743,12 +3743,12 @@ public: settings = L(settings, Q(Y(Q("autoref")))); } - TNodePtr node(BuildInputTables(Pos, {Table}, false, Scoped)); + TNodePtr node(BuildInputTables(Pos_, {Table_}, false, Scoped_)); if (!node->Init(ctx, src)) { return false; } - auto source = BuildTableSource(TPosition(ctx.Pos()), Table); + auto source = BuildTableSource(TPosition(ctx.Pos()), Table_); if (!source) { return false; } @@ -3758,7 +3758,7 @@ public: } node = L(node, Y("let", "output", output)); - auto writeResult(BuildWriteResult(Pos, "output", settings)); + auto writeResult(BuildWriteResult(Pos_, "output", settings)); if (!writeResult->Init(ctx, src)) { return false; } @@ -3766,18 +3766,18 @@ public: node = L(node, Y("return", "world")); Add("block", Q(node)); - return TAstListNode::DoInit(ctx, FakeSource.Get()); + return TAstListNode::DoInit(ctx, FakeSource_.Get()); } TPtr DoClone() const final { return {}; } private: - TTableRef Table; + TTableRef Table_; // showCreateTable, showCreateView, ... - TString Type; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; + TString Type_; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; }; TNodePtr BuildShowCreate(TPosition pos, const TTableRef& tr, const TString& type, TScopedStatePtr scoped) { @@ -3797,17 +3797,17 @@ public: const TObjectOperatorContext& context) : TBase(pos) , TObjectOperatorContext(context) - , Prefix(prefix) - , Id(objectId) + , Prefix_(prefix) + , Id_(objectId) {} bool DoInit(TContext& ctx, ISource* src) final { auto keys = Y("Key"); - keys = L(keys, Q(Y(Q("backupCollection"), Y("String", BuildQuotedAtom(Pos, Id)), Y("String", BuildQuotedAtom(Pos, Prefix))))); + keys = L(keys, Q(Y(Q("backupCollection"), Y("String", BuildQuotedAtom(Pos_, Id_)), Y("String", BuildQuotedAtom(Pos_, Prefix_))))); auto options = this->FillOptions(ctx, Y()); Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, ServiceId), Scoped->WrapCluster(Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, ServiceId), Scoped_->WrapCluster(Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(options))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); @@ -3818,8 +3818,8 @@ public: virtual INode::TPtr FillOptions(TContext& ctx, INode::TPtr options) const = 0; protected: - TString Prefix; - TString Id; + TString Prefix_; + TString Id_; }; class TCreateBackupCollectionNode @@ -3834,23 +3834,23 @@ public: const TCreateBackupCollectionParameters& params, const TObjectOperatorContext& context) : TBase(pos, prefix, objectId, context) - , Params(params) + , Params_(params) {} virtual INode::TPtr FillOptions(TContext& ctx, INode::TPtr options) const final { options->Add(Q(Y(Q("mode"), Q("create")))); auto settings = Y(); - for (auto& [key, value] : Params.Settings) { - settings->Add(Q(Y(BuildQuotedAtom(Pos, key), Y("String", value.Build())))); + for (auto& [key, value] : Params_.Settings) { + settings->Add(Q(Y(BuildQuotedAtom(Pos_, key), Y("String", value.Build())))); } options->Add(Q(Y(Q("settings"), Q(settings)))); auto entries = Y(); - if (Params.Database) { + if (Params_.Database) { entries->Add(Q(Y(Q(Y(Q("type"), Q("database")))))); } - for (auto& table : Params.Tables) { + for (auto& table : Params_.Tables) { auto path = ctx.GetPrefixedPath(ServiceId, Cluster, table); entries->Add(Q(Y(Q(Y(Q("type"), Q("table"))), Q(Y(Q("path"), path))))); } @@ -3860,11 +3860,11 @@ public: } TPtr DoClone() const final { - return new TCreateBackupCollectionNode(GetPos(), Prefix, Id, Params, *this); + return new TCreateBackupCollectionNode(GetPos(), Prefix_, Id_, Params_, *this); } private: - TCreateBackupCollectionParameters Params; + TCreateBackupCollectionParameters Params_; }; class TAlterBackupCollectionNode @@ -3879,33 +3879,33 @@ public: const TAlterBackupCollectionParameters& params, const TObjectOperatorContext& context) : TBase(pos, prefix, objectId, context) - , Params(params) + , Params_(params) {} virtual INode::TPtr FillOptions(TContext& ctx, INode::TPtr options) const final { options->Add(Q(Y(Q("mode"), Q("alter")))); auto settings = Y(); - for (auto& [key, value] : Params.Settings) { - settings->Add(Q(Y(BuildQuotedAtom(Pos, key), Y("String", value.Build())))); + for (auto& [key, value] : Params_.Settings) { + settings->Add(Q(Y(BuildQuotedAtom(Pos_, key), Y("String", value.Build())))); } options->Add(Q(Y(Q("settings"), Q(settings)))); auto resetSettings = Y(); - for (auto& key : Params.SettingsToReset) { - resetSettings->Add(BuildQuotedAtom(Pos, key)); + for (auto& key : Params_.SettingsToReset) { + resetSettings->Add(BuildQuotedAtom(Pos_, key)); } options->Add(Q(Y(Q("resetSettings"), Q(resetSettings)))); auto entries = Y(); - if (Params.Database != TAlterBackupCollectionParameters::EDatabase::Unchanged) { - entries->Add(Q(Y(Q(Y(Q("type"), Q("database"))), Q(Y(Q("action"), Q(Params.Database == TAlterBackupCollectionParameters::EDatabase::Add ? "add" : "drop")))))); + if (Params_.Database != TAlterBackupCollectionParameters::EDatabase::Unchanged) { + entries->Add(Q(Y(Q(Y(Q("type"), Q("database"))), Q(Y(Q("action"), Q(Params_.Database == TAlterBackupCollectionParameters::EDatabase::Add ? "add" : "drop")))))); } - for (auto& table : Params.TablesToAdd) { + for (auto& table : Params_.TablesToAdd) { auto path = ctx.GetPrefixedPath(ServiceId, Cluster, table); entries->Add(Q(Y(Q(Y(Q("type"), Q("table"))), Q(Y(Q("path"), path)), Q(Y(Q("action"), Q("add")))))); } - for (auto& table : Params.TablesToDrop) { + for (auto& table : Params_.TablesToDrop) { auto path = ctx.GetPrefixedPath(ServiceId, Cluster, table); entries->Add(Q(Y(Q(Y(Q("type"), Q("table"))), Q(Y(Q("path"), path)), Q(Y(Q("action"), Q("drop")))))); } @@ -3915,11 +3915,11 @@ public: } TPtr DoClone() const final { - return new TAlterBackupCollectionNode(GetPos(), Prefix, Id, Params, *this); + return new TAlterBackupCollectionNode(GetPos(), Prefix_, Id_, Params_, *this); } private: - TAlterBackupCollectionParameters Params; + TAlterBackupCollectionParameters Params_; }; class TDropBackupCollectionNode @@ -3944,7 +3944,7 @@ public: TPtr DoClone() const final { TDropBackupCollectionParameters params; - return new TDropBackupCollectionNode(GetPos(), Prefix, Id, params, *this); + return new TDropBackupCollectionNode(GetPos(), Prefix_, Id_, params, *this); } }; @@ -3992,27 +3992,27 @@ public: const TObjectOperatorContext& context) : TBase(pos) , TObjectOperatorContext(context) - , Prefix(prefix) - , Id(id) - , Params(params) + , Prefix_(prefix) + , Id_(id) + , Params_(params) { - Y_UNUSED(Params); + Y_UNUSED(Params_); } bool DoInit(TContext& ctx, ISource* src) override { auto keys = Y("Key"); - keys = L(keys, Q(Y(Q("backup"), Y("String", BuildQuotedAtom(Pos, Id)), Y("String", BuildQuotedAtom(Pos, Prefix))))); + keys = L(keys, Q(Y(Q("backup"), Y("String", BuildQuotedAtom(Pos_, Id_)), Y("String", BuildQuotedAtom(Pos_, Prefix_))))); auto opts = Y(); - if (Params.Incremental) { + if (Params_.Incremental) { opts->Add(Q(Y(Q("mode"), Q("backupIncremental")))); } else { opts->Add(Q(Y(Q("mode"), Q("backup")))); } Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, ServiceId), Scoped->WrapCluster(Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, ServiceId), Scoped_->WrapCluster(Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(opts))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); @@ -4021,12 +4021,12 @@ public: } TPtr DoClone() const final { - return new TBackupNode(GetPos(), Prefix, Id, Params, *this); + return new TBackupNode(GetPos(), Prefix_, Id_, Params_, *this); } private: - TString Prefix; - TString Id; - TBackupParameters Params; + TString Prefix_; + TString Id_; + TBackupParameters Params_; }; TNodePtr BuildBackup( @@ -4053,26 +4053,26 @@ public: const TObjectOperatorContext& context) : TBase(pos) , TObjectOperatorContext(context) - , Prefix(prefix) - , Id(id) - , Params(params) + , Prefix_(prefix) + , Id_(id) + , Params_(params) { - Y_UNUSED(Params); + Y_UNUSED(Params_); } bool DoInit(TContext& ctx, ISource* src) override { auto keys = Y("Key"); - keys = L(keys, Q(Y(Q("restore"), Y("String", BuildQuotedAtom(Pos, Id)), Y("String", BuildQuotedAtom(Pos, Prefix))))); + keys = L(keys, Q(Y(Q("restore"), Y("String", BuildQuotedAtom(Pos_, Id_)), Y("String", BuildQuotedAtom(Pos_, Prefix_))))); auto opts = Y(); opts->Add(Q(Y(Q("mode"), Q("restore")))); - if (Params.At) { - opts->Add(Q(Y(Q("at"), BuildQuotedAtom(Pos, Params.At)))); + if (Params_.At) { + opts->Add(Q(Y(Q("at"), BuildQuotedAtom(Pos_, Params_.At)))); } Add("block", Q(Y( - Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, ServiceId), Scoped->WrapCluster(Cluster, ctx))), + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos_, ServiceId), Scoped_->WrapCluster(Cluster, ctx))), Y("let", "world", Y(TString(WriteName), "world", "sink", keys, Y("Void"), Q(opts))), Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) ))); @@ -4081,12 +4081,12 @@ public: } TPtr DoClone() const final { - return new TRestoreNode(GetPos(), Prefix, Id, Params, *this); + return new TRestoreNode(GetPos(), Prefix_, Id_, Params_, *this); } private: - TString Prefix; - TString Id; - TRestoreParameters Params; + TString Prefix_; + TString Id_; + TRestoreParameters Params_; }; TNodePtr BuildRestore( diff --git a/yql/essentials/sql/v1/select.cpp b/yql/essentials/sql/v1/select.cpp index e34ddb7c43f..5a17bba297c 100644 --- a/yql/essentials/sql/v1/select.cpp +++ b/yql/essentials/sql/v1/select.cpp @@ -17,76 +17,76 @@ class TSubqueryNode: public INode { public: TSubqueryNode(TSourcePtr&& source, const TString& alias, bool inSubquery, int ensureTupleSize, TScopedStatePtr scoped) : INode(source->GetPos()) - , Source(std::move(source)) - , Alias(alias) - , InSubquery(inSubquery) - , EnsureTupleSize(ensureTupleSize) - , Scoped(scoped) + , Source_(std::move(source)) + , Alias_(alias) + , InSubquery_(inSubquery) + , EnsureTupleSize_(ensureTupleSize) + , Scoped_(scoped) { - YQL_ENSURE(!Alias.empty()); + YQL_ENSURE(!Alias_.empty()); } ISource* GetSource() override { - return Source.Get(); + return Source_.Get(); } bool DoInit(TContext& ctx, ISource* src) override { YQL_ENSURE(!src, "Source not expected for subquery node"); - Source->UseAsInner(); - if (!Source->Init(ctx, nullptr)) { + Source_->UseAsInner(); + if (!Source_->Init(ctx, nullptr)) { return false; } TTableList tableList; - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); - auto tables = BuildInputTables(Pos, tableList, InSubquery, Scoped); - if (!tables->Init(ctx, Source.Get())) { + auto tables = BuildInputTables(Pos_, tableList, InSubquery_, Scoped_); + if (!tables->Init(ctx, Source_.Get())) { return false; } - auto source = Source->Build(ctx); + auto source = Source_->Build(ctx); if (!source) { return false; } - if (EnsureTupleSize != -1) { - source = Y("EnsureTupleSize", source, Q(ToString(EnsureTupleSize))); + if (EnsureTupleSize_ != -1) { + source = Y("EnsureTupleSize", source, Q(ToString(EnsureTupleSize_))); } - Node = Y("let", Alias, Y("block", Q(L(tables, Y("return", Q(Y("world", source))))))); - IsUsed = true; + Node_ = Y("let", Alias_, Y("block", Q(L(tables, Y("return", Q(Y("world", source))))))); + IsUsed_ = true; return true; } void DoUpdateState() const override { - State.Set(ENodeState::Const, true); + State_.Set(ENodeState::Const, true); } bool UsedSubquery() const override { - return IsUsed; + return IsUsed_; } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } const TString* SubqueryAlias() const override { - return &Alias; + return &Alias_; } TPtr DoClone() const final { - return new TSubqueryNode(Source->CloneSource(), Alias, InSubquery, EnsureTupleSize, Scoped); + return new TSubqueryNode(Source_->CloneSource(), Alias_, InSubquery_, EnsureTupleSize_, Scoped_); } protected: - TSourcePtr Source; - TNodePtr Node; - const TString Alias; - const bool InSubquery; - const int EnsureTupleSize; - bool IsUsed = false; - TScopedStatePtr Scoped; + TSourcePtr Source_; + TNodePtr Node_; + const TString Alias_; + const bool InSubquery_; + const int EnsureTupleSize_; + bool IsUsed_ = false; + TScopedStatePtr Scoped_; }; TNodePtr BuildSubquery(TSourcePtr source, const TString& alias, bool inSubquery, int ensureTupleSize, TScopedStatePtr scoped) { @@ -97,81 +97,81 @@ class TSourceNode: public INode { public: TSourceNode(TPosition pos, TSourcePtr&& source, bool checkExist, bool withTables) : INode(pos) - , Source(std::move(source)) - , CheckExist(checkExist) - , WithTables(withTables) + , Source_(std::move(source)) + , CheckExist_(checkExist) + , WithTables_(withTables) {} ISource* GetSource() override { - return Source.Get(); + return Source_.Get(); } bool DoInit(TContext& ctx, ISource* src) override { - if (AsInner) { - Source->UseAsInner(); + if (AsInner_) { + Source_->UseAsInner(); } - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - Node = Source->Build(ctx); - if (!Node) { + Node_ = Source_->Build(ctx); + if (!Node_) { return false; } if (src) { if (IsSubquery()) { /// should be not used? - auto columnsPtr = Source->GetColumns(); + auto columnsPtr = Source_->GetColumns(); if (columnsPtr && (columnsPtr->All || columnsPtr->QualifiedAll || columnsPtr->List.size() == 1)) { - Node = Y("SingleMember", Y("SqlAccess", Q("dict"), Y("Take", Node, Y("Uint64", Q("1"))), Y("Uint64", Q("0")))); + Node_ = Y("SingleMember", Y("SqlAccess", Q("dict"), Y("Take", Node_, Y("Uint64", Q("1"))), Y("Uint64", Q("0")))); } else { - ctx.Error(Pos) << "Source used in expression should contain one concrete column"; - if (RefPos) { - ctx.Error(*RefPos) << "Source is used here"; + ctx.Error(Pos_) << "Source used in expression should contain one concrete column"; + if (RefPos_) { + ctx.Error(*RefPos_) << "Source is used here"; } return false; } } - src->AddDependentSource(Source); + src->AddDependentSource(Source_); } - if (Node && WithTables) { + if (Node_ && WithTables_) { TTableList tableList; - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); TNodePtr inputTables(BuildInputTables(ctx.Pos(), tableList, IsSubquery(), ctx.Scoped)); - if (!inputTables->Init(ctx, Source.Get())) { + if (!inputTables->Init(ctx, Source_.Get())) { return false; } auto blockContent = inputTables; - blockContent = L(blockContent, Y("return", Node)); - Node = Y("block", Q(blockContent)); + blockContent = L(blockContent, Y("return", Node_)); + Node_ = Y("block", Q(blockContent)); } return true; } bool IsSubquery() const { - return !AsInner && Source->IsSelect() && !CheckExist; + return !AsInner_ && Source_->IsSelect() && !CheckExist_; } void DoUpdateState() const override { - State.Set(ENodeState::Const, IsSubquery()); + State_.Set(ENodeState::Const, IsSubquery()); } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } TPtr DoClone() const final { - return new TSourceNode(Pos, Source->CloneSource(), CheckExist, WithTables); + return new TSourceNode(Pos_, Source_->CloneSource(), CheckExist_, WithTables_); } protected: - TSourcePtr Source; - TNodePtr Node; - bool CheckExist; - bool WithTables; + TSourcePtr Source_; + TNodePtr Node_; + bool CheckExist_; + bool WithTables_; }; TNodePtr BuildSourceNode(TPosition pos, TSourcePtr source, bool checkExist, bool withTables) { @@ -182,8 +182,8 @@ class TFakeSource: public ISource { public: TFakeSource(TPosition pos, bool missingFrom, bool inSubquery) : ISource(pos) - , MissingFrom(missingFrom) - , InSubquery(inSubquery) + , MissingFrom_(missingFrom) + , InSubquery_(inSubquery) {} bool IsFake() const override { @@ -195,7 +195,7 @@ public: if (column.CanBeType()) { return true; } - ctx.Error(Pos) << (MissingFrom ? "Column references are not allowed without FROM" : "Source does not allow column references"); + ctx.Error(Pos_) << (MissingFrom_ ? "Column references are not allowed without FROM" : "Source does not allow column references"); ctx.Error(column.GetPos()) << "Column reference " << (column.GetColumnName() ? "'" + *column.GetColumnName() + "'" : "(expr)"); return {}; @@ -203,15 +203,15 @@ public: bool AddFilter(TContext& ctx, TNodePtr filter) override { Y_UNUSED(filter); - auto pos = filter ? filter->GetPos() : Pos; - ctx.Error(pos) << (MissingFrom ? "Filtering is not allowed without FROM" : "Source does not allow filtering"); + auto pos = filter ? filter->GetPos() : Pos_; + ctx.Error(pos) << (MissingFrom_ ? "Filtering is not allowed without FROM" : "Source does not allow filtering"); return false; } TNodePtr Build(TContext& ctx) override { Y_UNUSED(ctx); auto ret = Y("AsList", Y("AsStruct")); - if (InSubquery) { + if (InSubquery_) { return Y("WithWorld", ret, "world"); } else { return ret; @@ -220,33 +220,33 @@ public: bool AddGroupKey(TContext& ctx, const TString& column) override { Y_UNUSED(column); - ctx.Error(Pos) << "Grouping is not allowed " << (MissingFrom ? "without FROM" : "in this context"); + ctx.Error(Pos_) << "Grouping is not allowed " << (MissingFrom_ ? "without FROM" : "in this context"); return false; } bool AddAggregation(TContext& ctx, TAggregationPtr aggr) override { YQL_ENSURE(aggr); - ctx.Error(aggr->GetPos()) << "Aggregation is not allowed " << (MissingFrom ? "without FROM" : "in this context"); + ctx.Error(aggr->GetPos()) << "Aggregation is not allowed " << (MissingFrom_ ? "without FROM" : "in this context"); return false; } bool AddAggregationOverWindow(TContext& ctx, const TString& windowName, TAggregationPtr func) override { Y_UNUSED(windowName); YQL_ENSURE(func); - ctx.Error(func->GetPos()) << "Aggregation is not allowed " << (MissingFrom ? "without FROM" : "in this context"); + ctx.Error(func->GetPos()) << "Aggregation is not allowed " << (MissingFrom_ ? "without FROM" : "in this context"); return false; } bool AddFuncOverWindow(TContext& ctx, const TString& windowName, TNodePtr func) override { Y_UNUSED(windowName); YQL_ENSURE(func); - ctx.Error(func->GetPos()) << "Window functions are not allowed " << (MissingFrom ? "without FROM" : "in this context"); + ctx.Error(func->GetPos()) << "Window functions are not allowed " << (MissingFrom_ ? "without FROM" : "in this context"); return false; } TWindowSpecificationPtr FindWindowSpecification(TContext& ctx, const TString& windowName) const override { Y_UNUSED(windowName); - ctx.Error(Pos) << "Window and aggregation functions are not allowed " << (MissingFrom ? "without FROM" : "in this context"); + ctx.Error(Pos_) << "Window and aggregation functions are not allowed " << (MissingFrom_ ? "without FROM" : "in this context"); return {}; } @@ -268,11 +268,11 @@ public: } TPtr DoClone() const final { - return new TFakeSource(Pos, MissingFrom, InSubquery); + return new TFakeSource(Pos_, MissingFrom_, InSubquery_); } private: - const bool MissingFrom; - const bool InSubquery; + const bool MissingFrom_; + const bool InSubquery_; }; TSourcePtr BuildFakeSource(TPosition pos, bool missingFrom, bool inSubquery) { @@ -283,12 +283,12 @@ class TNodeSource: public ISource { public: TNodeSource(TPosition pos, const TNodePtr& node, bool wrapToList, bool wrapByTableSource) : ISource(pos) - , Node(node) - , WrapToList(wrapToList) - , WrapByTableSource(wrapByTableSource) + , Node_(node) + , WrapToList_(wrapToList) + , WrapByTableSource_(wrapByTableSource) { - YQL_ENSURE(Node); - FakeSource = BuildFakeSource(pos); + YQL_ENSURE(Node_); + FakeSource_ = BuildFakeSource(pos); } bool ShouldUseSourceAsColumn(const TString& source) const final { @@ -302,19 +302,19 @@ public: } bool DoInit(TContext& ctx, ISource* src) final { - if (!Node->Init(ctx, FakeSource.Get())) { + if (!Node_->Init(ctx, FakeSource_.Get())) { return false; } return ISource::DoInit(ctx, src); } TNodePtr Build(TContext& /*ctx*/) final { - auto nodeAst = AstNode(Node); - if (WrapToList) { + auto nodeAst = AstNode(Node_); + if (WrapToList_) { nodeAst = Y("ToList", nodeAst); } - if (WrapByTableSource) { + if (WrapByTableSource_) { nodeAst = Y("TableSource", nodeAst); } @@ -322,14 +322,14 @@ public: } TPtr DoClone() const final { - return new TNodeSource(Pos, SafeClone(Node), WrapToList, WrapByTableSource); + return new TNodeSource(Pos_, SafeClone(Node_), WrapToList_, WrapByTableSource_); } private: - TNodePtr Node; - const bool WrapToList; - const bool WrapByTableSource; - TSourcePtr FakeSource; + TNodePtr Node_; + const bool WrapToList_; + const bool WrapByTableSource_; + TSourcePtr FakeSource_; }; TSourcePtr BuildNodeSource(TPosition pos, const TNodePtr& node, bool wrapToList, bool wrapByTableSource) { @@ -340,61 +340,61 @@ class IProxySource: public ISource { protected: IProxySource(TPosition pos, ISource* src) : ISource(pos) - , Source(src) + , Source_(src) {} void AllColumns() override { - Y_DEBUG_ABORT_UNLESS(Source); - return Source->AllColumns(); + Y_DEBUG_ABORT_UNLESS(Source_); + return Source_->AllColumns(); } const TColumns* GetColumns() const override { - Y_DEBUG_ABORT_UNLESS(Source); - return Source->GetColumns(); + Y_DEBUG_ABORT_UNLESS(Source_); + return Source_->GetColumns(); } void GetInputTables(TTableList& tableList) const override { - if (Source) { - Source->GetInputTables(tableList); + if (Source_) { + Source_->GetInputTables(tableList); } ISource::GetInputTables(tableList); } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { - Y_DEBUG_ABORT_UNLESS(Source); - const TString label(Source->GetLabel()); - Source->SetLabel(Label); - const auto ret = Source->AddColumn(ctx, column); - Source->SetLabel(label); + Y_DEBUG_ABORT_UNLESS(Source_); + const TString label(Source_->GetLabel()); + Source_->SetLabel(Label_); + const auto ret = Source_->AddColumn(ctx, column); + Source_->SetLabel(label); return ret; } bool ShouldUseSourceAsColumn(const TString& source) const override { - return Source->ShouldUseSourceAsColumn(source); + return Source_->ShouldUseSourceAsColumn(source); } bool IsStream() const override { - Y_DEBUG_ABORT_UNLESS(Source); - return Source->IsStream(); + Y_DEBUG_ABORT_UNLESS(Source_); + return Source_->IsStream(); } EOrderKind GetOrderKind() const override { - Y_DEBUG_ABORT_UNLESS(Source); - return Source->GetOrderKind(); + Y_DEBUG_ABORT_UNLESS(Source_); + return Source_->GetOrderKind(); } TWriteSettings GetWriteSettings() const override { - Y_DEBUG_ABORT_UNLESS(Source); - return Source->GetWriteSettings(); + Y_DEBUG_ABORT_UNLESS(Source_); + return Source_->GetWriteSettings(); } protected: void SetSource(ISource* source) { - Source = source; + Source_ = source; } - ISource* Source; + ISource* Source_; }; class IRealSource: public ISource { @@ -405,11 +405,11 @@ protected: } void AllColumns() override { - Columns.SetAll(); + Columns_.SetAll(); } const TColumns* GetColumns() const override { - return &Columns; + return &Columns_; } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { @@ -425,7 +425,7 @@ protected: return true; } const auto* name = column.GetColumnName(); - if (name && !column.CanBeType() && !Columns.IsColumnPossible(ctx, *name) && !IsAlias(EExprSeat::GroupBy, *name) && !IsAlias(EExprSeat::DistinctAggr, *name)) { + if (name && !column.CanBeType() && !Columns_.IsColumnPossible(ctx, *name) && !IsAlias(EExprSeat::GroupBy, *name) && !IsAlias(EExprSeat::DistinctAggr, *name)) { if (column.IsReliable()) { TStringBuilder sb; sb << "Column " << *name << " is not in source column set"; @@ -440,15 +440,15 @@ protected: } TMaybe<TString> FindColumnMistype(const TString& name) const override { - auto result = FindMistypeIn(Columns.Real, name); + auto result = FindMistypeIn(Columns_.Real, name); if (!result) { - auto result = FindMistypeIn(Columns.Artificial, name); + auto result = FindMistypeIn(Columns_.Artificial, name); } return result ? result : ISource::FindColumnMistype(name); } protected: - TColumns Columns; + TColumns Columns_; }; class IComposableSource : private TNonCopyable { @@ -463,36 +463,36 @@ class TMuxSource: public ISource { public: TMuxSource(TPosition pos, TVector<TSourcePtr>&& sources) : ISource(pos) - , Sources(std::move(sources)) + , Sources_(std::move(sources)) { - YQL_ENSURE(Sources.size() > 1); + YQL_ENSURE(Sources_.size() > 1); } void AllColumns() final { - for (auto& source: Sources) { + for (auto& source: Sources_) { source->AllColumns(); } } const TColumns* GetColumns() const final { // Columns are equal in all sources. Return from the first one - return Sources.front()->GetColumns(); + return Sources_.front()->GetColumns(); } void GetInputTables(TTableList& tableList) const final { - for (auto& source: Sources) { + for (auto& source: Sources_) { source->GetInputTables(tableList); } ISource::GetInputTables(tableList); } bool IsStream() const final { - return AnyOf(Sources, [] (const TSourcePtr& s) { return s->IsStream(); }); + return AnyOf(Sources_, [] (const TSourcePtr& s) { return s->IsStream(); }); } bool DoInit(TContext& ctx, ISource* src) final { - for (auto& source: Sources) { - if (AsInner) { + for (auto& source: Sources_) { + if (AsInner_) { source->UseAsInner(); } @@ -510,7 +510,7 @@ public: } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) final { - for (auto& source: Sources) { + for (auto& source: Sources_) { if (!source->AddColumn(ctx, column)) { return {}; } @@ -521,8 +521,8 @@ public: TNodePtr Build(TContext& ctx) final { TNodePtr block; auto muxArgs = Y(); - for (size_t i = 0; i < Sources.size(); ++i) { - auto& source = Sources[i]; + for (size_t i = 0; i < Sources_.size(); ++i) { + auto& source = Sources_[i]; auto input = source->Build(ctx); auto ref = ctx.MakeName("src"); muxArgs->Add(ref); @@ -549,11 +549,11 @@ public: } TPtr DoClone() const final { - return new TMuxSource(Pos, CloneContainer(Sources)); + return new TMuxSource(Pos_, CloneContainer(Sources_)); } protected: - TVector<TSourcePtr> Sources; + TVector<TSourcePtr> Sources_; }; TSourcePtr BuildMuxSource(TPosition pos, TVector<TSourcePtr>&& sources) { @@ -564,9 +564,9 @@ class TSubqueryRefNode: public IRealSource { public: TSubqueryRefNode(const TNodePtr& subquery, const TString& alias, int tupleIndex) : IRealSource(subquery->GetPos()) - , Subquery(subquery) - , Alias(alias) - , TupleIndex(tupleIndex) + , Subquery_(subquery) + , Alias_(alias) + , TupleIndex_(tupleIndex) { YQL_ENSURE(subquery->GetSource()); } @@ -577,26 +577,26 @@ public: bool DoInit(TContext& ctx, ISource* src) override { // independent subquery should not connect source - Subquery->UseAsInner(); - if (!Subquery->Init(ctx, nullptr)) { + Subquery_->UseAsInner(); + if (!Subquery_->Init(ctx, nullptr)) { return false; } - Columns = *Subquery->GetSource()->GetColumns(); - Node = BuildAtom(Pos, Alias, TNodeFlags::Default); - if (TupleIndex != -1) { - Node = Y("Nth", Node, Q(ToString(TupleIndex))); + Columns_ = *Subquery_->GetSource()->GetColumns(); + Node_ = BuildAtom(Pos_, Alias_, TNodeFlags::Default); + if (TupleIndex_ != -1) { + Node_ = Y("Nth", Node_, Q(ToString(TupleIndex_))); } - if (!Node->Init(ctx, src)) { + if (!Node_->Init(ctx, src)) { return false; } - if (src && Subquery->GetSource()->IsSelect()) { - auto columnsPtr = &Columns; + if (src && Subquery_->GetSource()->IsSelect()) { + auto columnsPtr = &Columns_; if (columnsPtr && (columnsPtr->All || columnsPtr->QualifiedAll || columnsPtr->List.size() == 1)) { - Node = Y("SingleMember", Y("SqlAccess", Q("dict"), Y("Take", Node, Y("Uint64", Q("1"))), Y("Uint64", Q("0")))); + Node_ = Y("SingleMember", Y("SqlAccess", Q("dict"), Y("Take", Node_, Y("Uint64", Q("1"))), Y("Uint64", Q("0")))); } else { - ctx.Error(Pos) << "Source used in expression should contain one concrete column"; - if (RefPos) { - ctx.Error(*RefPos) << "Source is used here"; + ctx.Error(Pos_) << "Source used in expression should contain one concrete column"; + if (RefPos_) { + ctx.Error(*RefPos_) << "Source is used here"; } return false; @@ -606,14 +606,14 @@ public: if (!BuildSamplingLambda(sample)) { return false; } else if (sample) { - Node = Y("block", Q(Y(Y("let", Node, Y("OrderedFlatMap", Node, sample)), Y("return", Node)))); + Node_ = Y("block", Q(Y(Y("let", Node_, Y("OrderedFlatMap", Node_, sample)), Y("return", Node_)))); } return true; } TNodePtr Build(TContext& ctx) override { Y_UNUSED(ctx); - return Node; + return Node_; } bool SetSamplingOptions( @@ -635,27 +635,27 @@ public: } bool IsStream() const override { - return Subquery->GetSource()->IsStream(); + return Subquery_->GetSource()->IsStream(); } void DoUpdateState() const override { - State.Set(ENodeState::Const, true); + State_.Set(ENodeState::Const, true); } TAstNode* Translate(TContext& ctx) const override { - Y_DEBUG_ABORT_UNLESS(Node); - return Node->Translate(ctx); + Y_DEBUG_ABORT_UNLESS(Node_); + return Node_->Translate(ctx); } TPtr DoClone() const final { - return new TSubqueryRefNode(Subquery, Alias, TupleIndex); + return new TSubqueryRefNode(Subquery_, Alias_, TupleIndex_); } protected: - TNodePtr Subquery; - const TString Alias; - const int TupleIndex; - TNodePtr Node; + TNodePtr Subquery_; + const TString Alias_; + const int TupleIndex_; + TNodePtr Node_; }; TNodePtr BuildSubqueryRef(TNodePtr subquery, const TString& alias, int tupleIndex) { @@ -666,13 +666,13 @@ class TInvalidSubqueryRefNode: public ISource { public: TInvalidSubqueryRefNode(TPosition pos) : ISource(pos) - , Pos(pos) + , Pos_(pos) { } bool DoInit(TContext& ctx, ISource* src) override { Y_UNUSED(src); - ctx.Error(Pos) << "Named subquery can not be used as a top level statement in libraries"; + ctx.Error(Pos_) << "Named subquery can not be used as a top level statement in libraries"; return false; } @@ -682,11 +682,11 @@ public: } TPtr DoClone() const final { - return new TInvalidSubqueryRefNode(Pos); + return new TInvalidSubqueryRefNode(Pos_); } protected: - const TPosition Pos; + const TPosition Pos_; }; TNodePtr BuildInvalidSubqueryRef(TPosition subqueryPos) { @@ -697,14 +697,14 @@ class TTableSource: public IRealSource { public: TTableSource(TPosition pos, const TTableRef& table, const TString& label) : IRealSource(pos) - , Table(table) - , FakeSource(BuildFakeSource(pos)) + , Table_(table) + , FakeSource_(BuildFakeSource(pos)) { - SetLabel(label.empty() ? Table.ShortName() : label); + SetLabel(label.empty() ? Table_.ShortName() : label); } void GetInputTables(TTableList& tableList) const override { - tableList.push_back(Table); + tableList.push_back(Table_); ISource::GetInputTables(tableList); } @@ -714,7 +714,7 @@ public: } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { - Columns.Add(column.GetColumnName(), column.GetCountHint(), column.IsArtificial(), column.IsReliable()); + Columns_.Add(column.GetColumnName(), column.GetCountHint(), column.IsArtificial(), column.IsReliable()); if (!IRealSource::AddColumn(ctx, column)) { return {}; } @@ -746,7 +746,7 @@ public: break; } - if (!samplingRate->Init(ctx, FakeSource.Get())) { + if (!samplingRate->Init(ctx, FakeSource_.Get())) { return false; } @@ -754,13 +754,13 @@ public: auto sampleSettings = Q(Y(Q(modeName), Y("EvaluateAtom", Y("ToString", samplingRate)), Y("EvaluateAtom", Y("ToString", samplingSeed)))); auto sampleOption = Q(Y(Q("sample"), sampleSettings)); - if (Table.Options) { - if (!Table.Options->Init(ctx, this)) { + if (Table_.Options) { + if (!Table_.Options->Init(ctx, this)) { return false; } - Table.Options = L(Table.Options, sampleOption); + Table_.Options = L(Table_.Options, sampleOption); } else { - Table.Options = Y(sampleOption); + Table_.Options = Y(sampleOption); } return true; } @@ -769,36 +769,36 @@ public: Y_UNUSED(ctx); TTableHints merged = contextHints; MergeHints(merged, hints); - Table.Options = BuildInputOptions(pos, merged); + Table_.Options = BuildInputOptions(pos, merged); return true; } bool SetViewName(TContext& ctx, TPosition pos, const TString& view) override { - return Table.Keys->SetViewName(ctx, pos, view); + return Table_.Keys->SetViewName(ctx, pos, view); } TNodePtr Build(TContext& ctx) override { - if (!Table.Keys->Init(ctx, nullptr)) { + if (!Table_.Keys->Init(ctx, nullptr)) { return nullptr; } - return AstNode(Table.RefName); + return AstNode(Table_.RefName); } bool IsStream() const override { - return IsStreamingService(Table.Service); + return IsStreamingService(Table_.Service); } TPtr DoClone() const final { - return new TTableSource(Pos, Table, GetLabel()); + return new TTableSource(Pos_, Table_, GetLabel()); } bool IsTableSource() const override { return true; } protected: - TTableRef Table; + TTableRef Table_; private: - const TSourcePtr FakeSource; + const TSourcePtr FakeSource_; }; TSourcePtr BuildTableSource(TPosition pos, const TTableRef& table, const TString& label) { @@ -809,35 +809,35 @@ class TInnerSource: public IProxySource { public: TInnerSource(TPosition pos, TNodePtr node, const TString& service, const TDeferredAtom& cluster, const TString& label) : IProxySource(pos, nullptr) - , Node(node) - , Service(service) - , Cluster(cluster) + , Node_(node) + , Service_(service) + , Cluster_(cluster) { SetLabel(label); } bool SetSamplingOptions(TContext& ctx, TPosition pos, ESampleClause sampleClause, ESampleMode mode, TNodePtr samplingRate, TNodePtr samplingSeed) override { Y_UNUSED(ctx); - SamplingPos = pos; - SamplingClause = sampleClause; - SamplingMode = mode; - SamplingRate = samplingRate; - SamplingSeed = samplingSeed; + SamplingPos_ = pos; + SamplingClause_ = sampleClause; + SamplingMode_ = mode; + SamplingRate_ = samplingRate; + SamplingSeed_ = samplingSeed; return true; } bool SetTableHints(TContext& ctx, TPosition pos, const TTableHints& hints, const TTableHints& contextHints) override { Y_UNUSED(ctx); - HintsPos = pos; - Hints = hints; - ContextHints = contextHints; + HintsPos_ = pos; + Hints_ = hints; + ContextHints_ = contextHints; return true; } bool SetViewName(TContext& ctx, TPosition pos, const TString& view) override { Y_UNUSED(ctx); - ViewPos = pos; - View = view; + ViewPos_ = pos; + View_ = view; return true; } @@ -856,45 +856,45 @@ public: bool DoInit(TContext& ctx, ISource* initSrc) override { Y_UNUSED(initSrc); - auto source = Node->GetSource(); + auto source = Node_->GetSource(); if (!source) { - NewSource = TryMakeSourceFromExpression(Pos, ctx, Service, Cluster, Node); - source = NewSource.Get(); + NewSource_ = TryMakeSourceFromExpression(Pos_, ctx, Service_, Cluster_, Node_); + source = NewSource_.Get(); } if (!source) { - ctx.Error(Pos) << "Invalid inner source node"; + ctx.Error(Pos_) << "Invalid inner source node"; return false; } - if (SamplingPos) { - if (!source->SetSamplingOptions(ctx, *SamplingPos, SamplingClause, SamplingMode, SamplingRate, SamplingSeed)) { + if (SamplingPos_) { + if (!source->SetSamplingOptions(ctx, *SamplingPos_, SamplingClause_, SamplingMode_, SamplingRate_, SamplingSeed_)) { return false; } } - if (ViewPos) { - if (!source->SetViewName(ctx, *ViewPos, View)) { + if (ViewPos_) { + if (!source->SetViewName(ctx, *ViewPos_, View_)) { return false; } } - if (HintsPos) { - if (!source->SetTableHints(ctx, *HintsPos, Hints, ContextHints)) { + if (HintsPos_) { + if (!source->SetTableHints(ctx, *HintsPos_, Hints_, ContextHints_)) { return false; } } - source->SetLabel(Label); - if (!NewSource) { - Node->UseAsInner(); - if (!Node->Init(ctx, nullptr)) { + source->SetLabel(Label_); + if (!NewSource_) { + Node_->UseAsInner(); + if (!Node_->Init(ctx, nullptr)) { return false; } } SetSource(source); - if (NewSource && !NewSource->Init(ctx, nullptr)) { + if (NewSource_ && !NewSource_->Init(ctx, nullptr)) { return false; } @@ -903,42 +903,42 @@ public: TNodePtr Build(TContext& ctx) override { Y_UNUSED(ctx); - return NewSource ? NewSource->Build(ctx) : Node; + return NewSource_ ? NewSource_->Build(ctx) : Node_; } bool IsStream() const override { - auto source = Node->GetSource(); + auto source = Node_->GetSource(); if (source) { return source->IsStream(); } // NewSource will be built later in DoInit->TryMakeSourceFromExpression // where Service will be used in all situations // let's detect IsStream by Service value - return IsStreamingService(Service); + return IsStreamingService(Service_); } TPtr DoClone() const final { - return new TInnerSource(Pos, SafeClone(Node), Service, Cluster, GetLabel()); + return new TInnerSource(Pos_, SafeClone(Node_), Service_, Cluster_, GetLabel()); } protected: - TNodePtr Node; - TString Service; - TDeferredAtom Cluster; - TSourcePtr NewSource; + TNodePtr Node_; + TString Service_; + TDeferredAtom Cluster_; + TSourcePtr NewSource_; private: - TMaybe<TPosition> SamplingPos; - ESampleClause SamplingClause; - ESampleMode SamplingMode; - TNodePtr SamplingRate; - TNodePtr SamplingSeed; - - TMaybe<TPosition> ViewPos; - TString View; - - TMaybe<TPosition> HintsPos; - TTableHints Hints; - TTableHints ContextHints; + TMaybe<TPosition> SamplingPos_; + ESampleClause SamplingClause_; + ESampleMode SamplingMode_; + TNodePtr SamplingRate_; + TNodePtr SamplingSeed_; + + TMaybe<TPosition> ViewPos_; + TString View_; + + TMaybe<TPosition> HintsPos_; + TTableHints Hints_; + TTableHints ContextHints_; }; TSourcePtr BuildInnerSource(TPosition pos, TNodePtr node, const TString& service, const TDeferredAtom& cluster, const TString& label) { @@ -984,40 +984,40 @@ public: const TVector<TSortSpecificationPtr>& assumeOrderBy, bool listCall) : IRealSource(pos) - , Mode(mode) - , Source(std::move(source)) - , OrderBy(std::move(orderBy)) - , Keys(std::move(keys)) - , Args(std::move(args)) - , Udf(udf) - , Having(having) - , Settings(settings) - , AssumeOrderBy(assumeOrderBy) - , ListCall(listCall) + , Mode_(mode) + , Source_(std::move(source)) + , OrderBy_(std::move(orderBy)) + , Keys_(std::move(keys)) + , Args_(std::move(args)) + , Udf_(udf) + , Having_(having) + , Settings_(settings) + , AssumeOrderBy_(assumeOrderBy) + , ListCall_(listCall) { - YQL_ENSURE(!Keys.empty()); - YQL_ENSURE(Source); + YQL_ENSURE(!Keys_.empty()); + YQL_ENSURE(Source_); } void GetInputTables(TTableList& tableList) const override { - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); ISource::GetInputTables(tableList); } bool DoInit(TContext& ctx, ISource* src) final { - if (AsInner) { - Source->UseAsInner(); + if (AsInner_) { + Source_->UseAsInner(); } YQL_ENSURE(!src); - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - if (!Source->InitFilters(ctx)) { + if (!Source_->InitFilters(ctx)) { return false; } - src = Source.Get(); - for (auto& key: Keys) { + src = Source_.Get(); + for (auto& key: Keys_) { if (!key->Init(ctx, src)) { return false; } @@ -1027,39 +1027,39 @@ public: return false; } } - if (Having && !Having->Init(ctx, nullptr)) { + if (Having_ && !Having_->Init(ctx, nullptr)) { return false; } /// SIN: verify reduce one argument - if (Args.size() != 1) { - ctx.Error(Pos) << "REDUCE requires exactly one UDF argument"; + if (Args_.size() != 1) { + ctx.Error(Pos_) << "REDUCE requires exactly one UDF argument"; return false; } - if (!Args[0]->Init(ctx, src)) { + if (!Args_[0]->Init(ctx, src)) { return false; } - for (auto orderSpec: OrderBy) { + for (auto orderSpec: OrderBy_) { if (!orderSpec->OrderExpr->Init(ctx, src)) { return false; } } - if (!Udf->Init(ctx, src)) { + if (!Udf_->Init(ctx, src)) { return false; } - if (Udf->GetLabel().empty()) { - Columns.SetAll(); + if (Udf_->GetLabel().empty()) { + Columns_.SetAll(); } else { - Columns.Add(&Udf->GetLabel(), false); + Columns_.Add(&Udf_->GetLabel(), false); } const auto label = GetLabel(); - for (const auto& sortSpec: AssumeOrderBy) { + for (const auto& sortSpec: AssumeOrderBy_) { auto& expr = sortSpec->OrderExpr; - SetLabel(Source->GetLabel()); + SetLabel(Source_->GetLabel()); if (!expr->Init(ctx, this)) { return false; } @@ -1073,49 +1073,49 @@ public: } TNodePtr Build(TContext& ctx) final { - auto input = Source->Build(ctx); + auto input = Source_->Build(ctx); if (!input) { return nullptr; } auto keysTuple = Y(); - if (Keys.size() == 1) { - keysTuple = Y("Member", "row", BuildQuotedAtom(Pos, *Keys.back()->GetColumnName())); + if (Keys_.size() == 1) { + keysTuple = Y("Member", "row", BuildQuotedAtom(Pos_, *Keys_.back()->GetColumnName())); } else { - for (const auto& key: Keys) { - keysTuple = L(keysTuple, Y("Member", "row", BuildQuotedAtom(Pos, *key->GetColumnName()))); + for (const auto& key: Keys_) { + keysTuple = L(keysTuple, Y("Member", "row", BuildQuotedAtom(Pos_, *key->GetColumnName()))); } keysTuple = Q(keysTuple); } - auto extractKey = Y("SqlExtractKey", "row", BuildLambda(Pos, Y("row"), keysTuple)); - auto extractKeyLambda = BuildLambda(Pos, Y("row"), extractKey); + auto extractKey = Y("SqlExtractKey", "row", BuildLambda(Pos_, Y("row"), keysTuple)); + auto extractKeyLambda = BuildLambda(Pos_, Y("row"), extractKey); TNodePtr processPartitions; - if (ListCall) { - if (Mode != ReduceMode::ByAll) { - ctx.Error(Pos) << "TableRows() must be used only with USING ALL"; + if (ListCall_) { + if (Mode_ != ReduceMode::ByAll) { + ctx.Error(Pos_) << "TableRows() must be used only with USING ALL"; return nullptr; } - TNodePtr expr = BuildAtom(Pos, "partitionStream"); - processPartitions = Y("SqlReduce", "partitionStream", BuildQuotedAtom(Pos, "byAllList", TNodeFlags::Default), Udf, expr); + TNodePtr expr = BuildAtom(Pos_, "partitionStream"); + processPartitions = Y("SqlReduce", "partitionStream", BuildQuotedAtom(Pos_, "byAllList", TNodeFlags::Default), Udf_, expr); } else { - switch (Mode) { + switch (Mode_) { case ReduceMode::ByAll: { - auto columnPtr = Args[0]->GetColumnName(); - TNodePtr expr = BuildAtom(Pos, "partitionStream"); + auto columnPtr = Args_[0]->GetColumnName(); + TNodePtr expr = BuildAtom(Pos_, "partitionStream"); if (!columnPtr || *columnPtr != "*") { - expr = Y("Map", "partitionStream", BuildLambda(Pos, Y("keyPair"), Q(L(Y(),\ + expr = Y("Map", "partitionStream", BuildLambda(Pos_, Y("keyPair"), Q(L(Y(),\ Y("Nth", "keyPair", Q(ToString("0"))),\ - Y("Map", Y("Nth", "keyPair", Q(ToString("1"))), BuildLambda(Pos, Y("row"), Args[0])))))); + Y("Map", Y("Nth", "keyPair", Q(ToString("1"))), BuildLambda(Pos_, Y("row"), Args_[0])))))); } - processPartitions = Y("SqlReduce", "partitionStream", BuildQuotedAtom(Pos, "byAll", TNodeFlags::Default), Udf, expr); + processPartitions = Y("SqlReduce", "partitionStream", BuildQuotedAtom(Pos_, "byAll", TNodeFlags::Default), Udf_, expr); break; } case ReduceMode::ByPartition: { - processPartitions = Y("SqlReduce", "partitionStream", extractKeyLambda, Udf, - BuildLambda(Pos, Y("row"), Args[0])); + processPartitions = Y("SqlReduce", "partitionStream", extractKeyLambda, Udf_, + BuildLambda(Pos_, Y("row"), Args_[0])); break; } default: @@ -1125,21 +1125,21 @@ public: TNodePtr sortDirection; TNodePtr sortKeySelector; - FillSortParts(OrderBy, sortDirection, sortKeySelector); - if (!OrderBy.empty()) { - sortKeySelector = BuildLambda(Pos, Y("row"), Y("SqlExtractKey", "row", sortKeySelector)); + FillSortParts(OrderBy_, sortDirection, sortKeySelector); + if (!OrderBy_.empty()) { + sortKeySelector = BuildLambda(Pos_, Y("row"), Y("SqlExtractKey", "row", sortKeySelector)); } - auto partitionByKey = Y(!ListCall && Mode == ReduceMode::ByAll ? "PartitionByKey" : "PartitionsByKeys", "core", extractKeyLambda, - sortDirection, sortKeySelector, BuildLambda(Pos, Y("partitionStream"), processPartitions)); + auto partitionByKey = Y(!ListCall_ && Mode_ == ReduceMode::ByAll ? "PartitionByKey" : "PartitionsByKeys", "core", extractKeyLambda, + sortDirection, sortKeySelector, BuildLambda(Pos_, Y("partitionStream"), processPartitions)); - auto inputLabel = ListCall ? "inputRowsList" : "core"; + auto inputLabel = ListCall_ ? "inputRowsList" : "core"; auto block(Y(Y("let", inputLabel, input))); - auto filter = Source->BuildFilter(ctx, inputLabel); + auto filter = Source_->BuildFilter(ctx, inputLabel); if (filter) { block = L(block, Y("let", inputLabel, filter)); } - if (ListCall) { + if (ListCall_) { block = L(block, Y("let", "core", "inputRowsList")); } @@ -1147,9 +1147,9 @@ public: block = L(block, Y("let", "core", Y("RemoveSystemMembers", "core"))); } block = L(block, Y("let", "core", Y("AutoDemux", partitionByKey))); - if (Having) { + if (Having_) { block = L(block, Y("let", "core", - Y("Filter", "core", BuildLambda(Pos, Y("row"), Y("Coalesce", Having, Y("Bool", Q("false"))))) + Y("Filter", "core", BuildLambda(Pos_, Y("row"), Y("Coalesce", Having_, Y("Bool", Q("false"))))) )); } return Y("block", Q(L(block, Y("return", "core")))); @@ -1157,41 +1157,41 @@ public: TNodePtr BuildSort(TContext& ctx, const TString& label) override { Y_UNUSED(ctx); - if (AssumeOrderBy.empty()) { + if (AssumeOrderBy_.empty()) { return nullptr; } - return Y("let", label, BuildSortSpec(AssumeOrderBy, label, false, true)); + return Y("let", label, BuildSortSpec(AssumeOrderBy_, label, false, true)); } EOrderKind GetOrderKind() const override { - return AssumeOrderBy.empty() ? EOrderKind::None : EOrderKind::Assume; + return AssumeOrderBy_.empty() ? EOrderKind::None : EOrderKind::Assume; } TWriteSettings GetWriteSettings() const final { - return Settings; + return Settings_; } bool HasSelectResult() const final { - return !Settings.Discard; + return !Settings_.Discard; } TPtr DoClone() const final { - return new TReduceSource(Pos, Mode, Source->CloneSource(), CloneContainer(OrderBy), - CloneContainer(Keys), CloneContainer(Args), SafeClone(Udf), SafeClone(Having), Settings, - CloneContainer(AssumeOrderBy), ListCall); + return new TReduceSource(Pos_, Mode_, Source_->CloneSource(), CloneContainer(OrderBy_), + CloneContainer(Keys_), CloneContainer(Args_), SafeClone(Udf_), SafeClone(Having_), Settings_, + CloneContainer(AssumeOrderBy_), ListCall_); } private: - ReduceMode Mode; - TSourcePtr Source; - TVector<TSortSpecificationPtr> OrderBy; - TVector<TNodePtr> Keys; - TVector<TNodePtr> Args; - TNodePtr Udf; - TNodePtr Having; - const TWriteSettings Settings; - TVector<TSortSpecificationPtr> AssumeOrderBy; - const bool ListCall; + ReduceMode Mode_; + TSourcePtr Source_; + TVector<TSortSpecificationPtr> OrderBy_; + TVector<TNodePtr> Keys_; + TVector<TNodePtr> Args_; + TNodePtr Udf_; + TNodePtr Having_; + const TWriteSettings Settings_; + TVector<TSortSpecificationPtr> AssumeOrderBy_; + const bool ListCall_; }; TSourcePtr BuildReduce(TPosition pos, @@ -1247,39 +1247,39 @@ class TCompositeSelect: public IRealSource { public: TCompositeSelect(TPosition pos, TSourcePtr source, TSourcePtr originalSource, const TWriteSettings& settings) : IRealSource(pos) - , Source(std::move(source)) - , OriginalSource(std::move(originalSource)) - , Settings(settings) + , Source_(std::move(source)) + , OriginalSource_(std::move(originalSource)) + , Settings_(settings) { - YQL_ENSURE(Source); + YQL_ENSURE(Source_); } void SetSubselects(TVector<TSourcePtr>&& subselects, TVector<TNodePtr>&& grouping, TVector<TNodePtr>&& groupByExpr) { - Subselects = std::move(subselects); - Grouping = std::move(grouping); - GroupByExpr = std::move(groupByExpr); - Y_DEBUG_ABORT_UNLESS(Subselects.size() > 1); + Subselects_ = std::move(subselects); + Grouping_ = std::move(grouping); + GroupByExpr_ = std::move(groupByExpr); + Y_DEBUG_ABORT_UNLESS(Subselects_.size() > 1); } void GetInputTables(TTableList& tableList) const override { - for (const auto& select: Subselects) { + for (const auto& select: Subselects_) { select->GetInputTables(tableList); } ISource::GetInputTables(tableList); } bool DoInit(TContext& ctx, ISource* src) override { - if (AsInner) { - Source->UseAsInner(); + if (AsInner_) { + Source_->UseAsInner(); } if (src) { - src->AddDependentSource(Source); + src->AddDependentSource(Source_); } - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - if (!Source->InitFilters(ctx)) { + if (!Source_->InitFilters(ctx)) { return false; } @@ -1287,16 +1287,16 @@ public: return false; } - auto origSrc = OriginalSource.Get(); + auto origSrc = OriginalSource_.Get(); if (!origSrc->Init(ctx, src)) { return false; } if (origSrc->IsFlattenByColumns() || origSrc->IsFlattenColumns()) { - Flatten = origSrc->IsFlattenByColumns() ? + Flatten_ = origSrc->IsFlattenByColumns() ? origSrc->BuildFlattenByColumns("row") : origSrc->BuildFlattenColumns("row"); - if (!Flatten || !Flatten->Init(ctx, src)) { + if (!Flatten_ || !Flatten_->Init(ctx, src)) { return false; } } @@ -1307,26 +1307,26 @@ public: return false; } } - PreFlattenMap = origSrc->BuildPreFlattenMap(ctx); - if (!PreFlattenMap) { + PreFlattenMap_ = origSrc->BuildPreFlattenMap(ctx); + if (!PreFlattenMap_) { return false; } } - for (const auto& select: Subselects) { - select->SetLabel(Label); - if (AsInner) { + for (const auto& select: Subselects_) { + select->SetLabel(Label_); + if (AsInner_) { select->UseAsInner(); } - if (!select->Init(ctx, Source.Get())) { + if (!select->Init(ctx, Source_.Get())) { return false; } } TMaybe<size_t> groupingColumnsCount; size_t idx = 0; - for (const auto& select : Subselects) { + for (const auto& select : Subselects_) { size_t count = select->GetGroupingColumnsCount(); if (!groupingColumnsCount.Defined()) { groupingColumnsCount = count; @@ -1341,7 +1341,7 @@ public: } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { - for (const auto& select: Subselects) { + for (const auto& select: Subselects_) { if (!select->AddColumn(ctx, column)) { return {}; } @@ -1350,23 +1350,23 @@ public: } TNodePtr Build(TContext& ctx) override { - auto input = Source->Build(ctx); + auto input = Source_->Build(ctx); auto block(Y(Y("let", "composite", input))); bool ordered = ctx.UseUnordered(*this); - if (PreFlattenMap) { - block = L(block, Y("let", "composite", Y(ordered ? "OrderedFlatMap" : "FlatMap", "composite", BuildLambda(Pos, Y("row"), PreFlattenMap)))); + if (PreFlattenMap_) { + block = L(block, Y("let", "composite", Y(ordered ? "OrderedFlatMap" : "FlatMap", "composite", BuildLambda(Pos_, Y("row"), PreFlattenMap_)))); } - if (Flatten) { - block = L(block, Y("let", "composite", Y(ordered ? "OrderedFlatMap" : "FlatMap", "composite", BuildLambda(Pos, Y("row"), Flatten, "res")))); + if (Flatten_) { + block = L(block, Y("let", "composite", Y(ordered ? "OrderedFlatMap" : "FlatMap", "composite", BuildLambda(Pos_, Y("row"), Flatten_, "res")))); } - auto filter = Source->BuildFilter(ctx, "composite"); + auto filter = Source_->BuildFilter(ctx, "composite"); if (filter) { block = L(block, Y("let", "composite", filter)); } TNodePtr compositeNode = Y("UnionAll"); - for (const auto& select: Subselects) { + for (const auto& select: Subselects_) { YQL_ENSURE(dynamic_cast<IComposableSource*>(select.Get())); auto addNode = select->Build(ctx); if (!addNode) { @@ -1376,88 +1376,88 @@ public: } block = L(block, Y("let", "core", compositeNode)); - YQL_ENSURE(!Subselects.empty()); - dynamic_cast<IComposableSource*>(Subselects.front().Get())->BuildProjectWindowDistinct(block, ctx, false); + YQL_ENSURE(!Subselects_.empty()); + dynamic_cast<IComposableSource*>(Subselects_.front().Get())->BuildProjectWindowDistinct(block, ctx, false); return Y("block", Q(L(block, Y("return", "core")))); } bool IsGroupByColumn(const TString& column) const override { - YQL_ENSURE(!GroupingCols.empty()); - return GroupingCols.contains(column); + YQL_ENSURE(!GroupingCols_.empty()); + return GroupingCols_.contains(column); } const TSet<TString>& GetGroupingCols() const { - return GroupingCols; + return GroupingCols_; } TNodePtr BuildSort(TContext& ctx, const TString& label) override { - return Subselects.front()->BuildSort(ctx, label); + return Subselects_.front()->BuildSort(ctx, label); } EOrderKind GetOrderKind() const override { - return Subselects.front()->GetOrderKind(); + return Subselects_.front()->GetOrderKind(); } const TColumns* GetColumns() const override{ - return Subselects.front()->GetColumns(); + return Subselects_.front()->GetColumns(); } ISource* RealSource() const { - return Source.Get(); + return Source_.Get(); } TWriteSettings GetWriteSettings() const override { - return Settings; + return Settings_; } bool HasSelectResult() const override { - return !Settings.Discard; + return !Settings_.Discard; } TNodePtr DoClone() const final { - auto newSource = MakeIntrusive<TCompositeSelect>(Pos, Source->CloneSource(), OriginalSource->CloneSource(), Settings); - newSource->SetSubselects(CloneContainer(Subselects), CloneContainer(Grouping), CloneContainer(GroupByExpr)); + auto newSource = MakeIntrusive<TCompositeSelect>(Pos_, Source_->CloneSource(), OriginalSource_->CloneSource(), Settings_); + newSource->SetSubselects(CloneContainer(Subselects_), CloneContainer(Grouping_), CloneContainer(GroupByExpr_)); return newSource; } private: bool CalculateGroupingCols(TContext& ctx, ISource* initSrc) { - auto origSrc = OriginalSource->CloneSource(); + auto origSrc = OriginalSource_->CloneSource(); if (!origSrc->Init(ctx, initSrc)) { return false; } bool hasError = false; - for (auto& expr: GroupByExpr) { + for (auto& expr: GroupByExpr_) { if (!expr->Init(ctx, origSrc.Get()) || !IsComparableExpression(ctx, expr, false, "GROUP BY")) { hasError = true; } } - if (!origSrc->AddExpressions(ctx, GroupByExpr, EExprSeat::GroupBy)) { + if (!origSrc->AddExpressions(ctx, GroupByExpr_, EExprSeat::GroupBy)) { hasError = true; } - YQL_ENSURE(!Grouping.empty()); - for (auto& grouping : Grouping) { + YQL_ENSURE(!Grouping_.empty()); + for (auto& grouping : Grouping_) { TString keyColumn; if (!InitAndGetGroupKey(ctx, grouping, origSrc.Get(), "grouping sets", keyColumn)) { hasError = true; } else if (!keyColumn.empty()) { - GroupingCols.insert(keyColumn); + GroupingCols_.insert(keyColumn); } } return !hasError; } - TSourcePtr Source; - TSourcePtr OriginalSource; - TNodePtr Flatten; - TNodePtr PreFlattenMap; - const TWriteSettings Settings; - TVector<TSourcePtr> Subselects; - TVector<TNodePtr> Grouping; - TVector<TNodePtr> GroupByExpr; - TSet<TString> GroupingCols; + TSourcePtr Source_; + TSourcePtr OriginalSource_; + TNodePtr Flatten_; + TNodePtr PreFlattenMap_; + const TWriteSettings Settings_; + TVector<TSourcePtr> Subselects_; + TVector<TNodePtr> Grouping_; + TVector<TNodePtr> GroupByExpr_; + TSet<TString> GroupingCols_; }; namespace { @@ -1496,56 +1496,56 @@ public: TColumnsSets&& distinctSets ) : IRealSource(pos) - , Source(std::move(source)) - , GroupByExpr(groupByExpr) - , GroupBy(groupBy) - , AssumeSorted(assumeSorted) - , CompactGroupBy(compactGroupBy) - , GroupBySuffix(groupBySuffix) - , OrderBy(orderBy) - , Having(having) - , WinSpecs(winSpecs) - , Terms(terms) - , Without(without) - , ForceWithout(forceWithout) - , Distinct(distinct) - , LegacyHoppingWindowSpec(legacyHoppingWindowSpec) - , SelectStream(selectStream) - , Settings(settings) - , UniqueSets(std::move(uniqueSets)) - , DistinctSets(std::move(distinctSets)) + , Source_(std::move(source)) + , GroupByExpr_(groupByExpr) + , GroupBy_(groupBy) + , AssumeSorted_(assumeSorted) + , CompactGroupBy_(compactGroupBy) + , GroupBySuffix_(groupBySuffix) + , OrderBy_(orderBy) + , Having_(having) + , WinSpecs_(winSpecs) + , Terms_(terms) + , Without_(without) + , ForceWithout_(forceWithout) + , Distinct_(distinct) + , LegacyHoppingWindowSpec_(legacyHoppingWindowSpec) + , SelectStream_(selectStream) + , Settings_(settings) + , UniqueSets_(std::move(uniqueSets)) + , DistinctSets_(std::move(distinctSets)) { } void AllColumns() override { - if (!OrderByInit) { - Columns.SetAll(); + if (!OrderByInit_) { + Columns_.SetAll(); } } void GetInputTables(TTableList& tableList) const override { - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); ISource::GetInputTables(tableList); } size_t GetGroupingColumnsCount() const override { - return Source->GetGroupingColumnsCount(); + return Source_->GetGroupingColumnsCount(); } bool DoInit(TContext& ctx, ISource* initSrc) override { - if (AsInner) { - Source->UseAsInner(); + if (AsInner_) { + Source_->UseAsInner(); } - if (!Source->Init(ctx, initSrc)) { + if (!Source_->Init(ctx, initSrc)) { return false; } - if (SelectStream && !Source->IsStream()) { - ctx.Error(Pos) << "SELECT STREAM is unsupported for non-streaming sources"; + if (SelectStream_ && !Source_->IsStream()) { + ctx.Error(Pos_) << "SELECT STREAM is unsupported for non-streaming sources"; return false; } - auto src = Source.Get(); + auto src = Source_.Get(); bool hasError = false; if (src->IsFlattenByExprs()) { @@ -1561,21 +1561,21 @@ public: return false; } - src->SetCompactGroupBy(CompactGroupBy); - src->SetGroupBySuffix(GroupBySuffix); + src->SetCompactGroupBy(CompactGroupBy_); + src->SetGroupBySuffix(GroupBySuffix_); - for (auto& term: Terms) { - term->CollectPreaggregateExprs(ctx, *src, DistinctAggrExpr); + for (auto& term: Terms_) { + term->CollectPreaggregateExprs(ctx, *src, DistinctAggrExpr_); } - if (Having) { - Having->CollectPreaggregateExprs(ctx, *src, DistinctAggrExpr); + if (Having_) { + Having_->CollectPreaggregateExprs(ctx, *src, DistinctAggrExpr_); } - for (auto& expr: GroupByExpr) { + for (auto& expr: GroupByExpr_) { if (auto sessionWindow = dynamic_cast<TSessionWindow*>(expr.Get())) { - if (Source->IsStream()) { - ctx.Error(Pos) << "SessionWindow is unsupported for streaming sources"; + if (Source_->IsStream()) { + ctx.Error(Pos_) << "SessionWindow is unsupported for streaming sources"; return false; } sessionWindow->MarkValid(); @@ -1593,31 +1593,31 @@ public: return false; } } - DistinctAggrExpr.insert(DistinctAggrExpr.end(), distinctAggrsInGroupBy.begin(), distinctAggrsInGroupBy.end()); + DistinctAggrExpr_.insert(DistinctAggrExpr_.end(), distinctAggrsInGroupBy.begin(), distinctAggrsInGroupBy.end()); if (!expr->Init(ctx, src) || !IsComparableExpression(ctx, expr, false, "GROUP BY")) { hasError = true; } } - if (hasError || !src->AddExpressions(ctx, GroupByExpr, EExprSeat::GroupBy)) { + if (hasError || !src->AddExpressions(ctx, GroupByExpr_, EExprSeat::GroupBy)) { return false; } - for (auto& expr: DistinctAggrExpr) { + for (auto& expr: DistinctAggrExpr_) { if (!expr->Init(ctx, src)) { hasError = true; } } - if (hasError || !src->AddExpressions(ctx, DistinctAggrExpr, EExprSeat::DistinctAggr)) { + if (hasError || !src->AddExpressions(ctx, DistinctAggrExpr_, EExprSeat::DistinctAggr)) { return false; } /// grouped expressions are available in filters - if (!Source->InitFilters(ctx)) { + if (!Source_->InitFilters(ctx)) { return false; } - for (auto& expr: GroupBy) { + for (auto& expr: GroupBy_) { TString usedColumn; if (!InitAndGetGroupKey(ctx, expr, src, "GROUP BY", usedColumn)) { hasError = true; @@ -1632,12 +1632,12 @@ public: return false; } - if (Having && !Having->Init(ctx, src)) { + if (Having_ && !Having_->Init(ctx, src)) { return false; } - src->AddWindowSpecs(WinSpecs); + src->AddWindowSpecs(WinSpecs_); - const bool isJoin = Source->GetJoin(); + const bool isJoin = Source_->GetJoin(); if (!InitSelect(ctx, src, isJoin, hasError)) { return false; } @@ -1648,55 +1648,55 @@ public: return false; } - Aggregate = aggRes.first; + Aggregate_ = aggRes.first; if (src->IsFlattenByColumns() || src->IsFlattenColumns()) { - Flatten = src->IsFlattenByColumns() ? + Flatten_ = src->IsFlattenByColumns() ? src->BuildFlattenByColumns("row") : src->BuildFlattenColumns("row"); - if (!Flatten || !Flatten->Init(ctx, src)) { + if (!Flatten_ || !Flatten_->Init(ctx, src)) { return false; } } if (src->IsFlattenByExprs()) { - PreFlattenMap = src->BuildPreFlattenMap(ctx); - if (!PreFlattenMap) { + PreFlattenMap_ = src->BuildPreFlattenMap(ctx); + if (!PreFlattenMap_) { return false; } } - if (GroupByExpr || DistinctAggrExpr) { - PreaggregatedMap = src->BuildPreaggregatedMap(ctx); - if (!PreaggregatedMap) { + if (GroupByExpr_ || DistinctAggrExpr_) { + PreaggregatedMap_ = src->BuildPreaggregatedMap(ctx); + if (!PreaggregatedMap_) { return false; } } - if (Aggregate) { - if (!Aggregate->Init(ctx, src)) { + if (Aggregate_) { + if (!Aggregate_->Init(ctx, src)) { return false; } - if (Having) { - Aggregate = Y( + if (Having_) { + Aggregate_ = Y( "Filter", - Aggregate, - BuildLambda(Pos, Y("row"), Y("Coalesce", Having, Y("Bool", Q("false")))) + Aggregate_, + BuildLambda(Pos_, Y("row"), Y("Coalesce", Having_, Y("Bool", Q("false")))) ); } - } else if (Having) { - if (Distinct) { - Aggregate = Y( + } else if (Having_) { + if (Distinct_) { + Aggregate_ = Y( "Filter", "core", - BuildLambda(Pos, Y("row"), Y("Coalesce", Having, Y("Bool", Q("false")))) + BuildLambda(Pos_, Y("row"), Y("Coalesce", Having_, Y("Bool", Q("false")))) ); - ctx.Warning(Having->GetPos(), TIssuesIds::YQL_HAVING_WITHOUT_AGGREGATION_IN_SELECT_DISTINCT) + ctx.Warning(Having_->GetPos(), TIssuesIds::YQL_HAVING_WITHOUT_AGGREGATION_IN_SELECT_DISTINCT) << "The usage of HAVING without aggregations with SELECT DISTINCT is non-standard and will stop working soon. Please use WHERE instead."; } else { - ctx.Error(Having->GetPos()) << "HAVING with meaning GROUP BY () should be with aggregation function."; + ctx.Error(Having_->GetPos()) << "HAVING with meaning GROUP BY () should be with aggregation function."; return false; } - } else if (!Distinct && !GroupBy.empty()) { - ctx.Error(Pos) << "No aggregations were specified"; + } else if (!Distinct_ && !GroupBy_.empty()) { + ctx.Error(Pos_) << "No aggregations were specified"; return false; } if (hasError) { @@ -1705,13 +1705,13 @@ public: if (src->IsCalcOverWindow()) { if (src->IsExprSeat(EExprSeat::WindowPartitionBy, EExprType::WithExpression)) { - PrewindowMap = src->BuildPrewindowMap(ctx); - if (!PrewindowMap) { + PrewindowMap_ = src->BuildPrewindowMap(ctx); + if (!PrewindowMap_) { return false; } } - CalcOverWindow = src->BuildCalcOverWindow(ctx, "core"); - if (!CalcOverWindow || !CalcOverWindow->Init(ctx, src)) { + CalcOverWindow_ = src->BuildCalcOverWindow(ctx, "core"); + if (!CalcOverWindow_ || !CalcOverWindow_->Init(ctx, src)) { return false; } } @@ -1719,15 +1719,15 @@ public: } TNodePtr Build(TContext& ctx) override { - auto input = Source->Build(ctx); + auto input = Source_->Build(ctx); if (!input) { return nullptr; } auto block(Y(Y("let", "core", input))); - if (Source->HasMatchRecognize()) { - if (auto matchRecognize = Source->BuildMatchRecognize(ctx, "core")) { + if (Source_->HasMatchRecognize()) { + if (auto matchRecognize = Source_->BuildMatchRecognize(ctx, "core")) { //use unique name match_recognize to find this block easily in unit tests block = L(block, Y("let", "match_recognize", matchRecognize)); //then bind to the conventional name @@ -1738,47 +1738,47 @@ public: } bool ordered = ctx.UseUnordered(*this); - if (PreFlattenMap) { - block = L(block, Y("let", "core", Y(ordered ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos, Y("row"), PreFlattenMap)))); + if (PreFlattenMap_) { + block = L(block, Y("let", "core", Y(ordered ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos_, Y("row"), PreFlattenMap_)))); } - if (Flatten) { - block = L(block, Y("let", "core", Y(ordered ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos, Y("row"), Flatten, "res")))); + if (Flatten_) { + block = L(block, Y("let", "core", Y(ordered ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos_, Y("row"), Flatten_, "res")))); } if (ctx.GroupByExprAfterWhere) { - if (auto filter = Source->BuildFilter(ctx, "core"); filter) { + if (auto filter = Source_->BuildFilter(ctx, "core"); filter) { block = L(block, Y("let", "core", filter)); } } - if (PreaggregatedMap) { - block = L(block, Y("let", "core", PreaggregatedMap)); - if (Source->IsCompositeSource() && !Columns.QualifiedAll) { + 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) { + } else if (Source_->IsCompositeSource() && !Columns_.QualifiedAll) { block = L(block, Y("let", "origcore", "core")); } if (!ctx.GroupByExprAfterWhere) { - if (auto filter = Source->BuildFilter(ctx, "core"); filter) { + if (auto filter = Source_->BuildFilter(ctx, "core"); filter) { block = L(block, Y("let", "core", filter)); } } - if (Aggregate) { - block = L(block, Y("let", "core", Aggregate)); + if (Aggregate_) { + block = L(block, Y("let", "core", Aggregate_)); ordered = false; } - const bool haveCompositeTerms = Source->IsCompositeSource() && !Columns.All && !Columns.QualifiedAll && !Columns.List.empty(); + const bool haveCompositeTerms = Source_->IsCompositeSource() && !Columns_.All && !Columns_.QualifiedAll && !Columns_.List.empty(); if (haveCompositeTerms) { // column order does not matter here - it will be set in projection - YQL_ENSURE(Aggregate); - block = L(block, Y("let", "core", Y("Map", "core", BuildLambda(Pos, Y("row"), CompositeTerms, "row")))); + YQL_ENSURE(Aggregate_); + block = L(block, Y("let", "core", Y("Map", "core", BuildLambda(Pos_, Y("row"), CompositeTerms_, "row")))); } - if (auto grouping = Source->BuildGroupingColumns("core")) { + if (auto grouping = Source_->BuildGroupingColumns("core")) { block = L(block, Y("let", "core", grouping)); } - if (!Source->GetCompositeSource()) { + if (!Source_->GetCompositeSource()) { BuildProjectWindowDistinct(block, ctx, ordered); } @@ -1786,51 +1786,51 @@ public: } void BuildProjectWindowDistinct(TNodePtr& block, TContext& ctx, bool ordered) override { - if (PrewindowMap) { - block = L(block, Y("let", "core", PrewindowMap)); + if (PrewindowMap_) { + block = L(block, Y("let", "core", PrewindowMap_)); } - if (CalcOverWindow) { - block = L(block, Y("let", "core", CalcOverWindow)); + if (CalcOverWindow_) { + block = L(block, Y("let", "core", CalcOverWindow_)); } block = L(block, Y("let", "core", Y("PersistableRepr", BuildSqlProject(ctx, ordered)))); - if (Distinct) { + if (Distinct_) { block = L(block, Y("let", "core", Y("PersistableRepr", Y("SqlAggregateAll", Y("RemoveSystemMembers", "core"))))); } } TNodePtr BuildSort(TContext& ctx, const TString& label) override { Y_UNUSED(ctx); - if (OrderBy.empty() || DisableSort_) { + if (OrderBy_.empty() || DisableSort_) { return nullptr; } - auto sorted = BuildSortSpec(OrderBy, label, false, AssumeSorted); - if (ExtraSortColumns.empty()) { + auto sorted = BuildSortSpec(OrderBy_, label, false, AssumeSorted_); + if (ExtraSortColumns_.empty()) { return Y("let", label, sorted); } auto body = Y(); - for (const auto& [column, _] : ExtraSortColumns) { + for (const auto& [column, _] : ExtraSortColumns_) { body = L(body, Y("let", "row", Y("RemoveMember", "row", Q(column)))); } body = L(body, Y("let", "res", "row")); - return Y("let", label, Y("OrderedMap", sorted, BuildLambda(Pos, Y("row"), body, "res"))); + return Y("let", label, Y("OrderedMap", sorted, BuildLambda(Pos_, Y("row"), body, "res"))); } TNodePtr BuildCleanupColumns(TContext& ctx, const TString& label) override { TNodePtr cleanup; if (ctx.EnableSystemColumns && ctx.Settings.Mode != NSQLTranslation::ESqlMode::LIMITED_VIEW) { - if (Columns.All) { + if (Columns_.All) { cleanup = Y("let", label, Y("RemoveSystemMembers", label)); - } else if (!Columns.List.empty()) { - const bool isJoin = Source->GetJoin(); - if (!isJoin && Columns.QualifiedAll) { + } else if (!Columns_.List.empty()) { + const bool isJoin = Source_->GetJoin(); + if (!isJoin && Columns_.QualifiedAll) { if (ctx.SimpleColumns) { cleanup = Y("let", label, Y("RemoveSystemMembers", label)); } else { TNodePtr members; - for (auto& term: Terms) { + for (auto& term: Terms_) { if (term->IsAsterisk()) { auto sourceName = term->GetSourceName(); YQL_ENSURE(*sourceName && !sourceName->empty()); @@ -1853,43 +1853,43 @@ public: } bool HasSelectResult() const override { - return !Settings.Discard; + return !Settings_.Discard; } bool IsStream() const override { - return Source->IsStream(); + return Source_->IsStream(); } EOrderKind GetOrderKind() const override { - if (OrderBy.empty()) { + if (OrderBy_.empty()) { return EOrderKind::None; } - return AssumeSorted ? EOrderKind::Assume : EOrderKind::Sort; + return AssumeSorted_ ? EOrderKind::Assume : EOrderKind::Sort; } TWriteSettings GetWriteSettings() const override { - return Settings; + return Settings_; } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { - const bool aggregated = Source->HasAggregations() || Distinct; - if (OrderByInit && (Source->GetJoin() || !aggregated)) { + const bool aggregated = Source_->HasAggregations() || Distinct_; + if (OrderByInit_ && (Source_->GetJoin() || !aggregated)) { // ORDER BY will try to find column not only in projection items, but also in Source. // ```SELECT a, b FROM T ORDER BY c``` should work if c is present in T const bool reliable = column.IsReliable(); column.SetAsNotReliable(); auto maybeExist = IRealSource::AddColumn(ctx, column); - if (reliable && !Source->GetJoin()) { + if (reliable && !Source_->GetJoin()) { column.ResetAsReliable(); } if (!maybeExist || !maybeExist.GetRef()) { - maybeExist = Source->AddColumn(ctx, column); + maybeExist = Source_->AddColumn(ctx, column); } if (!maybeExist.Defined()) { return maybeExist; } if (!DisableSort_ && !aggregated && column.GetColumnName() && IsMissingInProjection(ctx, column)) { - ExtraSortColumns[FullColumnName(column)] = &column; + ExtraSortColumns_[FullColumnName(column)] = &column; } return maybeExist; } @@ -1899,21 +1899,21 @@ public: bool IsMissingInProjection(TContext& ctx, const TColumnNode& column) const { TString columnName = FullColumnName(column); - if (Columns.Real.contains(columnName) || Columns.Artificial.contains(columnName)) { + if (Columns_.Real.contains(columnName) || Columns_.Artificial.contains(columnName)) { return false; } - if (!ctx.SimpleColumns && Columns.QualifiedAll && !columnName.Contains('.')) { + if (!ctx.SimpleColumns && Columns_.QualifiedAll && !columnName.Contains('.')) { return false; } - if (!Columns.IsColumnPossible(ctx, columnName)) { + if (!Columns_.IsColumnPossible(ctx, columnName)) { return true; } - for (auto without: Without) { + for (auto without: Without_) { auto name = *without->GetColumnName(); - if (Source && Source->GetJoin()) { + if (Source_ && Source_->GetJoin()) { name = DotJoin(*without->GetSourceName(), name); } if (name == columnName) { @@ -1926,18 +1926,18 @@ public: TNodePtr PrepareWithout(const TNodePtr& base) { auto terms = base; - if (Without) { - for (auto without: Without) { + if (Without_) { + for (auto without: Without_) { auto name = *without->GetColumnName(); - if (Source && Source->GetJoin()) { + if (Source_ && Source_->GetJoin()) { name = DotJoin(*without->GetSourceName(), name); } - terms = L(terms, Y("let", "row", Y(ForceWithout ? "ForceRemoveMember" : "RemoveMember", "row", Q(name)))); + terms = L(terms, Y("let", "row", Y(ForceWithout_ ? "ForceRemoveMember" : "RemoveMember", "row", Q(name)))); } } - if (Source) { - for (auto column : Source->GetTmpWindowColumns()) { + if (Source_) { + for (auto column : Source_->GetTmpWindowColumns()) { terms = L(terms, Y("let", "row", Y("RemoveMember", "row", Q(column)))); } } @@ -1946,15 +1946,15 @@ public: } TNodePtr DoClone() const final { - return new TSelectCore(Pos, Source->CloneSource(), CloneContainer(GroupByExpr), - CloneContainer(GroupBy), CompactGroupBy, GroupBySuffix, AssumeSorted, CloneContainer(OrderBy), - SafeClone(Having), CloneContainer(WinSpecs), SafeClone(LegacyHoppingWindowSpec), - CloneContainer(Terms), Distinct, Without, ForceWithout, SelectStream, Settings, TColumnsSets(UniqueSets), TColumnsSets(DistinctSets)); + return new TSelectCore(Pos_, Source_->CloneSource(), CloneContainer(GroupByExpr_), + CloneContainer(GroupBy_), CompactGroupBy_, GroupBySuffix_, AssumeSorted_, CloneContainer(OrderBy_), + SafeClone(Having_), CloneContainer(WinSpecs_), SafeClone(LegacyHoppingWindowSpec_), + CloneContainer(Terms_), Distinct_, Without_, ForceWithout_, SelectStream_, Settings_, TColumnsSets(UniqueSets_), TColumnsSets(DistinctSets_)); } private: bool InitSelect(TContext& ctx, ISource* src, bool isJoin, bool& hasError) { - for (auto& [name, winSpec] : WinSpecs) { + for (auto& [name, winSpec] : WinSpecs_) { for (size_t i = 0; i < winSpec->Partitions.size(); ++i) { auto partitionNode = winSpec->Partitions[i]; if (auto sessionWindow = dynamic_cast<TSessionWindow*>(partitionNode.Get())) { @@ -1983,14 +1983,14 @@ private: } } - if (LegacyHoppingWindowSpec) { - if (!LegacyHoppingWindowSpec->TimeExtractor->Init(ctx, src)) { + if (LegacyHoppingWindowSpec_) { + if (!LegacyHoppingWindowSpec_->TimeExtractor->Init(ctx, src)) { hasError = true; } - src->SetLegacyHoppingWindowSpec(LegacyHoppingWindowSpec); + src->SetLegacyHoppingWindowSpec(LegacyHoppingWindowSpec_); } - for (auto& term: Terms) { + for (auto& term: Terms_) { if (!term->Init(ctx, src)) { hasError = true; continue; @@ -2001,12 +2001,12 @@ private: if (label.empty()) { auto source = term->GetSourceName(); if (term->IsAsterisk() && !source->empty()) { - Columns.QualifiedAll = true; + Columns_.QualifiedAll = true; label = DotJoin(*source, "*"); } else if (column) { label = isJoin && source && *source ? DotJoin(*source, *column) : *column; } else { - label = Columns.AddUnnamed(); + label = Columns_.AddUnnamed(); hasName = false; if (ctx.WarnUnnamedColumns) { ctx.Warning(term->GetPos(), TIssuesIds::YQL_UNNAMED_COLUMN) @@ -2014,30 +2014,30 @@ private: } } } - if (hasName && !Columns.Add(&label, false, false, true)) { - ctx.Error(Pos) << "Duplicate column: " << label; + if (hasName && !Columns_.Add(&label, false, false, true)) { + ctx.Error(Pos_) << "Duplicate column: " << label; hasError = true; } } - CompositeTerms = Y(); - if (!hasError && Source->IsCompositeSource() && !Columns.All && !Columns.QualifiedAll && !Columns.List.empty()) { - auto compositeSrcPtr = static_cast<TCompositeSelect*>(Source->GetCompositeSource()); + CompositeTerms_ = Y(); + if (!hasError && Source_->IsCompositeSource() && !Columns_.All && !Columns_.QualifiedAll && !Columns_.List.empty()) { + auto compositeSrcPtr = static_cast<TCompositeSelect*>(Source_->GetCompositeSource()); if (compositeSrcPtr) { const auto& groupings = compositeSrcPtr->GetGroupingCols(); for (const auto& column: groupings) { - if (Source->IsGroupByColumn(column)) { + if (Source_->IsGroupByColumn(column)) { continue; } - const TString tableName = (GroupByExpr || DistinctAggrExpr) ? "preaggregated" : "origcore"; - CompositeTerms = L(CompositeTerms, Y("let", "row", Y("AddMember", "row", BuildQuotedAtom(Pos, column), Y("Nothing", Y("MatchType", + const TString tableName = (GroupByExpr_ || DistinctAggrExpr_) ? "preaggregated" : "origcore"; + CompositeTerms_ = L(CompositeTerms_, Y("let", "row", Y("AddMember", "row", BuildQuotedAtom(Pos_, column), Y("Nothing", Y("MatchType", Y("StructMemberType", Y("ListItemType", Y("TypeOf", tableName)), Q(column)), Q("Optional"), Y("lambda", Q(Y("item")), "item"), Y("lambda", Q(Y("item")), Y("OptionalType", "item"))))))); } } } - for (auto iter: WinSpecs) { + for (auto iter: WinSpecs_) { auto winSpec = *iter.second; for (auto orderSpec: winSpec.OrderBy) { if (!orderSpec->OrderExpr->Init(ctx, src)) { @@ -2046,10 +2046,10 @@ private: } } - if (Columns.All || Columns.QualifiedAll) { - Source->AllColumns(); + if (Columns_.All || Columns_.QualifiedAll) { + Source_->AllColumns(); } - for (const auto& without: Without) { + for (const auto& without: Without_) { auto namePtr = without->GetColumnName(); auto sourcePtr = without->GetSourceName(); YQL_ENSURE(namePtr && *namePtr); @@ -2059,18 +2059,18 @@ private: continue; } } - if (Having && !Having->Init(ctx, src)) { + if (Having_ && !Having_->Init(ctx, src)) { hasError = true; } - if (!src->IsCompositeSource() && !Columns.All && src->HasAggregations()) { - WarnIfAliasFromSelectIsUsedInGroupBy(ctx, Terms, GroupBy, GroupByExpr); + if (!src->IsCompositeSource() && !Columns_.All && src->HasAggregations()) { + WarnIfAliasFromSelectIsUsedInGroupBy(ctx, Terms_, GroupBy_, GroupByExpr_); /// verify select aggregation compatibility - TVector<TNodePtr> exprs(Terms); - if (Having) { - exprs.push_back(Having); + TVector<TNodePtr> exprs(Terms_); + if (Having_) { + exprs.push_back(Having_); } - for (const auto& iter: WinSpecs) { + for (const auto& iter: WinSpecs_) { for (const auto& sortSpec: iter.second->OrderBy) { exprs.push_back(sortSpec->OrderExpr); } @@ -2080,16 +2080,16 @@ private: } } const auto label = GetLabel(); - for (const auto& sortSpec: OrderBy) { + for (const auto& sortSpec: OrderBy_) { auto& expr = sortSpec->OrderExpr; - SetLabel(Source->GetLabel()); - OrderByInit = true; + 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")) { + OrderByInit_ = false; + if (!IsComparableExpression(ctx, expr, AssumeSorted_, AssumeSorted_ ? "ASSUME ORDER BY" : "ORDER BY")) { hasError = true; continue; } @@ -2100,16 +2100,16 @@ private: } TNodePtr PrepareJoinCoalesce(TContext& ctx, const TNodePtr& base, bool multipleQualifiedAll, const TVector<TString>& coalesceLabels) { - const bool isJoin = Source->GetJoin(); + const bool isJoin = Source_->GetJoin(); const bool needCoalesce = isJoin && ctx.SimpleColumns && - (Columns.All || multipleQualifiedAll || ctx.CoalesceJoinKeysOnQualifiedAll); + (Columns_.All || multipleQualifiedAll || ctx.CoalesceJoinKeysOnQualifiedAll); if (!needCoalesce) { return base; } auto terms = base; - const auto& sameKeyMap = Source->GetJoin()->GetSameKeysMap(); + const auto& sameKeyMap = Source_->GetJoin()->GetSameKeysMap(); if (sameKeyMap) { terms = L(terms, Y("let", "flatSameKeys", "row")); for (const auto& [key, sources]: sameKeyMap) { @@ -2129,63 +2129,63 @@ private: TNodePtr BuildSqlProject(TContext& ctx, bool ordered) { auto sqlProjectArgs = Y(); - const bool isJoin = Source->GetJoin(); + const bool isJoin = Source_->GetJoin(); - if (Columns.All) { - YQL_ENSURE(Columns.List.empty()); + if (Columns_.All) { + YQL_ENSURE(Columns_.List.empty()); auto terms = PrepareWithout(Y()); auto options = Y(); if (isJoin && ctx.SimpleColumns) { - terms = PrepareJoinCoalesce(ctx, terms, false, Source->GetJoin()->GetJoinLabels()); + terms = PrepareJoinCoalesce(ctx, terms, false, Source_->GetJoin()->GetJoinLabels()); auto members = Y(); - for (auto& source : Source->GetJoin()->GetJoinLabels()) { + for (auto& source : Source_->GetJoin()->GetJoinLabels()) { YQL_ENSURE(!source.empty()); - members = L(members, BuildQuotedAtom(Pos, source + ".")); + members = L(members, BuildQuotedAtom(Pos_, source + ".")); } - if (GroupByExpr.empty() || ctx.BogousStarInGroupByOverJoin) { + if (GroupByExpr_.empty() || ctx.BogousStarInGroupByOverJoin) { terms = L(terms, Y("let", "res", Y("DivePrefixMembers", "row", Q(members)))); } else { auto groupExprStruct = Y("AsStruct"); - for (auto node : GroupByExpr) { + for (auto node : GroupByExpr_) { auto label = node->GetLabel(); YQL_ENSURE(label); - if (Source->IsGroupByColumn(label)) { - auto name = BuildQuotedAtom(Pos, label); + if (Source_->IsGroupByColumn(label)) { + auto name = BuildQuotedAtom(Pos_, label); groupExprStruct = L(groupExprStruct, Q(Y(name, Y("Member", "row", name)))); } } auto groupColumnsStruct = Y("DivePrefixMembers", "row", Q(members)); - terms = L(terms, Y("let", "res", Y("FlattenMembers", Q(Y(BuildQuotedAtom(Pos, ""), groupExprStruct)), - Q(Y(BuildQuotedAtom(Pos, ""), groupColumnsStruct))))); + terms = L(terms, Y("let", "res", Y("FlattenMembers", Q(Y(BuildQuotedAtom(Pos_, ""), groupExprStruct)), + Q(Y(BuildQuotedAtom(Pos_, ""), groupColumnsStruct))))); } options = L(options, Q(Y(Q("divePrefix"), Q(members)))); } else { terms = L(terms, Y("let", "res", "row")); } - sqlProjectArgs = L(sqlProjectArgs, Y("SqlProjectStarItem", "projectCoreType", BuildQuotedAtom(Pos, ""), BuildLambda(Pos, Y("row"), terms, "res"), Q(options))); + sqlProjectArgs = L(sqlProjectArgs, Y("SqlProjectStarItem", "projectCoreType", BuildQuotedAtom(Pos_, ""), BuildLambda(Pos_, Y("row"), terms, "res"), Q(options))); } else { - YQL_ENSURE(!Columns.List.empty()); - YQL_ENSURE(Columns.List.size() == Terms.size()); + YQL_ENSURE(!Columns_.List.empty()); + YQL_ENSURE(Columns_.List.size() == Terms_.size()); TVector<TString> coalesceLabels; bool multipleQualifiedAll = false; if (isJoin && ctx.SimpleColumns) { THashSet<TString> starTerms; - for (auto& term: Terms) { + for (auto& term: Terms_) { if (term->IsAsterisk()) { auto sourceName = term->GetSourceName(); YQL_ENSURE(*sourceName && !sourceName->empty()); - YQL_ENSURE(Columns.QualifiedAll); + YQL_ENSURE(Columns_.QualifiedAll); starTerms.insert(*sourceName); } } TVector<TString> matched; TVector<TString> unmatched; - for (auto& label : Source->GetJoin()->GetJoinLabels()) { + for (auto& label : Source_->GetJoin()->GetJoinLabels()) { if (starTerms.contains(label)) { matched.push_back(label); } else { @@ -2199,15 +2199,15 @@ private: multipleQualifiedAll = starTerms.size() > 1; } - auto column = Columns.List.begin(); - auto isNamedColumn = Columns.NamedColumns.begin(); - for (auto& term: Terms) { + auto column = Columns_.List.begin(); + auto isNamedColumn = Columns_.NamedColumns.begin(); + for (auto& term: Terms_) { auto sourceName = term->GetSourceName(); if (!term->IsAsterisk()) { auto body = Y(); body = L(body, Y("let", "res", term)); - TPosition lambdaPos = Pos; - TPosition aliasPos = Pos; + TPosition lambdaPos = Pos_; + TPosition aliasPos = Pos_; if (term->IsImplicitLabel() && ctx.WarnOnAnsiAliasShadowing) { // TODO: recanonize for positions below lambdaPos = term->GetPos(); @@ -2231,13 +2231,13 @@ private: auto members = isJoin ? Y() : Y("FlattenMembers"); if (isJoin) { - members = L(members, BuildQuotedAtom(Pos, *sourceName + ".")); + members = L(members, BuildQuotedAtom(Pos_, *sourceName + ".")); if (ctx.SimpleColumns) { options = L(options, Q(Y(Q("divePrefix"), Q(members)))); } members = Y(ctx.SimpleColumns ? "DivePrefixMembers" : "SelectMembers", "row", Q(members)); } else { - auto prefix = BuildQuotedAtom(Pos, ctx.SimpleColumns ? "" : *sourceName + "."); + auto prefix = BuildQuotedAtom(Pos_, ctx.SimpleColumns ? "" : *sourceName + "."); members = L(members, Q(Y(prefix, "row"))); if (!ctx.SimpleColumns) { options = L(options, Q(Y(Q("addPrefix"), prefix))); @@ -2246,14 +2246,14 @@ private: terms = L(terms, Y("let", "res", members)); } - sqlProjectArgs = L(sqlProjectArgs, Y("SqlProjectStarItem", "projectCoreType", BuildQuotedAtom(Pos, *sourceName), BuildLambda(Pos, Y("row"), terms, "res"), Q(options))); + sqlProjectArgs = L(sqlProjectArgs, Y("SqlProjectStarItem", "projectCoreType", BuildQuotedAtom(Pos_, *sourceName), BuildLambda(Pos_, Y("row"), terms, "res"), Q(options))); } ++column; ++isNamedColumn; } } - for (const auto& [columnName, column]: ExtraSortColumns) { + for (const auto& [columnName, column]: ExtraSortColumns_) { auto body = Y(); body = L(body, Y("let", "res", column)); TPosition pos = column->GetPos(); @@ -2263,7 +2263,7 @@ private: auto block(Y(Y("let", "projectCoreType", Y("TypeOf", "core")))); block = L(block, Y("let", "core", Y(ordered ? "OrderedSqlProject" : "SqlProject", "core", Q(sqlProjectArgs)))); - if (!(UniqueSets.empty() && DistinctSets.empty())) { + if (!(UniqueSets_.empty() && DistinctSets_.empty())) { block = L(block, Y("let", "core", Y("RemoveSystemMembers", "core"))); const auto MakeUniqueHint = [this](INode::TPtr& block, const TColumnsSets& sets, bool distinct) { if (!sets.empty()) { @@ -2282,41 +2282,41 @@ private: } }; - MakeUniqueHint(block, DistinctSets, true); - MakeUniqueHint(block, UniqueSets, false); + MakeUniqueHint(block, DistinctSets_, true); + MakeUniqueHint(block, UniqueSets_, false); } return Y("block", Q(L(block, Y("return", "core")))); } private: - TSourcePtr Source; - TVector<TNodePtr> GroupByExpr; - TVector<TNodePtr> DistinctAggrExpr; - TVector<TNodePtr> GroupBy; - bool AssumeSorted = false; - bool CompactGroupBy = false; - TString GroupBySuffix; - TVector<TSortSpecificationPtr> OrderBy; - TNodePtr Having; - TWinSpecs WinSpecs; - TNodePtr Flatten; - TNodePtr PreFlattenMap; - TNodePtr PreaggregatedMap; - TNodePtr PrewindowMap; - TNodePtr Aggregate; - TNodePtr CalcOverWindow; - TNodePtr CompositeTerms; - TVector<TNodePtr> Terms; - TVector<TNodePtr> Without; - const bool ForceWithout; - const bool Distinct; - bool OrderByInit = false; - TLegacyHoppingWindowSpecPtr LegacyHoppingWindowSpec; - const bool SelectStream; - const TWriteSettings Settings; - const TColumnsSets UniqueSets, DistinctSets; - TMap<TString, TNodePtr> ExtraSortColumns; + TSourcePtr Source_; + TVector<TNodePtr> GroupByExpr_; + TVector<TNodePtr> DistinctAggrExpr_; + TVector<TNodePtr> GroupBy_; + bool AssumeSorted_ = false; + bool CompactGroupBy_ = false; + TString GroupBySuffix_; + TVector<TSortSpecificationPtr> OrderBy_; + TNodePtr Having_; + TWinSpecs WinSpecs_; + TNodePtr Flatten_; + TNodePtr PreFlattenMap_; + TNodePtr PreaggregatedMap_; + TNodePtr PrewindowMap_; + TNodePtr Aggregate_; + TNodePtr CalcOverWindow_; + TNodePtr CompositeTerms_; + TVector<TNodePtr> Terms_; + TVector<TNodePtr> Without_; + const bool ForceWithout_; + const bool Distinct_; + bool OrderByInit_ = false; + TLegacyHoppingWindowSpecPtr LegacyHoppingWindowSpec_; + const bool SelectStream_; + const TWriteSettings Settings_; + const TColumnsSets UniqueSets_, DistinctSets_; + TMap<TString, TNodePtr> ExtraSortColumns_; }; class TProcessSource: public IRealSource { @@ -2333,82 +2333,82 @@ public: const TVector<TSortSpecificationPtr>& assumeOrderBy ) : IRealSource(pos) - , Source(std::move(source)) - , With(with) - , WithExtFunction(withExtFunction) - , Terms(std::move(terms)) - , ListCall(listCall) - , ProcessStream(processStream) - , Settings(settings) - , AssumeOrderBy(assumeOrderBy) + , Source_(std::move(source)) + , With_(with) + , WithExtFunction_(withExtFunction) + , Terms_(std::move(terms)) + , ListCall_(listCall) + , ProcessStream_(processStream) + , Settings_(settings) + , AssumeOrderBy_(assumeOrderBy) { } void GetInputTables(TTableList& tableList) const override { - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); ISource::GetInputTables(tableList); } bool DoInit(TContext& ctx, ISource* initSrc) override { - if (AsInner) { - Source->UseAsInner(); + if (AsInner_) { + Source_->UseAsInner(); } - if (!Source->Init(ctx, initSrc)) { + if (!Source_->Init(ctx, initSrc)) { return false; } - if (ProcessStream && !Source->IsStream()) { - ctx.Error(Pos) << "PROCESS STREAM is unsupported for non-streaming sources"; + if (ProcessStream_ && !Source_->IsStream()) { + ctx.Error(Pos_) << "PROCESS STREAM is unsupported for non-streaming sources"; return false; } - auto src = Source.Get(); - if (!With) { + auto src = Source_.Get(); + if (!With_) { src->AllColumns(); - Columns.SetAll(); + Columns_.SetAll(); src->FinishColumns(); return true; } /// grouped expressions are available in filters - if (!Source->InitFilters(ctx)) { + if (!Source_->InitFilters(ctx)) { return false; } TSourcePtr fakeSource = nullptr; - if (ListCall && !WithExtFunction) { + if (ListCall_ && !WithExtFunction_) { fakeSource = BuildFakeSource(src->GetPos()); src->AllColumns(); } auto processSource = fakeSource != nullptr ? fakeSource.Get() : src; Y_DEBUG_ABORT_UNLESS(processSource != nullptr); - if (!With->Init(ctx, processSource)) { + if (!With_->Init(ctx, processSource)) { return false; } - if (With->GetLabel().empty()) { - Columns.SetAll(); + if (With_->GetLabel().empty()) { + Columns_.SetAll(); } else { - if (ListCall) { - ctx.Error(With->GetPos()) << "Label is not allowed to use with TableRows()"; + if (ListCall_) { + ctx.Error(With_->GetPos()) << "Label is not allowed to use with TableRows()"; return false; } - Columns.Add(&With->GetLabel(), false); + Columns_.Add(&With_->GetLabel(), false); } bool hasError = false; TNodePtr produce; - if (WithExtFunction) { + if (WithExtFunction_) { produce = Y(); } else { - TString processCall = (ListCall ? "SqlProcess" : "Apply"); - produce = Y(processCall, With); + TString processCall = (ListCall_ ? "SqlProcess" : "Apply"); + produce = Y(processCall, With_); } TMaybe<ui32> listPosIndex; ui32 termIndex = 0; - for (auto& term: Terms) { + for (auto& term: Terms_) { if (!term->GetLabel().empty()) { ctx.Error(term->GetPos()) << "Labels are not allowed for PROCESS terms"; hasError = true; @@ -2420,7 +2420,7 @@ public: continue; } - if (ListCall) { + if (ListCall_) { if (auto atom = dynamic_cast<TTableRows*>(term.Get())) { listPosIndex = termIndex; } @@ -2434,7 +2434,7 @@ public: return false; } - if (ListCall && !WithExtFunction) { + if (ListCall_ && !WithExtFunction_) { YQL_ENSURE(listPosIndex.Defined()); produce = L(produce, Q(ToString(*listPosIndex))); } @@ -2443,16 +2443,16 @@ public: hasError = true; } - if (!(WithExtFunction && Terms.empty())) { - TVector<TNodePtr>(1, produce).swap(Terms); + if (!(WithExtFunction_ && Terms_.empty())) { + TVector<TNodePtr>(1, produce).swap(Terms_); } src->FinishColumns(); const auto label = GetLabel(); - for (const auto& sortSpec: AssumeOrderBy) { + for (const auto& sortSpec: AssumeOrderBy_) { auto& expr = sortSpec->OrderExpr; - SetLabel(Source->GetLabel()); + SetLabel(Source_->GetLabel()); if (!expr->Init(ctx, this)) { hasError = true; continue; @@ -2468,12 +2468,12 @@ public: } TNodePtr Build(TContext& ctx) override { - auto input = Source->Build(ctx); + auto input = Source_->Build(ctx); if (!input) { return nullptr; } - if (!With) { + if (!With_) { auto res = input; if (ctx.EnableSystemColumns) { res = Y("RemoveSystemMembers", res); @@ -2482,28 +2482,28 @@ public: return res; } - TString inputLabel = ListCall ? "inputRowsList" : "core"; + TString inputLabel = ListCall_ ? "inputRowsList" : "core"; auto block(Y(Y("let", inputLabel, input))); - auto filter = Source->BuildFilter(ctx, inputLabel); + auto filter = Source_->BuildFilter(ctx, inputLabel); if (filter) { block = L(block, Y("let", inputLabel, filter)); } - if (WithExtFunction) { + if (WithExtFunction_) { auto preTransform = Y("RemoveSystemMembers", inputLabel); - if (Terms.size() > 0) { - preTransform = Y("Map", preTransform, BuildLambda(Pos, Y("row"), Q(Terms[0]))); + if (Terms_.size() > 0) { + preTransform = Y("Map", preTransform, BuildLambda(Pos_, Y("row"), Q(Terms_[0]))); } block = L(block, Y("let", inputLabel, preTransform)); - block = L(block, Y("let", "transform", With)); + block = L(block, Y("let", "transform", With_)); block = L(block, Y("let", "core", Y("Apply", "transform", inputLabel))); - } else if (ListCall) { - block = L(block, Y("let", "core", Terms[0])); + } else if (ListCall_) { + block = L(block, Y("let", "core", Terms_[0])); } else { auto terms = BuildColumnsTerms(ctx); - block = L(block, Y("let", "core", Y(ctx.UseUnordered(*this) ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos, Y("row"), terms, "res")))); + block = L(block, Y("let", "core", Y(ctx.UseUnordered(*this) ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos_, Y("row"), terms, "res")))); } block = L(block, Y("let", "core", Y("AutoDemux", Y("PersistableRepr", "core")))); return Y("block", Q(L(block, Y("return", "core")))); @@ -2511,18 +2511,18 @@ public: TNodePtr BuildSort(TContext& ctx, const TString& label) override { Y_UNUSED(ctx); - if (AssumeOrderBy.empty()) { + if (AssumeOrderBy_.empty()) { return nullptr; } - return Y("let", label, BuildSortSpec(AssumeOrderBy, label, false, true)); + return Y("let", label, BuildSortSpec(AssumeOrderBy_, label, false, true)); } EOrderKind GetOrderKind() const override { - if (!With) { + if (!With_) { return EOrderKind::Passthrough; } - return AssumeOrderBy.empty() ? EOrderKind::None : EOrderKind::Assume; + return AssumeOrderBy_.empty() ? EOrderKind::None : EOrderKind::Assume; } bool IsSelect() const override { @@ -2530,47 +2530,47 @@ public: } bool HasSelectResult() const override { - return !Settings.Discard; + return !Settings_.Discard; } bool IsStream() const override { - return Source->IsStream(); + return Source_->IsStream(); } TWriteSettings GetWriteSettings() const override { - return Settings; + return Settings_; } TNodePtr DoClone() const final { - return new TProcessSource(Pos, Source->CloneSource(), SafeClone(With), WithExtFunction, - CloneContainer(Terms), ListCall, ProcessStream, Settings, CloneContainer(AssumeOrderBy)); + return new TProcessSource(Pos_, Source_->CloneSource(), SafeClone(With_), WithExtFunction_, + CloneContainer(Terms_), ListCall_, ProcessStream_, Settings_, CloneContainer(AssumeOrderBy_)); } private: TNodePtr BuildColumnsTerms(TContext& ctx) { Y_UNUSED(ctx); TNodePtr terms; - Y_DEBUG_ABORT_UNLESS(Terms.size() == 1); - if (Columns.All) { - terms = Y(Y("let", "res", Y("ToSequence", Terms.front()))); + Y_DEBUG_ABORT_UNLESS(Terms_.size() == 1); + if (Columns_.All) { + terms = Y(Y("let", "res", Y("ToSequence", Terms_.front()))); } else { - Y_DEBUG_ABORT_UNLESS(Columns.List.size() == Terms.size()); + Y_DEBUG_ABORT_UNLESS(Columns_.List.size() == Terms_.size()); terms = L(Y(), Y("let", "res", - L(Y("AsStructUnordered"), Q(Y(BuildQuotedAtom(Pos, Columns.List.front()), Terms.front()))))); + L(Y("AsStructUnordered"), Q(Y(BuildQuotedAtom(Pos_, Columns_.List.front()), Terms_.front()))))); terms = L(terms, Y("let", "res", Y("Just", "res"))); } return terms; } private: - TSourcePtr Source; - TNodePtr With; - const bool WithExtFunction; - TVector<TNodePtr> Terms; - const bool ListCall; - const bool ProcessStream; - const TWriteSettings Settings; - TVector<TSortSpecificationPtr> AssumeOrderBy; + TSourcePtr Source_; + TNodePtr With_; + const bool WithExtFunction_; + TVector<TNodePtr> Terms_; + const bool ListCall_; + const bool ProcessStream_; + const TWriteSettings Settings_; + TVector<TSortSpecificationPtr> AssumeOrderBy_; }; TSourcePtr BuildProcess( @@ -2591,35 +2591,35 @@ class TNestedProxySource: public IProxySource { public: TNestedProxySource(TPosition pos, const TVector<TNodePtr>& groupBy, TSourcePtr source) : IProxySource(pos, source.Get()) - , CompositeSelect(nullptr) - , Holder(std::move(source)) - , GroupBy(groupBy) + , CompositeSelect_(nullptr) + , Holder_(std::move(source)) + , GroupBy_(groupBy) {} TNestedProxySource(TCompositeSelect* compositeSelect, const TVector<TNodePtr>& groupBy) : IProxySource(compositeSelect->GetPos(), compositeSelect->RealSource()) - , CompositeSelect(compositeSelect) - , GroupBy(groupBy) + , CompositeSelect_(compositeSelect) + , GroupBy_(groupBy) {} bool DoInit(TContext& ctx, ISource* src) override { - return Source->Init(ctx, src); + return Source_->Init(ctx, src); } TNodePtr Build(TContext& ctx) override { - return CompositeSelect ? BuildAtom(Pos, "composite", TNodeFlags::Default) : Source->Build(ctx); + return CompositeSelect_ ? BuildAtom(Pos_, "composite", TNodeFlags::Default) : Source_->Build(ctx); } bool InitFilters(TContext& ctx) override { - return CompositeSelect ? true : Source->InitFilters(ctx); + return CompositeSelect_ ? true : Source_->InitFilters(ctx); } TNodePtr BuildFilter(TContext& ctx, const TString& label) override { - return CompositeSelect ? nullptr : Source->BuildFilter(ctx, label); + return CompositeSelect_ ? nullptr : Source_->BuildFilter(ctx, label); } IJoin* GetJoin() override { - return Source->GetJoin(); + return Source_->GetJoin(); } bool IsCompositeSource() const override { @@ -2627,16 +2627,16 @@ public: } ISource* GetCompositeSource() override { - return CompositeSelect; + return CompositeSelect_; } bool AddGrouping(TContext& ctx, const TVector<TString>& columns, TString& hintColumn) override { Y_UNUSED(ctx); - hintColumn = TStringBuilder() << "GroupingHint" << Hints.size(); + hintColumn = TStringBuilder() << "GroupingHint" << Hints_.size(); ui64 hint = 0; - if (GroupByColumns.empty()) { + if (GroupByColumns_.empty()) { const bool isJoin = GetJoin(); - for (const auto& groupByNode: GroupBy) { + for (const auto& groupByNode: GroupBy_) { auto namePtr = groupByNode->GetColumnName(); YQL_ENSURE(namePtr); TString column = *namePtr; @@ -2646,40 +2646,40 @@ public: column = DotJoin(*sourceNamePtr, column); } } - GroupByColumns.insert(column); + GroupByColumns_.insert(column); } } for (const auto& column: columns) { hint <<= 1; - if (!GroupByColumns.contains(column)) { + if (!GroupByColumns_.contains(column)) { hint += 1; } } - Hints.push_back(hint); + Hints_.push_back(hint); return true; } size_t GetGroupingColumnsCount() const override { - return Hints.size(); + return Hints_.size(); } TNodePtr BuildGroupingColumns(const TString& label) override { - if (Hints.empty()) { + if (Hints_.empty()) { return nullptr; } auto body = Y(); - for (size_t i = 0; i < Hints.size(); ++i) { + for (size_t i = 0; i < Hints_.size(); ++i) { TString hintColumn = TStringBuilder() << "GroupingHint" << i; - TString hintValue = ToString(Hints[i]); + TString hintValue = ToString(Hints_[i]); body = L(body, Y("let", "row", Y("AddMember", "row", Q(hintColumn), Y("Uint64", Q(hintValue))))); } - return Y("Map", label, BuildLambda(Pos, Y("row"), body, "row")); + return Y("Map", label, BuildLambda(Pos_, Y("row"), body, "row")); } void FinishColumns() override { - Source->FinishColumns(); + Source_->FinishColumns(); } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { @@ -2688,21 +2688,21 @@ public: return true; } } - return Source->AddColumn(ctx, column); + return Source_->AddColumn(ctx, column); } TPtr DoClone() const final { - YQL_ENSURE(Hints.empty()); - return Holder.Get() ? new TNestedProxySource(Pos, CloneContainer(GroupBy), Holder->CloneSource()) : - new TNestedProxySource(CompositeSelect, CloneContainer(GroupBy)); + YQL_ENSURE(Hints_.empty()); + return Holder_.Get() ? new TNestedProxySource(Pos_, CloneContainer(GroupBy_), Holder_->CloneSource()) : + new TNestedProxySource(CompositeSelect_, CloneContainer(GroupBy_)); } private: - TCompositeSelect* CompositeSelect; - TSourcePtr Holder; - TVector<TNodePtr> GroupBy; - mutable TSet<TString> GroupByColumns; - mutable TVector<ui64> Hints; + TCompositeSelect* CompositeSelect_; + TSourcePtr Holder_; + TVector<TNodePtr> GroupBy_; + mutable TSet<TString> GroupByColumns_; + mutable TVector<ui64> Hints_; }; @@ -2811,9 +2811,9 @@ class TUnion: public IRealSource { public: TUnion(TPosition pos, TVector<TSourcePtr>&& sources, bool quantifierAll, const TWriteSettings& settings) : IRealSource(pos) - , Sources(std::move(sources)) - , QuantifierAll(quantifierAll) - , Settings(settings) + , Sources_(std::move(sources)) + , QuantifierAll_(quantifierAll) + , Settings_(settings) { } @@ -2822,7 +2822,7 @@ public: } void GetInputTables(TTableList& tableList) const override { - for (auto& x : Sources) { + for (auto& x : Sources_) { x->GetInputTables(tableList); } @@ -2831,7 +2831,7 @@ public: bool DoInit(TContext& ctx, ISource* src) override { bool first = true; - for (auto& s: Sources) { + for (auto& s: Sources_) { s->UseAsInner(); if (!s->Init(ctx, src)) { return false; @@ -2839,7 +2839,7 @@ public: if (!ctx.PositionalUnionAll || first) { auto c = s->GetColumns(); Y_DEBUG_ABORT_UNLESS(c); - Columns.Merge(*c); + Columns_.Merge(*c); first = false; } } @@ -2848,7 +2848,7 @@ public: TNodePtr Build(TContext& ctx) override { TPtr res; - if (QuantifierAll) { + if (QuantifierAll_) { if (ctx.EmitUnionMerge) { res = ctx.PositionalUnionAll ? Y("UnionMergePositional") : Y("UnionMerge"); } else { @@ -2858,7 +2858,7 @@ public: res = ctx.PositionalUnionAll ? Y("UnionPositional") : Y("Union"); } - for (auto& s: Sources) { + for (auto& s: Sources_) { auto input = s->Build(ctx); if (!input) { return nullptr; @@ -2870,7 +2870,7 @@ public: bool IsStream() const override { - for (auto& s: Sources) { + for (auto& s: Sources_) { if (!s->IsStream()) { return false; } @@ -2879,7 +2879,7 @@ public: } TNodePtr DoClone() const final { - return MakeIntrusive<TUnion>(Pos, CloneContainer(Sources), QuantifierAll, Settings); + return MakeIntrusive<TUnion>(Pos_, CloneContainer(Sources_), QuantifierAll_, Settings_); } bool IsSelect() const override { @@ -2887,17 +2887,17 @@ public: } bool HasSelectResult() const override { - return !Settings.Discard; + return !Settings_.Discard; } TWriteSettings GetWriteSettings() const override { - return Settings; + return Settings_; } private: - TVector<TSourcePtr> Sources; - bool QuantifierAll; - const TWriteSettings Settings; + TVector<TSourcePtr> Sources_; + bool QuantifierAll_; + const TWriteSettings Settings_; }; TSourcePtr BuildUnion( @@ -2913,28 +2913,28 @@ class TOverWindowSource: public IProxySource { public: TOverWindowSource(TPosition pos, const TString& windowName, ISource* origSource) : IProxySource(pos, origSource) - , WindowName(windowName) + , WindowName_(windowName) { - Source->SetLabel(origSource->GetLabel()); + Source_->SetLabel(origSource->GetLabel()); } TString MakeLocalName(const TString& name) override { - return Source->MakeLocalName(name); + return Source_->MakeLocalName(name); } void AddTmpWindowColumn(const TString& column) override { - return Source->AddTmpWindowColumn(column); + return Source_->AddTmpWindowColumn(column); } bool AddAggregation(TContext& ctx, TAggregationPtr aggr) override { if (aggr->IsOverWindow() || aggr->IsOverWindowDistinct()) { - return Source->AddAggregationOverWindow(ctx, WindowName, aggr); + return Source_->AddAggregationOverWindow(ctx, WindowName_, aggr); } - return Source->AddAggregation(ctx, aggr); + return Source_->AddAggregation(ctx, aggr); } bool AddFuncOverWindow(TContext& ctx, TNodePtr expr) override { - return Source->AddFuncOverWindow(ctx, WindowName, expr); + return Source_->AddFuncOverWindow(ctx, WindowName_, expr); } bool IsOverWindowSource() const override { @@ -2942,7 +2942,7 @@ public: } TMaybe<bool> AddColumn(TContext& ctx, TColumnNode& column) override { - return Source->AddColumn(ctx, column); + return Source_->AddColumn(ctx, column); } TNodePtr Build(TContext& ctx) override { @@ -2951,19 +2951,19 @@ public: } const TString* GetWindowName() const override { - return &WindowName; + return &WindowName_; } TWindowSpecificationPtr FindWindowSpecification(TContext& ctx, const TString& windowName) const override { - return Source->FindWindowSpecification(ctx, windowName); + return Source_->FindWindowSpecification(ctx, windowName); } TNodePtr GetSessionWindowSpec() const override { - return Source->GetSessionWindowSpec(); + return Source_->GetSessionWindowSpec(); } IJoin* GetJoin() override { - return Source->GetJoin(); + return Source_->GetJoin(); } TNodePtr DoClone() const final { @@ -2971,7 +2971,7 @@ public: } private: - const TString WindowName; + const TString WindowName_; }; TSourcePtr BuildOverWindowSource(TPosition pos, const TString& windowName, ISource* origSource) { @@ -3010,32 +3010,32 @@ class TSelect: public IProxySource { public: TSelect(TPosition pos, TSourcePtr source, TNodePtr skipTake) : IProxySource(pos, source.Get()) - , Source(std::move(source)) - , SkipTake(skipTake) + , Source_(std::move(source)) + , SkipTake_(skipTake) {} bool DoInit(TContext& ctx, ISource* src) override { - Source->SetLabel(Label); - if (AsInner) { - Source->UseAsInner(); + Source_->SetLabel(Label_); + if (AsInner_) { + Source_->UseAsInner(); } if (IgnoreSort()) { - Source->DisableSort(); - ctx.Warning(Source->GetPos(), TIssuesIds::YQL_ORDER_BY_WITHOUT_LIMIT_IN_SUBQUERY) << "ORDER BY without LIMIT in subquery will be ignored"; + Source_->DisableSort(); + ctx.Warning(Source_->GetPos(), TIssuesIds::YQL_ORDER_BY_WITHOUT_LIMIT_IN_SUBQUERY) << "ORDER BY without LIMIT in subquery will be ignored"; } - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - src = Source.Get(); - if (SkipTake) { - FakeSource = BuildFakeSource(SkipTake->GetPos()); - if (!SkipTake->Init(ctx, FakeSource.Get())) { + src = Source_.Get(); + if (SkipTake_) { + FakeSource_ = BuildFakeSource(SkipTake_->GetPos()); + if (!SkipTake_->Init(ctx, FakeSource_.Get())) { return false; } - if (SkipTake->HasSkip() && Source->GetOrderKind() != EOrderKind::Sort && Source->GetOrderKind() != EOrderKind::Assume) { - ctx.Warning(Source->GetPos(), TIssuesIds::YQL_OFFSET_WITHOUT_SORT) << "LIMIT with OFFSET without [ASSUME] ORDER BY may provide different results from run to run"; + if (SkipTake_->HasSkip() && Source_->GetOrderKind() != EOrderKind::Sort && Source_->GetOrderKind() != EOrderKind::Assume) { + ctx.Warning(Source_->GetPos(), TIssuesIds::YQL_OFFSET_WITHOUT_SORT) << "LIMIT with OFFSET without [ASSUME] ORDER BY may provide different results from run to run"; } } @@ -3043,20 +3043,20 @@ public: } TNodePtr Build(TContext& ctx) override { - auto input = Source->Build(ctx); + auto input = Source_->Build(ctx); if (!input) { return nullptr; } const auto label = "select"; auto block(Y(Y("let", label, input))); - auto sortNode = Source->BuildSort(ctx, label); + auto sortNode = Source_->BuildSort(ctx, label); if (sortNode && !IgnoreSort()) { block = L(block, sortNode); } - if (SkipTake) { - block = L(block, SkipTake); + if (SkipTake_) { + block = L(block, SkipTake_); } TNodePtr sample; @@ -3066,7 +3066,7 @@ public: block = L(block, Y("let", "select", Y("OrderedFlatMap", "select", sample))); } - if (auto removeNode = Source->BuildCleanupColumns(ctx, label)) { + if (auto removeNode = Source_->BuildCleanupColumns(ctx, label)) { block = L(block, removeNode); } @@ -3093,24 +3093,24 @@ public: } bool IsSelect() const override { - return Source->IsSelect(); + return Source_->IsSelect(); } bool HasSelectResult() const override { - return Source->HasSelectResult(); + return Source_->HasSelectResult(); } TPtr DoClone() const final { - return MakeIntrusive<TSelect>(Pos, Source->CloneSource(), SafeClone(SkipTake)); + return MakeIntrusive<TSelect>(Pos_, Source_->CloneSource(), SafeClone(SkipTake_)); } protected: bool IgnoreSort() const { - return AsInner && !SkipTake && EOrderKind::Sort == Source->GetOrderKind(); + return AsInner_ && !SkipTake_ && EOrderKind::Sort == Source_->GetOrderKind(); } - TSourcePtr Source; - TNodePtr SkipTake; - TSourcePtr FakeSource; + TSourcePtr Source_; + TNodePtr SkipTake_; + TSourcePtr FakeSource_; }; TSourcePtr BuildSelect(TPosition pos, TSourcePtr source, TNodePtr skipTake) { @@ -3122,13 +3122,13 @@ public: TSelectResultNode(TPosition pos, TSourcePtr source, bool writeResult, bool inSubquery, TScopedStatePtr scoped) : TAstListNode(pos) - , Source(std::move(source)) - , WriteResult(writeResult) - , InSubquery(inSubquery) - , Scoped(scoped) + , Source_(std::move(source)) + , WriteResult_(writeResult) + , InSubquery_(inSubquery) + , Scoped_(scoped) { - YQL_ENSURE(Source, "Invalid source node"); - FakeSource = BuildFakeSource(pos); + YQL_ENSURE(Source_, "Invalid source node"); + FakeSource_ = BuildFakeSource(pos); } bool IsSelect() const override { @@ -3136,19 +3136,19 @@ public: } bool HasSelectResult() const override { - return Source->HasSelectResult(); + return Source_->HasSelectResult(); } bool DoInit(TContext& ctx, ISource* src) override { - if (!Source->Init(ctx, src)) { + if (!Source_->Init(ctx, src)) { return false; } - src = Source.Get(); + src = Source_.Get(); TTableList tableList; - Source->GetInputTables(tableList); + Source_->GetInputTables(tableList); - TNodePtr node(BuildInputTables(Pos, tableList, InSubquery, Scoped)); + TNodePtr node(BuildInputTables(Pos_, tableList, InSubquery_, Scoped_)); if (!node->Init(ctx, src)) { return false; } @@ -3172,7 +3172,7 @@ public: labelNode = Y("EvaluateAtom", labelNode); } - if (!labelNode->Init(ctx, FakeSource.Get())) { + if (!labelNode->Init(ctx, FakeSource_.Get())) { return false; } @@ -3185,16 +3185,16 @@ public: settings = L(settings, Q(Y(Q("autoref")))); } - auto columns = Source->GetColumns(); + auto columns = Source_->GetColumns(); if (columns && !columns->All && !(columns->QualifiedAll && ctx.SimpleColumns)) { auto list = Y(); YQL_ENSURE(columns->List.size() == columns->NamedColumns.size()); for (size_t i = 0; i < columns->List.size(); ++i) { auto& c = columns->List[i]; if (c.EndsWith('*')) { - list = L(list, Q(Y(Q("prefix"), BuildQuotedAtom(Pos, c.substr(0, c.size() - 1))))); + list = L(list, Q(Y(Q("prefix"), BuildQuotedAtom(Pos_, c.substr(0, c.size() - 1))))); } else if (columns->NamedColumns[i]) { - list = L(list, BuildQuotedAtom(Pos, c)); + list = L(list, BuildQuotedAtom(Pos_, c)); } else { list = L(list, Q(Y(Q("auto")))); } @@ -3206,19 +3206,19 @@ public: settings = L(settings, Q(Y(Q("take"), Q(ToString(ctx.ResultRowsLimit))))); } - auto output = Source->Build(ctx); + auto output = Source_->Build(ctx); if (!output) { return false; } node = L(node, Y("let", "output", output)); - if (WriteResult || writeSettings.Discard) { - if (EOrderKind::None == Source->GetOrderKind() && ctx.UseUnordered(*Source)) { + if (WriteResult_ || writeSettings.Discard) { + if (EOrderKind::None == Source_->GetOrderKind() && ctx.UseUnordered(*Source_)) { node = L(node, Y("let", "output", Y("Unordered", "output"))); if (ctx.UnorderedResult) { settings = L(settings, Q(Y(Q("unordered")))); } } - auto writeResult(BuildWriteResult(Pos, "output", settings)); + auto writeResult(BuildWriteResult(Pos_, "output", settings)); if (!writeResult->Init(ctx, src)) { return false; } @@ -3236,12 +3236,12 @@ public: return {}; } protected: - TSourcePtr Source; + TSourcePtr Source_; - const bool WriteResult; - const bool InSubquery; - TScopedStatePtr Scoped; - TSourcePtr FakeSource; + const bool WriteResult_; + const bool InSubquery_; + TScopedStatePtr Scoped_; + TSourcePtr FakeSource_; }; TNodePtr BuildSelectResult(TPosition pos, TSourcePtr source, bool writeResult, bool inSubquery, diff --git a/yql/essentials/sql/v1/source.cpp b/yql/essentials/sql/v1/source.cpp index 1b639dbc5d9..7b313adff13 100644 --- a/yql/essentials/sql/v1/source.cpp +++ b/yql/essentials/sql/v1/source.cpp @@ -49,14 +49,14 @@ ISource::~ISource() TSourcePtr ISource::CloneSource() const { Y_DEBUG_ABORT_UNLESS(dynamic_cast<ISource*>(Clone().Get()), "Cloned node is no source"); TSourcePtr result = static_cast<ISource*>(Clone().Get()); - for (auto curFilter: Filters) { - result->Filters.emplace_back(curFilter->Clone()); + for (auto curFilter: Filters_) { + result->Filters_.emplace_back(curFilter->Clone()); } for (int i = 0; i < static_cast<int>(EExprSeat::Max); ++i) { - result->NamedExprs[i] = CloneContainer(NamedExprs[i]); + result->NamedExprs_[i] = CloneContainer(NamedExprs_[i]); } - result->FlattenColumns = FlattenColumns; - result->FlattenMode = FlattenMode; + result->FlattenColumns_ = FlattenColumns_; + result->FlattenMode_ = FlattenMode_; return result; } @@ -73,7 +73,7 @@ const TColumns* ISource::GetColumns() const { } void ISource::GetInputTables(TTableList& tableList) const { - for (auto srcPtr: UsedSources) { + for (auto srcPtr: UsedSources_) { srcPtr->GetInputTables(tableList); } return; @@ -81,7 +81,7 @@ void ISource::GetInputTables(TTableList& tableList) const { TMaybe<bool> ISource::AddColumn(TContext& ctx, TColumnNode& column) { if (column.IsReliable()) { - ctx.Error(Pos) << "Source does not allow column references"; + ctx.Error(Pos_) << "Source does not allow column references"; ctx.Error(column.GetPos()) << "Column reference " << (column.GetColumnName() ? "'" + *column.GetColumnName() + "'" : "(expr)"); } @@ -94,25 +94,25 @@ void ISource::FinishColumns() { bool ISource::AddFilter(TContext& ctx, TNodePtr filter) { Y_UNUSED(ctx); - Filters.push_back(filter); + Filters_.push_back(filter); return true; } bool ISource::AddGroupKey(TContext& ctx, const TString& column) { - if (!GroupKeys.insert(column).second) { + if (!GroupKeys_.insert(column).second) { ctx.Error() << "Duplicate grouping column: " << column; return false; } - OrderedGroupKeys.push_back(column); + OrderedGroupKeys_.push_back(column); return true; } void ISource::SetCompactGroupBy(bool compactGroupBy) { - CompactGroupBy = compactGroupBy; + CompactGroupBy_ = compactGroupBy; } void ISource::SetGroupBySuffix(const TString& suffix) { - GroupBySuffix = suffix; + GroupBySuffix_ = suffix; } bool ISource::AddExpressions(TContext& ctx, const TVector<TNodePtr>& expressions, EExprSeat exprSeat) { @@ -121,12 +121,12 @@ bool ISource::AddExpressions(TContext& ctx, const TVector<TNodePtr>& expressions THashSet<TString> aliasSet; // TODO: merge FlattenBy with FlattenByExpr const bool isFlatten = (exprSeat == EExprSeat::FlattenBy || exprSeat == EExprSeat::FlattenByExpr); - THashSet<TString>& aliases = isFlatten ? FlattenByAliases : aliasSet; + THashSet<TString>& aliases = isFlatten ? FlattenByAliases_ : aliasSet; for (const auto& expr: expressions) { const auto& alias = expr->GetLabel(); const auto& columnNamePtr = expr->GetColumnName(); if (alias) { - ExprAliases.insert(alias); + ExprAliases_.insert(alias); if (!aliases.emplace(alias).second) { ctx.Error(expr->GetPos()) << "Duplicate alias found: " << alias << " in " << exprSeat << " section"; return false; @@ -151,7 +151,7 @@ bool ISource::AddExpressions(TContext& ctx, const TVector<TNodePtr>& expressions return false; } if (alias && exprSeat == EExprSeat::GroupBy) { - auto columnAlias = GroupByColumnAliases.emplace(columnName, alias); + auto columnAlias = GroupByColumnAliases_.emplace(columnName, alias); auto oldAlias = columnAlias.first->second; if (columnAlias.second && oldAlias != alias) { ctx.Error(expr->GetPos()) << "Alias for column not same, column: " << columnName << @@ -163,20 +163,20 @@ bool ISource::AddExpressions(TContext& ctx, const TVector<TNodePtr>& expressions if (exprSeat == EExprSeat::GroupBy) { if (auto sessionWindow = dynamic_cast<TSessionWindow*>(expr.Get())) { - if (SessionWindow) { + if (SessionWindow_) { ctx.Error(expr->GetPos()) << "Duplicate session window specification:"; - ctx.Error(SessionWindow->GetPos()) << "Previous session window is declared here"; + ctx.Error(SessionWindow_->GetPos()) << "Previous session window is declared here"; return false; } - SessionWindow = expr; + SessionWindow_ = expr; } if (auto hoppingWindow = dynamic_cast<THoppingWindow*>(expr.Get())) { - if (HoppingWindow) { + if (HoppingWindow_) { ctx.Error(expr->GetPos()) << "Duplicate hopping window specification:"; - ctx.Error(HoppingWindow->GetPos()) << "Previous hopping window is declared here"; + ctx.Error(HoppingWindow_->GetPos()) << "Previous hopping window is declared here"; return false; } - HoppingWindow = expr; + HoppingWindow_ = expr; } } Expressions(exprSeat).emplace_back(expr); @@ -185,21 +185,21 @@ bool ISource::AddExpressions(TContext& ctx, const TVector<TNodePtr>& expressions } void ISource::SetFlattenByMode(const TString& mode) { - FlattenMode = mode; + FlattenMode_ = mode; } void ISource::MarkFlattenColumns() { - FlattenColumns = true; + FlattenColumns_ = true; } bool ISource::IsFlattenColumns() const { - return FlattenColumns; + return FlattenColumns_; } TString ISource::MakeLocalName(const TString& name) { - auto iter = GenIndexes.find(name); - if (iter == GenIndexes.end()) { - iter = GenIndexes.emplace(name, 0).first; + auto iter = GenIndexes_.find(name); + if (iter == GenIndexes_.end()) { + iter = GenIndexes_.emplace(name, 0).first; } TStringBuilder str; str << name << iter->second; @@ -210,16 +210,16 @@ TString ISource::MakeLocalName(const TString& name) { bool ISource::AddAggregation(TContext& ctx, TAggregationPtr aggr) { Y_UNUSED(ctx); YQL_ENSURE(aggr); - Aggregations.push_back(aggr); + Aggregations_.push_back(aggr); return true; } bool ISource::HasAggregations() const { - return !Aggregations.empty() || !GroupKeys.empty(); + return !Aggregations_.empty() || !GroupKeys_.empty(); } void ISource::AddWindowSpecs(TWinSpecs winSpecs) { - WinSpecs = winSpecs; + WinSpecs_ = winSpecs; } bool ISource::AddFuncOverWindow(TContext& ctx, TNodePtr expr) { @@ -229,33 +229,33 @@ bool ISource::AddFuncOverWindow(TContext& ctx, TNodePtr expr) { } void ISource::AddTmpWindowColumn(const TString& column) { - TmpWindowColumns.push_back(column); + TmpWindowColumns_.push_back(column); } const TVector<TString>& ISource::GetTmpWindowColumns() const { - return TmpWindowColumns; + return TmpWindowColumns_; } void ISource::SetLegacyHoppingWindowSpec(TLegacyHoppingWindowSpecPtr spec) { - LegacyHoppingWindowSpec = spec; + LegacyHoppingWindowSpec_ = spec; } TLegacyHoppingWindowSpecPtr ISource::GetLegacyHoppingWindowSpec() const { - return LegacyHoppingWindowSpec; + return LegacyHoppingWindowSpec_; } TNodePtr ISource::GetSessionWindowSpec() const { - return SessionWindow; + return SessionWindow_; } TNodePtr ISource::GetHoppingWindowSpec() const { - return HoppingWindow; + return HoppingWindow_; } TWindowSpecificationPtr ISource::FindWindowSpecification(TContext& ctx, const TString& windowName) const { - auto winIter = WinSpecs.find(windowName); - if (winIter == WinSpecs.end()) { - ctx.Error(Pos) << "Unable to find window specification for window '" << windowName << "'"; + auto winIter = WinSpecs_.find(windowName); + if (winIter == WinSpecs_.end()) { + ctx.Error(Pos_) << "Unable to find window specification for window '" << windowName << "'"; return {}; } YQL_ENSURE(winIter->second); @@ -263,11 +263,11 @@ TWindowSpecificationPtr ISource::FindWindowSpecification(TContext& ctx, const TS } inline TVector<TNodePtr>& ISource::Expressions(EExprSeat exprSeat) { - return NamedExprs[static_cast<size_t>(exprSeat)]; + return NamedExprs_[static_cast<size_t>(exprSeat)]; } const TVector<TNodePtr>& ISource::Expressions(EExprSeat exprSeat) const { - return NamedExprs[static_cast<size_t>(exprSeat)]; + return NamedExprs_[static_cast<size_t>(exprSeat)]; } inline TNodePtr ISource::AliasOrColumn(const TNodePtr& node, bool withSource) { @@ -300,7 +300,7 @@ bool ISource::AddAggregationOverWindow(TContext& ctx, const TString& windowName, if (!FindWindowSpecification(ctx, windowName)) { return false; } - AggregationOverWindow[windowName].emplace_back(std::move(func)); + AggregationOverWindow_[windowName].emplace_back(std::move(func)); return true; } @@ -308,12 +308,12 @@ bool ISource::AddFuncOverWindow(TContext& ctx, const TString& windowName, TNodeP if (!FindWindowSpecification(ctx, windowName)) { return false; } - FuncOverWindow[windowName].emplace_back(std::move(func)); + FuncOverWindow_[windowName].emplace_back(std::move(func)); return true; } void ISource::SetMatchRecognize(TMatchRecognizeBuilderPtr matchRecognize) { - MatchRecognizeBuilder = matchRecognize; + MatchRecognizeBuilder_ = matchRecognize; } bool ISource::IsCompositeSource() const { @@ -321,7 +321,7 @@ bool ISource::IsCompositeSource() const { } bool ISource::IsGroupByColumn(const TString& column) const { - return GroupKeys.contains(column); + return GroupKeys_.contains(column); } bool ISource::IsFlattenByColumns() const { @@ -367,8 +367,8 @@ bool ISource::IsExprSeat(EExprSeat exprSeat, EExprType type) const { } TString ISource::GetGroupByColumnAlias(const TString& column) const { - auto iter = GroupByColumnAliases.find(column); - if (iter == GroupByColumnAliases.end()) { + auto iter = GroupByColumnAliases_.find(column); + if (iter == GroupByColumnAliases_.end()) { return {}; } return iter->second; @@ -379,12 +379,12 @@ const TString* ISource::GetWindowName() const { } bool ISource::IsCalcOverWindow() const { - return !AggregationOverWindow.empty() || !FuncOverWindow.empty() || - AnyOf(WinSpecs, [](const auto& item) { return item.second->Session; }); + return !AggregationOverWindow_.empty() || !FuncOverWindow_.empty() || + AnyOf(WinSpecs_, [](const auto& item) { return item.second->Session; }); } bool ISource::IsOverWindowSource() const { - return !WinSpecs.empty(); + return !WinSpecs_.empty(); } bool ISource::IsStream() const { @@ -451,25 +451,25 @@ size_t ISource::GetGroupingColumnsCount() const { } TNodePtr ISource::BuildFilter(TContext& ctx, const TString& label) { - return Filters.empty() ? nullptr : Y(ctx.UseUnordered(*this) ? "OrderedFilter" : "Filter", label, BuildFilterLambda()); + return Filters_.empty() ? nullptr : Y(ctx.UseUnordered(*this) ? "OrderedFilter" : "Filter", label, BuildFilterLambda()); } TNodePtr ISource::BuildFilterLambda() { - if (Filters.empty()) { - return BuildLambda(Pos, Y("row"), Y("Bool", Q("true"))); + if (Filters_.empty()) { + return BuildLambda(Pos_, Y("row"), Y("Bool", Q("true"))); } - YQL_ENSURE(Filters[0]->HasState(ENodeState::Initialized)); - TNodePtr filter(Filters[0]); - for (ui32 i = 1; i < Filters.size(); ++i) { - YQL_ENSURE(Filters[i]->HasState(ENodeState::Initialized)); - filter = Y("And", filter, Filters[i]); + YQL_ENSURE(Filters_[0]->HasState(ENodeState::Initialized)); + TNodePtr filter(Filters_[0]); + for (ui32 i = 1; i < Filters_.size(); ++i) { + YQL_ENSURE(Filters_[i]->HasState(ENodeState::Initialized)); + filter = Y("And", filter, Filters_[i]); } filter = Y("Coalesce", filter, Y("Bool", Q("false"))); - return BuildLambda(Pos, Y("row"), filter); + return BuildLambda(Pos_, Y("row"), filter); } TNodePtr ISource::BuildFlattenByColumns(const TString& label) { - auto columnsList = Y("FlattenByColumns", Q(FlattenMode), label); + auto columnsList = Y("FlattenByColumns", Q(FlattenMode_), label); for (const auto& column: Expressions(EExprSeat::FlattenBy)) { const auto columnNamePtr = column->GetColumnName(); YQL_ENSURE(columnNamePtr); @@ -518,13 +518,13 @@ TNodePtr ISource::BuildPreaggregatedMap(TContext& ctx) { TNodePtr res; if (groupByExprs) { - auto body = BuildLambdaBodyForExprAliases(Pos, groupByExprs, ctx.GroupByExprAfterWhere || !ctx.FailOnGroupByExprOverride); - res = Y("FlatMap", "core", BuildLambda(Pos, Y("row"), body)); + auto body = BuildLambdaBodyForExprAliases(Pos_, groupByExprs, ctx.GroupByExprAfterWhere || !ctx.FailOnGroupByExprOverride); + res = Y("FlatMap", "core", BuildLambda(Pos_, Y("row"), body)); } if (distinctAggrExprs) { - auto body = BuildLambdaBodyForExprAliases(Pos, distinctAggrExprs, ctx.GroupByExprAfterWhere || !ctx.FailOnGroupByExprOverride); - auto lambda = BuildLambda(Pos, Y("row"), body); + auto body = BuildLambdaBodyForExprAliases(Pos_, distinctAggrExprs, ctx.GroupByExprAfterWhere || !ctx.FailOnGroupByExprOverride); + auto lambda = BuildLambda(Pos_, Y("row"), body); res = res ? Y("FlatMap", res, lambda) : Y("FlatMap", "core", lambda); } return res; @@ -533,25 +533,25 @@ TNodePtr ISource::BuildPreaggregatedMap(TContext& ctx) { TNodePtr ISource::BuildPreFlattenMap(TContext& ctx) { Y_UNUSED(ctx); YQL_ENSURE(IsFlattenByExprs()); - return BuildLambdaBodyForExprAliases(Pos, Expressions(EExprSeat::FlattenByExpr), true); + return BuildLambdaBodyForExprAliases(Pos_, Expressions(EExprSeat::FlattenByExpr), true); } TNodePtr ISource::BuildPrewindowMap(TContext& ctx) { - auto feed = BuildAtom(Pos, "row", TNodeFlags::Default); + auto feed = BuildAtom(Pos_, "row", TNodeFlags::Default); for (const auto& exprNode: Expressions(EExprSeat::WindowPartitionBy)) { const auto name = exprNode->GetLabel(); if (name && !dynamic_cast<const TSessionWindow*>(exprNode.Get())) { feed = Y("AddMember", feed, Q(name), exprNode); } } - return Y(ctx.UseUnordered(*this) ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos, Y("row"), Y("AsList", feed))); + return Y(ctx.UseUnordered(*this) ? "OrderedFlatMap" : "FlatMap", "core", BuildLambda(Pos_, Y("row"), Y("AsList", feed))); } bool ISource::BuildSamplingLambda(TNodePtr& node) { - if (!SamplingRate) { + if (!SamplingRate_) { return true; } - auto res = Y("Coalesce", Y("SafeCast", SamplingRate, Y("DataType", Q("Double"))), Y("Double", Q("0"))); + auto res = Y("Coalesce", Y("SafeCast", SamplingRate_, Y("DataType", Q("Double"))), Y("Double", Q("0"))); res = Y("/", res, Y("Double", Q("100"))); res = Y(Y("let", "res", Y("OptionalIf", Y("<", Y("Random", Y("DependsOn", "row")), res), "row"))); node = BuildLambda(GetPos(), Y("row"), res, "res"); @@ -563,25 +563,25 @@ bool ISource::SetSamplingRate(TContext& ctx, ESampleClause clause, TNodePtr samp if (!samplingRate->Init(ctx, this)) { return false; } - SamplingRate = PrepareSamplingRate(Pos, clause, samplingRate); + SamplingRate_ = PrepareSamplingRate(Pos_, clause, samplingRate); } return true; } std::pair<TNodePtr, bool> ISource::BuildAggregation(const TString& label, TContext& ctx) { - if (GroupKeys.empty() && Aggregations.empty() && !IsCompositeSource() && !LegacyHoppingWindowSpec) { + if (GroupKeys_.empty() && Aggregations_.empty() && !IsCompositeSource() && !LegacyHoppingWindowSpec_) { return { nullptr, true }; } auto keysTuple = Y(); - YQL_ENSURE(GroupKeys.size() == OrderedGroupKeys.size()); - for (const auto& key: OrderedGroupKeys) { - YQL_ENSURE(GroupKeys.contains(key)); - keysTuple = L(keysTuple, BuildQuotedAtom(Pos, key)); + YQL_ENSURE(GroupKeys_.size() == OrderedGroupKeys_.size()); + for (const auto& key: OrderedGroupKeys_) { + YQL_ENSURE(GroupKeys_.contains(key)); + keysTuple = L(keysTuple, BuildQuotedAtom(Pos_, key)); } std::map<std::pair<bool, TString>, std::vector<IAggregation*>> genericAggrs; - for (const auto& aggr: Aggregations) { + for (const auto& aggr: Aggregations_) { if (const auto key = aggr->GetGenericKey()) { genericAggrs[{aggr->IsDistinct(), *key}].emplace_back(aggr.Get()); } @@ -595,11 +595,11 @@ std::pair<TNodePtr, bool> ISource::BuildAggregation(const TString& label, TConte const auto listType = Y("TypeOf", label); auto aggrArgs = Y(); - const bool overState = GroupBySuffix == "CombineState" || GroupBySuffix == "MergeState" || - GroupBySuffix == "MergeFinalize" || GroupBySuffix == "MergeManyFinalize"; - const bool allowAggApply = !LegacyHoppingWindowSpec && !SessionWindow && !HoppingWindow; - for (const auto& aggr: Aggregations) { - auto res = aggr->AggregationTraits(listType, overState, GroupBySuffix == "MergeManyFinalize", allowAggApply, ctx); + const bool overState = GroupBySuffix_ == "CombineState" || GroupBySuffix_ == "MergeState" || + GroupBySuffix_ == "MergeFinalize" || GroupBySuffix_ == "MergeManyFinalize"; + const bool allowAggApply = !LegacyHoppingWindowSpec_ && !SessionWindow_ && !HoppingWindow_; + for (const auto& aggr: Aggregations_) { + auto res = aggr->AggregationTraits(listType, overState, GroupBySuffix_ == "MergeManyFinalize", allowAggApply, ctx); if (!res.second) { return { nullptr, false }; } @@ -610,57 +610,57 @@ std::pair<TNodePtr, bool> ISource::BuildAggregation(const TString& label, TConte } auto options = Y(); - if (CompactGroupBy || GroupBySuffix == "Finalize") { + if (CompactGroupBy_ || GroupBySuffix_ == "Finalize") { options = L(options, Q(Y(Q("compact")))); } - if (LegacyHoppingWindowSpec) { + if (LegacyHoppingWindowSpec_) { auto hoppingTraits = Y( "HoppingTraits", Y("ListItemType", listType), - BuildLambda(Pos, Y("row"), LegacyHoppingWindowSpec->TimeExtractor), - LegacyHoppingWindowSpec->Hop, - LegacyHoppingWindowSpec->Interval, - LegacyHoppingWindowSpec->Delay, - LegacyHoppingWindowSpec->DataWatermarks ? Q("true") : Q("false"), + BuildLambda(Pos_, Y("row"), LegacyHoppingWindowSpec_->TimeExtractor), + LegacyHoppingWindowSpec_->Hop, + LegacyHoppingWindowSpec_->Interval, + LegacyHoppingWindowSpec_->Delay, + LegacyHoppingWindowSpec_->DataWatermarks ? Q("true") : Q("false"), Q("v1")); options = L(options, Q(Y(Q("hopping"), hoppingTraits))); } - if (SessionWindow) { - YQL_ENSURE(SessionWindow->GetLabel()); - auto sessionWindow = dynamic_cast<TSessionWindow*>(SessionWindow.Get()); + if (SessionWindow_) { + YQL_ENSURE(SessionWindow_->GetLabel()); + auto sessionWindow = dynamic_cast<TSessionWindow*>(SessionWindow_.Get()); YQL_ENSURE(sessionWindow); options = L(options, Q(Y(Q("session"), - Q(Y(BuildQuotedAtom(Pos, SessionWindow->GetLabel()), sessionWindow->BuildTraits(label)))))); + Q(Y(BuildQuotedAtom(Pos_, SessionWindow_->GetLabel()), sessionWindow->BuildTraits(label)))))); } - if (HoppingWindow) { - YQL_ENSURE(HoppingWindow->GetLabel()); - auto hoppingWindow = dynamic_cast<THoppingWindow*>(HoppingWindow.Get()); + if (HoppingWindow_) { + YQL_ENSURE(HoppingWindow_->GetLabel()); + auto hoppingWindow = dynamic_cast<THoppingWindow*>(HoppingWindow_.Get()); YQL_ENSURE(hoppingWindow); options = L(options, Q(Y(Q("hopping"), - Q(Y(BuildQuotedAtom(Pos, HoppingWindow->GetLabel()), hoppingWindow->BuildTraits(label)))))); + Q(Y(BuildQuotedAtom(Pos_, HoppingWindow_->GetLabel()), hoppingWindow->BuildTraits(label)))))); } - return { Y("AssumeColumnOrderPartial", Y("Aggregate" + GroupBySuffix, label, Q(keysTuple), Q(aggrArgs), Q(options)), Q(keysTuple)), true }; + return { Y("AssumeColumnOrderPartial", Y("Aggregate" + GroupBySuffix_, label, Q(keysTuple), Q(aggrArgs), Q(options)), Q(keysTuple)), true }; } TMaybe<TString> ISource::FindColumnMistype(const TString& name) const { - auto result = FindMistypeIn(GroupKeys, name); - return result ? result : FindMistypeIn(ExprAliases, name); + auto result = FindMistypeIn(GroupKeys_, name); + return result ? result : FindMistypeIn(ExprAliases_, name); } void ISource::AddDependentSource(TSourcePtr usedSource) { - UsedSources.push_back(usedSource); + UsedSources_.push_back(usedSource); } class TYqlFrameBound final: public TCallNode { public: TYqlFrameBound(TPosition pos, TNodePtr bound) : TCallNode(pos, "EvaluateExpr", 1, 1, { bound }) - , FakeSource(BuildFakeSource(pos)) + , FakeSource_(BuildFakeSource(pos)) { } @@ -669,7 +669,7 @@ public: return false; } - if (!Args[0]->Init(ctx, FakeSource.Get())) { + if (!Args_[0]->Init(ctx, FakeSource_.Get())) { return false; } @@ -677,10 +677,10 @@ public: } TNodePtr DoClone() const final { - return new TYqlFrameBound(Pos, Args[0]->Clone()); + return new TYqlFrameBound(Pos_, Args_[0]->Clone()); } private: - TSourcePtr FakeSource; + TSourcePtr FakeSource_; }; TNodePtr BuildFrameNode(const TFrameBound& frame, EFrameType frameType) { @@ -747,7 +747,7 @@ class TSessionWindowTraits final: public TCallNode { public: TSessionWindowTraits(TPosition pos, const TVector<TNodePtr>& args) : TCallNode(pos, "SessionWindowTraits", args) - , FakeSource(BuildFakeSource(pos)) + , FakeSource_(BuildFakeSource(pos)) { YQL_ENSURE(args.size() == 4); } @@ -757,7 +757,7 @@ public: return false; } - if (!Args.back()->Init(ctx, FakeSource.Get())) { + if (!Args_.back()->Init(ctx, FakeSource_.Get())) { return false; } @@ -765,23 +765,23 @@ public: } TNodePtr DoClone() const final { - return new TSessionWindowTraits(Pos, CloneContainer(Args)); + return new TSessionWindowTraits(Pos_, CloneContainer(Args_)); } private: - TSourcePtr FakeSource; + TSourcePtr FakeSource_; }; TNodePtr ISource::BuildCalcOverWindow(TContext& ctx, const TString& label) { YQL_ENSURE(IsCalcOverWindow()); TSet<TString> usedWindows; - for (auto& it : AggregationOverWindow) { + for (auto& it : AggregationOverWindow_) { usedWindows.insert(it.first); } - for (auto& it : FuncOverWindow) { + for (auto& it : FuncOverWindow_) { usedWindows.insert(it.first); } - for (auto& it : WinSpecs) { + for (auto& it : WinSpecs_) { if (it.second->Session) { usedWindows.insert(it.first); } @@ -799,11 +799,11 @@ TNodePtr ISource::BuildCalcOverWindow(TContext& ctx, const TString& label) { auto spec = FindWindowSpecification(ctx, name); YQL_ENSURE(spec); - auto aggsIter = AggregationOverWindow.find(name); - auto funcsIter = FuncOverWindow.find(name); + auto aggsIter = AggregationOverWindow_.find(name); + auto funcsIter = FuncOverWindow_.find(name); - const auto& aggs = (aggsIter == AggregationOverWindow.end()) ? TVector<TAggregationPtr>() : aggsIter->second; - const auto& funcs = (funcsIter == FuncOverWindow.end()) ? TVector<TNodePtr>() : funcsIter->second; + const auto& aggs = (aggsIter == AggregationOverWindow_.end()) ? TVector<TAggregationPtr>() : aggsIter->second; + const auto& funcs = (funcsIter == FuncOverWindow_.end()) ? TVector<TNodePtr>() : funcsIter->second; auto frames = Y(); TString frameType; @@ -914,7 +914,7 @@ bool ISource::DoInit(TContext& ctx, ISource* src) { } bool ISource::InitFilters(TContext& ctx) { - for (auto& filter: Filters) { + for (auto& filter: Filters_) { if (!filter->Init(ctx, this)) { return false; } @@ -953,7 +953,7 @@ void ISource::FillSortParts(const TVector<TSortSpecificationPtr>& orderBy, TNode sortDirection = Q(sortDirection); expr = Q(exprList); } - sortKeySelector = BuildLambda(Pos, Y("row"), expr); + sortKeySelector = BuildLambda(Pos_, Y("row"), expr); } TNodePtr ISource::BuildSortSpec(const TVector<TSortSpecificationPtr>& orderBy, const TString& label, bool traits, bool assume) { @@ -971,12 +971,12 @@ TNodePtr ISource::BuildSortSpec(const TVector<TSortSpecificationPtr>& orderBy, c } bool ISource::HasMatchRecognize() const { - return static_cast<bool>(MatchRecognizeBuilder); + return static_cast<bool>(MatchRecognizeBuilder_); } TNodePtr ISource::BuildMatchRecognize(TContext& ctx, TString&& inputTable){ YQL_ENSURE(HasMatchRecognize()); - return MatchRecognizeBuilder->Build(ctx, std::move(inputTable), this); + return MatchRecognizeBuilder_->Build(ctx, std::move(inputTable), this); }; IJoin::IJoin(TPosition pos) diff --git a/yql/essentials/sql/v1/source.h b/yql/essentials/sql/v1/source.h index 3048b2d5847..ac69ed2eaf3 100644 --- a/yql/essentials/sql/v1/source.h +++ b/yql/essentials/sql/v1/source.h @@ -128,29 +128,29 @@ namespace NSQLTranslationV1 { TNodePtr BuildWindowFrame(const TFrameSpecification& spec, bool isCompact); - THashSet<TString> ExprAliases; - THashSet<TString> FlattenByAliases; - THashMap<TString, TString> GroupByColumnAliases; - TVector<TNodePtr> Filters; - bool CompactGroupBy = false; - TString GroupBySuffix; - TSet<TString> GroupKeys; - TVector<TString> OrderedGroupKeys; - std::array<TVector<TNodePtr>, static_cast<unsigned>(EExprSeat::Max)> NamedExprs; - TVector<TAggregationPtr> Aggregations; - TMap<TString, TVector<TAggregationPtr>> AggregationOverWindow; - TMap<TString, TVector<TNodePtr>> FuncOverWindow; - TWinSpecs WinSpecs; - TLegacyHoppingWindowSpecPtr LegacyHoppingWindowSpec; - TNodePtr SessionWindow; - TNodePtr HoppingWindow; - TVector<TSourcePtr> UsedSources; - TString FlattenMode; - bool FlattenColumns = false; - THashMap<TString, ui32> GenIndexes; - TVector<TString> TmpWindowColumns; - TNodePtr SamplingRate; - TMatchRecognizeBuilderPtr MatchRecognizeBuilder; + THashSet<TString> ExprAliases_; + THashSet<TString> FlattenByAliases_; + THashMap<TString, TString> GroupByColumnAliases_; + TVector<TNodePtr> Filters_; + bool CompactGroupBy_ = false; + TString GroupBySuffix_; + TSet<TString> GroupKeys_; + TVector<TString> OrderedGroupKeys_; + std::array<TVector<TNodePtr>, static_cast<unsigned>(EExprSeat::Max)> NamedExprs_; + TVector<TAggregationPtr> Aggregations_; + TMap<TString, TVector<TAggregationPtr>> AggregationOverWindow_; + TMap<TString, TVector<TNodePtr>> FuncOverWindow_; + TWinSpecs WinSpecs_; + TLegacyHoppingWindowSpecPtr LegacyHoppingWindowSpec_; + TNodePtr SessionWindow_; + TNodePtr HoppingWindow_; + TVector<TSourcePtr> UsedSources_; + TString FlattenMode_; + bool FlattenColumns_ = false; + THashMap<TString, ui32> GenIndexes_; + TVector<TString> TmpWindowColumns_; + TNodePtr SamplingRate_; + TMatchRecognizeBuilderPtr MatchRecognizeBuilder_; }; template<> @@ -202,10 +202,10 @@ namespace NSQLTranslationV1 { TNodePtr DoClone() const override; TString GetOpName() const override; - TVector<TNodePtr> Args; - TSourcePtr FakeSource; - TNodePtr Node; - bool Valid; + TVector<TNodePtr> Args_; + TSourcePtr FakeSource_; + TNodePtr Node_; + bool Valid_; }; class THoppingWindow final : public INode { @@ -224,10 +224,10 @@ namespace NSQLTranslationV1 { TString GetOpName() const override; TNodePtr ProcessIntervalParam(const TNodePtr& val) const; - TVector<TNodePtr> Args; - TSourcePtr FakeSource; - TNodePtr Node; - bool Valid; + TVector<TNodePtr> Args_; + TSourcePtr FakeSource_; + TNodePtr Node_; + bool Valid_; }; diff --git a/yql/essentials/sql/v1/sql_call_expr.cpp b/yql/essentials/sql/v1/sql_call_expr.cpp index 1eb4edd10a1..996c21759ec 100644 --- a/yql/essentials/sql/v1/sql_call_expr.cpp +++ b/yql/essentials/sql/v1/sql_call_expr.cpp @@ -17,12 +17,12 @@ static bool ValidateForCounters(const TString& input) { } TNodePtr TSqlCallExpr::BuildUdf(bool forReduce) { - auto result = Node ? Node : BuildCallable(Pos, Module, Func, Args, forReduce); - if (to_lower(Module) == "tensorflow" && Func == "RunBatch") { - if (Args.size() > 2) { - Args.erase(Args.begin() + 2); + auto result = Node_ ? Node_ : BuildCallable(Pos_, Module_, Func_, Args_, forReduce); + if (to_lower(Module_) == "tensorflow" && Func_ == "RunBatch") { + if (Args_.size() > 2) { + Args_.erase(Args_.begin() + 2); } else { - Ctx.Error(Pos) << "Excepted >= 3 arguments, but got: " << Args.size(); + Ctx_.Error(Pos_) << "Excepted >= 3 arguments, but got: " << Args_.size(); return nullptr; } } @@ -33,86 +33,86 @@ TNodePtr TSqlCallExpr::BuildCall() { TVector<TNodePtr> args; bool warnOnYqlNameSpace = true; - TUdfNode* udf_node = Node ? Node->GetUdfNode() : nullptr; + TUdfNode* udf_node = Node_ ? Node_->GetUdfNode() : nullptr; if (udf_node) { - if (!udf_node->DoInit(Ctx, nullptr)) { + if (!udf_node->DoInit(Ctx_, nullptr)) { return nullptr; } - TNodePtr positional_args = BuildTuple(Pos, PositionalArgs); + TNodePtr positional_args = BuildTuple(Pos_, PositionalArgs_); TNodePtr positional = positional_args->Y("TypeOf", positional_args); - TNodePtr named_args = BuildStructure(Pos, NamedArgs); + TNodePtr named_args = BuildStructure(Pos_, NamedArgs_); TNodePtr named = named_args->Y("TypeOf", named_args); - TNodePtr custom_user_type = new TCallNodeImpl(Pos, "TupleType", {positional, named, udf_node->GetExternalTypes()}); + TNodePtr custom_user_type = new TCallNodeImpl(Pos_, "TupleType", {positional, named, udf_node->GetExternalTypes()}); TNodePtr options = udf_node->BuildOptions(); if (udf_node->IsScript()) { - auto udf = BuildScriptUdf(Pos, udf_node->GetModule(), udf_node->GetFunction(), udf_node->GetScriptArgs(), options); + auto udf = BuildScriptUdf(Pos_, udf_node->GetModule(), udf_node->GetFunction(), udf_node->GetScriptArgs(), options); TVector<TNodePtr> applyArgs; - applyArgs.push_back(new TAstAtomNodeImpl(Pos, !NamedArgs.empty() ? "NamedApply" : "Apply", TNodeFlags::Default)); + applyArgs.push_back(new TAstAtomNodeImpl(Pos_, !NamedArgs_.empty() ? "NamedApply" : "Apply", TNodeFlags::Default)); applyArgs.push_back(udf); - if (!NamedArgs.empty()) { - applyArgs.push_back(BuildTuple(Pos, PositionalArgs)); - applyArgs.push_back(BuildStructure(Pos, NamedArgs)); + if (!NamedArgs_.empty()) { + applyArgs.push_back(BuildTuple(Pos_, PositionalArgs_)); + applyArgs.push_back(BuildStructure(Pos_, NamedArgs_)); } else { - applyArgs.insert(applyArgs.end(), PositionalArgs.begin(), PositionalArgs.end()); + applyArgs.insert(applyArgs.end(), PositionalArgs_.begin(), PositionalArgs_.end()); } - return new TAstListNodeImpl(Pos, applyArgs); + return new TAstListNodeImpl(Pos_, applyArgs); } - return BuildSqlCall(Ctx, Pos, udf_node->GetModule(), udf_node->GetFunction(), + return BuildSqlCall(Ctx_, Pos_, udf_node->GetModule(), udf_node->GetFunction(), args, positional_args, named_args, custom_user_type, udf_node->GetTypeConfig(), udf_node->GetRunConfig(), options); } - if (Node && (!Node->FuncName() || Node->IsScript())) { - Module = "YQL"; - Func = NamedArgs.empty() ? "Apply" : "NamedApply"; + if (Node_ && (!Node_->FuncName() || Node_->IsScript())) { + Module_ = "YQL"; + Func_ = NamedArgs_.empty() ? "Apply" : "NamedApply"; warnOnYqlNameSpace = false; - args.push_back(Node); + args.push_back(Node_); } - if (Node && Node->FuncName() && !Node->IsScript()) { - Module = Node->ModuleName() ? *Node->ModuleName() : "YQL"; - Func = *Node->FuncName(); + if (Node_ && Node_->FuncName() && !Node_->IsScript()) { + Module_ = Node_->ModuleName() ? *Node_->ModuleName() : "YQL"; + Func_ = *Node_->FuncName(); } - bool mustUseNamed = !NamedArgs.empty(); + bool mustUseNamed = !NamedArgs_.empty(); if (mustUseNamed) { - if (Node && (!Node->FuncName() || Node->IsScript())) { + if (Node_ && (!Node_->FuncName() || Node_->IsScript())) { mustUseNamed = false; } - args.emplace_back(BuildTuple(Pos, PositionalArgs)); - args.emplace_back(BuildStructure(Pos, NamedArgs)); - } else if (IsExternalCall) { - Func = "SqlExternalFunction"; - if (Args.size() < 2 || Args.size() > 3) { - Ctx.Error(Pos) << "EXTERNAL FUNCTION requires from 2 to 3 arguments, but got: " << Args.size(); + args.emplace_back(BuildTuple(Pos_, PositionalArgs_)); + args.emplace_back(BuildStructure(Pos_, NamedArgs_)); + } else if (IsExternalCall_) { + Func_ = "SqlExternalFunction"; + if (Args_.size() < 2 || Args_.size() > 3) { + Ctx_.Error(Pos_) << "EXTERNAL FUNCTION requires from 2 to 3 arguments, but got: " << Args_.size(); return nullptr; } - if (Args.size() == 3) { - args.insert(args.end(), Args.begin(), Args.end() - 1); - Args.erase(Args.begin(), Args.end() - 1); + if (Args_.size() == 3) { + args.insert(args.end(), Args_.begin(), Args_.end() - 1); + Args_.erase(Args_.begin(), Args_.end() - 1); } else { - args.insert(args.end(), Args.begin(), Args.end()); - Args.erase(Args.begin(), Args.end()); + args.insert(args.end(), Args_.begin(), Args_.end()); + Args_.erase(Args_.begin(), Args_.end()); } - auto configNode = new TExternalFunctionConfig(Pos, CallConfig); - auto configList = new TAstListNodeImpl(Pos, { new TAstAtomNodeImpl(Pos, "quote", 0), configNode }); + auto configNode = new TExternalFunctionConfig(Pos_, CallConfig_); + auto configList = new TAstListNodeImpl(Pos_, { new TAstAtomNodeImpl(Pos_, "quote", 0), configNode }); args.push_back(configList); } else { - args.insert(args.end(), Args.begin(), Args.end()); + args.insert(args.end(), Args_.begin(), Args_.end()); } - auto result = BuildBuiltinFunc(Ctx, Pos, Func, args, Module, AggMode, &mustUseNamed, warnOnYqlNameSpace); + auto result = BuildBuiltinFunc(Ctx_, Pos_, Func_, args, Module_, AggMode_, &mustUseNamed, warnOnYqlNameSpace); if (mustUseNamed) { - Error() << "Named args are used for call, but unsupported by function: " << Func; + Error() << "Named args are used for call, but unsupported by function: " << Func_; return nullptr; } - if (WindowName) { - result = BuildCalcOverWindow(Pos, WindowName, result); + if (WindowName_) { + result = BuildCalcOverWindow(Pos_, WindowName_, result); } return result; @@ -122,39 +122,39 @@ bool TSqlCallExpr::Init(const TRule_value_constructor& node) { switch (node.Alt_case()) { case TRule_value_constructor::kAltValueConstructor1: { auto& ctor = node.GetAlt_value_constructor1(); - Func = "Variant"; - TSqlExpression expr(Ctx, Mode); - if (!Expr(expr, Args, ctor.GetRule_expr3())) { + Func_ = "Variant"; + TSqlExpression expr(Ctx_, Mode_); + if (!Expr(expr, Args_, ctor.GetRule_expr3())) { return false; } - if (!Expr(expr, Args, ctor.GetRule_expr5())) { + if (!Expr(expr, Args_, ctor.GetRule_expr5())) { return false; } - if (!Expr(expr, Args, ctor.GetRule_expr7())) { + if (!Expr(expr, Args_, ctor.GetRule_expr7())) { return false; } break; } case TRule_value_constructor::kAltValueConstructor2: { auto& ctor = node.GetAlt_value_constructor2(); - Func = "Enum"; - TSqlExpression expr(Ctx, Mode); - if (!Expr(expr, Args, ctor.GetRule_expr3())) { + Func_ = "Enum"; + TSqlExpression expr(Ctx_, Mode_); + if (!Expr(expr, Args_, ctor.GetRule_expr3())) { return false; } - if (!Expr(expr, Args, ctor.GetRule_expr5())) { + if (!Expr(expr, Args_, ctor.GetRule_expr5())) { return false; } break; } case TRule_value_constructor::kAltValueConstructor3: { auto& ctor = node.GetAlt_value_constructor3(); - Func = "Callable"; - TSqlExpression expr(Ctx, Mode); - if (!Expr(expr, Args, ctor.GetRule_expr3())) { + Func_ = "Callable"; + TSqlExpression expr(Ctx_, Mode_); + if (!Expr(expr, Args_, ctor.GetRule_expr3())) { return false; } - if (!Expr(expr, Args, ctor.GetRule_expr5())) { + if (!Expr(expr, Args_, ctor.GetRule_expr5())) { return false; } break; @@ -162,7 +162,7 @@ bool TSqlCallExpr::Init(const TRule_value_constructor& node) { case TRule_value_constructor::ALT_NOT_SET: Y_ABORT("You should change implementation according to grammar changes"); } - PositionalArgs = Args; + PositionalArgs_ = Args_; return true; } @@ -170,8 +170,8 @@ bool TSqlCallExpr::ExtractCallParam(const TRule_external_call_param& node) { TString paramName = Id(node.GetRule_an_id1(), *this); paramName = to_lower(paramName); - if (CallConfig.contains(paramName)) { - Ctx.Error() << "WITH " << to_upper(paramName).Quote() + if (CallConfig_.contains(paramName)) { + Ctx_.Error() << "WITH " << to_upper(paramName).Quote() << " clause should be specified only once"; return false; } @@ -179,24 +179,24 @@ bool TSqlCallExpr::ExtractCallParam(const TRule_external_call_param& node) { const bool optimizeForParam = paramName == "optimize_for"; const auto columnRefState = optimizeForParam ? EColumnRefState::AsStringLiteral : EColumnRefState::Deny; - TColumnRefScope scope(Ctx, columnRefState); + TColumnRefScope scope(Ctx_, columnRefState); if (optimizeForParam) { scope.SetNoColumnErrContext("in external call params"); } - TSqlExpression expression(Ctx, Mode); + TSqlExpression expression(Ctx_, Mode_); auto value = expression.Build(node.GetRule_expr3()); if (value && optimizeForParam) { TDeferredAtom atom; - MakeTableFromExpression(Ctx.Pos(), Ctx, value, atom); - value = new TCallNodeImpl(Ctx.Pos(), "String", { atom.Build() }); + MakeTableFromExpression(Ctx_.Pos(), Ctx_, value, atom); + value = new TCallNodeImpl(Ctx_.Pos(), "String", { atom.Build() }); } if (!value) { return false; } - CallConfig[paramName] = value; + CallConfig_[paramName] = value; return true; } @@ -215,12 +215,12 @@ bool TSqlCallExpr::Init(const TRule_using_call_expr& node) { switch (block.Alt_case()) { case TRule_using_call_expr::TBlock1::kAlt1: { auto& subblock = block.GetAlt1(); - Module = Id(subblock.GetRule_an_id_or_type1(), *this); - Func = Id(subblock.GetRule_an_id_or_type3(), *this); + Module_ = Id(subblock.GetRule_an_id_or_type1(), *this); + Func_ = Id(subblock.GetRule_an_id_or_type3(), *this); break; } case TRule_using_call_expr::TBlock1::kAlt2: { - Func = Id(block.GetAlt2().GetRule_an_id_expr1(), *this); + Func_ = Id(block.GetAlt2().GetRule_an_id_expr1(), *this); break; } case TRule_using_call_expr::TBlock1::kAlt3: { @@ -228,32 +228,32 @@ bool TSqlCallExpr::Init(const TRule_using_call_expr& node) { if (!NamedNodeImpl(block.GetAlt3().GetRule_bind_parameter1(), bindName, *this)) { return false; } - Node = GetNamedNode(bindName); - if (!Node) { + Node_ = GetNamedNode(bindName); + if (!Node_) { return false; } break; } case TRule_using_call_expr::TBlock1::kAlt4: { - IsExternalCall = true; + IsExternalCall_ = true; break; } case TRule_using_call_expr::TBlock1::ALT_NOT_SET: Y_ABORT("You should change implementation according to grammar changes"); } - YQL_ENSURE(!DistinctAllowed); - UsingCallExpr = true; - TColumnRefScope scope(Ctx, EColumnRefState::Allow); + YQL_ENSURE(!DistinctAllowed_); + UsingCallExpr_ = true; + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); return Init(node.GetRule_invoke_expr2()); } void TSqlCallExpr::InitName(const TString& name) { - Module = ""; - Func = name; + Module_ = ""; + Func_ = name; } void TSqlCallExpr::InitExpr(const TNodePtr& expr) { - Node = expr; + Node_ = expr; } bool TSqlCallExpr::FillArg(const TString& module, const TString& func, size_t& idx, const TRule_named_expr& node) { @@ -262,12 +262,12 @@ bool TSqlCallExpr::FillArg(const TString& module, const TString& func, size_t& i TMaybe<EColumnRefState> status; // TODO: support named args if (!isNamed) { - status = GetFunctionArgColumnStatus(Ctx, module, func, idx); + status = GetFunctionArgColumnStatus(Ctx_, module, func, idx); } TNodePtr expr; if (status) { - TColumnRefScope scope(Ctx, *status, /* isTopLevel = */ false); + TColumnRefScope scope(Ctx_, *status, /* isTopLevel = */ false); expr = NamedExpr(node); } else { expr = NamedExpr(node); @@ -277,7 +277,7 @@ bool TSqlCallExpr::FillArg(const TString& module, const TString& func, size_t& i return false; } - Args.emplace_back(std::move(expr)); + Args_.emplace_back(std::move(expr)); if (!isNamed) { ++idx; } @@ -285,11 +285,11 @@ bool TSqlCallExpr::FillArg(const TString& module, const TString& func, size_t& i } bool TSqlCallExpr::FillArgs(const TRule_named_expr_list& node) { - TString module = Module; - TString func = Func; - if (Node && Node->FuncName() && !Node->IsScript()) { - module = Node->ModuleName() ? *Node->ModuleName() : "YQL"; - func = *Node->FuncName(); + TString module = Module_; + TString func = Func_; + if (Node_ && Node_->FuncName() && !Node_->IsScript()) { + module = Node_->ModuleName() ? *Node_->ModuleName() : "YQL"; + func = *Node_->FuncName(); } size_t idx = 0; @@ -311,36 +311,36 @@ bool TSqlCallExpr::Init(const TRule_invoke_expr& node) { // invoke_expr_tail: // (null_treatment | filter_clause)? (OVER window_name_or_specification)? // ; - Pos = Ctx.Pos(); + Pos_ = Ctx_.Pos(); if (node.HasBlock2()) { switch (node.GetBlock2().Alt_case()) { case TRule_invoke_expr::TBlock2::kAlt1: { const auto& alt = node.GetBlock2().GetAlt1(); TPosition distinctPos; if (IsDistinctOptSet(alt.GetRule_opt_set_quantifier1(), distinctPos)) { - if (!DistinctAllowed) { - if (UsingCallExpr) { - Ctx.Error(distinctPos) << "DISTINCT can not be used in PROCESS/REDUCE"; + if (!DistinctAllowed_) { + if (UsingCallExpr_) { + Ctx_.Error(distinctPos) << "DISTINCT can not be used in PROCESS/REDUCE"; } else { - Ctx.Error(distinctPos) << "DISTINCT can only be used in aggregation functions"; + Ctx_.Error(distinctPos) << "DISTINCT can only be used in aggregation functions"; } return false; } - YQL_ENSURE(AggMode == EAggregateMode::Normal); - AggMode = EAggregateMode::Distinct; - Ctx.IncrementMonCounter("sql_features", "DistinctInCallExpr"); + YQL_ENSURE(AggMode_ == EAggregateMode::Normal); + AggMode_ = EAggregateMode::Distinct; + Ctx_.IncrementMonCounter("sql_features", "DistinctInCallExpr"); } if (!FillArgs(alt.GetRule_named_expr_list2())) { return false; } - for (const auto& arg : Args) { + for (const auto& arg : Args_) { if (arg->GetLabel()) { - NamedArgs.push_back(arg); + NamedArgs_.push_back(arg); } else { - PositionalArgs.push_back(arg); - if (!NamedArgs.empty()) { - Ctx.Error(arg->GetPos()) << "Unnamed arguments can not follow after named one"; + PositionalArgs_.push_back(arg); + if (!NamedArgs_.empty()) { + Ctx_.Error(arg->GetPos()) << "Unnamed arguments can not follow after named one"; return false; } } @@ -348,10 +348,10 @@ bool TSqlCallExpr::Init(const TRule_invoke_expr& node) { break; } case TRule_invoke_expr::TBlock2::kAlt2: - if (IsExternalCall) { - Ctx.Error() << "You should set EXTERNAL FUNCTION type. Example: EXTERNAL FUNCTION('YANDEX-CLOUD', ...)"; + if (IsExternalCall_) { + Ctx_.Error() << "You should set EXTERNAL FUNCTION type. Example: EXTERNAL FUNCTION('YANDEX-CLOUD', ...)"; } else { - Args.push_back(new TAsteriskNode(Pos)); + Args_.push_back(new TAsteriskNode(Pos_)); } break; case TRule_invoke_expr::TBlock2::ALT_NOT_SET: @@ -362,15 +362,15 @@ bool TSqlCallExpr::Init(const TRule_invoke_expr& node) { const auto& tail = node.GetRule_invoke_expr_tail4(); if (tail.HasBlock1()) { - if (IsExternalCall) { - Ctx.Error() << "Additional clause after EXTERNAL FUNCTION(...) is not supported"; + if (IsExternalCall_) { + Ctx_.Error() << "Additional clause after EXTERNAL FUNCTION(...) is not supported"; return false; } switch (tail.GetBlock1().Alt_case()) { case TRule_invoke_expr_tail::TBlock1::kAlt1: { if (!tail.HasBlock2()) { - Ctx.Error() << "RESPECT/IGNORE NULLS can only be used with window functions"; + Ctx_.Error() << "RESPECT/IGNORE NULLS can only be used with window functions"; return false; } const auto& alt = tail.GetBlock1().GetAlt1(); @@ -380,7 +380,7 @@ bool TSqlCallExpr::Init(const TRule_invoke_expr& node) { break; } case TRule_invoke_expr_tail::TBlock1::kAlt2: { - Ctx.Error() << "FILTER clause is not supported yet"; + Ctx_.Error() << "FILTER clause is not supported yet"; return false; } case TRule_invoke_expr_tail::TBlock1::ALT_NOT_SET: @@ -389,11 +389,11 @@ bool TSqlCallExpr::Init(const TRule_invoke_expr& node) { } if (tail.HasBlock2()) { - if (Ctx.DistinctOverWindow) { - AggMode == EAggregateMode::Distinct ? SetOverWindowDistinct() : SetOverWindow(); + if (Ctx_.DistinctOverWindow) { + AggMode_ == EAggregateMode::Distinct ? SetOverWindowDistinct() : SetOverWindow(); } else { - if (AggMode == EAggregateMode::Distinct) { - Ctx.Error() << "DISTINCT is not yet supported in window functions"; + if (AggMode_ == EAggregateMode::Distinct) { + Ctx_.Error() << "DISTINCT is not yet supported in window functions"; return false; } SetOverWindow(); @@ -401,13 +401,13 @@ bool TSqlCallExpr::Init(const TRule_invoke_expr& node) { auto winRule = tail.GetBlock2().GetRule_window_name_or_specification2(); switch (winRule.Alt_case()) { case TRule_window_name_or_specification::kAltWindowNameOrSpecification1: { - WindowName = Id(winRule.GetAlt_window_name_or_specification1().GetRule_window_name1().GetRule_an_id_window1(), *this); + WindowName_ = Id(winRule.GetAlt_window_name_or_specification1().GetRule_window_name1().GetRule_an_id_window1(), *this); break; } case TRule_window_name_or_specification::kAltWindowNameOrSpecification2: { - if (!Ctx.WinSpecsScopes) { - auto pos = Ctx.TokenPosition(tail.GetBlock2().GetToken1()); - Ctx.Error(pos) << "Window and aggregation functions are not allowed in this context"; + if (!Ctx_.WinSpecsScopes) { + auto pos = Ctx_.TokenPosition(tail.GetBlock2().GetToken1()); + Ctx_.Error(pos) << "Window and aggregation functions are not allowed in this context"; return false; } @@ -417,38 +417,38 @@ bool TSqlCallExpr::Init(const TRule_invoke_expr& node) { return false; } - WindowName = Ctx.MakeName("_yql_anonymous_window"); - TWinSpecs& specs = Ctx.WinSpecsScopes.back(); - YQL_ENSURE(!specs.contains(WindowName)); - specs[WindowName] = spec; + WindowName_ = Ctx_.MakeName("_yql_anonymous_window"); + TWinSpecs& specs = Ctx_.WinSpecsScopes.back(); + YQL_ENSURE(!specs.contains(WindowName_)); + specs[WindowName_] = spec; break; } case TRule_window_name_or_specification::ALT_NOT_SET: Y_ABORT("You should change implementation according to grammar changes"); } - Ctx.IncrementMonCounter("sql_features", "WindowFunctionOver"); + Ctx_.IncrementMonCounter("sql_features", "WindowFunctionOver"); } return true; } void TSqlCallExpr::IncCounters() { - if (Node) { - Ctx.IncrementMonCounter("sql_features", "NamedNodeUseApply"); - } else if (!Module.empty()) { - if (ValidateForCounters(Module)) { - Ctx.IncrementMonCounter("udf_modules", Module); - Ctx.IncrementMonCounter("sql_features", "CallUdf"); - if (ValidateForCounters(Func)) { - auto scriptType = NKikimr::NMiniKQL::ScriptTypeFromStr(Module); + if (Node_) { + Ctx_.IncrementMonCounter("sql_features", "NamedNodeUseApply"); + } else if (!Module_.empty()) { + if (ValidateForCounters(Module_)) { + Ctx_.IncrementMonCounter("udf_modules", Module_); + Ctx_.IncrementMonCounter("sql_features", "CallUdf"); + if (ValidateForCounters(Func_)) { + auto scriptType = NKikimr::NMiniKQL::ScriptTypeFromStr(Module_); if (scriptType == NKikimr::NMiniKQL::EScriptType::Unknown) { - Ctx.IncrementMonCounter("udf_functions", Module + "." + Func); + Ctx_.IncrementMonCounter("udf_functions", Module_ + "." + Func_); } } } - } else if (ValidateForCounters(Func)) { - Ctx.IncrementMonCounter("sql_builtins", Func); - Ctx.IncrementMonCounter("sql_features", "CallBuiltin"); + } else if (ValidateForCounters(Func_)) { + Ctx_.IncrementMonCounter("sql_builtins", Func_); + Ctx_.IncrementMonCounter("sql_features", "CallBuiltin"); } } diff --git a/yql/essentials/sql/v1/sql_call_expr.h b/yql/essentials/sql/v1/sql_call_expr.h index f01ceabadfa..a3b9bb7010d 100644 --- a/yql/essentials/sql/v1/sql_call_expr.h +++ b/yql/essentials/sql/v1/sql_call_expr.h @@ -14,22 +14,22 @@ public: } TSqlCallExpr(const TSqlCallExpr& call, const TVector<TNodePtr>& args) - : TSqlTranslation(call.Ctx, call.Mode) - , Pos(call.Pos) - , Func(call.Func) - , Module(call.Module) - , Node(call.Node) - , Args(args) - , AggMode(call.AggMode) - , DistinctAllowed(call.DistinctAllowed) - , UsingCallExpr(call.UsingCallExpr) - , IsExternalCall(call.IsExternalCall) - , CallConfig(call.CallConfig) + : TSqlTranslation(call.Ctx_, call.Mode_) + , Pos_(call.Pos_) + , Func_(call.Func_) + , Module_(call.Module_) + , Node_(call.Node_) + , Args_(args) + , AggMode_(call.AggMode_) + , DistinctAllowed_(call.DistinctAllowed_) + , UsingCallExpr_(call.UsingCallExpr_) + , IsExternalCall_(call.IsExternalCall_) + , CallConfig_(call.CallConfig_) { } void AllowDistinct() { - DistinctAllowed = true; + DistinctAllowed_ = true; } void InitName(const TString& name); @@ -46,29 +46,29 @@ public: TNodePtr BuildCall(); TPosition GetPos() const { - return Pos; + return Pos_; } const TVector<TNodePtr>& GetArgs() const { - return Args; + return Args_; } void SetOverWindow() { - YQL_ENSURE(AggMode == EAggregateMode::Normal); - AggMode = EAggregateMode::OverWindow; + YQL_ENSURE(AggMode_ == EAggregateMode::Normal); + AggMode_ = EAggregateMode::OverWindow; } void SetOverWindowDistinct() { - YQL_ENSURE(AggMode == EAggregateMode::Distinct); - AggMode = EAggregateMode::OverWindowDistinct; + YQL_ENSURE(AggMode_ == EAggregateMode::Distinct); + AggMode_ = EAggregateMode::OverWindowDistinct; } void SetIgnoreNulls() { - Func += "_IgnoreNulls"; + Func_ += "_IgnoreNulls"; } bool IsExternal() { - return IsExternalCall; + return IsExternalCall_; } private: @@ -77,19 +77,19 @@ private: bool FillArgs(const TRule_named_expr_list& node); private: - TPosition Pos; - TString Func; - TString Module; - TNodePtr Node; - TVector<TNodePtr> Args; - TVector<TNodePtr> PositionalArgs; - TVector<TNodePtr> NamedArgs; - EAggregateMode AggMode = EAggregateMode::Normal; - TString WindowName; - bool DistinctAllowed = false; - bool UsingCallExpr = false; - bool IsExternalCall = false; - TFunctionConfig CallConfig; + TPosition Pos_; + TString Func_; + TString Module_; + TNodePtr Node_; + TVector<TNodePtr> Args_; + TVector<TNodePtr> PositionalArgs_; + TVector<TNodePtr> NamedArgs_; + EAggregateMode AggMode_ = EAggregateMode::Normal; + TString WindowName_; + bool DistinctAllowed_ = false; + bool UsingCallExpr_ = false; + bool IsExternalCall_ = false; + TFunctionConfig CallConfig_; }; } // namespace NSQLTranslationV1 diff --git a/yql/essentials/sql/v1/sql_expression.cpp b/yql/essentials/sql/v1/sql_expression.cpp index f13d110248b..e973b6f60d1 100644 --- a/yql/essentials/sql/v1/sql_expression.cpp +++ b/yql/essentials/sql/v1/sql_expression.cpp @@ -81,12 +81,12 @@ TNodePtr TSqlExpression::SubExpr(const TRule_neq_subexpr& node, const TTrailingQ // // trailing QUESTIONS are used in optional simple types (String?) and optional lambda args: ($x, $y?) -> ($x) // ((double_question neq_subexpr) => double_question neq_subexpr | QUESTION+)?; YQL_ENSURE(tailExternal.Count == 0); - MaybeUnnamedSmartParenOnTop = MaybeUnnamedSmartParenOnTop && !node.HasBlock3(); + MaybeUnnamedSmartParenOnTop_ = MaybeUnnamedSmartParenOnTop_ && !node.HasBlock3(); TTrailingQuestions tail; if (node.HasBlock3() && node.GetBlock3().Alt_case() == TRule_neq_subexpr::TBlock3::kAlt2) { auto& questions = node.GetBlock3().GetAlt2(); tail.Count = questions.GetBlock1().size(); - tail.Pos = Ctx.TokenPosition(questions.GetBlock1().begin()->GetToken1()); + tail.Pos = Ctx_.TokenPosition(questions.GetBlock1().begin()->GetToken1()); YQL_ENSURE(tail.Count > 0); } @@ -98,14 +98,14 @@ TNodePtr TSqlExpression::SubExpr(const TRule_neq_subexpr& node, const TTrailingQ if (node.HasBlock3()) { auto& block = node.GetBlock3(); if (block.Alt_case() == TRule_neq_subexpr::TBlock3::kAlt1) { - TSqlExpression altExpr(Ctx, Mode); + TSqlExpression altExpr(Ctx_, Mode_); auto altResult = SubExpr(block.GetAlt1().GetRule_neq_subexpr2(), {}); if (!altResult) { return {}; } const TVector<TNodePtr> args({result, altResult}); Token(block.GetAlt1().GetRule_double_question1().GetToken1()); - result = BuildBuiltinFunc(Ctx, Ctx.Pos(), "Coalesce", args); + result = BuildBuiltinFunc(Ctx_, Ctx_.Pos(), "Coalesce", args); } } return result; @@ -417,29 +417,29 @@ TMaybe<TExprOrIdent> TSqlExpression::LiteralExpr(const TRule_literal_value& node TExprOrIdent result; switch (node.Alt_case()) { case TRule_literal_value::kAltLiteralValue1: { - result.Expr = LiteralNumber(Ctx, node.GetAlt_literal_value1().GetRule_integer1()); + result.Expr = LiteralNumber(Ctx_, node.GetAlt_literal_value1().GetRule_integer1()); break; } case TRule_literal_value::kAltLiteralValue2: { - result.Expr = LiteralReal(Ctx, node.GetAlt_literal_value2().GetRule_real1()); + result.Expr = LiteralReal(Ctx_, node.GetAlt_literal_value2().GetRule_real1()); break; } case TRule_literal_value::kAltLiteralValue3: { const TString value(Token(node.GetAlt_literal_value3().GetToken1())); - return BuildLiteralTypedSmartStringOrId(Ctx, value); + return BuildLiteralTypedSmartStringOrId(Ctx_, value); } case TRule_literal_value::kAltLiteralValue5: { Token(node.GetAlt_literal_value5().GetToken1()); - result.Expr = BuildLiteralNull(Ctx.Pos()); + result.Expr = BuildLiteralNull(Ctx_.Pos()); break; } case TRule_literal_value::kAltLiteralValue9: { const TString value(to_lower(Token(node.GetAlt_literal_value9().GetRule_bool_value1().GetToken1()))); - result.Expr = BuildLiteralBool(Ctx.Pos(), FromString<bool>(value)); + result.Expr = BuildLiteralBool(Ctx_.Pos(), FromString<bool>(value)); break; } case TRule_literal_value::kAltLiteralValue10: { - result.Expr = BuildEmptyAction(Ctx.Pos()); + result.Expr = BuildEmptyAction(Ctx_.Pos()); break; } case TRule_literal_value::kAltLiteralValue4: @@ -464,11 +464,11 @@ TNodePtr TSqlExpression::UnaryExpr(const TUnarySubExprType& node, const TTrailin UnexpectedQuestionToken(tail); return {}; } else { - MaybeUnnamedSmartParenOnTop = false; + MaybeUnnamedSmartParenOnTop_ = false; return JsonApiExpr(node.GetAlt_unary_subexpr2().GetRule_json_api_expr1()); } } else { - MaybeUnnamedSmartParenOnTop = false; + MaybeUnnamedSmartParenOnTop_ = false; if (node.Alt_case() == TRule_in_unary_subexpr::kAltInUnarySubexpr1) { return UnaryCasualExpr(node.GetAlt_in_unary_subexpr1().GetRule_in_unary_casual_subexpr1(), tail); } else if (tail.Count) { @@ -485,9 +485,9 @@ TNodePtr TSqlExpression::JsonPathSpecification(const TRule_jsonpath_spec& node) jsonpath_spec: STRING_VALUE; */ TString value = Token(node.GetToken1()); - TPosition pos = Ctx.Pos(); + TPosition pos = Ctx_.Pos(); - auto parsed = StringContent(Ctx, pos, value); + auto parsed = StringContent(Ctx_, pos, value); if (!parsed) { return nullptr; } @@ -507,8 +507,8 @@ TNodePtr TSqlExpression::JsonInputArg(const TRule_json_common_args& node) { */ TNodePtr jsonExpr = Build(node.GetRule_expr1()); if (!jsonExpr || jsonExpr->IsNull()) { - jsonExpr = new TCallNodeImpl(Ctx.Pos(), "Nothing", { - new TCallNodeImpl(Ctx.Pos(), "OptionalType", {BuildDataType(Ctx.Pos(), "Json")}) + jsonExpr = new TCallNodeImpl(Ctx_.Pos(), "Nothing", { + new TCallNodeImpl(Ctx_.Pos(), "OptionalType", {BuildDataType(Ctx_.Pos(), "Json")}) }); } @@ -521,7 +521,7 @@ void TSqlExpression::AddJsonVariable(const TRule_json_variable& node, TVector<TN */ TNodePtr expr; TString rawName; - TPosition namePos = Ctx.Pos(); + TPosition namePos = Ctx_.Pos(); ui32 nameFlags = 0; expr = Build(node.GetRule_expr1()); @@ -534,7 +534,7 @@ void TSqlExpression::AddJsonVariable(const TRule_json_variable& node, TVector<TN case TRule_json_variable_name::kAltJsonVariableName2: { const auto& token = nameRule.GetAlt_json_variable_name2().GetToken1(); namePos = GetPos(token); - auto parsed = StringContentOrIdContent(Ctx, namePos, token.GetValue()); + auto parsed = StringContentOrIdContent(Ctx_, namePos, token.GetValue()); if (!parsed) { return; } @@ -565,7 +565,7 @@ TNodePtr TSqlExpression::JsonVariables(const TRule_json_common_args& node) { json_common_args: expr COMMA jsonpath_spec (PASSING json_variables)?; */ TVector<TNodePtr> variables; - TPosition pos = Ctx.Pos(); + TPosition pos = Ctx_.Pos(); if (node.HasBlock4()) { const auto& block = node.GetBlock4(); pos = GetPos(block.GetToken1()); @@ -616,8 +616,8 @@ void TSqlExpression::AddJsonValueCaseHandlers(const TRule_json_value& node, TVec json_case_handler* */ if (node.Block5Size() > 2) { - Ctx.Error() << "Only 1 ON EMPTY and/or 1 ON ERROR clause is expected"; - Ctx.IncrementMonCounter("sql_errors", "JsonValueTooManyHandleClauses"); + Ctx_.Error() << "Only 1 ON EMPTY and/or 1 ON ERROR clause is expected"; + Ctx_.IncrementMonCounter("sql_errors", "JsonValueTooManyHandleClauses"); return; } @@ -630,20 +630,20 @@ void TSqlExpression::AddJsonValueCaseHandlers(const TRule_json_value& node, TVec const bool isEmptyClause = to_lower(block.GetToken3().GetValue()) == "empty"; if (isEmptyClause && onEmpty != nullptr) { - Ctx.Error() << "Only 1 ON EMPTY clause is expected"; - Ctx.IncrementMonCounter("sql_errors", "JsonValueMultipleOnEmptyClauses"); + Ctx_.Error() << "Only 1 ON EMPTY clause is expected"; + Ctx_.IncrementMonCounter("sql_errors", "JsonValueMultipleOnEmptyClauses"); return; } if (!isEmptyClause && onError != nullptr) { - Ctx.Error() << "Only 1 ON ERROR clause is expected"; - Ctx.IncrementMonCounter("sql_errors", "JsonValueMultipleOnErrorClauses"); + Ctx_.Error() << "Only 1 ON ERROR clause is expected"; + Ctx_.IncrementMonCounter("sql_errors", "JsonValueMultipleOnErrorClauses"); return; } if (isEmptyClause && onError != nullptr) { - Ctx.Error() << "ON EMPTY clause must be before ON ERROR clause"; - Ctx.IncrementMonCounter("sql_errors", "JsonValueOnEmptyAfterOnError"); + Ctx_.Error() << "ON EMPTY clause must be before ON ERROR clause"; + Ctx_.IncrementMonCounter("sql_errors", "JsonValueOnEmptyAfterOnError"); return; } @@ -660,16 +660,16 @@ void TSqlExpression::AddJsonValueCaseHandlers(const TRule_json_value& node, TVec } if (onEmpty == nullptr) { - onEmpty = new TCallNodeImpl(Ctx.Pos(), "Null", {}); + onEmpty = new TCallNodeImpl(Ctx_.Pos(), "Null", {}); } if (onError == nullptr) { - onError = new TCallNodeImpl(Ctx.Pos(), "Null", {}); + onError = new TCallNodeImpl(Ctx_.Pos(), "Null", {}); } - children.push_back(BuildQuotedAtom(Ctx.Pos(), ToString(onEmptyMode), TNodeFlags::Default)); + children.push_back(BuildQuotedAtom(Ctx_.Pos(), ToString(onEmptyMode), TNodeFlags::Default)); children.push_back(onEmpty); - children.push_back(BuildQuotedAtom(Ctx.Pos(), ToString(onErrorMode), TNodeFlags::Default)); + children.push_back(BuildQuotedAtom(Ctx_.Pos(), ToString(onErrorMode), TNodeFlags::Default)); children.push_back(onError); } @@ -708,7 +708,7 @@ void TSqlExpression::AddJsonExistsHandler(const TRule_json_exists& node, TVector }; if (!node.HasBlock4()) { - children.push_back(buildJustBool(Ctx.Pos(), false)); + children.push_back(buildJustBool(Ctx_.Pos(), false)); return; } @@ -811,24 +811,24 @@ TNodePtr TSqlExpression::JsonQueryExpr(const TRule_json_query& node) { }; const auto wrapMode = JsonQueryWrapper(node); - addChild(Ctx.Pos(), ToString(wrapMode)); + addChild(Ctx_.Pos(), ToString(wrapMode)); auto onEmpty = EJsonQueryHandler::Null; if (node.HasBlock5()) { if (wrapMode != EJsonQueryWrap::NoWrap) { - Ctx.Error() << "ON EMPTY is prohibited because WRAPPER clause is specified"; - Ctx.IncrementMonCounter("sql_errors", "JsonQueryOnEmptyWithWrapper"); + Ctx_.Error() << "ON EMPTY is prohibited because WRAPPER clause is specified"; + Ctx_.IncrementMonCounter("sql_errors", "JsonQueryOnEmptyWithWrapper"); return nullptr; } onEmpty = JsonQueryHandler(node.GetBlock5().GetRule_json_query_handler1()); } - addChild(Ctx.Pos(), ToString(onEmpty)); + addChild(Ctx_.Pos(), ToString(onEmpty)); auto onError = EJsonQueryHandler::Null; if (node.HasBlock6()) { onError = JsonQueryHandler(node.GetBlock6().GetRule_json_query_handler1()); } - addChild(Ctx.Pos(), ToString(onError)); + addChild(Ctx_.Pos(), ToString(onError)); return new TCallNodeImpl(GetPos(node.GetToken1()), "JsonQuery", children); } @@ -837,7 +837,7 @@ TNodePtr TSqlExpression::JsonApiExpr(const TRule_json_api_expr& node) { /* json_api_expr: json_value | json_exists | json_query; */ - TPosition pos = Ctx.Pos(); + TPosition pos = Ctx_.Pos(); TNodePtr result = nullptr; switch (node.GetAltCase()) { case TRule_json_api_expr::kAltJsonApiExpr1: { @@ -878,7 +878,7 @@ TNodePtr TSqlExpression::RowPatternVarAccess(TString var, const TRule_unary_sube switch(idOrType.GetAltCase()) { case TRule_id_or_type::kAltIdOrType1: { const auto column = Id(idOrType.GetAlt_id_or_type1().GetRule_id1(), *this); - return BuildMatchRecognizeColumnAccess(Ctx.Pos(), std::move(var), std::move(column)); + return BuildMatchRecognizeColumnAccess(Ctx_.Pos(), std::move(var), std::move(column)); } case TRule_id_or_type::kAltIdOrType2: break; @@ -909,14 +909,14 @@ TNodePtr TSqlExpression::UnaryCasualExpr(const TUnaryCasualExprRule& node, const const auto& suffix = node.GetRule_unary_subexpr_suffix2(); const bool suffixIsEmpty = suffix.GetBlock1().empty() && !suffix.HasBlock2(); - MaybeUnnamedSmartParenOnTop = MaybeUnnamedSmartParenOnTop && suffixIsEmpty; + MaybeUnnamedSmartParenOnTop_ = MaybeUnnamedSmartParenOnTop_ && suffixIsEmpty; TString name; TNodePtr expr; bool typePossible = false; auto& block = node.GetBlock1(); switch (block.Alt_case()) { case TUnaryCasualExprRule::TBlock1::kAlt1: { - MaybeUnnamedSmartParenOnTop = false; + MaybeUnnamedSmartParenOnTop_ = false; auto& alt = block.GetAlt1(); if constexpr (std::is_same_v<TUnaryCasualExprRule, TRule_unary_casual_subexpr>) { name = Id(alt.GetRule_id_expr1(), *this); @@ -933,12 +933,12 @@ TNodePtr TSqlExpression::UnaryCasualExpr(const TUnaryCasualExprRule& node, const if constexpr (std::is_same_v<TUnaryCasualExprRule, TRule_unary_casual_subexpr>) { exprOrId = AtomExpr(alt.GetRule_atom_expr1(), suffixIsEmpty ? tail : TTrailingQuestions{}); } else { - MaybeUnnamedSmartParenOnTop = false; + MaybeUnnamedSmartParenOnTop_ = false; exprOrId = InAtomExpr(alt.GetRule_in_atom_expr1(), suffixIsEmpty ? tail : TTrailingQuestions{}); } if (!exprOrId) { - Ctx.IncrementMonCounter("sql_errors", "BadAtomExpr"); + Ctx_.IncrementMonCounter("sql_errors", "BadAtomExpr"); return nullptr; } if (!exprOrId->Expr) { @@ -977,12 +977,12 @@ TNodePtr TSqlExpression::UnaryCasualExpr(const TUnaryCasualExprRule& node, const // In case of MATCH_RECOGNIZE lambdas // X.Y is treated as Var.Column access if (isColumnRef && ( - EColumnRefState::MatchRecognizeMeasures == Ctx.GetColumnReferenceState() || - EColumnRefState::MatchRecognizeDefine == Ctx.GetColumnReferenceState() || - EColumnRefState::MatchRecognizeDefineAggregate == Ctx.GetColumnReferenceState() + EColumnRefState::MatchRecognizeMeasures == Ctx_.GetColumnReferenceState() || + EColumnRefState::MatchRecognizeDefine == Ctx_.GetColumnReferenceState() || + EColumnRefState::MatchRecognizeDefineAggregate == Ctx_.GetColumnReferenceState() )) { if (suffix.GetBlock1().size() != 1) { - Ctx.Error() << "Expected Var.Column, but got chain of " << suffix.GetBlock1().size() << " column accesses"; + Ctx_.Error() << "Expected Var.Column, but got chain of " << suffix.GetBlock1().size() << " column accesses"; return nullptr; } return RowPatternVarAccess(std::move(name), b.GetAlt3().GetBlock2()); @@ -1003,14 +1003,14 @@ TNodePtr TSqlExpression::UnaryCasualExpr(const TUnaryCasualExprRule& node, const if (!isColumnRef) { lastExpr = expr; } else { - const bool flexibleTypes = Ctx.FlexibleTypes; + const bool flexibleTypes = Ctx_.FlexibleTypes; bool columnOrType = false; - auto columnRefsState = Ctx.GetColumnReferenceState(); + auto columnRefsState = Ctx_.GetColumnReferenceState(); bool explicitPgType = columnRefsState == EColumnRefState::AsPgType; if (explicitPgType && typePossible && suffixIsEmpty) { - auto pgType = BuildSimpleType(Ctx, Ctx.Pos(), name, false); + auto pgType = BuildSimpleType(Ctx_, Ctx_.Pos(), name, false); if (pgType && tail.Count) { - Ctx.Error() << "Optional types are not supported in this context"; + Ctx_.Error() << "Optional types are not supported in this context"; return {}; } return pgType; @@ -1018,7 +1018,7 @@ TNodePtr TSqlExpression::UnaryCasualExpr(const TUnaryCasualExprRule& node, const if (auto simpleType = LookupSimpleType(name, flexibleTypes, false); simpleType && typePossible && suffixIsEmpty) { if (tail.Count > 0 || columnRefsState == EColumnRefState::Deny || !flexibleTypes) { // a type - return AddOptionals(BuildSimpleType(Ctx, Ctx.Pos(), name, false), tail.Count); + return AddOptionals(BuildSimpleType(Ctx_, Ctx_.Pos(), name, false), tail.Count); } // type or column: ambiguity will be resolved on type annotation stage columnOrType = columnRefsState == EColumnRefState::Allow; @@ -1027,15 +1027,15 @@ TNodePtr TSqlExpression::UnaryCasualExpr(const TUnaryCasualExprRule& node, const UnexpectedQuestionToken(tail); return {}; } - if (!Ctx.CheckColumnReference(Ctx.Pos(), name)) { + if (!Ctx_.CheckColumnReference(Ctx_.Pos(), name)) { return nullptr; } - ids.push_back(columnOrType ? BuildColumnOrType(Ctx.Pos()) : BuildColumn(Ctx.Pos())); + ids.push_back(columnOrType ? BuildColumnOrType(Ctx_.Pos()) : BuildColumn(Ctx_.Pos())); ids.push_back(name); } - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); for (auto& _b : suffix.GetBlock1()) { auto& b = _b.GetBlock1(); switch (b.Alt_case()) { @@ -1043,7 +1043,7 @@ TNodePtr TSqlExpression::UnaryCasualExpr(const TUnaryCasualExprRule& node, const // key_expr auto keyExpr = KeyExpr(b.GetAlt1().GetRule_key_expr1()); if (!keyExpr) { - Ctx.IncrementMonCounter("sql_errors", "BadKeyExpr"); + Ctx_.IncrementMonCounter("sql_errors", "BadKeyExpr"); return nullptr; } @@ -1060,7 +1060,7 @@ TNodePtr TSqlExpression::UnaryCasualExpr(const TUnaryCasualExprRule& node, const } case TRule_unary_subexpr_suffix::TBlock1::TBlock1::kAlt2: { // invoke_expr - cannot be a column, function name - TSqlCallExpr call(Ctx, Mode); + TSqlCallExpr call(Ctx_, Mode_); if (isFirstElem && !name.empty()) { call.AllowDistinct(); call.InitName(name); @@ -1140,7 +1140,7 @@ TNodePtr TSqlExpression::UnaryCasualExpr(const TUnaryCasualExprRule& node, const } if (suffix.HasBlock2()) { - Ctx.IncrementMonCounter("sql_errors", "CollateUnarySubexpr"); + Ctx_.IncrementMonCounter("sql_errors", "CollateUnarySubexpr"); Error() << "unary_subexpr: COLLATE is not implemented yet"; } @@ -1152,22 +1152,22 @@ TNodePtr TSqlExpression::BindParameterRule(const TRule_bind_parameter& rule, con if (!NamedNodeImpl(rule, namedArg, *this)) { return {}; } - if (SmartParenthesisMode == ESmartParenthesis::SqlLambdaParams) { - Ctx.IncrementMonCounter("sql_features", "LambdaArgument"); + if (SmartParenthesisMode_ == ESmartParenthesis::SqlLambdaParams) { + Ctx_.IncrementMonCounter("sql_features", "LambdaArgument"); if (tail.Count > 1) { - Ctx.Error(tail.Pos) << "Expecting at most one '?' token here (for optional lambda parameters), but got " << tail.Count; + Ctx_.Error(tail.Pos) << "Expecting at most one '?' token here (for optional lambda parameters), but got " << tail.Count; return {}; } - return BuildAtom(Ctx.Pos(), namedArg, NYql::TNodeFlags::ArbitraryContent, tail.Count != 0); + return BuildAtom(Ctx_.Pos(), namedArg, NYql::TNodeFlags::ArbitraryContent, tail.Count != 0); } if (tail.Count) { UnexpectedQuestionToken(tail); return {}; } - Ctx.IncrementMonCounter("sql_features", "NamedNodeUseAtom"); + Ctx_.IncrementMonCounter("sql_features", "NamedNodeUseAtom"); auto ret = GetNamedNode(namedArg); if (ret) { - ret->SetRefPos(Ctx.Pos()); + ret->SetRefPos(Ctx_.Pos()); } return ret; @@ -1180,12 +1180,12 @@ TNodePtr TSqlExpression::LambdaRule(const TRule_lambda& rule) { return SmartParenthesis(alt.GetRule_smart_parenthesis1()); } - MaybeUnnamedSmartParenOnTop = false; + MaybeUnnamedSmartParenOnTop_ = false; TNodePtr parenthesis; { // we allow column reference here to postpone error and report it with better description in SqlLambdaParams - TColumnRefScope scope(Ctx, EColumnRefState::Allow); - TSqlExpression expr(Ctx, Mode); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); + TSqlExpression expr(Ctx_, Mode_); expr.SetSmartParenthesisMode(ESmartParenthesis::SqlLambdaParams); parenthesis = expr.SmartParenthesis(alt.GetRule_smart_parenthesis1()); } @@ -1200,18 +1200,18 @@ TNodePtr TSqlExpression::LambdaRule(const TRule_lambda& rule) { } auto bodyBlock = alt.GetBlock2(); Token(bodyBlock.GetToken1()); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TVector<TNodePtr> exprSeq; for (auto& arg: args) { arg.Name = PushNamedAtom(arg.Pos, arg.Name); } bool ret = false; - TColumnRefScope scope(Ctx, EColumnRefState::Deny); + TColumnRefScope scope(Ctx_, EColumnRefState::Deny); scope.SetNoColumnErrContext("in lambda function"); if (bodyBlock.GetBlock2().HasAlt1()) { - ret = SqlLambdaExprBody(Ctx, bodyBlock.GetBlock2().GetAlt1().GetRule_expr2(), exprSeq); + ret = SqlLambdaExprBody(Ctx_, bodyBlock.GetBlock2().GetAlt1().GetRule_expr2(), exprSeq); } else { - ret = SqlLambdaExprBody(Ctx, bodyBlock.GetBlock2().GetAlt2().GetRule_lambda_body2(), exprSeq); + ret = SqlLambdaExprBody(Ctx_, bodyBlock.GetBlock2().GetAlt2().GetRule_lambda_body2(), exprSeq); } TVector<TString> argNames; @@ -1235,11 +1235,11 @@ TNodePtr TSqlExpression::LambdaRule(const TRule_lambda& rule) { } TNodePtr TSqlExpression::CastRule(const TRule_cast_expr& rule) { - Ctx.IncrementMonCounter("sql_features", "Cast"); + Ctx_.IncrementMonCounter("sql_features", "Cast"); const auto& alt = rule; Token(alt.GetToken1()); - TPosition pos(Ctx.Pos()); - TSqlExpression expr(Ctx, Mode); + TPosition pos(Ctx_.Pos()); + TSqlExpression expr(Ctx_, Mode_); auto exprNode = expr.Build(rule.GetRule_expr3()); if (!exprNode) { return {}; @@ -1252,11 +1252,11 @@ TNodePtr TSqlExpression::CastRule(const TRule_cast_expr& rule) { } TNodePtr TSqlExpression::BitCastRule(const TRule_bitcast_expr& rule) { - Ctx.IncrementMonCounter("sql_features", "BitCast"); + Ctx_.IncrementMonCounter("sql_features", "BitCast"); const auto& alt = rule; Token(alt.GetToken1()); - TPosition pos(Ctx.Pos()); - TSqlExpression expr(Ctx, Mode); + TPosition pos(Ctx_.Pos()); + TSqlExpression expr(Ctx_, Mode_); auto exprNode = expr.Build(rule.GetRule_expr3()); if (!exprNode) { return {}; @@ -1269,7 +1269,7 @@ TNodePtr TSqlExpression::BitCastRule(const TRule_bitcast_expr& rule) { } TNodePtr TSqlExpression::ExistsRule(const TRule_exists_expr& rule) { - Ctx.IncrementMonCounter("sql_features", "Exists"); + Ctx_.IncrementMonCounter("sql_features", "Exists"); TPosition pos; TSourcePtr source; @@ -1277,13 +1277,13 @@ TNodePtr TSqlExpression::ExistsRule(const TRule_exists_expr& rule) { switch (rule.GetBlock3().Alt_case()) { case TRule_exists_expr::TBlock3::kAlt1: { const auto& alt = rule.GetBlock3().GetAlt1().GetRule_select_stmt1(); - TSqlSelect select(Ctx, Mode); + TSqlSelect select(Ctx_, Mode_); source = select.Build(alt, pos); break; } case TRule_exists_expr::TBlock3::kAlt2: { const auto& alt = rule.GetBlock3().GetAlt2().GetRule_values_stmt1(); - TSqlValues values(Ctx, Mode); + TSqlValues values(Ctx_, Mode_); source = values.Build(alt, pos); break; } @@ -1292,34 +1292,34 @@ TNodePtr TSqlExpression::ExistsRule(const TRule_exists_expr& rule) { } if (!source) { - Ctx.IncrementMonCounter("sql_errors", "BadSource"); + Ctx_.IncrementMonCounter("sql_errors", "BadSource"); return nullptr; } const bool checkExist = true; - auto select = BuildSourceNode(Ctx.Pos(), source, checkExist, Ctx.Settings.EmitReadsForExists); - return BuildBuiltinFunc(Ctx, Ctx.Pos(), "ListHasItems", {select}); + auto select = BuildSourceNode(Ctx_.Pos(), source, checkExist, Ctx_.Settings.EmitReadsForExists); + return BuildBuiltinFunc(Ctx_, Ctx_.Pos(), "ListHasItems", {select}); } TNodePtr TSqlExpression::CaseRule(const TRule_case_expr& rule) { // case_expr: CASE expr? when_expr+ (ELSE expr)? END; // when_expr: WHEN expr THEN expr; - Ctx.IncrementMonCounter("sql_features", "Case"); + Ctx_.IncrementMonCounter("sql_features", "Case"); const auto& alt = rule; Token(alt.GetToken1()); TNodePtr elseExpr; if (alt.HasBlock4()) { Token(alt.GetBlock4().GetToken1()); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); elseExpr = expr.Build(alt.GetBlock4().GetRule_expr2()); } else { - Ctx.IncrementMonCounter("sql_errors", "ElseIsRequired"); + Ctx_.IncrementMonCounter("sql_errors", "ElseIsRequired"); Error() << "ELSE is required"; return {}; } TNodePtr caseExpr; if (alt.HasBlock2()) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); caseExpr = expr.Build(alt.GetBlock2().GetRule_expr1()); if (!caseExpr) { return {}; @@ -1331,23 +1331,23 @@ TNodePtr TSqlExpression::CaseRule(const TRule_case_expr& rule) { branches.emplace_back(); const auto& block = alt.GetBlock3(i).GetRule_when_expr1(); Token(block.GetToken1()); - TSqlExpression condExpr(Ctx, Mode); + TSqlExpression condExpr(Ctx_, Mode_); branches.back().Pred = condExpr.Build(block.GetRule_expr2()); if (caseExpr) { - branches.back().Pred = BuildBinaryOp(Ctx, Ctx.Pos(), "==", caseExpr->Clone(), branches.back().Pred); + branches.back().Pred = BuildBinaryOp(Ctx_, Ctx_.Pos(), "==", caseExpr->Clone(), branches.back().Pred); } if (!branches.back().Pred) { return {}; } Token(block.GetToken3()); - TSqlExpression thenExpr(Ctx, Mode); + TSqlExpression thenExpr(Ctx_, Mode_); branches.back().Value = thenExpr.Build(block.GetRule_expr4()); if (!branches.back().Value) { return {}; } } auto final = ReduceCaseBranches(branches.begin(), branches.end()); - return BuildBuiltinFunc(Ctx, Ctx.Pos(), "If", { final.Pred, final.Value, elseExpr }); + return BuildBuiltinFunc(Ctx_, Ctx_.Pos(), "If", { final.Pred, final.Value, elseExpr }); } TMaybe<TExprOrIdent> TSqlExpression::AtomExpr(const TRule_atom_expr& node, const TTrailingQuestions& tail) { @@ -1369,11 +1369,11 @@ TMaybe<TExprOrIdent> TSqlExpression::AtomExpr(const TRule_atom_expr& node, const UnexpectedQuestionToken(tail); return {}; } - MaybeUnnamedSmartParenOnTop = MaybeUnnamedSmartParenOnTop && (node.Alt_case() == TRule_atom_expr::kAltAtomExpr3); + MaybeUnnamedSmartParenOnTop_ = MaybeUnnamedSmartParenOnTop_ && (node.Alt_case() == TRule_atom_expr::kAltAtomExpr3); TExprOrIdent result; switch (node.Alt_case()) { case TRule_atom_expr::kAltAtomExpr1: - Ctx.IncrementMonCounter("sql_features", "LiteralExpr"); + Ctx_.IncrementMonCounter("sql_features", "LiteralExpr"); return LiteralExpr(node.GetAlt_atom_expr1().GetRule_literal_value1()); case TRule_atom_expr::kAltAtomExpr2: result.Expr = BindParameterRule(node.GetAlt_atom_expr2().GetRule_bind_parameter1(), tail); @@ -1393,7 +1393,7 @@ TMaybe<TExprOrIdent> TSqlExpression::AtomExpr(const TRule_atom_expr& node, const case TRule_atom_expr::kAltAtomExpr7: { const auto& alt = node.GetAlt_atom_expr7(); TString module(Id(alt.GetRule_an_id_or_type1(), *this)); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TString name; switch (alt.GetBlock3().Alt_case()) { case TRule_atom_expr::TAlt7::TBlock3::kAlt1: @@ -1401,9 +1401,9 @@ TMaybe<TExprOrIdent> TSqlExpression::AtomExpr(const TRule_atom_expr& node, const break; case TRule_atom_expr::TAlt7::TBlock3::kAlt2: { name = Token(alt.GetBlock3().GetAlt2().GetToken1()); - if (Ctx.AnsiQuotedIdentifiers && name.StartsWith('"')) { + if (Ctx_.AnsiQuotedIdentifiers && name.StartsWith('"')) { // same as previous case - name = IdContentFromString(Ctx, name); + name = IdContentFromString(Ctx_, name); } else { module = "@" + module; } @@ -1462,7 +1462,7 @@ TMaybe<TExprOrIdent> TSqlExpression::InAtomExpr(const TRule_in_atom_expr& node, TExprOrIdent result; switch (node.Alt_case()) { case TRule_in_atom_expr::kAltInAtomExpr1: - Ctx.IncrementMonCounter("sql_features", "LiteralExpr"); + Ctx_.IncrementMonCounter("sql_features", "LiteralExpr"); return LiteralExpr(node.GetAlt_in_atom_expr1().GetRule_literal_value1()); case TRule_in_atom_expr::kAltInAtomExpr2: result.Expr = BindParameterRule(node.GetAlt_in_atom_expr2().GetRule_bind_parameter1(), tail); @@ -1479,7 +1479,7 @@ TMaybe<TExprOrIdent> TSqlExpression::InAtomExpr(const TRule_in_atom_expr& node, case TRule_in_atom_expr::kAltInAtomExpr6: { const auto& alt = node.GetAlt_in_atom_expr6(); TString module(Id(alt.GetRule_an_id_or_type1(), *this)); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TString name; switch (alt.GetBlock3().Alt_case()) { case TRule_in_atom_expr::TAlt6::TBlock3::kAlt1: @@ -1487,9 +1487,9 @@ TMaybe<TExprOrIdent> TSqlExpression::InAtomExpr(const TRule_in_atom_expr& node, break; case TRule_in_atom_expr::TAlt6::TBlock3::kAlt2: { name = Token(alt.GetBlock3().GetAlt2().GetToken1()); - if (Ctx.AnsiQuotedIdentifiers && name.StartsWith('"')) { + if (Ctx_.AnsiQuotedIdentifiers && name.StartsWith('"')) { // same as previous case - name = IdContentFromString(Ctx, name); + name = IdContentFromString(Ctx_, name); } else { module = "@" + module; } @@ -1504,19 +1504,19 @@ TMaybe<TExprOrIdent> TSqlExpression::InAtomExpr(const TRule_in_atom_expr& node, case TRule_in_atom_expr::kAltInAtomExpr7: { Token(node.GetAlt_in_atom_expr7().GetToken1()); // reset column reference scope (select will reenable it where needed) - TColumnRefScope scope(Ctx, EColumnRefState::Deny); - TSqlSelect select(Ctx, Mode); + TColumnRefScope scope(Ctx_, EColumnRefState::Deny); + TSqlSelect select(Ctx_, Mode_); TPosition pos; auto source = select.Build(node.GetAlt_in_atom_expr7().GetRule_select_stmt2(), pos); if (!source) { - Ctx.IncrementMonCounter("sql_errors", "BadSource"); + Ctx_.IncrementMonCounter("sql_errors", "BadSource"); return {}; } - Ctx.IncrementMonCounter("sql_features", "InSubquery"); - const auto alias = Ctx.MakeName("subquerynode"); - const auto ref = Ctx.MakeName("subquery"); - auto& blocks = Ctx.GetCurrentBlocks(); - blocks.push_back(BuildSubquery(std::move(source), alias, Mode == NSQLTranslation::ESqlMode::SUBQUERY, -1, Ctx.Scoped)); + Ctx_.IncrementMonCounter("sql_features", "InSubquery"); + const auto alias = Ctx_.MakeName("subquerynode"); + const auto ref = Ctx_.MakeName("subquery"); + auto& blocks = Ctx_.GetCurrentBlocks(); + blocks.push_back(BuildSubquery(std::move(source), alias, Mode_ == NSQLTranslation::ESqlMode::SUBQUERY, -1, Ctx_.Scoped)); blocks.back()->SetLabel(ref); result.Expr = BuildSubqueryRef(blocks.back(), ref, -1); break; @@ -1552,25 +1552,25 @@ bool TSqlExpression::SqlLambdaParams(const TNodePtr& node, TVector<TSymbolNameWi auto errMsg = TStringBuf("Invalid lambda arguments syntax. Lambda arguments should start with '$' as named value."); auto tupleNodePtr = node->GetTupleNode();; if (!tupleNodePtr) { - Ctx.Error(node->GetPos()) << errMsg; + Ctx_.Error(node->GetPos()) << errMsg; return false; } THashSet<TString> dupArgsChecker; for (const auto& argPtr: tupleNodePtr->Elements()) { auto contentPtr = argPtr->GetAtomContent(); if (!contentPtr || !contentPtr->StartsWith("$")) { - Ctx.Error(argPtr->GetPos()) << errMsg; + Ctx_.Error(argPtr->GetPos()) << errMsg; return false; } if (argPtr->IsOptionalArg()) { ++optionalArgumentsCount; } else if (optionalArgumentsCount > 0) { - Ctx.Error(argPtr->GetPos()) << "Non-optional argument can not follow optional one"; + Ctx_.Error(argPtr->GetPos()) << "Non-optional argument can not follow optional one"; return false; } if (!IsAnonymousName(*contentPtr) && !dupArgsChecker.insert(*contentPtr).second) { - Ctx.Error(argPtr->GetPos()) << "Duplicate lambda argument parametr: '" << *contentPtr << "'."; + Ctx_.Error(argPtr->GetPos()) << "Duplicate lambda argument parametr: '" << *contentPtr << "'."; return false; } args.push_back(TSymbolNameWithPos{*contentPtr, argPtr->GetPos()}); @@ -1659,29 +1659,29 @@ TNodePtr TSqlExpression::SubExpr(const TRule_con_subexpr& node, const TTrailingQ case TRule_con_subexpr::kAltConSubexpr1: return UnaryExpr(node.GetAlt_con_subexpr1().GetRule_unary_subexpr1(), tail); case TRule_con_subexpr::kAltConSubexpr2: { - MaybeUnnamedSmartParenOnTop = false; - Ctx.IncrementMonCounter("sql_features", "UnaryOperation"); + MaybeUnnamedSmartParenOnTop_ = false; + Ctx_.IncrementMonCounter("sql_features", "UnaryOperation"); TString opName; auto token = node.GetAlt_con_subexpr2().GetRule_unary_op1().GetToken1(); Token(token); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); auto tokenId = token.GetId(); - if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, NOT)) { + if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, NOT)) { opName = "Not"; - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, PLUS)) { + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, PLUS)) { opName = "Plus"; - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, MINUS)) { - opName = Ctx.Scoped->PragmaCheckedOps ? "CheckedMinus" : "Minus"; - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, TILDA)) { + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, MINUS)) { + opName = Ctx_.Scoped->PragmaCheckedOps ? "CheckedMinus" : "Minus"; + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, TILDA)) { opName = "BitNot"; } else { - Ctx.IncrementMonCounter("sql_errors", "UnsupportedUnaryOperation"); + Ctx_.IncrementMonCounter("sql_errors", "UnsupportedUnaryOperation"); Error() << "Unsupported unary operation: " << token.GetValue(); return nullptr; } - Ctx.IncrementMonCounter("sql_unary_operations", opName); + Ctx_.IncrementMonCounter("sql_unary_operations", opName); auto expr = UnaryExpr(node.GetAlt_con_subexpr2().GetRule_unary_subexpr2(), tail); - return expr ? expr->ApplyUnaryOp(Ctx, pos, opName) : expr; + return expr ? expr->ApplyUnaryOp(Ctx_, pos, opName) : expr; } case TRule_con_subexpr::ALT_NOT_SET: Y_ABORT("You should change implementation according to grammar changes"); @@ -1691,12 +1691,12 @@ 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?; - MaybeUnnamedSmartParenOnTop = MaybeUnnamedSmartParenOnTop && !node.HasBlock2(); + MaybeUnnamedSmartParenOnTop_ = MaybeUnnamedSmartParenOnTop_ && !node.HasBlock2(); TNodePtr res(SubExpr(node.GetRule_eq_subexpr1(), node.HasBlock2() ? TTrailingQuestions{} : tail)); if (!res) { return {}; } - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); if (node.HasBlock2()) { auto cond = node.GetBlock2().GetRule_cond_expr1(); switch (cond.Alt_case()) { @@ -1712,7 +1712,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ if (opName == "like" || opName == "ilike") { const TString* escapeLiteral = nullptr; TNodePtr escapeNode; - const auto& escaper = BuildUdf(Ctx, pos, "Re2", "PatternFromLike", {}); + const auto& escaper = BuildUdf(Ctx_, pos, "Re2", "PatternFromLike", {}); TVector<TNodePtr> escaperArgs({ escaper, pattern }); if (matchOp.HasBlock4()) { @@ -1724,35 +1724,35 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ escapeLiteral = escapeExpr->GetLiteral("String"); escapeNode = escapeExpr; if (escapeLiteral) { - Ctx.IncrementMonCounter("sql_features", "LikeEscape"); + Ctx_.IncrementMonCounter("sql_features", "LikeEscape"); if (escapeLiteral->size() != 1) { - Ctx.IncrementMonCounter("sql_errors", "LikeMultiCharEscape"); + Ctx_.IncrementMonCounter("sql_errors", "LikeMultiCharEscape"); Error() << "ESCAPE clause requires single character argument"; return nullptr; } if (escapeLiteral[0] == "%" || escapeLiteral[0] == "_" || escapeLiteral[0] == "\\") { - Ctx.IncrementMonCounter("sql_errors", "LikeUnsupportedEscapeChar"); + Ctx_.IncrementMonCounter("sql_errors", "LikeUnsupportedEscapeChar"); Error() << "'%', '_' and '\\' are currently not supported in ESCAPE clause, "; Error() << "please choose any other character"; return nullptr; } if (!IsAscii(escapeLiteral->front())) { - Ctx.IncrementMonCounter("sql_errors", "LikeUnsupportedEscapeChar"); + Ctx_.IncrementMonCounter("sql_errors", "LikeUnsupportedEscapeChar"); Error() << "Non-ASCII symbols are not supported in ESCAPE clause, "; Error() << "please choose ASCII character"; return nullptr; } escaperArgs.push_back(BuildLiteralRawString(pos, *escapeLiteral)); } else { - Ctx.IncrementMonCounter("sql_errors", "LikeNotLiteralEscape"); + Ctx_.IncrementMonCounter("sql_errors", "LikeNotLiteralEscape"); Error() << "ESCAPE clause requires String literal argument"; return nullptr; } } - auto re2options = BuildUdf(Ctx, pos, "Re2", "Options", {}); + auto re2options = BuildUdf(Ctx_, pos, "Re2", "Options", {}); if (opName == "ilike") { - Ctx.IncrementMonCounter("sql_features", "CaseInsensitiveLike"); + Ctx_.IncrementMonCounter("sql_features", "CaseInsensitiveLike"); } auto csModeLiteral = BuildLiteralBool(pos, opName != "ilike"); csModeLiteral->SetLabel("CaseSensitive"); @@ -1763,7 +1763,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ auto list = new TAstListNodeImpl(pos, { escapedPattern, optionsApply }); auto runConfig = new TAstListNodeImpl(pos, { new TAstAtomNodeImpl(pos, "quote", 0), list }); - const TNodePtr matcher = new TCallNodeImpl(pos, "AssumeStrict", { BuildUdf(Ctx, pos, "Re2", "Match", { runConfig }) }); + const TNodePtr matcher = new TCallNodeImpl(pos, "AssumeStrict", { BuildUdf(Ctx_, pos, "Re2", "Match", { runConfig }) }); isMatch = new TCallNodeImpl(pos, "Apply", { matcher, res }); bool isUtf8 = false; @@ -1798,12 +1798,12 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ } if (inEscape) { - Ctx.IncrementMonCounter("sql_errors", "LikeEscapeSymbolEnd"); + Ctx_.IncrementMonCounter("sql_errors", "LikeEscapeSymbolEnd"); Error() << "LIKE pattern should not end with escape symbol"; return nullptr; } - if ((opName == "like") || mayIgnoreCase || Ctx.OptimizeSimpleIlike) { + if ((opName == "like") || mayIgnoreCase || Ctx_.OptimizeSimpleIlike) { // TODO: expand LIKE in optimizers - we can analyze argument types there const bool useIgnoreCaseOp = (opName == "ilike") && !mayIgnoreCase; const auto& equalOp = useIgnoreCaseOp ? "EqualsIgnoreCase" : "=="; @@ -1816,37 +1816,37 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ if (components.size() == 1 && first.IsSimple) { // no '%'s and '_'s in pattern YQL_ENSURE(first.Prefix == first.Suffix); - isMatch = BuildBinaryOp(Ctx, pos, equalOp, res, BuildLiteralRawString(pos, first.Suffix, isUtf8)); + isMatch = BuildBinaryOp(Ctx_, pos, equalOp, res, BuildLiteralRawString(pos, first.Suffix, isUtf8)); } else if (!first.Prefix.empty()) { const TString& prefix = first.Prefix; TNodePtr prefixMatch; - if (Ctx.EmitStartsWith) { - prefixMatch = BuildBinaryOp(Ctx, pos, startsWithOp, res, BuildLiteralRawString(pos, prefix, isUtf8)); + if (Ctx_.EmitStartsWith) { + prefixMatch = BuildBinaryOp(Ctx_, pos, startsWithOp, res, BuildLiteralRawString(pos, prefix, isUtf8)); } else { - prefixMatch = BuildBinaryOp(Ctx, pos, ">=", res, BuildLiteralRawString(pos, prefix, isUtf8)); + prefixMatch = BuildBinaryOp(Ctx_, pos, ">=", res, BuildLiteralRawString(pos, prefix, isUtf8)); auto upperBound = isUtf8 ? NextValidUtf8(prefix) : NextLexicographicString(prefix); if (upperBound) { prefixMatch = BuildBinaryOp( - Ctx, + Ctx_, pos, "And", prefixMatch, - BuildBinaryOp(Ctx, pos, "<", res, BuildLiteralRawString(pos, TString(*upperBound), isUtf8)) + BuildBinaryOp(Ctx_, pos, "<", res, BuildLiteralRawString(pos, TString(*upperBound), isUtf8)) ); } } - if (Ctx.AnsiLike && first.IsSimple && components.size() == 2 && components.back().IsSimple) { + if (Ctx_.AnsiLike && first.IsSimple && components.size() == 2 && components.back().IsSimple) { const TString& suffix = components.back().Suffix; // 'prefix%suffix' if (suffix.empty()) { isMatch = prefixMatch; } else { // len(str) >= len(prefix) + len(suffix) && StartsWith(str, prefix) && EndsWith(str, suffix) - TNodePtr sizePred = BuildBinaryOp(Ctx, pos, ">=", + TNodePtr sizePred = BuildBinaryOp(Ctx_, pos, ">=", TNodePtr(new TCallNodeImpl(pos, "Size", { res })), TNodePtr(new TLiteralNumberNode<ui32>(pos, "Uint32", ToString(prefix.size() + suffix.size())))); - TNodePtr suffixMatch = BuildBinaryOp(Ctx, pos, endsWithOp, res, BuildLiteralRawString(pos, suffix, isUtf8)); + TNodePtr suffixMatch = BuildBinaryOp(Ctx_, pos, endsWithOp, res, BuildLiteralRawString(pos, suffix, isUtf8)); isMatch = new TCallNodeImpl(pos, "And", { sizePred, prefixMatch, @@ -1854,57 +1854,57 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ }); } } else { - isMatch = BuildBinaryOp(Ctx, pos, "And", prefixMatch, isMatch); + isMatch = BuildBinaryOp(Ctx_, pos, "And", prefixMatch, isMatch); } - } else if (Ctx.AnsiLike && AllOf(components, [](const auto& comp) { return comp.IsSimple; })) { + } else if (Ctx_.AnsiLike && AllOf(components, [](const auto& comp) { return comp.IsSimple; })) { YQL_ENSURE(first.Prefix.empty()); if (components.size() == 3 && components.back().Prefix.empty()) { // '%foo%' YQL_ENSURE(!components[1].Prefix.empty()); - isMatch = BuildBinaryOp(Ctx, pos, containsOp, res, BuildLiteralRawString(pos, components[1].Prefix, isUtf8)); + isMatch = BuildBinaryOp(Ctx_, pos, containsOp, res, BuildLiteralRawString(pos, components[1].Prefix, isUtf8)); } else if (components.size() == 2) { // '%foo' - isMatch = BuildBinaryOp(Ctx, pos, endsWithOp, res, BuildLiteralRawString(pos, components[1].Prefix, isUtf8)); + isMatch = BuildBinaryOp(Ctx_, pos, endsWithOp, res, BuildLiteralRawString(pos, components[1].Prefix, isUtf8)); } - } else if (Ctx.AnsiLike && !components.back().Suffix.empty()) { + } else if (Ctx_.AnsiLike && !components.back().Suffix.empty()) { const TString& suffix = components.back().Suffix; - TNodePtr suffixMatch = BuildBinaryOp(Ctx, pos, endsWithOp, res, BuildLiteralRawString(pos, suffix, isUtf8)); - isMatch = BuildBinaryOp(Ctx, pos, "And", suffixMatch, isMatch); + TNodePtr suffixMatch = BuildBinaryOp(Ctx_, pos, endsWithOp, res, BuildLiteralRawString(pos, suffix, isUtf8)); + isMatch = BuildBinaryOp(Ctx_, pos, "And", suffixMatch, isMatch); } // TODO: more StringContains/StartsWith/EndsWith cases? } } - Ctx.IncrementMonCounter("sql_features", notMatch ? "NotLike" : "Like"); + Ctx_.IncrementMonCounter("sql_features", notMatch ? "NotLike" : "Like"); } else if (opName == "regexp" || opName == "rlike" || opName == "match") { if (matchOp.HasBlock4()) { - Ctx.IncrementMonCounter("sql_errors", "RegexpEscape"); + Ctx_.IncrementMonCounter("sql_errors", "RegexpEscape"); TString opNameUpper(opName); opNameUpper.to_upper(); Error() << opName << " and ESCAPE clauses should not be used together"; return nullptr; } - if (!Ctx.PragmaRegexUseRe2) { - Ctx.Warning(pos, TIssuesIds::CORE_LEGACY_REGEX_ENGINE) << "Legacy regex engine works incorrectly with unicode. Use PRAGMA RegexUseRe2='true';"; + if (!Ctx_.PragmaRegexUseRe2) { + Ctx_.Warning(pos, TIssuesIds::CORE_LEGACY_REGEX_ENGINE) << "Legacy regex engine works incorrectly with unicode. Use PRAGMA RegexUseRe2='true';"; } - const auto& matcher = Ctx.PragmaRegexUseRe2 ? - BuildUdf(Ctx, pos, "Re2", opName == "match" ? "Match" : "Grep", {BuildTuple(pos, {pattern, BuildLiteralNull(pos)})}): - BuildUdf(Ctx, pos, "Pcre", opName == "match" ? "BacktrackingMatch" : "BacktrackingGrep", { pattern }); + const auto& matcher = Ctx_.PragmaRegexUseRe2 ? + BuildUdf(Ctx_, pos, "Re2", opName == "match" ? "Match" : "Grep", {BuildTuple(pos, {pattern, BuildLiteralNull(pos)})}): + BuildUdf(Ctx_, pos, "Pcre", opName == "match" ? "BacktrackingMatch" : "BacktrackingGrep", { pattern }); isMatch = new TCallNodeImpl(pos, "Apply", { matcher, res }); if (opName != "match") { - Ctx.IncrementMonCounter("sql_features", notMatch ? "NotRegexp" : "Regexp"); + Ctx_.IncrementMonCounter("sql_features", notMatch ? "NotRegexp" : "Regexp"); } else { - Ctx.IncrementMonCounter("sql_features", notMatch ? "NotMatch" : "Match"); + Ctx_.IncrementMonCounter("sql_features", notMatch ? "NotMatch" : "Match"); } } else { - Ctx.IncrementMonCounter("sql_errors", "UnknownMatchOp"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownMatchOp"); AltNotImplemented("match_op", cond); return nullptr; } - return (notMatch && isMatch) ? isMatch->ApplyUnaryOp(Ctx, pos, "Not") : isMatch; + return (notMatch && isMatch) ? isMatch->ApplyUnaryOp(Ctx_, pos, "Not") : isMatch; } case TRule_cond_expr::kAltCondExpr2: { // | NOT? IN COMPACT? in_expr @@ -1913,19 +1913,19 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ auto hints = BuildTuple(pos, {}); bool isCompact = altInExpr.HasBlock3(); if (!isCompact) { - auto sqlHints = Ctx.PullHintForToken(Ctx.TokenPosition(altInExpr.GetToken2())); + auto sqlHints = Ctx_.PullHintForToken(Ctx_.TokenPosition(altInExpr.GetToken2())); isCompact = AnyOf(sqlHints, [](const NSQLTranslation::TSQLHint& hint) { return to_lower(hint.Name) == "compact"; }); } if (isCompact) { - Ctx.IncrementMonCounter("sql_features", "IsCompactHint"); + Ctx_.IncrementMonCounter("sql_features", "IsCompactHint"); auto sizeHint = BuildTuple(pos, { BuildQuotedAtom(pos, "isCompact", NYql::TNodeFlags::Default) }); hints = BuildTuple(pos, { sizeHint }); } - TSqlExpression inSubexpr(Ctx, Mode); + TSqlExpression inSubexpr(Ctx_, Mode_); auto inRight = inSubexpr.SqlInExpr(altInExpr.GetRule_in_expr4(), tail); - auto isIn = BuildBuiltinFunc(Ctx, pos, "In", {res, inRight, hints}); - Ctx.IncrementMonCounter("sql_features", notIn ? "NotIn" : "In"); - return (notIn && isIn) ? isIn->ApplyUnaryOp(Ctx, pos, "Not") : isIn; + auto isIn = BuildBuiltinFunc(Ctx_, pos, "In", {res, inRight, hints}); + Ctx_.IncrementMonCounter("sql_features", notIn ? "NotIn" : "In"); + return (notIn && isIn) ? isIn->ApplyUnaryOp(Ctx_, pos, "Not") : isIn; } case TRule_cond_expr::kAltCondExpr3: { if (tail.Count) { @@ -1941,16 +1941,16 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ if (altCase == TRule_cond_expr::TAlt3::TBlock1::kAlt4 && !cond.GetAlt_cond_expr3().GetBlock1().GetAlt4().HasBlock1()) { - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_MISSING_IS_BEFORE_NOT_NULL) << "Missing IS keyword before NOT NULL"; + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_MISSING_IS_BEFORE_NOT_NULL) << "Missing IS keyword before NOT NULL"; } auto isNull = BuildIsNullOp(pos, res); - Ctx.IncrementMonCounter("sql_features", notNoll ? "NotNull" : "Null"); - return (notNoll && isNull) ? isNull->ApplyUnaryOp(Ctx, pos, "Not") : isNull; + Ctx_.IncrementMonCounter("sql_features", notNoll ? "NotNull" : "Null"); + return (notNoll && isNull) ? isNull->ApplyUnaryOp(Ctx_, pos, "Not") : isNull; } case TRule_cond_expr::kAltCondExpr4: { auto alt = cond.GetAlt_cond_expr4(); - const bool symmetric = alt.HasBlock3() && IS_TOKEN(Ctx.Settings.Antlr4Parser, alt.GetBlock3().GetToken1().GetId(), SYMMETRIC); + const bool symmetric = alt.HasBlock3() && IS_TOKEN(Ctx_.Settings.Antlr4Parser, alt.GetBlock3().GetToken1().GetId(), SYMMETRIC); const bool negation = alt.HasBlock1(); TNodePtr left = SubExpr(alt.GetRule_eq_subexpr4(), {}); TNodePtr right = SubExpr(alt.GetRule_eq_subexpr6(), tail); @@ -1962,7 +1962,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ const bool oneArgNull = left->IsNull() || right->IsNull(); if (res->IsNull() || bothArgNull || (symmetric && oneArgNull)) { - Ctx.Warning(pos, TIssuesIds::YQL_OPERATION_WILL_RETURN_NULL) + Ctx_.Warning(pos, TIssuesIds::YQL_OPERATION_WILL_RETURN_NULL) << "BETWEEN operation will return NULL here"; } @@ -1985,7 +1985,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ }; if (symmetric) { - Ctx.IncrementMonCounter("sql_features", negation? "NotBetweenSymmetric" : "BetweenSymmetric"); + Ctx_.IncrementMonCounter("sql_features", negation? "NotBetweenSymmetric" : "BetweenSymmetric"); return BuildBinaryOpRaw( pos, negation? "And" : "Or", @@ -1993,7 +1993,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ buildSubexpr(right, left) ); } else { - Ctx.IncrementMonCounter("sql_features", negation? "NotBetween" : "Between"); + Ctx_.IncrementMonCounter("sql_features", negation? "NotBetween" : "Between"); return buildSubexpr(left, right); } } @@ -2003,7 +2003,7 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ return BinOpList(node.GetRule_eq_subexpr1(), getNode, alt.GetBlock1().begin(), alt.GetBlock1().end(), tail); } case TRule_cond_expr::ALT_NOT_SET: - Ctx.IncrementMonCounter("sql_errors", "UnknownConditionExpr"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownConditionExpr"); AltNotImplemented("cond_expr", cond); return nullptr; } @@ -2012,16 +2012,16 @@ TNodePtr TSqlExpression::SubExpr(const TRule_xor_subexpr& node, const TTrailingQ } TNodePtr TSqlExpression::BinOperList(const TString& opName, TVector<TNodePtr>::const_iterator begin, TVector<TNodePtr>::const_iterator end) const { - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); const size_t opCount = end - begin; Y_DEBUG_ABORT_UNLESS(opCount >= 2); if (opCount == 2) { - return BuildBinaryOp(Ctx, pos, opName, *begin, *(begin+1)); + return BuildBinaryOp(Ctx_, pos, opName, *begin, *(begin+1)); } if (opCount == 3) { - return BuildBinaryOp(Ctx, pos, opName, BuildBinaryOp(Ctx, pos, opName, *begin, *(begin+1)), *(begin+2)); + return BuildBinaryOp(Ctx_, pos, opName, BuildBinaryOp(Ctx_, pos, opName, *begin, *(begin+1)), *(begin+2)); } else { auto mid = begin + opCount / 2; - return BuildBinaryOp(Ctx, pos, opName, BinOperList(opName, begin, mid), BinOperList(opName, mid, end)); + return BuildBinaryOp(Ctx_, pos, opName, BinOperList(opName, begin, mid), BinOperList(opName, mid, end)); } } @@ -2043,8 +2043,8 @@ TSqlExpression::TCaseBranch TSqlExpression::ReduceCaseBranches(TVector<TCaseBran } TCaseBranch result; - result.Pred = new TCallNodeImpl(Ctx.Pos(), "Or", CloneContainer(preds)); - result.Value = BuildBuiltinFunc(Ctx, Ctx.Pos(), "If", { left.Pred, left.Value, right.Value }); + result.Pred = new TCallNodeImpl(Ctx_.Pos(), "Or", CloneContainer(preds)); + result.Value = BuildBuiltinFunc(Ctx_, Ctx_.Pos(), "If", { left.Pred, left.Value, right.Value }); return result; } @@ -2054,8 +2054,8 @@ TNodePtr TSqlExpression::BinOper(const TString& opName, const TNode& node, TGetN return SubExpr(node, tail); } // can't have top level smart_parenthesis node if any binary operation is present - MaybeUnnamedSmartParenOnTop = false; - Ctx.IncrementMonCounter("sql_binary_operations", opName); + MaybeUnnamedSmartParenOnTop_ = false; + Ctx_.IncrementMonCounter("sql_binary_operations", opName); const size_t listSize = end - begin; TVector<TNodePtr> nodes; nodes.reserve(1 + listSize); @@ -2068,53 +2068,53 @@ TNodePtr TSqlExpression::BinOper(const TString& opName, const TNode& node, TGetN template <typename TNode, typename TGetNode, typename TIter> TNodePtr TSqlExpression::BinOpList(const TNode& node, TGetNode getNode, TIter begin, TIter end, const TTrailingQuestions& tail) { - MaybeUnnamedSmartParenOnTop = MaybeUnnamedSmartParenOnTop && (begin == end); + MaybeUnnamedSmartParenOnTop_ = MaybeUnnamedSmartParenOnTop_ && (begin == end); TNodePtr partialResult = SubExpr(node, (begin == end) ? tail : TTrailingQuestions{}); while (begin != end) { - Ctx.IncrementMonCounter("sql_features", "BinaryOperation"); + Ctx_.IncrementMonCounter("sql_features", "BinaryOperation"); Token(begin->GetToken1()); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TString opName; auto tokenId = begin->GetToken1().GetId(); - if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, LESS)) { + if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, LESS)) { opName = "<"; - Ctx.IncrementMonCounter("sql_binary_operations", "Less"); - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, LESS_OR_EQ)) { + Ctx_.IncrementMonCounter("sql_binary_operations", "Less"); + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, LESS_OR_EQ)) { opName = "<="; - Ctx.IncrementMonCounter("sql_binary_operations", "LessOrEq"); - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, GREATER)) { + Ctx_.IncrementMonCounter("sql_binary_operations", "LessOrEq"); + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, GREATER)) { opName = ">"; - Ctx.IncrementMonCounter("sql_binary_operations", "Greater"); - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, GREATER_OR_EQ)) { + Ctx_.IncrementMonCounter("sql_binary_operations", "Greater"); + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, GREATER_OR_EQ)) { opName = ">="; - Ctx.IncrementMonCounter("sql_binary_operations", "GreaterOrEq"); - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, PLUS)) { - opName = Ctx.Scoped->PragmaCheckedOps ? "CheckedAdd" : "+MayWarn"; - Ctx.IncrementMonCounter("sql_binary_operations", "Plus"); - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, MINUS)) { - opName = Ctx.Scoped->PragmaCheckedOps ? "CheckedSub" : "-MayWarn"; - Ctx.IncrementMonCounter("sql_binary_operations", "Minus"); - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, ASTERISK)) { - opName = Ctx.Scoped->PragmaCheckedOps ? "CheckedMul" : "*MayWarn"; - Ctx.IncrementMonCounter("sql_binary_operations", "Multiply"); - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, SLASH)) { + Ctx_.IncrementMonCounter("sql_binary_operations", "GreaterOrEq"); + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, PLUS)) { + opName = Ctx_.Scoped->PragmaCheckedOps ? "CheckedAdd" : "+MayWarn"; + Ctx_.IncrementMonCounter("sql_binary_operations", "Plus"); + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, MINUS)) { + opName = Ctx_.Scoped->PragmaCheckedOps ? "CheckedSub" : "-MayWarn"; + Ctx_.IncrementMonCounter("sql_binary_operations", "Minus"); + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, ASTERISK)) { + opName = Ctx_.Scoped->PragmaCheckedOps ? "CheckedMul" : "*MayWarn"; + Ctx_.IncrementMonCounter("sql_binary_operations", "Multiply"); + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, SLASH)) { opName = "/MayWarn"; - Ctx.IncrementMonCounter("sql_binary_operations", "Divide"); - if (!Ctx.Scoped->PragmaClassicDivision && partialResult) { + Ctx_.IncrementMonCounter("sql_binary_operations", "Divide"); + if (!Ctx_.Scoped->PragmaClassicDivision && partialResult) { partialResult = new TCallNodeImpl(pos, "SafeCast", {std::move(partialResult), BuildDataType(pos, "Double")}); - } else if (Ctx.Scoped->PragmaCheckedOps) { + } else if (Ctx_.Scoped->PragmaCheckedOps) { opName = "CheckedDiv"; } - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, PERCENT)) { - opName = Ctx.Scoped->PragmaCheckedOps ? "CheckedMod" : "%MayWarn"; - Ctx.IncrementMonCounter("sql_binary_operations", "Mod"); + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, PERCENT)) { + opName = Ctx_.Scoped->PragmaCheckedOps ? "CheckedMod" : "%MayWarn"; + Ctx_.IncrementMonCounter("sql_binary_operations", "Mod"); } else { - Ctx.IncrementMonCounter("sql_errors", "UnsupportedBinaryOperation"); + Ctx_.IncrementMonCounter("sql_errors", "UnsupportedBinaryOperation"); Error() << "Unsupported binary operation token: " << tokenId; return nullptr; } - partialResult = BuildBinaryOp(Ctx, pos, opName, partialResult, SubExpr(getNode(*begin), (begin + 1 == end) ? tail : TTrailingQuestions{})); + partialResult = BuildBinaryOp(Ctx_, pos, opName, partialResult, SubExpr(getNode(*begin), (begin + 1 == end) ? tail : TTrailingQuestions{})); ++begin; } @@ -2123,82 +2123,82 @@ TNodePtr TSqlExpression::BinOpList(const TNode& node, TGetNode getNode, TIter be template <typename TGetNode, typename TIter> TNodePtr TSqlExpression::BinOpList(const TRule_bit_subexpr& node, TGetNode getNode, TIter begin, TIter end, const TTrailingQuestions& tail) { - MaybeUnnamedSmartParenOnTop = MaybeUnnamedSmartParenOnTop && (begin == end); + MaybeUnnamedSmartParenOnTop_ = MaybeUnnamedSmartParenOnTop_ && (begin == end); TNodePtr partialResult = SubExpr(node, (begin == end) ? tail : TTrailingQuestions{}); while (begin != end) { - Ctx.IncrementMonCounter("sql_features", "BinaryOperation"); + Ctx_.IncrementMonCounter("sql_features", "BinaryOperation"); TString opName; switch (begin->GetBlock1().Alt_case()) { case TRule_neq_subexpr_TBlock2_TBlock1::kAlt1: { Token(begin->GetBlock1().GetAlt1().GetToken1()); auto tokenId = begin->GetBlock1().GetAlt1().GetToken1().GetId(); - if (!IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, SHIFT_LEFT)) { + if (!IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, SHIFT_LEFT)) { Error() << "Unsupported binary operation token: " << tokenId; return {}; } opName = "ShiftLeft"; - Ctx.IncrementMonCounter("sql_binary_operations", "ShiftLeft"); + Ctx_.IncrementMonCounter("sql_binary_operations", "ShiftLeft"); break; } case TRule_neq_subexpr_TBlock2_TBlock1::kAlt2: { opName = "ShiftRight"; - Ctx.IncrementMonCounter("sql_binary_operations", "ShiftRight"); + Ctx_.IncrementMonCounter("sql_binary_operations", "ShiftRight"); break; } case TRule_neq_subexpr_TBlock2_TBlock1::kAlt3: { Token(begin->GetBlock1().GetAlt3().GetToken1()); auto tokenId = begin->GetBlock1().GetAlt3().GetToken1().GetId(); - if (!IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, ROT_LEFT)) { + if (!IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, ROT_LEFT)) { Error() << "Unsupported binary operation token: " << tokenId; return {}; } opName = "RotLeft"; - Ctx.IncrementMonCounter("sql_binary_operations", "RotLeft"); + Ctx_.IncrementMonCounter("sql_binary_operations", "RotLeft"); break; } case TRule_neq_subexpr_TBlock2_TBlock1::kAlt4: { opName = "RotRight"; - Ctx.IncrementMonCounter("sql_binary_operations", "RotRight"); + Ctx_.IncrementMonCounter("sql_binary_operations", "RotRight"); break; } case TRule_neq_subexpr_TBlock2_TBlock1::kAlt5: { Token(begin->GetBlock1().GetAlt5().GetToken1()); auto tokenId = begin->GetBlock1().GetAlt5().GetToken1().GetId(); - if (!IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, AMPERSAND)) { + if (!IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, AMPERSAND)) { Error() << "Unsupported binary operation token: " << tokenId; return {}; } opName = "BitAnd"; - Ctx.IncrementMonCounter("sql_binary_operations", "BitAnd"); + Ctx_.IncrementMonCounter("sql_binary_operations", "BitAnd"); break; } case TRule_neq_subexpr_TBlock2_TBlock1::kAlt6: { Token(begin->GetBlock1().GetAlt6().GetToken1()); auto tokenId = begin->GetBlock1().GetAlt6().GetToken1().GetId(); - if (!IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, PIPE)) { + if (!IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, PIPE)) { Error() << "Unsupported binary operation token: " << tokenId; return {}; } opName = "BitOr"; - Ctx.IncrementMonCounter("sql_binary_operations", "BitOr"); + Ctx_.IncrementMonCounter("sql_binary_operations", "BitOr"); break; } case TRule_neq_subexpr_TBlock2_TBlock1::kAlt7: { Token(begin->GetBlock1().GetAlt7().GetToken1()); auto tokenId = begin->GetBlock1().GetAlt7().GetToken1().GetId(); - if (!IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, CARET)) { + if (!IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, CARET)) { Error() << "Unsupported binary operation token: " << tokenId; return {}; } opName = "BitXor"; - Ctx.IncrementMonCounter("sql_binary_operations", "BitXor"); + Ctx_.IncrementMonCounter("sql_binary_operations", "BitXor"); break; } case TRule_neq_subexpr_TBlock2_TBlock1::ALT_NOT_SET: Y_ABORT("You should change implementation according to grammar changes"); } - partialResult = BuildBinaryOp(Ctx, Ctx.Pos(), opName, partialResult, SubExpr(getNode(*begin), (begin + 1 == end) ? tail : TTrailingQuestions{})); + partialResult = BuildBinaryOp(Ctx_, Ctx_.Pos(), opName, partialResult, SubExpr(getNode(*begin), (begin + 1 == end) ? tail : TTrailingQuestions{})); ++begin; } @@ -2207,67 +2207,67 @@ TNodePtr TSqlExpression::BinOpList(const TRule_bit_subexpr& node, TGetNode getNo template <typename TGetNode, typename TIter> TNodePtr TSqlExpression::BinOpList(const TRule_eq_subexpr& node, TGetNode getNode, TIter begin, TIter end, const TTrailingQuestions& tail) { - MaybeUnnamedSmartParenOnTop = MaybeUnnamedSmartParenOnTop && (begin == end); + MaybeUnnamedSmartParenOnTop_ = MaybeUnnamedSmartParenOnTop_ && (begin == end); TNodePtr partialResult = SubExpr(node, (begin == end) ? tail : TTrailingQuestions{}); while (begin != end) { - Ctx.IncrementMonCounter("sql_features", "BinaryOperation"); + Ctx_.IncrementMonCounter("sql_features", "BinaryOperation"); TString opName; switch (begin->GetBlock1().Alt_case()) { case TRule_cond_expr::TAlt5::TBlock1::TBlock1::kAlt1: { Token(begin->GetBlock1().GetAlt1().GetToken1()); auto tokenId = begin->GetBlock1().GetAlt1().GetToken1().GetId(); - if (!IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, EQUALS)) { + if (!IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, EQUALS)) { Error() << "Unsupported binary operation token: " << tokenId; return {}; } - Ctx.IncrementMonCounter("sql_binary_operations", "Equals"); + Ctx_.IncrementMonCounter("sql_binary_operations", "Equals"); opName = "=="; break; } case TRule_cond_expr::TAlt5::TBlock1::TBlock1::kAlt2: { Token(begin->GetBlock1().GetAlt2().GetToken1()); auto tokenId = begin->GetBlock1().GetAlt2().GetToken1().GetId(); - if (!IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, EQUALS2)) { + if (!IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, EQUALS2)) { Error() << "Unsupported binary operation token: " << tokenId; return {}; } - Ctx.IncrementMonCounter("sql_binary_operations", "Equals2"); + Ctx_.IncrementMonCounter("sql_binary_operations", "Equals2"); opName = "=="; break; } case TRule_cond_expr::TAlt5::TBlock1::TBlock1::kAlt3: { Token(begin->GetBlock1().GetAlt3().GetToken1()); auto tokenId = begin->GetBlock1().GetAlt3().GetToken1().GetId(); - if (!IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, NOT_EQUALS)) { + if (!IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, NOT_EQUALS)) { Error() << "Unsupported binary operation token: " << tokenId; return {}; } - Ctx.IncrementMonCounter("sql_binary_operations", "NotEquals"); + Ctx_.IncrementMonCounter("sql_binary_operations", "NotEquals"); opName = "!="; break; } case TRule_cond_expr::TAlt5::TBlock1::TBlock1::kAlt4: { Token(begin->GetBlock1().GetAlt4().GetToken1()); auto tokenId = begin->GetBlock1().GetAlt4().GetToken1().GetId(); - if (!IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, NOT_EQUALS2)) { + if (!IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, NOT_EQUALS2)) { Error() << "Unsupported binary operation token: " << tokenId; return {}; } - Ctx.IncrementMonCounter("sql_binary_operations", "NotEquals2"); + Ctx_.IncrementMonCounter("sql_binary_operations", "NotEquals2"); opName = "!="; break; } case TRule_cond_expr::TAlt5::TBlock1::TBlock1::kAlt5: { Token(begin->GetBlock1().GetAlt5().GetRule_distinct_from_op1().GetToken1()); opName = begin->GetBlock1().GetAlt5().GetRule_distinct_from_op1().HasBlock2() ? "IsNotDistinctFrom" : "IsDistinctFrom"; - Ctx.IncrementMonCounter("sql_binary_operations", opName); + Ctx_.IncrementMonCounter("sql_binary_operations", opName); break; } case TRule_cond_expr::TAlt5::TBlock1::TBlock1::ALT_NOT_SET: Y_ABORT("You should change implementation according to grammar changes"); } - partialResult = BuildBinaryOp(Ctx, Ctx.Pos(), opName, partialResult, SubExpr(getNode(*begin), (begin + 1 == end) ? tail : TTrailingQuestions{})); + partialResult = BuildBinaryOp(Ctx_, Ctx_.Pos(), opName, partialResult, SubExpr(getNode(*begin), (begin + 1 == end) ? tail : TTrailingQuestions{})); ++begin; } @@ -2275,7 +2275,7 @@ TNodePtr TSqlExpression::BinOpList(const TRule_eq_subexpr& node, TGetNode getNod } TNodePtr TSqlExpression::SqlInExpr(const TRule_in_expr& node, const TTrailingQuestions& tail) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); expr.SetSmartParenthesisMode(TSqlExpression::ESmartParenthesis::InStatement); auto result = expr.UnaryExpr(node.GetRule_in_unary_subexpr1(), tail); return result; @@ -2284,11 +2284,11 @@ TNodePtr TSqlExpression::SqlInExpr(const TRule_in_expr& node, const TTrailingQue TNodePtr TSqlExpression::SmartParenthesis(const TRule_smart_parenthesis& node) { TVector<TNodePtr> exprs; Token(node.GetToken1()); - const TPosition pos(Ctx.Pos()); + const TPosition pos(Ctx_.Pos()); const bool isTuple = node.HasBlock3(); - bool expectTuple = SmartParenthesisMode == ESmartParenthesis::InStatement; + bool expectTuple = SmartParenthesisMode_ == ESmartParenthesis::InStatement; EExpr mode = EExpr::Regular; - if (SmartParenthesisMode == ESmartParenthesis::SqlLambdaParams) { + if (SmartParenthesisMode_ == ESmartParenthesis::SqlLambdaParams) { mode = EExpr::SqlLambdaParams; expectTuple = true; } @@ -2296,7 +2296,7 @@ TNodePtr TSqlExpression::SmartParenthesis(const TRule_smart_parenthesis& node) { return {}; } - bool topLevelGroupBy = MaybeUnnamedSmartParenOnTop && SmartParenthesisMode == ESmartParenthesis::GroupBy; + bool topLevelGroupBy = MaybeUnnamedSmartParenOnTop_ && SmartParenthesisMode_ == ESmartParenthesis::GroupBy; bool hasAliases = false; bool hasUnnamed = false; @@ -2307,8 +2307,8 @@ TNodePtr TSqlExpression::SmartParenthesis(const TRule_smart_parenthesis& node) { hasUnnamed = true; } if (hasAliases && hasUnnamed && !topLevelGroupBy) { - Ctx.IncrementMonCounter("sql_errors", "AnonymousStructMembers"); - Ctx.Error(pos) << "Structure does not allow anonymous members"; + Ctx_.IncrementMonCounter("sql_errors", "AnonymousStructMembers"); + Ctx_.Error(pos) << "Structure does not allow anonymous members"; return nullptr; } } @@ -2317,15 +2317,15 @@ TNodePtr TSqlExpression::SmartParenthesis(const TRule_smart_parenthesis& node) { } if (topLevelGroupBy) { if (isTuple) { - Ctx.IncrementMonCounter("sql_errors", "SimpleTupleInGroupBy"); + Ctx_.IncrementMonCounter("sql_errors", "SimpleTupleInGroupBy"); Token(node.GetBlock3().GetToken1()); - Ctx.Error() << "Unexpected trailing comma in grouping elements list"; + Ctx_.Error() << "Unexpected trailing comma in grouping elements list"; return nullptr; } - Ctx.IncrementMonCounter("sql_features", "ListOfNamedNode"); + Ctx_.IncrementMonCounter("sql_features", "ListOfNamedNode"); return BuildListOfNamedNodes(pos, std::move(exprs)); } - Ctx.IncrementMonCounter("sql_features", hasUnnamed ? "SimpleTuple" : "SimpleStruct"); + Ctx_.IncrementMonCounter("sql_features", hasUnnamed ? "SimpleTuple" : "SimpleStruct"); return (hasUnnamed || expectTuple || exprs.size() == 0) ? BuildTuple(pos, exprs) : BuildStructure(pos, exprs); } diff --git a/yql/essentials/sql/v1/sql_expression.h b/yql/essentials/sql/v1/sql_expression.h index adcf44b11b6..794f5c5db3f 100644 --- a/yql/essentials/sql/v1/sql_expression.h +++ b/yql/essentials/sql/v1/sql_expression.h @@ -25,11 +25,11 @@ public: TNodePtr Build(const TRule_lambda_or_parameter& node); void SetSmartParenthesisMode(ESmartParenthesis mode) { - SmartParenthesisMode = mode; + SmartParenthesisMode_ = mode; } void MarkAsNamed() { - MaybeUnnamedSmartParenOnTop = false; + MaybeUnnamedSmartParenOnTop_ = false; } TMaybe<TExprOrIdent> LiteralExpr(const TRule_literal_value& node); @@ -77,7 +77,7 @@ private: bool SqlLambdaExprBody(TContext& ctx, const TRule_expr& node, TVector<TNodePtr>& exprSeq); TNodePtr KeyExpr(const TRule_key_expr& node) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); return expr.Build(node.GetRule_expr2()); } @@ -124,15 +124,15 @@ private: void UnexpectedQuestionToken(const TTrailingQuestions& tail) { YQL_ENSURE(tail.Count > 0); - Ctx.Error(tail.Pos) << "Unexpected token '?' at the end of expression"; + Ctx_.Error(tail.Pos) << "Unexpected token '?' at the end of expression"; } TNodePtr SmartParenthesis(const TRule_smart_parenthesis& node); - ESmartParenthesis SmartParenthesisMode = ESmartParenthesis::Default; - bool MaybeUnnamedSmartParenOnTop = true; + ESmartParenthesis SmartParenthesisMode_ = ESmartParenthesis::Default; + bool MaybeUnnamedSmartParenOnTop_ = true; - THashMap<TString, TNodePtr> ExprShortcuts; + THashMap<TString, TNodePtr> ExprShortcuts_; }; bool ChangefeedSettingsEntry(const TRule_changefeed_settings_entry& node, TSqlExpression& ctx, TChangefeedSettings& settings, bool alter); diff --git a/yql/essentials/sql/v1/sql_group_by.cpp b/yql/essentials/sql/v1/sql_group_by.cpp index 46ae8ee52a8..348ce2471b8 100644 --- a/yql/essentials/sql/v1/sql_group_by.cpp +++ b/yql/essentials/sql/v1/sql_group_by.cpp @@ -11,19 +11,19 @@ const TString TGroupByClause::AutogenerateNamePrefix = "group"; bool TGroupByClause::Build(const TRule_group_by_clause& node) { // group_by_clause: GROUP COMPACT? BY opt_set_quantifier grouping_element_list (WITH an_id)?; - if (Ctx.CompactGroupBy.Defined()) { - CompactGroupBy = *Ctx.CompactGroupBy; + if (Ctx_.CompactGroupBy.Defined()) { + CompactGroupBy_ = *Ctx_.CompactGroupBy; } else { - CompactGroupBy = node.HasBlock2(); - if (!CompactGroupBy) { - auto hints = Ctx.PullHintForToken(Ctx.TokenPosition(node.GetToken1())); - CompactGroupBy = AnyOf(hints, [](const NSQLTranslation::TSQLHint& hint) { return to_lower(hint.Name) == "compact"; }); + CompactGroupBy_ = node.HasBlock2(); + if (!CompactGroupBy_) { + auto hints = Ctx_.PullHintForToken(Ctx_.TokenPosition(node.GetToken1())); + CompactGroupBy_ = AnyOf(hints, [](const NSQLTranslation::TSQLHint& hint) { return to_lower(hint.Name) == "compact"; }); } } TPosition distinctPos; if (IsDistinctOptSet(node.GetRule_opt_set_quantifier4(), distinctPos)) { - Ctx.Error(distinctPos) << "DISTINCT is not supported in GROUP BY clause yet!"; - Ctx.IncrementMonCounter("sql_errors", "DistinctInGroupByNotSupported"); + Ctx_.Error(distinctPos) << "DISTINCT is not supported in GROUP BY clause yet!"; + Ctx_.IncrementMonCounter("sql_errors", "DistinctInGroupByNotSupported"); return false; } if (!ParseList(node.GetRule_grouping_element_list5(), EGroupByFeatures::Ordinary)) { @@ -32,28 +32,28 @@ bool TGroupByClause::Build(const TRule_group_by_clause& node) { if (node.HasBlock6()) { TString mode = Id(node.GetBlock6().GetRule_an_id2(), *this); - TMaybe<TIssue> normalizeError = NormalizeName(Ctx.Pos(), mode); + TMaybe<TIssue> normalizeError = NormalizeName(Ctx_.Pos(), mode); if (!normalizeError.Empty()) { Error() << normalizeError->GetMessage(); - Ctx.IncrementMonCounter("sql_errors", "NormalizeGroupByModeError"); + Ctx_.IncrementMonCounter("sql_errors", "NormalizeGroupByModeError"); return false; } if (mode == "combine") { - Suffix = "Combine"; + Suffix_ = "Combine"; } else if (mode == "combinestate") { - Suffix = "CombineState"; + Suffix_ = "CombineState"; } else if (mode == "mergestate") { - Suffix = "MergeState"; + Suffix_ = "MergeState"; } else if (mode == "finalize") { - Suffix = "Finalize"; + Suffix_ = "Finalize"; } else if (mode == "mergefinalize") { - Suffix = "MergeFinalize"; + Suffix_ = "MergeFinalize"; } else if (mode == "mergemanyfinalize") { - Suffix = "MergeManyFinalize"; + Suffix_ = "MergeManyFinalize"; } else { - Ctx.Error() << "Unsupported group by mode: " << mode; - Ctx.IncrementMonCounter("sql_errors", "GroupByModeUnknown"); + Ctx_.Error() << "Unsupported group by mode: " << mode; + Ctx_.IncrementMonCounter("sql_errors", "GroupByModeUnknown"); return false; } } @@ -77,46 +77,46 @@ bool TGroupByClause::ParseList(const TRule_grouping_element_list& groupingListNo } void TGroupByClause::SetFeatures(const TString& field) const { - Ctx.IncrementMonCounter(field, "GroupBy"); + Ctx_.IncrementMonCounter(field, "GroupBy"); const auto& features = Features(); if (features.Test(EGroupByFeatures::Ordinary)) { - Ctx.IncrementMonCounter(field, "GroupByOrdinary"); + Ctx_.IncrementMonCounter(field, "GroupByOrdinary"); } if (features.Test(EGroupByFeatures::Expression)) { - Ctx.IncrementMonCounter(field, "GroupByExpression"); + Ctx_.IncrementMonCounter(field, "GroupByExpression"); } if (features.Test(EGroupByFeatures::Rollup)) { - Ctx.IncrementMonCounter(field, "GroupByRollup"); + Ctx_.IncrementMonCounter(field, "GroupByRollup"); } if (features.Test(EGroupByFeatures::Cube)) { - Ctx.IncrementMonCounter(field, "GroupByCube"); + Ctx_.IncrementMonCounter(field, "GroupByCube"); } if (features.Test(EGroupByFeatures::GroupingSet)) { - Ctx.IncrementMonCounter(field, "GroupByGroupingSet"); + Ctx_.IncrementMonCounter(field, "GroupByGroupingSet"); } if (features.Test(EGroupByFeatures::Empty)) { - Ctx.IncrementMonCounter(field, "GroupByEmpty"); + Ctx_.IncrementMonCounter(field, "GroupByEmpty"); } } TVector<TNodePtr>& TGroupByClause::Content() { - return GroupBySet; + return GroupBySet_; } TMap<TString, TNodePtr>& TGroupByClause::Aliases() { - return GroupSetContext->NodeAliases; + return GroupSetContext_->NodeAliases; } TLegacyHoppingWindowSpecPtr TGroupByClause::GetLegacyHoppingWindow() const { - return LegacyHoppingWindowSpec; + return LegacyHoppingWindowSpec_; } bool TGroupByClause::IsCompactGroupBy() const { - return CompactGroupBy; + return CompactGroupBy_; } TString TGroupByClause::GetSuffix() const { - return Suffix; + return Suffix_; } TMaybe<TVector<TNodePtr>> TGroupByClause::MultiplyGroupingSets(const TVector<TNodePtr>& lhs, const TVector<TNodePtr>& rhs) const { @@ -125,7 +125,7 @@ TMaybe<TVector<TNodePtr>> TGroupByClause::MultiplyGroupingSets(const TVector<TNo auto leftPtr = leftNode->ContentListPtr(); if (!leftPtr) { // TODO: shouldn't happen - Ctx.Error() << "Unable to multiply grouping sets"; + Ctx_.Error() << "Unable to multiply grouping sets"; return {}; } for (const auto& rightNode: rhs) { @@ -133,34 +133,34 @@ TMaybe<TVector<TNodePtr>> TGroupByClause::MultiplyGroupingSets(const TVector<TNo auto rightPtr = rightNode->ContentListPtr(); if (!rightPtr) { // TODO: shouldn't happen - Ctx.Error() << "Unable to multiply grouping sets"; + Ctx_.Error() << "Unable to multiply grouping sets"; return {}; } mulItem.insert(mulItem.end(), rightPtr->begin(), rightPtr->end()); - content.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(mulItem))); + content.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(mulItem))); } } return content; } bool TGroupByClause::ResolveGroupByAndGrouping() { - auto listPos = std::find_if(GroupBySet.begin(), GroupBySet.end(), [](const TNodePtr& node) { + auto listPos = std::find_if(GroupBySet_.begin(), GroupBySet_.end(), [](const TNodePtr& node) { return node->ContentListPtr(); }); - if (listPos == GroupBySet.end()) { + if (listPos == GroupBySet_.end()) { return true; } auto curContent = *(*listPos)->ContentListPtr(); - if (listPos != GroupBySet.begin()) { - TVector<TNodePtr> emulate(GroupBySet.begin(), listPos); - TVector<TNodePtr> emulateContent(1, BuildListOfNamedNodes(Ctx.Pos(), std::move(emulate))); + if (listPos != GroupBySet_.begin()) { + TVector<TNodePtr> emulate(GroupBySet_.begin(), listPos); + TVector<TNodePtr> emulateContent(1, BuildListOfNamedNodes(Ctx_.Pos(), std::move(emulate))); auto mult = MultiplyGroupingSets(emulateContent, curContent); if (!mult) { return false; } curContent = *mult; } - for (++listPos; listPos != GroupBySet.end(); ++listPos) { + for (++listPos; listPos != GroupBySet_.end(); ++listPos) { auto newElem = (*listPos)->ContentListPtr(); if (newElem) { auto mult = MultiplyGroupingSets(curContent, *newElem); @@ -170,7 +170,7 @@ bool TGroupByClause::ResolveGroupByAndGrouping() { curContent = *mult; } else { TVector<TNodePtr> emulate(1, *listPos); - TVector<TNodePtr> emulateContent(1, BuildListOfNamedNodes(Ctx.Pos(), std::move(emulate))); + TVector<TNodePtr> emulateContent(1, BuildListOfNamedNodes(Ctx_.Pos(), std::move(emulate))); auto mult = MultiplyGroupingSets(curContent, emulateContent); if (!mult) { return false; @@ -178,8 +178,8 @@ bool TGroupByClause::ResolveGroupByAndGrouping() { curContent = *mult; } } - TVector<TNodePtr> result(1, BuildListOfNamedNodes(Ctx.Pos(), std::move(curContent))); - std::swap(result, GroupBySet); + TVector<TNodePtr> result(1, BuildListOfNamedNodes(Ctx_.Pos(), std::move(curContent))); + std::swap(result, GroupBySet_); return true; } @@ -194,7 +194,7 @@ bool TGroupByClause::GroupingElement(const TRule_grouping_element& node, EGroupB Features().Set(EGroupByFeatures::Ordinary); break; case TRule_grouping_element::kAltGroupingElement2: { - TGroupByClause subClause(Ctx, Mode, GroupSetContext); + TGroupByClause subClause(Ctx_, Mode_, GroupSetContext_); if (!subClause.OrdinaryGroupingSetList(node.GetAlt_grouping_element2().GetRule_rollup_list1().GetRule_ordinary_grouping_set_list3(), EGroupByFeatures::Rollup)) { @@ -204,24 +204,24 @@ bool TGroupByClause::GroupingElement(const TRule_grouping_element& node, EGroupB TVector<TNodePtr> collection; for (auto limit = content.end(), begin = content.begin(); limit != begin; --limit) { TVector<TNodePtr> grouping(begin, limit); - collection.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(grouping))); + collection.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(grouping))); } - collection.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(emptyContent))); - GroupBySet.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(collection))); - Ctx.IncrementMonCounter("sql_features", TStringBuilder() << "GroupByRollup" << content.size()); + collection.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(emptyContent))); + GroupBySet_.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(collection))); + Ctx_.IncrementMonCounter("sql_features", TStringBuilder() << "GroupByRollup" << content.size()); Features().Set(EGroupByFeatures::Rollup); break; } case TRule_grouping_element::kAltGroupingElement3: { - TGroupByClause subClause(Ctx, Mode, GroupSetContext); + TGroupByClause subClause(Ctx_, Mode_, GroupSetContext_); if (!subClause.OrdinaryGroupingSetList(node.GetAlt_grouping_element3().GetRule_cube_list1().GetRule_ordinary_grouping_set_list3(), EGroupByFeatures::Cube)) { return false; } auto& content = subClause.Content(); - if (content.size() > Ctx.PragmaGroupByCubeLimit) { - Ctx.Error() << "GROUP BY CUBE is allowed only for " << Ctx.PragmaGroupByCubeLimit << " columns, but you use " << content.size(); + if (content.size() > Ctx_.PragmaGroupByCubeLimit) { + Ctx_.Error() << "GROUP BY CUBE is allowed only for " << Ctx_.PragmaGroupByCubeLimit << " columns, but you use " << content.size(); return false; } TVector<TNodePtr> collection; @@ -232,17 +232,17 @@ bool TGroupByClause::GroupingElement(const TRule_grouping_element& node, EGroupB grouping.push_back(content[content.size() - index - 1]); } } - collection.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(grouping))); + collection.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(grouping))); } - collection.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(emptyContent))); - GroupBySet.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(collection))); - Ctx.IncrementMonCounter("sql_features", TStringBuilder() << "GroupByCube" << content.size()); + collection.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(emptyContent))); + GroupBySet_.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(collection))); + Ctx_.IncrementMonCounter("sql_features", TStringBuilder() << "GroupByCube" << content.size()); Features().Set(EGroupByFeatures::Cube); break; } case TRule_grouping_element::kAltGroupingElement4: { auto listNode = node.GetAlt_grouping_element4().GetRule_grouping_sets_specification1().GetRule_grouping_element_list4(); - TGroupByClause subClause(Ctx, Mode, GroupSetContext); + TGroupByClause subClause(Ctx_, Mode_, GroupSetContext_); if (!subClause.ParseList(listNode, EGroupByFeatures::GroupingSet)) { return false; } @@ -261,10 +261,10 @@ bool TGroupByClause::GroupingElement(const TRule_grouping_element& node, EGroupB } } else { TVector<TNodePtr> elemList(1, std::move(elem)); - collection.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(elemList))); + collection.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(elemList))); } } - GroupBySet.push_back(BuildListOfNamedNodes(Ctx.Pos(), std::move(collection))); + GroupBySet_.push_back(BuildListOfNamedNodes(Ctx_.Pos(), std::move(collection))); Features().Set(EGroupByFeatures::GroupingSet); break; } @@ -294,7 +294,7 @@ void TGroupByClause::FeedCollection(const TNodePtr& elem, TVector<TNodePtr>& col bool TGroupByClause::OrdinaryGroupingSet(const TRule_ordinary_grouping_set& node, EGroupByFeatures featureContext) { TNodePtr namedExprNode; { - TColumnRefScope scope(Ctx, EColumnRefState::Allow); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); namedExprNode = NamedExpr(node.GetRule_named_expr1(), EExpr::GroupBy); } if (!namedExprNode) { @@ -304,8 +304,8 @@ bool TGroupByClause::OrdinaryGroupingSet(const TRule_ordinary_grouping_set& node auto contentPtr = namedExprNode->ContentListPtr(); if (contentPtr) { if (nodeLabel && (contentPtr->size() != 1 || contentPtr->front()->GetLabel())) { - Ctx.Error() << "Unable to use aliases for list of named expressions"; - Ctx.IncrementMonCounter("sql_errors", "GroupByAliasForListOfExpressions"); + Ctx_.Error() << "Unable to use aliases for list of named expressions"; + Ctx_.IncrementMonCounter("sql_errors", "GroupByAliasForListOfExpressions"); return false; } for (auto& content: *contentPtr) { @@ -345,7 +345,7 @@ bool TGroupByClause::OrdinaryGroupingSet(const TRule_ordinary_grouping_set& node namedExprNode = BuildColumn(namedExprNode->GetPos(), nodeLabel); } } - GroupBySet.emplace_back(std::move(namedExprNode)); + GroupBySet_.emplace_back(std::move(namedExprNode)); return true; } @@ -362,21 +362,21 @@ bool TGroupByClause::OrdinaryGroupingSetList(const TRule_ordinary_grouping_set_l } bool TGroupByClause::HoppingWindow(const TRule_hopping_window_specification& node) { - if (LegacyHoppingWindowSpec) { - Ctx.Error() << "Duplicate hopping window specification."; + if (LegacyHoppingWindowSpec_) { + Ctx_.Error() << "Duplicate hopping window specification."; return false; } - LegacyHoppingWindowSpec = new TLegacyHoppingWindowSpec; + LegacyHoppingWindowSpec_ = new TLegacyHoppingWindowSpec; { - TColumnRefScope scope(Ctx, EColumnRefState::Allow); - TSqlExpression expr(Ctx, Mode); - LegacyHoppingWindowSpec->TimeExtractor = expr.Build(node.GetRule_expr3()); - if (!LegacyHoppingWindowSpec->TimeExtractor) { + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); + TSqlExpression expr(Ctx_, Mode_); + LegacyHoppingWindowSpec_->TimeExtractor = expr.Build(node.GetRule_expr3()); + if (!LegacyHoppingWindowSpec_->TimeExtractor) { return false; } } auto processIntervalParam = [&] (const TRule_expr& rule) -> TNodePtr { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); auto node = expr.Build(rule); if (!node) { return nullptr; @@ -384,45 +384,45 @@ bool TGroupByClause::HoppingWindow(const TRule_hopping_window_specification& nod auto literal = node->GetLiteral("String"); if (!literal) { - return new TAstListNodeImpl(Ctx.Pos(), { - new TAstAtomNodeImpl(Ctx.Pos(), "EvaluateExpr", TNodeFlags::Default), + return new TAstListNodeImpl(Ctx_.Pos(), { + new TAstAtomNodeImpl(Ctx_.Pos(), "EvaluateExpr", TNodeFlags::Default), node }); } const auto out = NKikimr::NMiniKQL::ValueFromString(NKikimr::NUdf::EDataSlot::Interval, *literal); if (!out) { - Ctx.Error(node->GetPos()) << "Expected interval in ISO 8601 format"; + Ctx_.Error(node->GetPos()) << "Expected interval in ISO 8601 format"; return nullptr; } if ('T' == literal->back()) { - Ctx.Error(node->GetPos()) << "Time prefix 'T' at end of interval constant. The designator 'T' shall be absent if all of the time components are absent."; + Ctx_.Error(node->GetPos()) << "Time prefix 'T' at end of interval constant. The designator 'T' shall be absent if all of the time components are absent."; return nullptr; } - return new TAstListNodeImpl(Ctx.Pos(), { - new TAstAtomNodeImpl(Ctx.Pos(), "Interval", TNodeFlags::Default), - new TAstListNodeImpl(Ctx.Pos(), { - new TAstAtomNodeImpl(Ctx.Pos(), "quote", TNodeFlags::Default), - new TAstAtomNodeImpl(Ctx.Pos(), ToString(out.Get<i64>()), TNodeFlags::Default) + return new TAstListNodeImpl(Ctx_.Pos(), { + new TAstAtomNodeImpl(Ctx_.Pos(), "Interval", TNodeFlags::Default), + new TAstListNodeImpl(Ctx_.Pos(), { + new TAstAtomNodeImpl(Ctx_.Pos(), "quote", TNodeFlags::Default), + new TAstAtomNodeImpl(Ctx_.Pos(), ToString(out.Get<i64>()), TNodeFlags::Default) }) }); }; - LegacyHoppingWindowSpec->Hop = processIntervalParam(node.GetRule_expr5()); - if (!LegacyHoppingWindowSpec->Hop) { + LegacyHoppingWindowSpec_->Hop = processIntervalParam(node.GetRule_expr5()); + if (!LegacyHoppingWindowSpec_->Hop) { return false; } - LegacyHoppingWindowSpec->Interval = processIntervalParam(node.GetRule_expr7()); - if (!LegacyHoppingWindowSpec->Interval) { + LegacyHoppingWindowSpec_->Interval = processIntervalParam(node.GetRule_expr7()); + if (!LegacyHoppingWindowSpec_->Interval) { return false; } - LegacyHoppingWindowSpec->Delay = processIntervalParam(node.GetRule_expr9()); - if (!LegacyHoppingWindowSpec->Delay) { + LegacyHoppingWindowSpec_->Delay = processIntervalParam(node.GetRule_expr9()); + if (!LegacyHoppingWindowSpec_->Delay) { return false; } - LegacyHoppingWindowSpec->DataWatermarks = Ctx.PragmaDataWatermarks; + LegacyHoppingWindowSpec_->DataWatermarks = Ctx_.PragmaDataWatermarks; return true; } @@ -445,23 +445,23 @@ bool TGroupByClause::AllowUnnamed(TPosition pos, EGroupByFeatures featureContext YQL_ENSURE(false, "Unknown feature"); } - Ctx.Error(pos) << "Unnamed expressions are not supported in " << feature << ". Please use '<expr> AS <name>'."; - Ctx.IncrementMonCounter("sql_errors", "GroupBySetNoAliasOrColumn"); + Ctx_.Error(pos) << "Unnamed expressions are not supported in " << feature << ". Please use '<expr> AS <name>'."; + Ctx_.IncrementMonCounter("sql_errors", "GroupBySetNoAliasOrColumn"); return false; } TGroupByClause::TGroupingSetFeatures& TGroupByClause::Features() { - return GroupSetContext->GroupFeatures; + return GroupSetContext_->GroupFeatures; } const TGroupByClause::TGroupingSetFeatures& TGroupByClause::Features() const { - return GroupSetContext->GroupFeatures; + return GroupSetContext_->GroupFeatures; } bool TGroupByClause::AddAlias(const TString& label, const TNodePtr& node) { if (Aliases().contains(label)) { - Ctx.Error() << "Duplicated aliases not allowed"; - Ctx.IncrementMonCounter("sql_errors", "GroupByDuplicateAliases"); + Ctx_.Error() << "Duplicated aliases not allowed"; + Ctx_.IncrementMonCounter("sql_errors", "GroupByDuplicateAliases"); return false; } Aliases().emplace(label, node); @@ -469,7 +469,7 @@ bool TGroupByClause::AddAlias(const TString& label, const TNodePtr& node) { } TString TGroupByClause::GenerateGroupByExprName() { - return TStringBuilder() << AutogenerateNamePrefix << GroupSetContext->UnnamedCount++; + return TStringBuilder() << AutogenerateNamePrefix << GroupSetContext_->UnnamedCount++; } } // namespace NSQLTranslationV1 diff --git a/yql/essentials/sql/v1/sql_group_by.h b/yql/essentials/sql/v1/sql_group_by.h index 83e602596c6..4eda3447d32 100644 --- a/yql/essentials/sql/v1/sql_group_by.h +++ b/yql/essentials/sql/v1/sql_group_by.h @@ -31,8 +31,8 @@ class TGroupByClause: public TSqlTranslation { public: TGroupByClause(TContext& ctx, NSQLTranslation::ESqlMode mode, TGroupByClauseCtx::TPtr groupSetContext = {}) : TSqlTranslation(ctx, mode) - , GroupSetContext(groupSetContext ? groupSetContext : TGroupByClauseCtx::TPtr(new TGroupByClauseCtx())) - , CompactGroupBy(false) + , GroupSetContext_(groupSetContext ? groupSetContext : TGroupByClauseCtx::TPtr(new TGroupByClauseCtx())) + , CompactGroupBy_(false) {} bool Build(const TRule_group_by_clause& node); @@ -62,12 +62,12 @@ private: TString GenerateGroupByExprName(); bool IsAutogenerated(const TString* name) const; - TVector<TNodePtr> GroupBySet; - TGroupByClauseCtx::TPtr GroupSetContext; - TLegacyHoppingWindowSpecPtr LegacyHoppingWindowSpec; // stream queries + TVector<TNodePtr> GroupBySet_; + TGroupByClauseCtx::TPtr GroupSetContext_; + TLegacyHoppingWindowSpecPtr LegacyHoppingWindowSpec_; // stream queries static const TString AutogenerateNamePrefix; - bool CompactGroupBy; - TString Suffix; + bool CompactGroupBy_; + TString Suffix_; }; } // namespace NSQLTranslationV1 diff --git a/yql/essentials/sql/v1/sql_into_tables.cpp b/yql/essentials/sql/v1/sql_into_tables.cpp index ff7dd271cd3..c4b4fd0c21a 100644 --- a/yql/essentials/sql/v1/sql_into_tables.cpp +++ b/yql/essentials/sql/v1/sql_into_tables.cpp @@ -79,15 +79,15 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { modeStrings.push_back("Into"); userModeStrings.push_back("INTO"); - SqlIntoModeStr = JoinRange("", modeStrings.begin(), modeStrings.end()); - SqlIntoUserModeStr = JoinRange(" ", userModeStrings.begin(), userModeStrings.end()); + SqlIntoModeStr_ = JoinRange("", modeStrings.begin(), modeStrings.end()); + SqlIntoUserModeStr_ = JoinRange(" ", userModeStrings.begin(), userModeStrings.end()); const auto& intoTableRef = node.GetRule_into_simple_table_ref3(); const auto& tableRef = intoTableRef.GetRule_simple_table_ref1(); const auto& tableRefCore = tableRef.GetRule_simple_table_ref_core1(); - auto service = Ctx.Scoped->CurrService; - auto cluster = Ctx.Scoped->CurrCluster; + auto service = Ctx_.Scoped->CurrService; + auto cluster = Ctx_.Scoped->CurrCluster; std::pair<bool, TDeferredAtom> nameOrAt; bool isBinding = false; switch (tableRefCore.Alt_case()) { @@ -103,12 +103,12 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { } if (!isBinding && cluster.Empty()) { - Ctx.Error() << "No cluster name given and no default cluster is selected"; + Ctx_.Error() << "No cluster name given and no default cluster is selected"; return nullptr; } auto id = Id(tableRefCore.GetAlt_simple_table_ref_core1().GetRule_object_ref1().GetRule_id_or_at2(), *this); - nameOrAt = std::make_pair(id.first, TDeferredAtom(Ctx.Pos(), id.second)); + nameOrAt = std::make_pair(id.first, TDeferredAtom(Ctx_.Pos(), id.second)); break; } case TRule_simple_table_ref_core::AltCase::kAltSimpleTableRefCore2: { @@ -122,14 +122,14 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { return nullptr; } - named->SetRefPos(Ctx.Pos()); + named->SetRefPos(Ctx_.Pos()); if (cluster.Empty()) { - Ctx.Error() << "No cluster name given and no default cluster is selected"; + Ctx_.Error() << "No cluster name given and no default cluster is selected"; return nullptr; } TDeferredAtom table; - MakeTableFromExpression(Ctx.Pos(), Ctx, named, table); + MakeTableFromExpression(Ctx_.Pos(), Ctx_, named, table); nameOrAt = std::make_pair(at, table); break; } @@ -142,7 +142,7 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { if (tableRef.HasBlock2()) { auto hints = TableHintsImpl(tableRef.GetBlock2().GetRule_table_hints1(), service); if (!hints) { - Ctx.Error() << "Failed to parse table hints"; + Ctx_.Error() << "Failed to parse table hints"; return nullptr; } for (const auto& hint : *hints) { @@ -157,7 +157,7 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { TVector<TString> eraseColumns; if (intoTableRef.HasBlock2()) { if (service != StatProviderName && service != UnknownProviderName) { - Ctx.Error() << "ERASE BY is unsupported for " << service; + Ctx_.Error() << "ERASE BY is unsupported for " << service; return nullptr; } @@ -167,19 +167,19 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { } if (withTruncate) { - if (SqlIntoModeStr != "InsertInto") { - Error() << "Unable " << SqlIntoUserModeStr << " with truncate mode"; + if (SqlIntoModeStr_ != "InsertInto") { + Error() << "Unable " << SqlIntoUserModeStr_ << " with truncate mode"; return nullptr; } - SqlIntoModeStr += "WithTruncate"; - SqlIntoUserModeStr += " ... WITH TRUNCATE"; + SqlIntoModeStr_ += "WithTruncate"; + SqlIntoUserModeStr_ += " ... WITH TRUNCATE"; } - const auto iterMode = str2Mode.find(SqlIntoModeStr); - YQL_ENSURE(iterMode != str2Mode.end(), "Invalid sql write mode string: " << SqlIntoModeStr); + const auto iterMode = str2Mode.find(SqlIntoModeStr_); + YQL_ENSURE(iterMode != str2Mode.end(), "Invalid sql write mode string: " << SqlIntoModeStr_); const auto SqlIntoMode = iterMode->second; - TPosition pos(Ctx.Pos()); - TTableRef table(Ctx.MakeName("table"), service, cluster, nullptr); + TPosition pos(Ctx_.Pos()); + TTableRef table(Ctx_.MakeName("table"), service, cluster, nullptr); if (isBinding) { const TString* binding = nameOrAt.second.GetLiteral(); YQL_ENSURE(binding); @@ -191,16 +191,16 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { table.Keys = BuildTableKey(pos, service, cluster, nameOrAt.second, {nameOrAt.first ? "@" : ""}); } - Ctx.IncrementMonCounter("sql_insert_clusters", table.Cluster.GetLiteral() ? *table.Cluster.GetLiteral() : "unknown"); + Ctx_.IncrementMonCounter("sql_insert_clusters", table.Cluster.GetLiteral() ? *table.Cluster.GetLiteral() : "unknown"); - auto values = TSqlIntoValues(Ctx, Mode).Build(node.GetRule_into_values_source4(), SqlIntoUserModeStr); + auto values = TSqlIntoValues(Ctx_, Mode_).Build(node.GetRule_into_values_source4(), SqlIntoUserModeStr_); if (!values) { return nullptr; } if (!ValidateServiceName(node, table, SqlIntoMode, GetPos(modeTokens[0]))) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", SqlIntoModeStr); + Ctx_.IncrementMonCounter("sql_features", SqlIntoModeStr_); auto options = BuildIntoTableOptions(pos, eraseColumns, tableHints); @@ -208,7 +208,7 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) { options = options->L(options, ReturningList(node.GetBlock5().GetRule_returning_columns_list1())); } - return BuildWriteColumns(pos, Ctx.Scoped, table, + return BuildWriteColumns(pos, Ctx_.Scoped, table, ToWriteColumnsMode(SqlIntoMode), std::move(values), options); } @@ -232,34 +232,34 @@ bool TSqlIntoTable::ValidateServiceName(const TRule_into_table_stmt& node, const mode == ESQLWriteColumnMode::InsertOrRevertInto || mode == ESQLWriteColumnMode::UpsertInto && !isStat) { - Ctx.Error(pos) << SqlIntoUserModeStr << " is not supported for " << serviceName << " tables"; - Ctx.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr << "UnsupportedFor" << serviceName); + Ctx_.Error(pos) << SqlIntoUserModeStr_ << " is not supported for " << serviceName << " tables"; + Ctx_.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr_ << "UnsupportedFor" << serviceName); return false; } } if (isMapReduce) { if (mode == ESQLWriteColumnMode::ReplaceInto) { - Ctx.Error(pos) << "Meaning of REPLACE INTO has been changed, now you should use INSERT INTO <table> WITH TRUNCATE ... for " << serviceName; - Ctx.IncrementMonCounter("sql_errors", "ReplaceIntoConflictUsage"); + Ctx_.Error(pos) << "Meaning of REPLACE INTO has been changed, now you should use INSERT INTO <table> WITH TRUNCATE ... for " << serviceName; + Ctx_.IncrementMonCounter("sql_errors", "ReplaceIntoConflictUsage"); return false; } } else if (isKikimr) { if (mode == ESQLWriteColumnMode::InsertIntoWithTruncate) { - Ctx.Error(pos) << "INSERT INTO WITH TRUNCATE is not supported for " << serviceName << " tables"; - Ctx.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr << "UnsupportedFor" << serviceName); + Ctx_.Error(pos) << "INSERT INTO WITH TRUNCATE is not supported for " << serviceName << " tables"; + Ctx_.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr_ << "UnsupportedFor" << serviceName); return false; } } else if (isRtmr) { if (mode != ESQLWriteColumnMode::InsertInto) { - Ctx.Error(pos) << SqlIntoUserModeStr << " is unsupported for " << serviceName; - Ctx.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr << "UnsupportedFor" << serviceName); + Ctx_.Error(pos) << SqlIntoUserModeStr_ << " is unsupported for " << serviceName; + Ctx_.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr_ << "UnsupportedFor" << serviceName); return false; } } else if (isStat) { if (mode != ESQLWriteColumnMode::UpsertInto) { - Ctx.Error(pos) << SqlIntoUserModeStr << " is unsupported for " << serviceName; - Ctx.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr << "UnsupportedFor" << serviceName); + Ctx_.Error(pos) << SqlIntoUserModeStr_ << " is unsupported for " << serviceName; + Ctx_.IncrementMonCounter("sql_errors", TStringBuilder() << SqlIntoUserModeStr_ << "UnsupportedFor" << serviceName); return false; } } diff --git a/yql/essentials/sql/v1/sql_into_tables.h b/yql/essentials/sql/v1/sql_into_tables.h index c66bcfab958..03cfc9d994d 100644 --- a/yql/essentials/sql/v1/sql_into_tables.h +++ b/yql/essentials/sql/v1/sql_into_tables.h @@ -22,8 +22,8 @@ private: bool ValidateServiceName(const TRule_into_table_stmt& node, const TTableRef& table, ESQLWriteColumnMode mode, const TPosition& pos); - TString SqlIntoModeStr; - TString SqlIntoUserModeStr; + TString SqlIntoModeStr_; + TString SqlIntoUserModeStr_; }; } // namespace NSQLTranslationV1 diff --git a/yql/essentials/sql/v1/sql_match_recognize.cpp b/yql/essentials/sql/v1/sql_match_recognize.cpp index 6fcd56f4d6e..9591b468ac5 100644 --- a/yql/essentials/sql/v1/sql_match_recognize.cpp +++ b/yql/essentials/sql/v1/sql_match_recognize.cpp @@ -11,8 +11,8 @@ TSqlMatchRecognizeClause::TSqlMatchRecognizeClause(TContext& ctx, NSQLTranslatio TMatchRecognizeBuilderPtr TSqlMatchRecognizeClause::CreateBuilder(const NSQLv1Generated::TRule_row_pattern_recognition_clause &matchRecognizeClause) { auto pos = GetPos(matchRecognizeClause.GetToken1()); - if (!Ctx.FeatureR010) { - Ctx.Error(pos, TIssuesIds::CORE) << "Unexpected MATCH_RECOGNIZE"; + if (!Ctx_.FeatureR010) { + Ctx_.Error(pos, TIssuesIds::CORE) << "Unexpected MATCH_RECOGNIZE"; return {}; } @@ -52,12 +52,12 @@ TMatchRecognizeBuilderPtr TSqlMatchRecognizeClause::CreateBuilder(const NSQLv1Ge if (commonSyntax.HasBlock2()) { const auto& initialOrSeek = commonSyntax.GetBlock2().GetRule_row_pattern_initial_or_seek1(); - Ctx.Error(GetPos(initialOrSeek.GetToken1())) << "InitialOrSeek subclause is not allowed in FROM clause"; + Ctx_.Error(GetPos(initialOrSeek.GetToken1())) << "InitialOrSeek subclause is not allowed in FROM clause"; return {}; } - PatternVarNames.clear(); - PatternVars = BuildList(pos); + PatternVarNames_.clear(); + PatternVars_ = BuildList(pos); auto pattern = ParsePattern(pos, commonSyntax.GetRule_row_pattern5(), 0, true); if (!pattern) { return {}; @@ -85,8 +85,8 @@ TMatchRecognizeBuilderPtr TSqlMatchRecognizeClause::CreateBuilder(const NSQLv1Ge auto definitions = ParseDefinitions(commonSyntax.GetRule_row_pattern_definition_list9()); for (const auto& [callable, name]: definitions) { - if (!PatternVarNames.contains(name)) { - Ctx.Error(callable->GetPos()) << "ROW PATTERN VARIABLE " << name << " is defined, but not mentioned in the PATTERN"; + if (!PatternVarNames_.contains(name)) { + Ctx_.Error(callable->GetPos()) << "ROW PATTERN VARIABLE " << name << " is defined, but not mentioned in the PATTERN"; return {}; } } @@ -100,7 +100,7 @@ TMatchRecognizeBuilderPtr TSqlMatchRecognizeClause::CreateBuilder(const NSQLv1Ge std::move(rowsPerMatch), std::move(skipTo), std::move(pattern), - std::move(PatternVars), + std::move(PatternVars_), std::move(*subset), std::move(definitions) ); @@ -113,7 +113,7 @@ std::tuple<TNodePtr, TNodePtr> TSqlMatchRecognizeClause::ParsePartitionBy(TPosit if (!node) { return {partitionKeySelector, partitionColumns}; } - TColumnRefScope scope(Ctx, EColumnRefState::Allow); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); TVector<TNodePtr> partitionExprs; if (!NamedExprList(node->GetRule_named_expr_list4(), partitionExprs)) { return {partitionKeySelector, partitionColumns}; @@ -146,8 +146,8 @@ TMaybe<TVector<TSortSpecificationPtr>> TSqlMatchRecognizeClause::ParseOrderBy(co } TNamedFunction TSqlMatchRecognizeClause::ParseOneMeasure(const TRule_row_pattern_measure_definition& node) { - TColumnRefScope scope(Ctx, EColumnRefState::MatchRecognizeMeasures); - auto callable = TSqlExpression(Ctx, Mode).Build(node.GetRule_expr1()); + TColumnRefScope scope(Ctx_, EColumnRefState::MatchRecognizeMeasures); + auto callable = TSqlExpression(Ctx_, Mode_).Build(node.GetRule_expr1()); auto measureName = Id(node.GetRule_an_id3(), *this); // Each measure must be a lambda, that accepts 2 args: // - List<InputTableColumns + _yql_Classifier, _yql_MatchNumber> @@ -213,8 +213,8 @@ TNodePtr TSqlMatchRecognizeClause::ParseAfterMatchSkipTo(TPosition pos, const TR const auto& identifier = skipTo.GetRule_row_pattern_skip_to_variable_name4().GetRule_row_pattern_variable_name1().GetRule_identifier1(); auto var = identifier.GetToken1().GetValue(); varPos = GetPos(identifier.GetToken1()); - if (!PatternVarNames.contains(var)) { - Ctx.Error(varPos) << "Unknown pattern variable in AFTER MATCH SKIP TO FIRST"; + if (!PatternVarNames_.contains(var)) { + Ctx_.Error(varPos) << "Unknown pattern variable in AFTER MATCH SKIP TO FIRST"; return {}; } return NYql::NMatchRecognize::TAfterMatchSkipTo{NYql::NMatchRecognize::EAfterMatchSkipTo::ToFirst, std::move(var)}; @@ -225,8 +225,8 @@ TNodePtr TSqlMatchRecognizeClause::ParseAfterMatchSkipTo(TPosition pos, const TR const auto& identifier = skipTo.GetRule_row_pattern_skip_to_variable_name4().GetRule_row_pattern_variable_name1().GetRule_identifier1(); auto var = identifier.GetToken1().GetValue(); varPos = GetPos(identifier.GetToken1()); - if (!PatternVarNames.contains(var)) { - Ctx.Error(varPos) << "Unknown pattern variable in AFTER MATCH SKIP TO LAST"; + if (!PatternVarNames_.contains(var)) { + Ctx_.Error(varPos) << "Unknown pattern variable in AFTER MATCH SKIP TO LAST"; return {}; } return NYql::NMatchRecognize::TAfterMatchSkipTo{NYql::NMatchRecognize::EAfterMatchSkipTo::ToLast, std::move(var)}; @@ -237,8 +237,8 @@ TNodePtr TSqlMatchRecognizeClause::ParseAfterMatchSkipTo(TPosition pos, const TR const auto& identifier = skipTo.GetRule_row_pattern_skip_to_variable_name3().GetRule_row_pattern_variable_name1().GetRule_identifier1(); auto var = identifier.GetToken1().GetValue(); varPos = GetPos(identifier.GetToken1()); - if (!PatternVarNames.contains(var)) { - Ctx.Error(varPos) << "Unknown pattern variable in AFTER MATCH SKIP TO"; + if (!PatternVarNames_.contains(var)) { + Ctx_.Error(varPos) << "Unknown pattern variable in AFTER MATCH SKIP TO"; return {}; } return NYql::NMatchRecognize::TAfterMatchSkipTo{NYql::NMatchRecognize::EAfterMatchSkipTo::To, std::move(var)}; @@ -264,7 +264,7 @@ TNodePtr TSqlMatchRecognizeClause::BuildPatternFactor(TPosition pos, TNodePtr pr TNodePtr TSqlMatchRecognizeClause::ParsePatternFactor(TPosition pos, const TRule_row_pattern_factor& node, size_t nestingLevel, bool output) { if (nestingLevel > MaxPatternNesting) { - Ctx.Error(pos) << "To big nesting level in the pattern"; + Ctx_.Error(pos) << "To big nesting level in the pattern"; return {}; } auto primary = [&]() -> TNodePtr { @@ -275,8 +275,8 @@ TNodePtr TSqlMatchRecognizeClause::ParsePatternFactor(TPosition pos, const TRule const auto& identifier = primary.GetRule_row_pattern_primary_variable_name1().GetRule_row_pattern_variable_name1().GetRule_identifier1(); const auto varName = Id(identifier, *this); const auto var = BuildQuotedAtom(GetPos(identifier.GetToken1()), varName); - if (PatternVarNames.insert(varName).second) { - PatternVars->Add(var); + if (PatternVarNames_.insert(varName).second) { + PatternVars_->Add(var); } return var; } @@ -285,8 +285,8 @@ TNodePtr TSqlMatchRecognizeClause::ParsePatternFactor(TPosition pos, const TRule const auto& token = primary.GetToken1(); const auto varName = token.GetValue(); const auto var = BuildQuotedAtom(GetPos(token), varName); - if (PatternVarNames.insert(varName).second) { - PatternVars->Add(var); + if (PatternVarNames_.insert(varName).second) { + PatternVars_->Add(var); } return var; } @@ -295,8 +295,8 @@ TNodePtr TSqlMatchRecognizeClause::ParsePatternFactor(TPosition pos, const TRule const auto& token = primary.GetToken1(); const auto varName = token.GetValue(); const auto var = BuildQuotedAtom(GetPos(token), varName); - if (PatternVarNames.insert(varName).second) { - PatternVars->Add(var); + if (PatternVarNames_.insert(varName).second) { + PatternVars_->Add(var); } return var; } @@ -318,7 +318,7 @@ TNodePtr TSqlMatchRecognizeClause::ParsePatternFactor(TPosition pos, const TRule items.push_back(ParsePattern(pos, p.GetRule_row_pattern2(), nestingLevel + 1, output)); } if (items.size() > MaxPermutedItems) { - Ctx.Error(GetPos(primary.GetRule_row_pattern_permute1().GetToken1())) << "Too many items in permute"; + Ctx_.Error(GetPos(primary.GetRule_row_pattern_permute1().GetToken1())) << "Too many items in permute"; return {}; } std::vector<size_t> indexes(items.size()); @@ -439,16 +439,16 @@ TMaybe<TNodePtr> TSqlMatchRecognizeClause::ParseSubset(TPosition pos, const TRul } pos = GetPos(node->GetToken1()); // TODO https://st.yandex-team.ru/YQL-16225 - Ctx.Error(pos) << "SUBSET is not implemented yet"; + Ctx_.Error(pos) << "SUBSET is not implemented yet"; return {}; } TNamedFunction TSqlMatchRecognizeClause::ParseOneDefinition(const TRule_row_pattern_definition& node) { const auto& identifier = node.GetRule_row_pattern_definition_variable_name1().GetRule_row_pattern_variable_name1().GetRule_identifier1(); auto defineName = Id(identifier, *this); - TColumnRefScope scope(Ctx, EColumnRefState::MatchRecognizeDefine, true, defineName); + TColumnRefScope scope(Ctx_, EColumnRefState::MatchRecognizeDefine, true, defineName); const auto& searchCondition = node.GetRule_row_pattern_definition_search_condition3().GetRule_search_condition1().GetRule_expr1(); - auto callable = TSqlExpression(Ctx, Mode).Build(searchCondition); + auto callable = TSqlExpression(Ctx_, Mode_).Build(searchCondition); // Each define must be a predicate lambda, that accepts 3 args: // - List<input table rows> // - A struct that maps row pattern variables to ranges in the queue diff --git a/yql/essentials/sql/v1/sql_match_recognize.h b/yql/essentials/sql/v1/sql_match_recognize.h index 928ed35b5db..0a0382c6213 100644 --- a/yql/essentials/sql/v1/sql_match_recognize.h +++ b/yql/essentials/sql/v1/sql_match_recognize.h @@ -31,8 +31,8 @@ private: TVector<TNamedFunction> ParseDefinitions(const TRule_row_pattern_definition_list& node); private: - THashSet<TString> PatternVarNames; - TNodePtr PatternVars; + THashSet<TString> PatternVarNames_; + TNodePtr PatternVars_; }; } // namespace NSQLTranslationV1 diff --git a/yql/essentials/sql/v1/sql_query.cpp b/yql/essentials/sql/v1/sql_query.cpp index d852fee277f..d77500463d5 100644 --- a/yql/essentials/sql/v1/sql_query.cpp +++ b/yql/essentials/sql/v1/sql_query.cpp @@ -220,13 +220,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& TString humanStatementName; ParseStatementName(core, internalStatementName, humanStatementName); const auto& altCase = core.Alt_case(); - if (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW && (altCase >= TRule_sql_stmt_core::kAltSqlStmtCore4 && + if (Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW && (altCase >= TRule_sql_stmt_core::kAltSqlStmtCore4 && altCase != TRule_sql_stmt_core::kAltSqlStmtCore13 && altCase != TRule_sql_stmt_core::kAltSqlStmtCore18)) { Error() << humanStatementName << " statement is not supported in limited views"; return false; } - if (Mode == NSQLTranslation::ESqlMode::SUBQUERY && (altCase >= TRule_sql_stmt_core::kAltSqlStmtCore4 && + if (Mode_ == NSQLTranslation::ESqlMode::SUBQUERY && (altCase >= TRule_sql_stmt_core::kAltSqlStmtCore4 && altCase != TRule_sql_stmt_core::kAltSqlStmtCore13 && altCase != TRule_sql_stmt_core::kAltSqlStmtCore6 && altCase != TRule_sql_stmt_core::kAltSqlStmtCore18)) { Error() << humanStatementName << " statement is not supported in subqueries"; @@ -234,7 +234,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } if (NeedUseForAllStatements(altCase)) { - Ctx.ForAllStatementsParts.push_back(statementNumber); + Ctx_.ForAllStatementsParts.push_back(statementNumber); } switch (altCase) { @@ -250,25 +250,25 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore2: { - if (Ctx.ParallelModeCount > 0) { + if (Ctx_.ParallelModeCount > 0) { Error() << humanStatementName << " statement is not supported in parallel mode"; return false; } - Ctx.BodyPart(); - TSqlSelect select(Ctx, Mode); + Ctx_.BodyPart(); + TSqlSelect select(Ctx_, Mode_); TPosition pos; auto source = select.Build(core.GetAlt_sql_stmt_core2().GetRule_select_stmt1(), pos); if (!source) { return false; } blocks.emplace_back(BuildSelectResult(pos, std::move(source), - Mode != NSQLTranslation::ESqlMode::LIMITED_VIEW && Mode != NSQLTranslation::ESqlMode::SUBQUERY, Mode == NSQLTranslation::ESqlMode::SUBQUERY, - Ctx.Scoped)); + Mode_ != NSQLTranslation::ESqlMode::LIMITED_VIEW && Mode_ != NSQLTranslation::ESqlMode::SUBQUERY, Mode_ == NSQLTranslation::ESqlMode::SUBQUERY, + Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore3: { - Ctx.BodyPart(); + Ctx_.BodyPart(); TVector<TSymbolNameWithPos> names; auto nodeExpr = NamedNode(core.GetAlt_sql_stmt_core3().GetRule_named_nodes_stmt1(), names); if (!nodeExpr) { @@ -276,21 +276,21 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } TVector<TNodePtr> nodes; auto subquery = nodeExpr->GetSource(); - if (subquery && Mode == NSQLTranslation::ESqlMode::LIBRARY && Ctx.ScopeLevel == 0) { + if (subquery && Mode_ == NSQLTranslation::ESqlMode::LIBRARY && Ctx_.ScopeLevel == 0) { for (size_t i = 0; i < names.size(); ++i) { nodes.push_back(BuildInvalidSubqueryRef(subquery->GetPos())); } } else if (subquery) { - const auto alias = Ctx.MakeName("subquerynode"); - const auto ref = Ctx.MakeName("subquery"); + const auto alias = Ctx_.MakeName("subquerynode"); + const auto ref = Ctx_.MakeName("subquery"); blocks.push_back(BuildSubquery(subquery, alias, - Mode == NSQLTranslation::ESqlMode::SUBQUERY, names.size() == 1 ? -1 : names.size(), Ctx.Scoped)); + Mode_ == NSQLTranslation::ESqlMode::SUBQUERY, names.size() == 1 ? -1 : names.size(), Ctx_.Scoped)); blocks.back()->SetLabel(ref); for (size_t i = 0; i < names.size(); ++i) { nodes.push_back(BuildSubqueryRef(blocks.back(), ref, names.size() == 1 ? -1 : i)); } - } else if (!Ctx.CompactNamedExprs || nodeExpr->GetUdfNode()) { + } else if (!Ctx_.CompactNamedExprs || nodeExpr->GetUdfNode()) { // Unlike other nodes, TUdfNode is not an independent node, but more like a set of parameters which should be // applied on UDF call site. For example, TUdfNode can not be Translate()d // So we can't add it to blocks and use reference, instead we store the TUdfNode itself as named node @@ -304,7 +304,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& nodes.push_back(std::move(nodeExpr)); } } else { - const auto ref = Ctx.MakeName("namedexprnode"); + const auto ref = Ctx_.MakeName("namedexprnode"); blocks.push_back(BuildNamedExpr(names.size() > 1 ? BuildTupleResult(nodeExpr, names.size()) : nodeExpr)); blocks.back()->SetLabel(ref); for (size_t i = 0; i < names.size(); ++i) { @@ -318,15 +318,15 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore4: { - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core4().GetRule_create_table_stmt1(); bool replaceIfExists = false; if (rule.HasBlock2()) { // OR REPLACE replaceIfExists = true; Y_DEBUG_ABORT_UNLESS( - (IS_TOKEN(Ctx.Settings.Antlr4Parser, rule.GetBlock2().GetToken1().GetId(), OR) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, rule.GetBlock2().GetToken2().GetId(), REPLACE)) + (IS_TOKEN(Ctx_.Settings.Antlr4Parser, rule.GetBlock2().GetToken1().GetId(), OR) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, rule.GetBlock2().GetToken2().GetId(), REPLACE)) ); } @@ -335,7 +335,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& ETableType tableType = ETableType::Table; bool temporary = false; if (block.HasAlt2() && - IS_TOKEN(Ctx.Settings.Antlr4Parser, block.GetAlt2().GetToken1().GetId(), TABLESTORE) + IS_TOKEN(Ctx_.Settings.Antlr4Parser, block.GetAlt2().GetToken1().GetId(), TABLESTORE) ) { tableType = ETableType::TableStore; if (isCreateTableAs) { @@ -344,7 +344,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& return false; } } else if (block.HasAlt3() && - IS_TOKEN(Ctx.Settings.Antlr4Parser, block.GetAlt3().GetToken1().GetId(), EXTERNAL) + IS_TOKEN(Ctx_.Settings.Antlr4Parser, block.GetAlt3().GetToken1().GetId(), EXTERNAL) ) { tableType = ETableType::ExternalTable; if (isCreateTableAs) { @@ -352,8 +352,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& << "CREATE TABLE AS is not supported for EXTERNAL TABLE"; return false; } - } else if (block.HasAlt4() && IS_TOKEN(Ctx.Settings.Antlr4Parser, block.GetAlt4().GetToken1().GetId(), TEMP) || - block.HasAlt5() && IS_TOKEN(Ctx.Settings.Antlr4Parser, block.GetAlt5().GetToken1().GetId(), TEMPORARY)) { + } else if (block.HasAlt4() && IS_TOKEN(Ctx_.Settings.Antlr4Parser, block.GetAlt4().GetToken1().GetId(), TEMP) || + block.HasAlt5() && IS_TOKEN(Ctx_.Settings.Antlr4Parser, block.GetAlt5().GetToken1().GetId(), TEMPORARY)) { temporary = true; } @@ -361,9 +361,9 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (rule.HasBlock4()) { // IF NOT EXISTS existingOk = true; Y_DEBUG_ABORT_UNLESS( - IS_TOKEN(Ctx.Settings.Antlr4Parser, rule.GetBlock4().GetToken1().GetId(), IF) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, rule.GetBlock4().GetToken2().GetId(), NOT) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, rule.GetBlock4().GetToken3().GetId(), EXISTS) + IS_TOKEN(Ctx_.Settings.Antlr4Parser, rule.GetBlock4().GetToken1().GetId(), IF) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, rule.GetBlock4().GetToken2().GetId(), NOT) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, rule.GetBlock4().GetToken3().GetId(), EXISTS) ); } @@ -421,7 +421,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& TSourcePtr tableSource = nullptr; if (isCreateTableAs) { - tableSource = TSqlAsValues(Ctx, Mode).Build(rule.GetBlock15().GetRule_table_as_source1().GetRule_values_source2(), "CreateTableAs"); + tableSource = TSqlAsValues(Ctx_, Mode_).Build(rule.GetBlock15().GetRule_table_as_source1().GetRule_values_source2(), "CreateTableAs"); if (!tableSource) { return false; } @@ -431,11 +431,11 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& return false; } - AddStatementToBlocks(blocks, BuildCreateTable(Ctx.Pos(), tr, existingOk, replaceIfExists, params, std::move(tableSource), Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildCreateTable(Ctx_.Pos(), tr, existingOk, replaceIfExists, params, std::move(tableSource), Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore5: { - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core5().GetRule_drop_table_stmt1(); const auto& block = rule.GetBlock2(); ETableType tableType = ETableType::Table; @@ -450,8 +450,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (rule.HasBlock3()) { // IF EXISTS missingOk = true; Y_DEBUG_ABORT_UNLESS( - IS_TOKEN(Ctx.Settings.Antlr4Parser, rule.GetBlock3().GetToken1().GetId(), IF) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, rule.GetBlock3().GetToken2().GetId(), EXISTS) + IS_TOKEN(Ctx_.Settings.Antlr4Parser, rule.GetBlock3().GetToken1().GetId(), IF) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, rule.GetBlock3().GetToken2().GetId(), EXISTS) ); } @@ -460,21 +460,21 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& return false; } - AddStatementToBlocks(blocks, BuildDropTable(Ctx.Pos(), tr, missingOk, tableType, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildDropTable(Ctx_.Pos(), tr, missingOk, tableType, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore6: { const auto& rule = core.GetAlt_sql_stmt_core6().GetRule_use_stmt1(); Token(rule.GetToken1()); - if (!ClusterExpr(rule.GetRule_cluster_expr2(), true, Ctx.Scoped->CurrService, Ctx.Scoped->CurrCluster)) { + if (!ClusterExpr(rule.GetRule_cluster_expr2(), true, Ctx_.Scoped->CurrService, Ctx_.Scoped->CurrCluster)) { return false; } break; } case TRule_sql_stmt_core::kAltSqlStmtCore7: { - Ctx.BodyPart(); - TSqlIntoTable intoTable(Ctx, Mode); + Ctx_.BodyPart(); + TSqlIntoTable intoTable(Ctx_, Mode_); TNodePtr block(intoTable.Build(core.GetAlt_sql_stmt_core7().GetRule_into_table_stmt1())); if (!block) { return false; @@ -483,19 +483,19 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore8: { - if (Ctx.ParallelModeCount > 0) { + if (Ctx_.ParallelModeCount > 0) { Error() << humanStatementName << " statement is not supported in parallel mode"; return false; } - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core8().GetRule_commit_stmt1(); Token(rule.GetToken1()); - blocks.emplace_back(BuildCommitClusters(Ctx.Pos())); + blocks.emplace_back(BuildCommitClusters(Ctx_.Pos())); break; } case TRule_sql_stmt_core::kAltSqlStmtCore9: { - Ctx.BodyPart(); + Ctx_.BodyPart(); auto updateNode = Build(core.GetAlt_sql_stmt_core9().GetRule_update_stmt1()); if (!updateNode) { return false; @@ -504,7 +504,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore10: { - Ctx.BodyPart(); + Ctx_.BodyPart(); auto deleteNode = Build(core.GetAlt_sql_stmt_core10().GetRule_delete_stmt1()); if (!deleteNode) { return false; @@ -513,15 +513,15 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore11: { - if (Ctx.ParallelModeCount > 0) { + if (Ctx_.ParallelModeCount > 0) { Error() << humanStatementName << " statement is not supported in parallel mode"; return false; } - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core11().GetRule_rollback_stmt1(); Token(rule.GetToken1()); - blocks.emplace_back(BuildRollbackClusters(Ctx.Pos())); + blocks.emplace_back(BuildRollbackClusters(Ctx_.Pos())); break; } case TRule_sql_stmt_core::kAltSqlStmtCore12: @@ -540,9 +540,9 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } break; case TRule_sql_stmt_core::kAltSqlStmtCore15: { - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core15().GetRule_alter_table_stmt1(); - const bool isTablestore = IS_TOKEN(Ctx.Settings.Antlr4Parser, rule.GetToken2().GetId(), TABLESTORE); + const bool isTablestore = IS_TOKEN(Ctx_.Settings.Antlr4Parser, rule.GetToken2().GetId(), TABLESTORE); TTableRef tr; if (!SimpleTableRefImpl(rule.GetRule_simple_table_ref3(), tr)) { return false; @@ -562,12 +562,12 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildAlterTable(Ctx.Pos(), tr, params, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildAlterTable(Ctx_.Pos(), tr, params, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore16: { // alter_external_table_stmt: ALTER EXTERNAL TABLE simple_table_ref alter_external_table_action (COMMA alter_external_table_action)* - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core16().GetRule_alter_external_table_stmt1(); TTableRef tr; if (!SimpleTableRefImpl(rule.GetRule_simple_table_ref4(), tr)) { @@ -586,11 +586,11 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildAlterTable(Ctx.Pos(), tr, params, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildAlterTable(Ctx_.Pos(), tr, params, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore17: { - Ctx.BodyPart(); + Ctx_.BodyPart(); auto node = DoStatement(core.GetAlt_sql_stmt_core17().GetRule_do_stmt1(), false); if (!node) { return false; @@ -600,18 +600,18 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore18: { - Ctx.BodyPart(); + Ctx_.BodyPart(); TNodePtr lambda; TSymbolNameWithPos nameAndPos; const auto& stmt = core.GetAlt_sql_stmt_core18().GetRule_define_action_or_subquery_stmt1(); - const TString kind = to_lower(Ctx.Token(stmt.GetToken2())); + const TString kind = to_lower(Ctx_.Token(stmt.GetToken2())); YQL_ENSURE(kind == "action" || kind == "subquery"); if (!DefineActionOrSubqueryStatement(stmt, nameAndPos, lambda)) { return false; } - if (Ctx.CompactNamedExprs) { - const auto ref = Ctx.MakeName("named" + kind + "node"); + if (Ctx_.CompactNamedExprs) { + const auto ref = Ctx_.MakeName("named" + kind + "node"); blocks.push_back(BuildNamedExpr(lambda)); blocks.back()->SetLabel(ref); lambda = BuildNamedExprReference(blocks.back(), ref, {}); @@ -621,7 +621,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore19: { - Ctx.BodyPart(); + Ctx_.BodyPart(); auto node = IfStatement(core.GetAlt_sql_stmt_core19().GetRule_if_stmt1()); if (!node) { return false; @@ -631,7 +631,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore20: { - Ctx.BodyPart(); + Ctx_.BodyPart(); auto node = ForStatement(core.GetAlt_sql_stmt_core20().GetRule_for_stmt1()); if (!node) { return false; @@ -641,33 +641,33 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& break; } case TRule_sql_stmt_core::kAltSqlStmtCore21: { - if (Ctx.ParallelModeCount > 0) { + if (Ctx_.ParallelModeCount > 0) { Error() << humanStatementName << " statement is not supported in parallel mode"; return false; } - Ctx.BodyPart(); - TSqlValues values(Ctx, Mode); + Ctx_.BodyPart(); + TSqlValues values(Ctx_, Mode_); TPosition pos; auto source = values.Build(core.GetAlt_sql_stmt_core21().GetRule_values_stmt1(), pos, {}, TPosition()); if (!source) { return false; } blocks.emplace_back(BuildSelectResult(pos, std::move(source), - Mode != NSQLTranslation::ESqlMode::LIMITED_VIEW && Mode != NSQLTranslation::ESqlMode::SUBQUERY, Mode == NSQLTranslation::ESqlMode::SUBQUERY, - Ctx.Scoped)); + Mode_ != NSQLTranslation::ESqlMode::LIMITED_VIEW && Mode_ != NSQLTranslation::ESqlMode::SUBQUERY, Mode_ == NSQLTranslation::ESqlMode::SUBQUERY, + Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore22: { // create_user_stmt: CREATE USER role_name (user_option)*; - Ctx.BodyPart(); + Ctx_.BodyPart(); auto& node = core.GetAlt_sql_stmt_core22().GetRule_create_user_stmt1(); - Ctx.Token(node.GetToken1()); - const TPosition pos = Ctx.Pos(); + Ctx_.Token(node.GetToken1()); + const TPosition pos = Ctx_.Pos(); - TString service = Ctx.Scoped->CurrService; - TDeferredAtom cluster = Ctx.Scoped->CurrCluster; + TString service = Ctx_.Scoped->CurrService; + TDeferredAtom cluster = Ctx_.Scoped->CurrCluster; if (cluster.Empty()) { Error() << "USE statement is missing - no default cluster is selected"; return false; @@ -694,19 +694,19 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& return false; } - AddStatementToBlocks(blocks, BuildControlUser(pos, service, cluster, roleName, createUserParams, Ctx.Scoped, isCreateUser)); + AddStatementToBlocks(blocks, BuildControlUser(pos, service, cluster, roleName, createUserParams, Ctx_.Scoped, isCreateUser)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore23: { // alter_user_stmt: ALTER USER role_name (WITH? user_option+ | RENAME TO role_name); - Ctx.BodyPart(); + Ctx_.BodyPart(); auto& node = core.GetAlt_sql_stmt_core23().GetRule_alter_user_stmt1(); - Ctx.Token(node.GetToken1()); - const TPosition pos = Ctx.Pos(); + Ctx_.Token(node.GetToken1()); + const TPosition pos = Ctx_.Pos(); - TString service = Ctx.Scoped->CurrService; - TDeferredAtom cluster = Ctx.Scoped->CurrCluster; + TString service = Ctx_.Scoped->CurrService; + TDeferredAtom cluster = Ctx_.Scoped->CurrCluster; if (cluster.Empty()) { Error() << "USE statement is missing - no default cluster is selected"; return false; @@ -736,7 +736,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (!UserParameters(opts, alterUserParams, isCreateUser)) { return false; } - stmt = BuildControlUser(pos, service, cluster, roleName, alterUserParams, Ctx.Scoped, isCreateUser); + stmt = BuildControlUser(pos, service, cluster, roleName, alterUserParams, Ctx_.Scoped, isCreateUser); break; } case TRule_alter_user_stmt_TBlock4::kAlt2: { @@ -745,7 +745,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (!RoleNameClause(node.GetBlock4().GetAlt2().GetRule_role_name3(), tgtRoleName, allowSystemRoles)) { return false; } - stmt = BuildRenameUser(pos, service, cluster, roleName, tgtRoleName, Ctx.Scoped); + stmt = BuildRenameUser(pos, service, cluster, roleName, tgtRoleName, Ctx_.Scoped); break; } case TRule_alter_user_stmt_TBlock4::ALT_NOT_SET: @@ -757,14 +757,14 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } case TRule_sql_stmt_core::kAltSqlStmtCore24: { // create_group_stmt: CREATE GROUP role_name (WITH USER role_name (COMMA role_name)* COMMA?)?; - Ctx.BodyPart(); + Ctx_.BodyPart(); auto& node = core.GetAlt_sql_stmt_core24().GetRule_create_group_stmt1(); - Ctx.Token(node.GetToken1()); - const TPosition pos = Ctx.Pos(); + Ctx_.Token(node.GetToken1()); + const TPosition pos = Ctx_.Pos(); - TString service = Ctx.Scoped->CurrService; - TDeferredAtom cluster = Ctx.Scoped->CurrCluster; + TString service = Ctx_.Scoped->CurrService; + TDeferredAtom cluster = Ctx_.Scoped->CurrCluster; if (cluster.Empty()) { Error() << "USE statement is missing - no default cluster is selected"; return false; @@ -794,19 +794,19 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildCreateGroup(pos, service, cluster, roleName, createGroupParams, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildCreateGroup(pos, service, cluster, roleName, createGroupParams, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore25: { // alter_group_stmt: ALTER GROUP role_name ((ADD|DROP) USER role_name (COMMA role_name)* COMMA? | RENAME TO role_name); - Ctx.BodyPart(); + Ctx_.BodyPart(); auto& node = core.GetAlt_sql_stmt_core25().GetRule_alter_group_stmt1(); - Ctx.Token(node.GetToken1()); - const TPosition pos = Ctx.Pos(); + Ctx_.Token(node.GetToken1()); + const TPosition pos = Ctx_.Pos(); - TString service = Ctx.Scoped->CurrService; - TDeferredAtom cluster = Ctx.Scoped->CurrCluster; + TString service = Ctx_.Scoped->CurrService; + TDeferredAtom cluster = Ctx_.Scoped->CurrCluster; if (cluster.Empty()) { Error() << "USE statement is missing - no default cluster is selected"; return false; @@ -824,7 +824,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& switch (node.GetBlock4().Alt_case()) { case TRule_alter_group_stmt_TBlock4::kAlt1: { auto& addDropNode = node.GetBlock4().GetAlt1(); - const bool isDrop = IS_TOKEN(Ctx.Settings.Antlr4Parser, addDropNode.GetToken1().GetId(), DROP); + const bool isDrop = IS_TOKEN(Ctx_.Settings.Antlr4Parser, addDropNode.GetToken1().GetId(), DROP); TVector<TDeferredAtom> roles; bool allowSystemRoles = false; roles.emplace_back(); @@ -839,7 +839,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - stmt = BuildAlterGroup(pos, service, cluster, roleName, roles, isDrop, Ctx.Scoped); + stmt = BuildAlterGroup(pos, service, cluster, roleName, roles, isDrop, Ctx_.Scoped); break; } case TRule_alter_group_stmt_TBlock4::kAlt2: { @@ -848,7 +848,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (!RoleNameClause(node.GetBlock4().GetAlt2().GetRule_role_name3(), tgtRoleName, allowSystemRoles)) { return false; } - stmt = BuildRenameGroup(pos, service, cluster, roleName, tgtRoleName, Ctx.Scoped); + stmt = BuildRenameGroup(pos, service, cluster, roleName, tgtRoleName, Ctx_.Scoped); break; } case TRule_alter_group_stmt_TBlock4::ALT_NOT_SET: @@ -860,26 +860,26 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } case TRule_sql_stmt_core::kAltSqlStmtCore26: { // drop_role_stmt: DROP (USER|GROUP) (IF EXISTS)? role_name (COMMA role_name)* COMMA?; - Ctx.BodyPart(); + Ctx_.BodyPart(); auto& node = core.GetAlt_sql_stmt_core26().GetRule_drop_role_stmt1(); - Ctx.Token(node.GetToken1()); - const TPosition pos = Ctx.Pos(); + Ctx_.Token(node.GetToken1()); + const TPosition pos = Ctx_.Pos(); - TString service = Ctx.Scoped->CurrService; - TDeferredAtom cluster = Ctx.Scoped->CurrCluster; + TString service = Ctx_.Scoped->CurrService; + TDeferredAtom cluster = Ctx_.Scoped->CurrCluster; if (cluster.Empty()) { Error() << "USE statement is missing - no default cluster is selected"; return false; } - const bool isUser = IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetToken2().GetId(), USER); + const bool isUser = IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetToken2().GetId(), USER); bool missingOk = false; if (node.HasBlock3()) { // IF EXISTS missingOk = true; Y_DEBUG_ABORT_UNLESS( - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock3().GetToken1().GetId(), IF) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock3().GetToken2().GetId(), EXISTS) + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock3().GetToken1().GetId(), IF) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock3().GetToken2().GetId(), EXISTS) ); } @@ -897,13 +897,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildDropRoles(pos, service, cluster, roles, isUser, missingOk, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildDropRoles(pos, service, cluster, roles, isUser, missingOk, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore27: { // create_object_stmt: CREATE OBJECT (IF NOT EXISTS)? name (TYPE type [WITH k=v,...]); auto& node = core.GetAlt_sql_stmt_core27().GetRule_create_object_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref4().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref4().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -915,9 +915,9 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (node.HasBlock3()) { // IF NOT EXISTS existingOk = true; Y_DEBUG_ABORT_UNLESS( - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock3().GetToken1().GetId(), IF) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock3().GetToken2().GetId(), NOT) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock3().GetToken3().GetId(), EXISTS) + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock3().GetToken1().GetId(), IF) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock3().GetToken2().GetId(), NOT) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock3().GetToken3().GetId(), EXISTS) ); } @@ -930,13 +930,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildCreateObjectOperation(Ctx.Pos(), objectId, typeId, existingOk, false, std::move(kv), context)); + AddStatementToBlocks(blocks, BuildCreateObjectOperation(Ctx_.Pos(), objectId, typeId, existingOk, false, std::move(kv), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore28: { // alter_object_stmt: ALTER OBJECT name (TYPE type [SET k=v,...]); auto& node = core.GetAlt_sql_stmt_core28().GetRule_alter_object_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref3().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref3().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -951,13 +951,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& return false; } - AddStatementToBlocks(blocks, BuildAlterObjectOperation(Ctx.Pos(), objectId, typeId, std::move(kv), std::set<TString>(), context)); + AddStatementToBlocks(blocks, BuildAlterObjectOperation(Ctx_.Pos(), objectId, typeId, std::move(kv), std::set<TString>(), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore29: { // drop_object_stmt: DROP OBJECT (IF EXISTS)? name (TYPE type [WITH k=v,...]); auto& node = core.GetAlt_sql_stmt_core29().GetRule_drop_object_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref4().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref4().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -969,8 +969,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (node.HasBlock3()) { // IF EXISTS missingOk = true; Y_DEBUG_ABORT_UNLESS( - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock3().GetToken1().GetId(), IF) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock3().GetToken2().GetId(), EXISTS) + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock3().GetToken1().GetId(), IF) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock3().GetToken2().GetId(), EXISTS) ); } @@ -983,13 +983,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildDropObjectOperation(Ctx.Pos(), objectId, typeId, missingOk, std::move(kv), context)); + AddStatementToBlocks(blocks, BuildDropObjectOperation(Ctx_.Pos(), objectId, typeId, missingOk, std::move(kv), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore30: { // create_external_data_source_stmt: CREATE (OR REPLACE)? EXTERNAL DATA SOURCE (IF NOT EXISTS)? name WITH (k=v,...); auto& node = core.GetAlt_sql_stmt_core30().GetRule_create_external_data_source_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref7().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref7().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1001,8 +1001,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (node.HasBlock2()) { // OR REPLACE replaceIfExists = true; Y_DEBUG_ABORT_UNLESS( - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock2().GetToken1().GetId(), OR) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock2().GetToken2().GetId(), REPLACE) + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock2().GetToken1().GetId(), OR) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock2().GetToken2().GetId(), REPLACE) ); } @@ -1010,9 +1010,9 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (node.HasBlock6()) { // IF NOT EXISTS existingOk = true; Y_DEBUG_ABORT_UNLESS( - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock6().GetToken1().GetId(), IF) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock6().GetToken2().GetId(), NOT) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock6().GetToken3().GetId(), EXISTS) + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock6().GetToken1().GetId(), IF) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock6().GetToken2().GetId(), NOT) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock6().GetToken3().GetId(), EXISTS) ); } @@ -1022,14 +1022,14 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& return false; } - AddStatementToBlocks(blocks, BuildCreateObjectOperation(Ctx.Pos(), BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), objectId), "EXTERNAL_DATA_SOURCE", existingOk, replaceIfExists, std::move(kv), context)); + AddStatementToBlocks(blocks, BuildCreateObjectOperation(Ctx_.Pos(), BuildTablePath(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster), objectId), "EXTERNAL_DATA_SOURCE", existingOk, replaceIfExists, std::move(kv), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore31: { // alter_external_data_source_stmt: ALTER EXTERNAL DATA SOURCE object_ref alter_external_data_source_action (COMMA alter_external_data_source_action)* - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& node = core.GetAlt_sql_stmt_core31().GetRule_alter_external_data_source_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref5().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref5().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1050,13 +1050,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildAlterObjectOperation(Ctx.Pos(), objectId, "EXTERNAL_DATA_SOURCE", std::move(kv), std::move(toReset), context)); + AddStatementToBlocks(blocks, BuildAlterObjectOperation(Ctx_.Pos(), objectId, "EXTERNAL_DATA_SOURCE", std::move(kv), std::move(toReset), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore32: { // drop_external_data_source_stmt: DROP EXTERNAL DATA SOURCE (IF EXISTS)? name; auto& node = core.GetAlt_sql_stmt_core32().GetRule_drop_external_data_source_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref6().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref6().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1068,19 +1068,19 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (node.HasBlock5()) { // IF EXISTS missingOk = true; Y_DEBUG_ABORT_UNLESS( - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock5().GetToken1().GetId(), IF) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock5().GetToken2().GetId(), EXISTS) + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock5().GetToken1().GetId(), IF) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock5().GetToken2().GetId(), EXISTS) ); } const TString& objectId = Id(node.GetRule_object_ref6().GetRule_id_or_at2(), *this).second; - AddStatementToBlocks(blocks, BuildDropObjectOperation(Ctx.Pos(), BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), objectId), "EXTERNAL_DATA_SOURCE", missingOk, {}, context)); + AddStatementToBlocks(blocks, BuildDropObjectOperation(Ctx_.Pos(), BuildTablePath(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster), objectId), "EXTERNAL_DATA_SOURCE", missingOk, {}, context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore33: { // create_replication_stmt: CREATE ASYNC REPLICATION auto& node = core.GetAlt_sql_stmt_core33().GetRule_create_replication_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref4().HasBlock1()) { const auto& cluster = node.GetRule_object_ref4().GetBlock1().GetRule_cluster_expr1(); if (!ClusterExpr(cluster, false, context.ServiceId, context.Cluster)) { @@ -1088,7 +1088,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - auto prefixPath = Ctx.GetPrefixPath(context.ServiceId, context.Cluster); + auto prefixPath = Ctx_.GetPrefixPath(context.ServiceId, context.Cluster); std::vector<std::pair<TString, TString>> targets; if (!AsyncReplicationTarget(targets, prefixPath, node.GetRule_replication_target6(), *this)) { @@ -1101,20 +1101,20 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } std::map<TString, TNodePtr> settings; - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); if (!AsyncReplicationSettings(settings, node.GetRule_replication_settings10(), expr, true)) { return false; } const TString id = Id(node.GetRule_object_ref4().GetRule_id_or_at2(), *this).second; - AddStatementToBlocks(blocks, BuildCreateAsyncReplication(Ctx.Pos(), BuildTablePath(prefixPath, id), + AddStatementToBlocks(blocks, BuildCreateAsyncReplication(Ctx_.Pos(), BuildTablePath(prefixPath, id), std::move(targets), std::move(settings), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore34: { // drop_replication_stmt: DROP ASYNC REPLICATION auto& node = core.GetAlt_sql_stmt_core34().GetRule_drop_replication_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref4().HasBlock1()) { const auto& cluster = node.GetRule_object_ref4().GetBlock1().GetRule_cluster_expr1(); if (!ClusterExpr(cluster, false, context.ServiceId, context.Cluster)) { @@ -1123,13 +1123,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } const TString id = Id(node.GetRule_object_ref4().GetRule_id_or_at2(), *this).second; - AddStatementToBlocks(blocks, BuildDropAsyncReplication(Ctx.Pos(), - BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), id), + AddStatementToBlocks(blocks, BuildDropAsyncReplication(Ctx_.Pos(), + BuildTablePath(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster), id), node.HasBlock5(), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore35: { - Ctx.BodyPart(); + Ctx_.BodyPart(); // create_topic_stmt: CREATE TOPIC (IF NOT EXISTS)? topic1 (CONSUMER ...)? [WITH (opt1 = val1, ...]? auto& rule = core.GetAlt_sql_stmt_core35().GetRule_create_topic_stmt1(); TTopicRef tr; @@ -1162,14 +1162,14 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& CreateTopicSettings(topic_settings_node, params.TopicSettings); } - AddStatementToBlocks(blocks, BuildCreateTopic(Ctx.Pos(), tr, params, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildCreateTopic(Ctx_.Pos(), tr, params, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore36: { // alter_topic_stmt: ALTER TOPIC topic_ref alter_topic_action (COMMA alter_topic_action)*; // alter_topic_stmt: ALTER TOPIC IF EXISTS topic_ref alter_topic_action (COMMA alter_topic_action)*; - Ctx.BodyPart(); + Ctx_.BodyPart(); auto& rule = core.GetAlt_sql_stmt_core36().GetRule_alter_topic_stmt1(); TTopicRef tr; bool missingOk = false; @@ -1193,12 +1193,12 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildAlterTopic(Ctx.Pos(), tr, params, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildAlterTopic(Ctx_.Pos(), tr, params, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore37: { // drop_topic_stmt: DROP TOPIC (IF EXISTS)? topic_ref; - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core37().GetRule_drop_topic_stmt1(); TDropTopicParameters params; @@ -1212,19 +1212,19 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (!TopicRefImpl(rule.GetRule_topic_ref4(), tr)) { return false; } - AddStatementToBlocks(blocks, BuildDropTopic(Ctx.Pos(), tr, params, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildDropTopic(Ctx_.Pos(), tr, params, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore38: { // GRANT permission_name_target ON an_id_schema (COMMA an_id_schema)* TO role_name (COMMA role_name)* COMMA? (WITH GRANT OPTION)?; - Ctx.BodyPart(); + Ctx_.BodyPart(); auto& node = core.GetAlt_sql_stmt_core38().GetRule_grant_permissions_stmt1(); - Ctx.Token(node.GetToken1()); - const TPosition pos = Ctx.Pos(); + Ctx_.Token(node.GetToken1()); + const TPosition pos = Ctx_.Pos(); - TString service = Ctx.Scoped->CurrService; - TDeferredAtom cluster = Ctx.Scoped->CurrCluster; + TString service = Ctx_.Scoped->CurrService; + TDeferredAtom cluster = Ctx_.Scoped->CurrCluster; if (cluster.Empty()) { Error() << "USE statement is missing - no default cluster is selected"; return false; @@ -1236,9 +1236,9 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } TVector<TDeferredAtom> schemaPaths; - schemaPaths.emplace_back(Ctx.Pos(), Id(node.GetRule_an_id_schema4(), *this)); + schemaPaths.emplace_back(Ctx_.Pos(), Id(node.GetRule_an_id_schema4(), *this)); for (const auto& item : node.GetBlock5()) { - schemaPaths.emplace_back(Ctx.Pos(), Id(item.GetRule_an_id_schema2(), *this)); + schemaPaths.emplace_back(Ctx_.Pos(), Id(item.GetRule_an_id_schema2(), *this)); } TVector<TDeferredAtom> roleNames; @@ -1254,20 +1254,20 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildGrantPermissions(pos, service, cluster, permissions, schemaPaths, roleNames, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildGrantPermissions(pos, service, cluster, permissions, schemaPaths, roleNames, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore39: { // REVOKE (GRANT OPTION FOR)? permission_name_target ON an_id_schema (COMMA an_id_schema)* FROM role_name (COMMA role_name)*; - Ctx.BodyPart(); + Ctx_.BodyPart(); auto& node = core.GetAlt_sql_stmt_core39().GetRule_revoke_permissions_stmt1(); - Ctx.Token(node.GetToken1()); - const TPosition pos = Ctx.Pos(); + Ctx_.Token(node.GetToken1()); + const TPosition pos = Ctx_.Pos(); - TString service = Ctx.Scoped->CurrService; - TDeferredAtom cluster = Ctx.Scoped->CurrCluster; + TString service = Ctx_.Scoped->CurrService; + TDeferredAtom cluster = Ctx_.Scoped->CurrCluster; if (cluster.Empty()) { Error() << "USE statement is missing - no default cluster is selected"; return false; @@ -1279,9 +1279,9 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } TVector<TDeferredAtom> schemaPaths; - schemaPaths.emplace_back(Ctx.Pos(), Id(node.GetRule_an_id_schema5(), *this)); + schemaPaths.emplace_back(Ctx_.Pos(), Id(node.GetRule_an_id_schema5(), *this)); for (const auto& item : node.GetBlock6()) { - schemaPaths.emplace_back(Ctx.Pos(), Id(item.GetRule_an_id_schema2(), *this)); + schemaPaths.emplace_back(Ctx_.Pos(), Id(item.GetRule_an_id_schema2(), *this)); } TVector<TDeferredAtom> roleNames; @@ -1297,14 +1297,14 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildRevokePermissions(pos, service, cluster, permissions, schemaPaths, roleNames, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildRevokePermissions(pos, service, cluster, permissions, schemaPaths, roleNames, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore40: { // ALTER TABLESTORE object_ref alter_table_store_action (COMMA alter_table_store_action)*; auto& node = core.GetAlt_sql_stmt_core40().GetRule_alter_table_store_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref3().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref3().GetBlock1().GetRule_cluster_expr1(), @@ -1320,14 +1320,14 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& return false; } - AddStatementToBlocks(blocks, BuildAlterObjectOperation(Ctx.Pos(), objectId, typeId, std::move(kv), std::set<TString>(), context)); + AddStatementToBlocks(blocks, BuildAlterObjectOperation(Ctx_.Pos(), objectId, typeId, std::move(kv), std::set<TString>(), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore41: { // create_object_stmt: UPSERT OBJECT name (TYPE type [WITH k=v,...]); auto& node = core.GetAlt_sql_stmt_core41().GetRule_upsert_object_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref3().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref3().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1344,13 +1344,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildUpsertObjectOperation(Ctx.Pos(), objectId, typeId, std::move(kv), context)); + AddStatementToBlocks(blocks, BuildUpsertObjectOperation(Ctx_.Pos(), objectId, typeId, std::move(kv), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore42: { // create_view_stmt: CREATE VIEW (IF NOT EXISTS)? name (WITH (k = v, ...))? AS select_stmt; auto& node = core.GetAlt_sql_stmt_core42().GetRule_create_view_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref4().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref4().GetBlock1().GetRule_cluster_expr1(), false, @@ -1375,8 +1375,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& const TString objectId = Id(node.GetRule_object_ref4().GetRule_id_or_at2(), *this).second; constexpr const char* TypeId = "VIEW"; AddStatementToBlocks(blocks, - BuildCreateObjectOperation(Ctx.Pos(), - BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), objectId), + BuildCreateObjectOperation(Ctx_.Pos(), + BuildTablePath(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster), objectId), TypeId, existingOk, false, @@ -1387,7 +1387,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& case TRule_sql_stmt_core::kAltSqlStmtCore43: { // drop_view_stmt: DROP VIEW (IF EXISTS)? name; auto& node = core.GetAlt_sql_stmt_core43().GetRule_drop_view_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref4().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref4().GetBlock1().GetRule_cluster_expr1(), false, @@ -1402,8 +1402,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& const TString objectId = Id(node.GetRule_object_ref4().GetRule_id_or_at2(), *this).second; constexpr const char* TypeId = "VIEW"; AddStatementToBlocks(blocks, - BuildDropObjectOperation(Ctx.Pos(), - BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), objectId), + BuildDropObjectOperation(Ctx_.Pos(), + BuildTablePath(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster), objectId), TypeId, missingOk, {}, @@ -1413,7 +1413,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& case TRule_sql_stmt_core::kAltSqlStmtCore44: { // alter_replication_stmt: ALTER ASYNC REPLICATION auto& node = core.GetAlt_sql_stmt_core44().GetRule_alter_replication_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref4().HasBlock1()) { const auto& cluster = node.GetRule_object_ref4().GetBlock1().GetRule_cluster_expr1(); if (!ClusterExpr(cluster, false, context.ServiceId, context.Cluster)) { @@ -1422,7 +1422,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } std::map<TString, TNodePtr> settings; - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); if (!AsyncReplicationAlterAction(settings, node.GetRule_alter_replication_action5(), expr)) { return false; } @@ -1433,15 +1433,15 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } const TString id = Id(node.GetRule_object_ref4().GetRule_id_or_at2(), *this).second; - AddStatementToBlocks(blocks, BuildAlterAsyncReplication(Ctx.Pos(), - BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), id), + AddStatementToBlocks(blocks, BuildAlterAsyncReplication(Ctx_.Pos(), + BuildTablePath(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster), id), std::move(settings), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore45: { // create_resource_pool_stmt: CREATE RESOURCE POOL name WITH (k=v,...); auto& node = core.GetAlt_sql_stmt_core45().GetRule_create_resource_pool_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref4().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref4().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1455,14 +1455,14 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& return false; } - AddStatementToBlocks(blocks, BuildCreateObjectOperation(Ctx.Pos(), objectId, "RESOURCE_POOL", false, false, std::move(kv), context)); + AddStatementToBlocks(blocks, BuildCreateObjectOperation(Ctx_.Pos(), objectId, "RESOURCE_POOL", false, false, std::move(kv), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore46: { // alter_resource_pool_stmt: ALTER RESOURCE POOL object_ref alter_resource_pool_action (COMMA alter_external_data_source_action)* - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& node = core.GetAlt_sql_stmt_core46().GetRule_alter_resource_pool_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref4().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref4().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1483,13 +1483,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildAlterObjectOperation(Ctx.Pos(), objectId, "RESOURCE_POOL", std::move(kv), std::move(toReset), context)); + AddStatementToBlocks(blocks, BuildAlterObjectOperation(Ctx_.Pos(), objectId, "RESOURCE_POOL", std::move(kv), std::move(toReset), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore47: { // drop_resource_pool_stmt: DROP RESOURCE POOL name; auto& node = core.GetAlt_sql_stmt_core47().GetRule_drop_resource_pool_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref4().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref4().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1498,13 +1498,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } const TString& objectId = Id(node.GetRule_object_ref4().GetRule_id_or_at2(), *this).second; - AddStatementToBlocks(blocks, BuildDropObjectOperation(Ctx.Pos(), objectId, "RESOURCE_POOL", false, {}, context)); + AddStatementToBlocks(blocks, BuildDropObjectOperation(Ctx_.Pos(), objectId, "RESOURCE_POOL", false, {}, context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore48: { // create_backup_collection_stmt: CREATE BACKUP COLLECTION name WITH (k=v,...); auto& node = core.GetAlt_sql_stmt_core48().GetRule_create_backup_collection_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_backup_collection2().GetRule_object_ref3().HasBlock1()) { if (!ClusterExpr(node.GetRule_backup_collection2().GetRule_object_ref3().GetBlock1().GetRule_cluster_expr1(), false, @@ -1540,8 +1540,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& const TString& objectId = Id(node.GetRule_backup_collection2().GetRule_object_ref3().GetRule_id_or_at2(), *this).second; AddStatementToBlocks(blocks, - BuildCreateBackupCollection(Ctx.Pos(), - TString(Ctx.GetPrefixPath(context.ServiceId, context.Cluster)), + BuildCreateBackupCollection(Ctx_.Pos(), + TString(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster)), objectId, TCreateBackupCollectionParameters { .Settings = std::move(kv), @@ -1555,7 +1555,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& case TRule_sql_stmt_core::kAltSqlStmtCore49: { // alter_backup_collection_stmt: ALTER BACKUP COLLECTION name alter_backup_collection_action (COMMA alter_backup_collection_action)*; auto& node = core.GetAlt_sql_stmt_core49().GetRule_alter_backup_collection_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_backup_collection2().GetRule_object_ref3().HasBlock1()) { if (!ClusterExpr(node.GetRule_backup_collection2().GetRule_object_ref3().GetBlock1().GetRule_cluster_expr1(), false, @@ -1603,8 +1603,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& const TString& objectId = Id(node.GetRule_backup_collection2().GetRule_object_ref3().GetRule_id_or_at2(), *this).second; AddStatementToBlocks(blocks, - BuildAlterBackupCollection(Ctx.Pos(), - TString(Ctx.GetPrefixPath(context.ServiceId, context.Cluster)), + BuildAlterBackupCollection(Ctx_.Pos(), + TString(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster)), objectId, TAlterBackupCollectionParameters { .Settings = std::move(kv), @@ -1620,7 +1620,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& case TRule_sql_stmt_core::kAltSqlStmtCore50: { // drop_backup_collection_stmt: DROP BACKUP COLLECTION name; auto& node = core.GetAlt_sql_stmt_core50().GetRule_drop_backup_collection_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_backup_collection2().GetRule_object_ref3().HasBlock1()) { if (!ClusterExpr(node.GetRule_backup_collection2().GetRule_object_ref3().GetBlock1().GetRule_cluster_expr1(), false, @@ -1632,8 +1632,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& const TString& objectId = Id(node.GetRule_backup_collection2().GetRule_object_ref3().GetRule_id_or_at2(), *this).second; AddStatementToBlocks(blocks, - BuildDropBackupCollection(Ctx.Pos(), - TString(Ctx.GetPrefixPath(context.ServiceId, context.Cluster)), + BuildDropBackupCollection(Ctx_.Pos(), + TString(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster)), objectId, TDropBackupCollectionParameters { .MissingOk = false, @@ -1643,7 +1643,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } case TRule_sql_stmt_core::kAltSqlStmtCore51: { // analyze_stmt: ANALYZE table_ref - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core51().GetRule_analyze_stmt1(); if (!rule.GetRule_analyze_table_list2().GetBlock2().empty()) { @@ -1671,13 +1671,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } auto params = TAnalyzeParams{.Table = std::make_shared<TTableRef>(tr), .Columns = std::move(columns)}; - AddStatementToBlocks(blocks, BuildAnalyze(Ctx.Pos(), tr.Service, tr.Cluster, params, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildAnalyze(Ctx_.Pos(), tr.Service, tr.Cluster, params, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore52: { // create_resource_pool_classifier_stmt: CREATE RESOURCE POOL CLASSIFIER name WITH (k=v,...); auto& node = core.GetAlt_sql_stmt_core52().GetRule_create_resource_pool_classifier_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref5().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref5().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1691,14 +1691,14 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& return false; } - AddStatementToBlocks(blocks, BuildCreateObjectOperation(Ctx.Pos(), objectId, "RESOURCE_POOL_CLASSIFIER", false, false, std::move(kv), context)); + AddStatementToBlocks(blocks, BuildCreateObjectOperation(Ctx_.Pos(), objectId, "RESOURCE_POOL_CLASSIFIER", false, false, std::move(kv), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore53: { // alter_resource_pool_classifier_stmt: ALTER RESOURCE POOL CLASSIFIER object_ref alter_resource_pool_classifier_action (COMMA alter_resource_pool_classifier_action)* - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& node = core.GetAlt_sql_stmt_core53().GetRule_alter_resource_pool_classifier_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref5().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref5().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1719,13 +1719,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildAlterObjectOperation(Ctx.Pos(), objectId, "RESOURCE_POOL_CLASSIFIER", std::move(kv), std::move(toReset), context)); + AddStatementToBlocks(blocks, BuildAlterObjectOperation(Ctx_.Pos(), objectId, "RESOURCE_POOL_CLASSIFIER", std::move(kv), std::move(toReset), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore54: { // drop_resource_pool_classifier_stmt: DROP RESOURCE POOL CLASSIFIER name; auto& node = core.GetAlt_sql_stmt_core54().GetRule_drop_resource_pool_classifier_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref5().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref5().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1734,13 +1734,13 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } const TString& objectId = Id(node.GetRule_object_ref5().GetRule_id_or_at2(), *this).second; - AddStatementToBlocks(blocks, BuildDropObjectOperation(Ctx.Pos(), objectId, "RESOURCE_POOL_CLASSIFIER", false, {}, context)); + AddStatementToBlocks(blocks, BuildDropObjectOperation(Ctx_.Pos(), objectId, "RESOURCE_POOL_CLASSIFIER", false, {}, context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore55: { // backup_stmt: BACKUP object_ref (INCREMENTAL)?; auto& node = core.GetAlt_sql_stmt_core55().GetRule_backup_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref2().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref2().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1753,8 +1753,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& const TString& objectId = Id(node.GetRule_object_ref2().GetRule_id_or_at2(), *this).second; AddStatementToBlocks(blocks, BuildBackup( - Ctx.Pos(), - TString(Ctx.GetPrefixPath(context.ServiceId, context.Cluster)), + Ctx_.Pos(), + TString(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster)), objectId, TBackupParameters{ .Incremental = incremental, @@ -1765,7 +1765,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& case TRule_sql_stmt_core::kAltSqlStmtCore56: { // restore_stmt: RESTORE object_ref (AT STRING_VALUE)?; auto& node = core.GetAlt_sql_stmt_core56().GetRule_restore_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref2().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref2().GetBlock1().GetRule_cluster_expr1(), false, context.ServiceId, context.Cluster)) { @@ -1775,8 +1775,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& TString at; if (node.HasBlock3()) { - const TString stringValue = Ctx.Token(node.GetBlock3().GetToken2()); - const auto unescaped = StringContent(Ctx, Ctx.Pos(), stringValue); + const TString stringValue = Ctx_.Token(node.GetBlock3().GetToken2()); + const auto unescaped = StringContent(Ctx_, Ctx_.Pos(), stringValue); if (!unescaped) { return false; } @@ -1786,8 +1786,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& const TString& objectId = Id(node.GetRule_object_ref2().GetRule_id_or_at2(), *this).second; AddStatementToBlocks(blocks, BuildRestore( - Ctx.Pos(), - TString(Ctx.GetPrefixPath(context.ServiceId, context.Cluster)), + Ctx_.Pos(), + TString(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster)), objectId, TRestoreParameters{ .At = at, @@ -1797,19 +1797,19 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } case TRule_sql_stmt_core::kAltSqlStmtCore57: { // alter_sequence_stmt: ALTER SEQUENCE (IF EXISTS)? object_ref alter_sequence_action (COMMA alter_sequence_action)*; - Ctx.BodyPart(); + Ctx_.BodyPart(); auto& node = core.GetAlt_sql_stmt_core57().GetRule_alter_sequence_stmt1(); - Ctx.Token(node.GetToken1()); - const TPosition pos = Ctx.Pos(); + Ctx_.Token(node.GetToken1()); + const TPosition pos = Ctx_.Pos(); - TString service = Ctx.Scoped->CurrService; - TDeferredAtom cluster = Ctx.Scoped->CurrCluster; + TString service = Ctx_.Scoped->CurrService; + TDeferredAtom cluster = Ctx_.Scoped->CurrCluster; if (cluster.Empty()) { Error() << "USE statement is missing - no default cluster is selected"; return false; } - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref4().HasBlock1()) { if (!ClusterExpr(node.GetRule_object_ref4().GetBlock1().GetRule_cluster_expr1(), @@ -1825,8 +1825,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& if (node.HasBlock3()) { // IF EXISTS params.MissingOk = true; Y_DEBUG_ABORT_UNLESS( - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock3().GetToken1().GetId(), IF) && - IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock3().GetToken2().GetId(), EXISTS) + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock3().GetToken1().GetId(), IF) && + IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock3().GetToken2().GetId(), EXISTS) ); } @@ -1836,14 +1836,14 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildAlterSequence(pos, service, cluster, id, params, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildAlterSequence(pos, service, cluster, id, params, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore58: { // create_transfer_stmt: CREATE TRANSFER auto& node = core.GetAlt_sql_stmt_core58().GetRule_create_transfer_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref3().HasBlock1()) { const auto& cluster = node.GetRule_object_ref3().GetBlock1().GetRule_cluster_expr1(); if (!ClusterExpr(cluster, false, context.ServiceId, context.Cluster)) { @@ -1851,10 +1851,10 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - auto prefixPath = Ctx.GetPrefixPath(context.ServiceId, context.Cluster); + auto prefixPath = Ctx_.GetPrefixPath(context.ServiceId, context.Cluster); std::map<TString, TNodePtr> settings; - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); if (!TransferSettings(settings, node.GetRule_transfer_settings11(), expr, true)) { return false; } @@ -1869,14 +1869,14 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } } - AddStatementToBlocks(blocks, BuildCreateTransfer(Ctx.Pos(), BuildTablePath(prefixPath, id), + AddStatementToBlocks(blocks, BuildCreateTransfer(Ctx_.Pos(), BuildTablePath(prefixPath, id), std::move(source), std::move(target), std::move(transformLambda), std::move(settings), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore59: { // alter_transfer_stmt: ALTER TRANSFER auto& node = core.GetAlt_sql_stmt_core59().GetRule_alter_transfer_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref3().HasBlock1()) { const auto& cluster = node.GetRule_object_ref3().GetBlock1().GetRule_cluster_expr1(); if (!ClusterExpr(cluster, false, context.ServiceId, context.Cluster)) { @@ -1886,7 +1886,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& std::map<TString, TNodePtr> settings; std::optional<TString> transformLambda; - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); auto transferAlterAction = [&](std::optional<TString>& transformLambda, const TRule_alter_transfer_action& in) { @@ -1914,15 +1914,15 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } const TString id = Id(node.GetRule_object_ref3().GetRule_id_or_at2(), *this).second; - AddStatementToBlocks(blocks, BuildAlterTransfer(Ctx.Pos(), - BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), id), + AddStatementToBlocks(blocks, BuildAlterTransfer(Ctx_.Pos(), + BuildTablePath(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster), id), std::move(transformLambda), std::move(settings), context)); break; } case TRule_sql_stmt_core::kAltSqlStmtCore60: { // drop_transfer_stmt: DROP TRANSFER auto& node = core.GetAlt_sql_stmt_core60().GetRule_drop_transfer_stmt1(); - TObjectOperatorContext context(Ctx.Scoped); + TObjectOperatorContext context(Ctx_.Scoped); if (node.GetRule_object_ref3().HasBlock1()) { const auto& cluster = node.GetRule_object_ref3().GetBlock1().GetRule_cluster_expr1(); if (!ClusterExpr(cluster, false, context.ServiceId, context.Cluster)) { @@ -1931,8 +1931,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& } const TString id = Id(node.GetRule_object_ref3().GetRule_id_or_at2(), *this).second; - AddStatementToBlocks(blocks, BuildDropTransfer(Ctx.Pos(), - BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), id), + AddStatementToBlocks(blocks, BuildDropTransfer(Ctx_.Pos(), + BuildTablePath(Ctx_.GetPrefixPath(context.ServiceId, context.Cluster), id), node.HasBlock4(), context)); break; } @@ -1942,7 +1942,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& const auto& action = node.GetRule_alter_database_action4(); TAlterDatabaseParameters params; - params.DbPath = TDeferredAtom(Ctx.Pos(), Id(node.GetRule_an_id_schema3(), *this)); + params.DbPath = TDeferredAtom(Ctx_.Pos(), Id(node.GetRule_an_id_schema3(), *this)); switch (action.GetAltCase()) { case TRule_alter_database_action::kAltAlterDatabaseAction1: { @@ -1971,17 +1971,17 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& return false; } - const TPosition pos = Ctx.Pos(); - TString service = Ctx.Scoped->CurrService; - TDeferredAtom cluster = Ctx.Scoped->CurrCluster; + const TPosition pos = Ctx_.Pos(); + TString service = Ctx_.Scoped->CurrService; + TDeferredAtom cluster = Ctx_.Scoped->CurrCluster; - auto stmt = BuildAlterDatabase(pos, service, cluster, params, Ctx.Scoped); + auto stmt = BuildAlterDatabase(pos, service, cluster, params, Ctx_.Scoped); AddStatementToBlocks(blocks, stmt); break; } case TRule_sql_stmt_core::kAltSqlStmtCore62: { // show_create_table_stmt: SHOW CREATE (TABLE | VIEW) table_ref - Ctx.BodyPart(); + Ctx_.BodyPart(); const auto& rule = core.GetAlt_sql_stmt_core62().GetRule_show_create_table_stmt1(); TTableRef tr; @@ -1997,29 +1997,29 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core& YQL_ENSURE(false, "Unsupported SHOW CREATE statement type: " << typeToken); } - AddStatementToBlocks(blocks, BuildShowCreate(Ctx.Pos(), tr, type, Ctx.Scoped)); + AddStatementToBlocks(blocks, BuildShowCreate(Ctx_.Pos(), tr, type, Ctx_.Scoped)); break; } case TRule_sql_stmt_core::ALT_NOT_SET: - Ctx.IncrementMonCounter("sql_errors", "UnknownStatement" + internalStatementName); + Ctx_.IncrementMonCounter("sql_errors", "UnknownStatement" + internalStatementName); AltNotImplemented("sql_stmt_core", core); return false; } - Ctx.IncrementMonCounter("sql_features", internalStatementName); - return !Ctx.HasPendingErrors; + Ctx_.IncrementMonCounter("sql_features", internalStatementName); + return !Ctx_.HasPendingErrors; } bool TSqlQuery::DeclareStatement(const TRule_declare_stmt& stmt) { TNodePtr defaultValue; if (stmt.HasBlock5()) { - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); auto exprOrId = sqlExpr.LiteralExpr(stmt.GetBlock5().GetRule_literal_value2()); if (!exprOrId) { return false; } if (!exprOrId->Expr) { - Ctx.Error() << "Identifier is not expected here"; + Ctx_.Error() << "Identifier is not expected here"; return false; } defaultValue = exprOrId->Expr; @@ -2028,7 +2028,7 @@ bool TSqlQuery::DeclareStatement(const TRule_declare_stmt& stmt) { Error() << "DEFAULT value not supported yet"; return false; } - if (!Ctx.IsParseHeading()) { + if (!Ctx_.IsParseHeading()) { Error() << "DECLARE statement should be in beginning of query, but it's possible to use PRAGMA or USE before it"; return false; } @@ -2037,27 +2037,27 @@ bool TSqlQuery::DeclareStatement(const TRule_declare_stmt& stmt) { if (!NamedNodeImpl(stmt.GetRule_bind_parameter2(), varName, *this)) { return false; } - const auto varPos = Ctx.Pos(); + const auto varPos = Ctx_.Pos(); const auto typeNode = TypeNode(stmt.GetRule_type_name4()); if (!typeNode) { return false; } if (IsAnonymousName(varName)) { - Ctx.Error(varPos) << "Can not use anonymous name '" << varName << "' in DECLARE statement"; + Ctx_.Error(varPos) << "Can not use anonymous name '" << varName << "' in DECLARE statement"; return false; } - if (Ctx.IsAlreadyDeclared(varName)) { - Ctx.Warning(varPos, TIssuesIds::YQL_DUPLICATE_DECLARE) << "Duplicate declaration of '" << varName << "' will be ignored"; + if (Ctx_.IsAlreadyDeclared(varName)) { + Ctx_.Warning(varPos, TIssuesIds::YQL_DUPLICATE_DECLARE) << "Duplicate declaration of '" << varName << "' will be ignored"; } else { PushNamedAtom(varPos, varName); - Ctx.DeclareVariable(varName, varPos, typeNode); + Ctx_.DeclareVariable(varName, varPos, typeNode); } return true; } bool TSqlQuery::ExportStatement(const TRule_export_stmt& stmt) { - if ((!Ctx.Settings.AlwaysAllowExports && Mode != NSQLTranslation::ESqlMode::LIBRARY) || !TopLevel) { + if ((!Ctx_.Settings.AlwaysAllowExports && Mode_ != NSQLTranslation::ESqlMode::LIBRARY) || !TopLevel_) { Error() << "EXPORT statement should be used only in a library on the top level"; return false; } @@ -2068,7 +2068,7 @@ bool TSqlQuery::ExportStatement(const TRule_export_stmt& stmt) { } for (auto& bindName : bindNames) { - if (!Ctx.AddExport(bindName.Pos, bindName.Name)) { + if (!Ctx_.AddExport(bindName.Pos, bindName.Name)) { return false; } } @@ -2297,7 +2297,7 @@ bool TSqlQuery::AlterTableAddColumn(const TRule_alter_table_add_column& node, TA return false; } if (columnSchema->Families.size() > 1) { - Ctx.Error() << "Several column families for a single column are not yet supported"; + Ctx_.Error() << "Several column families for a single column are not yet supported"; return false; } params.AddColumns.push_back(*columnSchema); @@ -2349,35 +2349,35 @@ bool TSqlQuery::AlterTableAlterFamily(const TRule_alter_table_alter_column_famil const TRule_family_setting_value& value = node.GetRule_family_setting_value6(); if (to_lower(settingName.Name) == "data") { if (entry->Data) { - Ctx.Error() << "Redefinition of 'data' setting for column family '" << name.Name + Ctx_.Error() << "Redefinition of 'data' setting for column family '" << name.Name << "' in one alter"; return false; } - if (!StoreString(value, entry->Data, Ctx)) { - Ctx.Error() << to_upper(settingName.Name) << " value should be a string literal"; + if (!StoreString(value, entry->Data, Ctx_)) { + Ctx_.Error() << to_upper(settingName.Name) << " value should be a string literal"; return false; } } else if (to_lower(settingName.Name) == "compression") { if (entry->Compression) { - Ctx.Error() << "Redefinition of 'compression' setting for column family '" << name.Name + Ctx_.Error() << "Redefinition of 'compression' setting for column family '" << name.Name << "' in one alter"; return false; } - if (!StoreString(value, entry->Compression, Ctx)) { - Ctx.Error() << to_upper(settingName.Name) << " value should be a string literal"; + if (!StoreString(value, entry->Compression, Ctx_)) { + Ctx_.Error() << to_upper(settingName.Name) << " value should be a string literal"; return false; } } else if (to_lower(settingName.Name) == "compression_level") { if (entry->CompressionLevel) { - Ctx.Error() << "Redefinition of 'compression_level' setting for column family '" << name.Name << "' in one alter"; + Ctx_.Error() << "Redefinition of 'compression_level' setting for column family '" << name.Name << "' in one alter"; return false; } - if (!StoreInt(value, entry->CompressionLevel, Ctx)) { - Ctx.Error() << to_upper(settingName.Name) << " value should be an integer"; + if (!StoreInt(value, entry->CompressionLevel, Ctx_)) { + Ctx_.Error() << to_upper(settingName.Name) << " value should be an integer"; return false; } } else { - Ctx.Error() << "Unknown table setting: " << settingName.Name; + Ctx_.Error() << "Unknown table setting: " << settingName.Name; return false; } return true; @@ -2507,12 +2507,12 @@ bool TSqlQuery::AlterSequenceAction(const TRule_alter_sequence_action& node, TSe switch (node.Alt_case()) { case TRule_alter_sequence_action::kAltAlterSequenceAction1: { if (params.StartValue) { - Ctx.Error(Ctx.Pos()) << "Start value defined more than once"; + Ctx_.Error(Ctx_.Pos()) << "Start value defined more than once"; return false; } - auto literalNumber = LiteralNumber(Ctx, node.GetAlt_alter_sequence_action1().GetRule_integer3()); + auto literalNumber = LiteralNumber(Ctx_, node.GetAlt_alter_sequence_action1().GetRule_integer3()); if (literalNumber) { - params.StartValue = TDeferredAtom(literalNumber, Ctx); + params.StartValue = TDeferredAtom(literalNumber, Ctx_); } else { return false; } @@ -2520,13 +2520,13 @@ bool TSqlQuery::AlterSequenceAction(const TRule_alter_sequence_action& node, TSe } case TRule_alter_sequence_action::kAltAlterSequenceAction2: { if (params.IsRestart) { - Ctx.Error(Ctx.Pos()) << "Restart value defined more than once"; + Ctx_.Error(Ctx_.Pos()) << "Restart value defined more than once"; return false; } - auto literalNumber = LiteralNumber(Ctx, node.GetAlt_alter_sequence_action2().GetRule_integer3()); + auto literalNumber = LiteralNumber(Ctx_, node.GetAlt_alter_sequence_action2().GetRule_integer3()); if (literalNumber) { params.IsRestart = true; - params.RestartValue = TDeferredAtom(literalNumber, Ctx); + params.RestartValue = TDeferredAtom(literalNumber, Ctx_); } else { return false; } @@ -2534,7 +2534,7 @@ bool TSqlQuery::AlterSequenceAction(const TRule_alter_sequence_action& node, TSe } case TRule_alter_sequence_action::kAltAlterSequenceAction3: { if (params.IsRestart) { - Ctx.Error(Ctx.Pos()) << "Restart value defined more than once"; + Ctx_.Error(Ctx_.Pos()) << "Restart value defined more than once"; return false; } params.IsRestart = true; @@ -2542,12 +2542,12 @@ bool TSqlQuery::AlterSequenceAction(const TRule_alter_sequence_action& node, TSe } case TRule_alter_sequence_action::kAltAlterSequenceAction4: { if (params.Increment) { - Ctx.Error(Ctx.Pos()) << "Increment defined more than once"; + Ctx_.Error(Ctx_.Pos()) << "Increment defined more than once"; return false; } - auto literalNumber = LiteralNumber(Ctx, node.GetAlt_alter_sequence_action4().GetRule_integer3()); + auto literalNumber = LiteralNumber(Ctx_, node.GetAlt_alter_sequence_action4().GetRule_integer3()); if (literalNumber) { - params.Increment = TDeferredAtom(literalNumber, Ctx); + params.Increment = TDeferredAtom(literalNumber, Ctx_); } else { return false; } @@ -2568,7 +2568,7 @@ bool TSqlQuery::AlterTableAlterColumnDropNotNull(const TRule_alter_table_alter_c } bool TSqlQuery::AlterTableAddChangefeed(const TRule_alter_table_add_changefeed& node, TAlterTableParameters& params) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); return CreateChangefeed(node.GetRule_changefeed2(), expr, params.AddChangefeeds); } @@ -2585,7 +2585,7 @@ bool TSqlQuery::AlterTableAlterChangefeed(const TRule_alter_table_alter_changefe case TRule_changefeed_alter_settings::kAltChangefeedAlterSettings2: { // SET const auto& rule = alter.GetAlt_changefeed_alter_settings2().GetRule_changefeed_settings3(); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); if (!ChangefeedSettings(rule, expr, params.AlterChangefeeds.back().Settings, true)) { return false; } @@ -2611,10 +2611,10 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success const TString& lowerPrefix = to_lower(prefix); const TString pragma(Id(stmt.GetRule_an_id3(), *this)); TString normalizedPragma(pragma); - TMaybe<TIssue> normalizeError = NormalizeName(Ctx.Pos(), normalizedPragma); + TMaybe<TIssue> normalizeError = NormalizeName(Ctx_.Pos(), normalizedPragma); if (!normalizeError.Empty()) { Error() << normalizeError->GetMessage(); - Ctx.IncrementMonCounter("sql_errors", "NormalizePragmaError"); + Ctx_.IncrementMonCounter("sql_errors", "NormalizePragmaError"); return {}; } @@ -2647,17 +2647,17 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success for (auto pragmaValue : pragmaValues) { if (pragmaValue->HasAlt_pragma_value3()) { auto value = Token(pragmaValue->GetAlt_pragma_value3().GetToken1()); - auto parsed = StringContentOrIdContent(Ctx, Ctx.Pos(), value); + auto parsed = StringContentOrIdContent(Ctx_, Ctx_.Pos(), value); if (!parsed) { return {}; } TString prefix; if (withFileAlias && (values.size() == 0)) { - prefix = Ctx.Settings.FileAliasPrefix; + prefix = Ctx_.Settings.FileAliasPrefix; } - values.push_back(TDeferredAtom(Ctx.Pos(), prefix + parsed->Content)); + values.push_back(TDeferredAtom(Ctx_.Pos(), prefix + parsed->Content)); } else if (pragmaValue->HasAlt_pragma_value2() && pragmaValue->GetAlt_pragma_value2().GetRule_id1().HasAlt_id2() @@ -2677,129 +2677,129 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success TString prefix; if (withFileAlias && (values.size() == 0)) { - prefix = Ctx.Settings.FileAliasPrefix; + prefix = Ctx_.Settings.FileAliasPrefix; } TDeferredAtom atom; - MakeTableFromExpression(Ctx.Pos(), Ctx, namedNode, atom, prefix); + MakeTableFromExpression(Ctx_.Pos(), Ctx_, namedNode, atom, prefix); values.push_back(atom); } else { Error() << "Expected string" << (withConfigure ? ", named parameter" : "") << " or 'default' keyword as pragma value for pragma: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } 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"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return{}; } if (normalizedPragma == "refselect") { - Ctx.PragmaRefSelect = true; - Ctx.IncrementMonCounter("sql_pragma", "RefSelect"); + Ctx_.PragmaRefSelect = true; + Ctx_.IncrementMonCounter("sql_pragma", "RefSelect"); } else if (normalizedPragma == "sampleselect") { - Ctx.PragmaSampleSelect = true; - Ctx.IncrementMonCounter("sql_pragma", "SampleSelect"); + Ctx_.PragmaSampleSelect = true; + Ctx_.IncrementMonCounter("sql_pragma", "SampleSelect"); } else if (normalizedPragma == "allowdotinalias") { - Ctx.PragmaAllowDotInAlias = true; - Ctx.IncrementMonCounter("sql_pragma", "AllowDotInAlias"); + Ctx_.PragmaAllowDotInAlias = true; + Ctx_.IncrementMonCounter("sql_pragma", "AllowDotInAlias"); } else if (normalizedPragma == "udf") { if ((values.size() != 1 && values.size() != 2) || pragmaValueDefault) { Error() << "Expected file alias as pragma value"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - if (Ctx.Settings.FileAliasPrefix) { + if (Ctx_.Settings.FileAliasPrefix) { if (values.size() == 1) { - values.emplace_back(TDeferredAtom(Ctx.Pos(), "")); + values.emplace_back(TDeferredAtom(Ctx_.Pos(), "")); } TString prefix; - if (!values[1].GetLiteral(prefix, Ctx)) { + if (!values[1].GetLiteral(prefix, Ctx_)) { Error() << "Expected literal UDF module prefix in views"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - values[1] = TDeferredAtom(Ctx.Pos(), Ctx.Settings.FileAliasPrefix + prefix); + values[1] = TDeferredAtom(Ctx_.Pos(), Ctx_.Settings.FileAliasPrefix + prefix); } - Ctx.IncrementMonCounter("sql_pragma", "udf"); + Ctx_.IncrementMonCounter("sql_pragma", "udf"); success = true; - return BuildPragma(Ctx.Pos(), TString(ConfigProviderName), "ImportUdfs", values, false); + return BuildPragma(Ctx_.Pos(), TString(ConfigProviderName), "ImportUdfs", values, false); } else if (normalizedPragma == "packageversion") { if (values.size() != 2 || pragmaValueDefault) { Error() << "Expected package name and version"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } ui32 version = 0; TString versionString; TString packageName; - if (!values[0].GetLiteral(packageName, Ctx) || !values[1].GetLiteral(versionString, Ctx)) { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + if (!values[0].GetLiteral(packageName, Ctx_) || !values[1].GetLiteral(versionString, Ctx_)) { + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } if (!PackageVersionFromString(versionString, version)) { Error() << "Unable to parse package version, possible values 0, 1, draft, release"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.SetPackageVersion(packageName, version); - Ctx.IncrementMonCounter("sql_pragma", "PackageVersion"); + Ctx_.SetPackageVersion(packageName, version); + Ctx_.IncrementMonCounter("sql_pragma", "PackageVersion"); success = true; - return BuildPragma(Ctx.Pos(), TString(ConfigProviderName), "SetPackageVersion", TVector<TDeferredAtom>{ values[0], TDeferredAtom(values[1].Build()->GetPos(), ToString(version)) }, false); + return BuildPragma(Ctx_.Pos(), TString(ConfigProviderName), "SetPackageVersion", TVector<TDeferredAtom>{ values[0], TDeferredAtom(values[1].Build()->GetPos(), ToString(version)) }, false); } else if (normalizedPragma == "file") { if (values.size() < 2U || values.size() > 3U || pragmaValueDefault) { Error() << "Expected file alias, url and optional token name as pragma values"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "file"); + Ctx_.IncrementMonCounter("sql_pragma", "file"); success = true; - return BuildPragma(Ctx.Pos(), TString(ConfigProviderName), "AddFileByUrl", values, false); + return BuildPragma(Ctx_.Pos(), TString(ConfigProviderName), "AddFileByUrl", values, false); } else if (normalizedPragma == "fileoption") { if (values.size() < 3U) { Error() << "Expected file alias, option key and value"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "FileOption"); + Ctx_.IncrementMonCounter("sql_pragma", "FileOption"); success = true; - return BuildPragma(Ctx.Pos(), TString(ConfigProviderName), "SetFileOption", values, false); + return BuildPragma(Ctx_.Pos(), TString(ConfigProviderName), "SetFileOption", values, false); } else if (normalizedPragma == "folder") { if (values.size() < 2U || values.size() > 3U || pragmaValueDefault) { Error() << "Expected folder alias, url and optional token name as pragma values"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "folder"); + Ctx_.IncrementMonCounter("sql_pragma", "folder"); success = true; - return BuildPragma(Ctx.Pos(), TString(ConfigProviderName), "AddFolderByUrl", values, false); + return BuildPragma(Ctx_.Pos(), TString(ConfigProviderName), "AddFolderByUrl", values, false); } else if (normalizedPragma == "library") { if (values.size() < 1) { Error() << "Expected non-empty file alias"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return{}; } if (values.size() > 3) { Error() << "Expected file alias and optional url and token name as pragma values"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return{}; } TString alias; - if (!values.front().GetLiteral(alias, Ctx)) { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + if (!values.front().GetLiteral(alias, Ctx_)) { + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return{}; } @@ -2809,8 +2809,8 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success auto& first = std::get<1U>(library); first.emplace(); first->second = values[1].Build()->GetPos(); - if (!values[1].GetLiteral(first->first, Ctx)) { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + if (!values[1].GetLiteral(first->first, Ctx_)) { + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return{}; } @@ -2826,25 +2826,25 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success auto& second = std::get<2U>(library); second.emplace(); second->second = values[2].Build()->GetPos(); - if (!values[2].GetLiteral(second->first, Ctx)) { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + if (!values[2].GetLiteral(second->first, Ctx_)) { + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return{}; } } } - Ctx.Libraries[alias] = std::move(library); - Ctx.IncrementMonCounter("sql_pragma", "library"); + Ctx_.Libraries[alias] = std::move(library); + Ctx_.IncrementMonCounter("sql_pragma", "library"); } else if (normalizedPragma == "package") { if (values.size() < 2U || values.size() > 3U) { Error() << "Expected package name, url and optional token name as pragma values"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } TString packageName; - if (!values.front().GetLiteral(packageName, Ctx)) { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + if (!values.front().GetLiteral(packageName, Ctx_)) { + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } @@ -2872,8 +2872,8 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success literalPtr->second = values[index].Build()->GetPos(); - if (!values[index].GetLiteral(literalPtr->first, Ctx)) { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + if (!values[index].GetLiteral(literalPtr->first, Ctx_)) { + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return false; } @@ -2900,135 +2900,135 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success return {}; } - Ctx.Packages[packageName] = std::move(package); - Ctx.IncrementMonCounter("sql_pragma", "package"); + Ctx_.Packages[packageName] = std::move(package); + Ctx_.IncrementMonCounter("sql_pragma", "package"); } else if (normalizedPragma == "overridelibrary") { if (values.size() != 1U) { Error() << "Expected override library alias as pragma value"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } TString alias; - if (!values.front().GetLiteral(alias, Ctx)) { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + if (!values.front().GetLiteral(alias, Ctx_)) { + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } TContext::TOverrideLibraryStuff overrideLibrary; std::get<TPosition>(overrideLibrary) = values.front().Build()->GetPos(); - Ctx.OverrideLibraries[alias] = std::move(overrideLibrary); - Ctx.IncrementMonCounter("sql_pragma", "overridelibrary"); + Ctx_.OverrideLibraries[alias] = std::move(overrideLibrary); + Ctx_.IncrementMonCounter("sql_pragma", "overridelibrary"); } else if (normalizedPragma == "directread") { - Ctx.PragmaDirectRead = true; - Ctx.IncrementMonCounter("sql_pragma", "DirectRead"); + Ctx_.PragmaDirectRead = true; + Ctx_.IncrementMonCounter("sql_pragma", "DirectRead"); } else if (normalizedPragma == "equijoin") { - Ctx.IncrementMonCounter("sql_pragma", "EquiJoin"); + Ctx_.IncrementMonCounter("sql_pragma", "EquiJoin"); } else if (normalizedPragma == "autocommit") { - Ctx.PragmaAutoCommit = true; - Ctx.IncrementMonCounter("sql_pragma", "AutoCommit"); + Ctx_.PragmaAutoCommit = true; + Ctx_.IncrementMonCounter("sql_pragma", "AutoCommit"); } else if (normalizedPragma == "usetableprefixforeach") { - Ctx.PragmaUseTablePrefixForEach = true; - Ctx.IncrementMonCounter("sql_pragma", "UseTablePrefixForEach"); + Ctx_.PragmaUseTablePrefixForEach = true; + Ctx_.IncrementMonCounter("sql_pragma", "UseTablePrefixForEach"); } else if (normalizedPragma == "tablepathprefix") { TString value; TMaybe<TString> arg; if (values.size() == 1 || values.size() == 2) { - if (!values.front().GetLiteral(value, Ctx)) { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + if (!values.front().GetLiteral(value, Ctx_)) { + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } if (values.size() == 2) { arg = value; - if (!values.back().GetLiteral(value, Ctx)) { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + if (!values.back().GetLiteral(value, Ctx_)) { + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } - if (!Ctx.SetPathPrefix(value, arg)) { + if (!Ctx_.SetPathPrefix(value, arg)) { return {}; } } else { Error() << "Expected path prefix or tuple of (Provider, PathPrefix) or" << " (Cluster, PathPrefix) as pragma value"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "PathPrefix"); + Ctx_.IncrementMonCounter("sql_pragma", "PathPrefix"); } else if (normalizedPragma == "groupbylimit") { - if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx.PragmaGroupByLimit)) { + if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx_.PragmaGroupByLimit)) { Error() << "Expected unsigned integer literal as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "GroupByLimit"); + Ctx_.IncrementMonCounter("sql_pragma", "GroupByLimit"); } else if (normalizedPragma == "groupbycubelimit") { - if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx.PragmaGroupByCubeLimit)) { + if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx_.PragmaGroupByCubeLimit)) { Error() << "Expected unsigned integer literal as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "GroupByCubeLimit"); + Ctx_.IncrementMonCounter("sql_pragma", "GroupByCubeLimit"); } else if (normalizedPragma == "simplecolumns") { - Ctx.SimpleColumns = true; - Ctx.IncrementMonCounter("sql_pragma", "SimpleColumns"); + Ctx_.SimpleColumns = true; + Ctx_.IncrementMonCounter("sql_pragma", "SimpleColumns"); } else if (normalizedPragma == "disablesimplecolumns") { - Ctx.SimpleColumns = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableSimpleColumns"); + Ctx_.SimpleColumns = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableSimpleColumns"); } else if (normalizedPragma == "coalescejoinkeysonqualifiedall") { - Ctx.CoalesceJoinKeysOnQualifiedAll = true; - Ctx.IncrementMonCounter("sql_pragma", "CoalesceJoinKeysOnQualifiedAll"); + Ctx_.CoalesceJoinKeysOnQualifiedAll = true; + Ctx_.IncrementMonCounter("sql_pragma", "CoalesceJoinKeysOnQualifiedAll"); } else if (normalizedPragma == "disablecoalescejoinkeysonqualifiedall") { - Ctx.CoalesceJoinKeysOnQualifiedAll = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableCoalesceJoinKeysOnQualifiedAll"); + Ctx_.CoalesceJoinKeysOnQualifiedAll = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableCoalesceJoinKeysOnQualifiedAll"); } else if (normalizedPragma == "resultrowslimit") { - if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx.ResultRowsLimit)) { + if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx_.ResultRowsLimit)) { Error() << "Expected unsigned integer literal as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "ResultRowsLimit"); + Ctx_.IncrementMonCounter("sql_pragma", "ResultRowsLimit"); } else if (normalizedPragma == "resultsizelimit") { - if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx.ResultSizeLimit)) { + if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx_.ResultSizeLimit)) { Error() << "Expected unsigned integer literal as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "ResultSizeLimit"); + Ctx_.IncrementMonCounter("sql_pragma", "ResultSizeLimit"); } else if (normalizedPragma == "runtimeloglevel") { if (values.size() != 1 || !values[0].GetLiteral()) { Error() << "Expected LogLevel as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } auto value = to_title(*values[0].GetLiteral()); if (!NUdf::TryLevelFromString(value)) { Error() << "Expected LogLevel as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.RuntimeLogLevel = value; - Ctx.IncrementMonCounter("sql_pragma", "RuntimeLogLevel"); + Ctx_.RuntimeLogLevel = value; + Ctx_.IncrementMonCounter("sql_pragma", "RuntimeLogLevel"); } else if (normalizedPragma == "warning") { if (values.size() != 2U || values.front().Empty() || values.back().Empty()) { Error() << "Expected arguments <action>, <issueId> for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } TString action; TString codePattern; - if (!values[0].GetLiteral(action, Ctx) || !values[1].GetLiteral(codePattern, Ctx)) { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + if (!values[0].GetLiteral(action, Ctx_) || !values[1].GetLiteral(codePattern, Ctx_)) { + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } @@ -3040,119 +3040,119 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success break; case TWarningRule::EParseResult::PARSE_PATTERN_FAIL: case TWarningRule::EParseResult::PARSE_ACTION_FAIL: - Ctx.Error() << parseError; + Ctx_.Error() << parseError; return {}; default: Y_ENSURE(false, "Unknown parse result"); } - Ctx.WarningPolicy.AddRule(rule); + Ctx_.WarningPolicy.AddRule(rule); if (rule.GetPattern() == "*" && rule.GetAction() == EWarningAction::ERROR) { // Keep 'unused symbol' warning as warning unless explicitly set to error - Ctx.SetWarningPolicyFor(TIssuesIds::YQL_UNUSED_SYMBOL, EWarningAction::DEFAULT); + Ctx_.SetWarningPolicyFor(TIssuesIds::YQL_UNUSED_SYMBOL, EWarningAction::DEFAULT); } - Ctx.IncrementMonCounter("sql_pragma", "warning"); + Ctx_.IncrementMonCounter("sql_pragma", "warning"); } else if (normalizedPragma == "greetings") { if (values.size() > 1) { Error() << "Multiple arguments are not expected for " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } if (values.empty()) { - values.emplace_back(TDeferredAtom(Ctx.Pos(), "Hello, world! And best wishes from the YQL Team!")); + values.emplace_back(TDeferredAtom(Ctx_.Pos(), "Hello, world! And best wishes from the YQL Team!")); } TString arg; - if (!values.front().GetLiteral(arg, Ctx)) { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + if (!values.front().GetLiteral(arg, Ctx_)) { + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.Info(Ctx.Pos()) << arg; + Ctx_.Info(Ctx_.Pos()) << arg; } else if (normalizedPragma == "warningmsg") { if (values.size() != 1 || !values[0].GetLiteral()) { Error() << "Expected string literal as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_PRAGMA_WARNING_MSG) << *values[0].GetLiteral(); + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_PRAGMA_WARNING_MSG) << *values[0].GetLiteral(); } else if (normalizedPragma == "errormsg") { if (values.size() != 1 || !values[0].GetLiteral()) { Error() << "Expected string literal as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.Error(Ctx.Pos()) << *values[0].GetLiteral(); + Ctx_.Error(Ctx_.Pos()) << *values[0].GetLiteral(); } else if (normalizedPragma == "classicdivision") { - if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx.Scoped->PragmaClassicDivision)) { + 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"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "ClassicDivision"); + Ctx_.IncrementMonCounter("sql_pragma", "ClassicDivision"); } else if (normalizedPragma == "checkedops") { - if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx.Scoped->PragmaCheckedOps)) { + if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx_.Scoped->PragmaCheckedOps)) { Error() << "Expected boolean literal as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "CheckedOps"); + Ctx_.IncrementMonCounter("sql_pragma", "CheckedOps"); } else if (normalizedPragma == "disableunordered") { - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA) + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA) << "Use of deprecated DisableUnordered pragma. It will be dropped soon"; } else if (normalizedPragma == "pullupflatmapoverjoin") { - Ctx.PragmaPullUpFlatMapOverJoin = true; - Ctx.IncrementMonCounter("sql_pragma", "PullUpFlatMapOverJoin"); + Ctx_.PragmaPullUpFlatMapOverJoin = true; + Ctx_.IncrementMonCounter("sql_pragma", "PullUpFlatMapOverJoin"); } else if (normalizedPragma == "disablepullupflatmapoverjoin") { - Ctx.PragmaPullUpFlatMapOverJoin = false; - Ctx.IncrementMonCounter("sql_pragma", "DisablePullUpFlatMapOverJoin"); + Ctx_.PragmaPullUpFlatMapOverJoin = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisablePullUpFlatMapOverJoin"); } else if (normalizedPragma == "filterpushdownoverjoinoptionalside") { - Ctx.FilterPushdownOverJoinOptionalSide = true; - Ctx.IncrementMonCounter("sql_pragma", "FilterPushdownOverJoinOptionalSide"); + Ctx_.FilterPushdownOverJoinOptionalSide = true; + Ctx_.IncrementMonCounter("sql_pragma", "FilterPushdownOverJoinOptionalSide"); } else if (normalizedPragma == "disablefilterpushdownoverjoinoptionalside") { - Ctx.FilterPushdownOverJoinOptionalSide = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableFilterPushdownOverJoinOptionalSide"); + Ctx_.FilterPushdownOverJoinOptionalSide = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableFilterPushdownOverJoinOptionalSide"); } else if (normalizedPragma == "rotatejointree") { - if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx.RotateJoinTree)) { + if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx_.RotateJoinTree)) { Error() << "Expected boolean literal as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } else if (normalizedPragma == "allowunnamedcolumns") { - Ctx.WarnUnnamedColumns = false; - Ctx.IncrementMonCounter("sql_pragma", "AllowUnnamedColumns"); + Ctx_.WarnUnnamedColumns = false; + Ctx_.IncrementMonCounter("sql_pragma", "AllowUnnamedColumns"); } else if (normalizedPragma == "warnunnamedcolumns") { - Ctx.WarnUnnamedColumns = true; - Ctx.IncrementMonCounter("sql_pragma", "WarnUnnamedColumns"); + Ctx_.WarnUnnamedColumns = true; + Ctx_.IncrementMonCounter("sql_pragma", "WarnUnnamedColumns"); } else if (normalizedPragma == "discoverymode") { - Ctx.DiscoveryMode = true; - Ctx.IncrementMonCounter("sql_pragma", "DiscoveryMode"); + Ctx_.DiscoveryMode = true; + Ctx_.IncrementMonCounter("sql_pragma", "DiscoveryMode"); } else if (normalizedPragma == "enablesystemcolumns") { - if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx.EnableSystemColumns)) { + if (values.size() != 1 || !values[0].GetLiteral() || !TryFromString(*values[0].GetLiteral(), Ctx_.EnableSystemColumns)) { Error() << "Expected boolean literal as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "EnableSystemColumns"); + Ctx_.IncrementMonCounter("sql_pragma", "EnableSystemColumns"); } else if (normalizedPragma == "ansiinforemptyornullableitemscollections") { - Ctx.AnsiInForEmptyOrNullableItemsCollections = true; - Ctx.IncrementMonCounter("sql_pragma", "AnsiInForEmptyOrNullableItemsCollections"); + Ctx_.AnsiInForEmptyOrNullableItemsCollections = true; + Ctx_.IncrementMonCounter("sql_pragma", "AnsiInForEmptyOrNullableItemsCollections"); } else if (normalizedPragma == "disableansiinforemptyornullableitemscollections") { - Ctx.AnsiInForEmptyOrNullableItemsCollections = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableAnsiInForEmptyOrNullableItemsCollections"); + Ctx_.AnsiInForEmptyOrNullableItemsCollections = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableAnsiInForEmptyOrNullableItemsCollections"); } else if (normalizedPragma == "dqengine" || normalizedPragma == "blockengine") { - Ctx.IncrementMonCounter("sql_pragma", "DqEngine"); + Ctx_.IncrementMonCounter("sql_pragma", "DqEngine"); if (values.size() != 1 || !values[0].GetLiteral() || ! (*values[0].GetLiteral() == "disable" || *values[0].GetLiteral() == "auto" || *values[0].GetLiteral() == "force")) { Error() << "Expected `disable|auto|force' argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } const bool isDqEngine = normalizedPragma == "dqengine"; - auto& enable = isDqEngine ? Ctx.DqEngineEnable : Ctx.BlockEngineEnable; - auto& force = isDqEngine ? Ctx.DqEngineForce : Ctx.BlockEngineForce; + auto& enable = isDqEngine ? Ctx_.DqEngineEnable : Ctx_.BlockEngineEnable; + auto& force = isDqEngine ? Ctx_.DqEngineForce : Ctx_.BlockEngineForce; if (*values[0].GetLiteral() == "disable") { enable = false; force = false; @@ -3164,274 +3164,274 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success force = false; } - if (isDqEngine && Ctx.Engine) { - if (*Ctx.Engine == "ytflow") { + if (isDqEngine && Ctx_.Engine) { + if (*Ctx_.Engine == "ytflow") { if (force) { Error() << "Expected `disable|auto` argument for: " << pragma << " pragma " << "with Engine pragma argument `ytflow`"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } enable = false; - } else if (*Ctx.Engine == "dq") { + } else if (*Ctx_.Engine == "dq") { force = true; } } } else if (normalizedPragma == "ansirankfornullablekeys") { - Ctx.AnsiRankForNullableKeys = true; - Ctx.IncrementMonCounter("sql_pragma", "AnsiRankForNullableKeys"); + Ctx_.AnsiRankForNullableKeys = true; + Ctx_.IncrementMonCounter("sql_pragma", "AnsiRankForNullableKeys"); } else if (normalizedPragma == "disableansirankfornullablekeys") { - Ctx.AnsiRankForNullableKeys = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableAnsiRankForNullableKeys"); + Ctx_.AnsiRankForNullableKeys = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableAnsiRankForNullableKeys"); } else if (normalizedPragma == "ansiorderbylimitinunionall") { - Ctx.IncrementMonCounter("sql_pragma", "AnsiOrderByLimitInUnionAll"); + Ctx_.IncrementMonCounter("sql_pragma", "AnsiOrderByLimitInUnionAll"); } else if (normalizedPragma == "disableansiorderbylimitinunionall") { Error() << "DisableAnsiOrderByLimitInUnionAll pragma is deprecated and no longer supported"; - Ctx.IncrementMonCounter("sql_errors", "DeprecatedPragma"); + Ctx_.IncrementMonCounter("sql_errors", "DeprecatedPragma"); return {}; } else if (normalizedPragma == "ansioptionalas") { - Ctx.AnsiOptionalAs = true; - Ctx.IncrementMonCounter("sql_pragma", "AnsiOptionalAs"); + Ctx_.AnsiOptionalAs = true; + Ctx_.IncrementMonCounter("sql_pragma", "AnsiOptionalAs"); } else if (normalizedPragma == "disableansioptionalas") { - Ctx.AnsiOptionalAs = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableAnsiOptionalAs"); + Ctx_.AnsiOptionalAs = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableAnsiOptionalAs"); } else if (normalizedPragma == "warnonansialiasshadowing") { - Ctx.WarnOnAnsiAliasShadowing = true; - Ctx.IncrementMonCounter("sql_pragma", "WarnOnAnsiAliasShadowing"); + Ctx_.WarnOnAnsiAliasShadowing = true; + Ctx_.IncrementMonCounter("sql_pragma", "WarnOnAnsiAliasShadowing"); } else if (normalizedPragma == "disablewarnonansialiasshadowing") { - Ctx.WarnOnAnsiAliasShadowing = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableWarnOnAnsiAliasShadowing"); + Ctx_.WarnOnAnsiAliasShadowing = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableWarnOnAnsiAliasShadowing"); } else if (normalizedPragma == "regexusere2") { - if (values.size() != 1U || !values.front().GetLiteral() || !TryFromString(*values.front().GetLiteral(), Ctx.PragmaRegexUseRe2)) { + if (values.size() != 1U || !values.front().GetLiteral() || !TryFromString(*values.front().GetLiteral(), Ctx_.PragmaRegexUseRe2)) { Error() << "Expected 'true' or 'false' for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "RegexUseRe2"); + Ctx_.IncrementMonCounter("sql_pragma", "RegexUseRe2"); } else if (normalizedPragma == "jsonqueryreturnsjsondocument") { - Ctx.JsonQueryReturnsJsonDocument = true; - Ctx.IncrementMonCounter("sql_pragma", "JsonQueryReturnsJsonDocument"); + Ctx_.JsonQueryReturnsJsonDocument = true; + Ctx_.IncrementMonCounter("sql_pragma", "JsonQueryReturnsJsonDocument"); } else if (normalizedPragma == "disablejsonqueryreturnsjsondocument") { - Ctx.JsonQueryReturnsJsonDocument = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableJsonQueryReturnsJsonDocument"); + Ctx_.JsonQueryReturnsJsonDocument = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableJsonQueryReturnsJsonDocument"); } else if (normalizedPragma == "orderedcolumns") { - Ctx.OrderedColumns = true; - Ctx.IncrementMonCounter("sql_pragma", "OrderedColumns"); + Ctx_.OrderedColumns = true; + Ctx_.IncrementMonCounter("sql_pragma", "OrderedColumns"); } else if (normalizedPragma == "derivecolumnorder") { - Ctx.DeriveColumnOrder = true; - Ctx.IncrementMonCounter("sql_pragma", "DeriveColumnOrder"); + Ctx_.DeriveColumnOrder = true; + Ctx_.IncrementMonCounter("sql_pragma", "DeriveColumnOrder"); } else if (normalizedPragma == "disablederivecolumnorder") { - Ctx.DeriveColumnOrder = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableDeriveColumnOrder"); + Ctx_.DeriveColumnOrder = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableDeriveColumnOrder"); } else if (normalizedPragma == "disableorderedcolumns") { - Ctx.OrderedColumns = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableOrderedColumns"); + Ctx_.OrderedColumns = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableOrderedColumns"); } else if (normalizedPragma == "positionalunionall") { - Ctx.PositionalUnionAll = true; + Ctx_.PositionalUnionAll = true; // PositionalUnionAll implies OrderedColumns - Ctx.OrderedColumns = true; - Ctx.IncrementMonCounter("sql_pragma", "PositionalUnionAll"); + Ctx_.OrderedColumns = true; + Ctx_.IncrementMonCounter("sql_pragma", "PositionalUnionAll"); } else if (normalizedPragma == "pqreadby") { if (values.size() != 1 || !values[0].GetLiteral()) { Error() << "Expected string literal as a single argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } // special guard to raise error on situation: // use cluster1; // pragma PqReadPqBy="cluster2"; - const TString* currentClusterLiteral = Ctx.Scoped->CurrCluster.GetLiteral(); + const TString* currentClusterLiteral = Ctx_.Scoped->CurrCluster.GetLiteral(); if (currentClusterLiteral && *values[0].GetLiteral() != "dq" && *currentClusterLiteral != *values[0].GetLiteral()) { Error() << "Cluster in PqReadPqBy pragma differs from cluster specified in USE statement: " << *values[0].GetLiteral() << " != " << *currentClusterLiteral; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.PqReadByRtmrCluster = *values[0].GetLiteral(); - Ctx.IncrementMonCounter("sql_pragma", "PqReadBy"); + Ctx_.PqReadByRtmrCluster = *values[0].GetLiteral(); + Ctx_.IncrementMonCounter("sql_pragma", "PqReadBy"); } else if (normalizedPragma == "bogousstaringroupbyoverjoin") { - Ctx.BogousStarInGroupByOverJoin = true; - Ctx.IncrementMonCounter("sql_pragma", "BogousStarInGroupByOverJoin"); + Ctx_.BogousStarInGroupByOverJoin = true; + Ctx_.IncrementMonCounter("sql_pragma", "BogousStarInGroupByOverJoin"); } else if (normalizedPragma == "strictjoinkeytypes") { - Ctx.Scoped->StrictJoinKeyTypes = true; - Ctx.IncrementMonCounter("sql_pragma", "StrictJoinKeyTypes"); + Ctx_.Scoped->StrictJoinKeyTypes = true; + Ctx_.IncrementMonCounter("sql_pragma", "StrictJoinKeyTypes"); } else if (normalizedPragma == "disablestrictjoinkeytypes") { - Ctx.Scoped->StrictJoinKeyTypes = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableStrictJoinKeyTypes"); + Ctx_.Scoped->StrictJoinKeyTypes = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableStrictJoinKeyTypes"); } else if (normalizedPragma == "unicodeliterals") { - Ctx.Scoped->UnicodeLiterals = true; - Ctx.IncrementMonCounter("sql_pragma", "UnicodeLiterals"); + Ctx_.Scoped->UnicodeLiterals = true; + Ctx_.IncrementMonCounter("sql_pragma", "UnicodeLiterals"); } else if (normalizedPragma == "disableunicodeliterals") { - Ctx.Scoped->UnicodeLiterals = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableUnicodeLiterals"); + Ctx_.Scoped->UnicodeLiterals = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableUnicodeLiterals"); } else if (normalizedPragma == "warnuntypedstringliterals") { - Ctx.Scoped->WarnUntypedStringLiterals = true; - Ctx.IncrementMonCounter("sql_pragma", "WarnUntypedStringLiterals"); + Ctx_.Scoped->WarnUntypedStringLiterals = true; + Ctx_.IncrementMonCounter("sql_pragma", "WarnUntypedStringLiterals"); } else if (normalizedPragma == "disablewarnuntypedstringliterals") { - Ctx.Scoped->WarnUntypedStringLiterals = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableWarnUntypedStringLiterals"); + Ctx_.Scoped->WarnUntypedStringLiterals = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableWarnUntypedStringLiterals"); } else if (normalizedPragma == "unorderedsubqueries") { - Ctx.UnorderedSubqueries = true; - Ctx.IncrementMonCounter("sql_pragma", "UnorderedSubqueries"); + Ctx_.UnorderedSubqueries = true; + Ctx_.IncrementMonCounter("sql_pragma", "UnorderedSubqueries"); } else if (normalizedPragma == "disableunorderedsubqueries") { - Ctx.UnorderedSubqueries = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableUnorderedSubqueries"); + Ctx_.UnorderedSubqueries = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableUnorderedSubqueries"); } else if (normalizedPragma == "datawatermarks") { if (values.size() != 1 || !values[0].GetLiteral() || ! (*values[0].GetLiteral() == "enable" || *values[0].GetLiteral() == "disable")) { Error() << "Expected `enable|disable' argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } if (*values[0].GetLiteral() == "enable") { - Ctx.PragmaDataWatermarks = true; + Ctx_.PragmaDataWatermarks = true; } else if (*values[0].GetLiteral() == "disable") { - Ctx.PragmaDataWatermarks = false; + Ctx_.PragmaDataWatermarks = false; } - Ctx.IncrementMonCounter("sql_pragma", "DataWatermarks"); + Ctx_.IncrementMonCounter("sql_pragma", "DataWatermarks"); } else if (normalizedPragma == "flexibletypes") { - Ctx.FlexibleTypes = true; - Ctx.IncrementMonCounter("sql_pragma", "FlexibleTypes"); + Ctx_.FlexibleTypes = true; + Ctx_.IncrementMonCounter("sql_pragma", "FlexibleTypes"); } else if (normalizedPragma == "disableflexibletypes") { - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA) + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA) << "Deprecated pragma DisableFlexibleTypes - it will be removed soon. " "Consider submitting bug report if FlexibleTypes doesn't work for you"; - Ctx.FlexibleTypes = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableFlexibleTypes"); + Ctx_.FlexibleTypes = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableFlexibleTypes"); } else if (normalizedPragma == "ansicurrentrow") { - Ctx.AnsiCurrentRow = true; - Ctx.IncrementMonCounter("sql_pragma", "AnsiCurrentRow"); + Ctx_.AnsiCurrentRow = true; + Ctx_.IncrementMonCounter("sql_pragma", "AnsiCurrentRow"); } else if (normalizedPragma == "disableansicurrentrow") { - Ctx.AnsiCurrentRow = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableAnsiCurrentRow"); + Ctx_.AnsiCurrentRow = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableAnsiCurrentRow"); } else if (normalizedPragma == "emitaggapply") { - Ctx.EmitAggApply = true; - Ctx.IncrementMonCounter("sql_pragma", "EmitAggApply"); + Ctx_.EmitAggApply = true; + Ctx_.IncrementMonCounter("sql_pragma", "EmitAggApply"); } else if (normalizedPragma == "disableemitaggapply") { - Ctx.EmitAggApply = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableEmitAggApply"); + Ctx_.EmitAggApply = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableEmitAggApply"); } else if (normalizedPragma == "useblocks") { - Ctx.UseBlocks = true; - Ctx.IncrementMonCounter("sql_pragma", "UseBlocks"); + Ctx_.UseBlocks = true; + Ctx_.IncrementMonCounter("sql_pragma", "UseBlocks"); } else if (normalizedPragma == "disableuseblocks") { - Ctx.UseBlocks = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableUseBlocks"); + Ctx_.UseBlocks = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableUseBlocks"); } else if (normalizedPragma == "emittablesource") { - Ctx.EmitTableSource = true; - Ctx.IncrementMonCounter("sql_pragma", "EmitTableSource"); + Ctx_.EmitTableSource = true; + Ctx_.IncrementMonCounter("sql_pragma", "EmitTableSource"); } else if (normalizedPragma == "disableemittablesource") { - Ctx.EmitTableSource = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableEmitTableSource"); + Ctx_.EmitTableSource = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableEmitTableSource"); } else if (normalizedPragma == "ansilike") { - Ctx.AnsiLike = true; - Ctx.IncrementMonCounter("sql_pragma", "AnsiLike"); + Ctx_.AnsiLike = true; + Ctx_.IncrementMonCounter("sql_pragma", "AnsiLike"); } else if (normalizedPragma == "disableansilike") { - Ctx.AnsiLike = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableAnsiLike"); + Ctx_.AnsiLike = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableAnsiLike"); } else if (normalizedPragma == "unorderedresult") { - Ctx.UnorderedResult = true; - Ctx.IncrementMonCounter("sql_pragma", "UnorderedResult"); + Ctx_.UnorderedResult = true; + Ctx_.IncrementMonCounter("sql_pragma", "UnorderedResult"); } else if (normalizedPragma == "disableunorderedresult") { - Ctx.UnorderedResult = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableUnorderedResult"); + Ctx_.UnorderedResult = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableUnorderedResult"); } else if (normalizedPragma == "featurer010") { if (values.size() == 1 && values[0].GetLiteral()) { const auto& value = *values[0].GetLiteral(); if ("prototype" == value) - Ctx.FeatureR010 = true; + Ctx_.FeatureR010 = true; else { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } else { - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.IncrementMonCounter("sql_pragma", "FeatureR010"); + Ctx_.IncrementMonCounter("sql_pragma", "FeatureR010"); } else if (normalizedPragma == "compactgroupby") { - Ctx.CompactGroupBy = true; - Ctx.IncrementMonCounter("sql_pragma", "CompactGroupBy"); + Ctx_.CompactGroupBy = true; + Ctx_.IncrementMonCounter("sql_pragma", "CompactGroupBy"); } else if (normalizedPragma == "disablecompactgroupby") { - Ctx.CompactGroupBy = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableCompactGroupBy"); + Ctx_.CompactGroupBy = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableCompactGroupBy"); } else if (normalizedPragma == "costbasedoptimizer") { - Ctx.IncrementMonCounter("sql_pragma", "CostBasedOptimizer"); + Ctx_.IncrementMonCounter("sql_pragma", "CostBasedOptimizer"); if (values.size() == 1 && values[0].GetLiteral()) { - Ctx.CostBasedOptimizer = to_lower(*values[0].GetLiteral()); + Ctx_.CostBasedOptimizer = to_lower(*values[0].GetLiteral()); } if (values.size() != 1 || !values[0].GetLiteral() - || ! (Ctx.CostBasedOptimizer == "disable" || Ctx.CostBasedOptimizer == "pg" || Ctx.CostBasedOptimizer == "native")) + || ! (Ctx_.CostBasedOptimizer == "disable" || Ctx_.CostBasedOptimizer == "pg" || Ctx_.CostBasedOptimizer == "native")) { Error() << "Expected `disable|pg|native' argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } else if (normalizedPragma == "compactnamedexprs") { - Ctx.CompactNamedExprs = true; - Ctx.IncrementMonCounter("sql_pragma", "CompactNamedExprs"); + Ctx_.CompactNamedExprs = true; + Ctx_.IncrementMonCounter("sql_pragma", "CompactNamedExprs"); } else if (normalizedPragma == "disablecompactnamedexprs") { - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA) + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA) << "Deprecated pragma DisableCompactNamedExprs - it will be removed soon. " "Consider submitting bug report if CompactNamedExprs doesn't work for you"; - Ctx.CompactNamedExprs = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableCompactNamedExprs"); + Ctx_.CompactNamedExprs = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableCompactNamedExprs"); } else if (normalizedPragma == "validateunusedexprs") { - Ctx.ValidateUnusedExprs = true; - Ctx.IncrementMonCounter("sql_pragma", "ValidateUnusedExprs"); + Ctx_.ValidateUnusedExprs = true; + Ctx_.IncrementMonCounter("sql_pragma", "ValidateUnusedExprs"); } else if (normalizedPragma == "disablevalidateunusedexprs") { - Ctx.ValidateUnusedExprs = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableValidateUnusedExprs"); + Ctx_.ValidateUnusedExprs = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableValidateUnusedExprs"); } else if (normalizedPragma == "ansiimplicitcrossjoin") { - Ctx.AnsiImplicitCrossJoin = true; - Ctx.IncrementMonCounter("sql_pragma", "AnsiImplicitCrossJoin"); + Ctx_.AnsiImplicitCrossJoin = true; + Ctx_.IncrementMonCounter("sql_pragma", "AnsiImplicitCrossJoin"); } else if (normalizedPragma == "disableansiimplicitcrossjoin") { - Ctx.AnsiImplicitCrossJoin = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableAnsiImplicitCrossJoin"); + Ctx_.AnsiImplicitCrossJoin = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableAnsiImplicitCrossJoin"); } else if (normalizedPragma == "distinctoverwindow") { - Ctx.DistinctOverWindow = true; - Ctx.IncrementMonCounter("sql_pragma", "DistinctOverWindow"); + Ctx_.DistinctOverWindow = true; + Ctx_.IncrementMonCounter("sql_pragma", "DistinctOverWindow"); } else if (normalizedPragma == "disabledistinctoverwindow") { - Ctx.DistinctOverWindow = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableDistinctOverWindow"); + Ctx_.DistinctOverWindow = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableDistinctOverWindow"); } else if (normalizedPragma == "seqmode") { - Ctx.SeqMode = true; - Ctx.IncrementMonCounter("sql_pragma", "SeqMode"); + Ctx_.SeqMode = true; + Ctx_.IncrementMonCounter("sql_pragma", "SeqMode"); } else if (normalizedPragma == "disableseqmode") { - Ctx.SeqMode = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableSeqMode"); + Ctx_.SeqMode = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableSeqMode"); } else if (normalizedPragma == "emitunionmerge") { - Ctx.EmitUnionMerge = true; - Ctx.IncrementMonCounter("sql_pragma", "EmitUnionMerge"); + Ctx_.EmitUnionMerge = true; + Ctx_.IncrementMonCounter("sql_pragma", "EmitUnionMerge"); } else if (normalizedPragma == "disableemitunionmerge") { - Ctx.EmitUnionMerge = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableEmitUnionMerge"); + Ctx_.EmitUnionMerge = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableEmitUnionMerge"); } else if (normalizedPragma == "distinctoverkeys") { - Ctx.DistinctOverKeys = true; - Ctx.IncrementMonCounter("sql_pragma", "DistinctOverKeys"); + Ctx_.DistinctOverKeys = true; + Ctx_.IncrementMonCounter("sql_pragma", "DistinctOverKeys"); } else if (normalizedPragma == "disabledistinctoverkeys") { - Ctx.DistinctOverKeys = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableDistinctOverKeys"); + Ctx_.DistinctOverKeys = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableDistinctOverKeys"); } else if (normalizedPragma == "groupbyexprafterwhere") { - Ctx.GroupByExprAfterWhere = true; - Ctx.IncrementMonCounter("sql_pragma", "GroupByExprAfterWhere"); + Ctx_.GroupByExprAfterWhere = true; + Ctx_.IncrementMonCounter("sql_pragma", "GroupByExprAfterWhere"); } else if (normalizedPragma == "disablegroupbyexprafterwhere") { - Ctx.GroupByExprAfterWhere = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableGroupByExprAfterWhere"); + Ctx_.GroupByExprAfterWhere = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableGroupByExprAfterWhere"); } else if (normalizedPragma == "failongroupbyexproverride") { - Ctx.FailOnGroupByExprOverride = true; - Ctx.IncrementMonCounter("sql_pragma", "FailOnGroupByExprOverride"); + Ctx_.FailOnGroupByExprOverride = true; + Ctx_.IncrementMonCounter("sql_pragma", "FailOnGroupByExprOverride"); } else if (normalizedPragma == "disablefailongroupbyexproverride") { - Ctx.FailOnGroupByExprOverride = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableFailOnGroupByExprOverride"); + Ctx_.FailOnGroupByExprOverride = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableFailOnGroupByExprOverride"); } else if (normalizedPragma == "engine") { - Ctx.IncrementMonCounter("sql_pragma", "Engine"); + Ctx_.IncrementMonCounter("sql_pragma", "Engine"); const TString* literal = values.size() == 1 ? values[0].GetLiteral() @@ -3439,106 +3439,106 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success if (!literal || ! (*literal == "default" || *literal == "dq" || *literal == "ytflow")) { Error() << "Expected `default|dq|ytflow' argument for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } if (*literal == "ytflow") { - if (Ctx.DqEngineForce) { + if (Ctx_.DqEngineForce) { Error() << "Expected `disable|auto` argument for DqEngine pragma " << " with " << pragma << " pragma argument `ytflow`"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } - Ctx.DqEngineEnable = false; + Ctx_.DqEngineEnable = false; } else if (*literal == "dq") { - Ctx.DqEngineEnable = true; - Ctx.DqEngineForce = true; + Ctx_.DqEngineEnable = true; + Ctx_.DqEngineForce = true; } - Ctx.Engine = *literal; + Ctx_.Engine = *literal; } else if (normalizedPragma == "optimizesimpleilike") { - Ctx.OptimizeSimpleIlike = true; - Ctx.IncrementMonCounter("sql_pragma", "OptimizeSimpleILIKE"); + Ctx_.OptimizeSimpleIlike = true; + Ctx_.IncrementMonCounter("sql_pragma", "OptimizeSimpleILIKE"); } else if (normalizedPragma == "disableoptimizesimpleilike") { - Ctx.OptimizeSimpleIlike = false; - Ctx.IncrementMonCounter("sql_pragma", "DisableOptimizeSimpleILIKE"); + Ctx_.OptimizeSimpleIlike = false; + Ctx_.IncrementMonCounter("sql_pragma", "DisableOptimizeSimpleILIKE"); } else { Error() << "Unknown pragma: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "UnknownPragma"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownPragma"); return {}; } } else { if (lowerPrefix == "yson") { - if (!TopLevel) { + if (!TopLevel_) { Error() << "This pragma '" << pragma << "' is not allowed to be used in actions"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } if (normalizedPragma == "fast") { - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA) + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA) << "Use of deprecated yson.Fast pragma. It will be dropped soon"; success = true; return {}; } else if (normalizedPragma == "autoconvert") { - Ctx.PragmaYsonAutoConvert = true; + Ctx_.PragmaYsonAutoConvert = true; success = true; return {}; } else if (normalizedPragma == "strict") { if (values.size() == 0U) { - Ctx.PragmaYsonStrict = true; + Ctx_.PragmaYsonStrict = true; success = true; - } else if (values.size() == 1U && values.front().GetLiteral() && TryFromString(*values.front().GetLiteral(), Ctx.PragmaYsonStrict)) { + } else if (values.size() == 1U && values.front().GetLiteral() && TryFromString(*values.front().GetLiteral(), Ctx_.PragmaYsonStrict)) { success = true; } else { Error() << "Expected 'true', 'false' or no parameter for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); } return {}; } else if (normalizedPragma == "disablestrict") { if (values.size() == 0U) { - Ctx.PragmaYsonStrict = false; + Ctx_.PragmaYsonStrict = false; success = true; return {}; } bool pragmaYsonDisableStrict; if (values.size() == 1U && values.front().GetLiteral() && TryFromString(*values.front().GetLiteral(), pragmaYsonDisableStrict)) { - Ctx.PragmaYsonStrict = !pragmaYsonDisableStrict; + Ctx_.PragmaYsonStrict = !pragmaYsonDisableStrict; success = true; } else { Error() << "Expected 'true', 'false' or no parameter for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); } return {}; } else if (normalizedPragma == "casttostring" || normalizedPragma == "disablecasttostring") { const bool allow = normalizedPragma == "casttostring"; if (values.size() == 0U) { - Ctx.YsonCastToString = allow; + Ctx_.YsonCastToString = allow; success = true; return {}; } bool pragmaYsonCastToString; if (values.size() == 1U && values.front().GetLiteral() && TryFromString(*values.front().GetLiteral(), pragmaYsonCastToString)) { - Ctx.PragmaYsonStrict = allow ? pragmaYsonCastToString : !pragmaYsonCastToString; + Ctx_.PragmaYsonStrict = allow ? pragmaYsonCastToString : !pragmaYsonCastToString; success = true; } else { Error() << "Expected 'true', 'false' or no parameter for: " << pragma; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); } return {}; } else { Error() << "Unknown pragma: '" << pragma << "'"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } else if (std::find(Providers.cbegin(), Providers.cend(), lowerPrefix) == Providers.cend()) { - if (!Ctx.HasCluster(prefix)) { + if (!Ctx_.HasCluster(prefix)) { Error() << "Unknown pragma prefix: " << prefix << ", please use cluster name or one of provider " << JoinRange(", ", Providers.cbegin(), Providers.cend()); - Ctx.IncrementMonCounter("sql_errors", "UnknownPragma"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownPragma"); return {}; } } @@ -3546,20 +3546,20 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success if (normalizedPragma != "flags" && normalizedPragma != "packageversion") { if (values.size() > 1) { Error() << "Expected at most one value in the pragma"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } else { if (pragmaValueDefault || values.size() < 1) { Error() << "Expected at least one value in the pragma"; - Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue"); + Ctx_.IncrementMonCounter("sql_errors", "BadPragmaValue"); return {}; } } success = true; - Ctx.IncrementMonCounter("sql_pragma", pragma); - return BuildPragma(Ctx.Pos(), lowerPrefix, normalizedPragma, values, pragmaValueDefault); + Ctx_.IncrementMonCounter("sql_pragma", pragma); + return BuildPragma(Ctx_.Pos(), lowerPrefix, normalizedPragma, values, pragmaValueDefault); } success = true; return {}; @@ -3573,18 +3573,18 @@ TNodePtr TSqlQuery::Build(const TRule_delete_stmt& stmt) { const bool isKikimr = table.Service == KikimrProviderName; if (!isKikimr && table.Service != UnknownProviderName) { - Ctx.Error(GetPos(stmt.GetToken2())) << "DELETE is unsupported for " << table.Service; + Ctx_.Error(GetPos(stmt.GetToken2())) << "DELETE is unsupported for " << table.Service; return nullptr; } - TSourcePtr source = BuildTableSource(Ctx.Pos(), table); + TSourcePtr source = BuildTableSource(Ctx_.Pos(), table); const bool isBatch = stmt.HasBlock1(); TNodePtr options = nullptr; if (stmt.HasBlock6()) { if (isBatch) { - Ctx.Error(GetPos(stmt.GetToken2())) + Ctx_.Error(GetPos(stmt.GetToken2())) << "BATCH DELETE is unsupported with RETURNING"; return nullptr; } @@ -3598,30 +3598,30 @@ TNodePtr TSqlQuery::Build(const TRule_delete_stmt& stmt) { case TRule_delete_stmt_TBlock5::kAlt1: { const auto& alt = stmt.GetBlock5().GetAlt1(); - TColumnRefScope scope(Ctx, EColumnRefState::Allow); - TSqlExpression sqlExpr(Ctx, Mode); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); + TSqlExpression sqlExpr(Ctx_, Mode_); auto whereExpr = sqlExpr.Build(alt.GetRule_expr2()); if (!whereExpr) { return nullptr; } - source->AddFilter(Ctx, whereExpr); + source->AddFilter(Ctx_, whereExpr); break; } case TRule_delete_stmt_TBlock5::kAlt2: { const auto& alt = stmt.GetBlock5().GetAlt2(); - auto values = TSqlIntoValues(Ctx, Mode).Build(alt.GetRule_into_values_source2(), "DELETE ON"); + auto values = TSqlIntoValues(Ctx_, Mode_).Build(alt.GetRule_into_values_source2(), "DELETE ON"); if (!values) { return nullptr; } if (isBatch) { - Ctx.Error(GetPos(stmt.GetToken2())) << "BATCH DELETE is unsupported with ON"; + Ctx_.Error(GetPos(stmt.GetToken2())) << "BATCH DELETE is unsupported with ON"; return nullptr; } - return BuildWriteColumns(Ctx.Pos(), Ctx.Scoped, table, EWriteColumnMode::DeleteOn, std::move(values), options); + return BuildWriteColumns(Ctx_.Pos(), Ctx_.Scoped, table, EWriteColumnMode::DeleteOn, std::move(values), options); } case TRule_delete_stmt_TBlock5::ALT_NOT_SET: @@ -3630,10 +3630,10 @@ TNodePtr TSqlQuery::Build(const TRule_delete_stmt& stmt) { } if (isBatch) { - return BuildBatchDelete(Ctx.Pos(), Ctx.Scoped, table, std::move(source), options); + return BuildBatchDelete(Ctx_.Pos(), Ctx_.Scoped, table, std::move(source), options); } - return BuildDelete(Ctx.Pos(), Ctx.Scoped, table, std::move(source), options); + return BuildDelete(Ctx_.Pos(), Ctx_.Scoped, table, std::move(source), options); } TNodePtr TSqlQuery::Build(const TRule_update_stmt& stmt) { @@ -3645,7 +3645,7 @@ TNodePtr TSqlQuery::Build(const TRule_update_stmt& stmt) { const bool isKikimr = table.Service == KikimrProviderName; if (!isKikimr && table.Service != UnknownProviderName) { - Ctx.Error(GetPos(stmt.GetToken2())) << "UPDATE is unsupported for " << table.Service; + Ctx_.Error(GetPos(stmt.GetToken2())) << "UPDATE is unsupported for " << table.Service; return nullptr; } @@ -3654,7 +3654,7 @@ TNodePtr TSqlQuery::Build(const TRule_update_stmt& stmt) { if (stmt.HasBlock5()) { if (isBatch) { - Ctx.Error(GetPos(stmt.GetToken2())) + Ctx_.Error(GetPos(stmt.GetToken2())) << "BATCH UPDATE is unsupported with RETURNING"; return nullptr; } @@ -3667,39 +3667,39 @@ TNodePtr TSqlQuery::Build(const TRule_update_stmt& stmt) { case TRule_update_stmt_TBlock4::kAlt1: { const auto& alt = stmt.GetBlock4().GetAlt1(); TSourcePtr values = Build(alt.GetRule_set_clause_choice2()); - auto source = BuildTableSource(Ctx.Pos(), table); + auto source = BuildTableSource(Ctx_.Pos(), table); if (alt.HasBlock3()) { - TColumnRefScope scope(Ctx, EColumnRefState::Allow); - TSqlExpression sqlExpr(Ctx, Mode); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); + TSqlExpression sqlExpr(Ctx_, Mode_); auto whereExpr = sqlExpr.Build(alt.GetBlock3().GetRule_expr2()); if (!whereExpr) { return nullptr; } - source->AddFilter(Ctx, whereExpr); + source->AddFilter(Ctx_, whereExpr); } if (isBatch) { - return BuildBatchUpdate(Ctx.Pos(), Ctx.Scoped, table, std::move(values), std::move(source), options); + return BuildBatchUpdate(Ctx_.Pos(), Ctx_.Scoped, table, std::move(values), std::move(source), options); } - return BuildUpdateColumns(Ctx.Pos(), Ctx.Scoped, table, std::move(values), std::move(source), options); + return BuildUpdateColumns(Ctx_.Pos(), Ctx_.Scoped, table, std::move(values), std::move(source), options); } case TRule_update_stmt_TBlock4::kAlt2: { const auto& alt = stmt.GetBlock4().GetAlt2(); - auto values = TSqlIntoValues(Ctx, Mode).Build(alt.GetRule_into_values_source2(), "UPDATE ON"); + auto values = TSqlIntoValues(Ctx_, Mode_).Build(alt.GetRule_into_values_source2(), "UPDATE ON"); if (!values) { return nullptr; } if (isBatch) { - Ctx.Error(GetPos(stmt.GetToken2())) << "BATCH UPDATE is unsupported with ON"; + Ctx_.Error(GetPos(stmt.GetToken2())) << "BATCH UPDATE is unsupported with ON"; return nullptr; } - return BuildWriteColumns(Ctx.Pos(), Ctx.Scoped, table, EWriteColumnMode::UpdateOn, std::move(values), options); + return BuildWriteColumns(Ctx_.Pos(), Ctx_.Scoped, table, EWriteColumnMode::UpdateOn, std::move(values), options); } case TRule_update_stmt_TBlock4::ALT_NOT_SET: @@ -3721,8 +3721,8 @@ TSourcePtr TSqlQuery::Build(const TRule_set_clause_choice& stmt) { bool TSqlQuery::FillSetClause(const TRule_set_clause& node, TVector<TString>& targetList, TVector<TNodePtr>& values) { targetList.push_back(ColumnNameAsSingleStr(*this, node.GetRule_set_target1().GetRule_column_name1())); - TColumnRefScope scope(Ctx, EColumnRefState::Allow); - TSqlExpression sqlExpr(Ctx, Mode); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); + TSqlExpression sqlExpr(Ctx_, Mode_); if (!Expr(sqlExpr, values, node.GetRule_expr3())) { return false; } @@ -3732,7 +3732,7 @@ bool TSqlQuery::FillSetClause(const TRule_set_clause& node, TVector<TString>& ta TSourcePtr TSqlQuery::Build(const TRule_set_clause_list& stmt) { TVector<TString> targetList; TVector<TNodePtr> values; - const TPosition pos(Ctx.Pos()); + const TPosition pos(Ctx_.Pos()); if (!FillSetClause(stmt.GetRule_set_clause1(), targetList, values)) { return nullptr; } @@ -3749,18 +3749,18 @@ TSourcePtr TSqlQuery::Build(const TRule_multiple_column_assignment& stmt) { TVector<TString> targetList; FillTargetList(*this, stmt.GetRule_set_target_list1(), targetList); auto simpleValuesNode = stmt.GetRule_simple_values_source4(); - const TPosition pos(Ctx.Pos()); + const TPosition pos(Ctx_.Pos()); switch (simpleValuesNode.Alt_case()) { case TRule_simple_values_source::kAltSimpleValuesSource1: { TVector<TNodePtr> values; - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); if (!ExprList(sqlExpr, values, simpleValuesNode.GetAlt_simple_values_source1().GetRule_expr_list1())) { return nullptr; } return BuildUpdateValues(pos, targetList, values); } case TRule_simple_values_source::kAltSimpleValuesSource2: { - TSqlSelect select(Ctx, Mode); + TSqlSelect select(Ctx_, Mode_); TPosition selectPos; auto source = select.Build(simpleValuesNode.GetAlt_simple_values_source2().GetRule_select_stmt1(), selectPos); if (!source) { @@ -3769,16 +3769,16 @@ TSourcePtr TSqlQuery::Build(const TRule_multiple_column_assignment& stmt) { return BuildWriteValues(pos, "UPDATE", targetList, std::move(source)); } case TRule_simple_values_source::ALT_NOT_SET: - Ctx.IncrementMonCounter("sql_errors", "UnknownSimpleValuesSourceAlt"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownSimpleValuesSourceAlt"); AltNotImplemented("simple_values_source", simpleValuesNode); return nullptr; } } TNodePtr TSqlQuery::Build(const TSQLv1ParserAST& ast) { - if (Mode == NSQLTranslation::ESqlMode::QUERY) { + if (Mode_ == NSQLTranslation::ESqlMode::QUERY) { // inject externally declared named expressions - for (auto [name, type] : Ctx.Settings.DeclaredNamedExprs) { + for (auto [name, type] : Ctx_.Settings.DeclaredNamedExprs) { if (name.empty()) { Error() << "Empty names for externally declared expressions are not allowed"; return nullptr; @@ -3789,17 +3789,17 @@ TNodePtr TSqlQuery::Build(const TSQLv1ParserAST& ast) { return nullptr; } - auto parsed = ParseType(type, *Ctx.Pool, Ctx.Issues, Ctx.Pos()); + auto parsed = ParseType(type, *Ctx_.Pool, Ctx_.Issues, Ctx_.Pos()); if (!parsed) { Error() << "Failed to parse type for externally declared name '" << name << "'"; return nullptr; } - TNodePtr typeNode = BuildBuiltinFunc(Ctx, Ctx.Pos(), "ParseType", { BuildLiteralRawString(Ctx.Pos(), type) }); - PushNamedAtom(Ctx.Pos(), varName); + TNodePtr typeNode = BuildBuiltinFunc(Ctx_, Ctx_.Pos(), "ParseType", { BuildLiteralRawString(Ctx_.Pos(), type) }); + PushNamedAtom(Ctx_.Pos(), varName); // no duplicates are possible at this stage bool isWeak = true; - Ctx.DeclareVariable(varName, {}, typeNode, isWeak); + Ctx_.DeclareVariable(varName, {}, typeNode, isWeak); // avoid 'Symbol is not used' warning for externally declared expression YQL_ENSURE(GetNamedNode(varName)); } @@ -3807,9 +3807,9 @@ TNodePtr TSqlQuery::Build(const TSQLv1ParserAST& ast) { const auto& query = ast.GetRule_sql_query(); TVector<TNodePtr> blocks; - Ctx.PushCurrentBlocks(&blocks); + Ctx_.PushCurrentBlocks(&blocks); Y_DEFER { - Ctx.PopCurrentBlocks(); + Ctx_.PopCurrentBlocks(); }; if (query.Alt_case() == TRule_sql_query::kAltSqlQuery1) { size_t statementNumber = 0; @@ -3838,25 +3838,25 @@ TNodePtr TSqlQuery::Build(const TSQLv1ParserAST& ast) { } } - if ((Mode == NSQLTranslation::ESqlMode::SUBQUERY || Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW) && (topLevelSelects != 1 || hasTailOps)) { + if ((Mode_ == NSQLTranslation::ESqlMode::SUBQUERY || Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW) && (topLevelSelects != 1 || hasTailOps)) { Error() << "Strictly one select/process/reduce statement is expected at the end of " - << (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW ? "view" : "subquery"); + << (Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW ? "view" : "subquery"); return nullptr; } - if (!Ctx.PragmaAutoCommit && Ctx.Settings.EndOfQueryCommit && IsQueryMode(Mode)) { - AddStatementToBlocks(blocks, BuildCommitClusters(Ctx.Pos())); + if (!Ctx_.PragmaAutoCommit && Ctx_.Settings.EndOfQueryCommit && IsQueryMode(Mode_)) { + AddStatementToBlocks(blocks, BuildCommitClusters(Ctx_.Pos())); } - auto result = BuildQuery(Ctx.Pos(), blocks, true, Ctx.Scoped, Ctx.SeqMode); + auto result = BuildQuery(Ctx_.Pos(), blocks, true, Ctx_.Scoped, Ctx_.SeqMode); WarnUnusedNodes(); return result; } TNodePtr TSqlQuery::Build(const std::vector<::NSQLv1Generated::TRule_sql_stmt_core>& statements) { - if (Mode == NSQLTranslation::ESqlMode::QUERY) { + if (Mode_ == NSQLTranslation::ESqlMode::QUERY) { // inject externally declared named expressions - for (auto [name, type] : Ctx.Settings.DeclaredNamedExprs) { + for (auto [name, type] : Ctx_.Settings.DeclaredNamedExprs) { if (name.empty()) { Error() << "Empty names for externally declared expressions are not allowed"; return nullptr; @@ -3867,26 +3867,26 @@ TNodePtr TSqlQuery::Build(const std::vector<::NSQLv1Generated::TRule_sql_stmt_co return nullptr; } - auto parsed = ParseType(type, *Ctx.Pool, Ctx.Issues, Ctx.Pos()); + auto parsed = ParseType(type, *Ctx_.Pool, Ctx_.Issues, Ctx_.Pos()); if (!parsed) { Error() << "Failed to parse type for externally declared name '" << name << "'"; return nullptr; } - TNodePtr typeNode = BuildBuiltinFunc(Ctx, Ctx.Pos(), "ParseType", { BuildLiteralRawString(Ctx.Pos(), type) }); - PushNamedAtom(Ctx.Pos(), varName); + TNodePtr typeNode = BuildBuiltinFunc(Ctx_, Ctx_.Pos(), "ParseType", { BuildLiteralRawString(Ctx_.Pos(), type) }); + PushNamedAtom(Ctx_.Pos(), varName); // no duplicates are possible at this stage bool isWeak = true; - Ctx.DeclareVariable(varName, {}, typeNode, isWeak); + Ctx_.DeclareVariable(varName, {}, typeNode, isWeak); // avoid 'Symbol is not used' warning for externally declared expression YQL_ENSURE(GetNamedNode(varName)); } } TVector<TNodePtr> blocks; - Ctx.PushCurrentBlocks(&blocks); + Ctx_.PushCurrentBlocks(&blocks); Y_DEFER { - Ctx.PopCurrentBlocks(); + Ctx_.PopCurrentBlocks(); }; size_t statementNumber = 0; @@ -3910,17 +3910,17 @@ TNodePtr TSqlQuery::Build(const std::vector<::NSQLv1Generated::TRule_sql_stmt_co } } - if ((Mode == NSQLTranslation::ESqlMode::SUBQUERY || Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW) && (topLevelSelects != 1 || hasTailOps)) { + if ((Mode_ == NSQLTranslation::ESqlMode::SUBQUERY || Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW) && (topLevelSelects != 1 || hasTailOps)) { Error() << "Strictly one select/process/reduce statement is expected at the end of " - << (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW ? "view" : "subquery"); + << (Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW ? "view" : "subquery"); return nullptr; } - if (!Ctx.PragmaAutoCommit && Ctx.Settings.EndOfQueryCommit && IsQueryMode(Mode)) { - AddStatementToBlocks(blocks, BuildCommitClusters(Ctx.Pos())); + if (!Ctx_.PragmaAutoCommit && Ctx_.Settings.EndOfQueryCommit && IsQueryMode(Mode_)) { + AddStatementToBlocks(blocks, BuildCommitClusters(Ctx_.Pos())); } - auto result = BuildQuery(Ctx.Pos(), blocks, true, Ctx.Scoped, Ctx.SeqMode); + auto result = BuildQuery(Ctx_.Pos(), blocks, true, Ctx_.Scoped, Ctx_.SeqMode); return result; } namespace { @@ -3972,10 +3972,10 @@ bool TSqlQuery::ParseTableStoreFeatures(std::map<TString, TDeferredAtom> & resul case TRule_alter_table_store_action::kAltAlterTableStoreAction1: { // ADD COLUMN const auto& addRule = actions.GetAlt_alter_table_store_action1().GetRule_alter_table_add_column1(); - if (!BuildColumnFeatures(result, addRule.GetRule_column_schema3(), Ctx.Pos(), *this)) { + if (!BuildColumnFeatures(result, addRule.GetRule_column_schema3(), Ctx_.Pos(), *this)) { return false; } - result["ACTION"] = TDeferredAtom(Ctx.Pos(), "NEW_COLUMN"); + result["ACTION"] = TDeferredAtom(Ctx_.Pos(), "NEW_COLUMN"); break; } case TRule_alter_table_store_action::kAltAlterTableStoreAction2: { @@ -3985,8 +3985,8 @@ bool TSqlQuery::ParseTableStoreFeatures(std::map<TString, TDeferredAtom> & resul if (!columnName) { return false; } - result["NAME"] = TDeferredAtom(Ctx.Pos(), columnName); - result["ACTION"] = TDeferredAtom(Ctx.Pos(), "DROP_COLUMN"); + result["NAME"] = TDeferredAtom(Ctx_.Pos(), columnName); + result["ACTION"] = TDeferredAtom(Ctx_.Pos(), "DROP_COLUMN"); break; } case TRule_alter_table_store_action::ALT_NOT_SET: diff --git a/yql/essentials/sql/v1/sql_query.h b/yql/essentials/sql/v1/sql_query.h index 450451525b7..9428e3397bc 100644 --- a/yql/essentials/sql/v1/sql_query.h +++ b/yql/essentials/sql/v1/sql_query.h @@ -13,7 +13,7 @@ class TSqlQuery: public TSqlTranslation { public: TSqlQuery(TContext& ctx, NSQLTranslation::ESqlMode mode, bool topLevel) : TSqlTranslation(ctx, mode) - , TopLevel(topLevel) + , TopLevel_(topLevel) { } @@ -62,7 +62,7 @@ private: humanStatementName.clear(); const auto& descr = AltDescription(node); TVector<TString> parts; - if (!Ctx.Settings.Antlr4Parser) { + if (!Ctx_.Settings.Antlr4Parser) { const auto pos = descr.find(": "); Y_DEBUG_ABORT_UNLESS(pos != TString::npos); Split(TString(descr.begin() + pos + 2, descr.end()), "_", parts); @@ -81,7 +81,7 @@ private: } } - const bool TopLevel; + const bool TopLevel_; }; void EnumeratePragmas(std::function<void(std::string_view)> callback); diff --git a/yql/essentials/sql/v1/sql_select.cpp b/yql/essentials/sql/v1/sql_select.cpp index 8e11721c84f..04a8b1e38af 100644 --- a/yql/essentials/sql/v1/sql_select.cpp +++ b/yql/essentials/sql/v1/sql_select.cpp @@ -69,26 +69,26 @@ bool TSqlSelect::JoinOp(ISource* join, const TRule_join_source::TBlock3& block, switch (node.Alt_case()) { case TRule_join_op::kAltJoinOp1: { joinOp = "Cross"; - if (!Ctx.AnsiImplicitCrossJoin) { + if (!Ctx_.AnsiImplicitCrossJoin) { Error() << "Cartesian product of tables is disabled. Please use " "explicit CROSS JOIN or enable it via PRAGMA AnsiImplicitCrossJoin"; return false; } auto alt = node.GetAlt_join_op1(); - if (!CollectJoinLinkSettings(Ctx.TokenPosition(alt.GetToken1()), linkSettings, Ctx)) { + if (!CollectJoinLinkSettings(Ctx_.TokenPosition(alt.GetToken1()), linkSettings, Ctx_)) { return false; } - Ctx.IncrementMonCounter("sql_join_operations", "CartesianProduct"); + Ctx_.IncrementMonCounter("sql_join_operations", "CartesianProduct"); break; } case TRule_join_op::kAltJoinOp2: { auto alt = node.GetAlt_join_op2(); if (alt.HasBlock1()) { - Ctx.IncrementMonCounter("sql_join_operations", "Natural"); + Ctx_.IncrementMonCounter("sql_join_operations", "Natural"); Error() << "Natural join is not implemented yet"; return false; } - if (!CollectJoinLinkSettings(Ctx.TokenPosition(alt.GetToken3()), linkSettings, Ctx)) { + if (!CollectJoinLinkSettings(Ctx_.TokenPosition(alt.GetToken3()), linkSettings, Ctx_)) { return false; } switch (alt.GetBlock2().Alt_case()) { @@ -120,7 +120,7 @@ bool TSqlSelect::JoinOp(ISource* join, const TRule_join_source::TBlock3& block, joinOp = Token(block.GetAlt4().GetToken1()); break; case TRule_join_op_TAlt2_TBlock2_TAlt1_TBlock1::ALT_NOT_SET: - Ctx.IncrementMonCounter("sql_errors", "UnknownJoinOperation"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownJoinOperation"); AltNotImplemented("join_op", node); return false; } @@ -132,7 +132,7 @@ bool TSqlSelect::JoinOp(ISource* join, const TRule_join_source::TBlock3& block, Token(alt.GetBlock2().GetAlt1().GetBlock2().GetToken1()); Error() << "Invalid join type: " << normalizedOp << (normalizedOp.empty() ? "" : " ") << "OUTER JOIN. " << "OUTER keyword is optional and can only be used after LEFT, RIGHT or FULL"; - Ctx.IncrementMonCounter("sql_errors", "BadJoinType"); + Ctx_.IncrementMonCounter("sql_errors", "BadJoinType"); return false; } } @@ -144,22 +144,22 @@ bool TSqlSelect::JoinOp(ISource* join, const TRule_join_source::TBlock3& block, joinOp = Token(alt.GetBlock2().GetAlt3().GetToken1()); break; case TRule_join_op::TAlt2::TBlock2::ALT_NOT_SET: - Ctx.IncrementMonCounter("sql_errors", "UnknownJoinOperation"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownJoinOperation"); AltNotImplemented("join_op", node); return false; } - Ctx.IncrementMonCounter("sql_features", "Join"); - Ctx.IncrementMonCounter("sql_join_operations", joinOp); + Ctx_.IncrementMonCounter("sql_features", "Join"); + Ctx_.IncrementMonCounter("sql_join_operations", joinOp); break; } case TRule_join_op::ALT_NOT_SET: - Ctx.IncrementMonCounter("sql_errors", "UnknownJoinOperation2"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownJoinOperation2"); AltNotImplemented("join_op", node); return false; } joinOp = NormalizeJoinOp(joinOp); if (linkSettings.Strategy != TJoinLinkSettings::EStrategy::Default && joinOp == "Cross") { - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_UNUSED_HINT) << "Non-default join strategy will not be used for CROSS JOIN"; + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_UNUSED_HINT) << "Non-default join strategy will not be used for CROSS JOIN"; linkSettings.Strategy = TJoinLinkSettings::EStrategy::Default; } @@ -167,27 +167,27 @@ bool TSqlSelect::JoinOp(ISource* join, const TRule_join_source::TBlock3& block, if (block.HasBlock4()) { if (joinOp == "Cross") { Error() << "Cross join should not have ON or USING expression"; - Ctx.IncrementMonCounter("sql_errors", "BadJoinExpr"); + Ctx_.IncrementMonCounter("sql_errors", "BadJoinExpr"); return false; } joinKeyExpr = JoinExpr(join, block.GetBlock4().GetRule_join_constraint1()); if (!joinKeyExpr) { - Ctx.IncrementMonCounter("sql_errors", "BadJoinExpr"); + Ctx_.IncrementMonCounter("sql_errors", "BadJoinExpr"); return false; } } else { if (joinOp != "Cross") { Error() << "Expected ON or USING expression"; - Ctx.IncrementMonCounter("sql_errors", "BadJoinExpr"); + Ctx_.IncrementMonCounter("sql_errors", "BadJoinExpr"); return false; } } if (joinOp == "Cross" && anyPos) { - Ctx.Error(*anyPos) << "ANY should not be used with Cross JOIN"; - Ctx.IncrementMonCounter("sql_errors", "BadJoinAny"); + Ctx_.Error(*anyPos) << "ANY should not be used with Cross JOIN"; + Ctx_.IncrementMonCounter("sql_errors", "BadJoinAny"); return false; } @@ -202,24 +202,24 @@ TNodePtr TSqlSelect::JoinExpr(ISource* join, const TRule_join_constraint& node) case TRule_join_constraint::kAltJoinConstraint1: { auto& alt = node.GetAlt_join_constraint1(); Token(alt.GetToken1()); - TColumnRefScope scope(Ctx, EColumnRefState::Allow); - TSqlExpression expr(Ctx, Mode); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); + TSqlExpression expr(Ctx_, Mode_); return expr.Build(alt.GetRule_expr2()); } case TRule_join_constraint::kAltJoinConstraint2: { auto& alt = node.GetAlt_join_constraint2(); Token(alt.GetToken1()); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TVector<TDeferredAtom> names; if (!PureColumnOrNamedListStr(alt.GetRule_pure_column_or_named_list2(), *this, names)) { return nullptr; } Y_DEBUG_ABORT_UNLESS(join->GetJoin()); - return join->GetJoin()->BuildJoinKeys(Ctx, names); + return join->GetJoin()->BuildJoinKeys(Ctx_, names); } case TRule_join_constraint::ALT_NOT_SET: - Ctx.IncrementMonCounter("sql_errors", "UnknownJoinConstraint"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownJoinConstraint"); AltNotImplemented("join_constraint", node); break; } @@ -259,7 +259,7 @@ bool TSqlSelect::FlattenByArg(const TString& sourceLabel, TVector<TNodePtr>& fla } else { // select * from T as s flatten by x.y as z if (!column->GetLabel()) { - Ctx.Error(column->GetPos()) << "Unnamed expression after FLATTEN BY is not allowed"; + Ctx_.Error(column->GetPos()) << "Unnamed expression after FLATTEN BY is not allowed"; return false; } flattenByColumns.emplace_back(BuildColumn(column->GetPos(), column->GetLabel())); @@ -276,8 +276,8 @@ bool TSqlSelect::FlattenByArg(const TString& sourceLabel, TVector<TNodePtr>& fla break; } case TRule_flatten_by_arg::kAltFlattenByArg2: { - TColumnRefScope scope(Ctx, EColumnRefState::Allow); - if (!NamedExprList(node.GetAlt_flatten_by_arg2().GetRule_named_expr_list2(), namedExprs) || Ctx.HasPendingErrors) { + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); + if (!NamedExprList(node.GetAlt_flatten_by_arg2().GetRule_named_expr_list2(), namedExprs) || Ctx_.HasPendingErrors) { return false; } for (auto& namedExprNode : namedExprs) { @@ -292,7 +292,7 @@ bool TSqlSelect::FlattenByArg(const TString& sourceLabel, TVector<TNodePtr>& fla } else { auto nodeLabel = namedExprNode->GetLabel(); if (!nodeLabel) { - Ctx.Error(namedExprNode->GetPos()) << "Unnamed expression after FLATTEN BY is not allowed"; + Ctx_.Error(namedExprNode->GetPos()) << "Unnamed expression after FLATTEN BY is not allowed"; return false; } flattenByColumns.emplace_back(BuildColumn(namedExprNode->GetPos(), nodeLabel)); @@ -302,7 +302,7 @@ bool TSqlSelect::FlattenByArg(const TString& sourceLabel, TVector<TNodePtr>& fla break; } case TRule_flatten_by_arg::ALT_NOT_SET: - Ctx.IncrementMonCounter("sql_errors", "UnknownFlattenByArg"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownFlattenByArg"); AltNotImplemented("flatten_by_arg", node); return false; } @@ -330,12 +330,12 @@ TSourcePtr TSqlSelect::FlattenSource(const TRule_flatten_source& node) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", "FlattenByColumns"); - if (!source->AddExpressions(Ctx, flattenByColumns, EExprSeat::FlattenBy)) { + Ctx_.IncrementMonCounter("sql_features", "FlattenByColumns"); + if (!source->AddExpressions(Ctx_, flattenByColumns, EExprSeat::FlattenBy)) { return nullptr; } - if (!source->AddExpressions(Ctx, flattenByExprs, EExprSeat::FlattenByExpr)) { + if (!source->AddExpressions(Ctx_, flattenByExprs, EExprSeat::FlattenByExpr)) { return nullptr; } @@ -343,13 +343,13 @@ TSourcePtr TSqlSelect::FlattenSource(const TRule_flatten_source& node) { break; } case TRule_flatten_source::TBlock2::TBlock2::kAlt2: { - Ctx.IncrementMonCounter("sql_features", "FlattenColumns"); + Ctx_.IncrementMonCounter("sql_features", "FlattenColumns"); source->MarkFlattenColumns(); break; } case TRule_flatten_source::TBlock2::TBlock2::ALT_NOT_SET: - Ctx.IncrementMonCounter("sql_errors", "UnknownOrdinaryNamedColumn"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownOrdinaryNamedColumn"); AltNotImplemented("flatten_source", flatten2); } } @@ -369,27 +369,27 @@ TSourcePtr TSqlSelect::JoinSource(const TRule_join_source& node) { } if (node.Block3Size()) { - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TVector<TSourcePtr> sources; TVector<TMaybe<TPosition>> anyPositions; TVector<bool> anyFlags; sources.emplace_back(std::move(source)); - anyPositions.emplace_back(node.HasBlock1() ? Ctx.TokenPosition(node.GetBlock1().GetToken1()) : TMaybe<TPosition>()); + anyPositions.emplace_back(node.HasBlock1() ? Ctx_.TokenPosition(node.GetBlock1().GetToken1()) : TMaybe<TPosition>()); anyFlags.push_back(bool(anyPositions.back())); for (auto& block: node.GetBlock3()) { sources.emplace_back(FlattenSource(block.GetRule_flatten_source3())); if (!sources.back()) { - Ctx.IncrementMonCounter("sql_errors", "NoJoinWith"); + Ctx_.IncrementMonCounter("sql_errors", "NoJoinWith"); return nullptr; } - anyPositions.emplace_back(block.HasBlock2() ? Ctx.TokenPosition(block.GetBlock2().GetToken1()) : TMaybe<TPosition>()); + anyPositions.emplace_back(block.HasBlock2() ? Ctx_.TokenPosition(block.GetBlock2().GetToken1()) : TMaybe<TPosition>()); anyFlags.push_back(bool(anyPositions.back())); } - source = BuildEquiJoin(pos, std::move(sources), std::move(anyFlags), Ctx.Scoped->StrictJoinKeyTypes); + source = BuildEquiJoin(pos, std::move(sources), std::move(anyFlags), Ctx_.Scoped->StrictJoinKeyTypes); size_t idx = 1; for (auto& block: node.GetBlock3()) { YQL_ENSURE(idx < anyPositions.size()); @@ -397,7 +397,7 @@ TSourcePtr TSqlSelect::JoinSource(const TRule_join_source& node) { TMaybe<TPosition> rightAny = anyPositions[idx]; if (!JoinOp(source.Get(), block, leftAny ? leftAny : rightAny)) { - Ctx.IncrementMonCounter("sql_errors", "NoJoinOp"); + Ctx_.IncrementMonCounter("sql_errors", "NoJoinOp"); return nullptr; } ++idx; @@ -418,17 +418,17 @@ bool TSqlSelect::SelectTerm(TVector<TNodePtr>& terms, const TRule_result_column& Token(alt.GetToken2()); auto idAsteriskQualify = OptIdPrefixAsStr(alt.GetRule_opt_id_prefix1(), *this); - Ctx.IncrementMonCounter("sql_features", idAsteriskQualify ? "QualifyAsterisk" : "Asterisk"); - terms.push_back(BuildColumn(Ctx.Pos(), "*", idAsteriskQualify)); + Ctx_.IncrementMonCounter("sql_features", idAsteriskQualify ? "QualifyAsterisk" : "Asterisk"); + terms.push_back(BuildColumn(Ctx_.Pos(), "*", idAsteriskQualify)); break; } case TRule_result_column::kAltResultColumn2: { auto alt = node.GetAlt_result_column2(); - TColumnRefScope scope(Ctx, EColumnRefState::Allow); - TSqlExpression expr(Ctx, Mode); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); + TSqlExpression expr(Ctx_, Mode_); TNodePtr term(expr.Build(alt.GetRule_expr1())); if (!term) { - Ctx.IncrementMonCounter("sql_errors", "NoTerm"); + Ctx_.IncrementMonCounter("sql_errors", "NoTerm"); return false; } if (alt.HasBlock2()) { @@ -440,9 +440,9 @@ bool TSqlSelect::SelectTerm(TVector<TNodePtr>& terms, const TRule_result_column& break; case TRule_result_column_TAlt2_TBlock2::kAlt2: label = Id(alt.GetBlock2().GetAlt2().GetRule_an_id_as_compat1(), *this); - if (!Ctx.AnsiOptionalAs) { + if (!Ctx_.AnsiOptionalAs) { // AS is mandatory - Ctx.Error() << "Expecting mandatory AS here. Did you miss comma? Please add PRAGMA AnsiOptionalAs; for ANSI compatibility"; + Ctx_.Error() << "Expecting mandatory AS here. Did you miss comma? Please add PRAGMA AnsiOptionalAs; for ANSI compatibility"; return false; } implicitLabel = true; @@ -450,14 +450,14 @@ bool TSqlSelect::SelectTerm(TVector<TNodePtr>& terms, const TRule_result_column& case TRule_result_column_TAlt2_TBlock2::ALT_NOT_SET: Y_ABORT("You should change implementation according to grammar changes"); } - term->SetLabel(label, Ctx.Pos()); + term->SetLabel(label, Ctx_.Pos()); term->MarkImplicitLabel(implicitLabel); } terms.push_back(term); break; } case TRule_result_column::ALT_NOT_SET: - Ctx.IncrementMonCounter("sql_errors", "UnknownResultColumn"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownResultColumn"); AltNotImplemented("result_column", node); return false; } @@ -469,23 +469,23 @@ bool TSqlSelect::ValidateSelectColumns(const TVector<TNodePtr>& terms) { TSet<TString> asteriskSources; for (const auto& term: terms) { const auto& label = term->GetLabel(); - if (!Ctx.PragmaAllowDotInAlias && label.find('.') != TString::npos) { - Ctx.Error(term->GetPos()) << "Unable to use '.' in column name. Invalid column name: " << label; + if (!Ctx_.PragmaAllowDotInAlias && label.find('.') != TString::npos) { + Ctx_.Error(term->GetPos()) << "Unable to use '.' in column name. Invalid column name: " << label; return false; } if (!label.empty()) { if (!labels.insert(label).second) { - Ctx.Error(term->GetPos()) << "Unable to use duplicate column names. Collision in name: " << label; + Ctx_.Error(term->GetPos()) << "Unable to use duplicate column names. Collision in name: " << label; return false; } } if (term->IsAsterisk()) { const auto& source = *term->GetSourceName(); if (source.empty() && terms.ysize() > 1) { - Ctx.Error(term->GetPos()) << "Unable to use plain '*' with other projection items. Please use qualified asterisk instead: '<table>.*' (<table> can be either table name or table alias)."; + Ctx_.Error(term->GetPos()) << "Unable to use plain '*' with other projection items. Please use qualified asterisk instead: '<table>.*' (<table> can be either table name or table alias)."; return false; } else if (!asteriskSources.insert(source).second) { - Ctx.Error(term->GetPos()) << "Unable to use twice same quialified asterisk. Invalid source: " << source; + Ctx_.Error(term->GetPos()) << "Unable to use twice same quialified asterisk. Invalid source: " << source; return false; } } else if (label.empty()) { @@ -494,7 +494,7 @@ bool TSqlSelect::ValidateSelectColumns(const TVector<TNodePtr>& terms) { const auto& source = *term->GetSourceName(); const auto usedName = source.empty() ? *column : source + '.' + *column; if (!labels.insert(usedName).second) { - Ctx.Error(term->GetPos()) << "Unable to use duplicate column names. Collision in name: " << usedName; + Ctx_.Error(term->GetPos()) << "Unable to use duplicate column names. Collision in name: " << usedName; return false; } } @@ -526,30 +526,30 @@ TSourcePtr TSqlSelect::SingleSource(const TRule_single_source& node, const TVect return table.Source; } - TPosition pos(Ctx.Pos()); - Ctx.IncrementMonCounter("sql_select_clusters", table.Cluster.GetLiteral() ? *table.Cluster.GetLiteral() : "unknown"); + TPosition pos(Ctx_.Pos()); + Ctx_.IncrementMonCounter("sql_select_clusters", table.Cluster.GetLiteral() ? *table.Cluster.GetLiteral() : "unknown"); return BuildTableSource(pos, table); } } case TRule_single_source::kAltSingleSource2: { const auto& alt = node.GetAlt_single_source2(); Token(alt.GetToken1()); - TSqlSelect innerSelect(Ctx, Mode); + TSqlSelect innerSelect(Ctx_, Mode_); TPosition pos; auto source = innerSelect.Build(alt.GetRule_select_stmt2(), pos); if (!source) { return nullptr; } - return BuildInnerSource(pos, BuildSourceNode(pos, std::move(source)), Ctx.Scoped->CurrService, Ctx.Scoped->CurrCluster); + return BuildInnerSource(pos, BuildSourceNode(pos, std::move(source)), Ctx_.Scoped->CurrService, Ctx_.Scoped->CurrCluster); } case TRule_single_source::kAltSingleSource3: { const auto& alt = node.GetAlt_single_source3(); TPosition pos; - return TSqlValues(Ctx, Mode).Build(alt.GetRule_values_stmt2(), pos, derivedColumns, derivedColumnsPos); + return TSqlValues(Ctx_, Mode_).Build(alt.GetRule_values_stmt2(), pos, derivedColumns, derivedColumnsPos); } case TRule_single_source::ALT_NOT_SET: AltNotImplemented("single_source", node); - Ctx.IncrementMonCounter("sql_errors", "UnknownSingleSource"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownSingleSource"); return nullptr; } } @@ -561,7 +561,7 @@ TSourcePtr TSqlSelect::NamedSingleSource(const TRule_named_single_source& node, if (node.HasBlock3() && node.GetBlock3().HasBlock2()) { const auto& columns = node.GetBlock3().GetBlock2().GetRule_pure_column_list1(); Token(columns.GetToken1()); - derivedColumnsPos = Ctx.Pos(); + derivedColumnsPos = Ctx_.Pos(); if (node.GetRule_single_source1().Alt_case() != TRule_single_source::kAltSingleSource3) { Error() << "Derived column list is only supported for VALUES"; @@ -579,10 +579,10 @@ TSourcePtr TSqlSelect::NamedSingleSource(const TRule_named_single_source& node, if (node.HasBlock4()) { //CAN/CSA-ISO/IEC 9075-2:18 7.6 <table reference> //4) TF shall not simply contain both a <sample clause> and a <row pattern recognition clause and name>. - Ctx.Error() << "Source shall not simply contain both a sample clause and a row pattern recognition clause"; + Ctx_.Error() << "Source shall not simply contain both a sample clause and a row pattern recognition clause"; return {}; } - auto matchRecognizeClause = TSqlMatchRecognizeClause(Ctx, Mode); + auto matchRecognizeClause = TSqlMatchRecognizeClause(Ctx_, Mode_); auto matchRecognize = matchRecognizeClause.CreateBuilder(node.GetBlock2().GetRule_row_pattern_recognition_clause1()); singleSource->SetMatchRecognize(matchRecognize); } @@ -594,9 +594,9 @@ TSourcePtr TSqlSelect::NamedSingleSource(const TRule_named_single_source& node, break; case TRule_named_single_source_TBlock3_TBlock1::kAlt2: label = Id(node.GetBlock3().GetBlock1().GetAlt2().GetRule_an_id_as_compat1(), *this); - if (!Ctx.AnsiOptionalAs) { + if (!Ctx_.AnsiOptionalAs) { // AS is mandatory - Ctx.Error() << "Expecting mandatory AS here. Did you miss comma? Please add PRAGMA AnsiOptionalAs; for ANSI compatibility"; + Ctx_.Error() << "Expecting mandatory AS here. Did you miss comma? Please add PRAGMA AnsiOptionalAs; for ANSI compatibility"; return {}; } break; @@ -608,7 +608,7 @@ TSourcePtr TSqlSelect::NamedSingleSource(const TRule_named_single_source& node, if (node.HasBlock4()) { ESampleClause sampleClause; ESampleMode mode; - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); TNodePtr samplingRateNode; TNodePtr samplingSeedNode; const auto& sampleBlock = node.GetBlock4(); @@ -624,7 +624,7 @@ TSourcePtr TSqlSelect::NamedSingleSource(const TRule_named_single_source& node, return nullptr; } pos = GetPos(sampleBlock.GetAlt1().GetRule_sample_clause1().GetToken1()); - Ctx.IncrementMonCounter("sql_features", "SampleClause"); + Ctx_.IncrementMonCounter("sql_features", "SampleClause"); } break; case TRule_named_single_source::TBlock4::kAlt2: @@ -638,8 +638,8 @@ TSourcePtr TSqlSelect::NamedSingleSource(const TRule_named_single_source& node, } else if (token == "bernoulli") { mode = ESampleMode::Bernoulli; } else { - Ctx.Error(GetPos(modeToken)) << "Unsupported sampling mode: " << token; - Ctx.IncrementMonCounter("sql_errors", "UnsupportedSamplingMode"); + Ctx_.Error(GetPos(modeToken)) << "Unsupported sampling mode: " << token; + Ctx_.IncrementMonCounter("sql_errors", "UnsupportedSamplingMode"); return nullptr; } const auto& tableSampleExpr = tableSampleClause.GetRule_expr4(); @@ -655,14 +655,14 @@ TSourcePtr TSqlSelect::NamedSingleSource(const TRule_named_single_source& node, } } pos = GetPos(sampleBlock.GetAlt2().GetRule_tablesample_clause1().GetToken1()); - Ctx.IncrementMonCounter("sql_features", "SampleClause"); + Ctx_.IncrementMonCounter("sql_features", "SampleClause"); } break; case TRule_named_single_source::TBlock4::ALT_NOT_SET: Y_ABORT("SampleClause: does not corresond to grammar changes"); } - if (!singleSource->SetSamplingOptions(Ctx, pos, sampleClause, mode, samplingRateNode, samplingSeedNode)) { - Ctx.IncrementMonCounter("sql_errors", "IncorrectSampleClause"); + if (!singleSource->SetSamplingOptions(Ctx_, pos, sampleClause, mode, samplingRateNode, samplingSeedNode)) { + Ctx_.IncrementMonCounter("sql_errors", "IncorrectSampleClause"); return nullptr; } } @@ -674,12 +674,12 @@ bool TSqlSelect::ColumnName(TVector<TNodePtr>& keys, const TRule_column_name& no const auto columnName = Id(node.GetRule_an_id2(), *this); if (columnName.empty()) { // TDOD: Id() should return TMaybe<TString> - if (!Ctx.HasPendingErrors) { - Ctx.Error() << "Empty column name is not allowed"; + if (!Ctx_.HasPendingErrors) { + Ctx_.Error() << "Empty column name is not allowed"; } return false; } - keys.push_back(BuildColumn(Ctx.Pos(), columnName, sourceName)); + keys.push_back(BuildColumn(Ctx_.Pos(), columnName, sourceName)); return true; } @@ -701,12 +701,12 @@ bool TSqlSelect::ColumnName(TVector<TNodePtr>& keys, const TRule_without_column_ if (columnName.empty()) { // TDOD: Id() should return TMaybe<TString> - if (!Ctx.HasPendingErrors) { - Ctx.Error() << "Empty column name is not allowed"; + if (!Ctx_.HasPendingErrors) { + Ctx_.Error() << "Empty column name is not allowed"; } return false; } - keys.push_back(BuildColumn(Ctx.Pos(), columnName, sourceName)); + keys.push_back(BuildColumn(Ctx_.Pos(), columnName, sourceName)); return true; } @@ -754,7 +754,7 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS // (WHERE expr)? (HAVING expr)? (ASSUME order_by_clause)?)? Token(node.GetToken1()); - TPosition startPos(Ctx.Pos()); + TPosition startPos(Ctx_.Pos()); if (!selectPos) { selectPos = startPos; @@ -786,24 +786,24 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS const auto& block5 = node.GetBlock5(); if (block5.HasBlock5()) { - TSqlExpression expr(Ctx, Mode); - TColumnRefScope scope(Ctx, EColumnRefState::Allow); + TSqlExpression expr(Ctx_, Mode_); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); TNodePtr where = expr.Build(block5.GetBlock5().GetRule_expr2()); - if (!where || !source->AddFilter(Ctx, where)) { + if (!where || !source->AddFilter(Ctx_, where)) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", "ProcessWhere"); + Ctx_.IncrementMonCounter("sql_features", "ProcessWhere"); } else { - Ctx.IncrementMonCounter("sql_features", processStream ? "ProcessStream" : "Process"); + Ctx_.IncrementMonCounter("sql_features", processStream ? "ProcessStream" : "Process"); } if (block5.HasBlock6()) { - Ctx.Error() << "PROCESS does not allow HAVING yet! You may request it on yql@ maillist."; + Ctx_.Error() << "PROCESS does not allow HAVING yet! You may request it on yql@ maillist."; return nullptr; } bool listCall = false; - TSqlCallExpr call(Ctx, Mode); + TSqlCallExpr call(Ctx_, Mode_); bool initRet = call.Init(block5.GetRule_using_call_expr2()); if (initRet) { call.IncCounters(); @@ -817,7 +817,7 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS for (auto& arg: args) { if (auto placeholder = dynamic_cast<TTableRows*>(arg.Get())) { if (listCall) { - Ctx.Error() << "Only one TableRows() argument is allowed."; + Ctx_.Error() << "Only one TableRows() argument is allowed."; return nullptr; } listCall = true; @@ -825,7 +825,7 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS } if (!call.IsExternal() && block5.HasBlock4()) { - Ctx.Error() << "PROCESS without USING EXTERNAL FUNCTION doesn't allow WITH block"; + Ctx_.Error() << "PROCESS without USING EXTERNAL FUNCTION doesn't allow WITH block"; return nullptr; } @@ -850,7 +850,7 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS } if (call.IsExternal() && block5.HasBlock7()) { - Ctx.Error() << "PROCESS with USING EXTERNAL FUNCTION doesn't allow ASSUME block"; + Ctx_.Error() << "PROCESS with USING EXTERNAL FUNCTION doesn't allow ASSUME block"; return nullptr; } @@ -859,7 +859,7 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS if (!OrderByClause(block5.GetBlock7().GetRule_order_by_clause2(), assumeOrderBy)) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", IsColumnsOnly(assumeOrderBy) ? "AssumeOrderBy" : "AssumeOrderByExpr"); + Ctx_.IncrementMonCounter("sql_features", IsColumnsOnly(assumeOrderBy) ? "AssumeOrderBy" : "AssumeOrderByExpr"); } return BuildProcess(startPos, std::move(source), with, finalCall.IsExternal(), std::move(args), listCall, processStream, settings, assumeOrderBy); @@ -870,7 +870,7 @@ TSourcePtr TSqlSelect::ReduceCore(const TRule_reduce_core& node, const TWriteSet // ON column_list USING ALL? using_call_expr (AS an_id)? // (WHERE expr)? (HAVING expr)? (ASSUME order_by_clause)? Token(node.GetToken1()); - TPosition startPos(Ctx.Pos()); + TPosition startPos(Ctx_.Pos()); if (!selectPos) { selectPos = startPos; } @@ -904,21 +904,21 @@ TSourcePtr TSqlSelect::ReduceCore(const TRule_reduce_core& node, const TWriteSet } if (node.HasBlock11()) { - TColumnRefScope scope(Ctx, EColumnRefState::Allow); - TSqlExpression expr(Ctx, Mode); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); + TSqlExpression expr(Ctx_, Mode_); TNodePtr where = expr.Build(node.GetBlock11().GetRule_expr2()); - if (!where || !source->AddFilter(Ctx, where)) { + if (!where || !source->AddFilter(Ctx_, where)) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", "ReduceWhere"); + Ctx_.IncrementMonCounter("sql_features", "ReduceWhere"); } else { - Ctx.IncrementMonCounter("sql_features", "Reduce"); + Ctx_.IncrementMonCounter("sql_features", "Reduce"); } TNodePtr having; if (node.HasBlock12()) { - TColumnRefScope scope(Ctx, EColumnRefState::Allow); - TSqlExpression expr(Ctx, Mode); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); + TSqlExpression expr(Ctx_, Mode_); having = expr.Build(node.GetBlock12().GetRule_expr2()); if (!having) { return nullptr; @@ -926,7 +926,7 @@ TSourcePtr TSqlSelect::ReduceCore(const TRule_reduce_core& node, const TWriteSet } bool listCall = false; - TSqlCallExpr call(Ctx, Mode); + TSqlCallExpr call(Ctx_, Mode_); bool initRet = call.Init(node.GetRule_using_call_expr9()); if (initRet) { call.IncCounters(); @@ -940,7 +940,7 @@ TSourcePtr TSqlSelect::ReduceCore(const TRule_reduce_core& node, const TWriteSet for (auto& arg: args) { if (auto placeholder = dynamic_cast<TTableRows*>(arg.Get())) { if (listCall) { - Ctx.Error() << "Only one TableRows() argument is allowed."; + Ctx_.Error() << "Only one TableRows() argument is allowed."; return nullptr; } listCall = true; @@ -965,7 +965,7 @@ TSourcePtr TSqlSelect::ReduceCore(const TRule_reduce_core& node, const TWriteSet if (!OrderByClause(node.GetBlock13().GetRule_order_by_clause2(), assumeOrderBy)) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", IsColumnsOnly(assumeOrderBy) ? "AssumeOrderBy" : "AssumeOrderByExpr"); + Ctx_.IncrementMonCounter("sql_features", IsColumnsOnly(assumeOrderBy) ? "AssumeOrderBy" : "AssumeOrderByExpr"); } return BuildReduce(startPos, reduceMode, std::move(source), std::move(orderBy), std::move(keys), std::move(args), udf, having, @@ -985,12 +985,12 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet Token(node.GetToken2()); } - TPosition startPos(Ctx.Pos()); + TPosition startPos(Ctx_.Pos()); if (!selectPos) { - selectPos = Ctx.Pos(); + selectPos = Ctx_.Pos(); } - const auto hints = Ctx.PullHintForToken(selectPos); + const auto hints = Ctx_.PullHintForToken(selectPos); TColumnsSets uniqueSets, distinctSets; for (const auto& hint : hints) { if (const auto& name = to_lower(hint.Name); name == "unique") @@ -999,25 +999,25 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet uniqueSets.insert_unique(NSorted::TSimpleSet<TString>(hint.Values.cbegin(), hint.Values.cend())); distinctSets.insert_unique(NSorted::TSimpleSet<TString>(hint.Values.cbegin(), hint.Values.cend())); } else { - Ctx.Warning(hint.Pos, TIssuesIds::YQL_UNUSED_HINT) << "Hint " << hint.Name << " will not be used"; + Ctx_.Warning(hint.Pos, TIssuesIds::YQL_UNUSED_HINT) << "Hint " << hint.Name << " will not be used"; } } const bool distinct = IsDistinctOptSet(node.GetRule_opt_set_quantifier4()); if (distinct) { - Ctx.IncrementMonCounter("sql_features", "DistinctInSelect"); + Ctx_.IncrementMonCounter("sql_features", "DistinctInSelect"); } - TSourcePtr source(BuildFakeSource(selectPos, /* missingFrom = */ true, Mode == NSQLTranslation::ESqlMode::SUBQUERY)); + TSourcePtr source(BuildFakeSource(selectPos, /* missingFrom = */ true, Mode_ == NSQLTranslation::ESqlMode::SUBQUERY)); if (node.HasBlock1() && node.HasBlock9()) { Token(node.GetBlock9().GetToken1()); - Ctx.IncrementMonCounter("sql_errors", "DoubleFrom"); - Ctx.Error() << "Only one FROM clause is allowed"; + Ctx_.IncrementMonCounter("sql_errors", "DoubleFrom"); + Ctx_.Error() << "Only one FROM clause is allowed"; return nullptr; } if (node.HasBlock1()) { source = JoinSource(node.GetBlock1().GetRule_join_source2()); - Ctx.IncrementMonCounter("sql_features", "FromInFront"); + Ctx_.IncrementMonCounter("sql_features", "FromInFront"); } else if (node.HasBlock9()) { source = JoinSource(node.GetBlock9().GetRule_join_source2()); } @@ -1037,22 +1037,22 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet if (node.HasBlock10()) { auto block = node.GetBlock10(); Token(block.GetToken1()); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); TNodePtr where; { - TColumnRefScope scope(Ctx, EColumnRefState::Allow); - TSqlExpression expr(Ctx, Mode); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); + TSqlExpression expr(Ctx_, Mode_); where = expr.Build(block.GetRule_expr2()); } if (!where) { - Ctx.IncrementMonCounter("sql_errors", "WhereInvalid"); + Ctx_.IncrementMonCounter("sql_errors", "WhereInvalid"); return nullptr; } - if (!source->AddFilter(Ctx, where)) { - Ctx.IncrementMonCounter("sql_errors", "WhereNotSupportedBySource"); + if (!source->AddFilter(Ctx_, where)) { + Ctx_.IncrementMonCounter("sql_errors", "WhereNotSupportedBySource"); return nullptr; } - Ctx.IncrementMonCounter("sql_features", "Where"); + Ctx_.IncrementMonCounter("sql_features", "Where"); } /// \todo merge gtoupByExpr and groupBy in one @@ -1061,7 +1061,7 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet bool compactGroupBy = false; TString groupBySuffix; if (node.HasBlock11()) { - TGroupByClause clause(Ctx, Mode); + TGroupByClause clause(Ctx_, Mode_); if (!clause.Build(node.GetBlock11().GetRule_group_by_clause1())) { return nullptr; } @@ -1078,32 +1078,32 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet groupBySuffix = clause.GetSuffix(); if (source->IsStream() && !hasHopping) { - Ctx.Error() << "Streaming group by query must have a hopping window specification."; + Ctx_.Error() << "Streaming group by query must have a hopping window specification."; return nullptr; } } TNodePtr having; if (node.HasBlock12()) { - TSqlExpression expr(Ctx, Mode); - TColumnRefScope scope(Ctx, EColumnRefState::Allow); + TSqlExpression expr(Ctx_, Mode_); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); having = expr.Build(node.GetBlock12().GetRule_expr2()); if (!having) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", "Having"); + Ctx_.IncrementMonCounter("sql_features", "Having"); } TWinSpecs windowSpec; if (node.HasBlock13()) { if (source->IsStream()) { - Ctx.Error() << "WINDOW is not allowed in streaming queries"; + Ctx_.Error() << "WINDOW is not allowed in streaming queries"; return nullptr; } if (!WindowClause(node.GetBlock13().GetRule_window_clause1(), windowSpec)) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", "WindowClause"); + Ctx_.IncrementMonCounter("sql_features", "WindowClause"); } bool assumeSorted = false; @@ -1115,7 +1115,7 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet Token(orderBlock.GetRule_order_by_clause2().GetToken1()); if (source->IsStream()) { - Ctx.Error() << "ORDER BY is not allowed in streaming queries"; + Ctx_.Error() << "ORDER BY is not allowed in streaming queries"; return nullptr; } @@ -1126,7 +1126,7 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet if (!OrderByClause(orderBlock.GetRule_order_by_clause2(), orderBy)) { return nullptr; } - Ctx.IncrementMonCounter("sql_features", IsColumnsOnly(orderBy) + Ctx_.IncrementMonCounter("sql_features", IsColumnsOnly(orderBy) ? (assumeSorted ? "AssumeOrderBy" : "OrderBy") : (assumeSorted ? "AssumeOrderByExpr" : "OrderByExpr") ); @@ -1142,19 +1142,19 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet class TScopedWinSpecs { public: TScopedWinSpecs(TContext& ctx, TWinSpecs& specs) - : Ctx(ctx) + : Ctx_(ctx) { - Ctx.WinSpecsScopes.push_back(std::ref(specs)); + Ctx_.WinSpecsScopes.push_back(std::ref(specs)); } ~TScopedWinSpecs() { - Ctx.WinSpecsScopes.pop_back(); + Ctx_.WinSpecsScopes.pop_back(); } private: - TContext& Ctx; + TContext& Ctx_; }; - TScopedWinSpecs scoped(Ctx, windowSpec); + TScopedWinSpecs scoped(Ctx_, windowSpec); if (!SelectTerm(terms, node.GetRule_result_column5())) { return nullptr; } @@ -1168,14 +1168,14 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet if (!ValidateSelectColumns(terms)) { return nullptr; } - return BuildSelectCore(Ctx, startPos, std::move(source), groupByExpr, groupBy, compactGroupBy, groupBySuffix, assumeSorted, orderBy, having, + return BuildSelectCore(Ctx_, startPos, std::move(source), groupByExpr, groupBy, compactGroupBy, groupBySuffix, assumeSorted, orderBy, having, std::move(windowSpec), legacyHoppingWindowSpec, std::move(terms), distinct, std::move(without), forceWithout, selectStream, settings, std::move(uniqueSets), std::move(distinctSets)); } bool TSqlSelect::WindowDefinition(const TRule_window_definition& rule, TWinSpecs& winSpecs) { const TString windowName = Id(rule.GetRule_new_window_name1().GetRule_window_name1().GetRule_an_id_window1(), *this); if (winSpecs.contains(windowName)) { - Ctx.Error() << "Unable to declare window with same name: " << windowName; + Ctx_.Error() << "Unable to declare window with same name: " << windowName; return false; } auto windowSpec = WindowSpecification(rule.GetRule_window_specification3().GetRule_window_specification_details2()); @@ -1210,7 +1210,7 @@ bool TSqlSelect::ValidateLimitOrderByWithSelectOp(TMaybe<TSelectKindPlacement> p } if (!placement->IsLastInSelectOp) { - Ctx.Error() << what << " within UNION ALL is only allowed after last subquery"; + Ctx_.Error() << what << " within UNION ALL is only allowed after last subquery"; return false; } return true; @@ -1227,20 +1227,20 @@ TSqlSelect::TSelectKindResult TSqlSelect::SelectKind(const TRule_select_kind_par if (!res) { return {}; } - TPosition startPos(Ctx.Pos()); + TPosition startPos(Ctx_.Pos()); /// LIMIT INTEGER block TNodePtr skipTake; if (node.HasBlock2()) { auto block = node.GetBlock2(); Token(block.GetToken1()); - TPosition pos(Ctx.Pos()); + TPosition pos(Ctx_.Pos()); if (!ValidateLimitOrderByWithSelectOp(placement, "LIMIT")) { return {}; } - TSqlExpression takeExpr(Ctx, Mode); + TSqlExpression takeExpr(Ctx_, Mode_); auto take = takeExpr.Build(block.GetRule_expr2()); if (!take) { return{}; @@ -1248,7 +1248,7 @@ TSqlSelect::TSelectKindResult TSqlSelect::SelectKind(const TRule_select_kind_par TNodePtr skip; if (block.HasBlock3()) { - TSqlExpression skipExpr(Ctx, Mode); + TSqlExpression skipExpr(Ctx_, Mode_); skip = skipExpr.Build(block.GetBlock3().GetRule_expr2()); if (!skip) { return {}; @@ -1256,9 +1256,9 @@ TSqlSelect::TSelectKindResult TSqlSelect::SelectKind(const TRule_select_kind_par if (Token(block.GetBlock3().GetToken1()) == ",") { // LIMIT skip, take skip.Swap(take); - Ctx.IncrementMonCounter("sql_features", "LimitSkipTake"); + Ctx_.IncrementMonCounter("sql_features", "LimitSkipTake"); } else { - Ctx.IncrementMonCounter("sql_features", "LimitOffset"); + Ctx_.IncrementMonCounter("sql_features", "LimitOffset"); } } @@ -1269,7 +1269,7 @@ TSqlSelect::TSelectKindResult TSqlSelect::SelectKind(const TRule_select_kind_par res.SelectOpSkipTake = st; } - Ctx.IncrementMonCounter("sql_features", "Limit"); + Ctx_.IncrementMonCounter("sql_features", "Limit"); } res.Source = BuildSelect(startPos, std::move(res.Source), skipTake); @@ -1281,18 +1281,18 @@ TSqlSelect::TSelectKindResult TSqlSelect::SelectKind(const TRule_select_kind& no { const bool discard = node.HasBlock1(); const bool hasLabel = node.HasBlock3(); - if (hasLabel && (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW || Mode == NSQLTranslation::ESqlMode::SUBQUERY)) { - Ctx.Error() << "INTO RESULT is not allowed in current mode"; + if (hasLabel && (Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW || Mode_ == NSQLTranslation::ESqlMode::SUBQUERY)) { + Ctx_.Error() << "INTO RESULT is not allowed in current mode"; return {}; } if (discard && hasLabel) { - Ctx.Error() << "DISCARD and INTO RESULT cannot be used at the same time"; + Ctx_.Error() << "DISCARD and INTO RESULT cannot be used at the same time"; return {}; } if (discard && !selectPos) { - selectPos = Ctx.TokenPosition(node.GetBlock1().GetToken1()); + selectPos = Ctx_.TokenPosition(node.GetBlock1().GetToken1()); } TWriteSettings settings; @@ -1306,16 +1306,16 @@ TSqlSelect::TSelectKindResult TSqlSelect::SelectKind(const TRule_select_kind& no if (placement->IsFirstInSelectOp) { res.Settings.Discard = settings.Discard; } else if (settings.Discard) { - auto discardPos = Ctx.TokenPosition(node.GetBlock1().GetToken1()); - Ctx.Error(discardPos) << "DISCARD within UNION ALL is only allowed before first subquery"; + auto discardPos = Ctx_.TokenPosition(node.GetBlock1().GetToken1()); + Ctx_.Error(discardPos) << "DISCARD within UNION ALL is only allowed before first subquery"; return {}; } if (placement->IsLastInSelectOp) { res.Settings.Label = settings.Label; } else if (!settings.Label.Empty()) { - auto labelPos = Ctx.TokenPosition(node.GetBlock3().GetToken1()); - Ctx.Error(labelPos) << "INTO RESULT within UNION ALL is only allowed after last subquery"; + auto labelPos = Ctx_.TokenPosition(node.GetBlock3().GetToken1()); + Ctx_.Error(labelPos) << "INTO RESULT within UNION ALL is only allowed after last subquery"; return {}; } @@ -1393,7 +1393,7 @@ TSourcePtr TSqlSelect::Build(const TRule& node, TPosition pos, TSelectKindResult if (token == "union") { // nothing } else if (token == "intersect" || token == "except") { - Ctx.Error() << "INTERSECT and EXCEPT are not implemented yet"; + Ctx_.Error() << "INTERSECT and EXCEPT are not implemented yet"; return nullptr; } else { Y_ABORT("You should change implementation according to grammar changes. Invalid token: %s", token.c_str()); @@ -1439,7 +1439,7 @@ TSourcePtr TSqlSelect::Build(const TRule& node, TPosition pos, TSelectKindResult TVector<TNodePtr> terms; terms.push_back(BuildColumn(unionPos, "*", "")); - result = BuildSelectCore(Ctx, unionPos, std::move(result), groupByExpr, groupBy, compactGroupBy, groupBySuffix, + result = BuildSelectCore(Ctx_, unionPos, std::move(result), groupByExpr, groupBy, compactGroupBy, groupBySuffix, assumeOrderBy, orderBy, having, std::move(winSpecs), legacyHoppingWindowSpec, std::move(terms), distinct, std::move(without), forceWithout, stream, outermostSettings, {}, {}); diff --git a/yql/essentials/sql/v1/sql_translation.cpp b/yql/essentials/sql/v1/sql_translation.cpp index e96096ccbda..42e03775303 100644 --- a/yql/essentials/sql/v1/sql_translation.cpp +++ b/yql/essentials/sql/v1/sql_translation.cpp @@ -70,17 +70,17 @@ bool BuildContextRecreationQuery(TContext& context, TStringBuilder& query) { // ensures that the parsing mode is restored to the original value class TModeGuard { - ESqlMode& Mode; - ESqlMode OriginalMode; + ESqlMode& Mode_; + ESqlMode OriginalMode_; public: TModeGuard(ESqlMode& mode, ESqlMode newMode) - : Mode(mode) - , OriginalMode(std::exchange(mode, newMode)) + : Mode_(mode) + , OriginalMode_(std::exchange(mode, newMode)) {} ~TModeGuard() { - Mode = OriginalMode; + Mode_ = OriginalMode_; } }; @@ -663,7 +663,7 @@ bool TSqlTranslation::CreateTableIndex(const TRule_table_index& node, TVector<TI } bool sync = true; if (globalIndex.HasBlock3()) { - const TString token = to_lower(Ctx.Token(globalIndex.GetBlock3().GetToken1())); + const TString token = to_lower(Ctx_.Token(globalIndex.GetBlock3().GetToken1())); if (token == "sync") { sync = true; } else if (token == "async") { @@ -699,13 +699,13 @@ bool TSqlTranslation::CreateTableIndex(const TRule_table_index& node, TVector<TI const TString subType = to_upper(IdEx(node.GetRule_table_index_type3().GetBlock2().GetRule_index_subtype2().GetRule_an_id1(), *this).Name) ; if (subType == "VECTOR_KMEANS_TREE") { if (indexes.back().Type != TIndexDescription::EType::GlobalSync) { - Ctx.Error() << subType << " index can only be GLOBAL [SYNC]"; + Ctx_.Error() << subType << " index can only be GLOBAL [SYNC]"; return false; } indexes.back().Type = TIndexDescription::EType::GlobalVectorKmeansTree; } else { - Ctx.Error() << subType << " index subtype is not supported"; + Ctx_.Error() << subType << " index subtype is not supported"; return false; } } @@ -719,7 +719,7 @@ bool TSqlTranslation::CreateTableIndex(const TRule_table_index& node, TVector<TI if (!CreateIndexSettings(node.GetBlock10().GetRule_with_index_settings1(), index.Type, index.IndexSettings)) { return false; } - if (!vectorSettings.Validate(Ctx)) { + if (!vectorSettings.Validate(Ctx_)) { return false; } @@ -815,11 +815,11 @@ bool TSqlTranslation::ParseDatabaseSetting(const TRule_database_setting& in, THa const auto setting = to_upper(Id(in.GetRule_an_id1(), *this)); if (out.contains(setting)) { - Ctx.Error() << "Duplicate setting: " << setting; + Ctx_.Error() << "Duplicate setting: " << setting; return false; } - auto node = ParseDatabaseSettingValue(Ctx, in.GetRule_database_setting_value3()); + auto node = ParseDatabaseSettingValue(Ctx_, in.GetRule_database_setting_value3()); if (!node) { return false; } @@ -857,7 +857,7 @@ std::tuple<bool, T, TString> TSqlTranslation::GetIndexSettingValue(const TRule_i // STRING_VALUE else if (node.HasAlt_index_setting_value2()) { const TString stringValue = to_lower(Token(node.GetAlt_index_setting_value2().GetToken1())); - const auto unescaped = StringContent(Ctx, Ctx.Pos(), stringValue); + const auto unescaped = StringContent(Ctx_, Ctx_.Pos(), stringValue); if (!unescaped) { return {false, value, stringValue}; } @@ -876,7 +876,7 @@ std::tuple<bool, ui64, TString> TSqlTranslation::GetIndexSettingValue(const TRul const TString stringValue = Token(intNode.GetToken1()); ui64 value = 0; TString suffix; - if (!ParseNumbers(Ctx, stringValue, value, suffix)) { + if (!ParseNumbers(Ctx_, stringValue, value, suffix)) { return {false, value, stringValue}; } return {true, value, stringValue}; @@ -904,51 +904,51 @@ bool TSqlTranslation::CreateIndexSettingEntry(const TIdentifier &id, if (to_lower(id.Name) == "distance") { const auto [success, value, stringValue] = GetIndexSettingValue<TVectorIndexSettings::EDistance>(node); if (!success) { - Ctx.Error() << "Invalid distance: " << stringValue; + Ctx_.Error() << "Invalid distance: " << stringValue; return false; } vectorIndexSettings.Distance = value; } else if (to_lower(id.Name) == "similarity") { const auto [success, value, stringValue] = GetIndexSettingValue<TVectorIndexSettings::ESimilarity>(node); if (!success) { - Ctx.Error() << "Invalid similarity: " << stringValue; + Ctx_.Error() << "Invalid similarity: " << stringValue; return false; } vectorIndexSettings.Similarity = value; } else if (to_lower(id.Name) == "vector_type") { const auto [success, value, stringValue] = GetIndexSettingValue<TVectorIndexSettings::EVectorType>(node); if (!success) { - Ctx.Error() << "Invalid vector_type: " << stringValue; + Ctx_.Error() << "Invalid vector_type: " << stringValue; return false; } vectorIndexSettings.VectorType = value; } else if (to_lower(id.Name) == "vector_dimension") { const auto [success, value, stringValue] = GetIndexSettingValue<ui64>(node); if (!success || value > Max<ui32>()) { - Ctx.Error() << "Invalid vector_dimension: " << stringValue; + Ctx_.Error() << "Invalid vector_dimension: " << stringValue; return false; } vectorIndexSettings.VectorDimension = value; } else if (to_lower(id.Name) == "clusters") { const auto [success, value, stringValue] = GetIndexSettingValue<ui64>(node); if (!success || value > Max<ui32>()) { - Ctx.Error() << "Invalid clusters: " << stringValue; + Ctx_.Error() << "Invalid clusters: " << stringValue; return false; } vectorIndexSettings.Clusters = value; } else if (to_lower(id.Name) == "levels") { const auto [success, value, stringValue] = GetIndexSettingValue<ui64>(node); if (!success || value > Max<ui32>()) { - Ctx.Error() << "Invalid levels: " << stringValue; + Ctx_.Error() << "Invalid levels: " << stringValue; return false; } vectorIndexSettings.Levels = value; } else { - Ctx.Error() << "Unknown index setting: " << id.Name; + Ctx_.Error() << "Unknown index setting: " << id.Name; return false; } } else { - Ctx.Error() << "Unknown index setting: " << id.Name; + Ctx_.Error() << "Unknown index setting: " << id.Name; return false; } return true; @@ -1014,7 +1014,7 @@ TTableHints GetTableFuncHints(TStringBuf funcName) { TNodePtr TSqlTranslation::NamedExpr(const TRule_named_expr& node, EExpr exprMode) { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); if (exprMode == EExpr::GroupBy) { expr.SetSmartParenthesisMode(TSqlExpression::ESmartParenthesis::GroupBy); } else if (exprMode == EExpr::SqlLambdaParams) { @@ -1025,7 +1025,7 @@ TNodePtr TSqlTranslation::NamedExpr(const TRule_named_expr& node, EExpr exprMode } TNodePtr exprNode(expr.Build(node.GetRule_expr1())); if (!exprNode) { - Ctx.IncrementMonCounter("sql_errors", "NamedExprInvalid"); + Ctx_.IncrementMonCounter("sql_errors", "NamedExprInvalid"); return nullptr; } if (node.HasBlock2()) { @@ -1057,13 +1057,13 @@ bool TSqlTranslation::BindList(const TRule_bind_parameter_list& node, TVector<TS return false; } - bindNames.emplace_back(TSymbolNameWithPos{name, Ctx.Pos()}); + bindNames.emplace_back(TSymbolNameWithPos{name, Ctx_.Pos()}); for (auto& b: node.GetBlock2()) { if (!NamedNodeImpl(b.GetRule_bind_parameter2(), name, *this)) { return false; } - bindNames.emplace_back(TSymbolNameWithPos{name, Ctx.Pos()}); + bindNames.emplace_back(TSymbolNameWithPos{name, Ctx_.Pos()}); } return true; } @@ -1081,7 +1081,7 @@ bool TSqlTranslation::ActionOrSubqueryArgs(const TRule_action_or_subquery_args& if (isOptional) { optionalArgsCount++; } - bindNames.emplace_back(TSymbolNameWithPos{name, Ctx.Pos()}); + bindNames.emplace_back(TSymbolNameWithPos{name, Ctx_.Pos()}); for (auto& b: node.GetBlock2()) { if (!NamedNodeImpl(b.GetRule_opt_bind_parameter2(), name, isOptional, *this)) { @@ -1094,7 +1094,7 @@ bool TSqlTranslation::ActionOrSubqueryArgs(const TRule_action_or_subquery_args& Context().Error() << "Non-optional argument can not follow optional one"; return false; } - bindNames.emplace_back(TSymbolNameWithPos{name, Ctx.Pos()}); + bindNames.emplace_back(TSymbolNameWithPos{name, Ctx_.Pos()}); } return true; } @@ -1139,12 +1139,12 @@ bool TSqlTranslation::NamedBindParam(const TRule_named_bind_parameter& node, TSy if (!NamedNodeImpl(node.GetRule_bind_parameter1(), name.Name, *this)) { return false; } - name.Pos = Ctx.Pos(); + name.Pos = Ctx_.Pos(); if (node.HasBlock2()) { if (!NamedNodeImpl(node.GetBlock2().GetRule_bind_parameter2(), alias.Name, *this)) { return false; } - alias.Pos = Ctx.Pos(); + alias.Pos = Ctx_.Pos(); } return true; } @@ -1152,7 +1152,7 @@ bool TSqlTranslation::NamedBindParam(const TRule_named_bind_parameter& node, TSy TMaybe<TTableArg> TSqlTranslation::TableArgImpl(const TRule_table_arg& node) { TTableArg ret; ret.HasAt = node.HasBlock1(); - TColumnRefScope scope(Ctx, EColumnRefState::AsStringLiteral); + TColumnRefScope scope(Ctx_, EColumnRefState::AsStringLiteral); ret.Expr = NamedExpr(node.GetRule_named_expr2()); if (!ret.Expr) { return Nothing(); @@ -1190,7 +1190,7 @@ bool TSqlTranslation::ClusterExpr(const TRule_cluster_expr& node, bool allowWild if (service != YtProviderName && service != KikimrProviderName && service != RtmrProviderName && service != StatProviderName) { - Ctx.Error() << "Unknown service: " << service; + Ctx_.Error() << "Unknown service: " << service; return false; } } @@ -1205,17 +1205,17 @@ bool TSqlTranslation::ClusterExpr(const TRule_cluster_expr& node, bool allowWild if (value.GetLiteral()) { TString clusterName = *value.GetLiteral(); if (allowBinding && to_lower(clusterName) == "bindings") { - switch (Ctx.Settings.BindingsMode) { + switch (Ctx_.Settings.BindingsMode) { case NSQLTranslation::EBindingsMode::DISABLED: - Ctx.Error(Ctx.Pos(), TIssuesIds::YQL_DISABLED_BINDINGS) << "Please remove 'bindings.' from your query, the support for this syntax has ended"; - Ctx.IncrementMonCounter("sql_errors", "DisabledBinding"); + Ctx_.Error(Ctx_.Pos(), TIssuesIds::YQL_DISABLED_BINDINGS) << "Please remove 'bindings.' from your query, the support for this syntax has ended"; + Ctx_.IncrementMonCounter("sql_errors", "DisabledBinding"); return false; case NSQLTranslation::EBindingsMode::ENABLED: isBinding = true; break; case NSQLTranslation::EBindingsMode::DROP_WITH_WARNING: - Ctx.Warning(Ctx.Pos(), TIssuesIds::YQL_DEPRECATED_BINDINGS) << "Please remove 'bindings.' from your query, the support for this syntax will be dropped soon"; - Ctx.IncrementMonCounter("sql_errors", "DeprecatedBinding"); + Ctx_.Warning(Ctx_.Pos(), TIssuesIds::YQL_DEPRECATED_BINDINGS) << "Please remove 'bindings.' from your query, the support for this syntax will be dropped soon"; + Ctx_.IncrementMonCounter("sql_errors", "DeprecatedBinding"); [[fallthrough]]; case NSQLTranslation::EBindingsMode::DROP: service = Context().Scoped->CurrService; @@ -1226,14 +1226,14 @@ bool TSqlTranslation::ClusterExpr(const TRule_cluster_expr& node, bool allowWild return true; } TString normalizedClusterName; - auto foundProvider = Ctx.GetClusterProvider(clusterName, normalizedClusterName); + auto foundProvider = Ctx_.GetClusterProvider(clusterName, normalizedClusterName); if (!foundProvider) { - Ctx.Error() << "Unknown cluster: " << clusterName; + Ctx_.Error() << "Unknown cluster: " << clusterName; return false; } if (service && *foundProvider != service) { - Ctx.Error() << "Mismatch of cluster " << clusterName << " service, expected: " + Ctx_.Error() << "Mismatch of cluster " << clusterName << " service, expected: " << *foundProvider << ", got: " << service; return false; } @@ -1242,10 +1242,10 @@ bool TSqlTranslation::ClusterExpr(const TRule_cluster_expr& node, bool allowWild service = *foundProvider; } - value = TDeferredAtom(Ctx.Pos(), normalizedClusterName); + value = TDeferredAtom(Ctx_.Pos(), normalizedClusterName); } else { if (!service) { - Ctx.Error() << "Cluster service is not set"; + Ctx_.Error() << "Cluster service is not set"; return false; } } @@ -1255,7 +1255,7 @@ bool TSqlTranslation::ClusterExpr(const TRule_cluster_expr& node, bool allowWild } case TRule_cluster_expr::TBlock2::kAlt2: { if (!allowWildcard) { - Ctx.Error() << "Cluster wildcards allowed only in USE statement"; + Ctx_.Error() << "Cluster wildcards allowed only in USE statement"; return false; } @@ -1270,15 +1270,15 @@ bool TSqlTranslation::ClusterExpr(const TRule_cluster_expr& node, bool allowWild bool TSqlTranslation::ApplyTableBinding(const TString& binding, TTableRef& tr, TTableHints& hints) { NSQLTranslation::TBindingInfo bindingInfo; if (const auto& error = ExtractBindingInfo(Context().Settings, binding, bindingInfo)) { - Ctx.Error() << error; + Ctx_.Error() << error; return false; } if (bindingInfo.Schema) { - TNodePtr schema = BuildQuotedAtom(Ctx.Pos(), bindingInfo.Schema); + TNodePtr schema = BuildQuotedAtom(Ctx_.Pos(), bindingInfo.Schema); - TNodePtr type = new TCallNodeImpl(Ctx.Pos(), "SqlTypeFromYson", { schema }); - TNodePtr columns = new TCallNodeImpl(Ctx.Pos(), "SqlColumnOrderFromYson", { schema }); + TNodePtr type = new TCallNodeImpl(Ctx_.Pos(), "SqlTypeFromYson", { schema }); + TNodePtr columns = new TCallNodeImpl(Ctx_.Pos(), "SqlColumnOrderFromYson", { schema }); hints["user_schema"] = { type, columns }; } @@ -1286,16 +1286,16 @@ bool TSqlTranslation::ApplyTableBinding(const TString& binding, TTableRef& tr, T for (auto& [key, values] : bindingInfo.Attributes) { TVector<TNodePtr> hintValue; for (auto& column : values) { - hintValue.push_back(BuildQuotedAtom(Ctx.Pos(), column)); + hintValue.push_back(BuildQuotedAtom(Ctx_.Pos(), column)); } hints[key] = std::move(hintValue); } tr.Service = bindingInfo.ClusterType; - tr.Cluster = TDeferredAtom(Ctx.Pos(), bindingInfo.Cluster); + tr.Cluster = TDeferredAtom(Ctx_.Pos(), bindingInfo.Cluster); const TString view = ""; - tr.Keys = BuildTableKey(Ctx.Pos(), tr.Service, tr.Cluster, TDeferredAtom(Ctx.Pos(), bindingInfo.Path), {view}); + tr.Keys = BuildTableKey(Ctx_.Pos(), tr.Service, tr.Cluster, TDeferredAtom(Ctx_.Pos(), bindingInfo.Path), {view}); return true; } @@ -1306,8 +1306,8 @@ bool TSqlTranslation::TableRefImpl(const TRule_table_ref& node, TTableRef& resul // (table_key | an_id_expr LPAREN (table_arg (COMMA table_arg)*)? RPAREN | // bind_parameter (LPAREN expr_list? RPAREN)? (VIEW an_id)?) // table_hints?; - if (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW && node.HasBlock1()) { - Ctx.Error() << "Cluster should not be used in limited view"; + if (Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW && node.HasBlock1()) { + Ctx_.Error() << "Cluster should not be used in limited view"; return false; } auto service = Context().Scoped->CurrService; @@ -1325,7 +1325,7 @@ bool TSqlTranslation::TableRefImpl(const TRule_table_ref& node, TTableRef& resul TTableRef tr(Context().MakeName("table"), service, cluster, nullptr); TPosition pos(Context().Pos()); - TTableHints hints = GetContextHints(Ctx); + TTableHints hints = GetContextHints(Ctx_); TTableHints tableHints; TMaybe<TString> keyFunc; @@ -1334,7 +1334,7 @@ bool TSqlTranslation::TableRefImpl(const TRule_table_ref& node, TTableRef& resul switch (block.Alt_case()) { case TRule_table_ref::TBlock3::kAlt1: { if (!isBinding && cluster.Empty()) { - Ctx.Error() << "No cluster name given and no default cluster is selected"; + Ctx_.Error() << "No cluster name given and no default cluster is selected"; return false; } @@ -1344,7 +1344,7 @@ bool TSqlTranslation::TableRefImpl(const TRule_table_ref& node, TTableRef& resul auto view = pair.second; if (!view.ViewName.empty()) { YQL_ENSURE(view != TViewDescription{"@"}); - Ctx.Error() << "VIEW is not supported for table bindings"; + Ctx_.Error() << "VIEW is not supported for table bindings"; return false; } @@ -1358,7 +1358,7 @@ bool TSqlTranslation::TableRefImpl(const TRule_table_ref& node, TTableRef& resul } case TRule_table_ref::TBlock3::kAlt2: { if (cluster.Empty()) { - Ctx.Error() << "No cluster name given and no default cluster is selected"; + Ctx_.Error() << "No cluster name given and no default cluster is selected"; return false; } @@ -1388,24 +1388,24 @@ bool TSqlTranslation::TableRefImpl(const TRule_table_ref& node, TTableRef& resul } case TRule_table_ref::TBlock3::kAlt3: { auto& alt = block.GetAlt3(); - Ctx.IncrementMonCounter("sql_features", "NamedNodeUseSource"); + Ctx_.IncrementMonCounter("sql_features", "NamedNodeUseSource"); TString named; if (!NamedNodeImpl(alt.GetRule_bind_parameter1(), named, *this)) { return false; } if (hasAt) { if (alt.HasBlock2()) { - Ctx.Error() << "Subquery must not be used as anonymous table name"; + Ctx_.Error() << "Subquery must not be used as anonymous table name"; return false; } if (alt.HasBlock3()) { - Ctx.Error() << "View is not supported for anonymous tables"; + Ctx_.Error() << "View is not supported for anonymous tables"; return false; } if (node.HasBlock4()) { - Ctx.Error() << "Hints are not supported for anonymous tables"; + Ctx_.Error() << "Hints are not supported for anonymous tables"; return false; } @@ -1414,9 +1414,9 @@ bool TSqlTranslation::TableRefImpl(const TRule_table_ref& node, TTableRef& resul return false; } - auto source = TryMakeSourceFromExpression(Ctx.Pos(), Ctx, service, cluster, namedNode, "@"); + auto source = TryMakeSourceFromExpression(Ctx_.Pos(), Ctx_, service, cluster, namedNode, "@"); if (!source) { - Ctx.Error() << "Cannot infer cluster and table name"; + Ctx_.Error() << "Cannot infer cluster and table name"; return false; } @@ -1425,47 +1425,47 @@ bool TSqlTranslation::TableRefImpl(const TRule_table_ref& node, TTableRef& resul } auto nodePtr = GetNamedNode(named); if (!nodePtr) { - Ctx.IncrementMonCounter("sql_errors", "NamedNodeSourceError"); + Ctx_.IncrementMonCounter("sql_errors", "NamedNodeSourceError"); return false; } if (alt.HasBlock2()) { if (alt.HasBlock3()) { - Ctx.Error() << "View is not supported for subqueries"; + Ctx_.Error() << "View is not supported for subqueries"; return false; } if (node.HasBlock4()) { - Ctx.Error() << "Hints are not supported for subqueries"; + Ctx_.Error() << "Hints are not supported for subqueries"; return false; } TVector<TNodePtr> values; - values.push_back(new TAstAtomNodeImpl(Ctx.Pos(), "Apply", TNodeFlags::Default)); + values.push_back(new TAstAtomNodeImpl(Ctx_.Pos(), "Apply", TNodeFlags::Default)); values.push_back(nodePtr); - values.push_back(new TAstAtomNodeImpl(Ctx.Pos(), "world", TNodeFlags::Default)); + values.push_back(new TAstAtomNodeImpl(Ctx_.Pos(), "world", TNodeFlags::Default)); - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); if (alt.GetBlock2().HasBlock2() && !ExprList(sqlExpr, values, alt.GetBlock2().GetBlock2().GetRule_expr_list1())) { return false; } - TNodePtr apply = new TAstListNodeImpl(Ctx.Pos(), std::move(values)); - if (unorderedSubquery && Ctx.UnorderedSubqueries) { - apply = new TCallNodeImpl(Ctx.Pos(), "UnorderedSubquery", { apply }); + TNodePtr apply = new TAstListNodeImpl(Ctx_.Pos(), std::move(values)); + if (unorderedSubquery && Ctx_.UnorderedSubqueries) { + apply = new TCallNodeImpl(Ctx_.Pos(), "UnorderedSubquery", { apply }); } - result.Source = BuildNodeSource(Ctx.Pos(), apply); + result.Source = BuildNodeSource(Ctx_.Pos(), apply); return true; } TTableHints hints; - TTableHints contextHints = GetContextHints(Ctx); - auto ret = BuildInnerSource(Ctx.Pos(), nodePtr, service, cluster); + TTableHints contextHints = GetContextHints(Ctx_); + auto ret = BuildInnerSource(Ctx_.Pos(), nodePtr, service, cluster); if (alt.HasBlock3()) { auto view = Id(alt.GetBlock3().GetRule_view_name2(), *this); - Ctx.IncrementMonCounter("sql_features", "View"); + Ctx_.IncrementMonCounter("sql_features", "View"); bool result = view.PrimaryFlag - ? ret->SetPrimaryView(Ctx, Ctx.Pos()) - : ret->SetViewName(Ctx, Ctx.Pos(), view.ViewName); + ? ret->SetPrimaryView(Ctx_, Ctx_.Pos()) + : ret->SetViewName(Ctx_, Ctx_.Pos(), view.ViewName); if (!result) { return false; } @@ -1481,7 +1481,7 @@ bool TSqlTranslation::TableRefImpl(const TRule_table_ref& node, TTableRef& resul } if (hints || contextHints) { - if (!ret->SetTableHints(Ctx, Ctx.Pos(), hints, contextHints)) { + if (!ret->SetTableHints(Ctx_, Ctx_.Pos(), hints, contextHints)) { return false; } } @@ -1498,7 +1498,7 @@ bool TSqlTranslation::TableRefImpl(const TRule_table_ref& node, TTableRef& resul if (node.HasBlock4()) { auto tmp = TableHintsImpl(node.GetBlock4().GetRule_table_hints1(), service, keyFunc.GetOrElse("")); if (!tmp) { - Ctx.Error() << "Failed to parse table hints"; + Ctx_.Error() << "Failed to parse table hints"; return false; } @@ -1526,17 +1526,17 @@ TMaybe<TSourcePtr> TSqlTranslation::AsTableImpl(const TRule_table_ref& node) { if (func == "as_table") { if (node.HasBlock1()) { - Ctx.Error() << "Cluster shouldn't be specified for AS_TABLE source"; + Ctx_.Error() << "Cluster shouldn't be specified for AS_TABLE source"; return TMaybe<TSourcePtr>(nullptr); } if (!alt.HasBlock3() || !alt.GetBlock3().GetBlock2().empty()) { - Ctx.Error() << "Expected single argument for AS_TABLE source"; + Ctx_.Error() << "Expected single argument for AS_TABLE source"; return TMaybe<TSourcePtr>(nullptr); } if (node.HasBlock4()) { - Ctx.Error() << "No hints expected for AS_TABLE source"; + Ctx_.Error() << "No hints expected for AS_TABLE source"; return TMaybe<TSourcePtr>(nullptr); } @@ -1546,11 +1546,11 @@ TMaybe<TSourcePtr> TSqlTranslation::AsTableImpl(const TRule_table_ref& node) { } if (arg->Expr->GetSource()) { - Ctx.Error() << "AS_TABLE shouldn't be used for table sources"; + Ctx_.Error() << "AS_TABLE shouldn't be used for table sources"; return TMaybe<TSourcePtr>(nullptr); } - return BuildNodeSource(Ctx.Pos(), arg->Expr, true, Ctx.EmitTableSource); + return BuildNodeSource(Ctx_.Pos(), arg->Expr, true, Ctx_.EmitTableSource); } } @@ -1607,7 +1607,7 @@ TNodePtr TSqlTranslation::SerialTypeNode(const TRule_type_name_or_bind& node) { return nullptr; } - TPosition pos = Ctx.Pos(); + TPosition pos = Ctx_.Pos(); auto typeNameNode = node.GetAlt_type_name_or_bind1().GetRule_type_name1(); if (typeNameNode.Alt_case() != TRule_type_name::kAltTypeName2) { @@ -1677,22 +1677,22 @@ bool TSqlTranslation::FillFamilySettingsEntry(const TRule_family_settings_entry& TIdentifier id = IdEx(settingNode.GetRule_an_id1(), *this); const TRule_family_setting_value& value = settingNode.GetRule_family_setting_value3(); if (to_lower(id.Name) == "data") { - if (!StoreString(value, family.Data, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be a string literal"; + if (!StoreString(value, family.Data, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be a string literal"; return false; } } else if (to_lower(id.Name) == "compression") { - if (!StoreString(value, family.Compression, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be a string literal"; + if (!StoreString(value, family.Compression, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be a string literal"; return false; } } else if (to_lower(id.Name) == "compression_level") { - if (!StoreInt(value, family.CompressionLevel, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be an integer"; + if (!StoreInt(value, family.CompressionLevel, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be an integer"; return false; } } else { - Ctx.Error() << "Unknown table setting: " << id.Name; + Ctx_.Error() << "Unknown table setting: " << id.Name; return false; } return true; @@ -1722,7 +1722,7 @@ bool TSqlTranslation::CreateTableEntry(const TRule_create_table_entry& node, TCr case TRule_create_table_entry::kAltCreateTableEntry1: { if (isCreateTableAs) { - Ctx.Error() << "Column types are not supported for CREATE TABLE AS"; + Ctx_.Error() << "Column types are not supported for CREATE TABLE AS"; return false; } // column_schema @@ -1731,7 +1731,7 @@ bool TSqlTranslation::CreateTableEntry(const TRule_create_table_entry& node, TCr return false; } if (columnSchema->Families.size() > 1) { - Ctx.Error() << "Several column families for a single column are not yet supported"; + Ctx_.Error() << "Several column families for a single column are not yet supported"; return false; } params.Columns.push_back(*columnSchema); @@ -1744,7 +1744,7 @@ bool TSqlTranslation::CreateTableEntry(const TRule_create_table_entry& node, TCr switch (constraint.Alt_case()) { case TRule_table_constraint::kAltTableConstraint1: { if (!params.PkColumns.empty()) { - Ctx.Error() << "PRIMARY KEY statement must be specified only once"; + Ctx_.Error() << "PRIMARY KEY statement must be specified only once"; return false; } auto& pkConstraint = constraint.GetAlt_table_constraint1(); @@ -1756,7 +1756,7 @@ bool TSqlTranslation::CreateTableEntry(const TRule_create_table_entry& node, TCr } case TRule_table_constraint::kAltTableConstraint2: { if (!params.PartitionByColumns.empty()) { - Ctx.Error() << "PARTITION BY statement must be specified only once"; + Ctx_.Error() << "PARTITION BY statement must be specified only once"; return false; } auto& pbConstraint = constraint.GetAlt_table_constraint2(); @@ -1768,7 +1768,7 @@ bool TSqlTranslation::CreateTableEntry(const TRule_create_table_entry& node, TCr } case TRule_table_constraint::kAltTableConstraint3: { if (!params.OrderByColumns.empty()) { - Ctx.Error() << "ORDER BY statement must be specified only once"; + Ctx_.Error() << "ORDER BY statement must be specified only once"; return false; } auto& obConstraint = constraint.GetAlt_table_constraint3(); @@ -1780,13 +1780,13 @@ bool TSqlTranslation::CreateTableEntry(const TRule_create_table_entry& node, TCr auto& token = spec.GetBlock2().GetToken1(); auto tokenId = token.GetId(); - if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, ASC)) { + if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, ASC)) { return true; - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, DESC)) { + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, DESC)) { desc = true; return true; } else { - Ctx.Error() << "Unsupported direction token: " << token.GetId(); + Ctx_.Error() << "Unsupported direction token: " << token.GetId(); return false; } }; @@ -1825,7 +1825,7 @@ bool TSqlTranslation::CreateTableEntry(const TRule_create_table_entry& node, TCr case TRule_create_table_entry::kAltCreateTableEntry4: { if (isCreateTableAs) { - Ctx.Error() << "Column families are not supported for CREATE TABLE AS"; + Ctx_.Error() << "Column families are not supported for CREATE TABLE AS"; return false; } // family_entry @@ -1841,7 +1841,7 @@ bool TSqlTranslation::CreateTableEntry(const TRule_create_table_entry& node, TCr { // changefeed auto& changefeed = node.GetAlt_create_table_entry5().GetRule_changefeed1(); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); if (!CreateChangefeed(changefeed, expr, params.Changefeeds)) { return false; } @@ -1850,7 +1850,7 @@ bool TSqlTranslation::CreateTableEntry(const TRule_create_table_entry& node, TCr case TRule_create_table_entry::kAltCreateTableEntry6: { if (!isCreateTableAs) { - Ctx.Error() << "Column requires a type"; + Ctx_.Error() << "Column requires a type"; return false; } // an_id_schema @@ -2185,25 +2185,25 @@ bool TSqlTranslation::StoreExternalTableSettingsEntry(const TIdentifier& id, con YQL_ENSURE(!reset || reset && alter); if (to_lower(id.Name) == "data_source") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } TDeferredAtom dataSource; - if (!StoreString(*value, dataSource, Ctx, to_upper(id.Name))) { + if (!StoreString(*value, dataSource, Ctx_, to_upper(id.Name))) { return false; } TString service = Context().Scoped->CurrService; TDeferredAtom cluster = Context().Scoped->CurrCluster; - TNodePtr root = new TAstListNodeImpl(Ctx.Pos()); - root->Add("String", Ctx.GetPrefixedPath(service, cluster, dataSource)); + TNodePtr root = new TAstListNodeImpl(Ctx_.Pos()); + root->Add("String", Ctx_.GetPrefixedPath(service, cluster, dataSource)); settings.DataSourcePath = root; } else if (to_lower(id.Name) == "location") { if (reset) { settings.Location.Reset(); } else { TNodePtr location; - if (!StoreString(*value, location, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be a string literal"; + if (!StoreString(*value, location, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be a string literal"; return false; } settings.Location.Set(location); @@ -2214,8 +2214,8 @@ bool TSqlTranslation::StoreExternalTableSettingsEntry(const TIdentifier& id, con setting.Reset(id); } else { TNodePtr node; - if (!StoreString(*value, node, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be a string literal"; + if (!StoreString(*value, node, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be a string literal"; return false; } setting.Set(std::pair<TIdentifier, TNodePtr>{id, std::move(node)}); @@ -2227,7 +2227,7 @@ bool TSqlTranslation::StoreExternalTableSettingsEntry(const TIdentifier& id, con bool TSqlTranslation::ValidateTableSettings(const TTableSettings& settings) { if (settings.PartitionCount) { if (!settings.StoreType || to_lower(settings.StoreType->Name) != "column") { - Ctx.Error() << " PARTITION_COUNT can be used only with STORE=COLUMN"; + Ctx_.Error() << " PARTITION_COUNT can be used only with STORE=COLUMN"; return false; } } @@ -2241,111 +2241,111 @@ bool TSqlTranslation::StoreTableSettingsEntry(const TIdentifier& id, const TRule YQL_ENSURE(!reset || reset && alter); if (to_lower(id.Name) == "compaction_policy") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } - if (!StoreString(*value, settings.CompactionPolicy, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be a string literal"; + if (!StoreString(*value, settings.CompactionPolicy, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be a string literal"; return false; } } else if (to_lower(id.Name) == "auto_partitioning_by_size") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } if (!StoreId(*value, settings.AutoPartitioningBySize, *this)) { - Ctx.Error() << to_upper(id.Name) << " value should be an identifier"; + Ctx_.Error() << to_upper(id.Name) << " value should be an identifier"; return false; } } else if (to_lower(id.Name) == "auto_partitioning_partition_size_mb") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } - if (!StoreInt(*value, settings.PartitionSizeMb, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be an integer"; + if (!StoreInt(*value, settings.PartitionSizeMb, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be an integer"; return false; } } else if (to_lower(id.Name) == "auto_partitioning_by_load") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } if (!StoreId(*value, settings.AutoPartitioningByLoad, *this)) { - Ctx.Error() << to_upper(id.Name) << " value should be an identifier"; + Ctx_.Error() << to_upper(id.Name) << " value should be an identifier"; return false; } } else if (to_lower(id.Name) == "auto_partitioning_min_partitions_count") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } - if (!StoreInt(*value, settings.MinPartitions, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be an integer"; + if (!StoreInt(*value, settings.MinPartitions, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be an integer"; return false; } } else if (to_lower(id.Name) == "auto_partitioning_max_partitions_count") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } - if (!StoreInt(*value, settings.MaxPartitions, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be an integer"; + if (!StoreInt(*value, settings.MaxPartitions, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be an integer"; return false; } } else if (to_lower(id.Name) == "partition_count") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } - if (!StoreInt(*value, settings.PartitionCount, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be an integer"; + if (!StoreInt(*value, settings.PartitionCount, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be an integer"; return false; } } else if (to_lower(id.Name) == "uniform_partitions") { if (alter) { - Ctx.Error() << to_upper(id.Name) << " alter is not supported"; + Ctx_.Error() << to_upper(id.Name) << " alter is not supported"; return false; } - if (!StoreInt(*value, settings.UniformPartitions, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be an integer"; + if (!StoreInt(*value, settings.UniformPartitions, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be an integer"; return false; } } else if (to_lower(id.Name) == "partition_at_keys") { if (alter) { - Ctx.Error() << to_upper(id.Name) << " alter is not supported"; + Ctx_.Error() << to_upper(id.Name) << " alter is not supported"; return false; } - TSqlExpression expr(Ctx, Mode); - if (!StoreSplitBoundaries(*value, settings.PartitionAtKeys, expr, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be a list of keys. " + TSqlExpression expr(Ctx_, Mode_); + if (!StoreSplitBoundaries(*value, settings.PartitionAtKeys, expr, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be a list of keys. " << "Example1: (10, 1000) Example2: ((10), (1000, \"abc\"))"; return false; } } else if (to_lower(id.Name) == "key_bloom_filter") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } if (!StoreId(*value, settings.KeyBloomFilter, *this)) { - Ctx.Error() << to_upper(id.Name) << " value should be an identifier"; + Ctx_.Error() << to_upper(id.Name) << " value should be an identifier"; return false; } } else if (to_lower(id.Name) == "read_replicas_settings") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } - if (!StoreString(*value, settings.ReadReplicasSettings, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be a string literal"; + if (!StoreString(*value, settings.ReadReplicasSettings, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be a string literal"; return false; } } else if (to_lower(id.Name) == "ttl") { if (!reset) { - TSqlExpression expr(Ctx, Mode); - if (!StoreTtlSettings(*value, settings.TtlSettings, expr, Ctx, *this)) { - Ctx.Error() << "Invalid TTL settings"; + TSqlExpression expr(Ctx_, Mode_); + if (!StoreTtlSettings(*value, settings.TtlSettings, expr, Ctx_, *this)) { + Ctx_.Error() << "Invalid TTL settings"; return false; } } else { @@ -2354,8 +2354,8 @@ bool TSqlTranslation::StoreTableSettingsEntry(const TIdentifier& id, const TRule } else if (to_lower(id.Name) == "tiering") { if (!reset) { TNodePtr tieringNode; - if (!StoreString(*value, tieringNode, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be a string literal"; + if (!StoreString(*value, tieringNode, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be a string literal"; return false; } settings.Tiering.Set(tieringNode); @@ -2364,33 +2364,33 @@ bool TSqlTranslation::StoreTableSettingsEntry(const TIdentifier& id, const TRule } } else if (to_lower(id.Name) == "store") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } if (!StoreId(*value, settings.StoreType, *this)) { - Ctx.Error() << to_upper(id.Name) << " value should be an identifier"; + Ctx_.Error() << to_upper(id.Name) << " value should be an identifier"; return false; } } else if (to_lower(id.Name) == "partition_by_hash_function") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } - if (!StoreString(*value, settings.PartitionByHashFunction, Ctx)) { - Ctx.Error() << to_upper(id.Name) << " value should be a string literal"; + if (!StoreString(*value, settings.PartitionByHashFunction, Ctx_)) { + Ctx_.Error() << to_upper(id.Name) << " value should be a string literal"; return false; } } else if (to_lower(id.Name) == "store_external_blobs") { if (reset) { - Ctx.Error() << to_upper(id.Name) << " reset is not supported"; + Ctx_.Error() << to_upper(id.Name) << " reset is not supported"; return false; } if (!StoreId(*value, settings.StoreExternalBlobs, *this)) { - Ctx.Error() << to_upper(id.Name) << " value should be an identifier"; + Ctx_.Error() << to_upper(id.Name) << " value should be an identifier"; return false; } } else { - Ctx.Error() << "Unknown table setting: " << id.Name; + Ctx_.Error() << "Unknown table setting: " << id.Name; return false; } @@ -2490,7 +2490,7 @@ bool TSqlTranslation::CreateConsumerSettings( const TRule_topic_consumer_settings& node, TTopicConsumerSettings& settings ) { const auto& firstEntry = node.GetRule_topic_consumer_settings_entry1(); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); if (!StoreConsumerSettingsEntry( IdEx(firstEntry.GetRule_an_id1(), *this), &firstEntry.GetRule_topic_consumer_setting_value3(), @@ -2540,7 +2540,7 @@ bool TSqlTranslation::AlterTopicConsumerEntry( //case TRule_alter_topic_alter_consumer_entry::ALT_NOT_SET: case TRule_alter_topic_alter_consumer_entry::kAltAlterTopicAlterConsumerEntry2: { auto& resetNode = node.GetAlt_alter_topic_alter_consumer_entry2().GetRule_topic_alter_consumer_reset1(); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); if (!StoreConsumerSettingsEntry( IdEx(resetNode.GetRule_an_id3(), *this), nullptr, @@ -2561,7 +2561,7 @@ bool TSqlTranslation::AlterTopicConsumerEntry( return true; } default: - Ctx.Error() << "unknown alter consumer action"; + Ctx_.Error() << "unknown alter consumer action"; return false; } return true; @@ -2770,7 +2770,7 @@ bool TSqlTranslation::AlterTopicAction(const TRule_alter_topic_action& node, TAl case TRule_alter_topic_action::kAltAlterTopicAction5: { // reset_settings auto& resetNode = node.GetAlt_alter_topic_action5().GetRule_alter_topic_reset_settings1(); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); if (!StoreTopicSettingsEntry( IdEx(resetNode.GetRule_an_id3(), *this), nullptr, expr, @@ -2791,7 +2791,7 @@ bool TSqlTranslation::AlterTopicAction(const TRule_alter_topic_action& node, TAl return true; } default: - Ctx.Error() << "unknown alter topic action"; + Ctx_.Error() << "unknown alter topic action"; return false; } return true; @@ -2799,7 +2799,7 @@ bool TSqlTranslation::AlterTopicAction(const TRule_alter_topic_action& node, TAl bool TSqlTranslation::CreateTopicSettings(const TRule_topic_settings& node, TTopicSettings& settings) { const auto& firstEntry = node.GetRule_topic_settings_entry1(); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); if (!StoreTopicSettingsEntry( IdEx(firstEntry.GetRule_an_id1(), *this), @@ -2824,13 +2824,13 @@ bool TSqlTranslation::CreateTopicSettings(const TRule_topic_settings& node, TTop TNodePtr TSqlTranslation::IntegerOrBind(const TRule_integer_or_bind& node) { switch (node.Alt_case()) { case TRule_integer_or_bind::kAltIntegerOrBind1: { - const TString intString = Ctx.Token(node.GetAlt_integer_or_bind1().GetRule_integer1().GetToken1()); + const TString intString = Ctx_.Token(node.GetAlt_integer_or_bind1().GetRule_integer1().GetToken1()); ui64 value; TString suffix; - if (!ParseNumbers(Ctx, intString, value, suffix)) { + if (!ParseNumbers(Ctx_, intString, value, suffix)) { return {}; } - return BuildQuotedAtom(Ctx.Pos(), ToString(value), TNodeFlags::ArbitraryContent); + return BuildQuotedAtom(Ctx_.Pos(), ToString(value), TNodeFlags::ArbitraryContent); } case TRule_integer_or_bind::kAltIntegerOrBind2: { TString bindName; @@ -2841,7 +2841,7 @@ TNodePtr TSqlTranslation::IntegerOrBind(const TRule_integer_or_bind& node) { if (!namedNode) { return {}; } - auto atom = MakeAtomFromExpression(Ctx.Pos(), Ctx, namedNode); + auto atom = MakeAtomFromExpression(Ctx_.Pos(), Ctx_, namedNode); return atom.Build(); } case TRule_integer_or_bind::ALT_NOT_SET: @@ -2853,16 +2853,16 @@ TNodePtr TSqlTranslation::TypeNameTag(const TRule_type_name_tag& node) { switch (node.Alt_case()) { case TRule_type_name_tag::kAltTypeNameTag1: { auto content = Id(node.GetAlt_type_name_tag1().GetRule_id1(), *this); - auto atom = TDeferredAtom(Ctx.Pos(), content); + auto atom = TDeferredAtom(Ctx_.Pos(), content); return atom.Build(); } case TRule_type_name_tag::kAltTypeNameTag2: { auto value = Token(node.GetAlt_type_name_tag2().GetToken1()); - auto parsed = StringContentOrIdContent(Ctx, Ctx.Pos(), value); + auto parsed = StringContentOrIdContent(Ctx_, Ctx_.Pos(), value); if (!parsed) { return {}; } - auto atom = TDeferredAtom(Ctx.Pos(), parsed->Content); + auto atom = TDeferredAtom(Ctx_.Pos(), parsed->Content); return atom.Build(); } case TRule_type_name_tag::kAltTypeNameTag3: { @@ -2875,7 +2875,7 @@ TNodePtr TSqlTranslation::TypeNameTag(const TRule_type_name_tag& node) { return {}; } TDeferredAtom atom; - MakeTableFromExpression(Ctx.Pos(), Ctx, namedNode, atom); + MakeTableFromExpression(Ctx_.Pos(), Ctx_, namedNode, atom); return atom.Build(); } case TRule_type_name_tag::ALT_NOT_SET: @@ -2888,11 +2888,11 @@ TNodePtr TSqlTranslation::TypeSimple(const TRule_type_name_simple& node, bool on if (origName.empty()) { return {}; } - return BuildSimpleType(Ctx, Ctx.Pos(), origName, onlyDataAllowed); + return BuildSimpleType(Ctx_, Ctx_.Pos(), origName, onlyDataAllowed); } TNodePtr TSqlTranslation::TypeDecimal(const TRule_type_name_decimal& node) { - auto pos = Ctx.Pos(); + auto pos = Ctx_.Pos(); auto flags = TNodeFlags::Default; auto paramOne = IntegerOrBind(node.GetRule_integer_or_bind3()); @@ -2919,7 +2919,7 @@ TNodePtr TSqlTranslation::AddOptionals(const TNodePtr& node, size_t optionalCoun TMaybe<std::pair<TVector<TNodePtr>, bool>> TSqlTranslation::CallableArgList(const TRule_callable_arg_list& argList, bool namedArgsStarted) { - auto pos = Ctx.Pos(); + auto pos = Ctx_.Pos(); auto flags = TNodeFlags::Default; auto& arg1 = argList.GetRule_callable_arg1(); auto& varArg = arg1.GetRule_variant_arg1(); @@ -2962,7 +2962,7 @@ TMaybe<std::pair<TVector<TNodePtr>, bool>> TSqlTranslation::CallableArgList(cons items.push_back(tag); } else { if (namedArgsStarted) { - Ctx.Error() << "Expected named argument, previous argument was named"; + Ctx_.Error() << "Expected named argument, previous argument was named"; return {}; } items.push_back(BuildQuotedAtom(pos, "", flags)); @@ -3004,7 +3004,7 @@ TNodePtr TSqlTranslation::TypeNode(const TRule_type_name& node) { } TNodePtr result; - TPosition pos = Ctx.Pos(); + TPosition pos = Ctx_.Pos(); auto& alt = node.GetAlt_type_name2(); auto& block = alt.GetBlock1(); @@ -3043,7 +3043,7 @@ TNodePtr TSqlTranslation::TypeNode(const TRule_type_name_composite& node) { // | type_name_callable // ) QUESTION*; TNodePtr result; - TPosition pos = Ctx.Pos(); + TPosition pos = Ctx_.Pos(); auto flags = TNodeFlags::Default; auto wrapOneParamType = [&] (const TRule_type_name_or_bind& param, const char* type) -> TNodePtr { @@ -3167,7 +3167,7 @@ TNodePtr TSqlTranslation::TypeNode(const TRule_type_name_composite& node) { } if (overStruct) { if (!arg.GetRule_variant_arg2().HasBlock1()) { - Ctx.Error() << "Variant over struct and tuple mixture"; + Ctx_.Error() << "Variant over struct and tuple mixture"; return {}; } auto tag = TypeNameTag(arg.GetRule_variant_arg2().GetBlock1().GetRule_type_name_tag1()); @@ -3177,7 +3177,7 @@ TNodePtr TSqlTranslation::TypeNode(const TRule_type_name_composite& node) { items.push_back(makeQuote(new TAstListNodeImpl(pos, { tag, typeNode }))); } else { if (arg.GetRule_variant_arg2().HasBlock1()) { - Ctx.Error() << "Variant over struct and tuple mixture"; + Ctx_.Error() << "Variant over struct and tuple mixture"; return {}; } items.push_back(typeNode); @@ -3325,11 +3325,11 @@ TNodePtr TSqlTranslation::TypeNode(const TRule_type_name_composite& node) { } TNodePtr TSqlTranslation::ValueConstructorLiteral(const TRule_value_constructor_literal& node) { - return BuildLiteralSmartString(Ctx, Token(node.GetToken1())); + return BuildLiteralSmartString(Ctx_, Token(node.GetToken1())); } TNodePtr TSqlTranslation::ValueConstructor(const TRule_value_constructor& node) { - TSqlCallExpr call(Ctx, Mode); + TSqlCallExpr call(Ctx_, Mode_); if (!call.Init(node)) { return {}; } @@ -3338,14 +3338,14 @@ TNodePtr TSqlTranslation::ValueConstructor(const TRule_value_constructor& node) TNodePtr TSqlTranslation::ListLiteral(const TRule_list_literal& node) { TVector<TNodePtr> values; - values.push_back(new TAstAtomNodeImpl(Ctx.Pos(), "AsListMayWarn", TNodeFlags::Default)); + values.push_back(new TAstAtomNodeImpl(Ctx_.Pos(), "AsListMayWarn", TNodeFlags::Default)); - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); if (node.HasBlock2() && !ExprList(sqlExpr, values, node.GetBlock2().GetRule_expr_list1())) { return nullptr; } - return new TAstListNodeImpl(Ctx.Pos(), std::move(values)); + return new TAstListNodeImpl(Ctx_.Pos(), std::move(values)); } TNodePtr TSqlTranslation::DictLiteral(const TRule_dict_literal& node) { @@ -3353,8 +3353,8 @@ TNodePtr TSqlTranslation::DictLiteral(const TRule_dict_literal& node) { if (node.HasBlock2()) { const auto& list = node.GetBlock2().GetRule_expr_dict_list1(); const bool isSet = !list.HasBlock2(); - values.push_back(new TAstAtomNodeImpl(Ctx.Pos(), isSet ? "AsSet" : "AsDict", TNodeFlags::Default)); - TSqlExpression sqlExpr(Ctx, Mode); + values.push_back(new TAstAtomNodeImpl(Ctx_.Pos(), isSet ? "AsSet" : "AsDict", TNodeFlags::Default)); + TSqlExpression sqlExpr(Ctx_, Mode_); if (isSet) { if (!Expr(sqlExpr, values, list.GetRule_expr1())) { return nullptr; @@ -3369,7 +3369,7 @@ TNodePtr TSqlTranslation::DictLiteral(const TRule_dict_literal& node) { return nullptr; } - values.push_back(new TTupleNode(Ctx.Pos(), std::move(tupleItems))); + values.push_back(new TTupleNode(Ctx_.Pos(), std::move(tupleItems))); } for (auto& b : list.GetBlock3()) { @@ -3394,27 +3394,27 @@ TNodePtr TSqlTranslation::DictLiteral(const TRule_dict_literal& node) { return nullptr; } - values.push_back(new TTupleNode(Ctx.Pos(), std::move(tupleItems))); + values.push_back(new TTupleNode(Ctx_.Pos(), std::move(tupleItems))); } } } else { - values.push_back(new TAstAtomNodeImpl(Ctx.Pos(), "AsDict", TNodeFlags::Default)); + values.push_back(new TAstAtomNodeImpl(Ctx_.Pos(), "AsDict", TNodeFlags::Default)); } - return new TAstListNodeImpl(Ctx.Pos(), std::move(values)); + return new TAstListNodeImpl(Ctx_.Pos(), std::move(values)); } bool TSqlTranslation::StructLiteralItem(TVector<TNodePtr>& labels, const TRule_expr& label, TVector<TNodePtr>& values, const TRule_expr& value) { // label expr { - TColumnRefScope scope(Ctx, EColumnRefState::AsStringLiteral, /* topLevel */ false); - TSqlExpression sqlExpr(Ctx, Mode); + TColumnRefScope scope(Ctx_, EColumnRefState::AsStringLiteral, /* topLevel */ false); + TSqlExpression sqlExpr(Ctx_, Mode_); if (!Expr(sqlExpr, labels, label)) { return false; } TDeferredAtom atom; - MakeTableFromExpression(Ctx.Pos(), Ctx, labels.back(), atom); + MakeTableFromExpression(Ctx_.Pos(), Ctx_, labels.back(), atom); labels.back() = atom.Build(); if (!labels.back()) { return false; @@ -3423,7 +3423,7 @@ bool TSqlTranslation::StructLiteralItem(TVector<TNodePtr>& labels, const TRule_e // value expr { - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); if (!Expr(sqlExpr, values, value)) { return false; } @@ -3435,7 +3435,7 @@ bool TSqlTranslation::StructLiteralItem(TVector<TNodePtr>& labels, const TRule_e TNodePtr TSqlTranslation::StructLiteral(const TRule_struct_literal& node) { TVector<TNodePtr> labels; TVector<TNodePtr> values; - TPosition pos = Ctx.TokenPosition(node.GetToken1()); + TPosition pos = Ctx_.TokenPosition(node.GetToken1()); if (node.HasBlock2()) { const auto& list = node.GetBlock2().GetRule_expr_struct_list1(); @@ -3518,9 +3518,9 @@ bool TSqlTranslation::TableHintImpl(const TRule_table_hint& rule, TTableHints& h return false; } - auto pos = Ctx.Pos(); + auto pos = Ctx_.Pos(); if (!altCurrent && !warn) { - Ctx.Warning(pos, TIssuesIds::YQL_DEPRECATED_POSITIONAL_SCHEMA) + Ctx_.Warning(pos, TIssuesIds::YQL_DEPRECATED_POSITIONAL_SCHEMA) << "Deprecated syntax for positional schema: please use 'column type' instead of 'type AS column'"; warn = true; } @@ -3556,7 +3556,7 @@ bool TSqlTranslation::TableHintImpl(const TRule_table_hint& rule, TTableHints& h } } - TPosition pos = Ctx.TokenPosition(alt.GetToken1()); + TPosition pos = Ctx_.TokenPosition(alt.GetToken1()); TNodePtr structType = new TCallNodeImpl(pos, "StructType", structTypeItems); bool shouldEmitLabel = provider != YtProviderName || TCiString(keyFunc) == "object"; if (shouldEmitLabel) { @@ -3635,7 +3635,7 @@ bool TSqlTranslation::SimpleTableRefCoreImpl(const TRule_simple_table_ref_core& switch (node.Alt_case()) { case TRule_simple_table_ref_core::AltCase::kAltSimpleTableRefCore1: { if (node.GetAlt_simple_table_ref_core1().GetRule_object_ref1().HasBlock1()) { - if (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW) { + if (Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW) { Error() << "Cluster should not be used in limited view"; return false; } @@ -3690,7 +3690,7 @@ bool TSqlTranslation::TopicRefImpl(const TRule_topic_ref& node, TTopicRef& resul TString service = Context().Scoped->CurrService; TDeferredAtom cluster = Context().Scoped->CurrCluster; if (node.HasBlock1()) { - if (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW) { + if (Mode_ == NSQLTranslation::ESqlMode::LIMITED_VIEW) { Error() << "Cluster should not be used in limited view"; return false; } @@ -3722,7 +3722,7 @@ TNodePtr TSqlTranslation::NamedNode(const TRule_named_nodes_stmt& rule, TVector< TNodePtr nodeExpr = nullptr; switch (rule.GetBlock3().Alt_case()) { case TRule_named_nodes_stmt::TBlock3::kAlt1: { - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); auto result = expr.Build(rule.GetBlock3().GetAlt1().GetRule_expr1()); return result; } @@ -3730,7 +3730,7 @@ TNodePtr TSqlTranslation::NamedNode(const TRule_named_nodes_stmt& rule, TVector< case TRule_named_nodes_stmt::TBlock3::kAlt2:{ const auto& subselect_rule = rule.GetBlock3().GetAlt2().GetRule_subselect_stmt1(); - TSqlSelect expr(Ctx, Mode); + TSqlSelect expr(Ctx_, Mode_); TPosition pos; TSourcePtr source = nullptr; switch (subselect_rule.GetBlock1().Alt_case()) { @@ -3744,7 +3744,7 @@ TNodePtr TSqlTranslation::NamedNode(const TRule_named_nodes_stmt& rule, TVector< case TRule_subselect_stmt::TBlock1::ALT_NOT_SET: AltNotImplemented("subselect_stmt", subselect_rule.GetBlock1()); - Ctx.IncrementMonCounter("sql_errors", "UnknownNamedNode"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownNamedNode"); return nullptr; } @@ -3757,7 +3757,7 @@ TNodePtr TSqlTranslation::NamedNode(const TRule_named_nodes_stmt& rule, TVector< case TRule_named_nodes_stmt::TBlock3::ALT_NOT_SET: AltNotImplemented("named_node", rule.GetBlock3()); - Ctx.IncrementMonCounter("sql_errors", "UnknownNamedNode"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownNamedNode"); return nullptr; } } @@ -3774,7 +3774,7 @@ bool TSqlTranslation::ImportStatement(const TRule_import_stmt& stmt, TVector<TSt return false; } YQL_ENSURE(names.size() == aliases.size()); - const TString moduleAlias = Ctx.AddImport(std::move(modulePath)); + const TString moduleAlias = Ctx_.AddImport(std::move(modulePath)); if (!moduleAlias) { return false; } @@ -3785,7 +3785,7 @@ bool TSqlTranslation::ImportStatement(const TRule_import_stmt& stmt, TVector<TSt auto& var = alias.Name ? alias : name; if (IsAnonymousName(var.Name)) { - Ctx.Error(var.Pos) << "Can not import anonymous name " << var.Name; + Ctx_.Error(var.Pos) << "Can not import anonymous name " << var.Name; return false; } @@ -3805,8 +3805,8 @@ bool TSqlTranslation::ImportStatement(const TRule_import_stmt& stmt, TVector<TSt bool TSqlTranslation::SortSpecification(const TRule_sort_specification& node, TVector<TSortSpecificationPtr>& sortSpecs) { bool asc = true; - TSqlExpression expr(Ctx, Mode); - TColumnRefScope scope(Ctx, EColumnRefState::Allow); + TSqlExpression expr(Ctx_, Mode_); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); TNodePtr exprNode = expr.Build(node.GetRule_expr1()); if (!exprNode) { return false; @@ -3815,18 +3815,18 @@ bool TSqlTranslation::SortSpecification(const TRule_sort_specification& node, TV const auto& token = node.GetBlock2().GetToken1(); Token(token); auto tokenId = token.GetId(); - if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, ASC)) { - Ctx.IncrementMonCounter("sql_features", "OrderByAsc"); - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, tokenId, DESC)) { + if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, ASC)) { + Ctx_.IncrementMonCounter("sql_features", "OrderByAsc"); + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, tokenId, DESC)) { asc = false; - Ctx.IncrementMonCounter("sql_features", "OrderByDesc"); + Ctx_.IncrementMonCounter("sql_features", "OrderByDesc"); } else { - Ctx.IncrementMonCounter("sql_errors", "UnknownOrderBy"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownOrderBy"); Error() << "Unsupported direction token: " << token.GetId(); return false; } } else { - Ctx.IncrementMonCounter("sql_features", "OrderByDefault"); + Ctx_.IncrementMonCounter("sql_features", "OrderByDefault"); } sortSpecs.emplace_back(MakeIntrusive<TSortSpecification>(exprNode, asc)); return true; @@ -3847,12 +3847,12 @@ bool TSqlTranslation::SortSpecificationList(const TRule_sort_specification_list& bool TSqlTranslation::IsDistinctOptSet(const TRule_opt_set_quantifier& node) const { TPosition pos; - return node.HasBlock1() && IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock1().GetToken1().GetId(), DISTINCT); + return node.HasBlock1() && IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock1().GetToken1().GetId(), DISTINCT); } bool TSqlTranslation::IsDistinctOptSet(const TRule_opt_set_quantifier& node, TPosition& distinctPos) const { - if (node.HasBlock1() && IS_TOKEN(Ctx.Settings.Antlr4Parser, node.GetBlock1().GetToken1().GetId(), DISTINCT)) { - distinctPos = Ctx.TokenPosition(node.GetBlock1().GetToken1()); + if (node.HasBlock1() && IS_TOKEN(Ctx_.Settings.Antlr4Parser, node.GetBlock1().GetToken1().GetId(), DISTINCT)) { + distinctPos = Ctx_.TokenPosition(node.GetBlock1().GetToken1()); return true; } return false; @@ -3864,7 +3864,7 @@ bool TSqlTranslation::RoleNameClause(const TRule_role_name& node, TDeferredAtom& case TRule_role_name::kAltRoleName1: { TString name = Id(node.GetAlt_role_name1().GetRule_an_id_or_type1(), *this); - result = TDeferredAtom(Ctx.Pos(), name); + result = TDeferredAtom(Ctx_.Pos(), name); break; } case TRule_role_name::kAltRoleName2: @@ -3881,7 +3881,7 @@ bool TSqlTranslation::RoleNameClause(const TRule_role_name& node, TDeferredAtom& if (auto literalName = result.GetLiteral(); literalName && !allowSystemRoles) { static const THashSet<TStringBuf> systemRoles = { "current_role", "current_user", "session_user" }; if (systemRoles.contains(to_lower(*literalName))) { - Ctx.Error() << "System role " << to_upper(*literalName) << " can not be used here"; + Ctx_.Error() << "System role " << to_upper(*literalName) << " can not be used here"; return false; } } @@ -3894,19 +3894,19 @@ bool TSqlTranslation::PasswordParameter(const TRule_password_option& passwordOpt // password_value: STRING_VALUE | NULL; const auto& token = passwordOption.GetRule_password_value3().GetToken1(); - TString stringValue(Ctx.Token(token)); + TString stringValue(Ctx_.Token(token)); if (to_lower(stringValue) == "null") { result.IsPasswordNull = true; } else { - auto password = StringContent(Ctx, Ctx.Pos(), stringValue); + auto password = StringContent(Ctx_, Ctx_.Pos(), stringValue); if (!password) { Error() << "Password should be enclosed into quotation marks."; return false; } - result.Password = TDeferredAtom(Ctx.Pos(), std::move(password->Content)); + result.Password = TDeferredAtom(Ctx_.Pos(), std::move(password->Content)); } result.IsPasswordEncrypted = passwordOption.HasBlock1(); @@ -3918,16 +3918,16 @@ bool TSqlTranslation::HashParameter(const TRule_hash_option& hashOption, TUserPa // hash_option: HASH STRING_VALUE; const auto& token = hashOption.GetToken2(); - TString stringValue(Ctx.Token(token)); + TString stringValue(Ctx_.Token(token)); - auto hash = StringContent(Ctx, Ctx.Pos(), stringValue); + auto hash = StringContent(Ctx_, Ctx_.Pos(), stringValue); if (!hash) { Error() << "Hash should be enclosed into quotation marks."; return false; } - result.Hash = TDeferredAtom(Ctx.Pos(), std::move(hash->Content)); + result.Hash = TDeferredAtom(Ctx_.Pos(), std::move(hash->Content)); return true; } @@ -3936,9 +3936,9 @@ void TSqlTranslation::LoginParameter(const TRule_login_option& loginOption, std: // login_option: LOGIN | NOLOGIN; auto token = loginOption.GetToken1().GetId(); - if (IS_TOKEN(Ctx.Settings.Antlr4Parser, token, LOGIN)) { + if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, token, LOGIN)) { canLogin = true; - } else if (IS_TOKEN(Ctx.Settings.Antlr4Parser, token, NOLOGIN)) { + } else if (IS_TOKEN(Ctx_.Settings.Antlr4Parser, token, NOLOGIN)) { canLogin = false; } else { Y_ABORT("You should change implementation according to grammar changes"); @@ -4043,7 +4043,7 @@ bool TSqlTranslation::PermissionNameClause(const TRule_permission_id& node, TDef // | CREATE (DIRECTORY | TABLE | QUEUE)? auto handleOneIdentifier = [&result, this] (const auto& permissionNameKeyword) { - result = TDeferredAtom(Ctx.Pos(), GetIdentifier(*this, permissionNameKeyword).Name); + result = TDeferredAtom(Ctx_.Pos(), GetIdentifier(*this, permissionNameKeyword).Name); }; auto handleTwoIdentifiers = [&result, this] (const auto& permissionNameKeyword) { @@ -4052,7 +4052,7 @@ bool TSqlTranslation::PermissionNameClause(const TRule_permission_id& node, TDef TString identifierName = TIdentifier(TPosition(token1.GetColumn(), token1.GetLine()), Identifier(token1)).Name + "_" + TIdentifier(TPosition(token2.GetColumn(), token2.GetLine()), Identifier(token2)).Name; - result = TDeferredAtom(Ctx.Pos(), identifierName); + result = TDeferredAtom(Ctx_.Pos(), identifierName); }; auto handleOneOrTwoIdentifiers = [&result, this] (const auto& permissionNameKeyword) { @@ -4060,7 +4060,7 @@ bool TSqlTranslation::PermissionNameClause(const TRule_permission_id& node, TDef if (permissionNameKeyword.HasBlock2()) { identifierName += "_" + GetIdentifier(*this, permissionNameKeyword.GetBlock2()).Name; } - result = TDeferredAtom(Ctx.Pos(), identifierName); + result = TDeferredAtom(Ctx_.Pos(), identifierName); }; switch (node.GetAltCase()) { @@ -4152,12 +4152,12 @@ bool TSqlTranslation::PermissionNameClause(const TRule_permission_name& node, TD } case TRule_permission_name::kAltPermissionName2: { - const TString stringValue(Ctx.Token(node.GetAlt_permission_name2().GetToken1())); - auto unescaped = StringContent(Ctx, Ctx.Pos(), stringValue); + const TString stringValue(Ctx_.Token(node.GetAlt_permission_name2().GetToken1())); + auto unescaped = StringContent(Ctx_, Ctx_.Pos(), stringValue); if (!unescaped) { return false; } - result = TDeferredAtom(Ctx.Pos(), unescaped->Content); + result = TDeferredAtom(Ctx_.Pos(), unescaped->Content); break; } case TRule_permission_name::ALT_NOT_SET: @@ -4186,14 +4186,14 @@ bool TSqlTranslation::PermissionNameClause(const TRule_permission_name_target& n } case TRule_permission_name_target::kAltPermissionNameTarget2: { - result.emplace_back(Ctx.Pos(), "all_privileges"); + result.emplace_back(Ctx_.Pos(), "all_privileges"); break; } case TRule_permission_name_target::ALT_NOT_SET: Y_ABORT("You should change implementation according to grammar changes"); } if (withGrantOption) { - result.emplace_back(Ctx.Pos(), "grant"); + result.emplace_back(Ctx_.Pos(), "grant"); } return true; } @@ -4203,16 +4203,16 @@ bool TSqlTranslation::StoreStringSettingsEntry(const TIdentifier& id, const TRul const TString key = to_lower(id.Name); if (result.find(key) != result.end()) { - Ctx.Error() << to_upper(key) << " duplicate keys"; + Ctx_.Error() << to_upper(key) << " duplicate keys"; return false; } switch (value->Alt_case()) { case TRule_table_setting_value::kAltTableSettingValue2: - return StoreString(*value, result[key], Ctx, to_upper(key)); + return StoreString(*value, result[key], Ctx_, to_upper(key)); default: - Ctx.Error() << to_upper(key) << " value should be a string literal"; + Ctx_.Error() << to_upper(key) << " value should be a string literal"; return false; } @@ -4285,10 +4285,10 @@ bool TSqlTranslation::ParseBackupCollectionSettings(std::map<TString, TDeferredA bool TSqlTranslation::ParseBackupCollectionTables(TVector<TDeferredAtom>& result, const TRule_table_list& tables) { const auto& firstEntry = tables.GetRule_an_id_table2(); - result.push_back(TDeferredAtom(Ctx.Pos(), Id(firstEntry, *this))); + result.push_back(TDeferredAtom(Ctx_.Pos(), Id(firstEntry, *this))); for (const auto& block : tables.GetBlock3()) { const auto& entry = block.GetRule_an_id_table3(); - result.push_back(TDeferredAtom(Ctx.Pos(), Id(entry, *this))); + result.push_back(TDeferredAtom(Ctx_.Pos(), Id(entry, *this))); } return true; } @@ -4311,12 +4311,12 @@ bool TSqlTranslation::ParseBackupCollectionEntry( } case TRule_alter_backup_collection_entry::kAltAlterBackupCollectionEntry3: { auto table = entry.GetAlt_alter_backup_collection_entry3().GetRule_an_id_table3(); - addTables.push_back(TDeferredAtom(Ctx.Pos(), Id(table, *this))); + addTables.push_back(TDeferredAtom(Ctx_.Pos(), Id(table, *this))); return true; } case TRule_alter_backup_collection_entry::kAltAlterBackupCollectionEntry4: { auto table = entry.GetAlt_alter_backup_collection_entry4().GetRule_an_id_table3(); - removeTables.push_back(TDeferredAtom(Ctx.Pos(), Id(table, *this))); + removeTables.push_back(TDeferredAtom(Ctx_.Pos(), Id(table, *this))); return true; } case TRule_alter_backup_collection_entry::ALT_NOT_SET: @@ -4464,7 +4464,7 @@ bool TSqlTranslation::FrameBound(const TRule_window_frame_bound& rule, TFrameBou auto block = rule.GetAlt_window_frame_bound2().GetBlock1(); switch (block.Alt_case()) { case TRule_window_frame_bound_TAlt2_TBlock1::kAlt1: { - TSqlExpression boundExpr(Ctx, Mode); + TSqlExpression boundExpr(Ctx_, Mode_); bound->Bound = boundExpr.Build(block.GetAlt1().GetRule_expr1()); if (!bound->Bound) { return false; @@ -4539,7 +4539,7 @@ bool TSqlTranslation::FrameClause(const TRule_window_frame_clause& rule, TFrameS } YQL_ENSURE(frameSpec->FrameBegin); YQL_ENSURE(frameSpec->FrameEnd); - if (!IsValidFrameSettings(Ctx, *frameSpec, sortSpecSize)) { + if (!IsValidFrameSettings(Ctx_, *frameSpec, sortSpecSize)) { return false; } @@ -4564,7 +4564,7 @@ bool TSqlTranslation::FrameClause(const TRule_window_frame_clause& rule, TFrameS } if (frameSpec->FrameExclusion != FrameExclNone) { - Ctx.Error() << "Frame exclusion is not supported yet"; + Ctx_.Error() << "Frame exclusion is not supported yet"; return false; } @@ -4581,7 +4581,7 @@ TWindowSpecificationPtr TSqlTranslation::WindowSpecification(const TRule_window_ */ TWindowSpecificationPtr winSpecPtr = new TWindowSpecification; if (rule.HasBlock1()) { - Ctx.Error() << "Existing window name is not supported in window specification yet!"; + Ctx_.Error() << "Existing window name is not supported in window specification yet!"; return {}; } if (rule.HasBlock2()) { @@ -4591,10 +4591,10 @@ TWindowSpecificationPtr TSqlTranslation::WindowSpecification(const TRule_window_ auto& partitionClause = rule.GetBlock2().GetRule_window_partition_clause1(); winSpecPtr->IsCompact = partitionClause.HasBlock2(); if (!winSpecPtr->IsCompact) { - auto hints = Ctx.PullHintForToken(Ctx.TokenPosition(partitionClause.GetToken1())); + auto hints = Ctx_.PullHintForToken(Ctx_.TokenPosition(partitionClause.GetToken1())); winSpecPtr->IsCompact = AnyOf(hints, [](const NSQLTranslation::TSQLHint& hint) { return to_lower(hint.Name) == "compact"; }); } - TColumnRefScope scope(Ctx, EColumnRefState::Allow); + TColumnRefScope scope(Ctx_, EColumnRefState::Allow); if (!NamedExprList(partitionClause.GetRule_named_expr_list4(), winSpecPtr->Partitions)) { return {}; } @@ -4624,11 +4624,11 @@ TWindowSpecificationPtr TSqlTranslation::WindowSpecification(const TRule_window_ winSpecPtr->Frame = new TFrameSpecification; winSpecPtr->Frame->FrameBegin = new TFrameBound; winSpecPtr->Frame->FrameEnd = new TFrameBound; - winSpecPtr->Frame->FrameBegin->Pos = winSpecPtr->Frame->FrameEnd->Pos = Ctx.Pos(); + winSpecPtr->Frame->FrameBegin->Pos = winSpecPtr->Frame->FrameEnd->Pos = Ctx_.Pos(); winSpecPtr->Frame->FrameExclusion = EFrameExclusions::FrameExclNone; winSpecPtr->Frame->FrameBegin->Settings = EFrameSettings::FramePreceding; - if (Ctx.AnsiCurrentRow) { + if (Ctx_.AnsiCurrentRow) { // RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW winSpecPtr->Frame->FrameType = EFrameType::FrameByRange; winSpecPtr->Frame->FrameEnd->Settings = EFrameSettings::FrameCurrentRow; @@ -4703,74 +4703,74 @@ TNodePtr TSqlTranslation::DoStatement(const TRule_do_stmt& stmt, bool makeLambda break; } case TRule_call_action_TBlock1::kAlt2: - action = BuildEmptyAction(Ctx.Pos()); + action = BuildEmptyAction(Ctx_.Pos()); break; case TRule_call_action_TBlock1::ALT_NOT_SET: - Ctx.IncrementMonCounter("sql_errors", "UnknownDoStmt"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownDoStmt"); AltNotImplemented("do_stmt", callAction.GetBlock1()); return nullptr; } TVector<TNodePtr> values; - values.push_back(new TAstAtomNodeImpl(Ctx.Pos(), "Apply", TNodeFlags::Default)); + values.push_back(new TAstAtomNodeImpl(Ctx_.Pos(), "Apply", TNodeFlags::Default)); values.push_back(action); - values.push_back(new TAstAtomNodeImpl(Ctx.Pos(), "world", TNodeFlags::Default)); + values.push_back(new TAstAtomNodeImpl(Ctx_.Pos(), "world", TNodeFlags::Default)); - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); if (callAction.HasBlock3() && !ExprList(sqlExpr, values, callAction.GetBlock3().GetRule_expr_list1())) { return nullptr; } - TNodePtr apply = new TAstListNodeImpl(Ctx.Pos(), std::move(values)); + TNodePtr apply = new TAstListNodeImpl(Ctx_.Pos(), std::move(values)); if (!makeLambda) { - return BuildDoCall(Ctx.Pos(), apply); + return BuildDoCall(Ctx_.Pos(), apply); } - TNodePtr params = new TAstListNodeImpl(Ctx.Pos()); + TNodePtr params = new TAstListNodeImpl(Ctx_.Pos()); params->Add("world"); for (const auto& arg : args) { - params->Add(new TAstAtomNodeImpl(Ctx.Pos(), arg, TNodeFlags::ArbitraryContent)); + params->Add(new TAstAtomNodeImpl(Ctx_.Pos(), arg, TNodeFlags::ArbitraryContent)); } - return BuildDoCall(Ctx.Pos(), BuildLambda(Ctx.Pos(), params, apply)); + return BuildDoCall(Ctx_.Pos(), BuildLambda(Ctx_.Pos(), params, apply)); } case TRule_do_stmt_TBlock2::kAlt2: { const auto& inlineAction = stmt.GetBlock2().GetAlt2().GetRule_inline_action1(); const auto& body = inlineAction.GetRule_define_action_or_subquery_body2(); - auto saveScoped = Ctx.Scoped; - Ctx.Scoped = MakeIntrusive<TScopedState>(); - Ctx.AllScopes.push_back(Ctx.Scoped); - *Ctx.Scoped = *saveScoped; - Ctx.Scoped->Local = TScopedState::TLocal{}; - Ctx.ScopeLevel++; - TSqlQuery query(Ctx, Ctx.Settings.Mode, false); + auto saveScoped = Ctx_.Scoped; + Ctx_.Scoped = MakeIntrusive<TScopedState>(); + Ctx_.AllScopes.push_back(Ctx_.Scoped); + *Ctx_.Scoped = *saveScoped; + Ctx_.Scoped->Local = TScopedState::TLocal{}; + Ctx_.ScopeLevel++; + TSqlQuery query(Ctx_, Ctx_.Settings.Mode, false); TBlocks innerBlocks; const bool hasValidBody = DefineActionOrSubqueryBody(query, innerBlocks, body); - auto ret = hasValidBody ? BuildQuery(Ctx.Pos(), innerBlocks, false, Ctx.Scoped, Ctx.SeqMode) : nullptr; + auto ret = hasValidBody ? BuildQuery(Ctx_.Pos(), innerBlocks, false, Ctx_.Scoped, Ctx_.SeqMode) : nullptr; WarnUnusedNodes(); - Ctx.ScopeLevel--; - Ctx.Scoped = saveScoped; + Ctx_.ScopeLevel--; + Ctx_.Scoped = saveScoped; if (!ret) { return {}; } - TNodePtr blockNode = new TAstListNodeImpl(Ctx.Pos()); + TNodePtr blockNode = new TAstListNodeImpl(Ctx_.Pos()); blockNode->Add("block"); blockNode->Add(blockNode->Q(ret)); if (!makeLambda) { return blockNode; } - TNodePtr params = new TAstListNodeImpl(Ctx.Pos()); + TNodePtr params = new TAstListNodeImpl(Ctx_.Pos()); params->Add("world"); for (const auto& arg : args) { - params->Add(new TAstAtomNodeImpl(Ctx.Pos(), arg, TNodeFlags::ArbitraryContent)); + params->Add(new TAstAtomNodeImpl(Ctx_.Pos(), arg, TNodeFlags::ArbitraryContent)); } - return BuildLambda(Ctx.Pos(), params, blockNode); + return BuildLambda(Ctx_.Pos(), params, blockNode); } case TRule_do_stmt_TBlock2::ALT_NOT_SET: Y_ABORT("You should change implementation according to grammar changes"); @@ -4779,9 +4779,9 @@ TNodePtr TSqlTranslation::DoStatement(const TRule_do_stmt& stmt, bool makeLambda bool TSqlTranslation::DefineActionOrSubqueryBody(TSqlQuery& query, TBlocks& blocks, const TRule_define_action_or_subquery_body& body) { if (body.HasBlock2()) { - Ctx.PushCurrentBlocks(&blocks); + Ctx_.PushCurrentBlocks(&blocks); Y_DEFER { - Ctx.PopCurrentBlocks(); + Ctx_.PopCurrentBlocks(); }; size_t statementNumber = 0; @@ -4801,9 +4801,9 @@ bool TSqlTranslation::DefineActionOrSubqueryBody(TSqlQuery& query, TBlocks& bloc } bool TSqlTranslation::DefineActionOrSubqueryStatement(const TRule_define_action_or_subquery_stmt& stmt, TSymbolNameWithPos& nameAndPos, TNodePtr& lambda) { - auto kind = Ctx.Token(stmt.GetToken2()); + auto kind = Ctx_.Token(stmt.GetToken2()); const bool isSubquery = to_lower(kind) == "subquery"; - if (!isSubquery && Mode == NSQLTranslation::ESqlMode::SUBQUERY) { + if (!isSubquery && Mode_ == NSQLTranslation::ESqlMode::SUBQUERY) { Error() << "Definition of actions is not allowed in the subquery"; return false; } @@ -4816,7 +4816,7 @@ bool TSqlTranslation::DefineActionOrSubqueryStatement(const TRule_define_action_ Error() << "Can not use anonymous name '" << actionName << "' as " << to_upper(kind) << " name"; return false; } - TPosition actionNamePos = Ctx.Pos(); + TPosition actionNamePos = Ctx_.Pos(); TVector<TSymbolNameWithPos> argNames; ui32 optionalArgumentsCount = 0; @@ -4824,23 +4824,23 @@ bool TSqlTranslation::DefineActionOrSubqueryStatement(const TRule_define_action_ return false; } - auto saveScoped = Ctx.Scoped; - Ctx.Scoped = MakeIntrusive<TScopedState>(); - Ctx.AllScopes.push_back(Ctx.Scoped); - *Ctx.Scoped = *saveScoped; - Ctx.Scoped->Local = TScopedState::TLocal{}; - Ctx.ScopeLevel++; + auto saveScoped = Ctx_.Scoped; + Ctx_.Scoped = MakeIntrusive<TScopedState>(); + Ctx_.AllScopes.push_back(Ctx_.Scoped); + *Ctx_.Scoped = *saveScoped; + Ctx_.Scoped->Local = TScopedState::TLocal{}; + Ctx_.ScopeLevel++; for (auto& arg : argNames) { arg.Name = PushNamedAtom(arg.Pos, arg.Name); } - auto saveMode = Ctx.Settings.Mode; + auto saveMode = Ctx_.Settings.Mode; if (isSubquery) { - Ctx.Settings.Mode = NSQLTranslation::ESqlMode::SUBQUERY; + Ctx_.Settings.Mode = NSQLTranslation::ESqlMode::SUBQUERY; } - TSqlQuery query(Ctx, Ctx.Settings.Mode, false); + TSqlQuery query(Ctx_, Ctx_.Settings.Mode, false); TBlocks innerBlocks; const bool hasValidBody = DefineActionOrSubqueryBody(query, innerBlocks, stmt.GetRule_define_action_or_subquery_body8()); @@ -4863,31 +4863,31 @@ bool TSqlTranslation::DefineActionOrSubqueryStatement(const TRule_define_action_ return false; } - auto ret = hasValidBody ? BuildQuery(Ctx.Pos(), innerBlocks, false, Ctx.Scoped, Ctx.SeqMode) : nullptr; + auto ret = hasValidBody ? BuildQuery(Ctx_.Pos(), innerBlocks, false, Ctx_.Scoped, Ctx_.SeqMode) : nullptr; WarnUnusedNodes(); - Ctx.Scoped = saveScoped; - Ctx.ScopeLevel--; - Ctx.Settings.Mode = saveMode; + Ctx_.Scoped = saveScoped; + Ctx_.ScopeLevel--; + Ctx_.Settings.Mode = saveMode; if (!ret) { return false; } - TNodePtr blockNode = new TAstListNodeImpl(Ctx.Pos()); + TNodePtr blockNode = new TAstListNodeImpl(Ctx_.Pos()); blockNode->Add("block"); blockNode->Add(blockNode->Q(ret)); - TNodePtr params = new TAstListNodeImpl(Ctx.Pos()); + TNodePtr params = new TAstListNodeImpl(Ctx_.Pos()); params->Add("world"); for (const auto& arg : argNames) { params->Add(BuildAtom(arg.Pos, arg.Name)); } - lambda = BuildLambda(Ctx.Pos(), params, blockNode); + lambda = BuildLambda(Ctx_.Pos(), params, blockNode); if (optionalArgumentsCount > 0) { - lambda = new TCallNodeImpl(Ctx.Pos(), "WithOptionalArgs", { + lambda = new TCallNodeImpl(Ctx_.Pos(), "WithOptionalArgs", { lambda, - BuildQuotedAtom(Ctx.Pos(), ToString(optionalArgumentsCount), TNodeFlags::Default) + BuildQuotedAtom(Ctx_.Pos(), ToString(optionalArgumentsCount), TNodeFlags::Default) }); } @@ -4898,7 +4898,7 @@ bool TSqlTranslation::DefineActionOrSubqueryStatement(const TRule_define_action_ TNodePtr TSqlTranslation::IfStatement(const TRule_if_stmt& stmt) { bool isEvaluate = stmt.HasBlock1(); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); auto exprNode = expr.Build(stmt.GetRule_expr3()); if (!exprNode) { return {}; @@ -4917,18 +4917,18 @@ TNodePtr TSqlTranslation::IfStatement(const TRule_if_stmt& stmt) { } } - return BuildWorldIfNode(Ctx.Pos(), exprNode, thenNode, elseNode, isEvaluate); + return BuildWorldIfNode(Ctx_.Pos(), exprNode, thenNode, elseNode, isEvaluate); } TNodePtr TSqlTranslation::ForStatement(const TRule_for_stmt& stmt) { bool isEvaluate = stmt.HasBlock1(); bool isParallel = stmt.HasBlock2(); - TSqlExpression expr(Ctx, Mode); + TSqlExpression expr(Ctx_, Mode_); TString itemArgName; if (!NamedNodeImpl(stmt.GetRule_bind_parameter4(), itemArgName, *this)) { return {}; } - TPosition itemArgNamePos = Ctx.Pos(); + TPosition itemArgNamePos = Ctx_.Pos(); auto exprNode = expr.Build(stmt.GetRule_expr6()); if (!exprNode) { @@ -4937,12 +4937,12 @@ TNodePtr TSqlTranslation::ForStatement(const TRule_for_stmt& stmt) { itemArgName = PushNamedAtom(itemArgNamePos, itemArgName); if (isParallel) { - ++Ctx.ParallelModeCount; + ++Ctx_.ParallelModeCount; } auto bodyNode = DoStatement(stmt.GetRule_do_stmt7(), true, { itemArgName }); if (isParallel) { - --Ctx.ParallelModeCount; + --Ctx_.ParallelModeCount; } PopNamedNode(itemArgName); @@ -4958,7 +4958,7 @@ TNodePtr TSqlTranslation::ForStatement(const TRule_for_stmt& stmt) { } } - return BuildWorldForNode(Ctx.Pos(), exprNode, bodyNode, elseNode, isEvaluate, isParallel); + return BuildWorldForNode(Ctx_.Pos(), exprNode, bodyNode, elseNode, isEvaluate, isParallel); } bool TSqlTranslation::BindParameterClause(const TRule_bind_parameter& node, TDeferredAtom& result) { @@ -4971,7 +4971,7 @@ bool TSqlTranslation::BindParameterClause(const TRule_bind_parameter& node, TDef return false; } - result = MakeAtomFromExpression(Ctx.Pos(), Ctx, named); + result = MakeAtomFromExpression(Ctx_.Pos(), Ctx_, named); return true; } @@ -4981,7 +4981,7 @@ bool TSqlTranslation::ObjectFeatureValueClause(const TRule_object_feature_value& case TRule_object_feature_value::kAltObjectFeatureValue1: { TString name = Id(node.GetAlt_object_feature_value1().GetRule_id_or_type1(), *this); - result = TDeferredAtom(Ctx.Pos(), name); + result = TDeferredAtom(Ctx_.Pos(), name); break; } case TRule_object_feature_value::kAltObjectFeatureValue2: @@ -4993,18 +4993,18 @@ bool TSqlTranslation::ObjectFeatureValueClause(const TRule_object_feature_value& } case TRule_object_feature_value::kAltObjectFeatureValue3: { - auto strValue = StringContent(Ctx, Ctx.Pos(), Ctx.Token(node.GetAlt_object_feature_value3().GetToken1())); + auto strValue = StringContent(Ctx_, Ctx_.Pos(), Ctx_.Token(node.GetAlt_object_feature_value3().GetToken1())); if (!strValue) { - Error() << "Cannot parse string correctly: " << Ctx.Token(node.GetAlt_object_feature_value3().GetToken1()); + Error() << "Cannot parse string correctly: " << Ctx_.Token(node.GetAlt_object_feature_value3().GetToken1()); return false; } - result = TDeferredAtom(Ctx.Pos(), strValue->Content); + result = TDeferredAtom(Ctx_.Pos(), strValue->Content); break; } case TRule_object_feature_value::kAltObjectFeatureValue4: { - TString value = Ctx.Token(node.GetAlt_object_feature_value4().GetRule_bool_value1().GetToken1()); - result = TDeferredAtom(BuildLiteralBool(Ctx.Pos(), FromString<bool>(value)), Ctx); + TString value = Ctx_.Token(node.GetAlt_object_feature_value4().GetRule_bool_value1().GetToken1()); + result = TDeferredAtom(BuildLiteralBool(Ctx_.Pos(), FromString<bool>(value)), Ctx_); break; } case TRule_object_feature_value::ALT_NOT_SET: @@ -5055,11 +5055,11 @@ bool TSqlTranslation::StoreDataSourceSettingsEntry(const TIdentifier& id, const const TString key = to_lower(id.Name); if (result.find(key) != result.end()) { - Ctx.Error() << to_upper(key) << " duplicate keys"; + Ctx_.Error() << to_upper(key) << " duplicate keys"; return false; } - if (!StoreString(*value, result[key], Ctx, to_upper(key))) { + if (!StoreString(*value, result[key], Ctx_, to_upper(key))) { return false; } @@ -5084,7 +5084,7 @@ bool TSqlTranslation::ParseExternalDataSourceSettings(std::map<TString, TDeferre } } if (result.find("source_type") == result.end()) { - Ctx.Error() << "SOURCE_TYPE requires key"; + Ctx_.Error() << "SOURCE_TYPE requires key"; return false; } if (!ValidateAuthMethod(result)) { @@ -5150,23 +5150,23 @@ bool TSqlTranslation::ValidateAuthMethod(const std::map<TString, TDeferredAtom>& }; auto authMethodIt = result.find("auth_method"); if (authMethodIt == result.end() || authMethodIt->second.GetLiteral() == nullptr) { - Ctx.Error() << "AUTH_METHOD requires key"; + Ctx_.Error() << "AUTH_METHOD requires key"; return false; } const auto& authMethod = *authMethodIt->second.GetLiteral(); auto it = authMethodFields.find(authMethod); if (it == authMethodFields.end()) { - Ctx.Error() << "Unknown AUTH_METHOD = " << authMethod; + Ctx_.Error() << "Unknown AUTH_METHOD = " << authMethod; return false; } const auto& currentAuthFields = it->second; for (const auto& authField: allAuthFields) { if (currentAuthFields.contains(authField) && !result.contains(TString{authField})) { - Ctx.Error() << to_upper(TString{authField}) << " requires key"; + Ctx_.Error() << to_upper(TString{authField}) << " requires key"; return false; } if (!currentAuthFields.contains(authField) && result.contains(TString{authField})) { - Ctx.Error() << to_upper(TString{authField}) << " key is not supported for AUTH_METHOD = " << authMethod; + Ctx_.Error() << to_upper(TString{authField}) << " key is not supported for AUTH_METHOD = " << authMethod; return false; } } @@ -5179,17 +5179,17 @@ bool TSqlTranslation::ValidateExternalTable(const TCreateTableParameters& params } if (!params.TableSettings.DataSourcePath) { - Ctx.Error() << "DATA_SOURCE requires key"; + Ctx_.Error() << "DATA_SOURCE requires key"; return false; } if (!params.TableSettings.Location) { - Ctx.Error() << "LOCATION requires key"; + Ctx_.Error() << "LOCATION requires key"; return false; } if (params.PkColumns) { - Ctx.Error() << "PRIMARY KEY is not supported for external table"; + Ctx_.Error() << "PRIMARY KEY is not supported for external table"; return false; } @@ -5201,19 +5201,19 @@ bool TSqlTranslation::ParseViewQuery( const TRule_select_stmt& query ) { TStringBuilder queryText; - if (!BuildContextRecreationQuery(Ctx, queryText)) { + if (!BuildContextRecreationQuery(Ctx_, queryText)) { return false; } queryText << CollectTokens(query); - features["query_text"] = { Ctx.Pos(), queryText }; + features["query_text"] = { Ctx_.Pos(), queryText }; // The AST is needed solely for the validation of the CREATE VIEW statement. // The final storage format for the query is a plain text, not an AST. - const auto viewSelect = BuildViewSelect(query, Ctx); + const auto viewSelect = BuildViewSelect(query, Ctx_); if (!viewSelect) { return false; } - features["query_ast"] = { viewSelect, Ctx }; + features["query_ast"] = { viewSelect, Ctx_ }; return true; } @@ -5299,15 +5299,15 @@ bool TSqlTranslation::ParseTransferLambda( TString& lambdaText, const TRule_lambda_or_parameter& lambdaOrParameter) { - TSqlExpression expr(Ctx, Ctx.Settings.Mode); + TSqlExpression expr(Ctx_, Ctx_.Settings.Mode); auto result = expr.Build(lambdaOrParameter); if (!result) { return false; } - lambdaText = GetLambdaText(*this, Ctx, lambdaOrParameter); + lambdaText = GetLambdaText(*this, Ctx_, lambdaOrParameter); if (lambdaText.empty()) { - Ctx.Error() << "Cannot parse lambda correctly"; + Ctx_.Error() << "Cannot parse lambda correctly"; } return !lambdaText.empty(); @@ -5321,25 +5321,25 @@ public: } void SetStar() { - ColumnNames.clear(); - Star = true; + ColumnNames_.clear(); + Star_ = true; } void AddColumn(const NSQLv1Generated::TRule_an_id & rule, TTranslation& ctx) { - ColumnNames.push_back(NSQLTranslationV1::Id(rule, ctx)); + ColumnNames_.push_back(NSQLTranslationV1::Id(rule, ctx)); } bool DoInit(TContext& ctx, ISource* source) override { - Node = Y(); - if (Star) { - Node->Add(Y("ReturningStar")); + Node_ = Y(); + if (Star_) { + Node_->Add(Y("ReturningStar")); } else { - for (auto&& column : ColumnNames) { - Node->Add(Y("ReturningListItem", Q(column))); + for (auto&& column : ColumnNames_) { + Node_->Add(Y("ReturningListItem", Q(column))); } } - Node = Q(Y(Q("returning"), Q(Node))); - return Node->Init(ctx, source); + Node_ = Q(Y(Q("returning"), Q(Node_))); + return Node_->Init(ctx, source); } TNodePtr DoClone() const override { @@ -5347,17 +5347,17 @@ public: } TAstNode* Translate(TContext& ctx) const override { - return Node->Translate(ctx); + return Node_->Translate(ctx); } private: - TNodePtr Node; - TVector<TString> ColumnNames; - bool Star = false; + TNodePtr Node_; + TVector<TString> ColumnNames_; + bool Star_ = false; }; TNodePtr TSqlTranslation::ReturningList(const ::NSQLv1Generated::TRule_returning_columns_list& columns) { - auto result = MakeHolder<TReturningListColumns>(Ctx.Pos()); + auto result = MakeHolder<TReturningListColumns>(Ctx_.Pos()); if (columns.GetBlock2().Alt_case() == TRule_returning_columns_list_TBlock2::AltCase::kAlt1) { result->SetStar(); @@ -5376,19 +5376,19 @@ bool TSqlTranslation::StoreResourcePoolSettingsEntry(const TIdentifier& id, cons const TString key = to_lower(id.Name); if (result.find(key) != result.end()) { - Ctx.Error() << to_upper(key) << " duplicate keys"; + Ctx_.Error() << to_upper(key) << " duplicate keys"; return false; } switch (value->Alt_case()) { case TRule_table_setting_value::kAltTableSettingValue2: - return StoreString(*value, result[key], Ctx, to_upper(key)); + return StoreString(*value, result[key], Ctx_, to_upper(key)); case TRule_table_setting_value::kAltTableSettingValue3: - return StoreInt(*value, result[key], Ctx, to_upper(key)); + return StoreInt(*value, result[key], Ctx_, to_upper(key)); default: - Ctx.Error() << to_upper(key) << " value should be a string literal or integer"; + Ctx_.Error() << to_upper(key) << " value should be a string literal or integer"; return false; } @@ -5447,19 +5447,19 @@ bool TSqlTranslation::StoreResourcePoolClassifierSettingsEntry(const TIdentifier const TString key = to_lower(id.Name); if (result.find(key) != result.end()) { - Ctx.Error() << to_upper(key) << " duplicate keys"; + Ctx_.Error() << to_upper(key) << " duplicate keys"; return false; } switch (value->Alt_case()) { case TRule_table_setting_value::kAltTableSettingValue2: - return StoreString(*value, result[key], Ctx, to_upper(key)); + return StoreString(*value, result[key], Ctx_, to_upper(key)); case TRule_table_setting_value::kAltTableSettingValue3: - return StoreInt(*value, result[key], Ctx, to_upper(key)); + return StoreInt(*value, result[key], Ctx_, to_upper(key)); default: - Ctx.Error() << to_upper(key) << " value should be a string literal or integer"; + Ctx_.Error() << to_upper(key) << " value should be a string literal or integer"; return false; } diff --git a/yql/essentials/sql/v1/sql_translation.h b/yql/essentials/sql/v1/sql_translation.h index 99192e4e102..619f4276be8 100644 --- a/yql/essentials/sql/v1/sql_translation.h +++ b/yql/essentials/sql/v1/sql_translation.h @@ -123,7 +123,7 @@ class TSqlTranslation: public TTranslation { protected: TSqlTranslation(TContext& ctx, NSQLTranslation::ESqlMode mode) : TTranslation(ctx) - , Mode(mode) + , Mode_(mode) { /// \todo remove NSQLTranslation::ESqlMode params YQL_ENSURE(ctx.Settings.Mode == mode); @@ -288,7 +288,7 @@ private: bool ValidateTableSettings(const TTableSettings& settings); protected: - NSQLTranslation::ESqlMode Mode; + NSQLTranslation::ESqlMode Mode_; }; TNodePtr LiteralNumber(TContext& ctx, const TRule_integer& node); diff --git a/yql/essentials/sql/v1/sql_values.cpp b/yql/essentials/sql/v1/sql_values.cpp index c035489387f..2375fa6ec91 100644 --- a/yql/essentials/sql/v1/sql_values.cpp +++ b/yql/essentials/sql/v1/sql_values.cpp @@ -11,7 +11,7 @@ using namespace NSQLv1Generated; TSourcePtr TSqlValues::Build(const TRule_values_stmt& node, TPosition& valuesPos, const TVector<TString>& derivedColumns, TPosition derivedColumnsPos) { Token(node.GetToken1()); - valuesPos = Ctx.Pos(); + valuesPos = Ctx_.Pos(); TVector<TVector<TNodePtr>> rows; const auto& rowList = node.GetRule_values_source_row_list2(); @@ -22,13 +22,13 @@ TSourcePtr TSqlValues::Build(const TRule_values_stmt& node, TPosition& valuesPos YQL_ENSURE(!rows.empty()); const size_t columnsCount = rows.back().size(); if (derivedColumns.size() > columnsCount) { - Ctx.Error(derivedColumnsPos) << "Derived column list size exceeds column count in VALUES"; + Ctx_.Error(derivedColumnsPos) << "Derived column list size exceeds column count in VALUES"; return nullptr; } auto columns = derivedColumns; - if (Ctx.WarnUnnamedColumns && columns.size() < columnsCount) { - Ctx.Warning(valuesPos, TIssuesIds::YQL_UNNAMED_COLUMN) + if (Ctx_.WarnUnnamedColumns && columns.size() < columnsCount) { + Ctx_.Warning(valuesPos, TIssuesIds::YQL_UNNAMED_COLUMN) << "Autogenerated column names column" << columns.size() << "...column" << columnsCount - 1 << " will be used here"; } @@ -80,15 +80,15 @@ bool TSqlValues::BuildRows(const TRule_values_source_row_list& node, TVector<TVe } bool TSqlValues::BuildRow(const TRule_values_source_row& inRow, TVector<TNodePtr>& outRow) { - TSqlExpression sqlExpr(Ctx, Mode); + TSqlExpression sqlExpr(Ctx_, Mode_); return ExprList(sqlExpr, outRow, inRow.GetRule_expr_list2()); } TSourcePtr TSqlValues::ValuesSource(const TRule_values_source& node, const TVector<TString>& columnsHint, const TString& operationName) { - Ctx.IncrementMonCounter("sql_features", "ValuesSource"); - TPosition pos(Ctx.Pos()); + Ctx_.IncrementMonCounter("sql_features", "ValuesSource"); + TPosition pos(Ctx_.Pos()); switch (node.Alt_case()) { case TRule_values_source::kAltValuesSource1: { TVector<TVector<TNodePtr>> rows {{}}; @@ -99,7 +99,7 @@ TSourcePtr TSqlValues::ValuesSource(const TRule_values_source& node, const TVect return BuildWriteValues(pos, operationName, columnsHint, rows); } case TRule_values_source::kAltValuesSource2: { - TSqlSelect select(Ctx, Mode); + TSqlSelect select(Ctx_, Mode_); TPosition selectPos; auto source = select.Build(node.GetAlt_values_source2().GetRule_select_stmt1(), selectPos); if (!source) { @@ -108,7 +108,7 @@ TSourcePtr TSqlValues::ValuesSource(const TRule_values_source& node, const TVect return BuildWriteValues(pos, "UPDATE", columnsHint, std::move(source)); } default: - Ctx.IncrementMonCounter("sql_errors", "UnknownValuesSource"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownValuesSource"); AltNotImplemented("values_source", node); return nullptr; } @@ -125,7 +125,7 @@ TSourcePtr TSqlIntoValues::Build(const TRule_into_values_source& node, const TSt return ValuesSource(alt.GetRule_values_source2(), columnsHint, operationName); } default: - Ctx.IncrementMonCounter("sql_errors", "DefaultValuesOrOther"); + Ctx_.IncrementMonCounter("sql_errors", "DefaultValuesOrOther"); AltNotImplemented("into_values_source", node); return nullptr; } @@ -134,7 +134,7 @@ TSourcePtr TSqlIntoValues::Build(const TRule_into_values_source& node, const TSt TSourcePtr TSqlAsValues::Build(const TRule_values_source& node, const TString& operationName) { switch (node.Alt_case()) { case TRule_values_source::kAltValuesSource1: { - Ctx.IncrementMonCounter("sql_errors", "UnknownValuesSource"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownValuesSource"); Error() << "AS VALUES statement is not supported for " << operationName << "."; return nullptr; } @@ -142,7 +142,7 @@ TSourcePtr TSqlAsValues::Build(const TRule_values_source& node, const TString& o return ValuesSource(node, {}, operationName); } default: - Ctx.IncrementMonCounter("sql_errors", "UnknownValuesSource"); + Ctx_.IncrementMonCounter("sql_errors", "UnknownValuesSource"); AltNotImplemented("values_source", node); return nullptr; } |