(self, schema)
| 5469 | |
| 5470 | @lru_cache() |
| 5471 | def _enum_query(self, schema): |
| 5472 | lbl_agg_sq = ( |
| 5473 | select( |
| 5474 | pg_catalog.pg_enum.c.enumtypid, |
| 5475 | sql.func.array_agg( |
| 5476 | aggregate_order_by( |
| 5477 | # NOTE: cast since some postgresql derivatives may |
| 5478 | # not support array_agg on the name type |
| 5479 | pg_catalog.pg_enum.c.enumlabel.cast(TEXT), |
| 5480 | pg_catalog.pg_enum.c.enumsortorder, |
| 5481 | ) |
| 5482 | ).label("labels"), |
| 5483 | ) |
| 5484 | .group_by(pg_catalog.pg_enum.c.enumtypid) |
| 5485 | .subquery("lbl_agg") |
| 5486 | ) |
| 5487 | |
| 5488 | query = ( |
| 5489 | select( |
| 5490 | pg_catalog.pg_type.c.typname.label("name"), |
| 5491 | pg_catalog.pg_type_is_visible(pg_catalog.pg_type.c.oid).label( |
| 5492 | "visible" |
| 5493 | ), |
| 5494 | pg_catalog.pg_namespace.c.nspname.label("schema"), |
| 5495 | lbl_agg_sq.c.labels.label("labels"), |
| 5496 | ) |
| 5497 | .join( |
| 5498 | pg_catalog.pg_namespace, |
| 5499 | pg_catalog.pg_namespace.c.oid |
| 5500 | == pg_catalog.pg_type.c.typnamespace, |
| 5501 | ) |
| 5502 | .outerjoin( |
| 5503 | lbl_agg_sq, pg_catalog.pg_type.c.oid == lbl_agg_sq.c.enumtypid |
| 5504 | ) |
| 5505 | .where(pg_catalog.pg_type.c.typtype == "e") |
| 5506 | .order_by( |
| 5507 | pg_catalog.pg_namespace.c.nspname, pg_catalog.pg_type.c.typname |
| 5508 | ) |
| 5509 | ) |
| 5510 | |
| 5511 | return self._pg_type_filter_schema(query, schema) |
| 5512 | |
| 5513 | @reflection.cache |
| 5514 | def _load_enums(self, connection, schema=None, **kw): |
no test coverage detected