aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitaly Stoyan <vvvv@ydb.tech>2024-01-31 10:22:36 +0300
committerGitHub <noreply@github.com>2024-01-31 10:22:36 +0300
commit827a532736dc6a7c9f435060d451b5fba6d577d2 (patch)
tree5530f3e2e45e7c2174a83290f734497d4495f144
parent2ef413e77b8c0cc97847e13af643292fffa8c2bb (diff)
downloadydb-827a532736dc6a7c9f435060d451b5fba6d577d2.tar.gz
init (#1437)
-rw-r--r--ydb/library/yql/parser/pg_catalog/catalog.cpp68
-rw-r--r--ydb/library/yql/parser/pg_catalog/catalog.h32
-rw-r--r--ydb/library/yql/parser/pg_catalog/ut/catalog_consts_ut.cpp25
-rw-r--r--ydb/library/yql/parser/pg_wrapper/comp_factory.cpp61
-rw-r--r--ydb/library/yql/providers/pg/provider/yql_pg_datasource_type_ann.cpp2
-rw-r--r--ydb/library/yql/tests/sql/dq_file/part12/canondata/result.json22
-rw-r--r--ydb/library/yql/tests/sql/dq_file/part14/canondata/result.json22
-rw-r--r--ydb/library/yql/tests/sql/sql2yql/canondata/result.json14
-rw-r--r--ydb/library/yql/tests/sql/suites/pg_catalog/pg_class.sql12
-rw-r--r--ydb/library/yql/tests/sql/suites/pg_catalog/pg_stat_database.sql15
-rw-r--r--ydb/library/yql/tests/sql/yt_native_file/part12/canondata/result.json21
-rw-r--r--ydb/library/yql/tests/sql/yt_native_file/part14/canondata/result.json27
-rw-r--r--ydb/library/yql/tests/sql/yt_native_file/part16/canondata/result.json6
-rw-r--r--ydb/library/yql/tests/sql/yt_native_file/part3/canondata/result.json6
14 files changed, 295 insertions, 38 deletions
diff --git a/ydb/library/yql/parser/pg_catalog/catalog.cpp b/ydb/library/yql/parser/pg_catalog/catalog.cpp
index f0b3f2bbc3..6a96ef4920 100644
--- a/ydb/library/yql/parser/pg_catalog/catalog.cpp
+++ b/ydb/library/yql/parser/pg_catalog/catalog.cpp
@@ -1402,26 +1402,28 @@ struct TCatalog {
"lo_unlink"
}),
StaticTables({
- {"pg_catalog", "pg_type"},
- {"pg_catalog", "pg_database"},
- {"pg_catalog", "pg_tablespace"},
- {"pg_catalog", "pg_shdescription"},
- {"pg_catalog", "pg_trigger"},
- {"pg_catalog", "pg_locks"},
- {"pg_catalog", "pg_stat_gssapi"},
- {"pg_catalog", "pg_inherits"},
- {"pg_catalog", "pg_stat_activity"},
- {"pg_catalog", "pg_timezone_names"},
- {"pg_catalog", "pg_timezone_abbrevs"},
- {"pg_catalog", "pg_tables"},
- {"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"},
+ {{"pg_catalog", "pg_type"}, ERelKind::Relation, TypeRelationOid},
+ {{"pg_catalog", "pg_database"}, ERelKind::Relation, DatabaseRelationOid},
+ {{"pg_catalog", "pg_tablespace"}, ERelKind::Relation, TableSpaceRelationOid},
+ {{"pg_catalog", "pg_shdescription"}, ERelKind::Relation, SharedDescriptionRelationOid},
+ {{"pg_catalog", "pg_trigger"}, ERelKind::Relation, TriggerRelationOid},
+ {{"pg_catalog", "pg_locks"}, ERelKind::View, 10000},
+ {{"pg_catalog", "pg_stat_gssapi"}, ERelKind::View, 10001},
+ {{"pg_catalog", "pg_inherits"}, ERelKind::Relation, InheritsRelationOid},
+ {{"pg_catalog", "pg_stat_activity"}, ERelKind::View, 10002},
+ {{"pg_catalog", "pg_timezone_names"}, ERelKind::View, 10003},
+ {{"pg_catalog", "pg_timezone_abbrevs"}, ERelKind::View, 10004},
+ {{"pg_catalog", "pg_tables"}, ERelKind::View, 10005},
+ {{"pg_catalog", "pg_description"}, ERelKind::Relation, DescriptionRelationOid},
+ {{"pg_catalog", "pg_am"}, ERelKind::Relation, AccessMethodRelationOid},
+ {{"pg_catalog", "pg_namespace"}, ERelKind::Relation, NamespaceRelationOid},
+ {{"pg_catalog", "pg_auth_members"}, ERelKind::Relation, AuthMemRelationOid},
+ {{"pg_catalog", "pg_roles"}, ERelKind::View, 10006},
+ {{"pg_catalog", "pg_stat_database"}, ERelKind::View, 10007},
+ {{"pg_catalog", "pg_class"}, ERelKind::Relation, RelationRelationOid},
+ {{"information_schema", "tables"}, ERelKind::View, 10008},
+ {{"information_schema", "columns"}, ERelKind::View, 10009},
+ {{"information_schema", "table_constraints"}, ERelKind::View, 10010},
}),
AllStaticColumns({
{"pg_catalog", "pg_type", "oid", "oid"},
@@ -1510,6 +1512,24 @@ struct TCatalog {
{"pg_catalog", "pg_roles", "rolsuper", "bool"},
{"pg_catalog", "pg_roles", "rolvaliduntil", "timestamptz"},
+ {"pg_catalog", "pg_stat_database", "datid", "oid"},
+ {"pg_catalog", "pg_stat_database", "blks_hit", "int8"},
+ {"pg_catalog", "pg_stat_database", "blks_read", "int8"},
+ {"pg_catalog", "pg_stat_database", "tup_deleted", "int8"},
+ {"pg_catalog", "pg_stat_database", "tup_fetched", "int8"},
+ {"pg_catalog", "pg_stat_database", "tup_inserted", "int8"},
+ {"pg_catalog", "pg_stat_database", "tup_returned", "int8"},
+ {"pg_catalog", "pg_stat_database", "tup_updated", "int8"},
+ {"pg_catalog", "pg_stat_database", "xact_commit", "int8"},
+ {"pg_catalog", "pg_stat_database", "xact_rollback", "int8"},
+
+ {"pg_catalog", "pg_class", "oid", "oid"},
+ {"pg_catalog", "pg_class", "relispartition", "bool"},
+ {"pg_catalog", "pg_class", "relkind", "char"},
+ {"pg_catalog", "pg_class", "relname", "name"},
+ {"pg_catalog", "pg_class", "relnamespace", "oid"},
+ {"pg_catalog", "pg_class", "relowner", "oid"},
+
{"information_schema", "tables", "table_schema", "name"},
{"information_schema", "tables", "table_name", "name"},
@@ -1523,12 +1543,14 @@ struct TCatalog {
{"information_schema", "table_constraints", "constraint_type", "varchar"},
})
{
+ THashSet<ui32> usedTableOids;
for (const auto& t : StaticTables) {
StaticColumns.insert(std::make_pair(t, TVector<TColumnInfo>()));
+ Y_ENSURE(usedTableOids.insert(t.Oid).first);
}
for (const auto& c: AllStaticColumns) {
- auto tablePtr = StaticColumns.FindPtr(TTableInfo{c.Schema, c.TableName});
+ auto tablePtr = StaticColumns.FindPtr(TTableInfoKey{c.Schema, c.TableName});
Y_ENSURE(tablePtr);
tablePtr->push_back(c);
}
@@ -1740,7 +1762,7 @@ struct TCatalog {
TVector<TTableInfo> StaticTables;
TVector<TColumnInfo> AllStaticColumns;
- THashMap<TTableInfo, TVector<TColumnInfo>> StaticColumns;
+ THashMap<TTableInfoKey, TVector<TColumnInfo>> StaticColumns;
};
bool ValidateArgs(const TVector<ui32>& descArgTypeIds, const TVector<ui32>& argTypeIds) {
@@ -2904,7 +2926,7 @@ const TVector<TTableInfo>& GetStaticTables() {
return catalog.StaticTables;
}
-const THashMap<TTableInfo, TVector<TColumnInfo>>& GetStaticColumns() {
+const THashMap<TTableInfoKey, TVector<TColumnInfo>>& GetStaticColumns() {
const auto& catalog = TCatalog::Instance();
return catalog.StaticColumns;
}
diff --git a/ydb/library/yql/parser/pg_catalog/catalog.h b/ydb/library/yql/parser/pg_catalog/catalog.h
index 357a44eee9..1c4ca8a93b 100644
--- a/ydb/library/yql/parser/pg_catalog/catalog.h
+++ b/ydb/library/yql/parser/pg_catalog/catalog.h
@@ -285,11 +285,16 @@ bool IsCoercible(ui32 fromTypeId, ui32 toTypeId, ECoercionCode coercionType);
inline bool IsArrayType(const TTypeDesc& typeDesc) noexcept {
return typeDesc.ArrayTypeId == typeDesc.TypeId;
}
-struct TTableInfo {
+
+enum class ERelKind : char {
+ Relation = 'r',
+ View = 'v'
+};
+struct TTableInfoKey {
TString Schema;
TString Name;
- bool operator==(const TTableInfo& other) const {
+ bool operator==(const TTableInfoKey& other) const {
return Schema == other.Schema && Name == other.Name;
}
@@ -299,6 +304,23 @@ struct TTableInfo {
}
};
+constexpr ui32 TypeRelationOid = 1247;
+constexpr ui32 DatabaseRelationOid = 1262;
+constexpr ui32 TableSpaceRelationOid = 1213;
+constexpr ui32 SharedDescriptionRelationOid = 2396;
+constexpr ui32 TriggerRelationOid = 2620;
+constexpr ui32 InheritsRelationOid = 2611;
+constexpr ui32 DescriptionRelationOid = 2609;
+constexpr ui32 AccessMethodRelationOid = 2601;
+constexpr ui32 NamespaceRelationOid = 2615;
+constexpr ui32 AuthMemRelationOid = 1261;
+constexpr ui32 RelationRelationOid = 1259;
+
+struct TTableInfo : public TTableInfoKey {
+ ERelKind Kind;
+ ui32 Oid;
+};
+
struct TColumnInfo {
TString Schema;
TString TableName;
@@ -307,7 +329,7 @@ struct TColumnInfo {
};
const TVector<TTableInfo>& GetStaticTables();
-const THashMap<TTableInfo, TVector<TColumnInfo>>& GetStaticColumns();
+const THashMap<TTableInfoKey, TVector<TColumnInfo>>& GetStaticColumns();
}
@@ -322,8 +344,8 @@ inline void Out<NYql::NPg::ECoercionCode>(IOutputStream& o, NYql::NPg::ECoercion
}
template <>
-struct THash<NYql::NPg::TTableInfo> {
- size_t operator ()(const NYql::NPg::TTableInfo& val) const {
+struct THash<NYql::NPg::TTableInfoKey> {
+ size_t operator ()(const NYql::NPg::TTableInfoKey& val) const {
return val.Hash();
}
};
diff --git a/ydb/library/yql/parser/pg_catalog/ut/catalog_consts_ut.cpp b/ydb/library/yql/parser/pg_catalog/ut/catalog_consts_ut.cpp
index 081e0a1ca7..34af3919b6 100644
--- a/ydb/library/yql/parser/pg_catalog/ut/catalog_consts_ut.cpp
+++ b/ydb/library/yql/parser/pg_catalog/ut/catalog_consts_ut.cpp
@@ -3,6 +3,17 @@
extern "C" {
#include "catalog/pg_collation_d.h"
+#include "catalog/pg_type_d.h"
+#include "catalog/pg_database_d.h"
+#include "catalog/pg_tablespace_d.h"
+#include "catalog/pg_shdescription_d.h"
+#include "catalog/pg_trigger_d.h"
+#include "catalog/pg_inherits_d.h"
+#include "catalog/pg_description_d.h"
+#include "catalog/pg_am_d.h"
+#include "catalog/pg_namespace_d.h"
+#include "catalog/pg_auth_members_d.h"
+#include "catalog/pg_class_d.h"
#include "access/stratnum.h"
}
@@ -41,4 +52,18 @@ Y_UNIT_TEST_SUITE(TConstantsTests) {
typeDesc = LookupType("text");
UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, TextOid);
}
+
+ Y_UNIT_TEST(TRelationOidConsts) {
+ UNIT_ASSERT_VALUES_EQUAL(TypeRelationOid, TypeRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(DatabaseRelationOid, DatabaseRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(TableSpaceRelationOid, TableSpaceRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(SharedDescriptionRelationOid, SharedDescriptionRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(TriggerRelationOid, TriggerRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(InheritsRelationOid, InheritsRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(DescriptionRelationOid, DescriptionRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(AccessMethodRelationOid, AccessMethodRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(NamespaceRelationOid, NamespaceRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(AuthMemRelationOid, AuthMemRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(RelationRelationOid, RelationRelationId);
+ }
}
diff --git a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp
index b5d3311fd4..4dd8d5e7e4 100644
--- a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp
+++ b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp
@@ -393,6 +393,32 @@ public:
};
ApplyFillers(AllPgRolesFillers, Y_ARRAY_SIZE(AllPgRolesFillers), PgRolesFillers_);
+ } else if (Table_ == "pg_stat_database") {
+ static const std::pair<const char*, TPgDatabaseStatFiller> AllPgDatabaseStatFillers[] = {
+ {"datid", [](ui32 index) { return ScalarDatumToPod(ObjectIdGetDatum(index ? 3 : 0)); }},
+ {"blks_hit", [](ui32) { return ScalarDatumToPod(Int64GetDatum(0)); }},
+ {"blks_read", [](ui32) { return ScalarDatumToPod(Int64GetDatum(0)); }},
+ {"tup_deleted", [](ui32) { return ScalarDatumToPod(Int64GetDatum(0)); }},
+ {"tup_fetched", [](ui32) { return ScalarDatumToPod(Int64GetDatum(0)); }},
+ {"tup_inserted", [](ui32) { return ScalarDatumToPod(Int64GetDatum(0)); }},
+ {"tup_returned", [](ui32) { return ScalarDatumToPod(Int64GetDatum(0)); }},
+ {"tup_updated", [](ui32) { return ScalarDatumToPod(Int64GetDatum(0)); }},
+ {"xact_commit", [](ui32) { return ScalarDatumToPod(Int64GetDatum(0)); }},
+ {"xact_rollback", [](ui32) { return ScalarDatumToPod(Int64GetDatum(0)); }},
+ };
+
+ ApplyFillers(AllPgDatabaseStatFillers, Y_ARRAY_SIZE(AllPgDatabaseStatFillers), PgDatabaseStatFillers_);
+ } else if (Table_ == "pg_class") {
+ static const std::pair<const char*, TPgClassFiller> AllPgClassFillers[] = {
+ {"oid", [](const NPg::TTableInfo& desc, ui32) { return ScalarDatumToPod(ObjectIdGetDatum(desc.Oid)); }},
+ {"relispartition", [](const NPg::TTableInfo&, ui32) { return ScalarDatumToPod(BoolGetDatum(false)); }},
+ {"relkind", [](const NPg::TTableInfo& desc, ui32) { return ScalarDatumToPod(CharGetDatum(desc.Kind)); }},
+ {"relname", [](const NPg::TTableInfo& desc, ui32) { return PointerDatumToPod((Datum)MakeFixedString(desc.Name, NAMEDATALEN)); }},
+ {"relnamespace", [](const NPg::TTableInfo&, ui32 namespaceOid) { return ScalarDatumToPod(ObjectIdGetDatum(namespaceOid)); }},
+ {"relowner", [](const NPg::TTableInfo&, ui32) { return ScalarDatumToPod(ObjectIdGetDatum(1)); }},
+ };
+
+ ApplyFillers(AllPgClassFillers, Y_ARRAY_SIZE(AllPgClassFillers), PgClassFillers_);
}
} else {
if (Table_ == "tables") {
@@ -424,6 +450,10 @@ public:
fillers[*pos] = func;
}
}
+
+ for (const auto& f : fillers) {
+ Y_ENSURE(f);
+ }
}
NUdf::TUnboxedValuePod DoCalculate(TComputationContext& compCtx) const {
@@ -602,6 +632,32 @@ public:
}
rows.emplace_back(row);
+ } else if (Table_ == "pg_stat_database") {
+ for (ui32 index = 0; index <= 1; ++index) {
+ NUdf::TUnboxedValue* items;
+ auto row = compCtx.HolderFactory.CreateDirectArrayHolder(PgDatabaseStatFillers_.size(), items);
+ for (ui32 i = 0; i < PgDatabaseStatFillers_.size(); ++i) {
+ items[i] = PgDatabaseStatFillers_[i](index);
+ }
+
+ rows.emplace_back(row);
+ }
+ } else if (Table_ == "pg_class") {
+ const auto& tables = NPg::GetStaticTables();
+ THashMap<TString, ui32> namespaces;
+ NPg::EnumNamespace([&](ui32 oid, const NPg::TNamespaceDesc& desc) {
+ namespaces[desc.Name] = oid;
+ });
+
+ for (const auto& t : tables) {
+ NUdf::TUnboxedValue* items;
+ auto row = compCtx.HolderFactory.CreateDirectArrayHolder(PgClassFillers_.size(), items);
+ for (ui32 i = 0; i < PgClassFillers_.size(); ++i) {
+ items[i] = PgClassFillers_[i](t, namespaces[t.Schema]);
+ }
+
+ rows.emplace_back(row);
+ }
}
} else {
if (Table_ == "tables") {
@@ -658,6 +714,8 @@ private:
TVector<TPgAmFiller> PgAmFillers_;
using TPgRolesFiller = NUdf::TUnboxedValuePod(*)();
TVector<TPgRolesFiller> PgRolesFillers_;
+ using TPgDatabaseStatFiller = NUdf::TUnboxedValuePod(*)(ui32 index);
+ TVector<TPgDatabaseStatFiller> PgDatabaseStatFillers_;
struct TDescriptionDesc {
ui32 Objoid = 0;
@@ -675,6 +733,9 @@ private:
using TColumnsFiller = NUdf::TUnboxedValuePod(*)(const NPg::TColumnInfo&);
TVector<TColumnsFiller> ColumnsFillers_;
+
+ using TPgClassFiller = NUdf::TUnboxedValuePod(*)(const NPg::TTableInfo&, ui32 namespaceOid);
+ TVector<TPgClassFiller> PgClassFillers_;
};
class TFunctionCallInfo {
diff --git a/ydb/library/yql/providers/pg/provider/yql_pg_datasource_type_ann.cpp b/ydb/library/yql/providers/pg/provider/yql_pg_datasource_type_ann.cpp
index b3ea99ecb3..aac3069c9b 100644
--- a/ydb/library/yql/providers/pg/provider/yql_pg_datasource_type_ann.cpp
+++ b/ydb/library/yql/providers/pg/provider/yql_pg_datasource_type_ann.cpp
@@ -107,7 +107,7 @@ public:
auto tableName = input->Child(TNode::idx_Table)->Content();
TVector<const TItemExprType*> items;
- auto columnsPtr = NPg::GetStaticColumns().FindPtr(NPg::TTableInfo{ cluster, TString(tableName) });
+ auto columnsPtr = NPg::GetStaticColumns().FindPtr(NPg::TTableInfoKey{ cluster, TString(tableName) });
if (!columnsPtr) {
ctx.AddError(TIssue(ctx.GetPosition(input->Child(TPgReadTable::idx_Table)->Pos()), TStringBuilder() << "Unsupported table: " << tableName));
return TStatus::Error;
diff --git a/ydb/library/yql/tests/sql/dq_file/part12/canondata/result.json b/ydb/library/yql/tests/sql/dq_file/part12/canondata/result.json
index 362222f250..0beceeadf1 100644
--- a/ydb/library/yql/tests/sql/dq_file/part12/canondata/result.json
+++ b/ydb/library/yql/tests/sql/dq_file/part12/canondata/result.json
@@ -2506,6 +2506,28 @@
}
],
"test.test[pg-tpch-q16-default.txt-Results]": [],
+ "test.test[pg_catalog-pg_class-default.txt-Analyze]": [
+ {
+ "checksum": "c1f2d837c3623c81dd596a9877913fb8",
+ "size": 948,
+ "uri": "https://{canondata_backend}/1937367/a0981807726fa8e5aad90985bda23ee6596b1473/resource.tar.gz#test.test_pg_catalog-pg_class-default.txt-Analyze_/plan.txt"
+ }
+ ],
+ "test.test[pg_catalog-pg_class-default.txt-Debug]": [
+ {
+ "checksum": "48c1e7df973ab53841f9705a3a6f1d3e",
+ "size": 549,
+ "uri": "https://{canondata_backend}/1937367/a0981807726fa8e5aad90985bda23ee6596b1473/resource.tar.gz#test.test_pg_catalog-pg_class-default.txt-Debug_/opt.yql_patched"
+ }
+ ],
+ "test.test[pg_catalog-pg_class-default.txt-Plan]": [
+ {
+ "checksum": "c1f2d837c3623c81dd596a9877913fb8",
+ "size": 948,
+ "uri": "https://{canondata_backend}/1937367/a0981807726fa8e5aad90985bda23ee6596b1473/resource.tar.gz#test.test_pg_catalog-pg_class-default.txt-Plan_/plan.txt"
+ }
+ ],
+ "test.test[pg_catalog-pg_class-default.txt-Results]": [],
"test.test[pg_catalog-pg_description_pg_syntax-default.txt-Analyze]": [
{
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
diff --git a/ydb/library/yql/tests/sql/dq_file/part14/canondata/result.json b/ydb/library/yql/tests/sql/dq_file/part14/canondata/result.json
index 6d05ba39c6..1e828d0777 100644
--- a/ydb/library/yql/tests/sql/dq_file/part14/canondata/result.json
+++ b/ydb/library/yql/tests/sql/dq_file/part14/canondata/result.json
@@ -2435,6 +2435,28 @@
}
],
"test.test[pg_catalog-pg_stat_activity-default.txt-Results]": [],
+ "test.test[pg_catalog-pg_stat_database-default.txt-Analyze]": [
+ {
+ "checksum": "c1f2d837c3623c81dd596a9877913fb8",
+ "size": 948,
+ "uri": "https://{canondata_backend}/1936947/960a823a7074bb0a4fc6829f35dc9035ea62bcf1/resource.tar.gz#test.test_pg_catalog-pg_stat_database-default.txt-Analyze_/plan.txt"
+ }
+ ],
+ "test.test[pg_catalog-pg_stat_database-default.txt-Debug]": [
+ {
+ "checksum": "62d4a7970f183dc24931fa2cf712509e",
+ "size": 1205,
+ "uri": "https://{canondata_backend}/1936947/960a823a7074bb0a4fc6829f35dc9035ea62bcf1/resource.tar.gz#test.test_pg_catalog-pg_stat_database-default.txt-Debug_/opt.yql_patched"
+ }
+ ],
+ "test.test[pg_catalog-pg_stat_database-default.txt-Plan]": [
+ {
+ "checksum": "c1f2d837c3623c81dd596a9877913fb8",
+ "size": 948,
+ "uri": "https://{canondata_backend}/1936947/960a823a7074bb0a4fc6829f35dc9035ea62bcf1/resource.tar.gz#test.test_pg_catalog-pg_stat_database-default.txt-Plan_/plan.txt"
+ }
+ ],
+ "test.test[pg_catalog-pg_stat_database-default.txt-Results]": [],
"test.test[pg_catalog-pg_tables-default.txt-Analyze]": [
{
"checksum": "c1f2d837c3623c81dd596a9877913fb8",
diff --git a/ydb/library/yql/tests/sql/sql2yql/canondata/result.json b/ydb/library/yql/tests/sql/sql2yql/canondata/result.json
index 3248f5f6f5..0a281e0830 100644
--- a/ydb/library/yql/tests/sql/sql2yql/canondata/result.json
+++ b/ydb/library/yql/tests/sql/sql2yql/canondata/result.json
@@ -13264,6 +13264,13 @@
"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_class]": [
+ {
+ "checksum": "22ebe252b77b53e39b177ca4c9a7b530",
+ "size": 1075,
+ "uri": "https://{canondata_backend}/1936842/55a7040ab1de9722f14ba790e6f8065314d91717/resource.tar.gz#test_sql2yql.test_pg_catalog-pg_class_/sql.yql"
+ }
+ ],
"test_sql2yql.test[pg_catalog-pg_database]": [
{
"checksum": "3c66358cd738a51ccd0766e18e21fc45",
@@ -13334,6 +13341,13 @@
"uri": "https://{canondata_backend}/1773845/118c740ff9ea824c1b2998c5bad993b2a2276f6e/resource.tar.gz#test_sql2yql.test_pg_catalog-pg_stat_activity_/sql.yql"
}
],
+ "test_sql2yql.test[pg_catalog-pg_stat_database]": [
+ {
+ "checksum": "76a9374e0363e44c5cffffc9d23b8f51",
+ "size": 1346,
+ "uri": "https://{canondata_backend}/1936842/55a7040ab1de9722f14ba790e6f8065314d91717/resource.tar.gz#test_sql2yql.test_pg_catalog-pg_stat_database_/sql.yql"
+ }
+ ],
"test_sql2yql.test[pg_catalog-pg_stat_gssapi]": [
{
"checksum": "618acd0a4c833faffdb13606ed680142",
diff --git a/ydb/library/yql/tests/sql/suites/pg_catalog/pg_class.sql b/ydb/library/yql/tests/sql/suites/pg_catalog/pg_class.sql
new file mode 100644
index 0000000000..85dee35813
--- /dev/null
+++ b/ydb/library/yql/tests/sql/suites/pg_catalog/pg_class.sql
@@ -0,0 +1,12 @@
+--!syntax_pg
+select
+oid,
+relispartition,
+relkind,
+relname,
+relnamespace,
+relowner
+from
+pg_catalog.pg_class
+order by oid
+
diff --git a/ydb/library/yql/tests/sql/suites/pg_catalog/pg_stat_database.sql b/ydb/library/yql/tests/sql/suites/pg_catalog/pg_stat_database.sql
new file mode 100644
index 0000000000..f15ce35f12
--- /dev/null
+++ b/ydb/library/yql/tests/sql/suites/pg_catalog/pg_stat_database.sql
@@ -0,0 +1,15 @@
+--!syntax_pg
+select
+datid,
+blks_hit,
+blks_read,
+tup_deleted
+tup_fetched,
+tup_inserted,
+tup_returned,
+tup_updated,
+xact_commit,
+xact_rollback
+from pg_catalog.pg_stat_database
+order by datid
+
diff --git a/ydb/library/yql/tests/sql/yt_native_file/part12/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part12/canondata/result.json
index 4798254a94..72329873c0 100644
--- a/ydb/library/yql/tests/sql/yt_native_file/part12/canondata/result.json
+++ b/ydb/library/yql/tests/sql/yt_native_file/part12/canondata/result.json
@@ -2346,6 +2346,27 @@
"uri": "https://{canondata_backend}/1942415/14c2050022adcb6379d90c4a2a09abf0847e7643/resource.tar.gz#test.test_pg-tpch-q16-default.txt-Results_/results.txt"
}
],
+ "test.test[pg_catalog-pg_class-default.txt-Debug]": [
+ {
+ "checksum": "8c6db8487a72e41529660d0b7308784a",
+ "size": 491,
+ "uri": "https://{canondata_backend}/1936842/eeab348a87df8efaf5aeed3d4029ae81b7a664e9/resource.tar.gz#test.test_pg_catalog-pg_class-default.txt-Debug_/opt.yql"
+ }
+ ],
+ "test.test[pg_catalog-pg_class-default.txt-Plan]": [
+ {
+ "checksum": "c1f2d837c3623c81dd596a9877913fb8",
+ "size": 948,
+ "uri": "https://{canondata_backend}/1936842/eeab348a87df8efaf5aeed3d4029ae81b7a664e9/resource.tar.gz#test.test_pg_catalog-pg_class-default.txt-Plan_/plan.txt"
+ }
+ ],
+ "test.test[pg_catalog-pg_class-default.txt-Results]": [
+ {
+ "checksum": "21efd805d77c26298a4ad9b043f89501",
+ "size": 7117,
+ "uri": "https://{canondata_backend}/1936842/eeab348a87df8efaf5aeed3d4029ae81b7a664e9/resource.tar.gz#test.test_pg_catalog-pg_class-default.txt-Results_/results.txt"
+ }
+ ],
"test.test[pg_catalog-pg_description_pg_syntax-default.txt-Debug]": [
{
"checksum": "f5c0f9bb9c0050ef6e8a04598c64c39e",
diff --git a/ydb/library/yql/tests/sql/yt_native_file/part14/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part14/canondata/result.json
index 8c739704e0..008915e0e2 100644
--- a/ydb/library/yql/tests/sql/yt_native_file/part14/canondata/result.json
+++ b/ydb/library/yql/tests/sql/yt_native_file/part14/canondata/result.json
@@ -2370,6 +2370,27 @@
"uri": "https://{canondata_backend}/1880306/1ee788a2569716571a36649ae2ceeb626ced8876/resource.tar.gz#test.test_pg_catalog-pg_stat_activity-default.txt-Results_/results.txt"
}
],
+ "test.test[pg_catalog-pg_stat_database-default.txt-Debug]": [
+ {
+ "checksum": "35922c1d421f178640e0fec41ed16535",
+ "size": 1137,
+ "uri": "https://{canondata_backend}/1937367/b877ae676042d7731cf65ea15a0d1c849f001898/resource.tar.gz#test.test_pg_catalog-pg_stat_database-default.txt-Debug_/opt.yql"
+ }
+ ],
+ "test.test[pg_catalog-pg_stat_database-default.txt-Plan]": [
+ {
+ "checksum": "c1f2d837c3623c81dd596a9877913fb8",
+ "size": 948,
+ "uri": "https://{canondata_backend}/1937367/b877ae676042d7731cf65ea15a0d1c849f001898/resource.tar.gz#test.test_pg_catalog-pg_stat_database-default.txt-Plan_/plan.txt"
+ }
+ ],
+ "test.test[pg_catalog-pg_stat_database-default.txt-Results]": [
+ {
+ "checksum": "142888dee7875c91738f780119d39872",
+ "size": 3315,
+ "uri": "https://{canondata_backend}/1937367/b877ae676042d7731cf65ea15a0d1c849f001898/resource.tar.gz#test.test_pg_catalog-pg_stat_database-default.txt-Results_/results.txt"
+ }
+ ],
"test.test[pg_catalog-pg_tables-default.txt-Debug]": [
{
"checksum": "85f7ad11d93163d11c5a12a8df3dec7f",
@@ -2386,9 +2407,9 @@
],
"test.test[pg_catalog-pg_tables-default.txt-Results]": [
{
- "checksum": "5fe341df627412345fb04a78265f2ecc",
- "size": 3314,
- "uri": "https://{canondata_backend}/1936273/e462bdc099ba4dbd155abc458ce19bf37225c228/resource.tar.gz#test.test_pg_catalog-pg_tables-default.txt-Results_/results.txt"
+ "checksum": "60d16f218ef9128bf09b7ca5f897cb80",
+ "size": 3558,
+ "uri": "https://{canondata_backend}/1937367/b877ae676042d7731cf65ea15a0d1c849f001898/resource.tar.gz#test.test_pg_catalog-pg_tables-default.txt-Results_/results.txt"
}
],
"test.test[produce-process_rows_sorted_desc_multi_out--Debug]": [
diff --git a/ydb/library/yql/tests/sql/yt_native_file/part16/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part16/canondata/result.json
index d2dfd25be4..c0469f319c 100644
--- a/ydb/library/yql/tests/sql/yt_native_file/part16/canondata/result.json
+++ b/ydb/library/yql/tests/sql/yt_native_file/part16/canondata/result.json
@@ -1888,9 +1888,9 @@
],
"test.test[pg_catalog-columns-default.txt-Results]": [
{
- "checksum": "86487c14aee284a3fc83c6565a84bd94",
- "size": 16354,
- "uri": "https://{canondata_backend}/1942671/557a92985829819fe7b7623859d0c502cd47d633/resource.tar.gz#test.test_pg_catalog-columns-default.txt-Results_/results.txt"
+ "checksum": "44ccd5b0b5860c824b1a30b80b7e0d76",
+ "size": 19432,
+ "uri": "https://{canondata_backend}/937458/a6f58137da0a8ca89c090ad32af1e24717f5f3fd/resource.tar.gz#test.test_pg_catalog-columns-default.txt-Results_/results.txt"
}
],
"test.test[pragma-config_exec--Debug]": [
diff --git a/ydb/library/yql/tests/sql/yt_native_file/part3/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part3/canondata/result.json
index 2f50701cab..50af8dfec7 100644
--- a/ydb/library/yql/tests/sql/yt_native_file/part3/canondata/result.json
+++ b/ydb/library/yql/tests/sql/yt_native_file/part3/canondata/result.json
@@ -1671,9 +1671,9 @@
],
"test.test[pg_catalog-tables-default.txt-Results]": [
{
- "checksum": "0254359781104493233a2f1c10874943",
- "size": 3317,
- "uri": "https://{canondata_backend}/1931696/d280ec2ad056c3381e3f7b0de5e4312affb37367/resource.tar.gz#test.test_pg_catalog-tables-default.txt-Results_/results.txt"
+ "checksum": "0802f73d2e138331a21a8e28e449f1ad",
+ "size": 3561,
+ "uri": "https://{canondata_backend}/1936842/7e2d3c571d9290f71a93312d3db026a5f63cb61d/resource.tar.gz#test.test_pg_catalog-tables-default.txt-Results_/results.txt"
}
],
"test.test[produce-process_row_and_columns-default.txt-Debug]": [