From: Mike Bayer Date: Mon, 11 Nov 2019 22:15:33 +0000 (-0500) Subject: cherry-pick changelog from 1.3.11 X-Git-Tag: rel_1_4_0b1~626 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=31a342c2e90ebfce2916d8c37472ba5de6f7fd4b;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git cherry-pick changelog from 1.3.11 --- diff --git a/doc/build/changelog/changelog_13.rst b/doc/build/changelog/changelog_13.rst index 78908870e8..b9fc56bbc6 100644 --- a/doc/build/changelog/changelog_13.rst +++ b/doc/build/changelog/changelog_13.rst @@ -12,7 +12,285 @@ .. changelog:: :version: 1.3.11 - :include_notes_from: unreleased_13 + :released: November 11, 2019 + + .. change:: + :tags: bug, mssql + :tickets: 4973 + + Fixed issue in MSSQL dialect where an expression-based OFFSET value in a + SELECT would be rejected, even though the dialect can render this + expression inside of a ROW NUMBER-oriented LIMIT/OFFSET construct. + + + .. change:: + :tags: orm, usecase + :tickets: 4934 + + Added accessor :meth:`.Query.is_single_entity` to :class:`.Query`, which + will indicate if the results returned by this :class:`.Query` will be a + list of ORM entities, or a tuple of entities or column expressions. + SQLAlchemy hopes to improve upon the behavior of single entity / tuples in + future releases such that the behavior would be explicit up front, however + this attribute should be helpful with the current behavior. Pull request + courtesy Patrick Hayes. + + .. change:: + :tags: bug, mysql + :tickets: 4945 + + Added "Connection was killed" message interpreted from the base + pymysql.Error class in order to detect closed connection, based on reports + that this message is arriving via a pymysql.InternalError() object which + indicates pymysql is not handling it correctly. + + .. change:: + :tags: bug, orm + :tickets: 4954 + + The :paramref:`.relationship.omit_join` flag was not intended to be + manually set to True, and will now emit a warning when this occurs. The + omit_join optimization is detected automatically, and the ``omit_join`` + flag was only intended to disable the optimization in the hypothetical case + that the optimization may have interfered with correct results, which has + not been observed with the modern version of this feature. Setting the + flag to True when it is not automatically detected may cause the selectin + load feature to not work correctly when a non-default primary join + condition is in use. + + + .. change:: + :tags: bug, orm + :tickets: 4915 + + A warning is emitted if a primary key value is passed to :meth:`.Query.get` + that consists of None for all primary key column positions. Previously, + passing a single None outside of a tuple would raise a ``TypeError`` and + passing a composite None (tuple of None values) would silently pass + through. The fix now coerces the single None into a tuple where it is + handled consistently with the other None conditions. Thanks to Lev + Izraelit for the help with this. + + + .. change:: + :tags: bug, orm + :tickets: 4947 + + The :class:`.BakedQuery` will not cache a query that was modified by a + :meth:`.QueryEvents.before_compile` event, so that compilation hooks that + may be applying ad-hoc modifications to queries will take effect on each + run. In particular this is helpful for events that modify queries used in + lazy loading as well as eager loading such as "select in" loading. In + order to re-enable caching for a query modified by this event, a new + flag ``bake_ok`` is added; see :ref:`baked_with_before_compile` for + details. + + A longer term plan to provide a new form of SQL caching should solve this + kind of issue more comprehensively. + + .. change:: + :tags: bug, tests + :tickets: 4920 + + Fixed test failures which would occur with newer SQLite as of version 3.30 + or greater, due to their addition of nulls ordering syntax as well as new + restrictions on aggregate functions. Pull request courtesy Nils Philippsen. + + + + .. change:: + :tags: bug, installation, windows + :tickets: 4967 + + Added a workaround for a setuptools-related failure that has been observed + as occurring on Windows installations, where setuptools is not correctly + reporting a build error when the MSVC build dependencies are not installed + and therefore not allowing graceful degradation into non C extensions + builds. + + .. change:: + :tags: bug, sql, py3k + :tickets: 4931 + + Changed the ``repr()`` of the :class:`.quoted_name` construct to use + regular string repr() under Python 3, rather than running it through + "backslashreplace" escaping, which can be misleading. + + .. change:: + :tags: bug, oracle, firebird + :tickets: 4931 + + Modified the approach of "name normalization" for the Oracle and Firebird + dialects, which converts from the UPPERCASE-as-case-insensitive convention + of these dialects into lowercase-as-case-insensitive for SQLAlchemy, to not + automatically apply the :class:`.quoted_name` construct to a name that + matches itself under upper or lower case conversion, as is the case for + many non-european characters. All names used within metadata structures + are converted to :class:`.quoted_name` objects in any case; the change + here would only affect the output of some inspection functions. + + .. change:: + :tags: bug, schema + :tickets: 4911 + + Fixed bug where a table that would have a column label overlap with a plain + column name, such as "foo.id AS foo_id" vs. "foo.foo_id", would prematurely + generate the ``._label`` attribute for a column before this overlap could + be detected due to the use of the ``index=True`` or ``unique=True`` flag on + the column in conjunction with the default naming convention of + ``"column_0_label"``. This would then lead to failures when ``._label`` + were used later to generate a bound parameter name, in particular those + used by the ORM when generating the WHERE clause for an UPDATE statement. + The issue has been fixed by using an alternate ``._label`` accessor for DDL + generation that does not affect the state of the :class:`.Column`. The + accessor also bypasses the key-deduplication step as it is not necessary + for DDL, the naming is now consistently ``"_"`` + without any subsequent numeric symbols when used in DDL. + + + + .. change:: + :tags: bug, engine + :tickets: 4902 + + Fixed bug where parameter repr as used in logging and error reporting needs + additional context in order to distinguish between a list of parameters for + a single statement and a list of parameter lists, as the "list of lists" + structure could also indicate a single parameter list where the first + parameter itself is a list, such as for an array parameter. The + engine/connection now passes in an additional boolean indicating how the + parameters should be considered. The only SQLAlchemy backend that expects + arrays as parameters is that of psycopg2 which uses pyformat parameters, + so this issue has not been too apparent, however as other drivers that use + positional gain more features it is important that this be supported. It + also eliminates the need for the parameter repr function to guess based on + the parameter structure passed. + + .. change:: + :tags: usecase, schema + :tickets: 4894 + + Added DDL support for "computed columns"; these are DDL column + specifications for columns that have a server-computed value, either upon + SELECT (known as "virtual") or at the point of which they are INSERTed or + UPDATEd (known as "stored"). Support is established for Postgresql, MySQL, + Oracle SQL Server and Firebird. Thanks to Federico Caselli for lots of work + on this one. + + .. seealso:: + + :ref:`computed_ddl` + + + .. change:: + :tags: bug, engine, postgresql + :tickets: 4955 + + Fixed bug in :class:`.Inspector` where the cache key generation did not + take into account arguments passed in the form of tuples, such as the tuple + of view name styles to return for the PostgreSQL dialect. This would lead + the inspector to cache too generally for a more specific set of criteria. + The logic has been adjusted to include every keyword element in the cache, + as every argument is expected to be appropriate for a cache else the + caching decorator should be bypassed by the dialect. + + + .. change:: + :tags: bug, mssql + :tickets: 4923 + + Fixed an issue in the :meth:`.Engine.table_names` method where it would + feed the dialect's default schema name back into the dialect level table + function, which in the case of SQL Server would interpret it as a + dot-tokenized schema name as viewed by the mssql dialect, which would + cause the method to fail in the case where the database username actually + had a dot inside of it. In 1.3, this method is still used by the + :meth:`.MetaData.reflect` function so is a prominent codepath. In 1.4, + which is the current master development branch, this issue doesn't exist, + both because :meth:`.MetaData.reflect` isn't using this method nor does the + method pass the default schema name explicitly. The fix nonetheless + guards against the default server name value returned by the dialect from + being interpreted as dot-tokenized name under any circumstances by + wrapping it in quoted_name(). + + .. change:: + :tags: bug, orm + :tickets: 4974 + + Fixed ORM bug where a "secondary" table that referred to a selectable which + in some way would refer to the local primary table would apply aliasing to + both sides of the join condition when a relationship-related join, either + via :meth:`.Query.join` or by :func:`.joinedload`, were generated. The + "local" side is now excluded. + + .. change:: + :tags: usecase, sql + :tickets: 4276 + + Added new accessors to expressions of type :class:`.JSON` to allow for + specific datatype access and comparison, covering strings, integers, + numeric, boolean elements. This revises the documented approach of + CASTing to string when comparing values, instead adding specific + functionality into the PostgreSQL, SQlite, MySQL dialects to reliably + deliver these basic types in all cases. + + .. seealso:: + + :class:`.JSON` + + :meth:`.JSON.Comparator.as_string` + + :meth:`.JSON.Comparator.as_boolean` + + :meth:`.JSON.Comparator.as_float` + + :meth:`.JSON.Comparator.as_integer` + + .. change:: + :tags: usecase, oracle + :tickets: 4799 + + Added dialect-level flag ``encoding_errors`` to the cx_Oracle dialect, + which can be specified as part of :func:`.create_engine`. This is passed + to SQLAlchemy's unicode decoding converter under Python 2, and to + cx_Oracle's ``cursor.var()`` object as the ``encodingErrors`` parameter + under Python 3, for the very unusual case that broken encodings are present + in the target database which cannot be fetched unless error handling is + relaxed. The value is ultimately one of the Python "encoding errors" + parameters passed to ``decode()``. + + .. change:: + :tags: usecase, sql + :tickets: 4933 + + The :func:`.text` construct now supports "unique" bound parameters, which + will dynamically uniquify themselves on compilation thus allowing multiple + :func:`.text` constructs with the same bound parameter names to be combined + together. + + + .. change:: + :tags: bug, oracle + :tickets: 4913 + + The :class:`.sqltypes.NCHAR` datatype will now bind to the + ``cx_Oracle.FIXED_NCHAR`` DBAPI data bindings when used in a bound + parameter, which supplies proper comparison behavior against a + variable-length string. Previously, the :class:`.sqltypes.NCHAR` datatype + would bind to ``cx_oracle.NCHAR`` which is not fixed length; the + :class:`.sqltypes.CHAR` datatype already binds to ``cx_Oracle.FIXED_CHAR`` + so it is now consistent that :class:`.sqltypes.NCHAR` binds to + ``cx_Oracle.FIXED_NCHAR``. + + + + .. change:: + :tags: bug, firebird + :tickets: 4903 + + Added additional "disconnect" message "Error writing data to the + connection" to Firebird disconnection detection. Pull request courtesy + lukens. .. changelog:: :version: 1.3.10 diff --git a/doc/build/changelog/unreleased_13/4276.rst b/doc/build/changelog/unreleased_13/4276.rst deleted file mode 100644 index bc05b94b4e..0000000000 --- a/doc/build/changelog/unreleased_13/4276.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. change:: - :tags: usecase, sql - :tickets: 4276 - - Added new accessors to expressions of type :class:`.JSON` to allow for - specific datatype access and comparison, covering strings, integers, - numeric, boolean elements. This revises the documented approach of - CASTing to string when comparing values, instead adding specific - functionality into the PostgreSQL, SQlite, MySQL dialects to reliably - deliver these basic types in all cases. - - .. seealso:: - - :class:`.JSON` - - :meth:`.JSON.Comparator.as_string` - - :meth:`.JSON.Comparator.as_boolean` - - :meth:`.JSON.Comparator.as_float` - - :meth:`.JSON.Comparator.as_integer` diff --git a/doc/build/changelog/unreleased_13/4799.rst b/doc/build/changelog/unreleased_13/4799.rst deleted file mode 100644 index 8cc12a6f32..0000000000 --- a/doc/build/changelog/unreleased_13/4799.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: usecase, oracle - :tickets: 4799 - - Added dialect-level flag ``encoding_errors`` to the cx_Oracle dialect, - which can be specified as part of :func:`.create_engine`. This is passed - to SQLAlchemy's unicode decoding converter under Python 2, and to - cx_Oracle's ``cursor.var()`` object as the ``encodingErrors`` parameter - under Python 3, for the very unusual case that broken encodings are present - in the target database which cannot be fetched unless error handling is - relaxed. The value is ultimately one of the Python "encoding errors" - parameters passed to ``decode()``. diff --git a/doc/build/changelog/unreleased_13/4894.rst b/doc/build/changelog/unreleased_13/4894.rst deleted file mode 100644 index ee0f6f8122..0000000000 --- a/doc/build/changelog/unreleased_13/4894.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. change:: - :tags: usecase, schema - :tickets: 4894 - - Added DDL support for "computed columns"; these are DDL column - specifications for columns that have a server-computed value, either upon - SELECT (known as "virtual") or at the point of which they are INSERTed or - UPDATEd (known as "stored"). Support is established for Postgresql, MySQL, - Oracle SQL Server and Firebird. Thanks to Federico Caselli for lots of work - on this one. - - .. seealso:: - - :ref:`computed_ddl` - diff --git a/doc/build/changelog/unreleased_13/4902.rst b/doc/build/changelog/unreleased_13/4902.rst deleted file mode 100644 index 673077a32d..0000000000 --- a/doc/build/changelog/unreleased_13/4902.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. change:: - :tags: bug, engine - :tickets: 4902 - - Fixed bug where parameter repr as used in logging and error reporting needs - additional context in order to distinguish between a list of parameters for - a single statement and a list of parameter lists, as the "list of lists" - structure could also indicate a single parameter list where the first - parameter itself is a list, such as for an array parameter. The - engine/connection now passes in an additional boolean indicating how the - parameters should be considered. The only SQLAlchemy backend that expects - arrays as parameters is that of psycopg2 which uses pyformat parameters, - so this issue has not been too apparent, however as other drivers that use - positional gain more features it is important that this be supported. It - also eliminates the need for the parameter repr function to guess based on - the parameter structure passed. diff --git a/doc/build/changelog/unreleased_13/4903.rst b/doc/build/changelog/unreleased_13/4903.rst deleted file mode 100644 index d6d2850963..0000000000 --- a/doc/build/changelog/unreleased_13/4903.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: bug, firebird - :tickets: 4903 - - Added additional "disconnect" message "Error writing data to the - connection" to Firebird disconnection detection. Pull request courtesy - lukens. diff --git a/doc/build/changelog/unreleased_13/4911.rst b/doc/build/changelog/unreleased_13/4911.rst deleted file mode 100644 index 02db4b809a..0000000000 --- a/doc/build/changelog/unreleased_13/4911.rst +++ /dev/null @@ -1,19 +0,0 @@ -.. change:: - :tags: bug, schema - :tickets: 4911 - - Fixed bug where a table that would have a column label overlap with a plain - column name, such as "foo.id AS foo_id" vs. "foo.foo_id", would prematurely - generate the ``._label`` attribute for a column before this overlap could - be detected due to the use of the ``index=True`` or ``unique=True`` flag on - the column in conjunction with the default naming convention of - ``"column_0_label"``. This would then lead to failures when ``._label`` - were used later to generate a bound parameter name, in particular those - used by the ORM when generating the WHERE clause for an UPDATE statement. - The issue has been fixed by using an alternate ``._label`` accessor for DDL - generation that does not affect the state of the :class:`.Column`. The - accessor also bypasses the key-deduplication step as it is not necessary - for DDL, the naming is now consistently ``"_"`` - without any subsequent numeric symbols when used in DDL. - - diff --git a/doc/build/changelog/unreleased_13/4913.rst b/doc/build/changelog/unreleased_13/4913.rst deleted file mode 100644 index de94888231..0000000000 --- a/doc/build/changelog/unreleased_13/4913.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: bug, oracle - :tickets: 4913 - - The :class:`.sqltypes.NCHAR` datatype will now bind to the - ``cx_Oracle.FIXED_NCHAR`` DBAPI data bindings when used in a bound - parameter, which supplies proper comparison behavior against a - variable-length string. Previously, the :class:`.sqltypes.NCHAR` datatype - would bind to ``cx_oracle.NCHAR`` which is not fixed length; the - :class:`.sqltypes.CHAR` datatype already binds to ``cx_Oracle.FIXED_CHAR`` - so it is now consistent that :class:`.sqltypes.NCHAR` binds to - ``cx_Oracle.FIXED_NCHAR``. - - diff --git a/doc/build/changelog/unreleased_13/4915.rst b/doc/build/changelog/unreleased_13/4915.rst deleted file mode 100644 index 1048d06697..0000000000 --- a/doc/build/changelog/unreleased_13/4915.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4915 - - A warning is emitted if a primary key value is passed to :meth:`.Query.get` - that consists of None for all primary key column positions. Previously, - passing a single None outside of a tuple would raise a ``TypeError`` and - passing a composite None (tuple of None values) would silently pass - through. The fix now coerces the single None into a tuple where it is - handled consistently with the other None conditions. Thanks to Lev - Izraelit for the help with this. - diff --git a/doc/build/changelog/unreleased_13/4920.rst b/doc/build/changelog/unreleased_13/4920.rst deleted file mode 100644 index aabcc570b1..0000000000 --- a/doc/build/changelog/unreleased_13/4920.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, tests - :tickets: 4920 - - Fixed test failures which would occur with newer SQLite as of version 3.30 - or greater, due to their addition of nulls ordering syntax as well as new - restrictions on aggregate functions. Pull request courtesy Nils Philippsen. - - diff --git a/doc/build/changelog/unreleased_13/4923.rst b/doc/build/changelog/unreleased_13/4923.rst deleted file mode 100644 index e5318f51fa..0000000000 --- a/doc/build/changelog/unreleased_13/4923.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. change:: - :tags: bug, mssql - :tickets: 4923 - - Fixed an issue in the :meth:`.Engine.table_names` method where it would - feed the dialect's default schema name back into the dialect level table - function, which in the case of SQL Server would interpret it as a - dot-tokenized schema name as viewed by the mssql dialect, which would - cause the method to fail in the case where the database username actually - had a dot inside of it. In 1.3, this method is still used by the - :meth:`.MetaData.reflect` function so is a prominent codepath. In 1.4, - which is the current master development branch, this issue doesn't exist, - both because :meth:`.MetaData.reflect` isn't using this method nor does the - method pass the default schema name explicitly. The fix nonetheless - guards against the default server name value returned by the dialect from - being interpreted as dot-tokenized name under any circumstances by - wrapping it in quoted_name(). diff --git a/doc/build/changelog/unreleased_13/4931.rst b/doc/build/changelog/unreleased_13/4931.rst deleted file mode 100644 index 164924c4a2..0000000000 --- a/doc/build/changelog/unreleased_13/4931.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. change:: - :tags: bug, sql, py3k - :tickets: 4931 - - Changed the ``repr()`` of the :class:`.quoted_name` construct to use - regular string repr() under Python 3, rather than running it through - "backslashreplace" escaping, which can be misleading. - -.. change:: - :tags: bug, oracle, firebird - :tickets: 4931 - - Modified the approach of "name normalization" for the Oracle and Firebird - dialects, which converts from the UPPERCASE-as-case-insensitive convention - of these dialects into lowercase-as-case-insensitive for SQLAlchemy, to not - automatically apply the :class:`.quoted_name` construct to a name that - matches itself under upper or lower case conversion, as is the case for - many non-european characters. All names used within metadata structures - are converted to :class:`.quoted_name` objects in any case; the change - here would only affect the output of some inspection functions. diff --git a/doc/build/changelog/unreleased_13/4933.rst b/doc/build/changelog/unreleased_13/4933.rst deleted file mode 100644 index d9b8c6c23d..0000000000 --- a/doc/build/changelog/unreleased_13/4933.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: usecase, sql - :tickets: 4933 - - The :func:`.text` construct now supports "unique" bound parameters, which - will dynamically uniquify themselves on compilation thus allowing multiple - :func:`.text` constructs with the same bound parameter names to be combined - together. - diff --git a/doc/build/changelog/unreleased_13/4934.rst b/doc/build/changelog/unreleased_13/4934.rst deleted file mode 100644 index 3f279a4308..0000000000 --- a/doc/build/changelog/unreleased_13/4934.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: orm, usecase - :tickets: 4934 - - Added accessor :meth:`.Query.is_single_entity` to :class:`.Query`, which - will indicate if the results returned by this :class:`.Query` will be a - list of ORM entities, or a tuple of entities or column expressions. - SQLAlchemy hopes to improve upon the behavior of single entity / tuples in - future releases such that the behavior would be explicit up front, however - this attribute should be helpful with the current behavior. Pull request - courtesy Patrick Hayes. diff --git a/doc/build/changelog/unreleased_13/4945.rst b/doc/build/changelog/unreleased_13/4945.rst deleted file mode 100644 index f94efca20b..0000000000 --- a/doc/build/changelog/unreleased_13/4945.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, mysql - :tickets: 4945 - - Added "Connection was killed" message interpreted from the base - pymysql.Error class in order to detect closed connection, based on reports - that this message is arriving via a pymysql.InternalError() object which - indicates pymysql is not handling it correctly. diff --git a/doc/build/changelog/unreleased_13/4947.rst b/doc/build/changelog/unreleased_13/4947.rst deleted file mode 100644 index afae0766b7..0000000000 --- a/doc/build/changelog/unreleased_13/4947.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4947 - - The :class:`.BakedQuery` will not cache a query that was modified by a - :meth:`.QueryEvents.before_compile` event, so that compilation hooks that - may be applying ad-hoc modifications to queries will take effect on each - run. In particular this is helpful for events that modify queries used in - lazy loading as well as eager loading such as "select in" loading. In - order to re-enable caching for a query modified by this event, a new - flag ``bake_ok`` is added; see :ref:`baked_with_before_compile` for - details. - - A longer term plan to provide a new form of SQL caching should solve this - kind of issue more comprehensively. diff --git a/doc/build/changelog/unreleased_13/4954.rst b/doc/build/changelog/unreleased_13/4954.rst deleted file mode 100644 index 1c147d1dc9..0000000000 --- a/doc/build/changelog/unreleased_13/4954.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4954 - - The :paramref:`.relationship.omit_join` flag was not intended to be - manually set to True, and will now emit a warning when this occurs. The - omit_join optimization is detected automatically, and the ``omit_join`` - flag was only intended to disable the optimization in the hypothetical case - that the optimization may have interfered with correct results, which has - not been observed with the modern version of this feature. Setting the - flag to True when it is not automatically detected may cause the selectin - load feature to not work correctly when a non-default primary join - condition is in use. - diff --git a/doc/build/changelog/unreleased_13/4955.rst b/doc/build/changelog/unreleased_13/4955.rst deleted file mode 100644 index 7e98c48497..0000000000 --- a/doc/build/changelog/unreleased_13/4955.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: bug, engine, postgresql - :tickets: 4955 - - Fixed bug in :class:`.Inspector` where the cache key generation did not - take into account arguments passed in the form of tuples, such as the tuple - of view name styles to return for the PostgreSQL dialect. This would lead - the inspector to cache too generally for a more specific set of criteria. - The logic has been adjusted to include every keyword element in the cache, - as every argument is expected to be appropriate for a cache else the - caching decorator should be bypassed by the dialect. - diff --git a/doc/build/changelog/unreleased_13/4967.rst b/doc/build/changelog/unreleased_13/4967.rst deleted file mode 100644 index 341c572683..0000000000 --- a/doc/build/changelog/unreleased_13/4967.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, installation, windows - :tickets: 4967 - - Added a workaround for a setuptools-related failure that has been observed - as occurring on Windows installations, where setuptools is not correctly - reporting a build error when the MSVC build dependencies are not installed - and therefore not allowing graceful degradation into non C extensions - builds. diff --git a/doc/build/changelog/unreleased_13/4973.rst b/doc/build/changelog/unreleased_13/4973.rst deleted file mode 100644 index 06498e976d..0000000000 --- a/doc/build/changelog/unreleased_13/4973.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, mssql - :tickets: 4973 - - Fixed issue in MSSQL dialect where an expression-based OFFSET value in a - SELECT would be rejected, even though the dialect can render this - expression inside of a ROW NUMBER-oriented LIMIT/OFFSET construct. - diff --git a/doc/build/changelog/unreleased_13/4974.rst b/doc/build/changelog/unreleased_13/4974.rst deleted file mode 100644 index fc2af4d75d..0000000000 --- a/doc/build/changelog/unreleased_13/4974.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4974 - - Fixed ORM bug where a "secondary" table that referred to a selectable which - in some way would refer to the local primary table would apply aliasing to - both sides of the join condition when a relationship-related join, either - via :meth:`.Query.join` or by :func:`.joinedload`, were generated. The - "local" side is now excluded.