]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/log
thirdparty/sqlalchemy/sqlalchemy.git
11 months agoFix the runtime issue related to the join operation in the association example (...
BOBOTANG [Wed, 4 Sep 2024 18:26:52 +0000 (02:26 +0800)] 
Fix the runtime issue related to the join operation in the association example (#11721)

11 months agoInclude operators in postgres JSONB documentation (#11828)
Jimmy AUDEBERT [Wed, 4 Sep 2024 17:23:53 +0000 (19:23 +0200)] 
Include operators in postgres JSONB documentation (#11828)

11 months agofix typo in `elect.slice` docs
Federico Caselli [Wed, 4 Sep 2024 17:10:31 +0000 (19:10 +0200)] 
fix typo in `elect.slice` docs

Change-Id: I859b48e320a04cedc6084d067cb20b89ac5d76bb

11 months agocherry-pick changelog update for 2.0.35
Mike Bayer [Wed, 4 Sep 2024 15:19:59 +0000 (11:19 -0400)] 
cherry-pick changelog update for 2.0.35

11 months agocherry-pick changelog from 2.0.34
Mike Bayer [Wed, 4 Sep 2024 15:19:59 +0000 (11:19 -0400)] 
cherry-pick changelog from 2.0.34

11 months agoFix regular expression for `SQLiteDialect.get_check_constraints`
Mike Bayer [Wed, 4 Sep 2024 12:45:52 +0000 (08:45 -0400)] 
Fix regular expression for `SQLiteDialect.get_check_constraints`

Fixed regression in SQLite reflection caused by :ticket:`11677` which
interfered with reflection for CHECK constraints that were followed
by other kinds of constraints within the same table definition.   Pull
request courtesy Harutaka Kawamura.

Fixes: #11832
Closes: #11834
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11834
Pull-request-sha: a10fcef45ccfad6ebf17ec94fc48d0965f0d4123

Change-Id: I50bcc7aa727f73be235895d154cd859f19adda09

11 months agouse proper functions to get typing origin, args
Mike Bayer [Wed, 4 Sep 2024 03:08:21 +0000 (23:08 -0400)] 
use proper functions to get typing origin, args

Fixed regression caused by issue :ticket:`11814` which broke support for
certain flavors of :pep:`593` ``Annotated`` in the type_annotation_map when
builtin types such as ``list``, ``dict`` were used without an element type.
While this is an incomplete style of typing, these types nonetheless
previously would be located in the type_annotation_map correctly.

Fixes: #11831
Change-Id: I6ea7fc1bce462d44ffcf67ef18b60050dfc2c91e

11 months agocherry-pick changelog update for 2.0.34
Mike Bayer [Tue, 3 Sep 2024 17:22:39 +0000 (13:22 -0400)] 
cherry-pick changelog update for 2.0.34

11 months agocherry-pick changelog from 2.0.33
Mike Bayer [Tue, 3 Sep 2024 17:22:38 +0000 (13:22 -0400)] 
cherry-pick changelog from 2.0.33

11 months agochangelog categorization fixes, typos
Mike Bayer [Tue, 3 Sep 2024 16:54:22 +0000 (12:54 -0400)] 
changelog categorization fixes, typos

Change-Id: I1292ad4c8a671a98d23861281a8d36e2ab8a6f55

11 months agoMerge "add asyncio.CancelledError to terminate conditions" into main
Michael Bayer [Tue, 3 Sep 2024 14:15:09 +0000 (14:15 +0000)] 
Merge "add asyncio.CancelledError to terminate conditions" into main

11 months agoMerge "unpin setuptools" into main
Michael Bayer [Mon, 2 Sep 2024 23:44:39 +0000 (23:44 +0000)] 
Merge "unpin setuptools" into main

11 months agoMerge "add "The server failed to resume the transaction" to pymssql" into main
Michael Bayer [Mon, 2 Sep 2024 23:42:46 +0000 (23:42 +0000)] 
Merge "add "The server failed to resume the transaction" to pymssql" into main

11 months agoadd "The server failed to resume the transaction" to pymssql
Mike Bayer [Mon, 2 Sep 2024 15:22:36 +0000 (11:22 -0400)] 
add "The server failed to resume the transaction" to pymssql

Added error "The server failed to resume the transaction" to the list of
error strings for the pymssql driver in determining a disconnect scenario,
as observed by one user using pymssql under otherwise unknown conditions as
leaving an unusable connection in the connection pool which fails to ping
cleanly.

Fixes: #11822
Change-Id: I1cf98046978b10775f19531878b597d32b056f13

11 months agodont erase transaction if rollback/commit failed outside of asyncpg
Mike Bayer [Mon, 2 Sep 2024 14:37:29 +0000 (10:37 -0400)] 
dont erase transaction if rollback/commit failed outside of asyncpg

Fixed critical issue in the asyncpg driver where a rollback or commit that
fails specifically for the ``MissingGreenlet`` condition or any other error
that is not raised by asyncpg itself would discard the asyncpg transaction
in any case, even though the transaction were still idle, leaving to a
server side condition with an idle transaction that then goes back into the
connection pool.   The flags for "transaction closed" are now not reset for
errors that are raised outside of asyncpg itself.  When asyncpg itself
raises an error for ``.commit()`` or ``.rollback()``, asyncpg does then
discard of this transaction.

Fixes: #11819
Change-Id: I12f0532788b03ea63fb47a7af21e07c37effb070

11 months agounpin setuptools
Mike Bayer [Mon, 2 Sep 2024 13:13:27 +0000 (09:13 -0400)] 
unpin setuptools

This removes the pin that was placed in 2607262110bdc5c5dc96fc19ddca895a15a58e4e

The pin for ``setuptools<69.3`` in ``pyproject.toml`` has been
removed.  This pin was to prevent a sudden change to :pep:`625` in
setuptools from taking place which changes the file name of SQLAlchemy's
source distribution on pypi to be an all lower case name, which is very
likely to cause problems with various build environments that expected a
particular naming style.  However, the presence of this pin is now holding
back environments that otherwise want to use a newer setuptools, so we've
decided to move forward with this change, with the assumption that build
environments will have largely accommodated the setuptools change by
now.

References: #11818
Change-Id: I0cd9ab0512004669a8f0aa0cb7f560d89a2da2bd

11 months agoadd asyncio.CancelledError to terminate conditions
Mike Bayer [Mon, 2 Sep 2024 15:18:35 +0000 (11:18 -0400)] 
add asyncio.CancelledError to terminate conditions

Revising the asyncpg ``terminate()`` fix first made in :ticket:`10717`
which improved the resiliency of this call under all circumstances, adding
``asyncio.CancelledError`` to the list of exceptions that are intercepted
as failing for a graceful ``.close()`` which will then proceed to call
``.terminate()``.

Fixes: #11821
Change-Id: Ic5e21cd18cc5517aae372560c52b2b2396c65483

11 months agore-process args for builtin generic types
Mike Bayer [Sat, 31 Aug 2024 16:56:00 +0000 (12:56 -0400)] 
re-process args for builtin generic types

Improvements to the ORM annotated declarative type map lookup dealing with
composed types such as ``dict[str, Any]`` linking to JSON (or others) with
or without "future annotations" mode.

There's apparently a big incompatiblity in types from typing vs.
Python builtins in the way they genericize.   The typing library makes
it very difficult to distinguish between the two sets of types.  This
patch is a bit slash and burn to work around all this.   These should
likely be reported as bugs in the Python standard library if they
aren't already.

Fixes: #11814
Change-Id: I56a62701d5e883be04df7f45fd9429bb9c1c9a6f

11 months agoMerge "Fix select.with_only_columns type hints" into main
Michael Bayer [Sat, 31 Aug 2024 15:00:16 +0000 (15:00 +0000)] 
Merge "Fix select.with_only_columns type hints" into main

11 months agopass to_metadata argument to Enum.copy()
Mike Bayer [Thu, 29 Aug 2024 14:04:47 +0000 (10:04 -0400)] 
pass to_metadata argument to Enum.copy()

Fixed bug where the ``metadata`` element of an ``Enum`` datatype would not
be transferred to the new :class:`.MetaData` object when the type had been
copied via a :meth:`.Table.to_metadata` operation, leading to inconsistent
behaviors within create/drop sequences.

Fixes: #11802
Change-Id: Ibbc93aa31bdfde0d67a9530f41a08e826c17d58e

11 months agoFix select.with_only_columns type hints
Federico Caselli [Tue, 27 Aug 2024 18:02:00 +0000 (20:02 +0200)] 
Fix select.with_only_columns type hints

Fixes: #11782
Change-Id: Idce218a9730986d3ca70547c83aa1c0f8b5ee5b2

11 months agoMerge "Fix memory leak on top-level _ModuleMarker." into main
Michael Bayer [Wed, 28 Aug 2024 15:55:06 +0000 (15:55 +0000)] 
Merge "Fix memory leak on top-level _ModuleMarker." into main

11 months agoUpdate SQLite UNIQUE inline constraint parsing to handle tabs
John A Stevenson [Mon, 26 Aug 2024 15:05:38 +0000 (11:05 -0400)] 
Update SQLite UNIQUE inline constraint parsing to handle tabs

Improvements to the regex used by the SQLite dialect to reflect the name
and contents of a UNIQUE constraint that is defined inline within a column
definition inside of a SQLite CREATE TABLE statement, accommodating for tab
characters present within the column / constraint line. Pull request
courtesy John A Stevenson.

Fixes: #11746
Closes: #11759
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11759
Pull-request-sha: 5752491154ad19e29abec8d69fa4076d996d964e

Change-Id: I048a90c992bfaf6857c1150f50bf3c6cc5697095

11 months agoFix memory leak on top-level _ModuleMarker.
Federico Caselli [Tue, 27 Aug 2024 17:20:44 +0000 (19:20 +0200)] 
Fix memory leak on top-level _ModuleMarker.

Correctly cleanup the internal top-level module registry when no
inner modules or classes are registered into it.

Fixes: #11788
Change-Id: I489dd6394dd3f14458379368b8c8f18d5a0bb109

11 months agoUpdate link for sqlalchemy-pytds dialect (#11786)
Gord Thompson [Sun, 25 Aug 2024 21:53:59 +0000 (15:53 -0600)] 
Update link for sqlalchemy-pytds dialect (#11786)

11 months agoadd missing slash for sqlite URL with explicit :memory:
Mike Bayer [Wed, 21 Aug 2024 14:49:27 +0000 (10:49 -0400)] 
add missing slash for sqlite URL with explicit :memory:

Fixes: #11772
Change-Id: I3bdb1c81c5a503cb16143c9d1c130ec79769fbca

11 months agoRevert "Update bug_report.yaml"
Mike Bayer [Tue, 20 Aug 2024 02:40:44 +0000 (22:40 -0400)] 
Revert "Update bug_report.yaml"

This reverts commit 09f8ff139ab2cbc69c9d8969af5c439b92c8a160.

11 months agoUpdate bug_report.yaml
Michael Bayer [Tue, 20 Aug 2024 02:39:12 +0000 (22:39 -0400)] 
Update bug_report.yaml

11 months agotry a new bug template.
Mike Bayer [Mon, 19 Aug 2024 20:53:34 +0000 (16:53 -0400)] 
try a new bug template.

i really dont want people opening issues, saying things like
"this is not correct", etc.   Let's talk about the problem you
have and what's the ideal outcome.  thanks

Change-Id: Ia74a067f14cc30b84c6710c5a897cc35ce284bf4

11 months agoFix docs link to Oracle Cloud Autonomous Databases (#11762)
Edgar Ramírez Mondragón [Mon, 19 Aug 2024 18:17:54 +0000 (12:17 -0600)] 
Fix docs link to Oracle Cloud Autonomous Databases (#11762)

11 months agoremove print statement
Mike Bayer [Thu, 15 Aug 2024 12:46:13 +0000 (08:46 -0400)] 
remove print statement

Change-Id: I33c9f7daee1034639bb0725b114f6e48803a4fed

11 months agoMerge "Reflect broader range of check constraints for SQLite." into main
Michael Bayer [Thu, 15 Aug 2024 12:38:29 +0000 (12:38 +0000)] 
Merge "Reflect broader range of check constraints for SQLite." into main

11 months agoMerge "omit mysql8 dupe key alias for INSERT..FROM SELECT" into main
Michael Bayer [Wed, 14 Aug 2024 14:28:19 +0000 (14:28 +0000)] 
Merge "omit mysql8 dupe key alias for INSERT..FROM SELECT" into main

11 months agoMerge "de-memoize _proxy_key when new annotations are added" into main
Michael Bayer [Wed, 14 Aug 2024 14:04:42 +0000 (14:04 +0000)] 
Merge "de-memoize _proxy_key when new annotations are added" into main

11 months agoMerge "handle quoted_name instances separately in engine.reflection.cache" into main
Michael Bayer [Tue, 13 Aug 2024 20:45:56 +0000 (20:45 +0000)] 
Merge "handle quoted_name instances separately in engine.reflection.cache" into main

11 months agoReflect broader range of check constraints for SQLite.
Jeff Horemans [Tue, 13 Aug 2024 15:22:51 +0000 (11:22 -0400)] 
Reflect broader range of check constraints for SQLite.

Improvements to the regex used by the SQLite dialect to reflect the name
and contents of a CHECK constraint.  Constraints with newline, tab, or
space characters in either or both the constraint text and constraint name
are now properly reflected.   Pull request courtesy Jeff Horemans.

Fixes: #11677
Closes: #11701
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11701
Pull-request-sha: b2d629f18695ecb08cddeb99d7c2573e1f3d04b2

Change-Id: I2dd06c778e7c130848e418a80004032eb6144e6d

11 months agode-memoize _proxy_key when new annotations are added
Mike Bayer [Mon, 12 Aug 2024 23:50:05 +0000 (19:50 -0400)] 
de-memoize _proxy_key when new annotations are added

Fixed regression from 1.3 where the column key used for a hybrid property
might be populated with that of the underlying column that it returns, for
a property that returns an ORM mapped column directly, rather than the key
used by the hybrid property itself.

Fixes: #11728
Change-Id: Ifb298e46a20f90f6b6a717674f142a87cbceb468

11 months agoomit mysql8 dupe key alias for INSERT..FROM SELECT
Mike Bayer [Tue, 13 Aug 2024 13:13:51 +0000 (09:13 -0400)] 
omit mysql8 dupe key alias for INSERT..FROM SELECT

Fixed issue in MySQL dialect where using INSERT..FROM SELECT in combination
with ON DUPLICATE KEY UPDATE would erroneously render on MySQL 8 and above
the "AS new" clause, leading to syntax failures.  This clause is required
on MySQL 8 to follow the VALUES clause if use of the "new" alias is
present, however is not permitted to follow a FROM SELECT clause.

Fixes: #11731
Change-Id: I254a3db4e9dccd9a76b11fdfe6e38a064ba0b5cf

11 months agoMerge "turn off pyodbc pooling" into main
Michael Bayer [Sun, 11 Aug 2024 20:49:16 +0000 (20:49 +0000)] 
Merge "turn off pyodbc pooling" into main

11 months agoturn off pyodbc pooling
Mike Bayer [Sun, 11 Aug 2024 19:41:36 +0000 (15:41 -0400)] 
turn off pyodbc pooling

new updates of unixodbc are turning this on in CI revealing
that our isolation level tests assume no pooling takes place,
so disable this, which is only at global module level for pyodbc

Change-Id: I971dfddc90d248281e8ca8677a3a41af6de28b86

11 months agoDocs: Dialects/index.rst - Add clickhouse-sqlalchemy pypi link. (#11717)
Gregg Lind [Fri, 9 Aug 2024 19:56:44 +0000 (14:56 -0500)] 
Docs:  Dialects/index.rst - Add clickhouse-sqlalchemy pypi link. (#11717)

Add the Pypi link for the `clickhouse-sqlalchemy` package to Externally supported dialects.

11 months agoFix typo in docs (#11715)
Gabi Nagy [Fri, 9 Aug 2024 19:54:24 +0000 (21:54 +0200)] 
Fix typo in docs (#11715)

11 months agonote prefix_with as a hint mechanism
Mike Bayer [Wed, 7 Aug 2024 18:31:48 +0000 (14:31 -0400)] 
note prefix_with as a hint mechanism

References: #11702
References: #11704
Change-Id: Ieee0780f6d132a29269430fc26de5c0664b16c2e

11 months agohandle quoted_name instances separately in engine.reflection.cache
Masterchen09 [Tue, 6 Aug 2024 18:20:51 +0000 (14:20 -0400)] 
handle quoted_name instances separately in engine.reflection.cache

Fixed issue in internal reflection cache where particular reflection
scenarios regarding same-named quoted_name() constructs would not be
correctly cached.  Pull request courtesy Felix Lüdin.

Fixes: #11687
Closes: #11688
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11688
Pull-request-sha: 43d94273a5b13a89226e60de4b958d5b4ac7ff78

Change-Id: I73273dff532a9d14d54065bc33339874e3cb2716

11 months agorestore generative to with_statement_hint
Mike Bayer [Wed, 7 Aug 2024 16:18:25 +0000 (12:18 -0400)] 
restore generative to with_statement_hint

Fixed regression in :meth:`_sql.Select.with_statement_hint` and others
where the generative behavior of the method stopped producing a copy of the
object.

Fixes: #11703
Change-Id: Ia4482f91f76fae9982dc6b075bf5cfec7042ffa6

11 months agoMerge "Add array_type to SuiteRequirements" into main
Michael Bayer [Wed, 7 Aug 2024 14:14:03 +0000 (14:14 +0000)] 
Merge "Add array_type to SuiteRequirements" into main

11 months agodisable recovery tests for oracledb
Mike Bayer [Wed, 7 Aug 2024 13:10:40 +0000 (09:10 -0400)] 
disable recovery tests for oracledb

this is not holding up in CI and is not a critical feature
for now

Change-Id: Ib9547028265403497c176d96c462d76cd86c967a

11 months agoFix a misreference in inheritance.rst (#11700)
Tao Zhou [Tue, 6 Aug 2024 20:21:44 +0000 (16:21 -0400)] 
Fix a misreference in inheritance.rst (#11700)

11 months agoBump pypa/cibuildwheel from 2.19.2 to 2.20.0 (#11690)
dependabot[bot] [Mon, 5 Aug 2024 21:07:55 +0000 (23:07 +0200)] 
Bump pypa/cibuildwheel from 2.19.2 to 2.20.0 (#11690)

Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.19.2 to 2.20.0.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v2.19.2...v2.20.0)

---
updated-dependencies:
- dependency-name: pypa/cibuildwheel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
11 months agoAdd array_type to SuiteRequirements
Anders Bogsnes [Mon, 5 Aug 2024 20:28:48 +0000 (16:28 -0400)] 
Add array_type to SuiteRequirements

Added missing ``array_type`` property to the testing suite
``SuiteRequirements`` class.

Closes: #11694
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11694
Pull-request-sha: 24697f6a4346005aa83d8eb06f94bba4cc994862

Change-Id: I192b5b932dfef07043c0c0cfe8ea36b02425a44d

11 months agoadd changelog for #11557
Mike Bayer [Mon, 5 Aug 2024 21:01:08 +0000 (17:01 -0400)] 
add changelog for #11557

also classify for oracle

Change-Id: I725db9c6ae6a8fabe7faf8631113633b338afea4

11 months agocherry-pick changelog update for 2.0.33
Mike Bayer [Mon, 5 Aug 2024 19:08:57 +0000 (15:08 -0400)] 
cherry-pick changelog update for 2.0.33

11 months agocherry-pick changelog from 2.0.32
Mike Bayer [Mon, 5 Aug 2024 19:08:57 +0000 (15:08 -0400)] 
cherry-pick changelog from 2.0.32

11 months agoAdded support for server-side cursor in oracledb async dialect.
Federico Caselli [Thu, 1 Aug 2024 19:16:20 +0000 (21:16 +0200)] 
Added support for server-side cursor in oracledb async dialect.

Added API support for server-side cursors for the oracledb async dialect,
allowing use of the :meth:`_asyncio.AsyncConnection.stream` and similar
stream methods.

Fixes: #10820
Change-Id: I861670ccc20a81ec5ee45132b8059fc2a0359087

12 months agochangelog updates
Mike Bayer [Fri, 2 Aug 2024 13:42:59 +0000 (09:42 -0400)] 
changelog updates

Change-Id: I3c319c15d883b88a4ceae2ea17d3122fcc90fb1f

12 months agoMerge "skip in eager row processors for enable_eagerloads=False" into main
Michael Bayer [Fri, 2 Aug 2024 13:39:07 +0000 (13:39 +0000)] 
Merge "skip in eager row processors for enable_eagerloads=False" into main

12 months agoMerge "escape percents for mysql enum and add suite tests" into main
Michael Bayer [Fri, 2 Aug 2024 13:38:10 +0000 (13:38 +0000)] 
Merge "escape percents for mysql enum and add suite tests" into main

12 months agoMerge "add check for pre-existing history records" into main
Michael Bayer [Fri, 2 Aug 2024 13:36:54 +0000 (13:36 +0000)] 
Merge "add check for pre-existing history records" into main

12 months agobring oracle timeout thing lower
Mike Bayer [Thu, 1 Aug 2024 23:15:57 +0000 (19:15 -0400)] 
bring oracle timeout thing lower

still seeing failures

we may very well have to revert this and mark oracle as not supporting
recovery

Change-Id: I4d48607cb8579dc73c650f5232e4414a408735e2

12 months agoskip in eager row processors for enable_eagerloads=False
Mike Bayer [Thu, 1 Aug 2024 19:58:57 +0000 (15:58 -0400)] 
skip in eager row processors for enable_eagerloads=False

Fixed issue where using the :meth:`_orm.Query.enable_eagerloads` and
:meth:`_orm.Query.yield_per` methods at the same time, in order to disable
eager loading that's configured on the mapper directly, would be silently
ignored, leading to errors or unexpected eager population of attributes.

Fixes: #10834
Change-Id: I6a20bdedf23f6dd4e98ffb49ad784117fe4afdd3

12 months agoadd check for pre-existing history records
Mike Bayer [Thu, 1 Aug 2024 20:41:45 +0000 (16:41 -0400)] 
add check for pre-existing history records

Fixed issue in history_meta example where the "version" column in the
versioned table needs to default to the most recent version number in the
history table on INSERT, to suit the use case of a table where rows are
deleted, and can then be replaced by new rows that re-use the same primary
key identity.  This fix adds an additonal SELECT query per INSERT in the
main table, which may be inefficient; for cases where primary keys are not
re-used, the default function may be omitted.  Patch courtesy  Philipp H.
v. Loewenfeld.

Fixes: #10267
Change-Id: I6b0737a7e871763f95fd636c9ad98b80f3b5808e

12 months agoescape percents for mysql enum and add suite tests
Mike Bayer [Thu, 1 Aug 2024 19:51:00 +0000 (15:51 -0400)] 
escape percents for mysql enum and add suite tests

Fixed issue in MySQL dialect where ENUM values that contained percent signs
were not properly escaped for the driver.

Fixes: #11479
Change-Id: I40d9aba619618603d3abb466f84a793d152b6788

12 months agoMerge "mutate lists in place for return_defaults=True" into main
Michael Bayer [Thu, 1 Aug 2024 19:31:26 +0000 (19:31 +0000)] 
Merge "mutate lists in place for return_defaults=True" into main

12 months agoMerge "Add support for two-phase commit in oracledb." into main
Michael Bayer [Thu, 1 Aug 2024 17:47:00 +0000 (17:47 +0000)] 
Merge "Add support for two-phase commit in oracledb." into main

12 months agomutate lists in place for return_defaults=True
Mike Bayer [Thu, 1 Aug 2024 13:49:55 +0000 (09:49 -0400)] 
mutate lists in place for return_defaults=True

Fixed regression from version 1.4 in
:meth:`_orm.Session.bulk_insert_mappings` where using the
:paramref:`_orm.Session.bulk_insert_mappings.return_defaults` parameter
would not populate the passed in dictionaries with newly generated primary
key values.

Fixes: #11661
Change-Id: I331d81a5b04456f107eb868f882d67773b3eec38

12 months agoMerge "Fixed compilation of bitwise operators on oracle and sqlite." into main
Michael Bayer [Thu, 1 Aug 2024 15:35:24 +0000 (15:35 +0000)] 
Merge "Fixed compilation of bitwise operators on oracle and sqlite." into main

12 months agoAdd support for two-phase commit in oracledb.
Federico Caselli [Mon, 10 Jun 2024 19:20:56 +0000 (21:20 +0200)] 
Add support for two-phase commit in oracledb.

Implemented two-phase transactions for the oracledb dialect. Historically,
this feature never worked with the cx_Oracle dialect, however recent
improvements to the oracledb successor now allow this to be possible.  The
two phase transaction API is available at the Core level via the
:meth:`_engine.Connection.begin_twophase` method.

As part of this change, added new facility for testing that allows
a test to skip if a certain step takes too long, allowing for a
separate cleanup step.  this is needed as oracle tpc wont allow
commit recovery if transaction is older than about 1 second, could not
find any docs on how to increase this timeout.

Fixed an execute call in the PostgreSQL dialect's provisioning that
drops old tpc transactions which was non-working, which indicates
that we've apparently never had any PG tpc transactions needing to
be cleaned up in CI for some years now, so that's good

Fixes: #11480
Change-Id: If3ad19cc29999e70f07f767b88afd330f6e5a4be

12 months agoFixed compilation of bitwise operators on oracle and sqlite.
Federico Caselli [Mon, 29 Jul 2024 21:52:04 +0000 (23:52 +0200)] 
Fixed compilation of bitwise operators on oracle and sqlite.

Implemented bitwise operators for Oracle which was previously
non-functional due to a non-standard syntax used by this database.
Oracle's support for bitwise "or" and "xor" starts with server version 21.
Additionally repaired the implementation of "xor" for SQLite.

As part of this change, the dialect compliance test suite has been enhanced
to include support for server-side bitwise tests; third party dialect
authors should refer to new "supports_bitwise" methods in the
requirements.py file to enable these tests.

Fixes: #11663
Change-Id: I41040bd67992b6c89ed3592edca8965d5d59be9e

12 months agoadd CTE cache elements for CompoundSelect, more verify tests
Federico Caselli [Fri, 14 Jun 2024 22:06:46 +0000 (00:06 +0200)] 
add CTE cache elements for CompoundSelect, more verify tests

Follow up of :ticket:`11471` to fix caching issue where using the
:meth:`.CompoundSelectState.add_cte` method of the
:class:`.CompoundSelectState` construct would not set a correct cache key
which distinguished between different CTE expressions. Also added tests
that would detect issues similar to the one fixed in :ticket:`11544`.

Fixes: #11471
Change-Id: Iae6a91077c987d83cd70ea826daff42855491330

12 months agoMerge "Import all legacy classes by sqlalchemy.orm.collections.*" into main
Michael Bayer [Mon, 29 Jul 2024 17:40:18 +0000 (17:40 +0000)] 
Merge "Import all legacy classes by sqlalchemy.orm.collections.*" into main

12 months agocherry-pick changelog update for 1.4.54
Mike Bayer [Mon, 29 Jul 2024 16:34:35 +0000 (12:34 -0400)] 
cherry-pick changelog update for 1.4.54

12 months agocherry-pick changelog from 1.4.53
Mike Bayer [Mon, 29 Jul 2024 16:34:34 +0000 (12:34 -0400)] 
cherry-pick changelog from 1.4.53

12 months agoImport all legacy classes by sqlalchemy.orm.collections.*
Takashi Kajinami [Mon, 29 Jul 2024 16:01:04 +0000 (12:01 -0400)] 
Import all legacy classes by sqlalchemy.orm.collections.*

Restored legacy class names removed from
``sqlalalchemy.orm.collections.*``, including
:class:`_orm.MappedCollection`, :func:`_orm.mapped_collection`,
:func:`_orm.column_mapped_collection`,
:func:`_orm.attribute_mapped_collection`. Pull request courtesy Takashi
Kajinami.

Fixes: #11435
Closes: #11432
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11432
Pull-request-sha: 66f20a8e2069f48665299d1ee220dfe57aedf79e

Change-Id: I05172669fc9a44e737b3714001d1317bbbf0012f

12 months agoadd missing forwards port versions
Mike Bayer [Mon, 29 Jul 2024 15:58:38 +0000 (11:58 -0400)] 
add missing forwards port versions

I totally forgot these meaning they wont show up in 2.0
changelogs, so this is a big mistake i have to stop making

Change-Id: I5f998eecbfa8aceab3ee247bb3a00e13820af872

12 months agobackport 1.4 changelogs
Mike Bayer [Mon, 29 Jul 2024 15:33:58 +0000 (11:33 -0400)] 
backport 1.4 changelogs

we have a few issues that were fixed only in 1.4, not yet released.
backport the changelog so that release mechanics proceed without issue

Change-Id: I376aa5c854314e86134c8f935b80d6c0dd083033

12 months agorestore transfer of mapper.local_table to DML for some cases
Mike Bayer [Sat, 20 Jul 2024 02:59:35 +0000 (22:59 -0400)] 
restore transfer of mapper.local_table to DML for some cases

Fixed regression appearing in 2.0.21 caused by :ticket:`10279` where using
a :func:`_sql.delete` or :func:`_sql.update` against an ORM class that is
the base of an inheritance hierarchy, while also specifying that subclasses
should be loaded polymorphically, would leak the polymorphic joins into the
UPDATE or DELETE statement as well creating incorrect SQL.

This re-introduces logic to set the `.table` of an ORM update or delete
back to `mapper.local_table` that was removed in d18ccdc997185b74 by
:ticket:`10279`; the logic is qualified to only take place for a
statement that's directly against a mapper and not one that's against
an aliased object.

Fixes: #11625
Change-Id: Ia228c99809370733f111925554167e39bcd6be1d

12 months agoupdate typing for mypy 1.11; pin plugin to <1.11
Federico Caselli [Mon, 22 Jul 2024 21:17:45 +0000 (23:17 +0200)] 
update typing for mypy 1.11; pin plugin to <1.11

Fixed internal typing issues to establish compatibility with mypy 1.11.0.
Note that this does not include issues which have arisen with the
deprecated mypy plugin used by SQLAlchemy 1.4-style code; see the addiional
change note for this plugin indicating revised compatibility.

The legacy mypy plugin is no longer fully functional with the latest series
of mypy 1.11.0, as changes in the mypy interpreter are no longer compatible
with the approach used by the plugin.  If code is dependent on the legacy
mypy plugin with sqlalchemy2-stubs, it's recommended to pin mypy to be
below the 1.11.0 series.    Seek upgrading to the 2.0 series of SQLAlchemy
and migrating to the modern type annotations.

Change-Id: Ib8fef93ede588430dc0f7ed44ef887649a415821

12 months agofix test for oracledb 2.3.0
Mike Bayer [Sat, 27 Jul 2024 03:28:57 +0000 (23:28 -0400)] 
fix test for oracledb 2.3.0

Separate from adding support for 2pc for oracledb, get the test
suite to pass cleanly for all oracledb versions first

Change-Id: I39ba91e81f2afe5e9610a65fdcc88025f207089b

12 months agoadd missing changelog for #11544
Mike Bayer [Sat, 20 Jul 2024 03:05:43 +0000 (23:05 -0400)] 
add missing changelog for #11544

Fixes: #11544
Change-Id: Ibf57f6ee0fee105672b03c2bf6690cad6bb0932d

12 months agoremove redundant(?) Isolation / isolation
Mike Bayer [Mon, 15 Jul 2024 13:15:36 +0000 (09:15 -0400)] 
remove redundant(?) Isolation / isolation

References: https://github.com/sqlalchemy/sqlalchemy/discussions/11609
Change-Id: I8ada4b8ed64a6d6b9cb923503fda6d7b4888f429

12 months agoinclude nulls_first, nulls_last in order_by_label_element
Mike Bayer [Wed, 10 Jul 2024 14:32:44 +0000 (10:32 -0400)] 
include nulls_first, nulls_last in order_by_label_element

Fixed bug where the :meth:`.Operators.nulls_first()` and
:meth:`.Operators.nulls_last()` modifiers would not be treated the same way
as :meth:`.Operators.desc()` and :meth:`.Operators.asc()` when determining
if an ORDER BY should be against a label name already in the statement. All
four modifiers are now treated the same within ORDER BY.

Fixes: #11592
Change-Id: I1de1aff679c56af1abfdfd07f9bcbc45ecc5a8cc

12 months agoImprove generated reflection in sqlite
Federico Caselli [Sun, 7 Jul 2024 09:56:56 +0000 (11:56 +0200)] 
Improve generated reflection in sqlite

Fixed reflection of computed column in SQLite to properly account
for complex expressions.

Fixes: #11582
Change-Id: I8e9fdda3e47c04b376973ee245b3175374a08f56

12 months agoMerge "alter the collation of string type for collate()" into main
Michael Bayer [Sun, 7 Jul 2024 02:49:30 +0000 (02:49 +0000)] 
Merge "alter the collation of string type for collate()" into main

12 months agoalter the collation of string type for collate()
Mike Bayer [Fri, 5 Jul 2024 13:30:10 +0000 (09:30 -0400)] 
alter the collation of string type for collate()

Fixed issue where the :func:`_sql.collate` construct, which explicitly sets
a collation for a given expression, would maintain collation settings for
the underlying type object from the expression, causing SQL expressions to
have both collations stated at once when used in further expressions for
specific dialects that render explicit type casts, such as that of asyncpg.
The :func:`_sql.collate` construct now assigns its own type to explicitly
include the new collation, assuming it's a string type.

Fixes: #11576
Change-Id: I6fc8904d2bcbc21f11bbca57e4a451ed0edbd879

12 months agoMerge "ensure intro to "functions have types" is not misleading" into main
Michael Bayer [Sat, 6 Jul 2024 18:43:55 +0000 (18:43 +0000)] 
Merge "ensure intro to "functions have types" is not misleading" into main

12 months agoMerge "add special rule to honor UPPERCASE name for TExtualSelect" into main
Michael Bayer [Sat, 6 Jul 2024 16:45:30 +0000 (16:45 +0000)] 
Merge "add special rule to honor UPPERCASE name for TExtualSelect" into main

12 months agoensure intro to "functions have types" is not misleading
Mike Bayer [Sat, 6 Jul 2024 16:24:51 +0000 (12:24 -0400)] 
ensure intro to "functions have types" is not misleading

make sure it's clear that there is normally not a return type
for SQL functions

Fixes: #11578
Change-Id: Ia0b66e7fe685dad427822345dd232eb47a0fc44f

13 months agoadd special rule to honor UPPERCASE name for TExtualSelect
Mike Bayer [Wed, 3 Jul 2024 19:46:30 +0000 (15:46 -0400)] 
add special rule to honor UPPERCASE name for TExtualSelect

Fixed issue in name normalization (e.g. "uppercase" backends like Oracle)
where using a :class:`.TextualSelect` would not properly maintain as
uppercase column names that were quoted as uppercase, even though
the :class:`.TextualSelect` includes a :class:`.Column` that explicitly
holds this uppercase name.

Fixes: #10788
Change-Id: I542a2313d22cf13db6760fe02ac659c97b5aa29e

13 months agoMerge "Fix table reflection on oracle <10.2" into main
Michael Bayer [Fri, 5 Jul 2024 14:24:04 +0000 (14:24 +0000)] 
Merge "Fix table reflection on oracle <10.2" into main

13 months agoMerge "use driver col names" into main
Michael Bayer [Fri, 5 Jul 2024 14:10:40 +0000 (14:10 +0000)] 
Merge "use driver col names" into main

13 months agoMerge "Allow flat for join with name" into main
Federico Caselli [Thu, 4 Jul 2024 20:30:24 +0000 (20:30 +0000)] 
Merge "Allow flat for join with name" into main

13 months agoAdded valid types to server_onupdate (#11555)
opkna [Thu, 4 Jul 2024 20:13:10 +0000 (22:13 +0200)] 
Added valid types to server_onupdate (#11555)

* Added valid types to server_onupdate and mapped_column kwargs mypy tests
* Joined mapped_column test files
* Set _ServerOnUpdateArgument to _ServerDefaultArgument

Fixes: #11546
13 months agoAllow flat for join with name
Eric Atkin [Wed, 3 Jul 2024 20:05:04 +0000 (16:05 -0400)] 
Allow flat for join with name

The :paramref:`_orm.aliased.name` parameter to :func:`_orm.aliased` may now
be combined with the :paramref:`_orm.aliased.flat` parameter, producing
per-table names based on a name-prefixed naming convention.  Pull request
courtesy Eric Atkin.

Fixes: #11575
Closes: #11531
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11531
Pull-request-sha: f85535464be7b04d5f9745848d28f87dcd248b86

Change-Id: If79679c7a9598fffe99c033894b7dffecef13939

13 months agouse driver col names
Mike Bayer [Thu, 21 Dec 2023 17:14:00 +0000 (12:14 -0500)] 
use driver col names

Added new execution option
:paramref:`_engine.Connection.execution_options.driver_column_names`. This
option disables the "name normalize" step that takes place against the
DBAPI ``cursor.description`` for uppercase-default backends like Oracle,
and will cause the keys of a result set (e.g. named tuple names, dictionary
keys in :attr:`.Row._mapping`, etc.) to be exactly what was delivered in
cursor.description.   This is mostly useful for plain textual statements
using :func:`_sql.text` or :meth:`_engine.Connection.exec_driver_sql`.

Fixes: #10789
Change-Id: Ib647b25bb53492fa839af04dd032d9f061e630af

13 months agoMerge "handle DBAPI error for fetchall()" into main
Michael Bayer [Thu, 4 Jul 2024 14:43:47 +0000 (14:43 +0000)] 
Merge "handle DBAPI error for fetchall()" into main

13 months agoMerge "call iter() on detached/transient dynamic session" into main
Michael Bayer [Wed, 3 Jul 2024 13:07:36 +0000 (13:07 +0000)] 
Merge "call iter() on detached/transient dynamic session" into main

13 months agoBump pypa/cibuildwheel from 2.19.1 to 2.19.2 (#11561)
dependabot[bot] [Tue, 2 Jul 2024 20:18:06 +0000 (22:18 +0200)] 
Bump pypa/cibuildwheel from 2.19.1 to 2.19.2 (#11561)

Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.19.1 to 2.19.2.
- [Release notes](https://github.com/pypa/cibuildwheel/releases)
- [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md)
- [Commits](https://github.com/pypa/cibuildwheel/compare/v2.19.1...v2.19.2)

---
updated-dependencies:
- dependency-name: pypa/cibuildwheel
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
13 months agoFix table reflection on oracle <10.2
Sergio Oller Moreno [Tue, 2 Jul 2024 08:39:00 +0000 (04:39 -0400)] 
Fix table reflection on oracle <10.2

Fixed table reflection on Oracle 10.2 and older where compression options
are not supported.

Fixes: #11557
Closes: #11558
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11558
Pull-request-sha: 44e4f51a3616388f39b0f5edee3124d389765da3

Change-Id: I34c6a367bef158a0c6cf01f185e18392552b7cc7

13 months agocall iter() on detached/transient dynamic session
Mike Bayer [Tue, 2 Jul 2024 17:57:47 +0000 (13:57 -0400)] 
call iter() on detached/transient dynamic session

Fixed regression going back to 1.4 where accessing a collection using the
"dynamic" strategy on a transient object and attempting to query would
raise an internal error rather than the expected :class:`.NoResultFound`
that occurred in 1.3.

Fixes: #11562
Change-Id: I650305963a17592413520d8d1049c601761a0acc

13 months agohandle DBAPI error for fetchall()
Mike Bayer [Fri, 28 Jun 2024 20:30:57 +0000 (16:30 -0400)] 
handle DBAPI error for fetchall()

Fixed issue in "insertmanyvalues" feature where a particular call to
``cursor.fetchall()`` were not wrapped in SQLAlchemy's exception wrapper,
which apparently can raise a database exception during fetch when using
pyodbc.

Fixes: #11532
Change-Id: Ic07d3e79dd597e18d87a56b45ddffa25e762beb9