:tags: engine, bug, postgresql
:tickets: 3247
- The :meth:`_engine.Inspector.reflect_table` method now supports reflecting
- tables that do not have user defined columns. This allows
+ The :meth:`_reflection.Inspector.reflect_table` method now supports
+ reflecting tables that do not have user defined columns. This allows
:meth:`_schema.MetaData.reflect` to properly complete reflection on
- databases that contain such tables. Currently, only PostgreSQL is known
- to support such a construct among the common database backends.
+ databases that contain such tables. Currently, only PostgreSQL is known to
+ support such a construct among the common database backends.
The automatic aliasing within ORM join() which occurs for overlapping
mapped tables does not work consistently with all APIs such as
- ``contains_eager()``, and rather than continue to try to make these use
- cases work everywhere, replacing with a more user-explicit pattern
- is clearer, less prone to bugs and simplifies SQLAlchemy's internals
- further.
+ :func:`_orm.contains_eager()`, and rather than continue to try to make
+ these use cases work everywhere, replacing with a more user-explicit
+ pattern is clearer, less prone to bugs and simplifies SQLAlchemy's
+ internals further.
The warnings include links to the errors.rst page where each pattern is
demonstrated along with the recommended pattern to fix.
:tags: bug, sql
:tickets: 7061
- Account for ``schema`` in :func:`_sql.table` ``fullname`` attribute.
+ Account for the :paramref:`_sql.table.schema` parameter passed to
+ the :func:`_sql.table` construct, such that it is taken into account
+ when accessing the :attr:`_sql.TableClause.fullname` attribute.
.. change::
- :tags: bug
+ :tags: bug, orm
:tickets: 7103
- Add missing methods added in :ticket:`6991` to ``scoped_session`` and
- ``async_scoped_session``.
+ Add missing methods added in :ticket:`6991` to
+ :class:`_scoping.scoped_session` and :func:`_asyncio.async_scoped_session`.
Fixed bug where iterating a :class:`.Result` from a :class:`_orm.Session`
after that :class:`_orm.Session` were closed would partially attach objects
- to that session in an essentially invalid state. It now raises an exception
+ to that session in an essentially invalid state. It now raises an exception
with a link to new documentation if an **un-buffered** result is iterated
from a :class:`_orm.Session` that was closed or otherwise had the
:meth:`_orm.Session.expunge_all` method called after that :class:`.Result`
- was generated. The "prebuffer_rows" execution option, as is used by the
- asyncio extension, may be used to produce a :class:`.Result` where the ORM
- objects are prebuffered, and in this case iterating the result will produce
- a series of detached objects.
+ was generated. The ``prebuffer_rows`` execution option, as is used
+ automatically by the asyncio extension for client-side result sets, may be
+ used to produce a :class:`.Result` where the ORM objects are prebuffered,
+ and in this case iterating the result will produce a series of detached
+ objects.
.. seealso::
:tags: bug, mssql, regression
:tickets: 7129
- Fixed bug in SQL Server ``DATETIMEOFFSET`` where the ODBC implementation
- would not generate the correct DDL, for cases where the type were converted
- using the ``dialect.type_descriptor()`` method, the usage of which is
- illustrated in some documented examples for :class:`.TypeDecorator`, though
- not necessary for most datatypes. Regression was introduced by
- :ticket:`6366`. As part of this change, the full list of SQL Server date
- types have been amended to return a "dialect impl" that generates the same
- DDL name as the supertype.
+ Fixed bug in SQL Server :class:`_mssql.DATETIMEOFFSET` datatype where the
+ ODBC implementation would not generate the correct DDL, for cases where the
+ type were converted using the ``dialect.type_descriptor()`` method, the
+ usage of which is illustrated in some documented examples for
+ :class:`.TypeDecorator`, though not necessary for most datatypes.
+ Regression was introduced by :ticket:`6366`. As part of this change, the
+ full list of SQL Server date types have been amended to return a "dialect
+ impl" that generates the same DDL name as the supertype.
:tags: bug, sql
:tickets: 7140
- Fixed an inconsistency in the any_() / all_() functions / methods where the
- special behavior these functions have of "flipping" the expression such
- that the "ANY" / "ALL" expression is always on the right side would not
- function if the comparison were against the None value, that is,
- "column.any_() == None" should produce the same SQL expression as "null()
- == column.any_()". Added more docs to clarify this as well, plus mentions
- that any_() / all_() generally supersede the ARRAY version "any()" /
- "all()".
+ Fixed an inconsistency in the :meth:`_sql.ColumnOperators.any_` /
+ :meth:`_sql.ColumnOperators.all_` functions / methods where the special
+ behavior these functions have of "flipping" the expression such that the
+ "ANY" / "ALL" expression is always on the right side would not function if
+ the comparison were against the None value, that is, "column.any_() ==
+ None" should produce the same SQL expression as "null() == column.any_()".
+ Added more docs to clarify this as well, plus mentions that any_() / all_()
+ generally supersede the ARRAY version "any()" / "all()".
Repaired the examples in examples/versioned_rows to use SQLAlchemy 1.4 APIs
correctly; these examples had been missed when API changes like removing
- "passive" from ``Session.is_modified()`` were made as well as the
- ``do_orm_execute()`` event hook were added.
+ "passive" from :meth:`_orm.Session.is_modified` were made as well as the
+ :meth:`_ormevents.SessionEvents.do_orm_execute()` event hook were added.
# ORM is sqlalchemy.orm.<cls>.
"_ormevent": "sqlalchemy.orm",
"_ormevents": "sqlalchemy.orm",
+ "_scoping": "sqlalchemy.orm.scoping",
"_exc": "sqlalchemy.exc",
"_reflection": "sqlalchemy.engine.reflection",
"_orm": "sqlalchemy.orm",