System Catalog Schema#
The Postgres pg_catalog schema
provides access to a variety of database metadata useful for inspecting your database and
also used by database tooling.
Doltgres vends the pg_catalog system catalog tables for compatibility with clients and libraries. Some tables contain no rows because the schema entities or configuration settings they model are unsupported or meaningless to the Doltgres server. Such empty tables are designated with ❌.
All tables and views from Postgres’s pg_catalog exist with the correct schema. In the
tables below, the “Populated” column indicates how complete each relation’s data is:
- ✅ means the relation contains substantially correct information; any limitations are described in the notes.
- 🟠 means the relation contains data, but has major gaps or stub values, described in the notes.
- ❌ means the relation exists with the correct schema but contains no rows.
If you need support for pg_catalog metadata that is available in Postgres, but not yet
available in Doltgres, please
open a GitHub issue to let us know what
you need.
Tables#
| Table | Populated | Notes and limitations |
|---|---|---|
| pg_aggregate | ❌ | |
| pg_am | ✅ | Lists the standard Postgres access methods, though only btree indexes can be created |
| pg_amop | ❌ | |
| pg_amproc | ❌ | |
| pg_attrdef | ✅ | Lists column default expressions; the adbin node-tree column is not populated |
| pg_attribute | ✅ | Lists columns for all relations; ACL and options columns are defaulted |
| pg_auth_members | ✅ | Lists role memberships with grantor and admin option |
| pg_authid | ✅ | Lists all roles and their attributes |
| pg_cast | 🟠 | Lists user-created casts only; the built-in casts that ship with Postgres are not included |
| pg_class | ✅ | Lists tables, indexes, views, and sequences; some storage-related columns (relam, relacl, reloptions, etc.) are defaulted |
| pg_collation | ✅ | Built-in collations only; collation values are approximations since Doltgres does not yet apply collations |
| pg_constraint | ✅ | Primary key, unique, check, and foreign key constraints; exclusion constraints are not supported |
| pg_conversion | ❌ | |
| pg_database | ✅ | Lists all databases; collation and ACL columns are defaulted |
| pg_db_role_setting | ❌ | |
| pg_default_acl | ❌ | |
| pg_depend | 🟠 | Only sequence-to-column and column-default dependencies are emitted; view, constraint, index, and other dependency kinds are missing |
| pg_description | ❌ | |
| pg_enum | ✅ | Lists labels for all user-created enum types |
| pg_event_trigger | ❌ | |
| pg_extension | ✅ | Lists installed extensions; the extension owner is not tracked |
| pg_foreign_data_wrapper | ❌ | |
| pg_foreign_server | ❌ | |
| pg_foreign_table | ❌ | |
| pg_index | ✅ | Lists all indexes; expression and predicate node-tree columns are not populated |
| pg_inherits | ❌ | |
| pg_init_privs | ❌ | |
| pg_language | ✅ | Lists the internal, c, sql, and plpgsql languages; owner and handler function references are NULL |
| pg_largeobject | ❌ | |
| pg_largeobject_metadata | ❌ | |
| pg_namespace | ✅ | Lists all schemas; owner and ACL columns are not populated |
| pg_opclass | ✅ | btree and hash operator classes only; gin, gist, brin, and spgist classes are not included |
| pg_operator | ❌ | |
| pg_opfamily | ✅ | btree and hash operator families only; gin, gist, brin, and spgist families are not included |
| pg_parameter_acl | ❌ | |
| pg_partitioned_table | ❌ | |
| pg_policy | ❌ | |
| pg_proc | 🟠 | Lists user-created functions and procedures; the built-in functions that ship with Postgres are not included |
| pg_publication | ❌ | |
| pg_publication_namespace | ❌ | |
| pg_publication_rel | ❌ | |
| pg_range | ❌ | |
| pg_replication_origin | ❌ | |
| pg_rewrite | 🟠 | Contains a rule entry per view, but the rule definition (ev_action) is a placeholder |
| pg_seclabel | ❌ | |
| pg_sequence | ✅ | Lists all sequences with their full parameters |
| pg_shdepend | ❌ | |
| pg_shdescription | ❌ | |
| pg_shseclabel | ❌ | |
| pg_statistic | ❌ | |
| pg_statistic_ext | ❌ | |
| pg_statistic_ext_data | ❌ | |
| pg_subscription | ❌ | |
| pg_subscription_rel | ❌ | |
| pg_tablespace | ✅ | Contains the standard pg_default and pg_global entries; tablespaces are not otherwise supported |
| pg_transform | ❌ | |
| pg_trigger | ✅ | Lists user-created triggers; constraint linkage, UPDATE OF column lists, and WHEN conditions are not populated |
| pg_ts_config | 🟠 | Only the built-in simple configuration; language-specific configurations are not included |
| pg_ts_config_map | ❌ | |
| pg_ts_dict | 🟠 | Only the built-in simple dictionary; language-specific stemming dictionaries are not included |
| pg_ts_parser | ✅ | Contains the single built-in default parser, matching Postgres |
| pg_ts_template | 🟠 | Only the simple template; ispell, snowball, and other built-in templates are not included |
| pg_type | ✅ | Lists built-in and user-created types; type default and ACL columns are not populated |
| pg_user_mapping | ❌ |
Views#
| View | Populated | Notes and limitations |
|---|---|---|
| pg_available_extension_versions | ❌ | |
| pg_available_extensions | ❌ | |
| pg_backend_memory_contexts | ❌ | |
| pg_config | 🟠 | Contains the standard rows, but the values are static placeholders for a default Postgres install layout |
| pg_cursors | ❌ | |
| pg_file_settings | ❌ | |
| pg_group | ✅ | Lists non-login roles and their members |
| pg_hba_file_rules | ❌ | |
| pg_ident_file_mappings | ❌ | |
| pg_indexes | ✅ | Lists all indexes with their definitions |
| pg_locks | ❌ | |
| pg_matviews | ❌ | |
| pg_policies | ❌ | |
| pg_prepared_statements | ❌ | |
| pg_prepared_xacts | ❌ | |
| pg_publication_tables | ❌ | |
| pg_replication_origin_status | ❌ | |
| pg_replication_slots | ❌ | |
| pg_roles | ✅ | Lists all roles; passwords are masked, matching Postgres |
| pg_rules | ❌ | |
| pg_seclabels | ❌ | |
| pg_sequences | ✅ | Lists all sequences with parameters and last value; sequenceowner is NULL |
| pg_settings | ✅ | Lists all configuration parameters; min_val, max_val, enumvals, and source-location columns are NULL |
| pg_shadow | ✅ | Lists login roles; per-role settings (useconfig) are NULL |
| pg_shmem_allocations | ❌ | |
| pg_stat_activity | ❌ | |
| pg_stat_all_indexes | 🟠 | One row per real index, but all statistics counters are zero and timestamps are NULL |
| pg_stat_all_tables | 🟠 | One row per real table, but all statistics counters are zero and timestamps are NULL |
| pg_stat_archiver | 🟠 | Single row with zeroed counters; Doltgres has no WAL archiver |
| pg_stat_bgwriter | 🟠 | Single row with zeroed counters; Doltgres has no background writer |
| pg_stat_database | 🟠 | One row per database, but all counters are zero and timestamps are NULL |
| pg_stat_database_conflicts | 🟠 | One row per database with zeroed conflict counters |
| pg_stat_gssapi | ❌ | |
| pg_stat_io | ❌ | Not implemented; this view was added in Postgres 16 |
| pg_stat_progress_analyze | ❌ | |
| pg_stat_progress_basebackup | ❌ | |
| pg_stat_progress_cluster | ❌ | |
| pg_stat_progress_copy | ❌ | |
| pg_stat_progress_create_index | ❌ | |
| pg_stat_progress_vacuum | ❌ | |
| pg_stat_recovery_prefetch | 🟠 | Single row with zeroed counters; Doltgres does not perform WAL recovery prefetching |
| pg_stat_replication | ❌ | |
| pg_stat_replication_slots | ❌ | |
| pg_stat_slru | 🟠 | One row per SLRU cache name with zeroed counters; Doltgres has no SLRU caches |
| pg_stat_ssl | ❌ | |
| pg_stat_subscription | ❌ | |
| pg_stat_subscription_stats | ❌ | |
| pg_stat_sys_indexes | 🟠 | One row per real index, but all statistics counters are zero and timestamps are NULL |
| pg_stat_sys_tables | 🟠 | One row per real table, but all statistics counters are zero and timestamps are NULL |
| pg_stat_user_functions | ❌ | |
| pg_stat_user_indexes | 🟠 | One row per real index, but all statistics counters are zero and timestamps are NULL |
| pg_stat_user_tables | 🟠 | One row per real table, but all statistics counters are zero and timestamps are NULL |
| pg_stat_wal | 🟠 | Single row with zeroed counters; WAL statistics are not tracked |
| pg_stat_wal_receiver | ❌ | |
| pg_stat_xact_all_tables | 🟠 | One row per real table, but all statistics counters are zero |
| pg_stat_xact_sys_tables | 🟠 | One row per real table, but all statistics counters are zero |
| pg_stat_xact_user_functions | ❌ | |
| pg_stat_xact_user_tables | 🟠 | One row per real table, but all statistics counters are zero |
| pg_statio_all_indexes | 🟠 | One row per real index, but all block I/O counters are zero |
| pg_statio_all_sequences | 🟠 | One row per real sequence, but all block I/O counters are zero |
| pg_statio_all_tables | 🟠 | One row per real table, but all block I/O counters are zero |
| pg_statio_sys_indexes | 🟠 | One row per real index, but all block I/O counters are zero |
| pg_statio_sys_sequences | 🟠 | One row per real sequence, but all block I/O counters are zero |
| pg_statio_sys_tables | 🟠 | One row per real table, but all block I/O counters are zero |
| pg_statio_user_indexes | 🟠 | One row per real index, but all block I/O counters are zero |
| pg_statio_user_sequences | 🟠 | One row per real sequence, but all block I/O counters are zero |
| pg_statio_user_tables | 🟠 | One row per real table, but all block I/O counters are zero |
| pg_stats | ❌ | |
| pg_stats_ext | ❌ | |
| pg_stats_ext_exprs | ❌ | |
| pg_tables | ✅ | Lists all tables; information_schema tables are excluded |
| pg_timezone_abbrevs | 🟠 | Contains a subset (about 47) of the roughly 200 abbreviations Postgres ships |
| pg_timezone_names | ✅ | Full timezone list with current offset, abbreviation, and DST flag for each zone |
| pg_user | ✅ | Lists login roles; passwords are masked, matching Postgres |
| pg_user_mappings | ❌ | |
| pg_views | ✅ | Lists all views with their definitions; viewowner is empty |