]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- 1.2.0b3
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 13 Oct 2017 17:16:59 +0000 (13:16 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 13 Oct 2017 17:16:59 +0000 (13:16 -0400)
31 files changed:
doc/build/changelog/changelog_12.rst
doc/build/changelog/unreleased_12/4016.rst [deleted file]
doc/build/changelog/unreleased_12/4026.rst [deleted file]
doc/build/changelog/unreleased_12/4028.rst [deleted file]
doc/build/changelog/unreleased_12/4041.rst [deleted file]
doc/build/changelog/unreleased_12/4042.rst [deleted file]
doc/build/changelog/unreleased_12/4045.rst [deleted file]
doc/build/changelog/unreleased_12/4049.rst [deleted file]
doc/build/changelog/unreleased_12/4050.rst [deleted file]
doc/build/changelog/unreleased_12/4057.rst [deleted file]
doc/build/changelog/unreleased_12/4058.rst [deleted file]
doc/build/changelog/unreleased_12/4059.rst [deleted file]
doc/build/changelog/unreleased_12/4060.rst [deleted file]
doc/build/changelog/unreleased_12/4061.rst [deleted file]
doc/build/changelog/unreleased_12/4062.rst [deleted file]
doc/build/changelog/unreleased_12/4063.rst [deleted file]
doc/build/changelog/unreleased_12/4071.rst [deleted file]
doc/build/changelog/unreleased_12/4072.rst [deleted file]
doc/build/changelog/unreleased_12/4073.rst [deleted file]
doc/build/changelog/unreleased_12/4075.rst [deleted file]
doc/build/changelog/unreleased_12/4076.rst [deleted file]
doc/build/changelog/unreleased_12/4077.rst [deleted file]
doc/build/changelog/unreleased_12/4084.rst [deleted file]
doc/build/changelog/unreleased_12/4086.rst [deleted file]
doc/build/changelog/unreleased_12/4087.rst [deleted file]
doc/build/changelog/unreleased_12/4088.rst [deleted file]
doc/build/changelog/unreleased_12/4091.rst [deleted file]
doc/build/changelog/unreleased_12/4102.rst [deleted file]
doc/build/changelog/unreleased_12/oracle_refactor.rst [deleted file]
doc/build/changelog/unreleased_12/pymssql_sane_rowcount.rst [deleted file]
doc/build/conf.py

index 4de1ae9bb2a14c5a6c648297cfe0617dc8f2f06f..0a6bfdb2d41c54c800c95f2f00ed5cd6f7461258 100644 (file)
 
 .. changelog::
     :version: 1.2.0b3
-    :include_notes_from: unreleased_12
+    :released: October 13, 2017
+
+    .. change::
+        :tags: bug, mssql
+        :tickets: 4061
+
+        SQL Server supports what SQLAlchemy calls "native boolean"
+        with its BIT type, as this type only accepts 0 or 1 and the
+        DBAPIs return its value as True/False.   So the SQL Server
+        dialects now enable "native boolean" support, in that a
+        CHECK constraint is not generated for a :class:`.Boolean`
+        datatype.  The only difference vs. other native boolean
+        is that there are no "true" / "false" constants so "1" and
+        "0" are still rendered here.
+
+
+    .. change::
+        :tags: bug, oracle
+        :tickets: 4064
+
+        Partial support for persisting and retrieving the Oracle value
+        "infinity" is implemented with cx_Oracle, using Python float values
+        only, e.g. ``float("inf")``.  Decimal support is not yet fulfilled by
+        the cx_Oracle DBAPI driver.
+
+    .. change::
+        :tags: bug, oracle
+
+        The cx_Oracle dialect has been reworked and modernized to take advantage of
+        new patterns that weren't present in the old 4.x series of cx_Oracle. This
+        includes that the minimum cx_Oracle version is the 5.x series and that
+        cx_Oracle 6.x is now fully tested. The most significant change involves
+        type conversions, primarily regarding the numeric / floating point and LOB
+        datatypes, making more effective use of cx_Oracle type handling hooks to
+        simplify how bind parameter and result data is processed.
+
+        .. seealso::
+
+            :ref:`change_cxoracle_12`
+
+    .. change::
+        :tags: bug, oracle
+        :tickets: 3997
+
+        two phase support for cx_Oracle has been completely removed for all
+        versions of cx_Oracle, whereas in 1.2.0b1 this change only took effect for
+        the 6.x series of cx_Oracle.  This feature never worked correctly
+        in any version of cx_Oracle and in cx_Oracle 6.x, the API which SQLAlchemy
+        relied upon was removed.
+
+        .. seealso::
+
+            :ref:`change_cxoracle_12`
+
+    .. change::
+        :tags: bug, oracle
+
+        The column keys present in a result set when using :meth:`.Insert.returning`
+        with the cx_Oracle backend now use the correct column / label names
+        like that of all other dialects.  Previously, these came out as
+        ``ret_nnn``.
+
+        .. seealso::
+
+            :ref:`change_cxoracle_12`
+
+    .. change::
+        :tags: bug, oracle
+
+        Several parameters to the cx_Oracle dialect are now deprecated and will
+        have no effect: ``auto_setinputsizes``, ``exclude_setinputsizes``,
+        ``allow_twophase``.
+
+        .. seealso::
+
+            :ref:`change_cxoracle_12`
+
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 4075
+
+        Added a new method :meth:`.DefaultExecutionContext.get_current_parameters`
+        which is used within a function-based default value generator in
+        order to retrieve the current parameters being passed to the statement.
+        The new function differs from the
+        :attr:`.DefaultExecutionContext.current_parameters` attribute in
+        that it also provides for optional grouping of parameters that
+        correspond to a multi-valued "insert" construct.  Previously it was not
+        possible to identify the subset of parameters that were relevant to
+        the function call.
+
+        .. seealso::
+
+            :ref:`change_4075`
+
+            :ref:`context_default_functions`
+
+    .. change::
+        :tags: bug, orm
+        :tickets: 4050
+
+        Fixed regression introduced in 1.2.0b1 due to :ticket:`3934` where the
+        :class:`.Session` would fail to "deactivate" the transaction, if a
+        rollback failed (the target issue is when MySQL loses track of a SAVEPOINT).
+        This would cause a subsequent call to :meth:`.Session.rollback` to raise
+        an error a second time, rather than completing and bringing the
+        :class:`.Session` back to ACTIVE.
+
+    .. change::
+        :tags: bug, postgresql
+        :tickets: 4041
+
+        Fixed bug where the pg8000 driver would fail if using
+        :meth:`.MetaData.reflect` with a schema name, since the schema name would
+        be sent as a "quoted_name" object that's a string subclass, which pg8000
+        doesn't recognize.   The quoted_name type is added to pg8000's
+        py_types collection on connect.
+
+    .. change::
+        :tags: bug, postgresql
+        :tickets: 4016
+
+        Enabled UUID support for the pg8000 driver, which supports native Python
+        uuid round trips for this datatype.  Arrays of UUID are still not supported,
+        however.
+
+    .. change::
+        :tags: mssql, bug
+        :tickets: 4057
+
+        Fixed the pymssql dialect so that percent signs in SQL text, such
+        as used in modulus expressions or literal textual values, are
+        **not** doubled up, as seems to be what pymssql expects.  This is
+        despite the fact that the pymssql DBAPI uses the "pyformat" parameter
+        style which itself considers the percent sign to be significant.
+
+    .. change::
+        :tags: bug, orm, declarative
+        :tickets: 4091
+
+        A warning is emitted if a subclass attempts to override an attribute
+        that was declared on a superclass using ``@declared_attr.cascading``
+        that the overridden attribute will be ignored. This use
+        case cannot be fully supported down to further subclasses without more
+        complex development efforts, so for consistency the "cascading" is
+        honored all the way down regardless of overriding attributes.
+
+    .. change::
+        :tags: bug, orm, declarative
+        :tickets: 4092
+
+        A warning is emitted if the ``@declared_attr.cascading`` attribute is
+        used with a special declarative name such as ``__tablename__``, as this
+        has no effect.
+
+    .. change::
+        :tags: feature, engine
+        :tickets: 4077
+
+        Added ``__next__()`` and ``next()`` methods to :class:`.ResultProxy`,
+        so that the ``next()`` builtin function works on the object directly.
+        :class:`.ResultProxy` has long had an ``__iter__()`` method which already
+        allows it to respond to the ``iter()`` builtin.   The implementation
+        for ``__iter__()`` is unchanged, as performance testing has indicated
+        that iteration using a ``__next__()`` method with ``StopIteration``
+        is about 20% slower in both Python 2.7 and 3.6.
+
+    .. change::
+        :tags: feature, mssql
+        :tickets: 4086
+
+        Added a new :class:`.mssql.TIMESTAMP` datatype, that
+        correctly acts like a binary datatype for SQL Server
+        rather than a datetime type, as SQL Server breaks the
+        SQL standard here.  Also added :class:`.mssql.ROWVERSION`,
+        as the "TIMESTAMP" type in SQL Server is deprecated in
+        favor of ROWVERSION.
+
+    .. change::
+        :tags: bug, orm
+        :tickets: 4084
+
+        Fixed issue where the :func:`.make_transient_to_detached` function
+        would expire all attributes on the target object, including "deferred"
+        attributes, which has the effect of the attribute being undeferred
+        for the next refesh, causing an unexpected load of the attribute.
+
+    .. change::
+        :tags: bug, orm
+        :tickets: 4026
+
+        Fixed bug in :ref:`change_3948` which prevented "selectin" and
+        "inline" settings in a multi-level class hierarchy from interacting
+        together as expected.    A new example is added to the documentation.
+
+        .. seealso::
+
+            :ref:`polymorphic_selectin_and_withpoly`
+
+    .. change::
+        :tags: bug, oracle
+        :tickets: 4042
+
+        Fixed bug where an index reflected under Oracle with an expression like
+        "column DESC" would not be returned, if the table also had no primary
+        key, as a result of logic that attempts to filter out the
+        index implicitly added by Oracle onto the primary key columns.
+
+    .. change::
+       :tags: bug, orm
+       :tickets: 4071
+
+       Removed the warnings that are emitted when the LRU caches employed
+       by the mapper as well as loader srtategies reach their threshold; the
+       purpose of this warning was at first a guard against excess cache keys
+       being generated but became basically a check on the "creating many
+       engines" antipattern.   While this is still an antipattern, the presense
+       of test suites which both create an engine per test as well as raise
+       on all warnings will be an inconvenience; it should not be critical
+       that such test suites change their architecture just for this warning
+       (though engine-per-test suite is always better).
+
+    .. change::
+        :tags: bug, orm
+        :tickets: 4049
+
+        Fixed regression where the use of a :func:`.undefer_group` option
+        in conjunction with a lazy loaded relationship option would cause
+        an attribute error, due to a bug in the SQL cache key generation
+        added in 1.2 as part of :ticket:`3954`.
+
+    .. change::
+        :tags: bug, oracle
+        :tickets: 4045
+
+        Fixed more regressions caused by cx_Oracle 6.0; at the moment, the only
+        behavioral change for users is disconnect detection now detects for
+        cx_Oracle.DatabaseError in addition to cx_Oracle.InterfaceError, as
+        this behavior seems to have changed.   Other issues regarding numeric
+        precision and uncloseable connections are pending with the upstream
+        cx_Oracle issue tracker.
+
+    .. change::
+        :tags: bug, mssql
+        :tickets: 4060
+
+        Fixed bug where the SQL Server dialect could pull columns from multiple
+        schemas when reflecting a self-referential foreign key constraint, if
+        multiple schemas contained a constraint of the same name against a
+        table of the same name.
+
+
+    .. change::
+        :tags: feature, mssql
+        :tickets: 4058
+
+        Added support for "AUTOCOMMIT" isolation level, as established
+        via :meth:`.Connection.execution_options`, to the
+        PyODBC and pymssql dialects.   This isolation level sets the
+        appropriate DBAPI-specific flags on the underlying
+        connection object.
+
+    .. change::
+        :tags: bug, orm
+        :tickets: 4073
+
+        Modified the change made to the ORM update/delete evaluator in
+        :ticket:`3366` such that if an unmapped column expression is present
+        in the update or delete, if the evaluator can match its name to the
+        mapped columns of the target class, a warning is emitted, rather than
+        raising UnevaluatableError.  This is essentially the pre-1.2 behavior,
+        and is to allow migration for applications that are currently relying
+        upon this pattern.  However, if the given attribute name cannot be
+        matched to the columns of the mapper, the UnevaluatableError is
+        still raised, which is what was fixed in :ticket:`3366`.
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 4087
+
+        Fixed bug in new SQL comments feature where table and column comment
+        would not be copied when using :meth:`.Table.tometadata`.
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 4102
+
+        In release 1.1, the :class:`.Boolean` type was broken in that
+        boolean coercion via ``bool()`` would occur for backends that did not
+        feature "native boolean", but would not occur for native boolean backends,
+        meaning the string ``"0"`` now behaved inconsistently. After a poll, a
+        consensus was reached that non-boolean values should be raising an error,
+        especially in the ambiguous case of string ``"0"``; so the :class:`.Boolean`
+        datatype will now raise ``ValueError`` if an incoming value is not
+        within the range ``None, True, False, 1, 0``.
+
+        .. seealso::
+
+            :ref:`change_4102`
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 4063
+
+        Refined the behavior of :meth:`.Operators.op` such that in all cases,
+        if the :paramref:`.Operators.op.is_comparison` flag is set to True,
+        the return type of the resulting expression will be
+        :class:`.Boolean`, and if the flag is False, the return type of the
+        resulting expression will be the same type as that of the left-hand
+        expression, which is the typical default behavior of other operators.
+        Also added a new parameter :paramref:`.Operators.op.return_type` as well
+        as a helper method :meth:`.Operators.bool_op`.
+
+        .. seealso::
+
+            :ref:`change_4063`
+
+    .. change::
+        :tags: bug, mysql
+        :tickets: 4072
+
+        Changed the name of the ``.values`` attribute of the new MySQL
+        INSERT..ON DUPLICATE KEY UPDATE construct to ``.inserted``, as
+        :class:`.Insert` already has a method called :meth:`.Insert.values`.
+        The ``.inserted`` attribute ultimately renders the MySQL ``VALUES()``
+        function.
+
+    .. change::
+        :tags: bug, mssql, orm
+        :tickets: 4062
+
+        Added a new class of "rowcount support" for dialects that is specific to
+        when "RETURNING", which on SQL Server looks like "OUTPUT inserted", is in
+        use, as the PyODBC backend isn't able to give us rowcount on an UPDATE or
+        DELETE statement when OUTPUT is in effect.  This primarily affects the ORM
+        when a flush is updating a row that contains server-calcluated values,
+        raising an error if the backend does not return the expected row count.
+        PyODBC now states that it supports rowcount except if OUTPUT.inserted is
+        present, which is taken into account by the ORM during a flush as to
+        whether it will look for a rowcount.
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 4088
+
+        Internal refinements to the :class:`.Enum`, :class:`.Interval`, and
+        :class:`.Boolean` types, which now extend a common mixin
+        :class:`.Emulated` that indicates a type that provides Python-side
+        emulation of a DB native type, switching out to the DB native type when a
+        supporting backend is in use.   The Postgresql :class:`.INTERVAL` type
+        when used directly will now include the correct type coercion rules for
+        SQL expressions that also take effect for :class:`.sqltypes.Interval`
+        (such as adding a date to an interval yields a datetime).
+
+
+    .. change::
+        :tags: bug, mssql, orm
+
+        Enabled the "sane_rowcount" flag for the pymssql dialect, indicating
+        that the DBAPI now reports the correct number of rows affected from
+        an UPDATE or DELETE statement.  This impacts mostly the ORM versioning
+        feature in that it now can verify the number of rows affected on a
+        target version.
+
+    .. change:: 4028
+        :tags: bug, engine
+        :tickets: 4028
+
+        Made some adjustments to :class:`.Pool` and :class:`.Connection` such
+        that recovery logic is not run underneath exception catches for
+        ``pool.Empty``, ``AttributeError``, since when the recovery operation
+        itself fails, Python 3 creates a misleading stack trace referring to the
+        ``Empty`` / ``AttributeError`` as the cause, when in fact these exception
+        catches are part of control flow.
+
+
+    .. change::
+        :tags: bug, oracle
+        :tickets: 4076
+
+        Fixed bug where Oracle 8 "non ansi" join mode would not add the
+        ``(+)`` operator to expressions that used an operator other than the
+        ``=`` operator.  The ``(+)`` needs to be on all columns that are part
+        of the right-hand side.
+
+    .. change::
+        :tags: bug, mssql
+        :tickets: 4059
+
+        Added a rule to SQL Server index reflection to ignore the so-called
+        "heap" index that is implicitly present on a table that does not
+        specify a clustered index.
+
 
 .. changelog::
     :version: 1.2.0b2
diff --git a/doc/build/changelog/unreleased_12/4016.rst b/doc/build/changelog/unreleased_12/4016.rst
deleted file mode 100644 (file)
index bb6ae8d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-.. change::
-    :tags: bug, postgresql
-    :tickets: 4016
-
-    Enabled UUID support for the pg8000 driver, which supports native Python
-    uuid round trips for this datatype.  Arrays of UUID are still not supported,
-    however.
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/4026.rst b/doc/build/changelog/unreleased_12/4026.rst
deleted file mode 100644 (file)
index 20cdc4d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-.. change::
-    :tags: bug, orm
-    :tickets: 4026
-
-    Fixed bug in :ref:`change_3948` which prevented "selectin" and
-    "inline" settings in a multi-level class hierarchy from interacting
-    together as expected.    A new example is added to the documentation.
-
-    .. seealso::
-
-        :ref:`polymorphic_selectin_and_withpoly`
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/4028.rst b/doc/build/changelog/unreleased_12/4028.rst
deleted file mode 100644 (file)
index c6b3665..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-.. change:: 4028
-    :tags: bug, engine
-    :tickets: 4028
-
-    Made some adjustments to :class:`.Pool` and :class:`.Connection` such
-    that recovery logic is not run underneath exception catches for
-    ``pool.Empty``, ``AttributeError``, since when the recovery operation
-    itself fails, Python 3 creates a misleading stack trace referring to the
-    ``Empty`` / ``AttributeError`` as the cause, when in fact these exception
-    catches are part of control flow.
-
diff --git a/doc/build/changelog/unreleased_12/4041.rst b/doc/build/changelog/unreleased_12/4041.rst
deleted file mode 100644 (file)
index ebcb723..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-.. change::
-    :tags: bug, postgresql
-    :tickets: 4041
-
-    Fixed bug where the pg8000 driver would fail if using
-    :meth:`.MetaData.reflect` with a schema name, since the schema name would
-    be sent as a "quoted_name" object that's a string subclass, which pg8000
-    doesn't recognize.   The quoted_name type is added to pg8000's
-    py_types collection on connect.
diff --git a/doc/build/changelog/unreleased_12/4042.rst b/doc/build/changelog/unreleased_12/4042.rst
deleted file mode 100644 (file)
index 8ce04a9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-.. change::
-    :tags: bug, oracle
-    :tickets: 4042
-
-    Fixed bug where an index reflected under Oracle with an expression like
-    "column DESC" would not be returned, if the table also had no primary
-    key, as a result of logic that attempts to filter out the
-    index implicitly added by Oracle onto the primary key columns.
diff --git a/doc/build/changelog/unreleased_12/4045.rst b/doc/build/changelog/unreleased_12/4045.rst
deleted file mode 100644 (file)
index 31527f0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-.. change::
-    :tags: bug, oracle
-    :tickets: 4045
-
-    Fixed more regressions caused by cx_Oracle 6.0; at the moment, the only
-    behavioral change for users is disconnect detection now detects for
-    cx_Oracle.DatabaseError in addition to cx_Oracle.InterfaceError, as
-    this behavior seems to have changed.   Other issues regarding numeric
-    precision and uncloseable connections are pending with the upstream
-    cx_Oracle issue tracker.
diff --git a/doc/build/changelog/unreleased_12/4049.rst b/doc/build/changelog/unreleased_12/4049.rst
deleted file mode 100644 (file)
index 010d1a2..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-.. change::
-    :tags: bug, orm
-    :tickets: 4049
-
-    Fixed regression where the use of a :func:`.undefer_group` option
-    in conjunction with a lazy loaded relationship option would cause
-    an attribute error, due to a bug in the SQL cache key generation
-    added in 1.2 as part of :ticket:`3954`.
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/4050.rst b/doc/build/changelog/unreleased_12/4050.rst
deleted file mode 100644 (file)
index 762e5f8..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-.. change::
-    :tags: bug, orm
-    :tickets: 4050
-
-    Fixed regression introduced in 1.2.0b1 due to :ticket:`3934` where the
-    :class:`.Session` would fail to "deactivate" the transaction, if a
-    rollback failed (the target issue is when MySQL loses track of a SAVEPOINT).
-    This would cause a subsequent call to :meth:`.Session.rollback` to raise
-    an error a second time, rather than completing and bringing the
-    :class:`.Session` back to ACTIVE.
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/4057.rst b/doc/build/changelog/unreleased_12/4057.rst
deleted file mode 100644 (file)
index e641485..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-.. change::
-    :tags: mssql, bug
-    :tickets: 4057
-
-    Fixed the pymssql dialect so that percent signs in SQL text, such
-    as used in modulus expressions or literal textual values, are
-    **not** doubled up, as seems to be what pymssql expects.  This is
-    despite the fact that the pymssql DBAPI uses the "pyformat" parameter
-    style which itself considers the percent sign to be significant.
diff --git a/doc/build/changelog/unreleased_12/4058.rst b/doc/build/changelog/unreleased_12/4058.rst
deleted file mode 100644 (file)
index e459e41..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-.. change::
-    :tags: feature, mssql
-    :tickets: 4058
-
-    Added support for "AUTOCOMMIT" isolation level, as established
-    via :meth:`.Connection.execution_options`, to the
-    PyODBC and pymssql dialects.   This isolation level sets the
-    appropriate DBAPI-specific flags on the underlying
-    connection object.
diff --git a/doc/build/changelog/unreleased_12/4059.rst b/doc/build/changelog/unreleased_12/4059.rst
deleted file mode 100644 (file)
index bedbdd1..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-.. change::
-    :tags: bug, mssql
-    :tickets: 4059
-
-    Added a rule to SQL Server index reflection to ignore the so-called
-    "heap" index that is implicitly present on a table that does not
-    specify a clustered index.
-
diff --git a/doc/build/changelog/unreleased_12/4060.rst b/doc/build/changelog/unreleased_12/4060.rst
deleted file mode 100644 (file)
index f834430..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-.. change::
-    :tags: bug, mssql
-    :tickets: 4060
-
-    Fixed bug where the SQL Server dialect could pull columns from multiple
-    schemas when reflecting a self-referential foreign key constraint, if
-    multiple schemas contained a constraint of the same name against a
-    table of the same name.
-
diff --git a/doc/build/changelog/unreleased_12/4061.rst b/doc/build/changelog/unreleased_12/4061.rst
deleted file mode 100644 (file)
index 63d6b9e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. change::
-    :tags: bug, mssql
-    :tickets: 4061
-
-    SQL Server supports what SQLAlchemy calls "native boolean"
-    with its BIT type, as this type only accepts 0 or 1 and the
-    DBAPIs return its value as True/False.   So the SQL Server
-    dialects now enable "native boolean" support, in that a
-    CHECK constraint is not generated for a :class:`.Boolean`
-    datatype.  The only difference vs. other native boolean
-    is that there are no "true" / "false" constants so "1" and
-    "0" are still rendered here.
-
diff --git a/doc/build/changelog/unreleased_12/4062.rst b/doc/build/changelog/unreleased_12/4062.rst
deleted file mode 100644 (file)
index 3a89a1a..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. change::
-    :tags: bug, mssql, orm
-    :tickets: 4062
-
-    Added a new class of "rowcount support" for dialects that is specific to
-    when "RETURNING", which on SQL Server looks like "OUTPUT inserted", is in
-    use, as the PyODBC backend isn't able to give us rowcount on an UPDATE or
-    DELETE statement when OUTPUT is in effect.  This primarily affects the ORM
-    when a flush is updating a row that contains server-calcluated values,
-    raising an error if the backend does not return the expected row count.
-    PyODBC now states that it supports rowcount except if OUTPUT.inserted is
-    present, which is taken into account by the ORM during a flush as to
-    whether it will look for a rowcount.
diff --git a/doc/build/changelog/unreleased_12/4063.rst b/doc/build/changelog/unreleased_12/4063.rst
deleted file mode 100644 (file)
index 2d79961..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-.. change::
-    :tags: bug, sql
-    :tickets: 4063
-
-    Refined the behavior of :meth:`.Operators.op` such that in all cases,
-    if the :paramref:`.Operators.op.is_comparison` flag is set to True,
-    the return type of the resulting expression will be
-    :class:`.Boolean`, and if the flag is False, the return type of the
-    resulting expression will be the same type as that of the left-hand
-    expression, which is the typical default behavior of other operators.
-    Also added a new parameter :paramref:`.Operators.op.return_type` as well
-    as a helper method :meth:`.Operators.bool_op`.
-
-    .. seealso::
-
-        :ref:`change_4063`
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/4071.rst b/doc/build/changelog/unreleased_12/4071.rst
deleted file mode 100644 (file)
index ff6fc1b..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. change::
-       :tags: bug, orm
-       :tickets: 4071
-
-       Removed the warnings that are emitted when the LRU caches employed
-       by the mapper as well as loader srtategies reach their threshold; the
-       purpose of this warning was at first a guard against excess cache keys
-       being generated but became basically a check on the "creating many
-       engines" antipattern.   While this is still an antipattern, the presense
-       of test suites which both create an engine per test as well as raise
-       on all warnings will be an inconvenience; it should not be critical
-       that such test suites change their architecture just for this warning
-       (though engine-per-test suite is always better).
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/4072.rst b/doc/build/changelog/unreleased_12/4072.rst
deleted file mode 100644 (file)
index 3e5e83f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-.. change::
-    :tags: bug, mysql
-    :tickets: 4072
-
-    Changed the name of the ``.values`` attribute of the new MySQL
-    INSERT..ON DUPLICATE KEY UPDATE construct to ``.inserted``, as
-    :class:`.Insert` already has a method called :meth:`.Insert.values`.
-    The ``.inserted`` attribute ultimately renders the MySQL ``VALUES()``
-    function.
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/4073.rst b/doc/build/changelog/unreleased_12/4073.rst
deleted file mode 100644 (file)
index 8a083df..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. change::
-    :tags: bug, orm
-    :tickets: 4073
-
-    Modified the change made to the ORM update/delete evaluator in
-    :ticket:`3366` such that if an unmapped column expression is present
-    in the update or delete, if the evaluator can match its name to the
-    mapped columns of the target class, a warning is emitted, rather than
-    raising UnevaluatableError.  This is essentially the pre-1.2 behavior,
-    and is to allow migration for applications that are currently relying
-    upon this pattern.  However, if the given attribute name cannot be
-    matched to the columns of the mapper, the UnevaluatableError is
-    still raised, which is what was fixed in :ticket:`3366`.
diff --git a/doc/build/changelog/unreleased_12/4075.rst b/doc/build/changelog/unreleased_12/4075.rst
deleted file mode 100644 (file)
index deacc07..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-.. change::
-    :tags: bug, sql
-    :tickets: 4075
-
-    Added a new method :meth:`.DefaultExecutionContext.get_current_parameters`
-    which is used within a function-based default value generator in
-    order to retrieve the current parameters being passed to the statement.
-    The new function differs from the
-    :attr:`.DefaultExecutionContext.current_parameters` attribute in
-    that it also provides for optional grouping of parameters that
-    correspond to a multi-valued "insert" construct.  Previously it was not
-    possible to identify the subset of parameters that were relevant to
-    the function call.
-
-    .. seealso::
-
-        :ref:`change_4075`
-
-        :ref:`context_default_functions`
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/4076.rst b/doc/build/changelog/unreleased_12/4076.rst
deleted file mode 100644 (file)
index 78cd6bc..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-.. change::
-    :tags: bug, oracle
-    :tickets: 4076
-
-    Fixed bug where Oracle 8 "non ansi" join mode would not add the
-    ``(+)`` operator to expressions that used an operator other than the
-    ``=`` operator.  The ``(+)`` needs to be on all columns that are part
-    of the right-hand side.
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/4077.rst b/doc/build/changelog/unreleased_12/4077.rst
deleted file mode 100644 (file)
index b051d47..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-.. change::
-    :tags: feature, engine
-    :tickets: 4077
-
-    Added ``__next__()`` and ``next()`` methods to :class:`.ResultProxy`,
-    so that the ``next()`` builtin function works on the object directly.
-    :class:`.ResultProxy` has long had an ``__iter__()`` method which already
-    allows it to respond to the ``iter()`` builtin.   The implementation
-    for ``__iter__()`` is unchanged, as performance testing has indicated
-    that iteration using a ``__next__()`` method with ``StopIteration``
-    is about 20% slower in both Python 2.7 and 3.6.
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/4084.rst b/doc/build/changelog/unreleased_12/4084.rst
deleted file mode 100644 (file)
index b7b924e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-.. change::
-    :tags: bug, orm
-    :tickets: 4084
-
-    Fixed issue where the :func:`.make_transient_to_detached` function
-    would expire all attributes on the target object, including "deferred"
-    attributes, which has the effect of the attribute being undeferred
-    for the next refesh, causing an unexpected load of the attribute.
diff --git a/doc/build/changelog/unreleased_12/4086.rst b/doc/build/changelog/unreleased_12/4086.rst
deleted file mode 100644 (file)
index ee1e66f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-.. change::
-    :tags: feature, mssql
-    :tickets: 4086
-
-    Added a new :class:`.mssql.TIMESTAMP` datatype, that
-    correctly acts like a binary datatype for SQL Server
-    rather than a datetime type, as SQL Server breaks the
-    SQL standard here.  Also added :class:`.mssql.ROWVERSION`,
-    as the "TIMESTAMP" type in SQL Server is deprecated in
-    favor of ROWVERSION.
diff --git a/doc/build/changelog/unreleased_12/4087.rst b/doc/build/changelog/unreleased_12/4087.rst
deleted file mode 100644 (file)
index 2ebc057..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-.. change::
-    :tags: bug, sql
-    :tickets: 4087
-
-    Fixed bug in new SQL comments feature where table and column comment
-    would not be copied when using :meth:`.Table.tometadata`.
diff --git a/doc/build/changelog/unreleased_12/4088.rst b/doc/build/changelog/unreleased_12/4088.rst
deleted file mode 100644 (file)
index 6159db1..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. change::
-    :tags: bug, sql
-    :tickets: 4088
-
-    Internal refinements to the :class:`.Enum`, :class:`.Interval`, and
-    :class:`.Boolean` types, which now extend a common mixin
-    :class:`.Emulated` that indicates a type that provides Python-side
-    emulation of a DB native type, switching out to the DB native type when a
-    supporting backend is in use.   The Postgresql :class:`.INTERVAL` type
-    when used directly will now include the correct type coercion rules for
-    SQL expressions that also take effect for :class:`.sqltypes.Interval`
-    (such as adding a date to an interval yields a datetime).
-
diff --git a/doc/build/changelog/unreleased_12/4091.rst b/doc/build/changelog/unreleased_12/4091.rst
deleted file mode 100644 (file)
index 056843c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-.. change::
-    :tags: bug, orm, declarative
-    :tickets: 4091
-
-    A warning is emitted if a subclass attempts to override an attribute
-    that was declared on a superclass using ``@declared_attr.cascading``
-    that the overridden attribute will be ignored. This use
-    case cannot be fully supported down to further subclasses without more
-    complex development efforts, so for consistency the "cascading" is
-    honored all the way down regardless of overriding attributes.
-
-.. change::
-    :tags: bug, orm, declarative
-    :tickets: 4092
-
-    A warning is emitted if the ``@declared_attr.cascading`` attribute is
-    used with a special declarative name such as ``__tablename__``, as this
-    has no effect.
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/4102.rst b/doc/build/changelog/unreleased_12/4102.rst
deleted file mode 100644 (file)
index 1220a23..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-.. change::
-    :tags: bug, sql
-    :tickets: 4102
-
-    In release 1.1, the :class:`.Boolean` type was broken in that
-    boolean coercion via ``bool()`` would occur for backends that did not
-    feature "native boolean", but would not occur for native boolean backends,
-    meaning the string ``"0"`` now behaved inconsistently. After a poll, a
-    consensus was reached that non-boolean values should be raising an error,
-    especially in the ambiguous case of string ``"0"``; so the :class:`.Boolean`
-    datatype will now raise ``ValueError`` if an incoming value is not
-    within the range ``None, True, False, 1, 0``.
-
-    .. seealso::
-
-        :ref:`change_4102`
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_12/oracle_refactor.rst b/doc/build/changelog/unreleased_12/oracle_refactor.rst
deleted file mode 100644 (file)
index 2a30645..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-.. change::
-    :tags: bug, oracle
-    :tickets: 4064
-
-    Partial support for persisting and retrieving the Oracle value
-    "infinity" is implemented with cx_Oracle, using Python float values
-    only, e.g. ``float("inf")``.  Decimal support is not yet fulfilled by
-    the cx_Oracle DBAPI driver.
-
-.. change::
-    :tags: bug, oracle
-
-    The cx_Oracle dialect has been reworked and modernized to take advantage of
-    new patterns that weren't present in the old 4.x series of cx_Oracle. This
-    includes that the minimum cx_Oracle version is the 5.x series and that
-    cx_Oracle 6.x is now fully tested. The most significant change involves
-    type conversions, primarily regarding the numeric / floating point and LOB
-    datatypes, making more effective use of cx_Oracle type handling hooks to
-    simplify how bind parameter and result data is processed.
-
-    .. seealso::
-
-        :ref:`change_cxoracle_12`
-
-.. change::
-    :tags: bug, oracle
-    :tickets: 3997
-
-    two phase support for cx_Oracle has been completely removed for all
-    versions of cx_Oracle, whereas in 1.2.0b1 this change only took effect for
-    the 6.x series of cx_Oracle.  This feature never worked correctly
-    in any version of cx_Oracle and in cx_Oracle 6.x, the API which SQLAlchemy
-    relied upon was removed.
-
-    .. seealso::
-
-        :ref:`change_cxoracle_12`
-
-.. change::
-    :tags: bug, oracle
-
-    The column keys present in a result set when using :meth:`.Insert.returning`
-    with the cx_Oracle backend now use the correct column / label names
-    like that of all other dialects.  Previously, these came out as
-    ``ret_nnn``.
-
-    .. seealso::
-
-        :ref:`change_cxoracle_12`
-
-.. change::
-    :tags: bug, oracle
-
-    Several parameters to the cx_Oracle dialect are now deprecated and will
-    have no effect: ``auto_setinputsizes``, ``exclude_setinputsizes``,
-    ``allow_twophase``.
-
-    .. seealso::
-
-        :ref:`change_cxoracle_12`
-
diff --git a/doc/build/changelog/unreleased_12/pymssql_sane_rowcount.rst b/doc/build/changelog/unreleased_12/pymssql_sane_rowcount.rst
deleted file mode 100644 (file)
index 9b4df2d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-.. change::
-    :tags: bug, mssql, orm
-
-    Enabled the "sane_rowcount" flag for the pymssql dialect, indicating
-    that the DBAPI now reports the correct number of rows affected from
-    an UPDATE or DELETE statement.  This impacts mostly the ORM versioning
-    feature in that it now can verify the number of rows affected on a
-    target version.
\ No newline at end of file
index 5a1d66aef80ef633a97d4289c88c1493c307b4e2..782d8f6b73964da2b3cfb908d75f72bd31eab18e 100644 (file)
@@ -110,9 +110,9 @@ copyright = u'2007-2017, the SQLAlchemy authors and contributors'
 # The short X.Y version.
 version = "1.2"
 # The full version, including alpha/beta/rc tags.
-release = "1.2.0b2"
+release = "1.2.0b3"
 
-release_date = "July 24, 2017"
+release_date = "October 13, 2017"
 
 site_base = os.environ.get("RTD_SITE_BASE", "http://www.sqlalchemy.org")
 site_adapter_template = "docs_adapter.mako"