MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / _enum_query

Method _enum_query

lib/sqlalchemy/dialects/postgresql/base.py:5324–5364  ·  view source on GitHub ↗
(self, schema)

Source from the content-addressed store, hash-verified

5322
5323 @lru_cache()
5324 def _enum_query(self, schema):
5325 lbl_agg_sq = (
5326 select(
5327 pg_catalog.pg_enum.c.enumtypid,
5328 sql.func.array_agg(
5329 aggregate_order_by(
5330 # NOTE: cast since some postgresql derivatives may
5331 # not support array_agg on the name type
5332 pg_catalog.pg_enum.c.enumlabel.cast(TEXT),
5333 pg_catalog.pg_enum.c.enumsortorder,
5334 )
5335 ).label("labels"),
5336 )
5337 .group_by(pg_catalog.pg_enum.c.enumtypid)
5338 .subquery("lbl_agg")
5339 )
5340
5341 query = (
5342 select(
5343 pg_catalog.pg_type.c.typname.label("name"),
5344 pg_catalog.pg_type_is_visible(pg_catalog.pg_type.c.oid).label(
5345 "visible"
5346 ),
5347 pg_catalog.pg_namespace.c.nspname.label("schema"),
5348 lbl_agg_sq.c.labels.label("labels"),
5349 )
5350 .join(
5351 pg_catalog.pg_namespace,
5352 pg_catalog.pg_namespace.c.oid
5353 == pg_catalog.pg_type.c.typnamespace,
5354 )
5355 .outerjoin(
5356 lbl_agg_sq, pg_catalog.pg_type.c.oid == lbl_agg_sq.c.enumtypid
5357 )
5358 .where(pg_catalog.pg_type.c.typtype == "e")
5359 .order_by(
5360 pg_catalog.pg_namespace.c.nspname, pg_catalog.pg_type.c.typname
5361 )
5362 )
5363
5364 return self._pg_type_filter_schema(query, schema)
5365
5366 @reflection.cache
5367 def _load_enums(self, connection, schema=None, **kw):

Callers 1

_load_enumsMethod · 0.95

Calls 12

selectFunction · 0.90
aggregate_order_byClass · 0.85
array_aggMethod · 0.80
subqueryMethod · 0.45
group_byMethod · 0.45
labelMethod · 0.45
castMethod · 0.45
order_byMethod · 0.45
whereMethod · 0.45
outerjoinMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected