@@ -542,6 +542,17 @@ class TPgTableContent : public TMutableComputationNode<TPgTableContent> {
542
542
};
543
543
544
544
ApplyFillers (AllPgLanguageFillers, Y_ARRAY_SIZE (AllPgLanguageFillers), PgLanguageFillers_);
545
+ } else if (Table_ == " pg_extension" ) {
546
+ static const std::pair<const char *, TPgExtensionFiller> AllPgExtensionFillers[] = {
547
+ {" oid" , [](ui32 oid,const NPg::TExtensionDesc& desc) { return ScalarDatumToPod (ObjectIdGetDatum (oid)); }},
548
+ {" extname" , [](ui32,const NPg::TExtensionDesc& desc) { return PointerDatumToPod ((Datum)MakeFixedString (desc.Name , NAMEDATALEN)); }},
549
+ {" extowner" , [](ui32,const NPg::TExtensionDesc&) { return ScalarDatumToPod (ObjectIdGetDatum (1 )); }},
550
+ {" extnamespace" , [](ui32,const NPg::TExtensionDesc&) { return ScalarDatumToPod (ObjectIdGetDatum (PG_CATALOG_NAMESPACE)); }},
551
+ {" extversion" , [](ui32,const NPg::TExtensionDesc& desc) { return PointerDatumToPod ((Datum)MakeVar (desc.Version )); }},
552
+ {" extrelocatable" , [](ui32,const NPg::TExtensionDesc&) { return ScalarDatumToPod (BoolGetDatum (false )); }},
553
+ };
554
+
555
+ ApplyFillers (AllPgExtensionFillers, Y_ARRAY_SIZE (AllPgExtensionFillers), PgExtensionFillers_);
545
556
}
546
557
} else {
547
558
if (Table_ == " tables" ) {
@@ -927,6 +938,19 @@ class TPgTableContent : public TMutableComputationNode<TPgTableContent> {
927
938
}
928
939
}
929
940
941
+ sysFiller.Fill (items);
942
+ rows.emplace_back (row);
943
+ });
944
+ } else if (Table_ == " pg_extension" ) {
945
+ NPg::EnumExtensions ([&](ui32 oid, const NPg::TExtensionDesc& desc) {
946
+ NUdf::TUnboxedValue* items;
947
+ auto row = compCtx.HolderFactory .CreateDirectArrayHolder (PgExtensionFillers_.size (), items);
948
+ for (ui32 i = 0 ; i < PgExtensionFillers_.size (); ++i) {
949
+ if (PgExtensionFillers_[i]) {
950
+ items[i] = PgExtensionFillers_[i](oid, desc);
951
+ }
952
+ }
953
+
930
954
sysFiller.Fill (items);
931
955
rows.emplace_back (row);
932
956
});
@@ -1026,6 +1050,9 @@ class TPgTableContent : public TMutableComputationNode<TPgTableContent> {
1026
1050
1027
1051
using TPgOperFiller = NUdf::TUnboxedValuePod(*)(const NPg::TOperDesc&);
1028
1052
TVector<TPgOperFiller> PgOperFillers_;
1053
+
1054
+ using TPgExtensionFiller = NUdf::TUnboxedValuePod(*)(ui32,const NPg::TExtensionDesc&);
1055
+ TVector<TPgExtensionFiller> PgExtensionFillers_;
1029
1056
};
1030
1057
1031
1058
class TFunctionCallInfo {
0 commit comments