Skip to content

Commit 1b4e78d

Browse files
authored
Merge 3810504 into 6f1f544
2 parents 6f1f544 + 3810504 commit 1b4e78d

File tree

6 files changed

+117
-0
lines changed

6 files changed

+117
-0
lines changed

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

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ extern "C" {
99
#include "catalog/pg_proc.h"
1010
#include "catalog/pg_type.h"
1111
#include "catalog/pg_type_d.h"
12+
#include "catalog/pg_authid.h"
1213
#include "access/htup_details.h"
1314
}
1415

@@ -63,6 +64,7 @@ struct TSysCache {
6364
InitializeProcs();
6465
InitializeTypes();
6566
InitializeDatabase();
67+
InitializeAuthId();
6668
Arena.Release();
6769
}
6870

@@ -267,6 +269,54 @@ struct TSysCache {
267269
map->emplace(key, h);
268270
}
269271
}
272+
273+
void InitializeAuthId() {
274+
auto& map = Maps[AUTHOID] = std::make_unique<TSysCacheHashMap>(0, OidHasher1, OidEquals1);
275+
TupleDesc tupleDesc = CreateTemplateTupleDesc(Natts_pg_authid);
276+
FillAttr(tupleDesc, Anum_pg_authid_oid, OIDOID);
277+
FillAttr(tupleDesc, Anum_pg_authid_rolname, NAMEOID);
278+
FillAttr(tupleDesc, Anum_pg_authid_rolsuper, BOOLOID);
279+
FillAttr(tupleDesc, Anum_pg_authid_rolinherit, BOOLOID);
280+
FillAttr(tupleDesc, Anum_pg_authid_rolcreaterole, BOOLOID);
281+
FillAttr(tupleDesc, Anum_pg_authid_rolcreatedb, BOOLOID);
282+
FillAttr(tupleDesc, Anum_pg_authid_rolcanlogin, BOOLOID);
283+
FillAttr(tupleDesc, Anum_pg_authid_rolreplication, BOOLOID);
284+
FillAttr(tupleDesc, Anum_pg_authid_rolbypassrls, BOOLOID);
285+
FillAttr(tupleDesc, Anum_pg_authid_rolconnlimit, INT4OID);
286+
FillAttr(tupleDesc, Anum_pg_authid_rolpassword, TEXTOID);
287+
FillAttr(tupleDesc, Anum_pg_authid_rolvaliduntil, TIMESTAMPTZOID);
288+
auto key = THeapTupleKey(1, 0, 0, 0);
289+
290+
const char* rolname = "postgres";
291+
const ui32 oid = 1;
292+
Datum values[Natts_pg_authid];
293+
bool nulls[Natts_pg_authid];
294+
Zero(values);
295+
std::fill_n(nulls, Natts_pg_authid, true);
296+
FillDatum(Natts_pg_authid, values, nulls, Anum_pg_authid_oid, (Datum)oid);
297+
FillDatum(Natts_pg_authid, values, nulls, Anum_pg_authid_rolname, (Datum)MakeFixedString(rolname, NAMEDATALEN));
298+
FillDatum(Natts_pg_authid, values, nulls, Anum_pg_authid_rolsuper, BoolGetDatum(true));
299+
FillDatum(Natts_pg_authid, values, nulls, Anum_pg_authid_rolinherit, BoolGetDatum(true));
300+
FillDatum(Natts_pg_authid, values, nulls, Anum_pg_authid_rolcreaterole, BoolGetDatum(true));
301+
FillDatum(Natts_pg_authid, values, nulls, Anum_pg_authid_rolcreatedb, BoolGetDatum(true));
302+
FillDatum(Natts_pg_authid, values, nulls, Anum_pg_authid_rolcanlogin, BoolGetDatum(true));
303+
FillDatum(Natts_pg_authid, values, nulls, Anum_pg_authid_rolreplication, BoolGetDatum(true));
304+
FillDatum(Natts_pg_authid, values, nulls, Anum_pg_authid_rolbypassrls, BoolGetDatum(true));
305+
FillDatum(Natts_pg_authid, values, nulls, Anum_pg_authid_rolconnlimit, Int32GetDatum(-1));
306+
HeapTuple h = heap_form_tuple(tupleDesc, values, nulls);
307+
auto row = (Form_pg_authid) GETSTRUCT(h);
308+
Y_ENSURE(row->oid == oid);
309+
Y_ENSURE(strcmp(NameStr(row->rolname), rolname) == 0);
310+
Y_ENSURE(row->rolsuper);
311+
Y_ENSURE(row->rolinherit);
312+
Y_ENSURE(row->rolcreaterole);
313+
Y_ENSURE(row->rolcreatedb);
314+
Y_ENSURE(row->rolcanlogin);
315+
Y_ENSURE(row->rolreplication);
316+
Y_ENSURE(row->rolbypassrls);
317+
Y_ENSURE(row->rolconnlimit == -1);
318+
map->emplace(key, h);
319+
}
270320
};
271321

272322
}

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2518,6 +2518,28 @@
25182518
}
25192519
],
25202520
"test.test[pg-tpch-q04-default.txt-Results]": [],
2521+
"test.test[pg_catalog-pg_get_userbyid-default.txt-Analyze]": [
2522+
{
2523+
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
2524+
"size": 948,
2525+
"uri": "https://{canondata_backend}/1942525/71aa87e8531eaa616ea40214f4172330acf1be1c/resource.tar.gz#test.test_pg_catalog-pg_get_userbyid-default.txt-Analyze_/plan.txt"
2526+
}
2527+
],
2528+
"test.test[pg_catalog-pg_get_userbyid-default.txt-Debug]": [
2529+
{
2530+
"checksum": "eb190e413329d39ffbf2c4e6f827efce",
2531+
"size": 770,
2532+
"uri": "https://{canondata_backend}/1942525/71aa87e8531eaa616ea40214f4172330acf1be1c/resource.tar.gz#test.test_pg_catalog-pg_get_userbyid-default.txt-Debug_/opt.yql_patched"
2533+
}
2534+
],
2535+
"test.test[pg_catalog-pg_get_userbyid-default.txt-Plan]": [
2536+
{
2537+
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
2538+
"size": 948,
2539+
"uri": "https://{canondata_backend}/1942525/71aa87e8531eaa616ea40214f4172330acf1be1c/resource.tar.gz#test.test_pg_catalog-pg_get_userbyid-default.txt-Plan_/plan.txt"
2540+
}
2541+
],
2542+
"test.test[pg_catalog-pg_get_userbyid-default.txt-Results]": [],
25212543
"test.test[pragma-file-default.txt-Analyze]": [
25222544
{
25232545
"checksum": "68782d7083169e0f53eb8f34e03cbbd4",

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2407,6 +2407,20 @@
24072407
"uri": "https://{canondata_backend}/1923547/94f377eaa1d93890e1345ac4940cc6fa07bddd4f/resource.tar.gz#test.test_pg_catalog-pg_database-default.txt-Plan_/plan.txt"
24082408
}
24092409
],
2410+
"test.test[pg_catalog-pg_get_userbyid-default.txt-Debug]": [
2411+
{
2412+
"checksum": "09d14a7b7818dcaa23fbaaaf858be25e",
2413+
"size": 769,
2414+
"uri": "https://{canondata_backend}/1784826/664a8fd8dece5fbba1057a5f4bdc597c2c7b2e59/resource.tar.gz#test.test_pg_catalog-pg_get_userbyid-default.txt-Debug_/opt.yql_patched"
2415+
}
2416+
],
2417+
"test.test[pg_catalog-pg_get_userbyid-default.txt-Plan]": [
2418+
{
2419+
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
2420+
"size": 948,
2421+
"uri": "https://{canondata_backend}/1784826/664a8fd8dece5fbba1057a5f4bdc597c2c7b2e59/resource.tar.gz#test.test_pg_catalog-pg_get_userbyid-default.txt-Plan_/plan.txt"
2422+
}
2423+
],
24102424
"test.test[pg_catalog-pg_timezone_abbrevs-default.txt-Debug]": [
24112425
{
24122426
"checksum": "941506f7f5f9f12223dbc2b0b0a2b94e",

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13341,6 +13341,13 @@
1334113341
"uri": "https://{canondata_backend}/1871002/aa5733774deffaee951006652c15a43754548f46/resource.tar.gz#test_sql2yql.test_pg_catalog-pg_description_pg_syntax_/sql.yql"
1334213342
}
1334313343
],
13344+
"test_sql2yql.test[pg_catalog-pg_get_userbyid]": [
13345+
{
13346+
"checksum": "7a48194bd2884f51ddd8c9ef1eea6b31",
13347+
"size": 797,
13348+
"uri": "https://{canondata_backend}/1880306/d434ed6028e0bff191bc4880f401a36e428f16a2/resource.tar.gz#test_sql2yql.test_pg_catalog-pg_get_userbyid_/sql.yql"
13349+
}
13350+
],
1334413351
"test_sql2yql.test[pg_catalog-pg_inherits]": [
1334513352
{
1334613353
"checksum": "9e2b5f69bd2bc691faba1a97058d4358",
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
--!syntax_pg
2+
select pg_get_userbyid(datdba) from pg_catalog.pg_database where datname = 'postgres'
3+

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2369,6 +2369,27 @@
23692369
"uri": "https://{canondata_backend}/1871002/505298b8553889a63710feb42e89279b206c3fb9/resource.tar.gz#test.test_pg-tpch-q04-default.txt-Results_/results.txt"
23702370
}
23712371
],
2372+
"test.test[pg_catalog-pg_get_userbyid-default.txt-Debug]": [
2373+
{
2374+
"checksum": "6ffcffb3d90a68445dc0ad7a2e2afa6f",
2375+
"size": 714,
2376+
"uri": "https://{canondata_backend}/1936842/e96f04cce8659030571e528019b2cca417350dee/resource.tar.gz#test.test_pg_catalog-pg_get_userbyid-default.txt-Debug_/opt.yql"
2377+
}
2378+
],
2379+
"test.test[pg_catalog-pg_get_userbyid-default.txt-Plan]": [
2380+
{
2381+
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
2382+
"size": 948,
2383+
"uri": "https://{canondata_backend}/1936842/e96f04cce8659030571e528019b2cca417350dee/resource.tar.gz#test.test_pg_catalog-pg_get_userbyid-default.txt-Plan_/plan.txt"
2384+
}
2385+
],
2386+
"test.test[pg_catalog-pg_get_userbyid-default.txt-Results]": [
2387+
{
2388+
"checksum": "aa6447f2d475400b4feb2f1cab4a5a31",
2389+
"size": 677,
2390+
"uri": "https://{canondata_backend}/1936842/e96f04cce8659030571e528019b2cca417350dee/resource.tar.gz#test.test_pg_catalog-pg_get_userbyid-default.txt-Results_/results.txt"
2391+
}
2392+
],
23722393
"test.test[pragma-file-default.txt-Debug]": [
23732394
{
23742395
"checksum": "a10a5f8f497053c06dd6147b47a08a5f",

0 commit comments

Comments
 (0)