|
10 | 10 |
|
11 | 11 | .. changelog::
|
12 | 12 | :version: 2.0.35
|
13 |
| - :include_notes_from: unreleased_20 |
| 13 | + :released: September 16, 2024 |
| 14 | + |
| 15 | + .. change:: |
| 16 | + :tags: bug, orm, typing |
| 17 | + :tickets: 11820 |
| 18 | + |
| 19 | + Fixed issue where it was not possible to use ``typing.Literal`` with |
| 20 | + ``Mapped[]`` on Python 3.8 and 3.9. Pull request courtesy Frazer McLean. |
| 21 | + |
| 22 | + .. change:: |
| 23 | + :tags: bug, sqlite, regression |
| 24 | + :tickets: 11840 |
| 25 | + |
| 26 | + The changes made for SQLite CHECK constraint reflection in versions 2.0.33 |
| 27 | + and 2.0.34 , :ticket:`11832` and :ticket:`11677`, have now been fully |
| 28 | + reverted, as users continued to identify existing use cases that stopped |
| 29 | + working after this change. For the moment, because SQLite does not |
| 30 | + provide any consistent way of delivering information about CHECK |
| 31 | + constraints, SQLAlchemy is limited in what CHECK constraint syntaxes can be |
| 32 | + reflected, including that a CHECK constraint must be stated all on a |
| 33 | + single, independent line (or inline on a column definition) without |
| 34 | + newlines, tabs in the constraint definition or unusual characters in the |
| 35 | + constraint name. Overall, reflection for SQLite is tailored towards being |
| 36 | + able to reflect CREATE TABLE statements that were originally created by |
| 37 | + SQLAlchemy DDL constructs. Long term work on a DDL parser that does not |
| 38 | + rely upon regular expressions may eventually improve upon this situation. |
| 39 | + A wide range of additional cross-dialect CHECK constraint reflection tests |
| 40 | + have been added as it was also a bug that these changes did not trip any |
| 41 | + existing tests. |
| 42 | + |
| 43 | + .. change:: |
| 44 | + :tags: orm, bug |
| 45 | + :tickets: 11849 |
| 46 | + |
| 47 | + Fixed issue in ORM evaluator where two datatypes being evaluated with the |
| 48 | + SQL concatenator operator would not be checked for |
| 49 | + :class:`.UnevaluatableError` based on their datatype; this missed the case |
| 50 | + of :class:`_postgresql.JSONB` values being used in a concatenate operation |
| 51 | + which is supported by PostgreSQL as well as how SQLAlchemy renders the SQL |
| 52 | + for this operation, but does not work at the Python level. By implementing |
| 53 | + :class:`.UnevaluatableError` for this combination, ORM update statements |
| 54 | + will now fall back to "expire" when a concatenated JSON value used in a SET |
| 55 | + clause is to be synchronized to a Python object. |
| 56 | + |
| 57 | + .. change:: |
| 58 | + :tags: bug, orm |
| 59 | + :tickets: 11853 |
| 60 | + |
| 61 | + An warning is emitted if :func:`_orm.joinedload` or |
| 62 | + :func:`_orm.subqueryload` are used as a top level option against a |
| 63 | + statement that is not a SELECT statement, such as with an |
| 64 | + ``insert().returning()``. There are no JOINs in INSERT statements nor is |
| 65 | + there a "subquery" that can be repurposed for subquery eager loading, and |
| 66 | + for UPDATE/DELETE joinedload does not support these either, so it is never |
| 67 | + appropriate for this use to pass silently. |
| 68 | + |
| 69 | + .. change:: |
| 70 | + :tags: bug, orm |
| 71 | + :tickets: 11855 |
| 72 | + |
| 73 | + Fixed issue where using loader options such as :func:`_orm.selectinload` |
| 74 | + with additional criteria in combination with ORM DML such as |
| 75 | + :func:`_sql.insert` with RETURNING would not correctly set up internal |
| 76 | + contexts required for caching to work correctly, leading to incorrect |
| 77 | + results. |
| 78 | + |
| 79 | + .. change:: |
| 80 | + :tags: bug, mysql |
| 81 | + :tickets: 11870 |
| 82 | + |
| 83 | + Fixed issue in mariadbconnector dialect where query string arguments that |
| 84 | + weren't checked integer or boolean arguments would be ignored, such as |
| 85 | + string arguments like ``unix_socket``, etc. As part of this change, the |
| 86 | + argument parsing for particular elements such as ``client_flags``, |
| 87 | + ``compress``, ``local_infile`` has been made more consistent across all |
| 88 | + MySQL / MariaDB dialect which accept each argument. Pull request courtesy |
| 89 | + Tobias Alex-Petersen. |
| 90 | + |
14 | 91 |
|
15 | 92 | .. changelog::
|
16 | 93 | :version: 2.0.34
|
|
0 commit comments