For PostgreSQL compatibility, CockroachDB includes a system catalog schema 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
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
. 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 |
None |
pg_amproc |
None |
pg_attrdef |
pg_attrdef |
pg_attribute |
pg_attribute |
pg_auth_members |
pg_auth_members |
pg_authid |
pg_authid |
pg_available_extension_versions |
None |
pg_available_extensions |
pg_available_extensions |
pg_cast |
pg_cast |
pg_class |
pg_class |
pg_collation |
pg_collation |
pg_config |
None |
pg_constraint |
pg_constraint |
pg_conversion |
pg_conversion |
pg_cursors |
None |
pg_database |
pg_database |
pg_db_role_setting |
None |
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 |
None |
pg_foreign_data_wrapper |
pg_foreign_data_wrapper |
pg_foreign_server |
pg_foreign_server |
pg_foreign_table |
pg_foreign_table |
pg_group |
None |
pg_hba_file_rules |
None |
pg_index |
pg_index |
pg_indexes |
pg_indexes |
pg_inherits |
pg_inherits |
pg_init_privs |
None |
pg_language |
pg_language (empty) |
pg_largeobject |
None |
pg_largeobject_metadata |
None |
pg_locks |
pg_locks |
pg_matviews |
pg_matviews |
pg_namespace |
pg_namespace |
pg_opclass |
None |
pg_operator |
pg_operator |
pg_opfamily |
None |
pg_partitioned_table |
None |
pg_policies |
None |
pg_policy |
None |
pg_prepared_statements |
pg_prepared_statements (empty) |
pg_prepared_xacts |
pg_prepared_xacts (empty) |
pg_proc |
pg_proc |
pg_publication |
None |
pg_publication_rel |
None |
pg_publication_tables |
None |
pg_range |
pg_range |
pg_replication_origin |
None |
pg_replication_origin_status |
None |
pg_replication_slots |
None |
pg_rewrite |
pg_rewrite |
pg_roles |
pg_roles |
pg_rules |
None |
pg_seclabel |
pg_seclabel |
pg_seclabels |
pg_seclabels |
pg_sequence |
pg_sequence |
pg_sequences |
None |
pg_settings |
pg_settings |
pg_shadow |
None |
pg_shdepend |
pg_shdepend (empty) |
pg_shdescription |
pg_shdescription |
pg_shmem_allocations |
None |
pg_shseclabel |
pg_shseclabel |
pg_stat_activity |
pg_stat_activity |
pg_statistic |
None |
pg_statistic_ext |
None |
pg_statistic_ext_data |
None |
pg_stats |
None |
pg_stats_ext |
None |
pg_subscription |
None |
pg_subscription_rel |
None |
pg_tables |
pg_tables |
pg_tablespace |
pg_tablespace |
pg_timezone_abbrevs |
None |
pg_timezone_names |
None |
pg_transform |
None |
pg_trigger |
pg_trigger |
pg_ts_config |
None |
pg_ts_config_map |
None |
pg_ts_dict |
None |
pg_ts_parser |
None |
pg_ts_template |
None |
pg_type |
pg_type |
pg_user |
pg_user |
pg_user_mapping |
pg_user_mapping |
pg_user_mappings |
None |
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
pg_catalog | pg_attrdef | table | NULL | NULL
...
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)