Skip to content

Commit 98f2f64

Browse files
authored
Firstly search in system tables (#1991)
1 parent 506ecae commit 98f2f64

File tree

2 files changed

+8
-49
lines changed

2 files changed

+8
-49
lines changed

ydb/library/yql/sql/pg/pg_sql.cpp

+7-3
Original file line numberDiff line numberDiff line change
@@ -2549,7 +2549,11 @@ class TConverter : public IPGParseEvents {
25492549
return true;
25502550
}
25512551

2552-
TString ResolveCluster(const TStringBuf schemaname) {
2552+
TString ResolveCluster(const TStringBuf schemaname, TString name) {
2553+
if (NYql::NPg::GetStaticColumns().contains(NPg::TTableInfoKey{"pg_catalog", name})) {
2554+
return "pg_catalog";
2555+
}
2556+
25532557
if (schemaname == "public") {
25542558
return "";
25552559
}
@@ -2603,7 +2607,7 @@ class TConverter : public IPGParseEvents {
26032607
return {};
26042608
}
26052609

2606-
const auto cluster = ResolveCluster(schemaname);
2610+
const auto cluster = ResolveCluster(schemaname, TString(relname));
26072611
const auto sinkOrSource = BuildClusterSinkOrSourceExpression(isSink, cluster);
26082612
const auto key = BuildTableKeyExpression(relname, cluster, isScheme);
26092613
return {sinkOrSource, key};
@@ -2630,7 +2634,7 @@ class TConverter : public IPGParseEvents {
26302634
return {};
26312635
}
26322636

2633-
const auto cluster = ResolveCluster(schemaname);
2637+
const auto cluster = ResolveCluster(schemaname, TString(objectName));
26342638
const auto sinkOrSource = BuildClusterSinkOrSourceExpression(true, cluster);
26352639
const auto key = BuildPgObjectExpression(objectName, pgObjectType);
26362640
return {sinkOrSource, key};

ydb/library/yql/sql/pg/pg_sql_ut.cpp

+1-46
Original file line numberDiff line numberDiff line change
@@ -518,18 +518,7 @@ from pg_catalog.pg_type)",
518518
UNIT_ASSERT(res.Root);
519519

520520
res = SqlToYqlWithMode(
521-
R"(select set_config('search_path', 'yql', false);)",
522-
NSQLTranslation::ESqlMode::QUERY,
523-
10,
524-
{},
525-
EDebugOutput::None,
526-
false,
527-
settings);
528-
UNIT_ASSERT(!res.IsOk());
529-
UNIT_ASSERT(!res.Root);
530-
531-
res = SqlToYqlWithMode(
532-
R"(select set_config('search_path', 'pg_catalog', false);)",
521+
R"(select * from pg_type;)",
533522
NSQLTranslation::ESqlMode::QUERY,
534523
10,
535524
{},
@@ -538,39 +527,5 @@ from pg_catalog.pg_type)",
538527
settings);
539528
UNIT_ASSERT(res.IsOk());
540529
UNIT_ASSERT(res.Root);
541-
542-
res = SqlToYqlWithMode(
543-
R"(rollback;)",
544-
NSQLTranslation::ESqlMode::QUERY,
545-
10,
546-
{},
547-
EDebugOutput::None,
548-
false,
549-
settings);
550-
UNIT_ASSERT(res.IsOk());
551-
UNIT_ASSERT(res.Root);
552-
553-
google::protobuf::Arena arena;
554-
const auto service = TString(NYql::YtProviderName);
555-
settings.ClusterMapping["hahn"] = NYql::YtProviderName;
556-
settings.ClusterMapping["mon"] = NYql::SolomonProviderName;
557-
settings.MaxErrors = 10;
558-
settings.Mode = NSQLTranslation::ESqlMode::QUERY;
559-
settings.Arena = &arena;
560-
settings.AnsiLexer = false;
561-
settings.SyntaxVersion = 1;
562-
settings.PgParser = true;
563-
564-
res = SqlToYql(
565-
R"(select oid,
566-
typinput::int4 as typinput,
567-
typname,
568-
typnamespace,
569-
typtype
570-
from pg_type)",
571-
settings);
572-
UNIT_ASSERT(res.Issues.ToString().Contains("Unknown cluster:"));
573-
UNIT_ASSERT(!res.IsOk());
574-
UNIT_ASSERT(!res.Root);
575530
}
576531
}

0 commit comments

Comments
 (0)