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#

TablePopulatedNotes 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#

ViewPopulatedNotes 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