(self, schema)
| 5531 | |
| 5532 | @lru_cache() |
| 5533 | def _domain_query(self, schema): |
| 5534 | con_sq = ( |
| 5535 | select( |
| 5536 | pg_catalog.pg_constraint.c.contypid, |
| 5537 | sql.func.array_agg( |
| 5538 | pg_catalog.pg_get_constraintdef( |
| 5539 | pg_catalog.pg_constraint.c.oid, True |
| 5540 | ) |
| 5541 | ).label("condefs"), |
| 5542 | sql.func.array_agg( |
| 5543 | # NOTE: cast since some postgresql derivatives may |
| 5544 | # not support array_agg on the name type |
| 5545 | pg_catalog.pg_constraint.c.conname.cast(TEXT) |
| 5546 | ).label("connames"), |
| 5547 | ) |
| 5548 | # The domain this constraint is on; zero if not a domain constraint |
| 5549 | .where(pg_catalog.pg_constraint.c.contypid != 0) |
| 5550 | .group_by(pg_catalog.pg_constraint.c.contypid) |
| 5551 | .subquery("domain_constraints") |
| 5552 | ) |
| 5553 | |
| 5554 | query = ( |
| 5555 | select( |
| 5556 | pg_catalog.pg_type.c.typname.label("name"), |
| 5557 | pg_catalog.format_type( |
| 5558 | pg_catalog.pg_type.c.typbasetype, |
| 5559 | pg_catalog.pg_type.c.typtypmod, |
| 5560 | ).label("attype"), |
| 5561 | (~pg_catalog.pg_type.c.typnotnull).label("nullable"), |
| 5562 | pg_catalog.pg_type.c.typdefault.label("default"), |
| 5563 | pg_catalog.pg_type_is_visible(pg_catalog.pg_type.c.oid).label( |
| 5564 | "visible" |
| 5565 | ), |
| 5566 | pg_catalog.pg_namespace.c.nspname.label("schema"), |
| 5567 | con_sq.c.condefs, |
| 5568 | con_sq.c.connames, |
| 5569 | pg_catalog.pg_collation.c.collname, |
| 5570 | ) |
| 5571 | .join( |
| 5572 | pg_catalog.pg_namespace, |
| 5573 | pg_catalog.pg_namespace.c.oid |
| 5574 | == pg_catalog.pg_type.c.typnamespace, |
| 5575 | ) |
| 5576 | .outerjoin( |
| 5577 | pg_catalog.pg_collation, |
| 5578 | pg_catalog.pg_type.c.typcollation |
| 5579 | == pg_catalog.pg_collation.c.oid, |
| 5580 | ) |
| 5581 | .outerjoin( |
| 5582 | con_sq, |
| 5583 | pg_catalog.pg_type.c.oid == con_sq.c.contypid, |
| 5584 | ) |
| 5585 | .where(pg_catalog.pg_type.c.typtype == "d") |
| 5586 | .order_by( |
| 5587 | pg_catalog.pg_namespace.c.nspname, pg_catalog.pg_type.c.typname |
| 5588 | ) |
| 5589 | ) |
| 5590 | return self._pg_type_filter_schema(query, schema) |
no test coverage detected