]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/log
thirdparty/sqlalchemy/sqlalchemy.git
8 months agoAdd mypy test to confirm types 10889/head
Martijn Pieters [Mon, 15 Jan 2024 19:40:12 +0000 (19:40 +0000)] 
Add mypy test to confirm types

8 months agoUpdate orderinglist annotations, list compatibity
Martijn Pieters [Mon, 15 Jan 2024 16:10:30 +0000 (16:10 +0000)] 
Update orderinglist annotations, list compatibity

- Don't omit the `_T` typevar in `ordering_list` and
  `OrderingList.ordering_func``; type checkers need to understand the
  relationship between the `OrderingList` instance and the ordering
  function connected to it.
- The ordering function can return _any_ value, not just integers
- The `ordering_attr` argument to `OrderingList` is not optional
- Update list methods to accept the same signature as the overridden
  methods, including `SupportsIndex` instead of `int`, an iterable of
  `_T` when using `__setitem__` with a slice (and not just sequences)
  and converting the index value to an integer before passing it to the
  `ordering_func` callable.
- Update `__setitem__` to _not_ attempt to handle slice objects as
  handling all edge cases of slice length and iterable length is very
  tricky and most use of `OrderingList` and slices is handled by
  the SQLAlchemy collections instrumentation anyway.
- Remove the `__setslice__` and `__delslice__` methods, which were
  deprecated in Python 2.6 and removed in Python 3.0.

Fixes #10888

8 months agoMerge "Added INET4 and INET6 types for MariaDB" into main
Michael Bayer [Thu, 21 Nov 2024 12:36:33 +0000 (12:36 +0000)] 
Merge "Added INET4 and INET6 types for MariaDB" into main

8 months agofix sphinx warning
Federico Caselli [Tue, 19 Nov 2024 18:30:13 +0000 (19:30 +0100)] 
fix sphinx warning

Change-Id: Ice428d026fe63e0e48bc544c96014e6c461b9717

8 months agoAdded INET4 and INET6 types for MariaDB
Adam Žurek [Fri, 15 Nov 2024 18:12:54 +0000 (13:12 -0500)] 
Added INET4 and INET6 types for MariaDB

Added sql types ``INET4`` and ``INET6`` in the MariaDB dialect.

Fixes: #10720
Closes: #12028
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12028
Pull-request-sha: 25f939076eda0a763bc33fb0455d45ef00002110

Change-Id: I2efa53420aa5566f61a19f228cb421116b2e2720

8 months agoMerge "Mention no_autoflush in warning" into main
Michael Bayer [Tue, 19 Nov 2024 13:40:26 +0000 (13:40 +0000)] 
Merge "Mention no_autoflush in warning" into main

8 months agoapply underscores to ORM class and def names
Mike Bayer [Mon, 18 Nov 2024 18:43:08 +0000 (13:43 -0500)] 
apply underscores to ORM class and def names

criteria used here is:

* The class or def should definitely not be used directly by
  a third party
* The class would never be the subject of an `isinstance()` check
* The class is not exposed as the type of a return value for a public
  function

A sweep through class and function names in the ORM renames many classes
and functions that have no intent of public visibility to be underscored.
This is to reduce ambiguity as to which APIs are intended to be targeted by
third party applications and extensions.  Third parties are encouraged to
propose new public APIs in Discussions to the extent they are needed to
replace those that have been clarified as private.

Fixes: #10497
Change-Id: I9900e759be8510e01bba2c25984b9f30dc1fa9c0

8 months agoMerge "apply quote to url.database portion" into main
Michael Bayer [Mon, 18 Nov 2024 17:53:51 +0000 (17:53 +0000)] 
Merge "apply quote to url.database portion" into main

8 months agoMerge "Support table function in oracle" into main
Michael Bayer [Mon, 18 Nov 2024 17:53:20 +0000 (17:53 +0000)] 
Merge "Support table function in oracle" into main

8 months agoMerge "Add Range.__contains__" into main
Michael Bayer [Mon, 18 Nov 2024 17:48:55 +0000 (17:48 +0000)] 
Merge "Add Range.__contains__" into main

8 months agoMerge "remove _implicit_subquery and all derived functions" into main
Michael Bayer [Mon, 18 Nov 2024 14:24:53 +0000 (14:24 +0000)] 
Merge "remove _implicit_subquery and all derived functions" into main

8 months agoremove _implicit_subquery and all derived functions
Mike Bayer [Sat, 16 Nov 2024 20:41:04 +0000 (15:41 -0500)] 
remove _implicit_subquery and all derived functions

The ``.c`` and ``.columns`` attributes on the :class:`.Select` and
:class:`.TextualSelect` constructs, which are not instances of
:class:`.FromClause`, have been removed completely, in addition to the
``.select()`` method as well as other codepaths which would implicitly
generate a subquery from a :class:`.Select` without the need to explicitly
call the :meth:`.Select.subquery` method.

In the case of ``.c`` and ``.columns``, these attributes were never useful
in practice and have caused a great deal of confusion, hence were
deprecated back in version 1.4, and have emitted warnings since that
version.   Accessing the columns that are specific to a :class:`.Select`
construct is done via the :attr:`.Select.selected_columns` attribute, which
was added in version 1.4 to suit the use case that users often expected
``.c`` to accomplish.  In the larger sense, implicit production of
subqueries works against SQLAlchemy's modern practice of making SQL
structure as explicit as possible.

Note that this is **not related** to the usual :attr:`.FromClause.c` and
:attr:`.FromClause.columns` attributes, common to objects such as
:class:`.Table` and :class:`.Subquery`,  which are unaffected by this
change.

Fixes: #10236
Change-Id: If241b8674ccacce7e860bfed25b5d266bfe1aca7

8 months agocorrect pep-593/pep-681 doc section
Mike Bayer [Sun, 17 Nov 2024 00:15:10 +0000 (19:15 -0500)] 
correct pep-593/pep-681 doc section

as of 73a273c90cda2369ec071435edd9c6dc5c1d31c4 and later
4c6429d068 we have decided that Annotated should not allow dataclass
arguments in mapped_column(), which emits a depreaction warning.

the docs in this section were never updated

Fixes: #12108
Change-Id: I6f301c4bac621d5ca1afb1b1dadf754ec929d179

8 months agoAdd Range.__contains__
Frazer McLean [Fri, 15 Nov 2024 18:07:00 +0000 (13:07 -0500)] 
Add Range.__contains__

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

### Description
Fixes #12093

### 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:

- [ ] A documentation / typographical / small typing error fix
- Good to go, no issue or tests are needed
- [x] 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: #12094
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12094
Pull-request-sha: 3f900e96b95c6dbd20ee6f5aa3f49dd6124ffba9

Change-Id: I4c3945eec6a931acd0a8c1682988c5f26e96a499

8 months agofix typo in test docs
Federico Caselli [Fri, 15 Nov 2024 17:57:54 +0000 (18:57 +0100)] 
fix typo in test docs

Change-Id: I6d7b8b75b96c0096ea9de8e462895c006dcb8f7c

8 months agoMerge "Update Oracle dialect doc, mostly to prefer python-oracledb" into main
Michael Bayer [Fri, 15 Nov 2024 13:18:49 +0000 (13:18 +0000)] 
Merge "Update Oracle dialect doc, mostly to prefer python-oracledb" into main

8 months agoapply quote to url.database portion
Mike Bayer [Wed, 13 Nov 2024 15:46:17 +0000 (10:46 -0500)] 
apply quote to url.database portion

Adjusted URL parsing and stringification to apply url quoting to the
"database" portion of the URL.  This allows a URL where the "database"
portion includes special characters such as question marks to be
accommodated.

Fixes: #11234
Change-Id: If868c96969b70f1090f0b474403d22fd3a2cc529

8 months agoSupport table function in oracle
Federico Caselli [Thu, 14 Nov 2024 19:27:35 +0000 (20:27 +0100)] 
Support table function in oracle

Fixed compilation of ``TABLE`` function when used in a from clause
in Oracle Database dialect.

Fixes: #12100
Change-Id: I862e5be9685611dc74338c37b7537505fc2194e5

8 months agoImprove oracle max id length again
Federico Caselli [Thu, 14 Nov 2024 18:55:32 +0000 (19:55 +0100)] 
Improve oracle max id length again

Adjust 90bf575b81c5396b364908547551b6592a333bf7 to handle the none case
Fix missing return

Fixes: #12032
Change-Id: I166efbde1a0cc88673ad3cdfbda70c737dcafcc8

8 months agoAdd YDB to external dialect list (#12088)
Oleg Ovcharuk [Thu, 14 Nov 2024 18:49:34 +0000 (21:49 +0300)] 
Add YDB to external dialect list (#12088)

8 months agodont leak mutating bindparams list into AnalyzedFunction
Mike Bayer [Tue, 12 Nov 2024 19:50:50 +0000 (14:50 -0500)] 
dont leak mutating bindparams list into AnalyzedFunction

Fixed issue in "lambda SQL" feature where the tracking of bound parameters
could be corrupted if the same lambda were evaluated across multiple
compile phases, including when using the same lambda across multiple engine
instances or with statement caching disabled.

Fixes: #12084
Change-Id: I327aa93ce7feb2326a22113164bd834b96b6b889

8 months agoUpdate Oracle dialect doc, mostly to prefer python-oracledb
Christopher Jones [Tue, 12 Nov 2024 22:28:38 +0000 (17:28 -0500)] 
Update Oracle dialect doc, mostly to prefer python-oracledb

### Description

Small updates for Oracle Database dialect documentation.

- prefer python-oracledb over cx_Oracle
- Prefer the product name 'Oracle Database' over the company name 'Oracle'
- update links
- modernize

This is a refresh of existing content.

I decided the apparently now duplicated sections between cx_Oracle and python-oracledb were justified for clarity due to the inevitable differences.

This pull request is:

- [x] A documentation / typographical / small typing error fix
- Good to go, no issue or tests are needed

**Have a nice day!**

Closes: #12078
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12078
Pull-request-sha: 7c4dcf94032af295a6836e9412a4367b716f2de5

Change-Id: I3678976f5524ee164dc31b3122b224ae37060b71

8 months agoMerge "Float and Numeric aren't set as autoincrement" into main
Michael Bayer [Tue, 12 Nov 2024 18:45:59 +0000 (18:45 +0000)] 
Merge "Float and Numeric aren't set as autoincrement" into main

8 months agoMerge "Improve Oracle identifier length detection" into main
Michael Bayer [Mon, 11 Nov 2024 13:57:39 +0000 (13:57 +0000)] 
Merge "Improve Oracle identifier length detection" into main

8 months agoFix source comment/doc typos (#12072)
Yeongbae Jeon [Sat, 9 Nov 2024 16:49:20 +0000 (01:49 +0900)] 
Fix source comment/doc typos (#12072)

minor spelling corrections in comments and doc

8 months agoMerge "Fixed: 12012: Add Support for `TABLESPACE` Specification in Table Definitions...
Michael Bayer [Fri, 8 Nov 2024 13:13:14 +0000 (13:13 +0000)] 
Merge "Fixed: 12012: Add Support for `TABLESPACE` Specification in Table Definitions for Oracle" into main

8 months agoImprove Oracle identifier length detection
Federico Caselli [Sat, 26 Oct 2024 19:50:36 +0000 (21:50 +0200)] 
Improve Oracle identifier length detection

Use the connection attribute ``max_identifier_length`` available
in oracledb since version 2.5 when determining the identifier length
in the Oracle dialect.

Fixes: #12032
Change-Id: If16db93e0df25776295bc521706dbad1cc541f4a

8 months agoMerge "Removed support for Python 3.8 since it's EOL." into main
Michael Bayer [Wed, 6 Nov 2024 23:55:51 +0000 (23:55 +0000)] 
Merge "Removed support for Python 3.8 since it's EOL." into main

8 months agoRemoved support for Python 3.8 since it's EOL.
Federico Caselli [Sat, 26 Oct 2024 20:11:15 +0000 (22:11 +0200)] 
Removed support for Python 3.8 since it's EOL.

Fixes: #12029
Change-Id: Ibb4efec9bab0225d03f6bf3fed661a3f2fc72cc7

8 months agoFixed: 12012: Add Support for `TABLESPACE` Specification in Table Definitions for...
Miguel Grillo [Thu, 24 Oct 2024 18:32:33 +0000 (14:32 -0400)] 
Fixed: 12012: Add Support for `TABLESPACE` Specification in Table Definitions for Oracle

Fixes: #12016
**Description**

This PR adds support for specifying the `TABLESPACE` in table definitions in SQLAlchemy, specifically for Oracle. This feature is particularly useful for Oracle users who need to specify the tablespace where the table data will be stored.

**Changes Made**
1. Updated `construct_arguments` in `OracleDialect`:
    - The `construct_arguments` list in the `OracleDialect` class has been updated to include the `tablespace` argument for the `Table` class.

```Python
construct_arguments = [
    (
        sa_schema.Table,
        # old
        {"resolve_synonyms": False, "on_commit": None, "compress": False},
        # new
        {"resolve_synonyms": False, "on_commit": None, "compress": False, "tablespace": None},
    ),
    (sa_schema.Index, {"bitmap": False, "compress": False}),
]
```
**Path**: `lib/sqlalchemy/dialects/oracle/base.py`

2. Modified OracleDDLCompiler to Include TABLESPACE in post_create_table:
    - The OracleDDLCompiler class has been modified to include the TABLESPACE clause at the end of the CREATE TABLE statement if the tablespace option is provided.

```Python
if opts["tablespace"]:
    tablespace_name = opts["tablespace"]
    table_opts.append(
        "\n TABLESPACE %s" % self.preparer.quote(tablespace_name)
    )
```
**Path**: `lib/sqlalchemy/dialects/oracle/base.py`

3. Added tablespace Argument to the Table Class:
    - A new tablespace argument has been added to the Table class to allow specifying the tablespace in the table definition.

4. Documentation Update:
    - The documentation has been updated to reflect the new feature and provide usage examples.

**Usage Example**

```Python
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData

engine = create_engine('oracle+cx_oracle://user:password@dsn')

metadata = MetaData()

users = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    Column('email', String, unique=True),
    oracle_tablespace='my_tablespace'  # New tablespace argument optional
)

metadata.create_all(engine)
```

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

### Description
<!-- Describe your changes in detail -->

### 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:

- [ ] 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.
- [x] 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: #12013
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/12013
Pull-request-sha: e542dea6ced269cb188b06cbd04cecf1c400e29a

Change-Id: I4733b466f9486289e13dd7503d18b3b5c866e836

9 months agoMention no_autoflush in warning
Federico Caselli [Thu, 31 Oct 2024 21:14:57 +0000 (22:14 +0100)] 
Mention no_autoflush in warning

References: #12049
Change-Id: I057140b2fe2f5fc60d5d27a79ddf19a6196fff7b

9 months agoFloat and Numeric aren't set as autoincrement
Federico Caselli [Wed, 4 Sep 2024 18:10:45 +0000 (20:10 +0200)] 
Float and Numeric aren't set as autoincrement

The :class:`.Float` and :class:`.Numeric` types are no longer automatically
considered as auto-incrementing columns when the
:paramref:`_schema.Column.autoincrement` parameter is left at its default
of ``"auto"`` on a :class:`_schema.Column` that is part of the primary key.
When the parameter is set to ``True``, a :class:`.Numeric` type will be
accepted as an auto-incrementing datatype for primary key columns, but only
if its scale is explicitly given as zero; otherwise, an error is raised.
This is a change from 2.0 where all numeric types including floats were
automatically considered as "autoincrement" for primary key columns.

Fixes: #11811
Change-Id: Icdfe084d425166199d6647335c5b53ea5b4b416e

9 months agoMerge "Improve mutable typing." into main
Federico Caselli [Thu, 31 Oct 2024 13:20:24 +0000 (13:20 +0000)] 
Merge "Improve mutable typing." into main

9 months agoImprove mutable typing.
Federico Caselli [Wed, 30 Oct 2024 20:17:45 +0000 (21:17 +0100)] 
Improve mutable typing.

References: #12046
Change-Id: If950f7e2090a0f637c2c28cf21a40dc345acc89a

9 months agoUpdate declarative_styles.rst: add missing import from typing in the example (#12034)
Dennis Magnusson [Wed, 30 Oct 2024 17:33:40 +0000 (19:33 +0200)] 
Update declarative_styles.rst: add missing import from typing in the example (#12034)

* Update declarative_styles.rst: add missing import

* Update declarative_styles.rst: make import statement style consistent

9 months agoUpdate bigquery dialect link (#12048)
Gord Thompson [Wed, 30 Oct 2024 17:30:40 +0000 (11:30 -0600)] 
Update bigquery dialect link (#12048)

9 months agoMerge "lookup "secondary" directly, dont use eval()" into main
Michael Bayer [Wed, 23 Oct 2024 20:25:10 +0000 (20:25 +0000)] 
Merge "lookup "secondary" directly, dont use eval()" into main

9 months agoAdd TiDB dialect (#12025)
JaySon [Wed, 23 Oct 2024 16:48:59 +0000 (00:48 +0800)] 
Add TiDB dialect (#12025)

* Add sqlalchemy-tidb to index.rst

* Update index.rst

9 months agolookup "secondary" directly, dont use eval()
Mike Bayer [Tue, 22 Oct 2024 18:33:23 +0000 (14:33 -0400)] 
lookup "secondary" directly, dont use eval()

The :paramref:`_orm.relationship.secondary` parameter no longer uses Python
``eval()`` to evaluate the given string.   This parameter when passed a
string should resolve to a table name that's present in the local
:class:`.MetaData` collection only, and never needs to be any kind of
Python expression otherwise.  To use a real deferred callable based on a
name that may not be locally present yet, use a lambda instead.

Fixes: #10564
Change-Id: I9bb5a2ea17c7efac88df1470d109970cfb4c4874

9 months agoremove first_init
Mike Bayer [Tue, 22 Oct 2024 18:03:08 +0000 (14:03 -0400)] 
remove first_init

The ``first_init`` ORM event has been removed.  This event was
non-functional throughout the 1.4 and 2.0 series and could not be invoked
without raising an internal error, so it is not expected that there is any
real-world use of this event hook.

Fixes: #10500
Change-Id: I00b522c9d12e412b3be1fc5c6b96e177e6fca666

9 months agorefine in_() check to use proper duck-typing for __clause_element__
Mike Bayer [Mon, 21 Oct 2024 14:03:01 +0000 (10:03 -0400)] 
refine in_() check to use proper duck-typing for __clause_element__

Fixed regression caused by an internal code change in response to recent
Mypy releases that caused the very unusual case of a list of ORM-mapped
attribute expressions passed to :meth:`.ColumnOperators.in_` to no longer
be accepted.

in this commit we had to revisit d8dd28c42e where mypy typing
didn't accept ColumnOperartors.   the type here is the _HasClauseElement[_T]
protocol which means we need to use a duck type for a runtime check.

Fixes: #12019
Change-Id: Ib378e9cb8defb49d5ac4d726ec93d6bdc581b6a9

9 months agocherry-pick changelog update for 2.0.37
Mike Bayer [Tue, 15 Oct 2024 19:42:11 +0000 (15:42 -0400)] 
cherry-pick changelog update for 2.0.37

9 months agocherry-pick changelog from 2.0.36
Mike Bayer [Tue, 15 Oct 2024 19:42:10 +0000 (15:42 -0400)] 
cherry-pick changelog from 2.0.36

9 months agochangelog updates for 2.0.36
Mike Bayer [Tue, 15 Oct 2024 19:19:44 +0000 (15:19 -0400)] 
changelog updates for 2.0.36

Change-Id: Iffaa6c5556d7b41c8a7537333b7ea58d83ce4771

9 months agoMerge "add tests for pickling types inside an expression, some reduce methods" into...
Michael Bayer [Tue, 15 Oct 2024 19:06:48 +0000 (19:06 +0000)] 
Merge "add tests for pickling types inside an expression, some reduce methods" into main

9 months agoMerge "match ORM mapped cols to PK in interpret_returning_rows" into main
Michael Bayer [Tue, 15 Oct 2024 17:41:48 +0000 (17:41 +0000)] 
Merge "match ORM mapped cols to PK in interpret_returning_rows" into main

9 months agoadd tests for pickling types inside an expression, some reduce methods
Mike Bayer [Tue, 15 Oct 2024 12:20:25 +0000 (08:20 -0400)] 
add tests for pickling types inside an expression, some reduce methods

Fixed regression from 1.4 where some datatypes such as those derived from
:class:`.TypeDecorator` could not be pickled when they were part of a
larger SQL expression composition due to internal supporting structures
themselves not being pickleable.

Fixes: #12002
Change-Id: I016e37b0c62071413f24c9aac35f6ecf475becaa

9 months agoMerge "Add hash to field-like methods" into main
Michael Bayer [Tue, 15 Oct 2024 15:45:50 +0000 (15:45 +0000)] 
Merge "Add hash to field-like methods" into main

9 months agomatch ORM mapped cols to PK in interpret_returning_rows
Mike Bayer [Mon, 14 Oct 2024 15:15:21 +0000 (11:15 -0400)] 
match ORM mapped cols to PK in interpret_returning_rows

Fixed bug in ORM "update with WHERE clause" feature where an explicit
``.returning()`` would interfere with the "fetch" synchronize strategy due
to an assumption that the ORM mapped class featured the primary key columns
in a specific position within the RETURNING.  This has been fixed to use
appropriate ORM column targeting.

the _interpret_returning_rows method looked to be mostly not used as far
as its joined inheritance features, which appear to have never been
used as joined inheritance mappers are skipped.

Fixes: #11997
Change-Id: I38fe3a84cdeb2eef38fe00d8b9a6a2b56f434bc6

9 months agoMerge "Render bind cast in json and jsonb in PG" into main
Michael Bayer [Tue, 15 Oct 2024 13:36:16 +0000 (13:36 +0000)] 
Merge "Render bind cast in json and jsonb in PG" into main

9 months agoMerge "update for mypy 1.12.0" into main
Michael Bayer [Tue, 15 Oct 2024 13:34:09 +0000 (13:34 +0000)] 
Merge "update for mypy 1.12.0" into main

9 months agoupdate for mypy 1.12.0
Mike Bayer [Tue, 15 Oct 2024 00:21:40 +0000 (20:21 -0400)] 
update for mypy 1.12.0

Change-Id: I8ab16e439a27b3072402beb2c09f715047362c94

9 months agoRender bind cast in json and jsonb in PG
Federico Caselli [Sun, 13 Oct 2024 16:32:46 +0000 (18:32 +0200)] 
Render bind cast in json and jsonb in PG

Render bind cast for ``JSON`` and ``JSONB`` datatype on every dialect.
Previously this was only enabled in a subset of dialects.
Fixes: #11994
Change-Id: Ib085deb3e84034dac9e4f4057d32f055d5533e52

9 months agoconsult allow_partial_pks for NULL check in lazyload
Mike Bayer [Sun, 13 Oct 2024 14:04:23 +0000 (10:04 -0400)] 
consult allow_partial_pks for NULL check in lazyload

Refined the check which the ORM lazy loader uses to detect "this would be
loading by primary key and the primary key is NULL, skip loading" to take
into account the current setting for the
:paramref:`.orm.Mapper.allow_partial_pks` parameter. If this parameter is
False, then a composite PK value that has partial NULL elements should also
be skipped.   This can apply to some composite overlapping foreign key
configurations.

Fixes: #11995
Change-Id: Icf9a52b7405d7400d46bfa944edcbff1a89225a3

9 months agoOptimize MySQL foreign key reflection
Federico Caselli [Sat, 12 Oct 2024 12:58:26 +0000 (14:58 +0200)] 
Optimize MySQL foreign key reflection

Improved foreign keys reflection logic in MySQL 8+ to use a better
optimized query. The previous query could be quite slow in databases
with a large number of columns.

Fixes: #11975
Change-Id: Ie8bcd810d4b37abf7fd5e497596e0ade52c3f82e

9 months agoAdd hash to field-like methods
Federico Caselli [Fri, 11 Oct 2024 19:20:15 +0000 (21:20 +0200)] 
Add hash to field-like methods

Added the dataclass field ``hash`` parameter to the orm field-like methods,
like :meth:`_orn.mapped_column`, :meth:`_orm.relationship`, etc.

Fixes: #11923
Change-Id: I80220f6dcd9c42f465d8a4c4ae2e4efa45279ecc

9 months agoMerge "Improve error in dataclasses with table" into main
Federico Caselli [Thu, 10 Oct 2024 21:55:31 +0000 (21:55 +0000)] 
Merge "Improve error in dataclasses with table" into main

9 months agoremove fully tested in ci reference since it's confusing
Federico Caselli [Thu, 10 Oct 2024 20:25:39 +0000 (22:25 +0200)] 
remove fully tested in ci reference since it's confusing

Change-Id: I5d1c14b2c2b3bcbb55861e1c4a90ffafe8ee00fa

9 months agoMerge "Mention that extract.field is used as sql string" into main
Federico Caselli [Thu, 10 Oct 2024 19:59:02 +0000 (19:59 +0000)] 
Merge "Mention that extract.field is used as sql string" into main

9 months agoMerge "_Binary as generic to LargeBinary" into main
Federico Caselli [Thu, 10 Oct 2024 19:20:42 +0000 (19:20 +0000)] 
Merge "_Binary as generic to LargeBinary" into main

9 months agoImprove error in dataclasses with table
Federico Caselli [Wed, 9 Oct 2024 18:35:16 +0000 (20:35 +0200)] 
Improve error in dataclasses with table

Added a better error when trying to map as dataclass a class while also
manually providing the ``__table__`` attribute.
This usage is currently not supported.

Fixes: #11973
Change-Id: I54c721b3f7447b2f062fa0cfb53b6a88c381df42

9 months ago_Binary as generic to LargeBinary
Mike Bayer [Thu, 10 Oct 2024 02:05:05 +0000 (22:05 -0400)] 
_Binary as generic to LargeBinary

Datatypes that are binary based such as :class:`.VARBINARY` will resolve to
:class:`.LargeBinary` when the :meth:`.TypeEngine.as_generic()` method is
called.

Fixes: #11978
Change-Id: I2e0586324fb0f1c367da61f0074b35c96fbe2fd0

9 months agoMerge "re-apply right memo for nested ORMJoin when splicing" into main
Michael Bayer [Thu, 10 Oct 2024 15:12:46 +0000 (15:12 +0000)] 
Merge "re-apply right memo for nested ORMJoin when splicing" into main

9 months agoMerge "honor prefetch_cols and postfetch_cols in ORM update w/ WHERE criteria" into...
Michael Bayer [Thu, 10 Oct 2024 15:10:35 +0000 (15:10 +0000)] 
Merge "honor prefetch_cols and postfetch_cols in ORM update w/ WHERE criteria" into main

9 months agoBump pypa/cibuildwheel from 2.21.2 to 2.21.3 (#11976)
dependabot[bot] [Wed, 9 Oct 2024 16:42:21 +0000 (18:42 +0200)] 
Bump pypa/cibuildwheel from 2.21.2 to 2.21.3 (#11976)

Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.21.2 to 2.21.3.
- [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.21.2...v2.21.3)

---
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>
9 months agore-apply right memo for nested ORMJoin when splicing
Mike Bayer [Tue, 8 Oct 2024 14:29:34 +0000 (10:29 -0400)] 
re-apply right memo for nested ORMJoin when splicing

Fixed regression caused by fixes to joined eager loading in
:ticket:`11449`, where a particular joinedload case could not be asserted
correctly.   We now have an example of that case so the assertion has been
repaired to allow for it.

Fixes: #11965
Change-Id: I2e0a594981534f4aaeff361a2f8cf1a0fba8de8f

9 months agohonor prefetch_cols and postfetch_cols in ORM update w/ WHERE criteria
Mike Bayer [Wed, 25 Sep 2024 18:19:02 +0000 (14:19 -0400)] 
honor prefetch_cols and postfetch_cols in ORM update w/ WHERE criteria

Continuing from :ticket:`11912`, columns marked with
:paramref:`.mapped_column.onupdate`,
:paramref:`.mapped_column.server_onupdate`, or :class:`.Computed` are now
refreshed in ORM instances when running an ORM enabled UPDATE with WHERE
criteria, even if the statement does not use RETURNING or
populate_existing.

this moves the test we added in #11912 to be in
test_update_delete_where, since this behavior is not related to bulk
statements.    For bulk statements, we're building onto the "many rows
fast" use case and we as yet intentionally don't do any "bookkeeping",
which means none of the expiration or any of that. would need to rethink
"bulk update" a bit to get onupdates to refresh.

Fixes: #11917
Change-Id: I9601be7afed523b356ce47a6daf98cc6584f4ad3

9 months agofix typo in mapper doc string
Federico Caselli [Tue, 8 Oct 2024 21:22:20 +0000 (23:22 +0200)] 
fix typo in mapper doc string

Change-Id: I10fd7bdb0f0564a5beadfe3fa9fbb7e5ea88362c

9 months agoMerge "Fixed syntax error in mysql function defaults" into main
Michael Bayer [Tue, 8 Oct 2024 18:37:27 +0000 (18:37 +0000)] 
Merge "Fixed syntax error in mysql function defaults" into main

9 months agoApply fix to reflection of table comments
Gord Thompson [Mon, 7 Oct 2024 12:31:22 +0000 (06:31 -0600)] 
Apply fix to reflection of table comments

Fixes: #11961
Change-Id: Ia3e704973a17cdf5c45bb5b8127435ee562c7d15

9 months agoAdd classifier declaring support for Python 3.13 (#11960)
Hugo van Kemenade [Mon, 7 Oct 2024 16:26:18 +0000 (19:26 +0300)] 
Add classifier declaring support for Python 3.13 (#11960)

9 months agoMerge "Add type hints to `sqlalchemy.ext.compiler`" into main
Federico Caselli [Sat, 5 Oct 2024 21:14:19 +0000 (21:14 +0000)] 
Merge "Add type hints to `sqlalchemy.ext.compiler`" into main

9 months agoAdd type hints to `sqlalchemy.ext.compiler`
Kevin Kirsche [Wed, 2 Oct 2024 17:06:59 +0000 (13:06 -0400)] 
Add type hints to `sqlalchemy.ext.compiler`

References: #6810
Closes: #11902
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11902
Pull-request-sha: 3a7719ff96c754af2575c5385c8d4fa4d5492113

Change-Id: I29c92ade40d36d186eb37534dc0318f9b2b25840

9 months agoBump pypa/cibuildwheel from 2.21.1 to 2.21.2 (#11947)
dependabot[bot] [Sat, 5 Oct 2024 07:43:30 +0000 (09:43 +0200)] 
Bump pypa/cibuildwheel from 2.21.1 to 2.21.2 (#11947)

Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.21.1 to 2.21.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.21.1...v2.21.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>
9 months agoFixed syntax error in mysql function defaults
huuyafwww [Sat, 5 Oct 2024 06:04:13 +0000 (02:04 -0400)] 
Fixed syntax error in mysql function defaults

Fixed a bug that caused a syntax error when a function was specified
to server_default when creating a column in MySQL or MariaDB.

Fixes #11317
Closes: #11953
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11953
Pull-request-sha: d93ac419a9201134e9c4845dd2e4dc48db4b6f78

Change-Id: I67fc83867df2b7dcf591c8f53b7a97afb90ebba9

10 months agoMerge "block mariadb 1.1.10" into main
Michael Bayer [Tue, 24 Sep 2024 20:20:31 +0000 (20:20 +0000)] 
Merge "block mariadb 1.1.10" into main

10 months agoblock mariadb 1.1.10
Mike Bayer [Tue, 24 Sep 2024 13:35:48 +0000 (09:35 -0400)] 
block mariadb 1.1.10

does not build for any python version

see https://jira.mariadb.org/browse/CONPY-293

Change-Id: I1bf53d79eda7ded017b233f1639aae4bf9578ae6

10 months agoLink scalar result method in scalar_one / scalar_one_or_none
Federico Caselli [Mon, 23 Sep 2024 21:11:06 +0000 (23:11 +0200)] 
Link scalar result method in scalar_one / scalar_one_or_none

References: #11919

Change-Id: Iccbcd3fc3a6143be902683837b36260e5dd31c60

10 months agoAdd type annotations to CreateSchema & DropSchema (#11914)
sh-at-cs [Mon, 23 Sep 2024 17:21:40 +0000 (19:21 +0200)] 
Add type annotations to CreateSchema & DropSchema (#11914)

10 months agopropagate populate_existing for ORM bulk update
Mike Bayer [Sun, 22 Sep 2024 15:34:48 +0000 (11:34 -0400)] 
propagate populate_existing for ORM bulk update

Similar to #9742

Fixed bug in ORM bulk update/delete where using RETURNING with bulk
update/delete in combination with populate existing would fail to
accommodate the populate_existing option.

Fixes: #11912
Change-Id: Ib9ef659512a1d1ae438eab67332a691941c06f43

10 months agoUpdated link for the Kinetica dialect (#11895)
am-kinetica [Thu, 19 Sep 2024 20:46:11 +0000 (02:16 +0530)] 
Updated link for the Kinetica dialect (#11895)

10 months agoMerge "Remove test warning in python 3.13" into main
Federico Caselli [Wed, 18 Sep 2024 22:09:25 +0000 (22:09 +0000)] 
Merge "Remove test warning in python 3.13" into main

10 months agoadd python 3.13 to pipeline
Federico Caselli [Mon, 5 Aug 2024 21:26:13 +0000 (23:26 +0200)] 
add python 3.13 to pipeline

Change-Id: Id223cfa08b187c2225ea7a6c29817d79474acfc1

10 months agoRemove test warning in python 3.13
Federico Caselli [Tue, 17 Sep 2024 18:22:11 +0000 (20:22 +0200)] 
Remove test warning in python 3.13

Change-Id: Ib098754ef6d157e8dd1eac32b3cb114a9ca66e4a

10 months agoMerge "MAINT: pytest doesn't have any more python 3.12 deprecations" into main
Federico Caselli [Tue, 17 Sep 2024 18:16:40 +0000 (18:16 +0000)] 
Merge "MAINT: pytest doesn't have any more python 3.12 deprecations" into main

10 months agoupdate MonetDB dialect information (#11884)
Yunus Koning [Tue, 17 Sep 2024 18:05:09 +0000 (20:05 +0200)] 
update MonetDB dialect information (#11884)

10 months agoBump pypa/cibuildwheel from 2.20.0 to 2.21.1 (#11885)
dependabot[bot] [Tue, 17 Sep 2024 18:02:26 +0000 (20:02 +0200)] 
Bump pypa/cibuildwheel from 2.20.0 to 2.21.1 (#11885)

Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.20.0 to 2.21.1.
- [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.20.0...v2.21.1)

---
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>
10 months agocherry-pick changelog update for 2.0.36
Mike Bayer [Mon, 16 Sep 2024 20:30:25 +0000 (16:30 -0400)] 
cherry-pick changelog update for 2.0.36

10 months agocherry-pick changelog from 2.0.35
Mike Bayer [Mon, 16 Sep 2024 20:30:25 +0000 (16:30 -0400)] 
cherry-pick changelog from 2.0.35

10 months agorequire insert_returning for new EagerLoadTest DML suite
Mike Bayer [Mon, 16 Sep 2024 17:43:30 +0000 (13:43 -0400)] 
require insert_returning for new EagerLoadTest DML suite

Change-Id: I354e3ba68ba6efaab6618e514d11355d72652bb5

10 months agoMerge "Merge url query args to opts in mariadbconnector like mysqldb" into main
Michael Bayer [Sun, 15 Sep 2024 23:16:49 +0000 (23:16 +0000)] 
Merge "Merge url query args to opts in mariadbconnector like mysqldb" into main

10 months agoMerge url query args to opts in mariadbconnector like mysqldb
Tobias Petersen [Fri, 13 Sep 2024 18:34:33 +0000 (14:34 -0400)] 
Merge url query args to opts in mariadbconnector like mysqldb

Fixed issue in mariadbconnector dialect where query string arguments that
weren't checked integer or boolean arguments would be ignored, such as
string arguments like ``unix_socket``, etc.  As part of this change, the
argument parsing for particular elements such as ``client_flags``,
``compress``, ``local_infile`` has been made more consistent across all
MySQL / MariaDB dialect which accept each argument. Pull request courtesy
Tobias Alex-Petersen.

Fixes: #11870
Closes: #11869
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11869
Pull-request-sha: 8fdcabc83b548e3fc19aa1625035d43ebc0e1875

Change-Id: I3a11a0e65e118c94928027478409488b0d5e94f8

10 months agoUpdate index.rst (#11799)
Vitalii Fuglaev [Fri, 13 Sep 2024 20:03:04 +0000 (23:03 +0300)] 
Update index.rst (#11799)

08/28/2024 была обновлена версия sqlalchemy-greenplum в PyPI и сейчас она поддерживает SQLAlchemy 2.0 и выше

10 months agoFix subquery typos in documentation and changelog (#11807)
Studnikov Dmitry [Fri, 13 Sep 2024 20:01:26 +0000 (23:01 +0300)] 
Fix subquery typos in documentation and changelog (#11807)

* fix: subquery typo

* fix: subquery typo in changelog

---------

Co-authored-by: Dmitry Studnikov <dmitrii.studnikov@mysky.com>
10 months agoMAINT: pytest doesn't have any more python 3.12 deprecations
Brigitta Sipőcz [Fri, 13 Sep 2024 20:01:04 +0000 (16:01 -0400)] 
MAINT: pytest doesn't have any more python 3.12 deprecations

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

### Description
<!-- Describe your changes in detail -->
I believe this workaround is not needed any more, pytest doesn't have any more python deprecations. (Arguably neither 3.13)

### 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] Tweek to the (testing) infrastructure
        - New category as I didn't think this PR fit in any of the 3 options offered.

- [ ] 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: #11838
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11838
Pull-request-sha: 7d500de8707cb6d89ba59922d0671afc4062de82

Change-Id: I5fef8ee799fa2dbed1d00f5a779d6b25ce3e5ae8

10 months agoFix wrong ticket reference in changelog for #11820 (#11867)
Frazer McLean [Fri, 13 Sep 2024 19:57:47 +0000 (21:57 +0200)] 
Fix wrong ticket reference in changelog for #11820 (#11867)

10 months agoMerge "fix most broken links" into main
Michael Bayer [Fri, 13 Sep 2024 17:20:18 +0000 (17:20 +0000)] 
Merge "fix most broken links" into main

10 months agoMerge "MAINT: cleanup the lasts of datetime.utcnow()" into main
Michael Bayer [Fri, 13 Sep 2024 17:19:43 +0000 (17:19 +0000)] 
Merge "MAINT: cleanup the lasts of datetime.utcnow()" into main

10 months agoFix use of typing.Literal on Python 3.8 and 3.9
Frazer McLean [Thu, 5 Sep 2024 11:29:47 +0000 (07:29 -0400)] 
Fix use of typing.Literal on Python 3.8 and 3.9

Fixed issue where it was not possible to use ``typing.Literal`` with
``Mapped[]`` on Python 3.8 and 3.9.  Pull request courtesy Frazer McLean.

Fixes: #11820
Closes: #11825
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11825
Pull-request-sha: e1e50a97d2a6e0e9ef7ba8dc1a5f07d252e79fa4

Change-Id: Idf04326abcba45813ad555127e81d581a0353587

10 months agoMention that extract.field is used as sql string
Federico Caselli [Tue, 10 Sep 2024 16:42:58 +0000 (18:42 +0200)] 
Mention that extract.field is used as sql string

Change-Id: Ieb32e298e8a1df3a31bf3a6e26b1aca381ef7a4f