diff options
author | vvvv <vvvv@ydb.tech> | 2023-05-18 19:50:55 +0300 |
---|---|---|
committer | vvvv <vvvv@ydb.tech> | 2023-05-18 19:50:55 +0300 |
commit | 1f719169b72c56eb3005fbec38744bed59b94581 (patch) | |
tree | ccc0aafd65ed0874549110bef0fd7e8a238758eb | |
parent | a0b8ac7bf15b6cedd46b23acbf0d02e5248595c8 (diff) | |
download | ydb-1f719169b72c56eb3005fbec38744bed59b94581.tar.gz |
Case insensitive search for pg_catalog
-rw-r--r-- | ydb/library/yql/ast/yql_type_string.cpp | 4 | ||||
-rw-r--r-- | ydb/library/yql/core/type_ann/type_ann_pg.cpp | 4 | ||||
-rw-r--r-- | ydb/library/yql/parser/pg_catalog/catalog.cpp | 22 | ||||
-rw-r--r-- | ydb/library/yql/parser/pg_catalog/catalog.h | 8 |
4 files changed, 19 insertions, 19 deletions
diff --git a/ydb/library/yql/ast/yql_type_string.cpp b/ydb/library/yql/ast/yql_type_string.cpp index 33876d45ad..d693299f39 100644 --- a/ydb/library/yql/ast/yql_type_string.cpp +++ b/ydb/library/yql/ast/yql_type_string.cpp @@ -322,13 +322,13 @@ private: auto id = Identifier; if (id.SkipPrefix("pg")) { - if (NPg::HasType(id)) { + if (NPg::HasType(TString(id))) { type = MakePgType(id); isPgType = true; GetNextToken(); } } else if (id.SkipPrefix("_pg")) { - if (NPg::HasType(id) && !id.StartsWith('_')) { + if (NPg::HasType(TString(id)) && !id.StartsWith('_')) { type = MakePgType(TString("_") + id); isPgType = true; GetNextToken(); diff --git a/ydb/library/yql/core/type_ann/type_ann_pg.cpp b/ydb/library/yql/core/type_ann/type_ann_pg.cpp index 54895428c3..b5d9e71531 100644 --- a/ydb/library/yql/core/type_ann/type_ann_pg.cpp +++ b/ydb/library/yql/core/type_ann/type_ann_pg.cpp @@ -516,7 +516,7 @@ IGraphTransformer::TStatus PgAggWrapper(const TExprNode::TPtr& input, TExprNode: } try { - const auto& aggDesc = NPg::LookupAggregation(name, argTypes); + const auto& aggDesc = NPg::LookupAggregation(TString(name), argTypes); if (aggDesc.Kind != NPg::EAggKind::Normal) { ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(input->Pos()), "Only normal aggregation supported")); @@ -1114,7 +1114,7 @@ IGraphTransformer::TStatus PgAggregationTraitsWrapper(const TExprNode::TPtr& inp return IGraphTransformer::TStatus::Repeat; } - const auto& aggDesc = NPg::LookupAggregation(func, argTypes); + const auto& aggDesc = NPg::LookupAggregation(TString(func), argTypes); if (aggDesc.Kind != NPg::EAggKind::Normal) { ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(input->Pos()), "Only normal aggregation supported")); diff --git a/ydb/library/yql/parser/pg_catalog/catalog.cpp b/ydb/library/yql/parser/pg_catalog/catalog.cpp index b4cbcb1765..947972a04b 100644 --- a/ydb/library/yql/parser/pg_catalog/catalog.cpp +++ b/ydb/library/yql/parser/pg_catalog/catalog.cpp @@ -1315,7 +1315,7 @@ const TProcDesc& LookupProc(ui32 procId, const TVector<ui32>& argTypeIds) { const TProcDesc& LookupProc(const TString& name, const TVector<ui32>& argTypeIds) { const auto& catalog = TCatalog::Instance(); - auto procIdPtr = catalog.ProcByName.FindPtr(name); + auto procIdPtr = catalog.ProcByName.FindPtr(to_lower(name)); if (!procIdPtr) { throw yexception() << "No such proc: " << name; } @@ -1351,9 +1351,9 @@ void EnumProc(std::function<void(ui32, const TProcDesc&)> f) { } } -bool HasReturnSetProc(const TStringBuf& name) { +bool HasReturnSetProc(const TString& name) { const auto& catalog = TCatalog::Instance(); - auto procIdPtr = catalog.ProcByName.FindPtr(name); + auto procIdPtr = catalog.ProcByName.FindPtr(to_lower(name)); if (!procIdPtr) { return false; } @@ -1369,14 +1369,14 @@ bool HasReturnSetProc(const TStringBuf& name) { return false; } -bool HasType(const TStringBuf& name) { +bool HasType(const TString& name) { const auto& catalog = TCatalog::Instance(); - return catalog.TypeByName.contains(name); + return catalog.TypeByName.contains(to_lower(name)); } const TTypeDesc& LookupType(const TString& name) { const auto& catalog = TCatalog::Instance(); - const auto typeIdPtr = catalog.TypeByName.FindPtr(name); + const auto typeIdPtr = catalog.TypeByName.FindPtr(to_lower(name)); if (!typeIdPtr) { throw yexception() << "No such type: " << name; } @@ -1422,7 +1422,7 @@ const TCastDesc& LookupCast(ui32 sourceId, ui32 targetId) { const TOperDesc& LookupOper(const TString& name, const TVector<ui32>& argTypeIds) { const auto& catalog = TCatalog::Instance(); - auto operIdPtr = catalog.OperatorsByName.FindPtr(name); + auto operIdPtr = catalog.OperatorsByName.FindPtr(to_lower(name)); if (!operIdPtr) { throw yexception() << "No such operator: " << name; } @@ -1466,18 +1466,18 @@ const TOperDesc& LookupOper(ui32 operId) { return *operPtr; } -bool HasAggregation(const TStringBuf& name) { +bool HasAggregation(const TString& name) { const auto& catalog = TCatalog::Instance(); - return catalog.AggregationsByName.contains(name); + return catalog.AggregationsByName.contains(to_lower(name)); } bool ValidateAggregateArgs(const TAggregateDesc& d, const TVector<ui32>& argTypeIds) { return ValidateArgs(d.ArgTypes, argTypeIds); } -const TAggregateDesc& LookupAggregation(const TStringBuf& name, const TVector<ui32>& argTypeIds) { +const TAggregateDesc& LookupAggregation(const TString& name, const TVector<ui32>& argTypeIds) { const auto& catalog = TCatalog::Instance(); - auto aggIdPtr = catalog.AggregationsByName.FindPtr(name); + auto aggIdPtr = catalog.AggregationsByName.FindPtr(to_lower(name)); if (!aggIdPtr) { throw yexception() << "No such aggregate: " << name; } diff --git a/ydb/library/yql/parser/pg_catalog/catalog.h b/ydb/library/yql/parser/pg_catalog/catalog.h index cc6743df05..cc1bbe4673 100644 --- a/ydb/library/yql/parser/pg_catalog/catalog.h +++ b/ydb/library/yql/parser/pg_catalog/catalog.h @@ -189,10 +189,10 @@ enum class EHashAmProcNum { const TProcDesc& LookupProc(const TString& name, const TVector<ui32>& argTypeIds); const TProcDesc& LookupProc(ui32 procId, const TVector<ui32>& argTypeIds); const TProcDesc& LookupProc(ui32 procId); -bool HasReturnSetProc(const TStringBuf& name); +bool HasReturnSetProc(const TString& name); void EnumProc(std::function<void(ui32, const TProcDesc&)> f); -bool HasType(const TStringBuf& name); +bool HasType(const TString& name); const TTypeDesc& LookupType(const TString& name); const TTypeDesc& LookupType(ui32 typeId); void EnumTypes(std::function<void(ui32, const TTypeDesc&)> f); @@ -204,8 +204,8 @@ const TOperDesc& LookupOper(const TString& name, const TVector<ui32>& argTypeIds const TOperDesc& LookupOper(ui32 operId, const TVector<ui32>& argTypeIds); const TOperDesc& LookupOper(ui32 operId); -bool HasAggregation(const TStringBuf& name); -const TAggregateDesc& LookupAggregation(const TStringBuf& name, const TVector<ui32>& argTypeIds); +bool HasAggregation(const TString& name); +const TAggregateDesc& LookupAggregation(const TString& name, const TVector<ui32>& argTypeIds); bool HasOpClass(EOpClassMethod method, ui32 typeId); const TOpClassDesc* LookupDefaultOpClass(EOpClassMethod method, ui32 typeId); |