Build the unified Core sys.* select for column reflection. Returns a ``select()`` that includes ``table_name`` and ``owner`` in the result so callers can group rows by table. Used by :meth:`.get_multi_columns` (and indirectly by :meth:`.get_columns` via the multi de
(self)
| 3634 | |
| 3635 | @lru_cache() |
| 3636 | def _columns_select(self): |
| 3637 | """Build the unified Core sys.* select for column reflection. |
| 3638 | |
| 3639 | Returns a ``select()`` that includes ``table_name`` and ``owner`` |
| 3640 | in the result so callers can group rows by table. |
| 3641 | |
| 3642 | Used by :meth:`.get_multi_columns` (and indirectly by |
| 3643 | :meth:`.get_columns` via the multi delegation). |
| 3644 | """ |
| 3645 | sys_columns = ischema.sys_columns |
| 3646 | sys_types = ischema.sys_types |
| 3647 | sys_base_types = ischema.sys_types.alias("base_types") |
| 3648 | sys_default_constraints = ischema.sys_default_constraints |
| 3649 | computed_cols = ischema.computed_columns |
| 3650 | identity_cols = ischema.identity_columns |
| 3651 | extended_properties = ischema.extended_properties |
| 3652 | sys_objects = ischema.sys_objects |
| 3653 | sys_schemas = ischema.sys_schemas |
| 3654 | |
| 3655 | if self._supports_nvarchar_max: |
| 3656 | computed_definition = computed_cols.c.definition |
| 3657 | else: |
| 3658 | # tds_version 4.2 does not support NVARCHAR(MAX) |
| 3659 | computed_definition = sql.cast( |
| 3660 | computed_cols.c.definition, NVARCHAR(4000) |
| 3661 | ) |
| 3662 | |
| 3663 | s = ( |
| 3664 | sql.select( |
| 3665 | sys_objects.c.name.label("table_name"), |
| 3666 | sys_schemas.c.name.label("owner"), |
| 3667 | sys_columns.c.name.label("column_name"), |
| 3668 | sys_types.c.name.label("type_name"), |
| 3669 | sys_base_types.c.name.label("base_type"), |
| 3670 | sys_columns.c.is_nullable, |
| 3671 | sys_columns.c.max_length, |
| 3672 | sys_columns.c.precision, |
| 3673 | sys_columns.c.scale, |
| 3674 | sys_default_constraints.c.definition.label("default_value"), |
| 3675 | sys_columns.c.collation_name, |
| 3676 | computed_definition.label("computed_definition"), |
| 3677 | computed_cols.c.is_persisted, |
| 3678 | identity_cols.c.is_identity, |
| 3679 | identity_cols.c.seed_value, |
| 3680 | identity_cols.c.increment_value, |
| 3681 | extended_properties.c.value.label("comment"), |
| 3682 | sys_columns.c.column_id, |
| 3683 | ) |
| 3684 | .select_from(sys_columns) |
| 3685 | .join( |
| 3686 | sys_objects, |
| 3687 | onclause=sys_columns.c.object_id == sys_objects.c.object_id, |
| 3688 | ) |
| 3689 | .join( |
| 3690 | sys_schemas, |
| 3691 | onclause=sys_objects.c.schema_id == sys_schemas.c.schema_id, |
| 3692 | ) |
| 3693 | .join( |
no test coverage detected