]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
Add new sane_rowcount_w_returning flag
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 31 Aug 2017 17:12:50 +0000 (13:12 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 31 Aug 2017 17:20:57 +0000 (13:20 -0400)
commitb9b1e374bfbcece8259a4df5372ca68d45aaaf01
tree6bc5294257c158ffdf4409dde52ff5449c70a79b
parentd0470e296ea589620c94d8f2dd37e94b8f03842a
Add new sane_rowcount_w_returning flag

Added a new class of "rowcount support" for dialects that is specific to
when "RETURNING", which on SQL Server looks like "OUTPUT inserted", is in
use, as the PyODBC backend isn't able to give us rowcount on an UPDATE or
DELETE statement when OUTPUT is in effect.  This primarily affects the ORM
when a flush is updating a row that contains server-calcluated values,
raising an error if the backend does not return the expected row count.
PyODBC now states that it supports rowcount except if OUTPUT.inserted is
present, which is taken into account by the ORM during a flush as to
whether it will look for a rowcount.

ORM tests are implicit in existing tests run against PyODBC

Fixes: #4062
Change-Id: Iff17cbe4c7a5742971ed85a4d58660c18cc569c2
doc/build/changelog/unreleased_12/4062.rst [new file with mode: 0644]
lib/sqlalchemy/connectors/pyodbc.py
lib/sqlalchemy/engine/default.py
lib/sqlalchemy/orm/persistence.py
lib/sqlalchemy/testing/requirements.py
test/requirements.py
test/sql/test_rowcount.py