]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/log
thirdparty/sqlalchemy/sqlalchemy.git
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
(cherry picked from commit e9d3e49601d011f9a3471921729728ca688e04b9)
(cherry picked from commit 5e495e16da87644bcb07aa76c9021d486053b81d)

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
(cherry picked from commit 4208993938302e34a67e57af710be7d98ff37659)
(cherry picked from commit 1ad8edb9e168bf2f7de88114f7bb6e25c8155b69)

13 months agoDocs: simplify language in getting a connection & committing changes
lonkeknol [Fri, 28 Jun 2024 16:27:33 +0000 (12:27 -0400)] 
Docs: simplify language in getting a connection & committing changes

Simplifies language use in [Getting a Connection](https://docs.sqlalchemy.org/en/20/tutorial/dbapi_transactions.html#getting-a-connection) and [Committing Changes](https://docs.sqlalchemy.org/en/20/tutorial/dbapi_transactions.html#committing-changes)

This pull request is:

- [x] A documentation / typographical / small typing error fix
- Good to go, no issue or tests are needed
- [ ] A short code fix
- please include the issue number, and create an issue if none exists, which
  must include a complete example of the issue.  one line code fixes without an
  issue and demonstration will not be accepted.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.   one line code fixes without tests will not be accepted.
- [ ] A new feature implementation
- please include the issue number, and create an issue if none exists, which must
  include a complete example of how the feature would look.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.

**Have a nice day!**

Closes: #11542
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11542
Pull-request-sha: d706e69fb6058d3483fce98cfacbbf36ca12d78e

Change-Id: I7788f2a16a5127b3c9623f7b00f06f649b04e0fb
(cherry picked from commit 82d14a7515187ad744037ca9017ced1782314854)

13 months agocache key share; support correct traverse of 'of'
Mike Bayer [Thu, 27 Jun 2024 22:17:47 +0000 (18:17 -0400)] 
cache key share; support correct traverse of 'of'

Fixed caching issue where the
:paramref:`_sql.Select.with_for_update.key_share` element of
:meth:`_sql.Select.with_for_update` was not considered as part of the cache
key, leading to incorrect caching if different variations of this parameter
were used with an otherwise identical statement.

Also repairs a traversal issue where the ``of`` element of
``ForUpdateArg`` when set to ``None`` cannot be compared against a
non-None element because the traversal defines it as a clauselist.
Traversal in this case is adjusted to accommodate for this case so that
we dont need to create a risky-to-backport change to ``ForUpdateArg``
itself.

Fixes: #11544
Change-Id: Ie8a50716df06977af58b0c22a8c10e1b64d972b9
(cherry picked from commit 6d2f43e14f2fe25cdc811355b7bd6d11f8eee381)
(cherry picked from commit 522baa306fc788cf02acf29bf08e86a431a7050e)

13 months agoDocs: simplify language use for "Working with Transactions and the DBAPI"
lonkeknol [Thu, 27 Jun 2024 13:03:30 +0000 (09:03 -0400)] 
Docs: simplify language use for "Working with Transactions and the DBAPI"

This is my first pull request to sqlalchemy. It changes the writing style of two paragraphs in the unified tutorial [here](https://docs.sqlalchemy.org/en/20/tutorial/dbapi_transactions.html#working-with-transactions-and-the-dbapi). My goals were to.
1. Make them easier to read
2. Not change the meaning of the text.
3. Get feedback on whether this type of contribution is considered useful for sqlalchemy.

If this is a useful type of contribution, it might be good to discuss some general guidelines for me to adhere to as I continue. For instance:
- Prefer using present simple tense
- Remove superfluous words where possible
- Keep the pull requests to one or two h2 sections at a time, to make the review easier

This pull request is:

- [x] A documentation / typographical / small typing error fix
- Good to go, no issue or tests are needed
- [ ] A short code fix
- please include the issue number, and create an issue if none exists, which
  must include a complete example of the issue.  one line code fixes without an
  issue and demonstration will not be accepted.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.   one line code fixes without tests will not be accepted.
- [ ] A new feature implementation
- please include the issue number, and create an issue if none exists, which must
  include a complete example of how the feature would look.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.

I'm curious to hear what you all think. **Have a nice day!**

Closes: #11541
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11541
Pull-request-sha: 3179690e6a5b47de99a4486a7a15cffbfacd380b

Change-Id: I9b47f6ce4fd00c44c4b0e19957acf250f5e46d2f
(cherry picked from commit fc2cb4496d35c0b8bb7d59aa74b553f07210eded)

13 months agoMerge "use literal execute for SQL Server frame parameters" into rel_1_4
Michael Bayer [Sun, 23 Jun 2024 18:17:37 +0000 (18:17 +0000)] 
Merge "use literal execute for SQL Server frame parameters" into rel_1_4

13 months agofix default label style doc
Mike Bayer [Sun, 23 Jun 2024 14:18:47 +0000 (10:18 -0400)] 
fix default label style doc

Change-Id: I793f7b62c6c0b551ab1957cabcff685885b6e51c
(cherry picked from commit c43238252f96a1f9370d1bc7ff440897b751b2b8)

13 months agoDocumentation: Update package name for CrateDB dialect (#11503)
Andreas Motl [Sun, 23 Jun 2024 10:14:15 +0000 (12:14 +0200)] 
Documentation: Update package name for CrateDB dialect (#11503)

The CrateDB SQLAlchemy dialect needs more love, so it was separated from
the DBAPI HTTP driver.

The new canonical package for the SQLAlchemy CrateDB dialect on PyPI is:

  https://pypi.org/project/sqlalchemy-cratedb/

(cherry picked from commit d4b28a4409ca233039896225f4e882a8b07e5b56)
(cherry picked from commit b685bc7d211515711a3885fcdac4654de16db407)

13 months agouse literal execute for SQL Server frame parameters
Mike Bayer [Wed, 19 Jun 2024 15:03:25 +0000 (11:03 -0400)] 
use literal execute for SQL Server frame parameters

Fixed issue where SQL Server drivers don't support bound parameters when
rendering the "frame specification" for a window function, e.g. "ROWS
BETWEEN", etc.

Fixes: #11514
Change-Id: I0664f4076a2a8266434a4670949b8b44cd261f44
(cherry picked from commit c088b6426f1d73efe7de3e42b3e86f8027076bc3)
(cherry picked from commit 9524e4bffc9c8545fdb8698ef029c420374ac00f)

13 months agoSQLAlchemy 1.4: Fix building the C extension on Python 3.13
Benjamin A. Beasley [Thu, 20 Jun 2024 15:02:39 +0000 (11:02 -0400)] 
SQLAlchemy 1.4: Fix building the C extension on Python 3.13

Adjustments to the C extensions, which are specific to the SQLAlchemy 1.x
series, to work under Python 3.13.  Pull request courtesy Ben Beasley.

Fixes: #11499
Closes: #11500
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11500
Pull-request-sha: 8a5888b147022b4586d30dcd7159e4fa6a31ec0e

Change-Id: I1943eb387f9b075bf07e179f7a24762236e234bf

13 months agolower setuptools lower bound to suit python 2.7
Mike Bayer [Thu, 20 Jun 2024 16:26:10 +0000 (12:26 -0400)] 
lower setuptools lower bound to suit python 2.7

looks like 44.x is the latest for 2.7.

not sure how this passed on CI when we had it at 60?

Change-Id: I9d351ef855de9d84482c458f22118b4f7b40f763

13 months agoMerge "backport of applicable 3.13 fixes" into rel_1_4
Michael Bayer [Thu, 20 Jun 2024 15:02:04 +0000 (15:02 +0000)] 
Merge "backport of applicable 3.13 fixes" into rel_1_4

13 months agopin setuptools below 69.3 and prepare for "build" for releases
Mike Bayer [Wed, 19 Jun 2024 15:44:54 +0000 (11:44 -0400)] 
pin setuptools below 69.3 and prepare for "build" for releases

for 1.4, we introduce the build-system entry so that we can use
"build" for releases

Change-Id: Ib70446cc3c7d7d8acb264ffa2237a0c7aac5a0f5
(cherry picked from commit f6283dd6d902fd0d8b5a7ecc6c37c4ebde4d93f3)
(cherry picked from commit 4b7ffd28e5bbc942c18b0c9b3bc9e50265ef15a1)

13 months agobackport of applicable 3.13 fixes
Mike Bayer [Sun, 26 May 2024 15:34:27 +0000 (11:34 -0400)] 
backport of applicable 3.13 fixes

Fixes: #11417
Change-Id: Ib2ceccd9583d8776700f0da5b591906efcfe6e6f
(cherry picked from commit 754804635bc922c20d0b0075e0ed2da0add38742)

13 months agoMerge "open up async greenlet for third parties" into rel_1_4
Michael Bayer [Thu, 13 Jun 2024 17:33:39 +0000 (17:33 +0000)] 
Merge "open up async greenlet for third parties" into rel_1_4

13 months agoopen up async greenlet for third parties
Mike Bayer [Wed, 12 Jun 2024 16:42:29 +0000 (12:42 -0400)] 
open up async greenlet for third parties

Modified the internal representation used for adapting asyncio calls to
greenlets to allow for duck-typed compatibility with third party libraries
that implement SQLAlchemy's "greenlet-to-asyncio" pattern directly.
Running code within a greenlet that features the attribute
``__sqlalchemy_greenlet_provider__ = True`` will allow calls to
:func:`sqlalchemy.util.await_only` directly.

Change-Id: I79c67264e1a642b9a80d3b46dc64bdda80acf0aa
(cherry picked from commit c1e2d9180a14c74495b712e08d8156b92f907ac0)
(cherry picked from commit 1a6ff466b29ad3a114a27f2776538d8d998db2dd)

13 months agoinclude HasCTE traversal elements in TextualSelect
Mike Bayer [Tue, 11 Jun 2024 02:59:49 +0000 (22:59 -0400)] 
include HasCTE traversal elements in TextualSelect

Fixed caching issue where using the :meth:`.TextualSelect.add_cte` method
of the :class:`.TextualSelect` construct would not set a correct cache key
which distinguished between different CTE expressions.

Fixes: #11471
Change-Id: Ia9ce2c8cfd128f0f130aa9b26448dc23d994c324
(cherry picked from commit faecebc9df2a57173ee720973ba44ada370b682f)
(cherry picked from commit 228d98e43a0bba1f33cd46f92f14851ecccbb728)

13 months agofix macos tests
Federico Caselli [Tue, 11 Jun 2024 21:59:02 +0000 (23:59 +0200)] 
fix macos tests

Change-Id: I15cd4f541d88082fe16af121726f8ea5dd73fd97

13 months agoloosen up hash_limit test
Mike Bayer [Tue, 11 Jun 2024 13:16:26 +0000 (09:16 -0400)] 
loosen up hash_limit test

hash_limit_string works by doing a modulus of a hash value so that
the range of possible numbers is 0-N.  however, there's a chance
we might not populate every 0-N value in unusual cases on CI,
even after iterating 500 times apparently.  Loosen the change by making
sure we got at least N/2 unique hash messages but not greater
than N.

Change-Id: I5cd2845697ec0a718ddca1c95fbc4867b06eabee
(cherry picked from commit ef04a401100ff37915c281c412ed3d784565e429)

14 months agoAdd test for issue 11412
Mike Bayer [Fri, 24 May 2024 14:58:02 +0000 (10:58 -0400)] 
Add test for issue 11412

Issue #10365 was found to also fix an issue where
single-inheritance criteria would not be correctly applied to a
subclass entity that only appeared in the ``select_from()`` list.

Fixes: #11412
Change-Id: Ic865737a3d075fceee346eea8044345233038f72
(cherry picked from commit 61d227a7d4f7be7b1f6fa72171d01c60e571939e)
(cherry picked from commit a0a52e79eec780206bc014f301d301f345ec57a0)

15 months agoUpdate links from initd.org to psycopg.org (#11244)
Stefan Wojcik [Mon, 8 Apr 2024 19:23:19 +0000 (15:23 -0400)] 
Update links from initd.org to psycopg.org (#11244)

(cherry picked from commit ac7d70dea89dfaf8e061bc8dd03a1ed7825069fc)

16 months agowork around boldface concerns
Mike Bayer [Tue, 19 Mar 2024 14:51:01 +0000 (10:51 -0400)] 
work around boldface concerns

Change-Id: I99ed117bb0f1bdc1a8750bd13db5a69d5c398ae0
(cherry picked from commit 697dcc94e412e013aba298e17613ee097f423e04)

16 months agoadd notes clarifying the role of "$user" in pg search_path
Mike Bayer [Tue, 19 Mar 2024 12:35:00 +0000 (08:35 -0400)] 
add notes clarifying the role of "$user" in pg search_path

references: https://github.com/sqlalchemy/alembic/discussions/1447
Change-Id: I2ef55813699f84ac7fbca6de7522f0d3d78e6029
(cherry picked from commit 58a50c06836792da201bb610ee2f0463ac1bb073)

16 months agoadd missing cache_ok directive to MyEpochType
Mike Bayer [Mon, 18 Mar 2024 14:22:06 +0000 (10:22 -0400)] 
add missing cache_ok directive to MyEpochType

Change-Id: Ic4da52b02a4ba36d87d73974fe428b91d9d7915c
(cherry picked from commit 4ef36de359449abd49b90726a1d06aef9a4084e7)

16 months agoVersion 1.4.53 placeholder
Mike Bayer [Mon, 4 Mar 2024 13:30:04 +0000 (08:30 -0500)] 
Version 1.4.53 placeholder

16 months ago- 1.4.52 rel_1_4_52
Mike Bayer [Mon, 4 Mar 2024 13:24:31 +0000 (08:24 -0500)] 
- 1.4.52

17 months agoEnsure loader criteria used for ORM join with expression condition
Mike Bayer [Tue, 19 Sep 2023 12:58:52 +0000 (08:58 -0400)] 
Ensure loader criteria used for ORM join with expression condition

Fixed bug where ORM :func:`_orm.with_loader_criteria` would not apply
itself to a :meth:`_sql.Select.join` where the ON clause were given as a
plain SQL comparison, rather than as a relationship target or similar.

Fixes: #10365
Change-Id: Ie6d08fb01a3079b7c3ccd3a8241031d46a56e19d
(cherry picked from commit f8086a809bba358790cff032d745814b186ab8cb)

17 months agoFix mysql dialect text docstring, length is interpreted as byte size
Zhong Zheng [Fri, 16 Feb 2024 17:20:59 +0000 (12:20 -0500)] 
Fix mysql dialect text docstring, length is interpreted as byte size

<!-- Provide a general summary of your proposed changes in the Title field above -->

### Description
The `Text` and its variant types in MySQL are bytes size limited, not character length, so fixing the doctoring where the upper limit uses the `characters` as the unit instead of `bytes`

https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html
https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html

<img width="878" alt="Screenshot 2024-02-15 at 17 27 59" src="https://github.com/sqlalchemy/sqlalchemy/assets/5219229/29731769-f57e-46f9-858b-46feda0ae83c">

### Checklist
<!-- go over following points. check them with an `x` if they do apply, (they turn into clickable checkboxes once the PR is submitted, so no need to do everything at once)

-->

This pull request is:

- [x] A documentation / typographical / small typing error fix
- Good to go, no issue or tests are needed
- [ ] A short code fix
- please include the issue number, and create an issue if none exists, which
  must include a complete example of the issue.  one line code fixes without an
  issue and demonstration will not be accepted.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.   one line code fixes without tests will not be accepted.
- [ ] A new feature implementation
- please include the issue number, and create an issue if none exists, which must
  include a complete example of how the feature would look.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.

**Have a nice day!**

Closes: #11018
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11018
Pull-request-sha: 13fa52917efea9a229c7abf19a3be40e24a79cb9

Change-Id: Iea903a6dc4b52ee4b7b5d2d64256c69abbd1f8aa
(cherry picked from commit 1c58fe53b6fd069cbb82955ddaf9eb5405076146)
(cherry picked from commit 51011db22b0d51b5560d55b97671631cadc10265)

18 months agofix wheel on windows-mac
Federico Caselli [Thu, 11 Jan 2024 18:57:25 +0000 (19:57 +0100)] 
fix wheel on windows-mac

Change-Id: Id759f1f533cff5691332441455ff3f23fbabbe55
(cherry picked from commit a9416a9e73331dc330e30343f26631b29108373b)
(cherry picked from commit a8cdc8f53816d3156e1f8b4032c3375b91dba825)

19 months agoVersion 1.4.52 placeholder
Mike Bayer [Wed, 3 Jan 2024 01:32:38 +0000 (20:32 -0500)] 
Version 1.4.52 placeholder

19 months ago- 1.4.51 rel_1_4_51
Mike Bayer [Wed, 3 Jan 2024 01:08:42 +0000 (20:08 -0500)] 
- 1.4.51

19 months agohappy new year, continued
Mike Bayer [Wed, 3 Jan 2024 01:07:42 +0000 (20:07 -0500)] 
happy new year, continued

Change-Id: I9cbd176d73c29c7975ead644367560a24f267de7

19 months agofix big scary setuptools warning about license_files
Mike Bayer [Wed, 3 Jan 2024 01:03:35 +0000 (20:03 -0500)] 
fix big scary setuptools warning about license_files

Change-Id: Ic84b769be748d410ed89539ffd798ea91d00af54

19 months agoMerge "ensure correct lock type propagated in pool recreate" into rel_1_4
Michael Bayer [Tue, 2 Jan 2024 14:58:24 +0000 (14:58 +0000)] 
Merge "ensure correct lock type propagated in pool recreate" into rel_1_4

19 months agoensure correct lock type propagated in pool recreate
Mike Bayer [Mon, 1 Jan 2024 21:54:58 +0000 (16:54 -0500)] 
ensure correct lock type propagated in pool recreate

Fixed critical issue in asyncio version of the connection pool where
calling :meth:`_asyncio.AsyncEngine.dispose` would produce a new connection
pool that did not fully re-establish the use of asyncio-compatible mutexes,
leading to the use of a plain ``threading.Lock()`` which would then cause
deadlocks in an asyncio context when using concurrency features like
``asyncio.gather()``.

Fixes: #10813
Change-Id: I95ec698b6a1ba79555aa0b28e6bce65fedf3b1fe
(cherry picked from commit 2ed32bbf891b8f7e6c151071b4711319d9aa84f0)
(cherry picked from commit c65e4f4471cd10051476caaadcc92d7a7eb557b4)

19 months ago2024 setup / backport normalize files, tool setup
Mike Bayer [Mon, 1 Jan 2024 22:11:11 +0000 (17:11 -0500)] 
2024 setup / backport normalize files, tool setup

also bumps flake8 in pre-commit to match that of
2.0

Change-Id: I2853d99bbc19c94227e2b88d450873197013bdfb

19 months agoUse a copy of `self.contents` in this list comprehension.
Yilei Yang [Thu, 21 Dec 2023 07:47:03 +0000 (02:47 -0500)] 
Use a copy of `self.contents` in this list comprehension.

Improved a fix first implemented for :ticket:`3208` released in version
0.9.8, where the registry of classes used internally by declarative could
be subject to a race condition in the case where individual mapped classes
are being garbage collected at the same time while new mapped classes are
being constructed, as can happen in some test suite configurations or
dynamic class creation environments.   In addition to the weakref check
already added, the list of items being iterated is also copied first to
avoid "list changed while iterating" errors.  Pull request courtesy Yilei
Yang.

Fixes: #10782
Closes: #10783
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/10783
Pull-request-sha: 354e97b640430120d0c193a4efe487f293d4768b

Change-Id: I04ccc92472bf1004dad0fb785e16b180f58f101d
(cherry picked from commit 0fe5d3ca51884b85b4059ed05b53f02172325e70)

20 months agoFix pre-ping regression in old PyMySQL versions.
Federico Caselli [Wed, 22 Nov 2023 21:04:03 +0000 (22:04 +0100)] 
Fix pre-ping regression in old PyMySQL versions.

Fixed regression introduced by the fix in ticket :ticket:`10492` when using
pool pre-ping with PyMySQL version older than 1.0.

Fixes: #10650
Change-Id: Ic0744c8b6f91cc39868e31c3bfddb8df20c7dfbb

20 months agoMerge "Properly document ARRAY.contains. #10587" into rel_1_4
Federico Caselli [Sun, 12 Nov 2023 17:50:13 +0000 (17:50 +0000)] 
Merge "Properly document ARRAY.contains. #10587" into rel_1_4

20 months agoFix a typo (#10620)
Aleksandr Kiliushin [Sun, 12 Nov 2023 09:32:05 +0000 (13:32 +0400)] 
Fix a typo (#10620)

(cherry picked from commit fc6c2b19fd7f5cb89e0c405f5aa3b3360e4c4a93)

20 months agoProperly document ARRAY.contains. #10587
Federico Caselli [Sat, 4 Nov 2023 20:32:16 +0000 (21:32 +0100)] 
Properly document ARRAY.contains. #10587

Change-Id: I86e4f01f5d897b257246fe5f970b78e3444aca3e
(cherry picked from commit 1bb9c4b94483a25057bad3d78cf9956e8f292330)

20 months agoFix lint error
Federico Caselli [Wed, 8 Nov 2023 20:49:06 +0000 (21:49 +0100)] 
Fix lint error

Change-Id: Ifb53e125fc9fd759938908710b2474656dbf1ef9
(cherry picked from commit 1da3f3455dc97ad095d7abd10add7f12efe6c1c7)

20 months agoremove . in sys.path
Mike Bayer [Wed, 8 Nov 2023 20:20:24 +0000 (15:20 -0500)] 
remove . in sys.path

this should not be needed and is causing problems in python
3.12 due to the presence of the "changelog" directory

(cherry picked from commit 8faa17d4316772340295a677c54eccf647a221c9)

20 months agoAdd trove classifier for 3.12 (#10599)
Jack McIvor [Tue, 7 Nov 2023 17:55:18 +0000 (17:55 +0000)] 
Add trove classifier for 3.12 (#10599)

(cherry picked from commit 8a583ad7bf65d5d9bf05568279723bc516de3ae3)

21 months agoVersion 1.4.51 placeholder
Mike Bayer [Sun, 29 Oct 2023 20:32:30 +0000 (16:32 -0400)] 
Version 1.4.51 placeholder

21 months ago- 1.4.50 rel_1_4_50
Mike Bayer [Sun, 29 Oct 2023 20:21:48 +0000 (16:21 -0400)] 
- 1.4.50

21 months agochangelog edits
Mike Bayer [Sun, 29 Oct 2023 20:20:40 +0000 (16:20 -0400)] 
changelog edits

Change-Id: I98b1541948407ee7e2d17b6032ba271df2163919

21 months agoMerge "revise argument to mysqlclient/pymysql ping" into rel_1_4
mike bayer [Tue, 24 Oct 2023 14:42:55 +0000 (14:42 +0000)] 
Merge "revise argument to mysqlclient/pymysql ping" into rel_1_4

21 months agoFix identity column reflection failure
Gord Thompson [Fri, 20 Oct 2023 14:19:42 +0000 (08:19 -0600)] 
Fix identity column reflection failure

Fixes: #10504
Fix reflection failure for bigint identity column with
a large identity start value (more than 18 digits).

Change-Id: I8a7ec114e4596b1710d789a4a4fb08013edd80ce
(cherry picked from commit 4c46ed6a9f6f93abd5abe5ba4b95c4c1e8f52a4c)

21 months agorevise argument to mysqlclient/pymysql ping
Mike Bayer [Tue, 17 Oct 2023 22:54:23 +0000 (18:54 -0400)] 
revise argument to mysqlclient/pymysql ping

Repaired a new incompatibility in the MySQL "pre-ping" routine where the
``False`` argument passed to ``connection.ping()``, which is intended to
disable an unwanted "automatic reconnect" feature,  is being deprecated in
MySQL drivers and backends, and is producing warnings for some versions of
MySQL's native client drivers.  It's removed for mysqlclient, whereas for
PyMySQL and drivers based on PyMySQL, the parameter will be deprecated and
removed at some point, so API introspection is used to future proof against
these various stages of removal.

Fixes: #10492
Change-Id: I8a52428c6f93a03b66a605cb0b85cc5924803d6d
references: #10489
(cherry picked from commit 0790c612b3d13761b04b55a5fdd7f6affd852320)

21 months agodont mis-render value from previous loop iteration
Mike Bayer [Thu, 19 Oct 2023 15:21:26 +0000 (11:21 -0400)] 
dont mis-render value from previous loop iteration

Fixed issue where using the same bound parameter more than once with
``literal_execute=True`` in some combinations with other literal rendering
parameters would cause the wrong values to render due to an iteration
issue.

Fixes: #10142
Change-Id: Idde314006568e3445558f0104aed9d2f4af72b56
(cherry picked from commit 9fe7c291921540df9173820d3a06b949d7a3d949)

21 months agofix 1.4 test suite
Mike Bayer [Thu, 19 Oct 2023 13:59:34 +0000 (09:59 -0400)] 
fix 1.4 test suite

add some recent fixes so we can get new 1.4 fixes merged

Change-Id: I692c8adb6b22f10629b9d797c1a64334d43f13b3

21 months agoupdate pipelines to include 3.12
Federico Caselli [Thu, 5 Oct 2023 19:16:14 +0000 (21:16 +0200)] 
update pipelines to include 3.12

Change-Id: I894a03089e4b7eedb3e42de9554c19f9ffea8ce1

22 months agoremove ancient engine.execute() reference from main engine doc
Mike Bayer [Thu, 7 Sep 2023 22:28:32 +0000 (18:28 -0400)] 
remove ancient engine.execute() reference from main engine doc

Change-Id: I51a30c2e53ad7da3e1209b5623388dd2aea7589c
(cherry picked from commit c16ed9dd24a091dbaba4683ae2f04a3f199416bf)

23 months agoFix rendering of order in sequences and identity columns.
Federico Caselli [Wed, 9 Aug 2023 21:27:21 +0000 (23:27 +0200)] 
Fix rendering of order in sequences and identity columns.

Fixes the rendering of the Oracle only ``order`` attribute in
Sequence and Identity that was passed also when rendering
the DDL in PostgreSQL.

Fixes: #10207
Change-Id: I5b918eab38ba68fa10a213a79e2bd0cc48401a02
(cherry picked from commit 5615ab52c81e2343330069f91ec3544840519956)

23 months agofix test for mysql
Mike Bayer [Tue, 15 Aug 2023 13:41:50 +0000 (09:41 -0400)] 
fix test for mysql

Change-Id: Ib05d950a4284412d2daf9b315314c46a70d9cdc7

23 months agoupdate CI supported DB versions
Mike Bayer [Mon, 14 Aug 2023 18:20:12 +0000 (14:20 -0400)] 
update CI supported DB versions

Change-Id: I6f7991242eebc2b25df96e6779881882d29eb7a1
(cherry picked from commit 41cb8f7c05c51b9ceb28dab16d348652e4bc7d82)

23 months agosafe annotate QueryableAttribute inside of join() condition
Mike Bayer [Thu, 10 Aug 2023 22:26:45 +0000 (18:26 -0400)] 
safe annotate QueryableAttribute inside of join() condition

Fixed fundamental issue which prevented some forms of ORM "annotations"
from taking place for subqueries which made use of :meth:`_sql.Select.join`
against a relationship target.  These annotations are used whenever a
subquery is used in special situations such as within
:meth:`_orm.PropComparator.and_` and other ORM-specific scenarios.

Fixes: #10223
Change-Id: I40f04265a6caa0fdcbc9f1b121a35561ab4b1fcf
(cherry picked from commit 6cfdc0743b7d1ebee3582f612a4f8acaa6ab42f9)

23 months agoMerge "implement custom setstate to work around implicit type/comparator" into rel_1_4
mike bayer [Thu, 10 Aug 2023 21:04:40 +0000 (21:04 +0000)] 
Merge "implement custom setstate to work around implicit type/comparator" into rel_1_4

23 months agore-add aiomysql to the ci, remove unmaintained note
Federico Caselli [Sat, 5 Aug 2023 10:02:53 +0000 (12:02 +0200)] 
re-add aiomysql to the ci, remove unmaintained note

References: #6893
Change-Id: Ifb70975f686eef2b7239ca266e9dbfff1f1007cb
(cherry picked from commit 8bacaad859b63418c1dd6099b4a8c7f00727c23e)

23 months agoimplement custom setstate to work around implicit type/comparator
Mike Bayer [Wed, 9 Aug 2023 14:17:35 +0000 (10:17 -0400)] 
implement custom setstate to work around implicit type/comparator

Fixed issue where unpickling of a :class:`_schema.Column` or other
:class:`_sql.ColumnElement` would fail to restore the correct "comparator"
object, which is used to generate SQL expressions specific to the type
object.

Fixes: #10213
Change-Id: I74e805024bcc0d93d549bd94757c2865b3117d72
(cherry picked from commit 9d2b83740ad5c700b28cf4ca7807c09c7338c36a)

23 months agoupdate for latest flake8
Mike Bayer [Wed, 9 Aug 2023 21:26:54 +0000 (17:26 -0400)] 
update for latest flake8

Change-Id: Ic0282fd1de889d1dcf22a1aad6e09fe3aa074dc2

2 years agofix typo in test pipeline
Federico Caselli [Mon, 10 Jul 2023 20:25:13 +0000 (22:25 +0200)] 
fix typo in test pipeline

Change-Id: I596c38cfcf56552deb913b494dd10ee4b1d68462

2 years agorepair pipelines for 2.7
Federico Caselli [Thu, 6 Jul 2023 20:49:05 +0000 (22:49 +0200)] 
repair pipelines for 2.7

Change-Id: Id4766704e4f7e4da2495ebdd8f44e4618a695df5

2 years agoVersion 1.4.50 placeholder
Mike Bayer [Wed, 5 Jul 2023 17:56:40 +0000 (13:56 -0400)] 
Version 1.4.50 placeholder

2 years ago- 1.4.49 rel_1_4_49
Mike Bayer [Wed, 5 Jul 2023 17:45:01 +0000 (13:45 -0400)] 
- 1.4.49

2 years agochangelog updates
Mike Bayer [Wed, 5 Jul 2023 17:37:25 +0000 (13:37 -0400)] 
changelog updates

Change-Id: If3baf79906d062e1e046d7c31b38eeeefdc984bf
(cherry picked from commit 0346da63f009740df2f3c1c94b80f995168d5d9e)

2 years agoupdate mypy warnings / deprecation
Mike Bayer [Wed, 5 Jul 2023 14:04:08 +0000 (10:04 -0400)] 
update mypy warnings / deprecation

Change-Id: Ib89f80568427833561f644894791f7d68caada0d

2 years agoremove use of SQL expressions in "modifiers" for regexp
Mike Bayer [Fri, 30 Jun 2023 14:14:55 +0000 (10:14 -0400)] 
remove use of SQL expressions in "modifiers" for regexp

Fixed issue where the :meth:`_sql.ColumnOperators.regexp_match`
when using "flags" would not produce a "stable" cache key, that
is, the cache key would keep changing each time causing cache pollution.
The same issue existed for :meth:`_sql.ColumnOperators.regexp_replace`
with both the flags and the actual replacement expression.
The flags are now represented as fixed modifier strings rendered as
safestrings rather than bound parameters, and the replacement
expression is established within the primary portion of the "binary"
element so that it generates an appropriate cache key.

Note that as part of this change, the
:paramref:`_sql.ColumnOperators.regexp_match.flags` and
:paramref:`_sql.ColumnOperators.regexp_replace.flags` have been modified to
render as literal strings only, whereas previously they were rendered as
full SQL expressions, typically bound parameters.   These parameters should
always be passed as plain Python strings and not as SQL expression
constructs; it's not expected that SQL expression constructs were used in
practice for this parameter, so this is a backwards-incompatible change.

The change also modifies the internal structure of the expression
generated, for :meth:`_sql.ColumnOperators.regexp_replace` with or without
flags, and for :meth:`_sql.ColumnOperators.regexp_match` with flags. Third
party dialects which may have implemented regexp implementations of their
own (no such dialects could be located in a search, so impact is expected
to be low) would need to adjust the traversal of the structure to
accommodate.

Fixed issue in mostly-internal :class:`.CacheKey` construct where the
``__ne__()`` operator were not properly implemented, leading to nonsensical
results when comparing :class:`.CacheKey` instances to each other.

Fixes: #10042
Change-Id: I2e245f81d7ee7136ad04cf77be35f9745c5da5e5
(cherry picked from commit 2d8ff4f9171bcef9fa70dfa27f2c0cab708fd75e)

2 years agoadjust py312 fix
Mike Bayer [Mon, 3 Jul 2023 12:09:06 +0000 (08:09 -0400)] 
adjust py312 fix

- version detection should anticipate pyhex version on 3.12.0.0
- github actions has removed py2.7 totally
- put changelog in correct place / tags
- not sure what to do for py2.7 wheels for 1.4.   might have to just go
  with there being no py2.7 wheel on pypi

Change-Id: I3f0b3fa1adc3f0c4e6bb62f31e6494eeda88ba78

2 years agoadd 3.12
Federico Caselli [Mon, 22 May 2023 19:54:47 +0000 (21:54 +0200)] 
add 3.12

Initial fixes to test to accommodate py312

this is a backport of 59521abcc0676e936b31a523bd968fc157fef0c2
however includes greenlet>=3.0.0a1 that now builds and/or installs
on Python 3.12.

result row handling is also different in 1.4.

Fixes: #9819
Change-Id: I91a51dcbad2902f7c4c7cec88ebbf42c2417b512
(cherry picked from commit 59521abcc0676e936b31a523bd968fc157fef0c2)

2 years agoqualify mypy1.4 update for python 3.9, 3.10 +
Mike Bayer [Wed, 21 Jun 2023 18:59:21 +0000 (14:59 -0400)] 
qualify mypy1.4 update for python 3.9, 3.10 +

in I68084199858e9da901641d6036780437bcf5f2d6 we added a mypy1.4
check to check for new-style type messages.  mypy only
does lowercase types on python 3.9 and above, OR syntax on 3.10
and above.  qualify these both

Change-Id: Ic1ee12927ae02c1936d1c2905db28b587c7fece7
(cherry picked from commit cb39c0109ef5167de3a7a682cc553480172dac82)

2 years agoupdates for mypy 1.4
Mike Bayer [Tue, 20 Jun 2023 19:24:38 +0000 (15:24 -0400)] 
updates for mypy 1.4

mypy 1.4 is reporting new style types list[], tuple[], etc.
as well as "x | None" for optional.

they also added one argument for format_type().

This is for 1.4 backport as well

Change-Id: I68084199858e9da901641d6036780437bcf5f2d6
(cherry picked from commit f79d09221b1ec6cd6bc8d83d6e947db5f75c6d1c)

2 years agoclarify exec_driver_sql
Mike Bayer [Fri, 19 May 2023 13:50:09 +0000 (09:50 -0400)] 
clarify exec_driver_sql

this docstring wasn't really saying what this method was for.

Change-Id: I2d83ed2690c93d215faadaf7c6edcb02c6c57a6f
(cherry picked from commit 75d716c7799e28ba5c86c72db08025dd6fc8c6e0)

2 years agoqualify session.execute() resulting in autoflush
Mike Bayer [Sat, 13 May 2023 02:30:40 +0000 (22:30 -0400)] 
qualify session.execute() resulting in autoflush

maybe this was planned differently at some point but
session.execute() only autoflushes for ORM contexts.

Change-Id: Ia10af232248e321875f79d5bde71f64d3dc25177
References: #9776
(cherry picked from commit eb286c15f096771dbb128acbe8fe03e94aa72f6a)

2 years agonote future row change for session.execute()
Mike Bayer [Wed, 10 May 2023 14:08:47 +0000 (10:08 -0400)] 
note future row change for session.execute()

Fixes: #9761
Change-Id: I555e822b092d047badab86b3a365380121968592
(cherry picked from commit 987285fb4b13c39bcc6b8922e618d9e830577dda)

2 years agoVersion 1.4.49 placeholder
Mike Bayer [Sun, 30 Apr 2023 21:33:17 +0000 (17:33 -0400)] 
Version 1.4.49 placeholder

2 years ago- 1.4.48 rel_1_4_48
Mike Bayer [Sun, 30 Apr 2023 21:24:32 +0000 (17:24 -0400)] 
- 1.4.48

2 years agoadjust verbiage
Mike Bayer [Sun, 30 Apr 2023 21:22:44 +0000 (17:22 -0400)] 
adjust verbiage

Change-Id: Icc8f201d63e4cc2e7df2f42acb28a6dc84a58342
(cherry picked from commit 623044bb54a58eaa25ed239b7646396548f4b1e7)

2 years agodo not allow non-cache-key entity objects in annotations
Mike Bayer [Sun, 30 Apr 2023 17:56:33 +0000 (13:56 -0400)] 
do not allow non-cache-key entity objects in annotations

Fixed critical caching issue where combination of :func:`_orm.aliased()`
:func:`_sql.case` and :func:`_hybrid.hybrid_property` expressions would
cause a cache key mismatch, leading to cache keys that held onto the actual
:func:`_orm.aliased` object while also not matching each other, filling up
the cache.

Fixes: #9728
Change-Id: I700645b5629a81a0104cf923db72a7421fa43ff4
(cherry picked from commit 4d69d83530666f9aaf3fb327d8c63110ef5e7ff5)

2 years agouse a lot more random names
Mike Bayer [Thu, 27 Apr 2023 13:49:07 +0000 (09:49 -0400)] 
use a lot more random names

very small number of tiny names generated by
random_names() could cause _ordered_name_fixture() to
run out of names.

Fixes: #9706
Change-Id: I3df00c9cf99e76fe82eb535c7fe589b73b10cd67
(cherry picked from commit 1329037bfed428e458547824a861ce1aa9df0c78)

2 years agodont assume _compile_options are present
Mike Bayer [Mon, 17 Apr 2023 14:16:35 +0000 (10:16 -0400)] 
dont assume _compile_options are present

Fixed bug where various ORM-specific getters such as
:attr:`.ORMExecuteState.is_column_load`,
:attr:`.ORMExecuteState.is_relationship_load`,
:attr:`.ORMExecuteState.loader_strategy_path` etc. would throw an
``AttributeError`` if the SQL statement itself were a "compound select"
such as a UNION.

Fixes: #9634
Change-Id: Ia37df5d6f89d6534d69237dcab294bd849ece28b
(cherry picked from commit 89608ccd3f5e5796d578e9a39201f7c5c45a61fe)

2 years agoclarify get_isolation_level() excludes AUTOCOMMIT
Mike Bayer [Mon, 17 Apr 2023 12:22:49 +0000 (08:22 -0400)] 
clarify get_isolation_level() excludes AUTOCOMMIT

I thought this was documented but apparently not.

Fixes: #9658
Change-Id: I93fad12c159c599ffdbab1aff586b49e8c92a6e4
(cherry picked from commit f7bfa04bcae1e9bafa19a5ee03aaa0beac532294)

2 years agoconsider aliased mappers in cycles also
Mike Bayer [Sun, 2 Apr 2023 18:24:32 +0000 (14:24 -0400)] 
consider aliased mappers in cycles also

Fixed endless loop which could occur when using "relationship to aliased
class" feature and also indicating a recursive eager loader such as
``lazy="selectinload"`` in the loader, in combination with another eager
loader on the opposite side. The check for cycles has been fixed to include
aliased class relationships.

Fixes: #9590
Change-Id: I8d340882f040ff9289c209bedd8fbdfd7186f944
(cherry picked from commit e79ab08165e01dc7af50fcffadb31468ace51b6c)

2 years agoadd tip that reflection is not necessary for an existing database
Mike Bayer [Tue, 21 Mar 2023 17:40:36 +0000 (13:40 -0400)] 
add tip that reflection is not necessary for an existing database

a new user spent many days misled by this paragraph thinking
they were required to use reflection for an existing database.

Change-Id: I4c6757b931481db7a8d4202334382143e1491935
(cherry picked from commit 42b3b80fae8d7b808125efc1dd9a900231c2ed21)

2 years agoVersion 1.4.48 placeholder
Mike Bayer [Sat, 18 Mar 2023 17:09:08 +0000 (13:09 -0400)] 
Version 1.4.48 placeholder

2 years ago- 1.4.47 rel_1_4_47
Mike Bayer [Sat, 18 Mar 2023 17:04:58 +0000 (13:04 -0400)] 
- 1.4.47

2 years agoimplement content hashing for custom_op, not identity
Mike Bayer [Sat, 18 Mar 2023 15:43:47 +0000 (11:43 -0400)] 
implement content hashing for custom_op, not identity

Fixed critical SQL caching issue where use of the :meth:`_sql.Operators.op`
custom operator function would not produce an appropriate cache key,
leading to reduce the effectiveness of the SQL cache.

Fixes: #9506
Change-Id: I3eab1ddb5e09a811ad717161a59df0884cdf70ed
(cherry picked from commit 0a0c7c73729152b7606509b6e750371106dfdd46)

2 years agoremove "listeners" docstring
Mike Bayer [Wed, 15 Mar 2023 14:09:57 +0000 (10:09 -0400)] 
remove "listeners" docstring

this should have been removed with #4638.

Fixes: #9492
Change-Id: If82dba7e63382e921aceb0c01d88f0977b7f5e8d
(cherry picked from commit 7fd3b4747d2935effd9e0c2bbe72f080df4ffc50)

2 years agoadditional consistency for ORM/Core in tutorial
Mike Bayer [Wed, 8 Mar 2023 15:10:14 +0000 (10:10 -0500)] 
additional consistency for ORM/Core in tutorial

* Make sure we have blue borders for all sections
* rewrite "blue border" text, refer to textual means of determining
  subject matter for a section; "blue borders" are not a primary
  source of information
* Add some more intro text that was missing

Change-Id: I4d599e13d23bad8bb3c199a11afb53e3e9100c59
References: #9450
(cherry picked from commit 8d5986fafd8360ddfe3992bd56602d5a52a23392)

2 years agoAdd separate version notes for scalars
Grey Li [Sun, 26 Feb 2023 10:56:37 +0000 (05:56 -0500)] 
Add separate version notes for scalars

Add separate 1.4.24 and 1.4.26 version notes for the .scalars method;
this covers Session, scoped_session, AsyncSession, async_scoped_session
as the "scoped" versions did not have the method added until 1.4.26
as part of :ticket:`7103`.

Also indicate scoped_session as ``sqlalchemy.orm.scoped_session`` in
docs rather than ``sqlalchemy.orm.scoping.scoped_session``.  This is
also happening in I77da54891860095edcb1f0625ead99fee89bd76f separately,
as both changesets refer to scoped_session without using ".scoping".

References: #7103
Closes: #9371
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/9371
Pull-request-sha: 61132230cc6e897ab61beff25d98b19a4c0aefd0

Change-Id: I84c8b1aad752db124cfee6bc8516f6eed7ba2faf
(cherry picked from commit ff97b9ab5e59283f684edac9a075702c43e8a4c1)

2 years agoprevent float tests from running on asyncmy
Mike Bayer [Wed, 15 Feb 2023 23:28:12 +0000 (18:28 -0500)] 
prevent float tests from running on asyncmy

asyncmy 0.2.7 has had a loss in float precision for even
very low numbers of significant digits.

Change-Id: Iec6d2650943eeaa8e854f21990f6565d73331f8c
References: https://github.com/long2ice/asyncmy/issues/56
(cherry picked from commit 8855656626202e541bd2c95bc023e820a022322f)

2 years agoUpdate dialect documentation about CrateDB (#9322)
Andreas Motl [Sun, 19 Feb 2023 16:47:02 +0000 (08:47 -0800)] 
Update dialect documentation about CrateDB (#9322)

The `crate-0.30.0` package offers compatibility with SQLAlchemy 2.0.

(cherry picked from commit 46b81981340a703ae4fbe47fcdaaec85a590d5e9)

2 years agoFix grammatical error in intro.rst (#9316)
Maxwell D. Dorliea [Sun, 19 Feb 2023 16:46:42 +0000 (16:46 +0000)] 
Fix grammatical error in intro.rst (#9316)

(cherry picked from commit 1fc1aafbc4bd5bc85289699c0de1d82cb6cbc2d3)

2 years agopin sphinx-copybutton and change config
Mike Bayer [Thu, 9 Feb 2023 17:05:47 +0000 (12:05 -0500)] 
pin sphinx-copybutton and change config

sphinx-copybutton introduced a new feature
in 0.5.1 which includes a default configuration
that breaks the regexp prompt matching scheme.

set copybutton_exclude to not include ".gp" as that's the class
where we exactly look for the prompts we are matching.
While we're there, use this new feature to exclude our sql
styles, even though this is not strictly necessary in our case.

pin sphinx-copybutton at 0.5.1 to avoid future problems.

Change-Id: I8eaeab13995c032b9ee3afd1f08dae5929009d45
References: https://github.com/executablebooks/sphinx-copybutton/issues/185
(cherry picked from commit 13d3b2c291f49525bc38d082d1c2abe9e03bd3fe)

2 years agofix late-eval example
Mike Bayer [Wed, 1 Feb 2023 16:18:55 +0000 (11:18 -0500)] 
fix late-eval example

Fixes: #9209
Change-Id: Ic5bc87b25281e3cecc967843c402e96c7c2a3dbb
(cherry picked from commit bfc33c5c72e3b24fd62d80b77441b38f40c746b0)

2 years agouse scalars().one() for count migration
Mike Bayer [Mon, 30 Jan 2023 14:02:33 +0000 (09:02 -0500)] 
use scalars().one() for count migration

so that the typed result is non-optional

Fixes: #9184
Change-Id: I40e655010d08f795f3b835b9327ce50c6ec72135
(cherry picked from commit 956f152a29632afacacc4ea11dce1a54a7afb3ea)

2 years agoCorrect #7664 to include DropSchema
Mike Bayer [Sat, 28 Jan 2023 14:37:50 +0000 (09:37 -0500)] 
Correct #7664 to include DropSchema

Corrected the fix for :ticket:`7664`, released in version 2.0.0, to also
include :class:`.DropSchema` which was inadvertently missed in this fix,
allowing stringification without a dialect. The fixes for both constructs
is backported to the 1.4 series as of 1.4.47.

Fixes: #7664
Change-Id: I509b7500ee496ac1e444ea2096c2a02520167e6d
(cherry picked from commit 70d1de6cff816d4627dd6b72223d9796e28aca1e)

2 years agofix incorrect use of testing.future()
Mike Bayer [Thu, 26 Jan 2023 01:19:10 +0000 (20:19 -0500)] 
fix incorrect use of testing.future()

this has been emitting a warning probably for a long
time

Change-Id: I44a6766b5e92d14ce6bbb5a90ab52648f877afc2
(cherry picked from commit 74aabce5190449ba2af65c180ebe67fe444193fb)

2 years agodisable new tox 4.4.0 feature
Mike Bayer [Wed, 25 Jan 2023 22:34:08 +0000 (17:34 -0500)] 
disable new tox 4.4.0 feature

a new flag constrain_package_deps appears to interpret deps
as constraints, and not requirements.  turn it off.

also remove the python setup command and use their default,
try to stay compatible

Change-Id: Ib400a7783c08c2c63ddb099944cd48b9631acd75
(cherry picked from commit aa2c2c8b4189b0fd71e7f8af0a81eda4204678f9)