(self, schema)
| 5384 | |
| 5385 | @lru_cache() |
| 5386 | def _domain_query(self, schema): |
| 5387 | con_sq = ( |
| 5388 | select( |
| 5389 | pg_catalog.pg_constraint.c.contypid, |
| 5390 | sql.func.array_agg( |
| 5391 | pg_catalog.pg_get_constraintdef( |
| 5392 | pg_catalog.pg_constraint.c.oid, True |
| 5393 | ) |
| 5394 | ).label("condefs"), |
| 5395 | sql.func.array_agg( |
| 5396 | # NOTE: cast since some postgresql derivatives may |
| 5397 | # not support array_agg on the name type |
| 5398 | pg_catalog.pg_constraint.c.conname.cast(TEXT) |
| 5399 | ).label("connames"), |
| 5400 | ) |
| 5401 | # The domain this constraint is on; zero if not a domain constraint |
| 5402 | .where(pg_catalog.pg_constraint.c.contypid != 0) |
| 5403 | .group_by(pg_catalog.pg_constraint.c.contypid) |
| 5404 | .subquery("domain_constraints") |
| 5405 | ) |
| 5406 | |
| 5407 | query = ( |
| 5408 | select( |
| 5409 | pg_catalog.pg_type.c.typname.label("name"), |
| 5410 | pg_catalog.format_type( |
| 5411 | pg_catalog.pg_type.c.typbasetype, |
| 5412 | pg_catalog.pg_type.c.typtypmod, |
| 5413 | ).label("attype"), |
| 5414 | (~pg_catalog.pg_type.c.typnotnull).label("nullable"), |
| 5415 | pg_catalog.pg_type.c.typdefault.label("default"), |
| 5416 | pg_catalog.pg_type_is_visible(pg_catalog.pg_type.c.oid).label( |
| 5417 | "visible" |
| 5418 | ), |
| 5419 | pg_catalog.pg_namespace.c.nspname.label("schema"), |
| 5420 | con_sq.c.condefs, |
| 5421 | con_sq.c.connames, |
| 5422 | pg_catalog.pg_collation.c.collname, |
| 5423 | ) |
| 5424 | .join( |
| 5425 | pg_catalog.pg_namespace, |
| 5426 | pg_catalog.pg_namespace.c.oid |
| 5427 | == pg_catalog.pg_type.c.typnamespace, |
| 5428 | ) |
| 5429 | .outerjoin( |
| 5430 | pg_catalog.pg_collation, |
| 5431 | pg_catalog.pg_type.c.typcollation |
| 5432 | == pg_catalog.pg_collation.c.oid, |
| 5433 | ) |
| 5434 | .outerjoin( |
| 5435 | con_sq, |
| 5436 | pg_catalog.pg_type.c.oid == con_sq.c.contypid, |
| 5437 | ) |
| 5438 | .where(pg_catalog.pg_type.c.typtype == "d") |
| 5439 | .order_by( |
| 5440 | pg_catalog.pg_namespace.c.nspname, pg_catalog.pg_type.c.typname |
| 5441 | ) |
| 5442 | ) |
| 5443 | return self._pg_type_filter_schema(query, schema) |
no test coverage detected