Skip to content

Commit

Permalink
YQL-17348 pg_auth_members, YQL-17351 pg_roles (#1418)
Browse files Browse the repository at this point in the history
* init

* style
  • Loading branch information
vitstn authored Jan 30, 2024
1 parent 9de503c commit f136fc7
Show file tree
Hide file tree
Showing 12 changed files with 199 additions and 9 deletions.
20 changes: 20 additions & 0 deletions ydb/library/yql/parser/pg_catalog/catalog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1417,6 +1417,8 @@ struct TCatalog {
{"pg_catalog", "pg_description"},
{"pg_catalog", "pg_am"},
{"pg_catalog", "pg_namespace"},
{"pg_catalog", "pg_auth_members"},
{"pg_catalog", "pg_roles"},
{"information_schema", "tables"},
{"information_schema", "columns"},
{"information_schema", "table_constraints"},
Expand Down Expand Up @@ -1490,6 +1492,24 @@ struct TCatalog {
{"pg_catalog", "pg_namespace", "nspname", "name"},
{"pg_catalog", "pg_namespace", "oid", "oid"},

{"pg_catalog", "pg_auth_members", "roleid", "oid"},
{"pg_catalog", "pg_auth_members", "member", "oid"},
{"pg_catalog", "pg_auth_members", "grantor", "oid"},
{"pg_catalog", "pg_auth_members", "admin_option", "bool"},

{"pg_catalog", "pg_roles", "rolname", "name"},
{"pg_catalog", "pg_roles", "oid", "oid"},
{"pg_catalog", "pg_roles", "rolbypassrls", "bool"},
{"pg_catalog", "pg_roles", "rolcanlogin", "bool"},
{"pg_catalog", "pg_roles", "rolconfig", "_text"},
{"pg_catalog", "pg_roles", "rolconnlimit", "int4"},
{"pg_catalog", "pg_roles", "rolcreatedb", "bool"},
{"pg_catalog", "pg_roles", "rolcreaterole", "bool"},
{"pg_catalog", "pg_roles", "rolinherit", "bool"},
{"pg_catalog", "pg_roles", "rolreplication", "bool"},
{"pg_catalog", "pg_roles", "rolsuper", "bool"},
{"pg_catalog", "pg_roles", "rolvaliduntil", "timestamptz"},

{"information_schema", "tables", "table_schema", "name"},
{"information_schema", "tables", "table_name", "name"},

Expand Down
45 changes: 45 additions & 0 deletions ydb/library/yql/parser/pg_wrapper/comp_factory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,20 @@ const MemoryContextMethods MkqlMethods = {
#endif
};

Datum MakeArrayOfText(const TVector<TString>& arr) {
TVector<Datum> elems(arr.size());
for (size_t i = 0; i < elems.size(); ++i) {
elems[i] = (Datum)MakeVar(arr[i]);
}

auto ret = construct_array(elems.data(), (int)arr.size(), TEXTOID, -1, false, 'i');
for (size_t i = 0; i < elems.size(); ++i) {
pfree((void*)elems[i]);
}

return (Datum)ret;
}

class TPgConst : public TMutableComputationNode<TPgConst> {
typedef TMutableComputationNode<TPgConst> TBaseComputation;
public:
Expand Down Expand Up @@ -358,6 +372,27 @@ class TPgTableContent : public TMutableComputationNode<TPgTableContent> {
};

ApplyFillers(AllPgTablesFillers, Y_ARRAY_SIZE(AllPgTablesFillers), PgTablesFillers_);
} else if (Table_ == "pg_roles") {
static const std::pair<const char*, TPgRolesFiller> AllPgRolesFillers[] = {
{"rolname", []() { return PointerDatumToPod((Datum)MakeFixedString("postgres", NAMEDATALEN)); }},
{"oid", []() { return ScalarDatumToPod(ObjectIdGetDatum(1)); }},
{"rolbypassrls", []() { return ScalarDatumToPod(BoolGetDatum(true)); }},
{"rolsuper", []() { return ScalarDatumToPod(BoolGetDatum(true)); }},
{"rolinherit", []() { return ScalarDatumToPod(BoolGetDatum(true)); }},
{"rolcreaterole", []() { return ScalarDatumToPod(BoolGetDatum(true)); }},
{"rolcreatedb", []() { return ScalarDatumToPod(BoolGetDatum(true)); }},
{"rolcanlogin", []() { return ScalarDatumToPod(BoolGetDatum(true)); }},
{"rolreplication", []() { return ScalarDatumToPod(BoolGetDatum(true)); }},
{"rolconnlimit", []() { return ScalarDatumToPod(Int32GetDatum(-1)); }},
{"rolvaliduntil", []() { return NUdf::TUnboxedValuePod(); }},
{"rolconfig", []() { return PointerDatumToPod(MakeArrayOfText({
"search_path=public",
"default_transaction_isolation=serializable",
"standard_conforming_strings=on",
})); }},
};

ApplyFillers(AllPgRolesFillers, Y_ARRAY_SIZE(AllPgRolesFillers), PgRolesFillers_);
}
} else {
if (Table_ == "tables") {
Expand Down Expand Up @@ -559,6 +594,14 @@ class TPgTableContent : public TMutableComputationNode<TPgTableContent> {

rows.emplace_back(row);
}
} else if (Table_ == "pg_roles") {
NUdf::TUnboxedValue* items;
auto row = compCtx.HolderFactory.CreateDirectArrayHolder(PgRolesFillers_.size(), items);
for (ui32 i = 0; i < PgRolesFillers_.size(); ++i) {
items[i] = PgRolesFillers_[i]();
}

rows.emplace_back(row);
}
} else {
if (Table_ == "tables") {
Expand Down Expand Up @@ -613,6 +656,8 @@ class TPgTableContent : public TMutableComputationNode<TPgTableContent> {
TVector<TPgNamespaceFiller> PgNamespaceFillers_;
using TPgAmFiller = NUdf::TUnboxedValuePod(*)(const NPg::TAmDesc&);
TVector<TPgAmFiller> PgAmFillers_;
using TPgRolesFiller = NUdf::TUnboxedValuePod(*)();
TVector<TPgRolesFiller> PgRolesFillers_;

struct TDescriptionDesc {
ui32 Objoid = 0;
Expand Down
22 changes: 22 additions & 0 deletions ydb/library/yql/tests/sql/dq_file/part11/canondata/result.json
Original file line number Diff line number Diff line change
Expand Up @@ -2058,6 +2058,28 @@
}
],
"test.test[pg-tpch-q19-default.txt-Results]": [],
"test.test[pg_catalog-pg_roles-default.txt-Analyze]": [
{
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
"size": 948,
"uri": "https://{canondata_backend}/1942671/18f32d5eb8ab2aab65012dda63f9cfd635ed3680/resource.tar.gz#test.test_pg_catalog-pg_roles-default.txt-Analyze_/plan.txt"
}
],
"test.test[pg_catalog-pg_roles-default.txt-Debug]": [
{
"checksum": "2b3e29957c8a5bac294b21ccb291c57f",
"size": 645,
"uri": "https://{canondata_backend}/1942671/18f32d5eb8ab2aab65012dda63f9cfd635ed3680/resource.tar.gz#test.test_pg_catalog-pg_roles-default.txt-Debug_/opt.yql_patched"
}
],
"test.test[pg_catalog-pg_roles-default.txt-Plan]": [
{
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
"size": 948,
"uri": "https://{canondata_backend}/1942671/18f32d5eb8ab2aab65012dda63f9cfd635ed3680/resource.tar.gz#test.test_pg_catalog-pg_roles-default.txt-Plan_/plan.txt"
}
],
"test.test[pg_catalog-pg_roles-default.txt-Results]": [],
"test.test[produce-process_with_lambda-default.txt-Analyze]": [
{
"checksum": "ebe34f5d2b86ce7954a161dc02a783aa",
Expand Down
22 changes: 22 additions & 0 deletions ydb/library/yql/tests/sql/dq_file/part17/canondata/result.json
Original file line number Diff line number Diff line change
Expand Up @@ -2069,6 +2069,28 @@
}
],
"test.test[pg-wide_top_sort--Results]": [],
"test.test[pg_catalog-pg_auth_members-default.txt-Analyze]": [
{
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
"size": 948,
"uri": "https://{canondata_backend}/1784826/fe2bef548a55eb11e26daaded455ba74fda33a1b/resource.tar.gz#test.test_pg_catalog-pg_auth_members-default.txt-Analyze_/plan.txt"
}
],
"test.test[pg_catalog-pg_auth_members-default.txt-Debug]": [
{
"checksum": "89087bb5c866532507e766caadeb1947",
"size": 462,
"uri": "https://{canondata_backend}/1784826/fe2bef548a55eb11e26daaded455ba74fda33a1b/resource.tar.gz#test.test_pg_catalog-pg_auth_members-default.txt-Debug_/opt.yql_patched"
}
],
"test.test[pg_catalog-pg_auth_members-default.txt-Plan]": [
{
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
"size": 948,
"uri": "https://{canondata_backend}/1784826/fe2bef548a55eb11e26daaded455ba74fda33a1b/resource.tar.gz#test.test_pg_catalog-pg_auth_members-default.txt-Plan_/plan.txt"
}
],
"test.test[pg_catalog-pg_auth_members-default.txt-Results]": [],
"test.test[pg_catalog-pg_timezone_names-default.txt-Analyze]": [
{
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
Expand Down
14 changes: 14 additions & 0 deletions ydb/library/yql/tests/sql/sql2yql/canondata/result.json
Original file line number Diff line number Diff line change
Expand Up @@ -13257,6 +13257,13 @@
"uri": "https://{canondata_backend}/1900335/4d293a21f9bd1b76eb022a05e776cb2a96e3a5de/resource.tar.gz#test_sql2yql.test_pg_catalog-pg_am_pg_syntax_/sql.yql"
}
],
"test_sql2yql.test[pg_catalog-pg_auth_members]": [
{
"checksum": "e87d30ebc286e1af83619ff895c8d3ad",
"size": 868,
"uri": "https://{canondata_backend}/1942671/97ffbf971de6e6c2db7e871e5dfde6d17befe266/resource.tar.gz#test_sql2yql.test_pg_catalog-pg_auth_members_/sql.yql"
}
],
"test_sql2yql.test[pg_catalog-pg_database]": [
{
"checksum": "3c66358cd738a51ccd0766e18e21fc45",
Expand Down Expand Up @@ -13292,6 +13299,13 @@
"uri": "https://{canondata_backend}/1900335/4d293a21f9bd1b76eb022a05e776cb2a96e3a5de/resource.tar.gz#test_sql2yql.test_pg_catalog-pg_namespace_pg_syntax_/sql.yql"
}
],
"test_sql2yql.test[pg_catalog-pg_roles]": [
{
"checksum": "132648e5428703bb0329f35ed030555c",
"size": 1561,
"uri": "https://{canondata_backend}/1942671/97ffbf971de6e6c2db7e871e5dfde6d17befe266/resource.tar.gz#test_sql2yql.test_pg_catalog-pg_roles_/sql.yql"
}
],
"test_sql2yql.test[pg_catalog-pg_set_config]": [
{
"checksum": "0b00c0ffc35339caa3a22beb1e12d9af",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
--!syntax_pg
select
roleid,
member,
grantor,
admin_option
from pg_catalog.pg_auth_members

17 changes: 17 additions & 0 deletions ydb/library/yql/tests/sql/suites/pg_catalog/pg_roles.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--!syntax_pg
select
oid,
rolbypassrls,
rolcanlogin,
rolconfig,
rolconnlimit,
rolcreatedb,
rolcreaterole,
rolinherit,
rolname,
rolreplication,
rolsuper,
rolvaliduntil
from pg_catalog.pg_roles
order by oid

Original file line number Diff line number Diff line change
Expand Up @@ -1840,6 +1840,27 @@
"uri": "https://{canondata_backend}/1937027/642fd2ff53bdb0fed32ca89598d70c9c5848ac20/resource.tar.gz#test.test_pg-tpch-q19-default.txt-Results_/results.txt"
}
],
"test.test[pg_catalog-pg_roles-default.txt-Debug]": [
{
"checksum": "d5287e3a68ac9d7422c95bad2e0fcdff",
"size": 587,
"uri": "https://{canondata_backend}/1942671/ba1b384ae189e43a41610dd3346b04832beabd4c/resource.tar.gz#test.test_pg_catalog-pg_roles-default.txt-Debug_/opt.yql"
}
],
"test.test[pg_catalog-pg_roles-default.txt-Plan]": [
{
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
"size": 948,
"uri": "https://{canondata_backend}/1942671/ba1b384ae189e43a41610dd3346b04832beabd4c/resource.tar.gz#test.test_pg_catalog-pg_roles-default.txt-Plan_/plan.txt"
}
],
"test.test[pg_catalog-pg_roles-default.txt-Results]": [
{
"checksum": "bec9b807ec5e51094ba20c22b9e687b2",
"size": 4018,
"uri": "https://{canondata_backend}/1942671/ba1b384ae189e43a41610dd3346b04832beabd4c/resource.tar.gz#test.test_pg_catalog-pg_roles-default.txt-Results_/results.txt"
}
],
"test.test[produce-process_with_lambda-default.txt-Debug]": [
{
"checksum": "57b040e7126bb73a5732c185709e1728",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2386,9 +2386,9 @@
],
"test.test[pg_catalog-pg_tables-default.txt-Results]": [
{
"checksum": "184cdb7b88a0cbc27eab10f27a1f9594",
"size": 3071,
"uri": "https://{canondata_backend}/1773845/2d08ad134994d3e36dc49c3a759a1fb95cec5e61/resource.tar.gz#test.test_pg_catalog-pg_tables-default.txt-Results_/results.txt"
"checksum": "5fe341df627412345fb04a78265f2ecc",
"size": 3314,
"uri": "https://{canondata_backend}/1936273/e462bdc099ba4dbd155abc458ce19bf37225c228/resource.tar.gz#test.test_pg_catalog-pg_tables-default.txt-Results_/results.txt"
}
],
"test.test[produce-process_rows_sorted_desc_multi_out--Debug]": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1888,9 +1888,9 @@
],
"test.test[pg_catalog-columns-default.txt-Results]": [
{
"checksum": "490a1e0d0509eec4920379998de15566",
"size": 13320,
"uri": "https://{canondata_backend}/1814674/d705af5d4baa19963255001d314ce2ac75be9a4a/resource.tar.gz#test.test_pg_catalog-columns-default.txt-Results_/results.txt"
"checksum": "86487c14aee284a3fc83c6565a84bd94",
"size": 16354,
"uri": "https://{canondata_backend}/1942671/557a92985829819fe7b7623859d0c502cd47d633/resource.tar.gz#test.test_pg_catalog-columns-default.txt-Results_/results.txt"
}
],
"test.test[pragma-config_exec--Debug]": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1758,6 +1758,27 @@
"uri": "https://{canondata_backend}/1923547/68f2fa8e051f31489bd496c183d28c4abddf9f68/resource.tar.gz#test.test_pg-wide_top_sort--Results_/results.txt"
}
],
"test.test[pg_catalog-pg_auth_members-default.txt-Debug]": [
{
"checksum": "b9e488d1c0e8e61af71e3a3e23ec1a82",
"size": 406,
"uri": "https://{canondata_backend}/1937367/c23590248e6f206ff1c4e65a8fd7d146beaddac2/resource.tar.gz#test.test_pg_catalog-pg_auth_members-default.txt-Debug_/opt.yql"
}
],
"test.test[pg_catalog-pg_auth_members-default.txt-Plan]": [
{
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
"size": 948,
"uri": "https://{canondata_backend}/1937367/c23590248e6f206ff1c4e65a8fd7d146beaddac2/resource.tar.gz#test.test_pg_catalog-pg_auth_members-default.txt-Plan_/plan.txt"
}
],
"test.test[pg_catalog-pg_auth_members-default.txt-Results]": [
{
"checksum": "996c8b0bf77e8ebd2c81587ec0ce765b",
"size": 1356,
"uri": "https://{canondata_backend}/1937367/c23590248e6f206ff1c4e65a8fd7d146beaddac2/resource.tar.gz#test.test_pg_catalog-pg_auth_members-default.txt-Results_/results.txt"
}
],
"test.test[pg_catalog-pg_timezone_names-default.txt-Debug]": [
{
"checksum": "9556fc60b3df570c33b659d305caabb8",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1671,9 +1671,9 @@
],
"test.test[pg_catalog-tables-default.txt-Results]": [
{
"checksum": "5f1de0e7b083d586bf8fe01f1669949f",
"size": 3074,
"uri": "https://{canondata_backend}/1880306/737f33daf0420bb9e30f0173cda634b4738e62c0/resource.tar.gz#test.test_pg_catalog-tables-default.txt-Results_/results.txt"
"checksum": "0254359781104493233a2f1c10874943",
"size": 3317,
"uri": "https://{canondata_backend}/1931696/d280ec2ad056c3381e3f7b0de5e4312affb37367/resource.tar.gz#test.test_pg_catalog-tables-default.txt-Results_/results.txt"
}
],
"test.test[produce-process_row_and_columns-default.txt-Debug]": [
Expand Down

0 comments on commit f136fc7

Please sign in to comment.