]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
add eager_defaults="auto" for inserts
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 9 Dec 2022 00:31:37 +0000 (19:31 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 15 Dec 2022 17:59:35 +0000 (12:59 -0500)
commit8e4e325319eaadb81cc1b6e8c8db7cc1a6b920bd
tree848d4716a1388e22e19314bf29d0acf1efc83038
parente0eea374c2df82f879d69b99ba2230c743bbae27
add eager_defaults="auto" for inserts

Added a new default value for the :paramref:`.Mapper.eager_defaults`
parameter "auto", which will automatically fetch table default values
during a unit of work flush, if the dialect supports RETURNING for the
INSERT being run, as well as
:ref:`insertmanyvalues <engine_insertmanyvalues>` available. Eager fetches
for server-side UPDATE defaults, which are very uncommon, continue to only
take place if :paramref:`.Mapper.eager_defaults` is set to ``True``, as
there is no batch-RETURNING form for UPDATE statements.

Fixes: #8889
Change-Id: I84b91092a37c4cd216e060513acde3eb0298abe9
13 files changed:
doc/build/changelog/unreleased_20/8889.rst [new file with mode: 0644]
doc/build/changelog/whatsnew_20.rst
doc/build/orm/persistence_techniques.rst
lib/sqlalchemy/dialects/mssql/base.py
lib/sqlalchemy/orm/mapper.py
lib/sqlalchemy/orm/persistence.py
lib/sqlalchemy/testing/__init__.py
lib/sqlalchemy/testing/config.py
test/orm/inheritance/test_basic.py
test/orm/test_defaults.py
test/orm/test_expire.py
test/orm/test_unitofwork.py
test/orm/test_unitofworkv2.py