For PostgreSQL compatibility, CockroachDB includes a system catalog called pg_catalog. The tables in the pg_catalog schema roughly correspond to the system catalogs in PostgreSQL. pg_catalog tables are read-only.
Data exposed by pg_catalog
The tables in CockroachDB's pg_catalog schema correspond to a subset of the virtual tables and views that make up the PostgreSQL system catalogs. Not all PostgreSQL system catalogs have a corresponding table in pg_catalog, and some of the pg_catalog tables are empty. See the following table for a detailed comparison between PostgreSQL 13 system catalogs and pg_catalog tables.
| PostgreSQL 13 system catalog | pg_catalog table | 
|---|---|
pg_aggregate | 
pg_aggregate | 
pg_am | 
pg_am | 
pg_amop | 
pg_amop (empty) | 
pg_amproc | 
pg_amproc (empty) | 
pg_attrdef | 
pg_attrdef | 
pg_attribute | 
pg_attribute | 
pg_auth_members | 
pg_auth_members | 
pg_authid | 
pg_authid | 
pg_available_extension_versions | 
pg_available_extension_versions (empty) | 
pg_available_extensions | 
pg_available_extensions | 
pg_cast | 
pg_cast | 
pg_class | 
pg_class | 
pg_collation | 
pg_collation | 
pg_config | 
pg_config (empty) | 
pg_constraint | 
pg_constraint | 
pg_conversion | 
pg_conversion | 
pg_cursors | 
pg_cursors (empty) | 
pg_database | 
pg_database | 
pg_db_role_setting | 
pg_db_role_setting | 
pg_default_acl | 
pg_default_acl | 
pg_depend | 
pg_depend | 
pg_description | 
pg_description | 
pg_enum | 
pg_enum | 
pg_event_trigger | 
pg_event_trigger | 
pg_extension | 
pg_extension | 
pg_file_settings | 
pg_file_settings (empty) | 
pg_foreign_data_wrapper | 
pg_foreign_data_wrapper | 
pg_foreign_server | 
pg_foreign_server | 
pg_foreign_table | 
pg_foreign_table | 
pg_group | 
pg_group (empty) | 
pg_hba_file_rules | 
pg_hba_file_rules (empty) | 
pg_index | 
pg_index | 
pg_indexes | 
pg_indexes | 
pg_inherits | 
pg_inherits | 
pg_init_privs | 
pg_init_privs (empty) | 
pg_language | 
pg_language (empty) | 
pg_largeobject | 
pg_largeobject (empty) | 
pg_largeobject_metadata | 
pg_largeobject_metadata (empty) | 
pg_locks | 
pg_locks | 
pg_matviews | 
pg_matviews | 
pg_namespace | 
pg_namespace | 
pg_opclass | 
pg_opclass (empty) | 
pg_operator | 
pg_operator | 
pg_opfamily | 
pg_opfamily (empty) | 
pg_partitioned_table | 
pg_partitioned_table (empty) | 
pg_policies | 
pg_policies (empty) | 
pg_policy | 
pg_policy (empty) | 
pg_prepared_statements | 
pg_prepared_statements (empty) | 
pg_prepared_xacts | 
pg_prepared_xacts (empty) | 
pg_proc | 
pg_proc | 
pg_publication | 
pg_publication (empty) | 
pg_publication_rel | 
pg_publication_rel (empty) | 
pg_publication_tables | 
pg_publication_tables (empty) | 
pg_range | 
pg_range | 
pg_replication_origin | 
pg_replication_origin (empty) | 
pg_replication_origin_status | 
pg_replication_origin_status (empty) | 
pg_replication_slots | 
pg_replication_slots (empty) | 
pg_rewrite | 
pg_rewrite | 
pg_roles | 
pg_roles | 
pg_rules | 
pg_rules (empty) | 
pg_seclabel | 
pg_seclabel | 
pg_seclabels | 
pg_seclabels | 
pg_sequence | 
pg_sequence | 
pg_sequences | 
pg_sequences | 
pg_settings | 
pg_settings | 
pg_shadow | 
pg_shadow (empty) | 
pg_shdepend | 
pg_shdepend | 
pg_shdescription | 
pg_shdescription | 
pg_shmem_allocations | 
pg_shmem_allocations (empty) | 
pg_shseclabel | 
pg_shseclabel | 
pg_stat_activity | 
pg_stat_activity | 
pg_stat_all_indexes | 
pg_stat_all_indexes (empty) | 
pg_stat_all_tables | 
pg_stat_all_tables (empty) | 
pg_stat_archiver | 
pg_stat_archiver (empty) | 
pg_stat_bgwriter | 
pg_stat_bgwriter (empty) | 
pg_stat_database | 
pg_stat_database (empty) | 
pg_stat_database_conflicts | 
pg_stat_database_conflicts (empty) | 
pg_stat_gssapi | 
pg_stat_gssapi (empty) | 
pg_stat_progress_analyze | 
pg_stat_progress_analyze (empty) | 
pg_stat_progress_basebackup | 
pg_stat_progress_basebackup (empty) | 
pg_stat_progress_cluster | 
pg_stat_progress_cluster (empty) | 
pg_stat_progress_create_index | 
pg_stat_progress_create_index (empty) | 
pg_stat_progress_vacuum | 
pg_stat_progress_vacuum (empty) | 
pg_stat_replication | 
pg_stat_replication (empty) | 
pg_stat_slru | 
pg_stat_slru (empty) | 
pg_stat_ssl | 
pg_stat_ssl (empty) | 
pg_stat_subscription | 
pg_stat_subscription (empty) | 
pg_stat_sys_indexes | 
pg_stat_sys_indexes (empty) | 
pg_stat_sys_tables | 
pg_stat_sys_tables (empty) | 
pg_stat_user_functions | 
pg_stat_user_functions (empty) | 
pg_stat_user_indexes | 
pg_stat_user_indexes (empty) | 
pg_stat_user_tables | 
pg_stat_user_tables (empty) | 
pg_stat_wal_receiver | 
pg_stat_wal_receiver (empty) | 
pg_stat_xact_all_tables | 
pg_stat_xact_all_tables (empty) | 
pg_stat_xact_sys_tables | 
pg_stat_xact_sys_tables (empty) | 
pg_stat_xact_user_functions | 
pg_stat_xact_user_functions (empty) | 
pg_stat_xact_user_tables | 
pg_stat_xact_user_tables (empty) | 
pg_statio_all_indexes | 
pg_statio_all_indexes (empty) | 
pg_statio_all_sequences | 
pg_statio_all_sequences (empty) | 
pg_statio_all_tables | 
pg_statio_all_tables (empty) | 
pg_statio_sys_indexes | 
pg_statio_sys_indexes (empty) | 
pg_statio_sys_sequences | 
pg_statio_sys_sequences (empty) | 
pg_statio_sys_tables | 
pg_statio_sys_tables (empty) | 
pg_statio_user_indexes | 
pg_statio_user_indexes (empty) | 
pg_statio_user_sequences | 
pg_statio_user_sequences (empty) | 
pg_statio_user_tables | 
pg_statio_user_tables (empty) | 
pg_statistic | 
None | 
pg_statistic_ext | 
pg_statistic_ext (empty) | 
pg_statistic_ext_data | 
None | 
pg_stats | 
None | 
pg_stats_ext | 
None | 
pg_subscription | 
pg_subscription (empty) | 
pg_subscription_rel | 
pg_subscription_rel (empty) | 
pg_tables | 
pg_tables | 
pg_tablespace | 
pg_tablespace | 
pg_timezone_abbrevs | 
pg_timezone_abbrevs (empty) | 
pg_timezone_names | 
pg_timezone_names (empty) | 
pg_transform | 
pg_transform (empty) | 
pg_trigger | 
pg_trigger | 
pg_ts_config | 
pg_ts_config (empty) | 
pg_ts_config_map | 
pg_ts_config_map (empty) | 
pg_ts_dict | 
pg_ts_dict (empty) | 
pg_ts_parser | 
pg_ts_parser (empty) | 
pg_ts_template | 
pg_ts_template (empty) | 
pg_type | 
pg_type | 
pg_user | 
pg_user | 
pg_user_mapping | 
pg_user_mapping | 
pg_user_mappings | 
pg_user_mappings (empty) | 
pg_views | 
pg_views | 
To list the tables in pg_catalog for the current database, use the following SHOW TABLES statement:
> SHOW TABLES FROM pg_catalog;
  schema_name |       table_name        | type  | owner | estimated_row_count
--------------+-------------------------+-------+-------+----------------------
  pg_catalog  | pg_aggregate            | table | NULL  |                NULL
  pg_catalog  | pg_am                   | table | NULL  |                NULL
  ...
To prohibit queries against empty tables, set the stub_catalog_tables session variable to off.
Query pg_catalog tables
You can run SELECT queries on the tables in pg_catalog.
To ensure that you can view all of the tables in pg_catalog, query the tables as a user with admin privileges.
Unless specified otherwise, queries to pg_catalog assume the current database.
For example, to return the pg_catalog table with additional information about indexes in movr database, you can query the pg_catalog.pg_indexes table:
> SELECT * FROM movr.pg_catalog.pg_indexes;
   crdb_oid  | schemaname |         tablename          |                   indexname                   | tablespace |                                                            indexdef
-------------+------------+----------------------------+-----------------------------------------------+------------+---------------------------------------------------------------------------------------------------------------------------------
  2055313241 | public     | users                      | primary                                       | NULL       | CREATE UNIQUE INDEX "primary" ON movr.public.users USING btree (city ASC, id ASC)
  1795576970 | public     | vehicles                   | primary                                       | NULL       | CREATE UNIQUE INDEX "primary" ON movr.public.vehicles USING btree (city ASC, id ASC)
  1795576969 | public     | vehicles                   | vehicles_auto_index_fk_city_ref_users         | NULL       | CREATE INDEX vehicles_auto_index_fk_city_ref_users ON movr.public.vehicles USING btree (city ASC, owner_id ASC)
   450499963 | public     | rides                      | primary                                       | NULL       | CREATE UNIQUE INDEX "primary" ON movr.public.rides USING btree (city ASC, id ASC)
   450499960 | public     | rides                      | rides_auto_index_fk_city_ref_users            | NULL       | CREATE INDEX rides_auto_index_fk_city_ref_users ON movr.public.rides USING btree (city ASC, rider_id ASC)
   450499961 | public     | rides                      | rides_auto_index_fk_vehicle_city_ref_vehicles | NULL       | CREATE INDEX rides_auto_index_fk_vehicle_city_ref_vehicles ON movr.public.rides USING btree (vehicle_city ASC, vehicle_id ASC)
  2315049508 | public     | vehicle_location_histories | primary                                       | NULL       | CREATE UNIQUE INDEX "primary" ON movr.public.vehicle_location_histories USING btree (city ASC, ride_id ASC, "timestamp" ASC)
   969972501 | public     | promo_codes                | primary                                       | NULL       | CREATE UNIQUE INDEX "primary" ON movr.public.promo_codes USING btree (code ASC)
   710236230 | public     | user_promo_codes           | primary                                       | NULL       | CREATE UNIQUE INDEX "primary" ON movr.public.user_promo_codes USING btree (city ASC, user_id ASC, code ASC)
(9 rows)