Skip to content

CockroachDB Data Dictionary & SQL Catalog

from sqlspec.data_dictionary import get_data_dictionary_loader, get_dialect_config

config = get_dialect_config("cockroachdb")

Introspects crdb_internal (create_statements, tables) and pg_catalog compatibility views across cockroach_asyncpg and cockroach_psycopg. See the CockroachDB Guide and Data Dictionary Guide for usage examples.

Dialect Configuration

Setting Value
Dialect Name cockroachdb
Default Schema "public"
Version Pattern CockroachDB (?:CCL )?v(\d+)\.(\d+)\.(\d+)
DDL Strategy Native crdb_internal.create_statement + AST fallback
Catalog .sql Files 15 files (18 named queries)

Capabilities & Type Mappings

Capability Status / Minimum Version Logical Type Target Physical Type
supports_arrays True array ARRAY
supports_crdb_internal_metadata False bigint INT8
supports_for_update True blob BYTES
supports_on_conflict True boolean BOOL
supports_prepared_statements True float FLOAT8
supports_schemas True integer INT8
supports_skip_locked True json JSONB
supports_transactions True text STRING
supports_update_from True timestamp TIMESTAMPTZ
supports_uuid True uuid UUID
supports_cte >= 19.1.0 varchar VARCHAR({length})
supports_json >= 20.1.0 - -
supports_returning >= 20.1.0 - -
supports_upsert >= 19.2.0 - -
supports_window_functions >= 19.1.0 - -

Adapter Data Dictionary Classes

CockroachAsyncpgDataDictionary

CockroachAsyncpgDataDictionary()

Bases: AsyncDataDictionaryBase

CockroachDB async data dictionary (AsyncPG).

Methods:

Name Description
get_metadata_capabilities

Get CockroachDB data-dictionary capability profile.

get_system_metadata_capabilities

Get CockroachDB opt-in system metadata capability disclosures.

get_schemas

Get schema metadata.

get_objects

Get database object metadata.

get_table_details

Get rich table metadata.

get_constraints

Get constraint metadata.

get_views

Get view metadata.

get_routines

Get routine metadata.

get_privileges

Get privilege metadata.

get_dependencies

Get stable dependency metadata.

get_sequences

Get sequence metadata.

get_system_metadata

Get opt-in CockroachDB system metadata.

get_version
get_feature_flag
get_optimal_type
get_tables
get_columns
get_indexes
get_foreign_keys

Get foreign key metadata, including ON DELETE / ON UPDATE actions.

Attributes:

Name Type Description
dialect str

get_metadata_capabilities async

get_metadata_capabilities(
    driver: CockroachAsyncpgDriver, domains: Sequence[str] | None = None
) -> MetadataCapabilityProfile

Get CockroachDB data-dictionary capability profile.

get_system_metadata_capabilities async

get_system_metadata_capabilities(
    driver: CockroachAsyncpgDriver, domains: Sequence[str] | None = None
) -> tuple[SystemMetadataCapability, ...]

Get CockroachDB opt-in system metadata capability disclosures.

get_schemas async

get_schemas(driver: CockroachAsyncpgDriver) -> MetadataResult

Get schema metadata.

get_objects async

get_objects(
    driver: CockroachAsyncpgDriver, schema: str | None = None
) -> MetadataResult

Get database object metadata.

get_table_details async

get_table_details(
    driver: CockroachAsyncpgDriver, table: str, schema: str | None = None
) -> MetadataResult

Get rich table metadata.

get_constraints async

get_constraints(
    driver: CockroachAsyncpgDriver,
    table: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get constraint metadata.

get_views async

get_views(
    driver: CockroachAsyncpgDriver, schema: str | None = None
) -> MetadataResult

Get view metadata.

get_routines async

get_routines(
    driver: CockroachAsyncpgDriver, schema: str | None = None
) -> MetadataResult

Get routine metadata.

get_privileges async

get_privileges(
    driver: CockroachAsyncpgDriver,
    object_name: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get privilege metadata.

get_dependencies async

get_dependencies(
    driver: CockroachAsyncpgDriver,
    object_name: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get stable dependency metadata.

get_sequences async

get_sequences(
    driver: CockroachAsyncpgDriver, schema: str | None = None
) -> MetadataResult

Get sequence metadata.

get_system_metadata async

get_system_metadata(
    driver: CockroachAsyncpgDriver,
    request: SystemMetadataRequest | str | None = None,
    **kwargs: Any,
) -> SystemMetadataResult

Get opt-in CockroachDB system metadata.

get_version async

get_version(driver: CockroachAsyncpgDriver) -> VersionInfo | None

get_feature_flag async

get_feature_flag(driver: CockroachAsyncpgDriver, feature: str) -> bool

get_optimal_type async

get_optimal_type(driver: CockroachAsyncpgDriver, type_category: str) -> str

get_tables async

get_tables(
    driver: CockroachAsyncpgDriver, schema: str | None = None
) -> list[TableMetadata]

get_columns async

get_columns(
    driver: CockroachAsyncpgDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[ColumnMetadata]

get_indexes async

get_indexes(
    driver: CockroachAsyncpgDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[IndexMetadata]

get_foreign_keys async

get_foreign_keys(
    driver: CockroachAsyncpgDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[ForeignKeyMetadata]

Get foreign key metadata, including ON DELETE / ON UPDATE actions.

CockroachPsycopgSyncDataDictionary

CockroachPsycopgSyncDataDictionary()

Bases: SyncDataDictionaryBase

CockroachDB sync data dictionary.

Methods:

Name Description
get_metadata_capabilities

Get CockroachDB data-dictionary capability profile.

get_system_metadata_capabilities

Get CockroachDB opt-in system metadata capability disclosures.

get_schemas

Get schema metadata.

get_objects

Get database object metadata.

get_table_details

Get rich table metadata.

get_constraints

Get constraint metadata.

get_views

Get view metadata.

get_routines

Get routine metadata.

get_privileges

Get privilege metadata.

get_dependencies

Get stable dependency metadata.

get_sequences

Get sequence metadata.

get_system_metadata

Get opt-in CockroachDB system metadata.

get_version

Get CockroachDB version information.

get_feature_flag

Check if CockroachDB supports a specific feature.

get_optimal_type

Get optimal CockroachDB type for a category.

get_tables

Get tables sorted by dependency order.

get_columns

Get column information for a table or schema.

get_indexes

Get index metadata for a table or schema.

get_foreign_keys

Get foreign key metadata, including ON DELETE / ON UPDATE actions.

Attributes:

Name Type Description
dialect str

get_metadata_capabilities

get_metadata_capabilities(
    driver: CockroachPsycopgSyncDriver, domains: Sequence[str] | None = None
) -> MetadataCapabilityProfile

Get CockroachDB data-dictionary capability profile.

get_system_metadata_capabilities

get_system_metadata_capabilities(
    driver: CockroachPsycopgSyncDriver, domains: Sequence[str] | None = None
) -> tuple[SystemMetadataCapability, ...]

Get CockroachDB opt-in system metadata capability disclosures.

get_schemas

Get schema metadata.

get_objects

get_objects(
    driver: CockroachPsycopgSyncDriver, schema: str | None = None
) -> MetadataResult

Get database object metadata.

get_table_details

get_table_details(
    driver: CockroachPsycopgSyncDriver, table: str, schema: str | None = None
) -> MetadataResult

Get rich table metadata.

get_constraints

get_constraints(
    driver: CockroachPsycopgSyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get constraint metadata.

get_views

get_views(
    driver: CockroachPsycopgSyncDriver, schema: str | None = None
) -> MetadataResult

Get view metadata.

get_routines

get_routines(
    driver: CockroachPsycopgSyncDriver, schema: str | None = None
) -> MetadataResult

Get routine metadata.

get_privileges

get_privileges(
    driver: CockroachPsycopgSyncDriver,
    object_name: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get privilege metadata.

get_dependencies

get_dependencies(
    driver: CockroachPsycopgSyncDriver,
    object_name: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get stable dependency metadata.

get_sequences

get_sequences(
    driver: CockroachPsycopgSyncDriver, schema: str | None = None
) -> MetadataResult

Get sequence metadata.

get_system_metadata

get_system_metadata(
    driver: CockroachPsycopgSyncDriver,
    request: SystemMetadataRequest | str | None = None,
    **kwargs: Any,
) -> SystemMetadataResult

Get opt-in CockroachDB system metadata.

get_version

get_version(driver: CockroachPsycopgSyncDriver) -> VersionInfo | None

Get CockroachDB version information.

get_feature_flag

get_feature_flag(driver: CockroachPsycopgSyncDriver, feature: str) -> bool

Check if CockroachDB supports a specific feature.

get_optimal_type

get_optimal_type(driver: CockroachPsycopgSyncDriver, type_category: str) -> str

Get optimal CockroachDB type for a category.

get_tables

get_tables(
    driver: CockroachPsycopgSyncDriver, schema: str | None = None
) -> list[TableMetadata]

Get tables sorted by dependency order.

get_columns

get_columns(
    driver: CockroachPsycopgSyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[ColumnMetadata]

Get column information for a table or schema.

get_indexes

get_indexes(
    driver: CockroachPsycopgSyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[IndexMetadata]

Get index metadata for a table or schema.

get_foreign_keys

get_foreign_keys(
    driver: CockroachPsycopgSyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[ForeignKeyMetadata]

Get foreign key metadata, including ON DELETE / ON UPDATE actions.

CockroachPsycopgAsyncDataDictionary

CockroachPsycopgAsyncDataDictionary()

Bases: AsyncDataDictionaryBase

CockroachDB async data dictionary.

Methods:

Name Description
get_metadata_capabilities

Get CockroachDB data-dictionary capability profile.

get_system_metadata_capabilities

Get CockroachDB opt-in system metadata capability disclosures.

get_schemas

Get schema metadata.

get_objects

Get database object metadata.

get_table_details

Get rich table metadata.

get_constraints

Get constraint metadata.

get_views

Get view metadata.

get_routines

Get routine metadata.

get_privileges

Get privilege metadata.

get_dependencies

Get stable dependency metadata.

get_sequences

Get sequence metadata.

get_system_metadata

Get opt-in CockroachDB system metadata.

get_version

Get CockroachDB version information.

get_feature_flag

Check if CockroachDB supports a specific feature.

get_optimal_type

Get optimal CockroachDB type for a category.

get_tables

Get tables sorted by dependency order.

get_columns

Get column information for a table or schema.

get_indexes

Get index metadata for a table or schema.

get_foreign_keys

Get foreign key metadata, including ON DELETE / ON UPDATE actions.

Attributes:

Name Type Description
dialect str

get_metadata_capabilities async

get_metadata_capabilities(
    driver: CockroachPsycopgAsyncDriver, domains: Sequence[str] | None = None
) -> MetadataCapabilityProfile

Get CockroachDB data-dictionary capability profile.

get_system_metadata_capabilities async

get_system_metadata_capabilities(
    driver: CockroachPsycopgAsyncDriver, domains: Sequence[str] | None = None
) -> tuple[SystemMetadataCapability, ...]

Get CockroachDB opt-in system metadata capability disclosures.

get_schemas async

Get schema metadata.

get_objects async

get_objects(
    driver: CockroachPsycopgAsyncDriver, schema: str | None = None
) -> MetadataResult

Get database object metadata.

get_table_details async

get_table_details(
    driver: CockroachPsycopgAsyncDriver, table: str, schema: str | None = None
) -> MetadataResult

Get rich table metadata.

get_constraints async

get_constraints(
    driver: CockroachPsycopgAsyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get constraint metadata.

get_views async

get_views(
    driver: CockroachPsycopgAsyncDriver, schema: str | None = None
) -> MetadataResult

Get view metadata.

get_routines async

get_routines(
    driver: CockroachPsycopgAsyncDriver, schema: str | None = None
) -> MetadataResult

Get routine metadata.

get_privileges async

get_privileges(
    driver: CockroachPsycopgAsyncDriver,
    object_name: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get privilege metadata.

get_dependencies async

get_dependencies(
    driver: CockroachPsycopgAsyncDriver,
    object_name: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get stable dependency metadata.

get_sequences async

get_sequences(
    driver: CockroachPsycopgAsyncDriver, schema: str | None = None
) -> MetadataResult

Get sequence metadata.

get_system_metadata async

get_system_metadata(
    driver: CockroachPsycopgAsyncDriver,
    request: SystemMetadataRequest | str | None = None,
    **kwargs: Any,
) -> SystemMetadataResult

Get opt-in CockroachDB system metadata.

get_version async

get_version(driver: CockroachPsycopgAsyncDriver) -> VersionInfo | None

Get CockroachDB version information.

get_feature_flag async

get_feature_flag(driver: CockroachPsycopgAsyncDriver, feature: str) -> bool

Check if CockroachDB supports a specific feature.

get_optimal_type async

get_optimal_type(
    driver: CockroachPsycopgAsyncDriver, type_category: str
) -> str

Get optimal CockroachDB type for a category.

get_tables async

get_tables(
    driver: CockroachPsycopgAsyncDriver, schema: str | None = None
) -> list[TableMetadata]

Get tables sorted by dependency order.

get_columns async

get_columns(
    driver: CockroachPsycopgAsyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[ColumnMetadata]

Get column information for a table or schema.

get_indexes async

get_indexes(
    driver: CockroachPsycopgAsyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[IndexMetadata]

Get index metadata for a table or schema.

get_foreign_keys async

get_foreign_keys(
    driver: CockroachPsycopgAsyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[ForeignKeyMetadata]

Get foreign key metadata, including ON DELETE / ON UPDATE actions.

Catalog SQL Queries

The cockroachdb dialect pack defines 18 named queries across 15 domain .sql files loaded via DataDictionaryLoader (sqlspec/data_dictionary/dialects/cockroachdb/):

Domain Pack Named Queries Bind Parameters
columns.sql by_schema, by_table :schema_name, :table_name
comments.sql by_schema :schema_name
constraints.sql by_schema :schema_name, :table_name
crdb_internal.sql ranges :schema_name, :table_name
ddl.sql by_object :object_name, :object_type, :schema_name
dependencies.sql by_schema :object_name, :schema_name
foreign_keys.sql by_table, by_schema :schema_name, :table_name
indexes.sql by_schema, by_table :schema_name, :table_name
objects.sql by_schema :schema_name
privileges.sql by_schema :object_name, :schema_name
schemas.sql list none
sequences.sql by_schema :schema_name
tables.sql by_schema :schema_name, :table_name
version.sql current none
views.sql by_schema :schema_name
columns.sql (2 named queries)
-- name: by_schema
-- dialect: cockroachdb
WITH target_schema AS (
    SELECT COALESCE(
        :schema_name::text,
        (
            SELECT rn.nspname::text
            FROM pg_catalog.pg_class rc
            JOIN pg_catalog.pg_namespace rn ON rn.oid = rc.relnamespace
            WHERE rc.oid = pg_catalog.to_regclass(pg_catalog.quote_ident(:table_name::text))
        ),
        current_schema()
    ) AS schema_name
),
pk_columns AS (
    SELECT DISTINCT
        tc.table_schema,
        tc.table_name,
        kcu.column_name
    FROM target_schema ts
    JOIN information_schema.table_constraints tc
      ON tc.table_schema = ts.schema_name
    JOIN information_schema.key_column_usage kcu
      ON kcu.constraint_schema = tc.constraint_schema
     AND kcu.constraint_name = tc.constraint_name
     AND kcu.table_name = tc.table_name
    WHERE tc.constraint_type = 'PRIMARY KEY'
      AND (:table_name::text IS NULL OR tc.table_name = :table_name)
),
identity_attrs AS (
    SELECT
        n.nspname AS table_schema,
        c.relname AS table_name,
        a.attname AS column_name,
        CASE
            WHEN a.attidentity = 'a' THEN 'ALWAYS'
            WHEN a.attidentity = 'd' THEN 'BY DEFAULT'
            ELSE NULL
        END AS identity_generation,
        CASE WHEN a.attidentity IN ('a', 'd') THEN 1 ELSE 0 END AS is_identity
    FROM target_schema ts
    JOIN pg_catalog.pg_namespace n ON n.nspname = ts.schema_name
    JOIN pg_catalog.pg_class c ON c.relnamespace = n.oid
    JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid
    WHERE a.attnum > 0
      AND NOT a.attisdropped
      AND (:table_name::text IS NULL OR c.relname = :table_name)
)
SELECT
    c.table_catalog::text AS table_catalog,
    c.table_schema::text AS table_schema,
    c.table_schema::text AS schema_name,
    c.table_name::text AS table_name,
    c.column_name::text AS column_name,
    c.ordinal_position,
    c.data_type::text AS data_type,
    c.is_nullable::text AS is_nullable,
    c.column_default::text AS column_default,
    c.generation_expression::text AS generation_expression,
    CASE WHEN c.generation_expression IS NOT NULL AND c.generation_expression <> '' THEN 1 ELSE 0 END AS is_generated,
    CASE WHEN c.is_hidden = 'YES' THEN 1 ELSE 0 END AS is_hidden,
    CASE WHEN pk.column_name IS NOT NULL THEN 1 ELSE 0 END AS is_primary,
    ia.identity_generation,
    COALESCE(ia.is_identity, 0) AS is_identity,
    pg_catalog.pg_get_serial_sequence(
        pg_catalog.quote_ident(c.table_schema) || '.' || pg_catalog.quote_ident(c.table_name), c.column_name
    )::text AS sequence_name
FROM target_schema ts
JOIN information_schema.columns AS c
  ON c.table_schema = ts.schema_name
LEFT JOIN pk_columns pk
  ON pk.table_schema = c.table_schema
 AND pk.table_name = c.table_name
 AND pk.column_name = c.column_name
LEFT JOIN identity_attrs ia
  ON ia.table_schema = c.table_schema
 AND ia.table_name = c.table_name
 AND ia.column_name = c.column_name
WHERE (:table_name::text IS NULL OR c.table_name = :table_name)
ORDER BY c.table_schema, c.table_name, c.ordinal_position;

-- name: by_table
-- dialect: cockroachdb
WITH target_schema AS (
    SELECT COALESCE(
        :schema_name::text,
        (
            SELECT rn.nspname::text
            FROM pg_catalog.pg_class rc
            JOIN pg_catalog.pg_namespace rn ON rn.oid = rc.relnamespace
            WHERE rc.oid = pg_catalog.to_regclass(pg_catalog.quote_ident(:table_name::text))
        ),
        current_schema()
    ) AS schema_name
),
pk_columns AS (
    SELECT DISTINCT
        tc.table_schema,
        tc.table_name,
        kcu.column_name
    FROM target_schema ts
    JOIN information_schema.table_constraints tc
      ON tc.table_schema = ts.schema_name
    JOIN information_schema.key_column_usage kcu
      ON kcu.constraint_schema = tc.constraint_schema
     AND kcu.constraint_name = tc.constraint_name
     AND kcu.table_name = tc.table_name
    WHERE tc.constraint_type = 'PRIMARY KEY'
      AND tc.table_name = :table_name
),
identity_attrs AS (
    SELECT
        n.nspname AS table_schema,
        c.relname AS table_name,
        a.attname AS column_name,
        CASE
            WHEN a.attidentity = 'a' THEN 'ALWAYS'
            WHEN a.attidentity = 'd' THEN 'BY DEFAULT'
            ELSE NULL
        END AS identity_generation,
        CASE WHEN a.attidentity IN ('a', 'd') THEN 1 ELSE 0 END AS is_identity
    FROM target_schema ts
    JOIN pg_catalog.pg_namespace n ON n.nspname = ts.schema_name
    JOIN pg_catalog.pg_class c ON c.relnamespace = n.oid
    JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid
    WHERE a.attnum > 0
      AND NOT a.attisdropped
      AND c.relname = :table_name
)
SELECT
    c.table_catalog::text AS table_catalog,
    c.table_schema::text AS table_schema,
    c.table_schema::text AS schema_name,
    c.table_name::text AS table_name,
    c.column_name::text AS column_name,
    c.ordinal_position,
    c.data_type::text AS data_type,
    c.is_nullable::text AS is_nullable,
    c.column_default::text AS column_default,
    c.generation_expression::text AS generation_expression,
    CASE WHEN c.generation_expression IS NOT NULL AND c.generation_expression <> '' THEN 1 ELSE 0 END AS is_generated,
    CASE WHEN c.is_hidden = 'YES' THEN 1 ELSE 0 END AS is_hidden,
    CASE WHEN pk.column_name IS NOT NULL THEN 1 ELSE 0 END AS is_primary,
    ia.identity_generation,
    COALESCE(ia.is_identity, 0) AS is_identity,
    pg_catalog.pg_get_serial_sequence(
        pg_catalog.quote_ident(c.table_schema) || '.' || pg_catalog.quote_ident(c.table_name), c.column_name
    )::text AS sequence_name
FROM target_schema ts
JOIN information_schema.columns AS c
  ON c.table_schema = ts.schema_name
LEFT JOIN pk_columns pk
  ON pk.table_schema = c.table_schema
 AND pk.table_name = c.table_name
 AND pk.column_name = c.column_name
LEFT JOIN identity_attrs ia
  ON ia.table_schema = c.table_schema
 AND ia.table_name = c.table_name
 AND ia.column_name = c.column_name
WHERE c.table_name = :table_name
ORDER BY c.ordinal_position;
comments.sql (1 named queries)
-- name: by_schema
-- dialect: cockroachdb
SELECT
    table_schema::text AS schema_name,
    table_name::text AS object_name,
    'table'::text AS object_type,
    NULL::text AS comment
FROM information_schema.tables
WHERE table_schema = :schema_name
ORDER BY table_schema, table_name;
constraints.sql (1 named queries)
-- name: by_schema
-- dialect: cockroachdb
SELECT
    tc.constraint_catalog::text AS constraint_catalog,
    tc.constraint_schema::text AS constraint_schema,
    tc.table_schema::text AS schema_name,
    tc.table_name::text AS table_name,
    tc.constraint_name::text AS constraint_name,
    tc.constraint_type::text AS constraint_type,
    tc.is_deferrable::text AS is_deferrable,
    tc.initially_deferred::text AS initially_deferred,
    ARRAY(
        SELECT kcu.column_name::text
        FROM information_schema.key_column_usage kcu
        WHERE kcu.constraint_catalog = tc.constraint_catalog
          AND kcu.constraint_schema = tc.constraint_schema
          AND kcu.constraint_name = tc.constraint_name
          AND kcu.table_schema = tc.table_schema
          AND kcu.table_name = tc.table_name
        ORDER BY kcu.ordinal_position
    )::text[] AS columns,
    rc.unique_constraint_schema::text AS referenced_schema,
    pk_tc.table_name::text AS referenced_table,
    ARRAY(
        SELECT pk_kcu.column_name::text
        FROM information_schema.key_column_usage pk_kcu
        WHERE pk_kcu.constraint_catalog = rc.unique_constraint_catalog
          AND pk_kcu.constraint_schema = rc.unique_constraint_schema
          AND pk_kcu.constraint_name = rc.unique_constraint_name
        ORDER BY pk_kcu.ordinal_position
    )::text[] AS referenced_columns
FROM information_schema.table_constraints tc
LEFT JOIN information_schema.referential_constraints rc
  ON rc.constraint_catalog = tc.constraint_catalog
 AND rc.constraint_schema = tc.constraint_schema
 AND rc.constraint_name = tc.constraint_name
LEFT JOIN information_schema.table_constraints pk_tc
  ON pk_tc.constraint_catalog = rc.unique_constraint_catalog
 AND pk_tc.constraint_schema = rc.unique_constraint_schema
 AND pk_tc.constraint_name = rc.unique_constraint_name
WHERE tc.table_schema = :schema_name
  AND (:table_name::text IS NULL OR tc.table_name = :table_name)
ORDER BY tc.table_schema, tc.table_name, tc.constraint_name;
crdb_internal.sql (1 named queries)
-- name: ranges
-- dialect: cockroachdb
SELECT
    database_name::text AS database_name,
    schema_name::text AS schema_name,
    table_name::text AS table_name,
    range_id::text AS range_id
FROM crdb_internal.ranges
WHERE (:schema_name::text IS NULL OR schema_name = :schema_name)
  AND (:table_name::text IS NULL OR table_name = :table_name)
ORDER BY database_name, schema_name, table_name, range_id;
ddl.sql (1 named queries)
-- name: by_object
-- dialect: cockroachdb
SELECT
    :schema_name::text AS schema_name,
    :object_name::text AS object_name,
    :object_type::text AS object_type,
    NULL::text AS ddl,
    'lossy'::text AS fidelity,
    'SHOW CREATE requires a safely quoted identifier and is not emitted by the bind-only query pack'::text AS warning
WHERE :object_name::text IS NOT NULL;
dependencies.sql (1 named queries)
-- name: by_schema
-- dialect: cockroachdb
SELECT
    tc.table_schema::text AS schema_name,
    tc.table_name::text AS object_name,
    'table'::text AS object_type,
    ccu.table_schema::text AS referenced_schema,
    ccu.table_name::text AS referenced_object,
    'table'::text AS referenced_object_type,
    'foreign_key'::text AS dependency_type,
    tc.constraint_name::text AS constraint_name
FROM information_schema.table_constraints tc
JOIN information_schema.constraint_column_usage ccu
  ON ccu.constraint_catalog = tc.constraint_catalog
 AND ccu.constraint_schema = tc.constraint_schema
 AND ccu.constraint_name = tc.constraint_name
WHERE tc.constraint_type = 'FOREIGN KEY'
  AND tc.table_schema = :schema_name
  AND (:object_name::text IS NULL OR tc.table_name = :object_name)
ORDER BY tc.table_schema, tc.table_name, tc.constraint_name;
foreign_keys.sql (2 named queries)
-- name: by_table
-- dialect: cockroachdb
SELECT
    tc.constraint_name::text AS constraint_name,
    kcu.column_name::text AS column_name,
    pk_kcu.table_name::text AS referenced_table,
    pk_kcu.column_name::text AS referenced_column,
    tc.table_name::text AS table_name,
    tc.table_schema::text AS table_schema,
    pk_kcu.table_schema::text AS referenced_schema,
    pk_kcu.table_schema::text AS referenced_table_schema,
    rc.delete_rule::text AS on_delete,
    rc.update_rule::text AS on_update
FROM information_schema.table_constraints tc
JOIN information_schema.key_column_usage kcu
  ON tc.constraint_catalog = kcu.constraint_catalog
  AND tc.constraint_schema = kcu.constraint_schema
  AND tc.constraint_name = kcu.constraint_name
JOIN information_schema.referential_constraints rc
  ON tc.constraint_catalog = rc.constraint_catalog
  AND tc.constraint_schema = rc.constraint_schema
  AND tc.constraint_name = rc.constraint_name
JOIN information_schema.key_column_usage pk_kcu
  ON rc.unique_constraint_catalog = pk_kcu.constraint_catalog
  AND rc.unique_constraint_schema = pk_kcu.constraint_schema
  AND rc.unique_constraint_name = pk_kcu.constraint_name
  AND COALESCE(kcu.position_in_unique_constraint, kcu.ordinal_position) = pk_kcu.ordinal_position
WHERE tc.constraint_type = 'FOREIGN KEY'
  AND tc.table_schema = :schema_name
  AND tc.table_name = :table_name
ORDER BY tc.constraint_name, kcu.ordinal_position;

-- name: by_schema
-- dialect: cockroachdb
SELECT
    tc.constraint_name::text AS constraint_name,
    kcu.column_name::text AS column_name,
    pk_kcu.table_name::text AS referenced_table,
    pk_kcu.column_name::text AS referenced_column,
    tc.table_name::text AS table_name,
    tc.table_schema::text AS table_schema,
    pk_kcu.table_schema::text AS referenced_schema,
    pk_kcu.table_schema::text AS referenced_table_schema,
    rc.delete_rule::text AS on_delete,
    rc.update_rule::text AS on_update
FROM information_schema.table_constraints tc
JOIN information_schema.key_column_usage kcu
  ON tc.constraint_catalog = kcu.constraint_catalog
  AND tc.constraint_schema = kcu.constraint_schema
  AND tc.constraint_name = kcu.constraint_name
JOIN information_schema.referential_constraints rc
  ON tc.constraint_catalog = rc.constraint_catalog
  AND tc.constraint_schema = rc.constraint_schema
  AND tc.constraint_name = rc.constraint_name
JOIN information_schema.key_column_usage pk_kcu
  ON rc.unique_constraint_catalog = pk_kcu.constraint_catalog
  AND rc.unique_constraint_schema = pk_kcu.constraint_schema
  AND rc.unique_constraint_name = pk_kcu.constraint_name
  AND COALESCE(kcu.position_in_unique_constraint, kcu.ordinal_position) = pk_kcu.ordinal_position
WHERE tc.constraint_type = 'FOREIGN KEY'
  AND tc.table_schema = :schema_name
ORDER BY tc.table_name, tc.constraint_name, kcu.ordinal_position;
indexes.sql (2 named queries)
-- name: by_schema
-- dialect: cockroachdb
SELECT
    table_schema::text AS schema_name,
    table_name::text AS table_name,
    index_name::text AS index_name,
    array_agg(column_name::text ORDER BY seq_in_index::int) AS columns,
    (non_unique = false OR non_unique::text IN ('0', 'f', 'false', 'NO')) AS is_unique,
    index_name = 'primary' AS is_primary
FROM information_schema.statistics
WHERE table_schema = :schema_name
  AND (:table_name::text IS NULL OR table_name = :table_name)
GROUP BY table_schema, table_name, index_name, non_unique
ORDER BY table_schema, table_name, index_name;

-- name: by_table
-- dialect: cockroachdb
SELECT
    i.relname::text AS index_name,
    t.relname::text AS table_name,
    ix.indisunique AS is_unique,
    ix.indisprimary AS is_primary,
    array_agg(a.attname::text ORDER BY array_position(ix.indkey, a.attnum)) AS columns
FROM pg_catalog.pg_class t
JOIN pg_catalog.pg_namespace n ON t.relnamespace = n.oid
JOIN pg_catalog.pg_index ix ON t.oid = ix.indrelid
JOIN pg_catalog.pg_class i ON i.oid = ix.indexrelid
JOIN pg_catalog.pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(ix.indkey)
WHERE t.relname = :table_name
  AND n.nspname = :schema_name
GROUP BY t.relname, i.relname, ix.indisunique, ix.indisprimary
ORDER BY i.relname;
objects.sql (1 named queries)
-- name: by_schema
-- dialect: cockroachdb
SELECT
    table_catalog::text AS catalog_name,
    table_schema::text AS schema_name,
    table_name::text AS object_name,
    CASE table_type
        WHEN 'BASE TABLE' THEN 'table'
        WHEN 'VIEW' THEN 'view'
        ELSE table_type::text
    END AS object_type,
    table_type::text AS native_object_type
FROM information_schema.tables
WHERE table_schema = :schema_name
ORDER BY table_schema, table_name;
privileges.sql (1 named queries)
-- name: by_schema
-- dialect: cockroachdb
SELECT
    table_schema::text AS schema_name,
    table_name::text AS object_name,
    grantee::text AS grantee,
    privilege_type::text AS privilege_type,
    is_grantable::text AS is_grantable,
    with_hierarchy::text AS with_hierarchy
FROM information_schema.table_privileges
WHERE table_schema = :schema_name
  AND (:object_name::text IS NULL OR table_name = :object_name)
ORDER BY table_schema, table_name, grantee, privilege_type;
schemas.sql (1 named queries)
-- name: list
-- dialect: cockroachdb
SELECT
    catalog_name::text AS catalog_name,
    schema_name::text AS schema_name,
    schema_owner::text AS owner_name
FROM information_schema.schemata
WHERE schema_name NOT LIKE 'pg\_%'
  AND schema_name <> 'information_schema'
ORDER BY schema_name;
sequences.sql (1 named queries)
-- name: by_schema
-- dialect: cockroachdb
SELECT
    sequence_schema::text AS schema_name,
    sequence_name::text AS sequence_name,
    data_type::text AS data_type,
    start_value::text AS start_value,
    minimum_value::text AS minimum_value,
    maximum_value::text AS maximum_value,
    increment::text AS increment,
    cycle_option::text AS cycle_option
FROM information_schema.sequences
WHERE sequence_schema = :schema_name
ORDER BY sequence_schema, sequence_name;
tables.sql (1 named queries)
-- name: by_schema
-- dialect: cockroachdb
SELECT
    table_catalog::text AS table_catalog,
    table_schema::text AS table_schema,
    table_schema::text AS schema_name,
    table_name::text AS table_name,
    table_type::text AS table_type,
    NULL::int AS dependency_level,
    NULL::int AS level
FROM information_schema.tables
WHERE table_schema = :schema_name
  AND (:table_name::text IS NULL OR table_name = :table_name)
  AND table_type = 'BASE TABLE'
ORDER BY table_schema, table_name;
version.sql (1 named queries)
-- name: current
-- dialect: cockroachdb
SELECT version();
views.sql (1 named queries)
-- name: by_schema
-- dialect: cockroachdb
SELECT
    table_schema::text AS schema_name,
    table_name::text AS view_name,
    view_definition::text AS definition,
    check_option::text AS check_option,
    is_updatable::text AS is_updatable
FROM information_schema.views
WHERE table_schema = :schema_name
ORDER BY table_schema, table_name;