Skip to content

Commit 220d066

Browse files
authored
[PG] Init namespaces' syscache (#6655)
1 parent 38a7ef2 commit 220d066

File tree

6 files changed

+58
-31
lines changed

6 files changed

+58
-31
lines changed

ydb/library/yql/parser/pg_wrapper/syscache.cpp

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ struct TSysCache {
204204
InitializeDatabase();
205205
InitializeAuthId();
206206
InitializeNameNamespaces();
207+
InitializeRelNameNamespaces();
207208
for (auto& item : Items) {
208209
if (item) {
209210
item->FinalizeRangeMaps();
@@ -629,7 +630,7 @@ struct TSysCache {
629630
cacheItem->PgThreadContextLookup = std::move(threadContextLookup);
630631
}
631632

632-
void InitializeNameNamespaces() {
633+
void InitializeRelNameNamespaces() {
633634
TupleDesc tupleDesc = CreateTemplateTupleDesc(Natts_pg_class);
634635
FillAttr(tupleDesc, Anum_pg_class_oid, OIDOID);
635636
FillAttr(tupleDesc, Anum_pg_class_relname, NAMEOID);
@@ -690,6 +691,35 @@ struct TSysCache {
690691
lookupMap.emplace(key, h);
691692
}
692693
}
694+
695+
void InitializeNameNamespaces() {
696+
TupleDesc tupleDesc = CreateTemplateTupleDesc(Natts_pg_namespace);
697+
FillAttr(tupleDesc, Anum_pg_namespace_oid, OIDOID);
698+
FillAttr(tupleDesc, Anum_pg_namespace_nspname, NAMEOID);
699+
FillAttr(tupleDesc, Anum_pg_namespace_nspowner, OIDOID);
700+
FillAttr(tupleDesc, Anum_pg_namespace_nspacl, ACLITEMARRAYOID);
701+
auto& cacheItem = Items[NAMESPACENAME] = std::make_unique<TSysCacheItem>(NsNameHasher, NsNameEquals, tupleDesc);
702+
auto& lookupMap = cacheItem->LookupMap;
703+
704+
NPg::EnumNamespace([&](ui32 oid, const NPg::TNamespaceDesc& desc) {
705+
Datum values[Natts_pg_namespace];
706+
bool nulls[Natts_pg_namespace];
707+
Zero(values);
708+
std::fill_n(nulls, Natts_pg_namespace, true);
709+
FillDatum(Natts_pg_namespace, values, nulls, Anum_pg_namespace_oid, oid);
710+
auto name = MakeFixedString(desc.Name, NAMEDATALEN);
711+
FillDatum(Natts_pg_namespace, values, nulls, Anum_pg_namespace_nspname, (Datum)name);
712+
FillDatum(Natts_pg_namespace, values, nulls, Anum_pg_namespace_nspowner, (Datum)1);
713+
HeapTuple h = heap_form_tuple(tupleDesc, values, nulls);
714+
auto row = (Form_pg_namespace)GETSTRUCT(h);
715+
Y_ENSURE(row->oid == oid);
716+
Y_ENSURE(NameStr(row->nspname) == desc.Name);
717+
Y_ENSURE(row->nspowner == 1);
718+
719+
auto key = THeapTupleKey((Datum)name, 0, 0, 0);
720+
lookupMap.emplace(key, h);
721+
});
722+
}
693723
};
694724

695725
}

ydb/library/yql/tests/sql/dq_file/part12/canondata/result.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2369,23 +2369,23 @@
23692369
"test.test[pg-pg_types_literal_mods-default.txt-Results]": [],
23702370
"test.test[pg-regoids-default.txt-Analyze]": [
23712371
{
2372-
"checksum": "c75a08990cadfbd737032e6229f34bd2",
2373-
"size": 2175,
2374-
"uri": "https://{canondata_backend}/1937150/beadc034e6d1974bf335a714f22ddc0f477a2f6f/resource.tar.gz#test.test_pg-regoids-default.txt-Analyze_/plan.txt"
2372+
"checksum": "7841f32f3b9cc9e0c539c8482b058c78",
2373+
"size": 2588,
2374+
"uri": "https://{canondata_backend}/1847551/e0a8e24122315ced755797fc5a2fd65992e28ce2/resource.tar.gz#test.test_pg-regoids-default.txt-Analyze_/plan.txt"
23752375
}
23762376
],
23772377
"test.test[pg-regoids-default.txt-Debug]": [
23782378
{
2379-
"checksum": "64bb16326046a17a014b8d8a32c6ef61",
2380-
"size": 2213,
2381-
"uri": "https://{canondata_backend}/1937150/beadc034e6d1974bf335a714f22ddc0f477a2f6f/resource.tar.gz#test.test_pg-regoids-default.txt-Debug_/opt.yql_patched"
2379+
"checksum": "ee2fc733842210b5a388bf1b261be7f4",
2380+
"size": 2675,
2381+
"uri": "https://{canondata_backend}/1847551/e0a8e24122315ced755797fc5a2fd65992e28ce2/resource.tar.gz#test.test_pg-regoids-default.txt-Debug_/opt.yql_patched"
23822382
}
23832383
],
23842384
"test.test[pg-regoids-default.txt-Plan]": [
23852385
{
2386-
"checksum": "c75a08990cadfbd737032e6229f34bd2",
2387-
"size": 2175,
2388-
"uri": "https://{canondata_backend}/1937150/beadc034e6d1974bf335a714f22ddc0f477a2f6f/resource.tar.gz#test.test_pg-regoids-default.txt-Plan_/plan.txt"
2386+
"checksum": "7841f32f3b9cc9e0c539c8482b058c78",
2387+
"size": 2588,
2388+
"uri": "https://{canondata_backend}/1847551/e0a8e24122315ced755797fc5a2fd65992e28ce2/resource.tar.gz#test.test_pg-regoids-default.txt-Plan_/plan.txt"
23892389
}
23902390
],
23912391
"test.test[pg-regoids-default.txt-Results]": [],

ydb/library/yql/tests/sql/hybrid_file/part8/canondata/result.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2101,16 +2101,16 @@
21012101
],
21022102
"test.test[pg-regoids-default.txt-Debug]": [
21032103
{
2104-
"checksum": "b82484391878d68a54f5ad41ccc81697",
2105-
"size": 2212,
2106-
"uri": "https://{canondata_backend}/1942671/1e5e3ca34f9681802533dd848f1f6b8cdfb09f35/resource.tar.gz#test.test_pg-regoids-default.txt-Debug_/opt.yql_patched"
2104+
"checksum": "61fa3018e8c01783f73a0b2890b03243",
2105+
"size": 2674,
2106+
"uri": "https://{canondata_backend}/1931696/564c43f4aa944aa26e85d54f2d25c16b9ce359f6/resource.tar.gz#test.test_pg-regoids-default.txt-Debug_/opt.yql_patched"
21072107
}
21082108
],
21092109
"test.test[pg-regoids-default.txt-Plan]": [
21102110
{
2111-
"checksum": "c75a08990cadfbd737032e6229f34bd2",
2112-
"size": 2175,
2113-
"uri": "https://{canondata_backend}/1942671/1e5e3ca34f9681802533dd848f1f6b8cdfb09f35/resource.tar.gz#test.test_pg-regoids-default.txt-Plan_/plan.txt"
2111+
"checksum": "7841f32f3b9cc9e0c539c8482b058c78",
2112+
"size": 2588,
2113+
"uri": "https://{canondata_backend}/1931696/564c43f4aa944aa26e85d54f2d25c16b9ce359f6/resource.tar.gz#test.test_pg-regoids-default.txt-Plan_/plan.txt"
21142114
}
21152115
],
21162116
"test.test[pg-select_agg_expr_key_under_agg-default.txt-Debug]": [

ydb/library/yql/tests/sql/sql2yql/canondata/result.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12629,9 +12629,9 @@
1262912629
],
1263012630
"test_sql2yql.test[pg-regoids]": [
1263112631
{
12632-
"checksum": "eab738419cb09d84413280147d5ebbe2",
12633-
"size": 3386,
12634-
"uri": "https://{canondata_backend}/1942415/fef0599b6207585cd5b6635353bbb33968e87399/resource.tar.gz#test_sql2yql.test_pg-regoids_/sql.yql"
12632+
"checksum": "cfee748ff3069e2026aa878742187dd1",
12633+
"size": 4216,
12634+
"uri": "https://{canondata_backend}/1600758/02851b6238039a3162d6f222d34d79a59e24c249/resource.tar.gz#test_sql2yql.test_pg-regoids_/sql.yql"
1263512635
}
1263612636
],
1263712637
"test_sql2yql.test[pg-select_agg]": [

ydb/library/yql/tests/sql/suites/pg/regoids.sql

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ where oid::regconfig in ('english', 'russian');
1212
select oid, oid::regdictionary from pg_catalog.pg_ts_dict
1313
where oid::regdictionary in ('irish_stem', 'italian_stem');
1414

15-
/*
16-
TODO: uncomment after YQL-18708
1715
select oid, oid::regnamespace from pg_catalog.pg_namespace
1816
where oid::regnamespace in ('public', 'information_schema');
19-
*/
2017

2118
/*
2219
TODO: uncomment after YQL-18711

ydb/library/yql/tests/sql/yt_native_file/part12/canondata/result.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2394,23 +2394,23 @@
23942394
],
23952395
"test.test[pg-regoids-default.txt-Debug]": [
23962396
{
2397-
"checksum": "27c1c2051b551466250bba3a21581078",
2398-
"size": 2150,
2399-
"uri": "https://{canondata_backend}/1903885/617304aadf974b6c0e5180b5a91fdeffa57b46a7/resource.tar.gz#test.test_pg-regoids-default.txt-Debug_/opt.yql"
2397+
"checksum": "e4e672f001b1de0fbe764c37471c9257",
2398+
"size": 2611,
2399+
"uri": "https://{canondata_backend}/1936842/a75e37463ca09039e8afc74312a00834b6c1a897/resource.tar.gz#test.test_pg-regoids-default.txt-Debug_/opt.yql"
24002400
}
24012401
],
24022402
"test.test[pg-regoids-default.txt-Plan]": [
24032403
{
2404-
"checksum": "c75a08990cadfbd737032e6229f34bd2",
2405-
"size": 2175,
2406-
"uri": "https://{canondata_backend}/1903885/617304aadf974b6c0e5180b5a91fdeffa57b46a7/resource.tar.gz#test.test_pg-regoids-default.txt-Plan_/plan.txt"
2404+
"checksum": "7841f32f3b9cc9e0c539c8482b058c78",
2405+
"size": 2588,
2406+
"uri": "https://{canondata_backend}/1936842/a75e37463ca09039e8afc74312a00834b6c1a897/resource.tar.gz#test.test_pg-regoids-default.txt-Plan_/plan.txt"
24072407
}
24082408
],
24092409
"test.test[pg-regoids-default.txt-Results]": [
24102410
{
2411-
"checksum": "728a7658b849d6e054a39838c65e2228",
2412-
"size": 4129,
2413-
"uri": "https://{canondata_backend}/1903885/617304aadf974b6c0e5180b5a91fdeffa57b46a7/resource.tar.gz#test.test_pg-regoids-default.txt-Results_/results.txt"
2411+
"checksum": "20e29a6190d7658116ecafdd4d53b015",
2412+
"size": 5302,
2413+
"uri": "https://{canondata_backend}/1936842/a75e37463ca09039e8afc74312a00834b6c1a897/resource.tar.gz#test.test_pg-regoids-default.txt-Results_/results.txt"
24142414
}
24152415
],
24162416
"test.test[pg-select_agg_expr_projection-default.txt-Debug]": [

0 commit comments

Comments
 (0)