]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
cx_Oracle modernize
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 4 Apr 2022 14:13:23 +0000 (10:13 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 7 Apr 2022 14:47:53 +0000 (10:47 -0400)
commit2acc9ec1281b2818bd44804f040d94ec46215688
tree40e77ef66a8682b4a1d885575412a78152806397
parent3b4d62f4f72e8dfad7f38db192a6a90a8551608c
cx_Oracle modernize

Full "RETURNING" support is implemented for the cx_Oracle dialect, meaning
multiple RETURNING rows are now recived for DML statements that produce
more than one row for RETURNING.

cx_Oracle 7 is now the minimum version for cx_Oracle.

Getting Oracle to do multirow returning took about 5 minutes.  however,
getting Oracle's RETURNING system to integrate with ORM-enabled
insert, update, delete, is a big deal because that architecture wasn't
really working very robustly, including some recent changes in 1.4
for FromStatement were done in a hurry, so this patch also cleans up
the FromStatement situation and begins to establish it more concretely
as the base for all ReturnsRows / TextClause ORM scenarios.

Fixes: #6245
Change-Id: I2b4e6007affa51ce311d2d5baa3917f356ab961f
24 files changed:
doc/build/changelog/unreleased_20/6245.rst [new file with mode: 0644]
lib/sqlalchemy/dialects/mssql/base.py
lib/sqlalchemy/dialects/oracle/base.py
lib/sqlalchemy/dialects/oracle/cx_oracle.py
lib/sqlalchemy/dialects/postgresql/base.py
lib/sqlalchemy/dialects/postgresql/psycopg2.py
lib/sqlalchemy/engine/default.py
lib/sqlalchemy/orm/_typing.py [new file with mode: 0644]
lib/sqlalchemy/orm/context.py
lib/sqlalchemy/orm/query.py
lib/sqlalchemy/sql/_typing.py
lib/sqlalchemy/sql/base.py
lib/sqlalchemy/sql/compiler.py
lib/sqlalchemy/sql/crud.py
lib/sqlalchemy/sql/dml.py
lib/sqlalchemy/sql/elements.py
lib/sqlalchemy/sql/selectable.py
setup.cfg
test/dialect/oracle/test_dialect.py
test/engine/test_deprecations.py
test/ext/declarative/test_reflection.py
test/orm/test_session.py
test/orm/test_transaction.py
test/sql/test_insert.py