Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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