From: Mike Bayer Date: Sat, 17 Nov 2018 04:04:42 +0000 (-0500) Subject: - 1.3.0b1 X-Git-Tag: rel_1_3_0b1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=19590812c02945b776a85a709dd6345e30c0dd71;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - 1.3.0b1 --- diff --git a/doc/build/changelog/changelog_13.rst b/doc/build/changelog/changelog_13.rst index d8ef726b83..486c6fb594 100644 --- a/doc/build/changelog/changelog_13.rst +++ b/doc/build/changelog/changelog_13.rst @@ -12,4 +12,520 @@ .. changelog:: :version: 1.3.0b1 - :include_notes_from: unreleased_13 + :released: November 16, 2018 + + .. change:: + :tags: bug, ext + :tickets: 3423 + + Reworked :class:`.AssociationProxy` to store state that's specific to a + parent class in a separate object, so that a single + :class:`.AssocationProxy` can serve for multiple parent classes, as is + intrinsic to inheritance, without any ambiguity in the state returned by it. + A new method :meth:`.AssociationProxy.for_class` is added to allow + inspection of class-specific state. + + .. seealso:: + + :ref:`change_3423` + + + .. change:: + :tags: bug, oracle + :tickets: 4369 + + Updated the parameters that can be sent to the cx_Oracle DBAPI to both allow + for all current parameters as well as for future parameters not added yet. + In addition, removed unused parameters that were deprecated in version 1.2, + and additionally we are now defaulting "threaded" to False. + + .. seealso:: + + :ref:`change_4369` + + .. change:: + :tags: bug, oracle + :tickets: 4242 + + The Oracle dialect will no longer use the NCHAR/NCLOB datatypes + represent generic unicode strings or clob fields in conjunction with + :class:`.Unicode` and :class:`.UnicodeText` unless the flag + ``use_nchar_for_unicode=True`` is passed to :func:`.create_engine` - + this includes CREATE TABLE behavior as well as ``setinputsizes()`` for + bound parameters. On the read side, automatic Unicode conversion under + Python 2 has been added to CHAR/VARCHAR/CLOB result rows, to match the + behavior of cx_Oracle under Python 3. In order to mitigate the performance + hit under Python 2, SQLAlchemy's very performant (when C extensions + are built) native Unicode handlers are used under Python 2. + + .. seealso:: + + :ref:`change_4242` + + .. change:: + :tags: bug, orm + :tickets: 3844 + + Fixed issue regarding passive_deletes="all", where the foreign key + attribute of an object is maintained with its value even after the object + is removed from its parent collection. Previously, the unit of work would + set this to NULL even though passive_deletes indicated it should not be + modified. + + .. seealso:: + + :ref:`change_3844` + + .. change:: + :tags: bug, ext + :tickets: 4268 + + The long-standing behavior of the association proxy collection maintaining + only a weak reference to the parent object is reverted; the proxy will now + maintain a strong reference to the parent for as long as the proxy + collection itself is also in memory, eliminating the "stale association + proxy" error. This change is being made on an experimental basis to see if + any use cases arise where it causes side effects. + + .. seealso:: + + :ref:`change_4268` + + + .. change:: + :tags: bug, sql + :tickets: 4302 + + Added "like" based operators as "comparison" operators, including + :meth:`.ColumnOperators.startswith` :meth:`.ColumnOperators.endswith` + :meth:`.ColumnOperators.ilike` :meth:`.ColumnOperators.notilike` among many + others, so that all of these operators can be the basis for an ORM + "primaryjoin" condition. + + + .. change:: + :tags: feature, sqlite + :tickets: 3850 + + Added support for SQLite's json functionality via the new + SQLite implementation for :class:`.types.JSON`, :class:`.sqlite.JSON`. + The name used for the type is ``JSON``, following an example found at + SQLite's own documentation. Pull request courtesy Ilja Everilä. + + .. seealso:: + + :ref:`change_3850` + + .. change:: + :tags: feature, engine + + Added new "lifo" mode to :class:`.QueuePool`, typically enabled by setting + the flag :paramref:`.create_engine.pool_use_lifo` to True. "lifo" mode + means the same connection just checked in will be the first to be checked + out again, allowing excess connections to be cleaned up from the server + side during periods of the pool being only partially utilized. Pull request + courtesy Taem Park. + + .. seealso:: + + :ref:`change_pr467` + + .. change:: + :tags: bug, orm + :tickets: 4359 + + Improved the behavior of a relationship-bound many-to-one object expression + such that the retrieval of column values on the related object are now + resilient against the object being detached from its parent + :class:`.Session`, even if the attribute has been expired. New features + within the :class:`.InstanceState` are used to memoize the last known value + of a particular column attribute before its expired, so that the expression + can still evaluate when the object is detached and expired at the same + time. Error conditions are also improved using modern attribute state + features to produce more specific messages as needed. + + .. seealso:: + + :ref:`change_4359` + + .. change:: + :tags: feature, mysql + :tickets: 4219 + + Support added for the "WITH PARSER" syntax of CREATE FULLTEXT INDEX + in MySQL, using the ``mysql_with_parser`` keyword argument. Reflection + is also supported, which accommodates MySQL's special comment format + for reporting on this option as well. Additionally, the "FULLTEXT" and + "SPATIAL" index prefixes are now reflected back into the ``mysql_prefix`` + index option. + + + + .. change:: + :tags: bug, orm, mysql, postgresql + :tickets: 4246 + + The ORM now doubles the "FOR UPDATE" clause within the subquery that + renders in conjunction with joined eager loading in some cases, as it has + been observed that MySQL does not lock the rows from a subquery. This + means the query renders with two FOR UPDATE clauses; note that on some + backends such as Oracle, FOR UPDATE clauses on subqueries are silently + ignored since they are unnecessary. Additionally, in the case of the "OF" + clause used primarily with Postgresql, the FOR UPDATE is rendered only on + the inner subquery when this is used so that the selectable can be targeted + to the table within the SELECT statement. + + .. seealso:: + + :ref:`change_4246` + + .. change:: + :tags: feature, mssql + :tickets: 4158 + + Added ``fast_executemany=True`` parameter to the SQL Server pyodbc dialect, + which enables use of pyodbc's new performance feature of the same name + when using Microsoft ODBC drivers. + + .. seealso:: + + :ref:`change_4158` + + .. change:: + :tags: bug, ext + :tickets: 4308 + + Fixed multiple issues regarding de-association of scalar objects with the + association proxy. ``del`` now works, and additionally a new flag + :paramref:`.AssociationProxy.cascade_scalar_deletes` is added, which when + set to True indicates that setting a scalar attribute to ``None`` or + deleting via ``del`` will also set the source association to ``None``. + + .. seealso:: + + :ref:`change_4308` + + + .. change:: + :tags: feature, ext + :tickets: 4318 + + Added new feature :meth:`.BakedQuery.to_query`, which allows for a + clean way of using one :class:`.BakedQuery` as a subquery inside of another + :class:`.BakedQuery` without needing to refer explicitly to a + :class:`.Session`. + + + .. change:: + :tags: feature, sqlite + :tickets: 4360 + + Implemented the SQLite ``ON CONFLICT`` clause as understood at the DDL + level, e.g. for primary key, unique, and CHECK constraints as well as + specified on a :class:`.Column` to satisfy inline primary key and NOT NULL. + Pull request courtesy Denis Kataev. + + .. seealso:: + + :ref:`change_4360` + + .. change:: + :tags: feature, postgresql + :tickets: 4237 + + Added rudimental support for reflection of Postgresql + partitioned tables, e.g. that relkind='p' is added to reflection + queries that return table information. + + .. seealso:: + + :ref:`change_4237` + + .. change:: + :tags: feature, ext + :tickets: 4351 + + The :class:`.AssociationProxy` now has standard column comparison operations + such as :meth:`.ColumnOperators.like` and + :meth:`.ColumnOperators.startswith` available when the target attribute is a + plain column - the EXISTS expression that joins to the target table is + rendered as usual, but the column expression is then use within the WHERE + criteria of the EXISTS. Note that this alters the behavior of the + ``.contains()`` method on the association proxy to make use of + :meth:`.ColumnOperators.contains` when used on a column-based attribute. + + .. seealso:: + + :ref:`change_4351` + + + .. change:: + :tags: feature, orm + + Added new flag :paramref:`.Session.bulk_save_objects.preserve_order` to the + :meth:`.Session.bulk_save_objects` method, which defaults to True. When set + to False, the given mappings will be grouped into inserts and updates per + each object type, to allow for greater opportunities to batch common + operations together. Pull request courtesy Alessandro Cucci. + + .. change:: + :tags: bug, orm + :tickets: 4365 + + Refactored :meth:`.Query.join` to further clarify the individual components + of structuring the join. This refactor adds the ability for + :meth:`.Query.join` to determine the most appropriate "left" side of the + join when there is more than one element in the FROM list or the query is + against multiple entities. If more than one FROM/entity matches, an error + is raised that asks for an ON clause to be specified to resolve the + ambiguity. In particular this targets the regression we saw in + :ticket:`4363` but is also of general use. The codepaths within + :meth:`.Query.join` are now easier to follow and the error cases are + decided more specifically at an earlier point in the operation. + + .. seealso:: + + :ref:`change_4365` + + .. change:: + :tags: bug, sql + :tickets: 3981 + + Fixed issue with :meth:`.TypeEngine.bind_expression` and + :meth:`.TypeEngine.column_expression` methods where these methods would not + work if the target type were part of a :class:`.Variant`, or other target + type of a :class:`.TypeDecorator`. Additionally, the SQL compiler now + calls upon the dialect-level implementation when it renders these methods + so that dialects can now provide for SQL-level processing for built-in + types. + + .. seealso:: + + :ref:`change_3981` + + + .. change:: + :tags: bug, orm + :tickets: 4304 + + Fixed long-standing issue in :class:`.Query` where a scalar subquery such + as produced by :meth:`.Query.exists`, :meth:`.Query.as_scalar` and other + derivations from :attr:`.Query.statement` would not correctly be adapted + when used in a new :class:`.Query` that required entity adaptation, such as + when the query were turned into a union, or a from_self(), etc. The change + removes the "no adaptation" annotation from the :func:`.select` object + produced by the :attr:`.Query.statement` accessor. + + .. change:: + :tags: bug, orm, declarative + :tickets: 4133 + + Fixed bug where declarative would not update the state of the + :class:`.Mapper` as far as what attributes were present, when additional + attributes were added or removed after the mapper attribute collections had + already been called and memoized. Addtionally, a ``NotImplementedError`` + is now raised if a fully mapped attribute (e.g. column, relationship, etc.) + is deleted from a class that is currently mapped, since the mapper will not + function correctly if the attribute has been removed. + + .. change:: + :tags: bug, mssql + :tickets: 4362 + + Deprecated the use of :class:`.Sequence` with SQL Server in order to affect + the "start" and "increment" of the IDENTITY value, in favor of new + parameters ``mssql_identity_start`` and ``mssql_identity_increment`` which + set these parameters directly. :class:`.Sequence` will be used to generate + real ``CREATE SEQUENCE`` DDL with SQL Server in a future release. + + .. seealso:: + + :ref:`change_4362` + + + .. change:: + :tags: feature, mysql + + Added support for the parameters in an ON DUPLICATE KEY UPDATE statement on + MySQL to be ordered, since parameter order in a MySQL UPDATE clause is + significant, in a similar manner as that described at + :ref:`updates_order_parameters`. Pull request courtesy Maxim Bublis. + + .. seealso:: + + :ref:`change_mysql_ondupordering` + + .. change:: + :tags: feature, sql + :tickets: 4144 + + Added :class:`.Sequence` to the "string SQL" system that will render a + meaningful string expression (``""``) + when stringifying without a dialect a statement that includes a "sequence + nextvalue" expression, rather than raising a compilation error. + + + + .. change:: + :tags: bug, orm + :tickets: 4232 + + An informative exception is re-raised when a primary key value is not + sortable in Python during an ORM flush under Python 3, such as an ``Enum`` + that has no ``__lt__()`` method; normally Python 3 raises a ``TypeError`` + in this case. The flush process sorts persistent objects by primary key + in Python so the values must be sortable. + + + .. change:: + :tags: orm, bug + :tickets: 3604 + + Removed the collection converter used by the :class:`.MappedCollection` + class. This converter was used only to assert that the incoming dictionary + keys matched that of their corresponding objects, and only during a bulk set + operation. The converter can interfere with a custom validator or + :meth:`.AttributeEvents.bulk_replace` listener that wants to convert + incoming values further. The ``TypeError`` which would be raised by this + converter when an incoming key didn't match the value is removed; incoming + values during a bulk assignment will be keyed to their value-generated key, + and not the key that's explicitly present in the dictionary. + + Overall, @converter is superseded by the + :meth:`.AttributeEvents.bulk_replace` event handler added as part of + :ticket:`3896`. + + .. change:: + :tags: feature, sql + :tickets: 3989 + + Added new naming convention tokens ``column_0N_name``, ``column_0_N_name``, + etc., which will render the names / keys / labels for all columns referenced + by a particular constraint in a sequence. In order to accommodate for the + length of such a naming convention, the SQL compiler's auto-truncation + feature now applies itself to constraint names as well, which creates a + shortened, deterministically generated name for the constraint that will + apply to a target backend without going over the character limit of that + backend. + + The change also repairs two other issues. One is that the ``column_0_key`` + token wasn't available even though this token was documented, the other was + that the ``referred_column_0_name`` token would inadvertently render the + ``.key`` and not the ``.name`` of the column if these two values were + different. + + .. seealso:: + + :ref:`change_3989` + + + .. change:: + :tags: feature, ext + :tickets: 4196 + + Added support for bulk :meth:`.Query.update` and :meth:`.Query.delete` + to the :class:`.ShardedQuery` class within the horiziontal sharding + extension. This also adds an additional expansion hook to the + bulk update/delete methods :meth:`.Query._execute_crud`. + + .. seealso:: + + :ref:`change_4196` + + .. change:: + :tags: feature, sql + :tickets: 4271 + + Added new logic to the "expanding IN" bound parameter feature whereby if + the given list is empty, a special "empty set" expression that is specific + to different backends is generated, thus allowing IN expressions to be + fully dynamic including empty IN expressions. + + .. seealso:: + + :ref:`change_4271` + + + + .. change:: + :tags: feature, mysql + + The "pre-ping" feature of the connection pool now uses + the ``ping()`` method of the DBAPI connection in the case of + mysqlclient, PyMySQL and mysql-connector-python. Pull request + courtesy Maxim Bublis. + + .. seealso:: + + :ref:`change_mysql_ping` + + .. change:: + :tags: feature, orm + :tickets: 4340 + + The "selectin" loader strategy now omits the JOIN in the case of a simple + one-to-many load, where it instead relies loads only from the related + table, relying upon the foreign key columns of the related table in order + to match up to primary keys in the parent table. This optimization can be + disabled by setting the :paramref:`.relationship.omit_join` flag to False. + Many thanks to Jayson Reis for the efforts on this. + + .. seealso:: + + :ref:`change_4340` + + .. change:: + :tags: bug, orm + :tickets: 4353 + + Added new behavior to the lazy load that takes place when the "old" value of + a many-to-one is retrieved, such that exceptions which would be raised due + to either ``lazy="raise"`` or a detached session error are skipped. + + .. seealso:: + + :ref:`change_4353` + + .. change:: + :tags: feature, sql + + The Python builtin ``dir()`` is now supported for a SQLAlchemy "properties" + object, such as that of a Core columns collection (e.g. ``.c``), + ``mapper.attrs``, etc. Allows iPython autocompletion to work as well. + Pull request courtesy Uwe Korn. + + .. change:: + :tags: feature, orm + :tickets: 4257 + + Added ``.info`` dictionary to the :class:`.InstanceState` class, the object + that comes from calling :func:`.inspect` on a mapped object. + + .. seealso:: + + :ref:`change_4257` + + .. change:: + :tags: feature, sql + :tickets: 3831 + + Added new feature :meth:`.FunctionElement.as_comparison` which allows a SQL + function to act as a binary comparison operation that can work within the + ORM. + + .. seealso:: + + :ref:`change_3831` + + .. change:: + :tags: bug, orm + :tickets: 4354 + + A long-standing oversight in the ORM, the ``__delete__`` method for a many- + to-one relationship was non-functional, e.g. for an operation such as ``del + a.b``. This is now implemented and is equivalent to setting the attribute + to ``None``. + + .. seealso:: + + :ref:`change_4354` diff --git a/doc/build/changelog/unreleased_13/3423.rst b/doc/build/changelog/unreleased_13/3423.rst deleted file mode 100644 index 63317ae854..0000000000 --- a/doc/build/changelog/unreleased_13/3423.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. change:: - :tags: bug, ext - :tickets: 3423 - - Reworked :class:`.AssociationProxy` to store state that's specific to a - parent class in a separate object, so that a single - :class:`.AssocationProxy` can serve for multiple parent classes, as is - intrinsic to inheritance, without any ambiguity in the state returned by it. - A new method :meth:`.AssociationProxy.for_class` is added to allow - inspection of class-specific state. - - .. seealso:: - - :ref:`change_3423` - diff --git a/doc/build/changelog/unreleased_13/3604.rst b/doc/build/changelog/unreleased_13/3604.rst deleted file mode 100644 index 41b09f55f1..0000000000 --- a/doc/build/changelog/unreleased_13/3604.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. change:: - :tags: orm, bug - :tickets: 3604 - - Removed the collection converter used by the :class:`.MappedCollection` - class. This converter was used only to assert that the incoming dictionary - keys matched that of their corresponding objects, and only during a bulk set - operation. The converter can interfere with a custom validator or - :meth:`.AttributeEvents.bulk_replace` listener that wants to convert - incoming values further. The ``TypeError`` which would be raised by this - converter when an incoming key didn't match the value is removed; incoming - values during a bulk assignment will be keyed to their value-generated key, - and not the key that's explicitly present in the dictionary. - - Overall, @converter is superseded by the - :meth:`.AttributeEvents.bulk_replace` event handler added as part of - :ticket:`3896`. diff --git a/doc/build/changelog/unreleased_13/3831.rst b/doc/build/changelog/unreleased_13/3831.rst deleted file mode 100644 index 8df8f5c87d..0000000000 --- a/doc/build/changelog/unreleased_13/3831.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: feature, sql - :tickets: 3831 - - Added new feature :meth:`.FunctionElement.as_comparison` which allows a SQL - function to act as a binary comparison operation that can work within the - ORM. - - .. seealso:: - - :ref:`change_3831` diff --git a/doc/build/changelog/unreleased_13/3844.rst b/doc/build/changelog/unreleased_13/3844.rst deleted file mode 100644 index 8c65c47cd8..0000000000 --- a/doc/build/changelog/unreleased_13/3844.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 3844 - - Fixed issue regarding passive_deletes="all", where the foreign key - attribute of an object is maintained with its value even after the object - is removed from its parent collection. Previously, the unit of work would - set this to NULL even though passive_deletes indicated it should not be - modified. - - .. seealso:: - - :ref:`change_3844` diff --git a/doc/build/changelog/unreleased_13/3850.rst b/doc/build/changelog/unreleased_13/3850.rst deleted file mode 100644 index 138414d5cf..0000000000 --- a/doc/build/changelog/unreleased_13/3850.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: feature, sqlite - :tickets: 3850 - - Added support for SQLite's json functionality via the new - SQLite implementation for :class:`.types.JSON`, :class:`.sqlite.JSON`. - The name used for the type is ``JSON``, following an example found at - SQLite's own documentation. Pull request courtesy Ilja Everilä. - - .. seealso:: - - :ref:`change_3850` diff --git a/doc/build/changelog/unreleased_13/3981.rst b/doc/build/changelog/unreleased_13/3981.rst deleted file mode 100644 index d46f5be5b6..0000000000 --- a/doc/build/changelog/unreleased_13/3981.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 3981 - - Fixed issue with :meth:`.TypeEngine.bind_expression` and - :meth:`.TypeEngine.column_expression` methods where these methods would not - work if the target type were part of a :class:`.Variant`, or other target - type of a :class:`.TypeDecorator`. Additionally, the SQL compiler now - calls upon the dialect-level implementation when it renders these methods - so that dialects can now provide for SQL-level processing for built-in - types. - - .. seealso:: - - :ref:`change_3981` - diff --git a/doc/build/changelog/unreleased_13/3989.rst b/doc/build/changelog/unreleased_13/3989.rst deleted file mode 100644 index 02e02c926a..0000000000 --- a/doc/build/changelog/unreleased_13/3989.rst +++ /dev/null @@ -1,23 +0,0 @@ -.. change:: - :tags: feature, sql - :tickets: 3989 - - Added new naming convention tokens ``column_0N_name``, ``column_0_N_name``, - etc., which will render the names / keys / labels for all columns referenced - by a particular constraint in a sequence. In order to accommodate for the - length of such a naming convention, the SQL compiler's auto-truncation - feature now applies itself to constraint names as well, which creates a - shortened, deterministically generated name for the constraint that will - apply to a target backend without going over the character limit of that - backend. - - The change also repairs two other issues. One is that the ``column_0_key`` - token wasn't available even though this token was documented, the other was - that the ``referred_column_0_name`` token would inadvertently render the - ``.key`` and not the ``.name`` of the column if these two values were - different. - - .. seealso:: - - :ref:`change_3989` - diff --git a/doc/build/changelog/unreleased_13/4133.rst b/doc/build/changelog/unreleased_13/4133.rst deleted file mode 100644 index 74c7e70986..0000000000 --- a/doc/build/changelog/unreleased_13/4133.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, orm, declarative - :tickets: 4133 - - Fixed bug where declarative would not update the state of the - :class:`.Mapper` as far as what attributes were present, when additional - attributes were added or removed after the mapper attribute collections had - already been called and memoized. Addtionally, a ``NotImplementedError`` - is now raised if a fully mapped attribute (e.g. column, relationship, etc.) - is deleted from a class that is currently mapped, since the mapper will not - function correctly if the attribute has been removed. diff --git a/doc/build/changelog/unreleased_13/4144.rst b/doc/build/changelog/unreleased_13/4144.rst deleted file mode 100644 index 08fcb61028..0000000000 --- a/doc/build/changelog/unreleased_13/4144.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: feature, sql - :tickets: 4144 - - Added :class:`.Sequence` to the "string SQL" system that will render a - meaningful string expression (``""``) - when stringifying without a dialect a statement that includes a "sequence - nextvalue" expression, rather than raising a compilation error. - - diff --git a/doc/build/changelog/unreleased_13/4158.rst b/doc/build/changelog/unreleased_13/4158.rst deleted file mode 100644 index ed1c159763..0000000000 --- a/doc/build/changelog/unreleased_13/4158.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: feature, mssql - :tickets: 4158 - - Added ``fast_executemany=True`` parameter to the SQL Server pyodbc dialect, - which enables use of pyodbc's new performance feature of the same name - when using Microsoft ODBC drivers. - - .. seealso:: - - :ref:`change_4158` diff --git a/doc/build/changelog/unreleased_13/4196.rst b/doc/build/changelog/unreleased_13/4196.rst deleted file mode 100644 index c23002bafb..0000000000 --- a/doc/build/changelog/unreleased_13/4196.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: feature, ext - :tickets: 4196 - - Added support for bulk :meth:`.Query.update` and :meth:`.Query.delete` - to the :class:`.ShardedQuery` class within the horiziontal sharding - extension. This also adds an additional expansion hook to the - bulk update/delete methods :meth:`.Query._execute_crud`. - - .. seealso:: - - :ref:`change_4196` diff --git a/doc/build/changelog/unreleased_13/4219.rst b/doc/build/changelog/unreleased_13/4219.rst deleted file mode 100644 index ad83898bb5..0000000000 --- a/doc/build/changelog/unreleased_13/4219.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: feature, mysql - :tickets: 4219 - - Support added for the "WITH PARSER" syntax of CREATE FULLTEXT INDEX - in MySQL, using the ``mysql_with_parser`` keyword argument. Reflection - is also supported, which accommodates MySQL's special comment format - for reporting on this option as well. Additionally, the "FULLTEXT" and - "SPATIAL" index prefixes are now reflected back into the ``mysql_prefix`` - index option. - - diff --git a/doc/build/changelog/unreleased_13/4232.rst b/doc/build/changelog/unreleased_13/4232.rst deleted file mode 100644 index 176650afd3..0000000000 --- a/doc/build/changelog/unreleased_13/4232.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4232 - - An informative exception is re-raised when a primary key value is not - sortable in Python during an ORM flush under Python 3, such as an ``Enum`` - that has no ``__lt__()`` method; normally Python 3 raises a ``TypeError`` - in this case. The flush process sorts persistent objects by primary key - in Python so the values must be sortable. - diff --git a/doc/build/changelog/unreleased_13/4237.rst b/doc/build/changelog/unreleased_13/4237.rst deleted file mode 100644 index a023e59943..0000000000 --- a/doc/build/changelog/unreleased_13/4237.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: feature, postgresql - :tickets: 4237 - - Added rudimental support for reflection of Postgresql - partitioned tables, e.g. that relkind='p' is added to reflection - queries that return table information. - - .. seealso:: - - :ref:`change_4237` diff --git a/doc/build/changelog/unreleased_13/4242.rst b/doc/build/changelog/unreleased_13/4242.rst deleted file mode 100644 index b1385135aa..0000000000 --- a/doc/build/changelog/unreleased_13/4242.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. change:: - :tags: bug, oracle - :tickets: 4242 - - The Oracle dialect will no longer use the NCHAR/NCLOB datatypes - represent generic unicode strings or clob fields in conjunction with - :class:`.Unicode` and :class:`.UnicodeText` unless the flag - ``use_nchar_for_unicode=True`` is passed to :func:`.create_engine` - - this includes CREATE TABLE behavior as well as ``setinputsizes()`` for - bound parameters. On the read side, automatic Unicode conversion under - Python 2 has been added to CHAR/VARCHAR/CLOB result rows, to match the - behavior of cx_Oracle under Python 3. In order to mitigate the performance - hit under Python 2, SQLAlchemy's very performant (when C extensions - are built) native Unicode handlers are used under Python 2. - - .. seealso:: - - :ref:`change_4242` diff --git a/doc/build/changelog/unreleased_13/4246.rst b/doc/build/changelog/unreleased_13/4246.rst deleted file mode 100644 index 0b47c9e5ca..0000000000 --- a/doc/build/changelog/unreleased_13/4246.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. change:: - :tags: bug, orm, mysql, postgresql - :tickets: 4246 - - The ORM now doubles the "FOR UPDATE" clause within the subquery that - renders in conjunction with joined eager loading in some cases, as it has - been observed that MySQL does not lock the rows from a subquery. This - means the query renders with two FOR UPDATE clauses; note that on some - backends such as Oracle, FOR UPDATE clauses on subqueries are silently - ignored since they are unnecessary. Additionally, in the case of the "OF" - clause used primarily with Postgresql, the FOR UPDATE is rendered only on - the inner subquery when this is used so that the selectable can be targeted - to the table within the SELECT statement. - - .. seealso:: - - :ref:`change_4246` \ No newline at end of file diff --git a/doc/build/changelog/unreleased_13/4257.rst b/doc/build/changelog/unreleased_13/4257.rst deleted file mode 100644 index 72cac1e1b7..0000000000 --- a/doc/build/changelog/unreleased_13/4257.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: feature, orm - :tickets: 4257 - - Added ``.info`` dictionary to the :class:`.InstanceState` class, the object - that comes from calling :func:`.inspect` on a mapped object. - - .. seealso:: - - :ref:`change_4257` diff --git a/doc/build/changelog/unreleased_13/4268.rst b/doc/build/changelog/unreleased_13/4268.rst deleted file mode 100644 index 3857313575..0000000000 --- a/doc/build/changelog/unreleased_13/4268.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. change:: - :tags: bug, ext - :tickets: 4268 - - The long-standing behavior of the association proxy collection maintaining - only a weak reference to the parent object is reverted; the proxy will now - maintain a strong reference to the parent for as long as the proxy - collection itself is also in memory, eliminating the "stale association - proxy" error. This change is being made on an experimental basis to see if - any use cases arise where it causes side effects. - - .. seealso:: - - :ref:`change_4268` - diff --git a/doc/build/changelog/unreleased_13/4271.rst b/doc/build/changelog/unreleased_13/4271.rst deleted file mode 100644 index 62ed857a00..0000000000 --- a/doc/build/changelog/unreleased_13/4271.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: feature, sql - :tickets: 4271 - - Added new logic to the "expanding IN" bound parameter feature whereby if - the given list is empty, a special "empty set" expression that is specific - to different backends is generated, thus allowing IN expressions to be - fully dynamic including empty IN expressions. - - .. seealso:: - - :ref:`change_4271` - - diff --git a/doc/build/changelog/unreleased_13/4302.rst b/doc/build/changelog/unreleased_13/4302.rst deleted file mode 100644 index 0eeda694f7..0000000000 --- a/doc/build/changelog/unreleased_13/4302.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 4302 - - Added "like" based operators as "comparison" operators, including - :meth:`.ColumnOperators.startswith` :meth:`.ColumnOperators.endswith` - :meth:`.ColumnOperators.ilike` :meth:`.ColumnOperators.notilike` among many - others, so that all of these operators can be the basis for an ORM - "primaryjoin" condition. - diff --git a/doc/build/changelog/unreleased_13/4304.rst b/doc/build/changelog/unreleased_13/4304.rst deleted file mode 100644 index 128d9be64e..0000000000 --- a/doc/build/changelog/unreleased_13/4304.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4304 - - Fixed long-standing issue in :class:`.Query` where a scalar subquery such - as produced by :meth:`.Query.exists`, :meth:`.Query.as_scalar` and other - derivations from :attr:`.Query.statement` would not correctly be adapted - when used in a new :class:`.Query` that required entity adaptation, such as - when the query were turned into a union, or a from_self(), etc. The change - removes the "no adaptation" annotation from the :func:`.select` object - produced by the :attr:`.Query.statement` accessor. diff --git a/doc/build/changelog/unreleased_13/4308.rst b/doc/build/changelog/unreleased_13/4308.rst deleted file mode 100644 index 68b7653225..0000000000 --- a/doc/build/changelog/unreleased_13/4308.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: bug, ext - :tickets: 4308 - - Fixed multiple issues regarding de-association of scalar objects with the - association proxy. ``del`` now works, and additionally a new flag - :paramref:`.AssociationProxy.cascade_scalar_deletes` is added, which when - set to True indicates that setting a scalar attribute to ``None`` or - deleting via ``del`` will also set the source association to ``None``. - - .. seealso:: - - :ref:`change_4308` - diff --git a/doc/build/changelog/unreleased_13/4318.rst b/doc/build/changelog/unreleased_13/4318.rst deleted file mode 100644 index 34e3099ce9..0000000000 --- a/doc/build/changelog/unreleased_13/4318.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: feature, ext - :tickets: 4318 - - Added new feature :meth:`.BakedQuery.to_query`, which allows for a - clean way of using one :class:`.BakedQuery` as a subquery inside of another - :class:`.BakedQuery` without needing to refer explicitly to a - :class:`.Session`. - diff --git a/doc/build/changelog/unreleased_13/4340.rst b/doc/build/changelog/unreleased_13/4340.rst deleted file mode 100644 index 3e14d637f1..0000000000 --- a/doc/build/changelog/unreleased_13/4340.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: feature, orm - :tickets: 4340 - - The "selectin" loader strategy now omits the JOIN in the case of a simple - one-to-many load, where it instead relies loads only from the related - table, relying upon the foreign key columns of the related table in order - to match up to primary keys in the parent table. This optimization can be - disabled by setting the :paramref:`.relationship.omit_join` flag to False. - Many thanks to Jayson Reis for the efforts on this. - - .. seealso:: - - :ref:`change_4340` diff --git a/doc/build/changelog/unreleased_13/4351.rst b/doc/build/changelog/unreleased_13/4351.rst deleted file mode 100644 index 51f9f603e8..0000000000 --- a/doc/build/changelog/unreleased_13/4351.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. change:: - :tags: feature, ext - :tickets: 4351 - - The :class:`.AssociationProxy` now has standard column comparison operations - such as :meth:`.ColumnOperators.like` and - :meth:`.ColumnOperators.startswith` available when the target attribute is a - plain column - the EXISTS expression that joins to the target table is - rendered as usual, but the column expression is then use within the WHERE - criteria of the EXISTS. Note that this alters the behavior of the - ``.contains()`` method on the association proxy to make use of - :meth:`.ColumnOperators.contains` when used on a column-based attribute. - - .. seealso:: - - :ref:`change_4351` - diff --git a/doc/build/changelog/unreleased_13/4353.rst b/doc/build/changelog/unreleased_13/4353.rst deleted file mode 100644 index d94acf8280..0000000000 --- a/doc/build/changelog/unreleased_13/4353.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4353 - - Added new behavior to the lazy load that takes place when the "old" value of - a many-to-one is retrieved, such that exceptions which would be raised due - to either ``lazy="raise"`` or a detached session error are skipped. - - .. seealso:: - - :ref:`change_4353` diff --git a/doc/build/changelog/unreleased_13/4354.rst b/doc/build/changelog/unreleased_13/4354.rst deleted file mode 100644 index ba25a2231e..0000000000 --- a/doc/build/changelog/unreleased_13/4354.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4354 - - A long-standing oversight in the ORM, the ``__delete__`` method for a many- - to-one relationship was non-functional, e.g. for an operation such as ``del - a.b``. This is now implemented and is equivalent to setting the attribute - to ``None``. - - .. seealso:: - - :ref:`change_4354` \ No newline at end of file diff --git a/doc/build/changelog/unreleased_13/4359.rst b/doc/build/changelog/unreleased_13/4359.rst deleted file mode 100644 index 1131ed6d8e..0000000000 --- a/doc/build/changelog/unreleased_13/4359.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4359 - - Improved the behavior of a relationship-bound many-to-one object expression - such that the retrieval of column values on the related object are now - resilient against the object being detached from its parent - :class:`.Session`, even if the attribute has been expired. New features - within the :class:`.InstanceState` are used to memoize the last known value - of a particular column attribute before its expired, so that the expression - can still evaluate when the object is detached and expired at the same - time. Error conditions are also improved using modern attribute state - features to produce more specific messages as needed. - - .. seealso:: - - :ref:`change_4359` diff --git a/doc/build/changelog/unreleased_13/4360.rst b/doc/build/changelog/unreleased_13/4360.rst deleted file mode 100644 index 433a33d47f..0000000000 --- a/doc/build/changelog/unreleased_13/4360.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: feature, sqlite - :tickets: 4360 - - Implemented the SQLite ``ON CONFLICT`` clause as understood at the DDL - level, e.g. for primary key, unique, and CHECK constraints as well as - specified on a :class:`.Column` to satisfy inline primary key and NOT NULL. - Pull request courtesy Denis Kataev. - - .. seealso:: - - :ref:`change_4360` diff --git a/doc/build/changelog/unreleased_13/4362.rst b/doc/build/changelog/unreleased_13/4362.rst deleted file mode 100644 index 59b00fc11b..0000000000 --- a/doc/build/changelog/unreleased_13/4362.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: bug, mssql - :tickets: 4362 - - Deprecated the use of :class:`.Sequence` with SQL Server in order to affect - the "start" and "increment" of the IDENTITY value, in favor of new - parameters ``mssql_identity_start`` and ``mssql_identity_increment`` which - set these parameters directly. :class:`.Sequence` will be used to generate - real ``CREATE SEQUENCE`` DDL with SQL Server in a future release. - - .. seealso:: - - :ref:`change_4362` - diff --git a/doc/build/changelog/unreleased_13/4365.rst b/doc/build/changelog/unreleased_13/4365.rst deleted file mode 100644 index da34bbc94b..0000000000 --- a/doc/build/changelog/unreleased_13/4365.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4365 - - Refactored :meth:`.Query.join` to further clarify the individual components - of structuring the join. This refactor adds the ability for - :meth:`.Query.join` to determine the most appropriate "left" side of the - join when there is more than one element in the FROM list or the query is - against multiple entities. If more than one FROM/entity matches, an error - is raised that asks for an ON clause to be specified to resolve the - ambiguity. In particular this targets the regression we saw in - :ticket:`4363` but is also of general use. The codepaths within - :meth:`.Query.join` are now easier to follow and the error cases are - decided more specifically at an earlier point in the operation. - - .. seealso:: - - :ref:`change_4365` diff --git a/doc/build/changelog/unreleased_13/4369.rst b/doc/build/changelog/unreleased_13/4369.rst deleted file mode 100644 index 09e3776c62..0000000000 --- a/doc/build/changelog/unreleased_13/4369.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: bug, oracle - :tickets: 4369 - - Updated the parameters that can be sent to the cx_Oracle DBAPI to both allow - for all current parameters as well as for future parameters not added yet. - In addition, removed unused parameters that were deprecated in version 1.2, - and additionally we are now defaulting "threaded" to False. - - .. seealso:: - - :ref:`change_4369` diff --git a/doc/build/changelog/unreleased_13/dir_keys.rst b/doc/build/changelog/unreleased_13/dir_keys.rst deleted file mode 100644 index cb9a13b423..0000000000 --- a/doc/build/changelog/unreleased_13/dir_keys.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: feature, sql - - The Python builtin ``dir()`` is now supported for a SQLAlchemy "properties" - object, such as that of a Core columns collection (e.g. ``.c``), - ``mapper.attrs``, etc. Allows iPython autocompletion to work as well. - Pull request courtesy Uwe Korn. diff --git a/doc/build/changelog/unreleased_13/mysql_ping.rst b/doc/build/changelog/unreleased_13/mysql_ping.rst deleted file mode 100644 index daf1125492..0000000000 --- a/doc/build/changelog/unreleased_13/mysql_ping.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: feature, mysql - - The "pre-ping" feature of the connection pool now uses - the ``ping()`` method of the DBAPI connection in the case of - mysqlclient, PyMySQL and mysql-connector-python. Pull request - courtesy Maxim Bublis. - - .. seealso:: - - :ref:`change_mysql_ping` diff --git a/doc/build/changelog/unreleased_13/pr462.rst b/doc/build/changelog/unreleased_13/pr462.rst deleted file mode 100644 index 7d714cf996..0000000000 --- a/doc/build/changelog/unreleased_13/pr462.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: feature, mysql - - Added support for the parameters in an ON DUPLICATE KEY UPDATE statement on - MySQL to be ordered, since parameter order in a MySQL UPDATE clause is - significant, in a similar manner as that described at - :ref:`updates_order_parameters`. Pull request courtesy Maxim Bublis. - - .. seealso:: - - :ref:`change_mysql_ondupordering` diff --git a/doc/build/changelog/unreleased_13/pr467.rst b/doc/build/changelog/unreleased_13/pr467.rst deleted file mode 100644 index 7e6e9fd029..0000000000 --- a/doc/build/changelog/unreleased_13/pr467.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. change:: - :tags: feature, engine - - Added new "lifo" mode to :class:`.QueuePool`, typically enabled by setting - the flag :paramref:`.create_engine.pool_use_lifo` to True. "lifo" mode - means the same connection just checked in will be the first to be checked - out again, allowing excess connections to be cleaned up from the server - side during periods of the pool being only partially utilized. Pull request - courtesy Taem Park. - - .. seealso:: - - :ref:`change_pr467` diff --git a/doc/build/changelog/unreleased_13/preserve_order.rst b/doc/build/changelog/unreleased_13/preserve_order.rst deleted file mode 100644 index 3265da3030..0000000000 --- a/doc/build/changelog/unreleased_13/preserve_order.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: feature, orm - - Added new flag :paramref:`.Session.bulk_save_objects.preserve_order` to the - :meth:`.Session.bulk_save_objects` method, which defaults to True. When set - to False, the given mappings will be grouped into inserts and updates per - each object type, to allow for greater opportunities to batch common - operations together. Pull request courtesy Alessandro Cucci. diff --git a/doc/build/conf.py b/doc/build/conf.py index cd3db223de..e3f36ec056 100644 --- a/doc/build/conf.py +++ b/doc/build/conf.py @@ -112,7 +112,7 @@ version = "1.3" # The full version, including alpha/beta/rc tags. release = "1.3.0b1" -release_date = None +release_date = "November 16, 2018" site_base = os.environ.get("RTD_SITE_BASE", "http://www.sqlalchemy.org") site_adapter_template = "docs_adapter.mako"