aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <vvvv@ydb.tech>2023-05-18 19:50:55 +0300
committervvvv <vvvv@ydb.tech>2023-05-18 19:50:55 +0300
commit1f719169b72c56eb3005fbec38744bed59b94581 (patch)
treeccc0aafd65ed0874549110bef0fd7e8a238758eb
parenta0b8ac7bf15b6cedd46b23acbf0d02e5248595c8 (diff)
downloadydb-1f719169b72c56eb3005fbec38744bed59b94581.tar.gz
Case insensitive search for pg_catalog
-rw-r--r--ydb/library/yql/ast/yql_type_string.cpp4
-rw-r--r--ydb/library/yql/core/type_ann/type_ann_pg.cpp4
-rw-r--r--ydb/library/yql/parser/pg_catalog/catalog.cpp22
-rw-r--r--ydb/library/yql/parser/pg_catalog/catalog.h8
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);