summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2017-10-13 13:16:59 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2017-10-13 13:16:59 -0400
commit9cf6ac32d605f6c0bfb485ddcfe503a8c1a7769d (patch)
treed5c12554864a6d3c1cd2c3398f626285bacac847
parent2942ecb230334b681631d0bcc7f6d596d740640d (diff)
downloadsqlalchemy-9cf6ac32d605f6c0bfb485ddcfe503a8c1a7769d.tar.gz
- 1.2.0b3
-rw-r--r--doc/build/changelog/changelog_12.rst395
-rw-r--r--doc/build/changelog/unreleased_12/4016.rst7
-rw-r--r--doc/build/changelog/unreleased_12/4026.rst11
-rw-r--r--doc/build/changelog/unreleased_12/4028.rst11
-rw-r--r--doc/build/changelog/unreleased_12/4041.rst9
-rw-r--r--doc/build/changelog/unreleased_12/4042.rst8
-rw-r--r--doc/build/changelog/unreleased_12/4045.rst10
-rw-r--r--doc/build/changelog/unreleased_12/4049.rst8
-rw-r--r--doc/build/changelog/unreleased_12/4050.rst10
-rw-r--r--doc/build/changelog/unreleased_12/4057.rst9
-rw-r--r--doc/build/changelog/unreleased_12/4058.rst9
-rw-r--r--doc/build/changelog/unreleased_12/4059.rst8
-rw-r--r--doc/build/changelog/unreleased_12/4060.rst9
-rw-r--r--doc/build/changelog/unreleased_12/4061.rst13
-rw-r--r--doc/build/changelog/unreleased_12/4062.rst13
-rw-r--r--doc/build/changelog/unreleased_12/4063.rst16
-rw-r--r--doc/build/changelog/unreleased_12/4071.rst13
-rw-r--r--doc/build/changelog/unreleased_12/4072.rst9
-rw-r--r--doc/build/changelog/unreleased_12/4073.rst13
-rw-r--r--doc/build/changelog/unreleased_12/4075.rst19
-rw-r--r--doc/build/changelog/unreleased_12/4076.rst8
-rw-r--r--doc/build/changelog/unreleased_12/4077.rst11
-rw-r--r--doc/build/changelog/unreleased_12/4084.rst8
-rw-r--r--doc/build/changelog/unreleased_12/4086.rst10
-rw-r--r--doc/build/changelog/unreleased_12/4087.rst6
-rw-r--r--doc/build/changelog/unreleased_12/4088.rst13
-rw-r--r--doc/build/changelog/unreleased_12/4091.rst18
-rw-r--r--doc/build/changelog/unreleased_12/4102.rst16
-rw-r--r--doc/build/changelog/unreleased_12/oracle_refactor.rst61
-rw-r--r--doc/build/changelog/unreleased_12/pymssql_sane_rowcount.rst8
-rw-r--r--doc/build/conf.py4
31 files changed, 396 insertions, 367 deletions
diff --git a/doc/build/changelog/changelog_12.rst b/doc/build/changelog/changelog_12.rst
index 4de1ae9bb..0a6bfdb2d 100644
--- a/doc/build/changelog/changelog_12.rst
+++ b/doc/build/changelog/changelog_12.rst
@@ -12,7 +12,400 @@
.. 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
index bb6ae8d6b..000000000
--- a/doc/build/changelog/unreleased_12/4016.rst
+++ /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
index 20cdc4df6..000000000
--- a/doc/build/changelog/unreleased_12/4026.rst
+++ /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
index c6b366569..000000000
--- a/doc/build/changelog/unreleased_12/4028.rst
+++ /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
index ebcb7236c..000000000
--- a/doc/build/changelog/unreleased_12/4041.rst
+++ /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
index 8ce04a9a7..000000000
--- a/doc/build/changelog/unreleased_12/4042.rst
+++ /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
index 31527f062..000000000
--- a/doc/build/changelog/unreleased_12/4045.rst
+++ /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
index 010d1a2c0..000000000
--- a/doc/build/changelog/unreleased_12/4049.rst
+++ /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
index 762e5f83d..000000000
--- a/doc/build/changelog/unreleased_12/4050.rst
+++ /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
index e64148518..000000000
--- a/doc/build/changelog/unreleased_12/4057.rst
+++ /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
index e459e41d9..000000000
--- a/doc/build/changelog/unreleased_12/4058.rst
+++ /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
index bedbdd17d..000000000
--- a/doc/build/changelog/unreleased_12/4059.rst
+++ /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
index f83443005..000000000
--- a/doc/build/changelog/unreleased_12/4060.rst
+++ /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
index 63d6b9eb7..000000000
--- a/doc/build/changelog/unreleased_12/4061.rst
+++ /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
index 3a89a1ad6..000000000
--- a/doc/build/changelog/unreleased_12/4062.rst
+++ /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
index 2d79961ee..000000000
--- a/doc/build/changelog/unreleased_12/4063.rst
+++ /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
index ff6fc1bb0..000000000
--- a/doc/build/changelog/unreleased_12/4071.rst
+++ /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
index 3e5e83f24..000000000
--- a/doc/build/changelog/unreleased_12/4072.rst
+++ /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
index 8a083df9c..000000000
--- a/doc/build/changelog/unreleased_12/4073.rst
+++ /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
index deacc077b..000000000
--- a/doc/build/changelog/unreleased_12/4075.rst
+++ /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
index 78cd6bcee..000000000
--- a/doc/build/changelog/unreleased_12/4076.rst
+++ /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
index b051d47ba..000000000
--- a/doc/build/changelog/unreleased_12/4077.rst
+++ /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
index b7b924e00..000000000
--- a/doc/build/changelog/unreleased_12/4084.rst
+++ /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
index ee1e66f63..000000000
--- a/doc/build/changelog/unreleased_12/4086.rst
+++ /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
index 2ebc0576e..000000000
--- a/doc/build/changelog/unreleased_12/4087.rst
+++ /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
index 6159db171..000000000
--- a/doc/build/changelog/unreleased_12/4088.rst
+++ /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
index 056843cfb..000000000
--- a/doc/build/changelog/unreleased_12/4091.rst
+++ /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
index 1220a23cf..000000000
--- a/doc/build/changelog/unreleased_12/4102.rst
+++ /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
index 2a30645fe..000000000
--- a/doc/build/changelog/unreleased_12/oracle_refactor.rst
+++ /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
index 9b4df2d85..000000000
--- a/doc/build/changelog/unreleased_12/pymssql_sane_rowcount.rst
+++ /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
diff --git a/doc/build/conf.py b/doc/build/conf.py
index 5a1d66aef..782d8f6b7 100644
--- a/doc/build/conf.py
+++ b/doc/build/conf.py
@@ -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"