]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/log
thirdparty/sqlalchemy/sqlalchemy.git
6 years agoAdd reserved word 'function' for MySQL
Alex Hall [Tue, 30 Oct 2018 17:00:49 +0000 (13:00 -0400)] 
Add reserved word 'function' for MySQL

Added word ``function`` to the list of reserved words for MySQL, which is
now a keyword in MySQL 8.0

Fixes: #4348
Change-Id: Idd30acda7e99076810f65d0ee860055a18dc9193
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/481
(cherry picked from commit 38c81328e91884f71af175a115dfdb423d8f4910)

6 years agoAdd missing space
wodim [Thu, 25 Oct 2018 12:11:23 +0000 (14:11 +0200)] 
Add missing space

6 years agore-word recycle parameter documentation
David Poggi [Tue, 23 Oct 2018 14:17:09 +0000 (10:17 -0400)] 
re-word recycle parameter documentation

Change-Id: I80cabcd9fa3f3b45e5355bf6c774a8eee02e7f1b
(cherry picked from commit 83864ffe634bb1e3e9e530fbe51c03a186799110)

6 years agoAdd warning to hybrid property expression and fixup crosslinks
James Owen [Thu, 4 Oct 2018 15:12:41 +0000 (17:12 +0200)] 
Add warning to hybrid property expression and fixup crosslinks

(cherry picked from commit 681bd7eb8876c8b83912b8307b2fc7500a11e6f0)

6 years agoUse the same "current_timestamp" function for both sides of round trip
Mike Bayer [Sun, 21 Oct 2018 02:20:06 +0000 (22:20 -0400)] 
Use the same "current_timestamp" function for both sides of round trip

this test was using sysdate() and current_timestamp() together
in conjunction with a truncation to DAY, however for four hours
on saturday night (see commit time :) ) these two values will
have a different value if one side is EDT and the other is UTC.

tox does not transmit environment variables including TZ by
default, so even if the server is set up for EDT, running tox
will not set TZ and at least Oracle client seems to use this
value, producing UTC for session time but the database on CI
was configured for EDT, producing EDT for sysdate.

Change-Id: I56602d2402a475a0c4fdf61c1c5fc2618c82f915
(cherry picked from commit ac358a04a7b077602ac668c19c3c40389d9e77e4)

6 years agoCheck more specifically for hybrid attr and not mapped property
Mike Bayer [Fri, 19 Oct 2018 21:10:42 +0000 (17:10 -0400)] 
Check more specifically for hybrid attr and not mapped property

Fixed regression caused by :ticket:`4326` in version 1.2.12 where using
:class:`.declared_attr` with a mixin in conjunction with
:func:`.orm.synonym` would fail to map the synonym properly to an inherited
subclass.

Fixes: #4350
Change-Id: Ib2a9b6a125a2ac7c7ff80201746b7f10e5596226
(cherry picked from commit 9335c24d6c98033f4aa1ceafd23a70b88c8ae811)

6 years agoAdd prop.secondary to FROM for dynamic loader
Mike Bayer [Wed, 17 Oct 2018 14:42:50 +0000 (10:42 -0400)] 
Add prop.secondary to FROM for dynamic loader

Fixed bug where "dynamic" loader needs to explicitly set the "secondary"
table in the FROM clause of the query, to suit the case where the secondary
is a join object that is otherwise not pulled into the query from its
columns alone.

Fixes: #4349
Change-Id: I397f62abd5603efa4fb273586d0f772bf8c8fbbf
(cherry picked from commit d080aae128b081e6870dae325cb90202329784b4)

6 years agoblock py.test 3.9.1
Mike Bayer [Wed, 17 Oct 2018 15:49:47 +0000 (11:49 -0400)] 
block py.test 3.9.1

references:

https://github.com/pytest-dev/pytest/issues/4181

Change-Id: I216fde19dd0f5c4910d76c08400f2329b09ad584
(cherry picked from commit b4d42a84e22652c16b914a2f76421718be913027)

6 years agoDon't use "is" to compare exceptions
Mike Bayer [Mon, 15 Oct 2018 05:44:13 +0000 (01:44 -0400)] 
Don't use "is" to compare exceptions

psycopg2 is introducing a fine grained exception model where
most exceptions will be specialized subclasses, so don't use
"is" to compare an expression type

Change-Id: I2eac7503e38136f0dcc0da6f77b0b1d83ea1c6dc
(cherry picked from commit c5e888a3ddb5019cdbc537f9706de537aa7b92e0)

6 years agoDon't call rollback on DBAPI connection that's "closed"
Mike Bayer [Sun, 14 Oct 2018 19:55:46 +0000 (15:55 -0400)] 
Don't call rollback on DBAPI connection that's "closed"

Use the existence of ConnectionRecord.connection to estimate
that this connection is likely closed, and if so, don't
try to call "rollback" on it.  This rollback is normally harmless
but is causing segfaults in mysqlclient due to
https://github.com/PyMySQL/mysqlclient-python/issues/270.

Change-Id: I1d7c5f5a520527d8268b6334795c2051f7ceeea6
(cherry picked from commit a8781b51b4039eee56791b9dbfdee183f7a5b797)

6 years ago- get the "now" date for this test in terms of the database to accommodate
Mike Bayer [Sat, 13 Oct 2018 03:02:12 +0000 (23:02 -0400)] 
- get the "now" date for this test in terms of the database to accommodate
for local timezone doesn't match that of the DB

Change-Id: I0899d9294e8a2bd8f7f2c3e66cf396e2e8bd4bcc
(cherry picked from commit 7405392299492c83e6fa1546d3b36f52042e3c5e)

6 years agoPerform additional retrieval of correct column names
Mike Bayer [Tue, 2 Oct 2018 21:49:44 +0000 (17:49 -0400)] 
Perform additional retrieval of correct column names

Added a workaround for a MySQL bug #88718 introduced in the 8.0 series,
where the reflection of a foreign key constraint is not reporting the
correct case sensitivity for the referred column, leading to errors during
use of the reflected constraint such as when using the automap extension.
The workaround emits an additional query to the information_schema tables in
order to retrieve the correct case sensitive name.

Fixes: #4344
Change-Id: I08020d6eec43cbe8a56316660380d3739a0b45f7
(cherry picked from commit 56fb68ca8620a211ca29b3d47d649dfa332d354a)

6 years agoAdd additional documentation for ORM fetched defaults
Mike Bayer [Tue, 2 Oct 2018 17:54:00 +0000 (13:54 -0400)] 
Add additional documentation for ORM fetched defaults

Add additional examples to the section first added as part
of #4317 to cover the use cases requested in #3921.

Fixes: #3921
Change-Id: I6ec283aa0a6fbabedef40bb4320751ab4cd990ea
(cherry picked from commit ffd27cef48241e39725c4e9cd13fd744a2806bdd)

6 years agoFix dependency_for final argument
Joe Urciuoli [Wed, 19 Sep 2018 17:40:23 +0000 (13:40 -0400)] 
Fix dependency_for final argument

Fixed issue where part of the utility language helper internals was passing
the wrong kind of argument to the Python ``__import__`` builtin as the list
of modules to be imported.  The issue produced no symptoms within the core
library but could cause issues with external applications that redefine the
``__import__`` builtin or otherwise instrument it. Pull request courtesy Joe
Urciuoli.

Per the submitter: "The fourth argument provided to `__import__`  (which
`import_` feeds in to) is supposed to be a a list of strings, but this code is
passing a single string. This was causing the sqlalchemy `import_` function to
break the string (for example 'interfaces') into an array of single characters
['i', 'n', ...], which causes the actual `__import__` to not find the module
`sqlalchemy.orm.i` (since it's trying to import `sqlalchemy.orm.i` and
`sqlalchemy.orm.n` .. etc)"

No issue could be reproduced locally as it seems you can put anything non-
empty/None into that last argument, even a list like ``['X']``, and  all the
sub-modules seem to appear.  Omit it, and then the sub-modules aren't present.
Perhaps it just runs the module or not if this attribute is present.

Change-Id: Ia15c74620f24d24f0df4882f9b36a04e2c3725b8
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/473
(cherry picked from commit cacc3c2057ab14faaf6c5b679bb2dbb6f8b98f8e)

6 years agoAdd test and retroactive changelog for issue 4040
Mike Bayer [Mon, 1 Oct 2018 18:00:39 +0000 (14:00 -0400)] 
Add test and retroactive changelog for issue 4040

Fixes: #4040
Change-Id: I707c1cd2708a37102ad8184bec21be35cb6242d7
(cherry picked from commit 313879d6adedd4fd2a07a4ec30530766f3016885)

6 years agoAdd link to Code of Conduct
Mike Bayer [Sat, 29 Sep 2018 23:12:40 +0000 (19:12 -0400)] 
Add link to Code of Conduct

Change-Id: Ib07db7c2fc97739a172e541a0681176a67f89a2f
(cherry picked from commit 29d54ab69b689c2bc4b9be8273f4c0a96e37153f)

6 years agoRemove unnecessary unicode and raw string prefix
Denis Kataev [Fri, 28 Sep 2018 07:40:30 +0000 (12:40 +0500)] 
Remove unnecessary unicode and raw string prefix

(cherry picked from commit fc5dbc30168710ef20c467a54610979cd06a58c7)

6 years agoMerge "Import from collections.abc" into rel_1_2
mike bayer [Fri, 28 Sep 2018 01:55:12 +0000 (21:55 -0400)] 
Merge "Import from collections.abc" into rel_1_2

6 years agoAdd non-primary mapper example illustrating a row-limited relationship
Mike Bayer [Fri, 28 Sep 2018 01:27:59 +0000 (21:27 -0400)] 
Add non-primary mapper example illustrating a row-limited relationship

Change-Id: Ifcb3baa6b220e375dc029794dd10c111660eac94
(cherry picked from commit 888d122dcf5881ad1bca07df2ba444e293538d99)

6 years agoImport from collections.abc
xtreak [Mon, 24 Sep 2018 16:23:54 +0000 (12:23 -0400)] 
Import from collections.abc

Fixed additional warnings generated by Python 3.7 due to changes in the
organization of the Python ``collections`` and ``collections.abc`` packages.
Previous ``collections`` warnings were fixed in version 1.2.11. Pull request
courtesy xtreak.

See I2d1c0ef97c8ecac7af152cc56263422a40faa6bb for the original collections.abc
fixes.

Fixes: #4339
Change-Id: Ia92d2461f20309fb33ea6c6f592f7d4e7e32ae7a
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/475
(cherry picked from commit 2d2fa49130249f757f6f1100dad879e1071ad385)

6 years agoMerge "Copy create_constraint flag for Enum" into rel_1_2
mike bayer [Wed, 26 Sep 2018 00:16:41 +0000 (20:16 -0400)] 
Merge "Copy create_constraint flag for Enum" into rel_1_2

6 years agoAccept multiple expressions for aggregate_order_by order_by
Mike Bayer [Tue, 25 Sep 2018 15:11:41 +0000 (11:11 -0400)] 
Accept multiple expressions for aggregate_order_by order_by

Added support for the :class:`.aggregate_order_by` function to receive
multiple ORDER BY elements, previously only a single element was accepted.

Fixes: #4337
Change-Id: I411ac31697a0d65b568ad65ce5b5181717afbd65
(cherry picked from commit b7ba3f0d9395236cbf05f830d82f6494163d1dfb)

6 years agoCopy create_constraint flag for Enum
Mike Bayer [Tue, 25 Sep 2018 14:38:40 +0000 (10:38 -0400)] 
Copy create_constraint flag for Enum

Fixed bug where the :paramref:`.Enum.create_constraint` flag on  the
:class:`.Enum` datatype would not be propagated to copies of the type, which
affects use cases such as declarative mixins and abstract bases.

Fixes: #4341
Change-Id: I978be65f33a616fe4d5f5de03fb3eaab6f6a2272
(cherry picked from commit 0737f45d4ff8fdb2e12972cc58c18345e4d6dde2)

6 years agoAllow dialects to customize group by clause compilation
Samuel Chou [Wed, 19 Sep 2018 17:30:24 +0000 (13:30 -0400)] 
Allow dialects to customize group by clause compilation

Refactored :class:`.SQLCompiler` to expose a
:meth:`.SQLCompiler.group_by_clause` method similar to the
:meth:`.SQLCompiler.order_by_clause` and :meth:`.SQLCompiler.limit_clause`
methods, which can be overridden by dialects to customize how GROUP BY
renders.  Pull request courtesy Samuel Chou.

Change-Id: I0a7238e55032558c27a0c56a72907c7b883456f1
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/474
(cherry picked from commit 33fccc486111fc6b41eab651cc7325c83099ad45)

6 years agoVersion 1.2.13 placeholder
Mike Bayer [Wed, 19 Sep 2018 18:15:18 +0000 (14:15 -0400)] 
Version 1.2.13 placeholder

6 years ago- 1.2.12 rel_1_2_12
Mike Bayer [Wed, 19 Sep 2018 18:00:00 +0000 (14:00 -0400)] 
- 1.2.12

6 years agoMerge "Adapt right side in join if lateral detected" into rel_1_2
mike bayer [Wed, 19 Sep 2018 13:30:44 +0000 (09:30 -0400)] 
Merge "Adapt right side in join if lateral detected" into rel_1_2

6 years agoAdapt right side in join if lateral detected
Mike Bayer [Mon, 17 Sep 2018 15:38:52 +0000 (11:38 -0400)] 
Adapt right side in join if lateral detected

Fixed bug where use of :class:`.Lateral` construct in conjunction with
:meth:`.Query.join` as well as :meth:`.Query.select_entity_from` would not
apply clause adaption to the right side of the join.   "lateral" introduces
the use case of the right side of a join being correlatable.  Previously,
adaptation of this clause wasn't considered.

Fixes: #4334
Change-Id: I3631e562092769d30069a2aa5e50a580f4661a23
(cherry picked from commit 43f2c66ea7413cc0aaf6ca040ad33fb65ca4412d)

6 years agoLook for dict builtin in InstanceState cleanup
Romuald Brunet [Mon, 17 Sep 2018 15:44:50 +0000 (11:44 -0400)] 
Look for dict builtin in InstanceState cleanup

Added a check within the weakref cleanup for the :class:`.InstanceState`
object to check for the presence of the ``dict`` builtin, in an effort to
reduce error messages generated when these cleanups occur during interpreter
shutdown.  Pull request courtesy Romuald Brunet.

Change-Id: If27b94d50a32767de8b4147c09fa423f71596004
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/472
(cherry picked from commit 505941259e4e7181a176e74b3de0b7d96c444e29)

6 years agoUse cx_Oracle dml_ret_array_val
Mike Bayer [Mon, 17 Sep 2018 18:05:46 +0000 (14:05 -0400)] 
Use cx_Oracle dml_ret_array_val

Fixed issue for cx_Oracle 7.0 where the behavior of Oracle param.getvalue()
now returns a list, rather than a single scalar value, breaking
autoincrement logic throughout the Core and ORM. The dml_ret_array_val
compatibility flag is used for cx_Oracle 6.3 and 6.4 to establish compatible
behavior with 7.0 and forward, for cx_Oracle 6.2.1 and prior a version
number check falls back to the old logic.

Fixes: #4335
Change-Id: Ia60f5514803a505898c1ac9252355990c6203dda
(cherry picked from commit 67a2cd92295bef55d914a5c560b4cead5d456837)

6 years agoFix doc type
Wouter Overmeire [Tue, 11 Sep 2018 12:17:02 +0000 (14:17 +0200)] 
Fix doc type

(cherry picked from commit 82006fcc937eaea99c767f35fcb642bc35da0a15)

6 years agoDon't list 1.2.x bugfixes as 1.3.0b1 bugfixes
Mike Bayer [Thu, 13 Sep 2018 23:43:12 +0000 (17:43 -0600)] 
Don't list 1.2.x bugfixes as 1.3.0b1 bugfixes

We will still list features in 1.3 as backported but
it is too verbose to have all of 1.2.x's bugfixes listed as part
of 1.3.0b1 also.

Change-Id: Icb09050734af86a66a72b3f92a6bd60ee3e2f6ee
(cherry picked from commit 5abaaaf7ebde4643130afd709c381c6a04a4ba04)

6 years agoAdd explicit note about @hybrid_property mutators re: method name
Mike Bayer [Wed, 12 Sep 2018 15:44:57 +0000 (09:44 -0600)] 
Add explicit note about @hybrid_property mutators re: method name

Fixes: #4332
Change-Id: I7c52140d3a3055a71b192fea020c795a57356d90
(cherry picked from commit 92bccc796beaa47a537a2399fd67791045f810d2)

6 years agominor spelling correction
Glyph [Thu, 6 Sep 2018 22:58:12 +0000 (15:58 -0700)] 
minor spelling correction

(cherry picked from commit 35a458c7822a8071a61da84fce021fb42cd9b086)

6 years agoClarify init_scalar event use case
Mike Bayer [Thu, 6 Sep 2018 14:44:09 +0000 (10:44 -0400)] 
Clarify init_scalar event use case

Since I didn't even realize what this was for when reading the docs,
make it clearer that this is to mirror a Column default and remove
the extra verbiage about the mechanics of INSERTs.

Change-Id: Id2c6a29800f7b723573610e4707aec7e6ea38f5f
(cherry picked from commit 71b01adc7b31baab7bbcf40123633b87ee53bf64)

6 years agoMariaDB 10.3 updates
Mike Bayer [Thu, 30 Aug 2018 21:12:58 +0000 (17:12 -0400)] 
MariaDB 10.3 updates

MariaDB seems to handle some additional UPDATE/DELETE FROM
syntaxes as well as some forms of INTERSECT and EXCEPT. Open
up tests that expect failure for MySQL to allow success for
MariaDB 10.3.

Change-Id: Ia9341a82485ef7201bb8130d8dbf4a9b6976035a
(cherry picked from commit 081d4275cf5c3e6842c8e0198542ff89617eaa96)

6 years agoFix links and update verbiage for reset_on_return
Mike Bayer [Tue, 28 Aug 2018 18:58:05 +0000 (14:58 -0400)] 
Fix links and update verbiage for reset_on_return

Change-Id: I642056b78570b44fdefe7f0874a8e4c720389f14
(cherry picked from commit d8bb208a85f6366c58426a85b3d4ec1d6e43ac6c)

6 years agodocument expanding bound parameters, in_(), and baked query use cases
Mike Bayer [Mon, 27 Aug 2018 18:53:36 +0000 (14:53 -0400)] 
document expanding bound parameters, in_(), and baked query use cases

cherry-picked from 90a772b19339b97517bc46f016122341528e440a with modifications

Change-Id: I09ccd73ebabbea4b5098ba5b170786ac065444c8

6 years ago- pep8 cleanup
Mike Bayer [Mon, 27 Aug 2018 15:11:04 +0000 (11:11 -0400)] 
- pep8 cleanup

Change-Id: I1d6eaf91c069bd5dd55a40ddd38e2f440b259fea
(cherry picked from commit d3dee71c24eabf60e67ecbc6b42d31a38d493105)

6 years agoUpdate expanding docs
Mike Bayer [Mon, 27 Aug 2018 14:19:26 +0000 (10:19 -0400)] 
Update expanding docs

- no longer experimental
- will support empty param sets in 1.3

Change-Id: I06c69cc44dfb2b5449ace8c14dc0e12f2af25c64

6 years agoInclude Session._query_cls as part of the cache key
Mike Bayer [Sun, 26 Aug 2018 16:35:59 +0000 (12:35 -0400)] 
Include Session._query_cls as part of the cache key

Fixed issue where :class:`.BakedQuery` did not include the specific query
class used by the :class:`.Session` as part of the cache key, leading to
incompatibilities when using custom query classes, in particular the
:class:`.ShardedQuery` which has some different argument signatures.

Fixes: #4328
Change-Id: I829c2a8b09c91e91c8dc8ea5476c0d7aa47028bd
(cherry picked from commit c09b07fbb36ac288d32221349b019b490efc9ff3)

6 years agoMerge "Unwrap Proxy objects when scanning declared_attr" into rel_1_2
mike bayer [Thu, 23 Aug 2018 21:58:14 +0000 (17:58 -0400)] 
Merge "Unwrap Proxy objects when scanning declared_attr" into rel_1_2

6 years agoUnwrap Proxy objects when scanning declared_attr
Mike Bayer [Thu, 23 Aug 2018 16:40:26 +0000 (12:40 -0400)] 
Unwrap Proxy objects when scanning declared_attr

Fixed bug where the declarative scan for attributes would receive the
expression proxy delivered by a hybrid attribute at the class level, and
not the hybrid attribute itself, when receiving the descriptor via the
``@declared_attr`` callable on a subclass of an already-mapped class. This
would lead to an attribute that did not report itself as a hybrid when
viewed within :attr:`.Mapper.all_orm_descriptors`.

Fixes: #4326
Change-Id: I582d03f05c3768b3344f93e3791240e9e69b9d1e
(cherry picked from commit 626356842d77d4ec6427b3bfc04bdff93d24d246)

6 years agoDon't run postfetch_post_update for a DELETE
Mike Bayer [Thu, 23 Aug 2018 15:55:13 +0000 (11:55 -0400)] 
Don't run postfetch_post_update for a DELETE

Fixed 1.2 regression caused by :ticket:`3472` where the handling of an
"updated_at" style column within the context of a post-update operation
would also occur for a row that is to be deleted following the update,
meaning both that a column with a Python-side value generator would show
the now-deleted value that was emitted for the UPDATE before the DELETE
(which was not the previous behavor), as well as that a SQL- emitted value
generator would have the attribute expired, meaning the previous value
would be unreachable due to the row having been deleted and the object
detached from the session.The "postfetch" logic that was added as part of
:ticket:`3472` is now skipped entirely for an object that ultimately is to
be deleted.

Fixes: #4327
Change-Id: Ieac845348979df296bcf7e785c0353bdc6074220
(cherry picked from commit 1b5393db36a6c4353d41c7065b29a377d7c3b9b2)

6 years agoPropagate **kw in postgresql distinct on compilation
Mike Bayer [Wed, 22 Aug 2018 21:18:48 +0000 (17:18 -0400)] 
Propagate **kw in postgresql distinct on compilation

Fixed bug in PostgreSQL dialect where compiler keyword arguments such as
``literal_binds=True`` were not being propagated to a DISTINCT ON
expression.

Fixes: #4325
Change-Id: I9949387dceb7fabe889799f42e92423572368b29
(cherry picked from commit 469931514a1517dde82ba56f780c3007c66d5943)

6 years agoPass desired array type from pg.array_agg to functions.array_agg
Mike Bayer [Wed, 22 Aug 2018 15:13:54 +0000 (11:13 -0400)] 
Pass desired array type from pg.array_agg to functions.array_agg

Fixed the :func:`.postgresql.array_agg` function, which is a slightly
altered version of the usual :func:`.functions.array_agg` function, to also
accept an incoming "type" argument without forcing an ARRAY around it,
essentially the same thing that was fixed for the generic function in 1.1
in :ticket:`4107`.

Fixes: #4324
Change-Id: I399a29f59c945a217cdd22c65ff0325edea8ea65
(cherry picked from commit 52a3f5b7635583ae6feb084b1db654b9c65caec2)

6 years agoStrip quotes from format_type in addition to other characters
Mike Bayer [Wed, 22 Aug 2018 00:59:04 +0000 (20:59 -0400)] 
Strip quotes from format_type in addition to other characters

Fixed bug in PostgreSQL ENUM reflection where a case-sensitive, quoted name
would be reported by the query including quotes, which would not match a
target column during table reflection as the quotes needed to be stripped
off.

Fixes: #4323
Change-Id: I668f3acccc578e58f23b70c82d31d5c1ec194913
(cherry picked from commit 32ce703a98eba8a7685e609b4a7ca86b79dd0904)

6 years agoVersion 1.2.12 placeholder
Mike Bayer [Mon, 20 Aug 2018 21:00:53 +0000 (17:00 -0400)] 
Version 1.2.12 placeholder

6 years ago- 1.2.11 rel_1_2_11
Mike Bayer [Mon, 20 Aug 2018 20:54:50 +0000 (16:54 -0400)] 
- 1.2.11

6 years agoAdd missing range_ / rows parameters to additional over() methods
Mike Bayer [Mon, 20 Aug 2018 02:19:59 +0000 (22:19 -0400)] 
Add missing range_ / rows parameters to additional over() methods

Added missing window function parameters
:paramref:`.WithinGroup.over.range_` and :paramref:`.WithinGroup.over.rows`
parameters to the :meth:`.WithinGroup.over` and
:meth:`.FunctionFilter.over` methods, to correspond to the range/rows
feature added to the "over" method of SQL functions as part of
:ticket:`3049` in version 1.1.

Fixes: #4322
Change-Id: I77dcdac65c699a4b52a3fc3ee09a100ffb4fc20e
(cherry picked from commit 3e2f61c439dab76133a49b7a16b03bf4071d4c4c)

6 years agoDocument binary_prefix for mysqlclient and PyMySQL
Mike Bayer [Fri, 17 Aug 2018 23:25:20 +0000 (19:25 -0400)] 
Document binary_prefix for mysqlclient and PyMySQL

Also, remove the section on "use_unicode=0", there is no reason
anyone should be using that now.

Fixes: #4216
Change-Id: I5b8b53e40903adf339af2934a4f2d8b068818ebf
(cherry picked from commit c3869f23836bd35d5ed565a4b84b4ab70293c0f7)

6 years agoAccommodate for classically mapped base classes in declarative
Mike Bayer [Fri, 17 Aug 2018 15:37:30 +0000 (11:37 -0400)] 
Accommodate for classically mapped base classes in declarative

Fixed issue in previously untested use case, allowing a declarative mapped
class to inherit from a classically-mapped class outside of the declarative
base, including that it accommodates for unmapped intermediate classes. An
unmapped intermediate class may specify ``__abstract__``, which is now
interpreted correctly, or the intermediate class can remain unmarked, and
the classically mapped base class will be detected within the hierarchy
regardless. In order to anticipate existing scenarios which may be mixing
in classical mappings into existing declarative hierarchies, an error is
now raised if multiple mapped bases are detected for a given class.

Fixes: #4321
Change-Id: I8604ecfd170d2589d9d1b1c87ba303762071fc30
(cherry picked from commit 4c931b2ec7e0f09ac8c3ebe28c794f5858d54efb)

6 years agoAdd concept of "implicit boolean", treat as native
Mike Bayer [Wed, 15 Aug 2018 21:11:14 +0000 (17:11 -0400)] 
Add concept of "implicit boolean", treat as native

Fixed issue that is closely related to :ticket:`3639` where an expression
rendered in a boolean context on a non-native boolean backend would
be compared to 1/0 even though it is already an implcitly boolean
expression, when :meth:`.ColumnElement.self_group` were used.  While this
does not affect the user-friendly backends (MySQL, SQLite) it was not
handled by Oracle (and possibly SQL Server).   Whether or not the
expression is implicitly boolean on any database is now determined
up front as an additional check to not generate the integer comparison
within the compliation of the statement.

Fixes: #4320
Change-Id: Iae0a65e5c01bd576e64733c3651e1e1a1a1b240c
(cherry picked from commit 462ccd9ff18d2e428b20ec3f596391a275472140)

6 years agoCorrect for the INSERT statement, typos
Mike Bayer [Thu, 9 Aug 2018 18:35:52 +0000 (14:35 -0400)] 
Correct for the INSERT statement, typos

Change-Id: I036f3eb9b5e591515920678bc9a76f707fda142c
(cherry picked from commit c85378d9841177b067a93c564edb1787703c6595)

6 years agoWrite a much better section about server defaults
Mike Bayer [Thu, 9 Aug 2018 17:34:03 +0000 (13:34 -0400)] 
Write a much better section about server defaults

Include information about eager_defaults etc.  These
docs were written before we had all the features
we do now.

Change-Id: Ie62e58c5986698824f717e9f8c802b07a27517d4
Fixes: #4317
(cherry picked from commit 82dfcf43de1d1647306ee2840b79be4f9df7588a)

7 years agoInclude UPDATE/DELETE extra_froms in correlation
Mike Bayer [Sat, 4 Aug 2018 17:45:07 +0000 (13:45 -0400)] 
Include UPDATE/DELETE extra_froms in correlation

Fixed bug where the multi-table support for UPDATE and DELETE statements
did not consider the additional FROM elements as targets for correlation,
when a correlated SELECT were also combined with the statement.  This
change now includes that a SELECT statement in the WHERE clause for such a
statement will try to auto-correlate back to these additional tables in the
parent UPDATE/DELETE or unconditionally correlate if
:meth:`.Select.correlate` is used.  Note that auto-correlation raises an
error if the SELECT statement would have no FROM clauses as a result, which
can now occur if the parent UPDATE/DELETE specifies the same tables in its
additional set of tables ; specify :meth:`.Select.correlate` explicitly to
resolve.

Change-Id: Ie11eaad7e49af3f59df11691b104d6359341bdae
Fixes: #4313
(cherry picked from commit abeea1d82db34232bbef01e98fa4d1de0f583eb6)

7 years agoBind Integers to int for cx_Oracle
Mike Bayer [Wed, 1 Aug 2018 18:12:49 +0000 (14:12 -0400)] 
Bind Integers to int for cx_Oracle

For cx_Oracle, Integer datatypes will now be bound to "int", per advice
from the cx_Oracle developers.  Previously, using cx_Oracle.NUMBER caused a
loss in precision within the cx_Oracle 6.x series.

Change-Id: I4c6b2cca490aff5b98b7ceff3414715202881c89
Fixes: #4309
(cherry picked from commit 75d48e65eaac9e97283bb14fdec54a143d9997f1)

7 years agoFix collections ABC access before Python 3.8
Nathaniel Knight [Wed, 1 Aug 2018 01:59:47 +0000 (21:59 -0400)] 
Fix collections ABC access before Python 3.8

Started importing "collections" from "collections.abc" under Python 3.3 and
greater for Python 3.8 compatibility.  Pull request courtesy Nathaniel
Knight.

In Python 3.3, the abstract base classes (Iterable, Mapping, etc.)
were moved from the `collections` module and put in the
`collections.abc` module. They remain in the `collections` module for
backwards compatibility, and will until Python 3.8.

This commit adds a variable (`collections_abc`) to the `util/compat`
module, which will be the `collections` module for Python < 3.3 and
before, or the `collections.abc` module for Python >= 3.3. It also
uses the new variable, getting rid of some deprecation warnings that
were seen when running under Python 3.7.

Change-Id: I2d1c0ef97c8ecac7af152cc56263422a40faa6bb
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/464
(cherry picked from commit a59c3b8f302a34ab037ec445b7452b1f353b91af)

7 years agoCorrect sharding tests for provisioned follower
Mike Bayer [Wed, 1 Aug 2018 16:27:22 +0000 (12:27 -0400)] 
Correct sharding tests for provisioned follower

The sharding tests created named sqlite databases that were
shared across test suites.  It is unknown why these suddenly
started failing and were not failing before.

Change-Id: If2044f914ddaea0db594aa18b9278e24e2c818ea
(cherry picked from commit 1c32206120b1a6555f8bb7a20a0c4c53ea2f52a8)

7 years agoDo some pep8 and other cruft removal around association proxy
Mike Bayer [Wed, 1 Aug 2018 16:13:33 +0000 (12:13 -0400)] 
Do some pep8 and other cruft removal around association proxy

Change-Id: I33130022a7e223318b65388620828d539f6dacfd
(cherry picked from commit 65469442ad30b97d5901347e0a5a64f3179f765d)

7 years agoAdd comma in migration-12
Neil Basu [Tue, 31 Jul 2018 21:27:18 +0000 (14:27 -0700)] 
Add comma in migration-12

(cherry picked from commit 09f21f1e21a2247eba3d9e9aaaa3c336ba98b9ea)

7 years agoReplace 'with' with 'which'
Kevin Horn [Fri, 27 Jul 2018 16:06:50 +0000 (11:06 -0500)] 
Replace 'with' with 'which'

(cherry picked from commit 8601e86f1179d93d5d072c8774bfae41caa8cf56)

7 years agoFix quoting schemas in _get_table_sql for the SQLite backend
Phillip Cloud [Mon, 16 Jul 2018 14:10:55 +0000 (10:10 -0400)] 
Fix quoting schemas in _get_table_sql for the SQLite backend

Fixed issue where the "schema" name used for a SQLite database within table
reflection would not quote the schema name correctly.  Pull request
courtesy Phillip Cloud.

Change-Id: I2770788c1f094a7743209250ec26b5ef5fb2d9e8
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/463
(cherry picked from commit 893eac06e511f3765c0c89bab76d7933d83ffccc)

7 years agoAdd `postgresql_psycopg2binary` install extra that installs `psycopg2-binary`
Alex Rothberg [Wed, 18 Jul 2018 14:40:52 +0000 (10:40 -0400)] 
Add `postgresql_psycopg2binary` install extra that installs `psycopg2-binary`

Fixes: #4306
Change-Id: I26edc1a4ac8a7f9f3f258bb03009ebfa4cc00e1a
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/465
(cherry picked from commit 5469dd1b8f19960a319464327bcd2425f31543bf)

7 years agoVersion 1.2.11 placeholder
Mike Bayer [Fri, 13 Jul 2018 23:03:48 +0000 (19:03 -0400)] 
Version 1.2.11 placeholder

7 years ago- 1.2.10 rel_1_2_10
Mike Bayer [Fri, 13 Jul 2018 22:59:06 +0000 (18:59 -0400)] 
- 1.2.10

7 years agoUse exprs for bundle __clause_element__
Mike Bayer [Fri, 13 Jul 2018 16:58:21 +0000 (12:58 -0400)] 
Use exprs for bundle __clause_element__

Fixed bug in :class:`.Bundle` construct where placing two columns of the
same name would be de-duplicated, when the :class:`.Bundle` were used as
part of the rendered SQL, such as in the ORDER BY or GROUP BY of the statement.

Change-Id: Ia528c9fbb399a6beb5ea7cdd3a8a83ad530f5831
Fixes: #4295
(cherry picked from commit 2fdf26020878edcbaa7792a869b3d45b715cc05a)

7 years agoCorrect the bug number for :ticket:`4288`, which was erroneously
Mike Bayer [Fri, 13 Jul 2018 16:44:50 +0000 (12:44 -0400)] 
Correct the bug number for :ticket:`4288`, which was erroneously
given as :ticket:`4228`.

Change-Id: I6525560c1bcf3f3d861d6254723f5facdba6adae
Fixes: #4288
(cherry picked from commit 2c44fc22a7e9a4ac69ed6ce9da5551eb2d7cc1a2)

7 years ago- fix typo
Mike Bayer [Fri, 13 Jul 2018 16:41:04 +0000 (12:41 -0400)] 
- fix typo

Change-Id: I78692e821e34afe654c1131cd3465e4a6dfe773f
(cherry picked from commit 16cca68de872901d6b3c279a8d62d698e0068969)

7 years agoDrop default-related structures after the Table is dropped.
Mike Bayer [Tue, 10 Jul 2018 13:41:21 +0000 (09:41 -0400)] 
Drop default-related structures after the Table is dropped.

Fixed bug where a :class:`.Sequence` would be dropped explicitly before any
:class:`.Table` that refers to it, which breaks in the case when the
sequence is also involved in a server-side default for that table, when
using :meth:`.MetaData.drop_all`.   The step which processes sequences
to be dropped via non server-side column default functions is now invoked
after the table itself is dropped.

Change-Id: I185f2cc76d2011ad4dd3ba9bde5d8aef0ec335ae
Fixes: #4300
(cherry picked from commit 532566ba1f28ff8a6afa6eacc10c59eb918501f6)

7 years agoDocument sticky behavior of loader options
Mike Bayer [Tue, 10 Jul 2018 17:30:05 +0000 (13:30 -0400)] 
Document sticky behavior of loader options

References #4301

Change-Id: If921e3b8369e2cd5312b5964a99bcf7731b3ecfc
(cherry picked from commit 3cc832992d6820a3cbc88d1b8aca958af8175a49)

7 years ago- add docs for PG REGCLASS
Mike Bayer [Mon, 9 Jul 2018 21:44:31 +0000 (17:44 -0400)] 
- add docs for PG REGCLASS
- remove __init__ docs for types without an init

Change-Id: I254ecb3763eaeb29aa71743c87ce2e021507fe28
(cherry picked from commit 941143858ba949c3a4a2dfcc5cd710ae6d4146e1)

7 years agoCheck tokens in chop path for inspectionattr before calling is_mapper
Mike Bayer [Sun, 8 Jul 2018 23:10:36 +0000 (19:10 -0400)] 
Check tokens in chop path for inspectionattr before calling is_mapper

Fixed regression in 1.2.9 due to :ticket:`4287` where using a
:class::`.Load` option in conjunction with a string wildcard would result
in a TypeError.

Change-Id: I2997ead0b8b9fa0edd009aa6f3161f4618fab97b
Fixes: #4298
(cherry picked from commit aec57258b3b33fe070ebb54f31f1627db07f072b)

7 years ago- add some context to the declarative section indicating this is not
Mike Bayer [Thu, 5 Jul 2018 04:05:42 +0000 (00:05 -0400)] 
- add some context to the declarative section indicating this is not
the introductory material for these topics

Change-Id: I358ba8c32520ce3950a727216bc019e33377e7b9
(cherry picked from commit 284009683d9e48e19cc09e740e7b928c2c02997c)

7 years agoblock cx_Oracle 6.4
Mike Bayer [Thu, 5 Jul 2018 03:33:16 +0000 (23:33 -0400)] 
block cx_Oracle 6.4

Prevents https://github.com/oracle/python-cx_Oracle/issues/199

Change-Id: I0f94bde38919a027f094ca016621c1364e845332
(cherry picked from commit 4f4d47fdf2a01ad5b76bac66a0ac93da0cab6c3c)

7 years ago- fix linking for the query.rst page
Mike Bayer [Wed, 4 Jul 2018 21:48:31 +0000 (17:48 -0400)] 
- fix linking for the query.rst page

Change-Id: I269fdd72e372e1bf4f0f85e9fc8e6938adc4f686
(cherry picked from commit b6fb6f6b60e87d00fcd702b92e883cf3c61d07c6)

7 years ago- add "leaks memory" to documented issues w/ mysqlconnector,
Mike Bayer [Sat, 30 Jun 2018 22:30:25 +0000 (18:30 -0400)] 
- add "leaks memory" to documented issues w/ mysqlconnector,
references #4296

Change-Id: I5b663d3444d3732a83a32443c128faffe62f11d9
(cherry picked from commit c7d364b385e6c4605c50d0ee9264dfac0bc84dde)

7 years agoVersion 1.2.10 placeholder
Mike Bayer [Fri, 29 Jun 2018 17:45:17 +0000 (13:45 -0400)] 
Version 1.2.10 placeholder

7 years ago- 1.2.9 rel_1_2_9
Mike Bayer [Fri, 29 Jun 2018 17:36:01 +0000 (13:36 -0400)] 
- 1.2.9

7 years agoMerge "Add unique_constraint_name to MSSQL FK reflection" into rel_1_2
mike bayer [Fri, 29 Jun 2018 16:26:38 +0000 (12:26 -0400)] 
Merge "Add unique_constraint_name to MSSQL FK reflection" into rel_1_2

7 years agoFixed typo
Alex Grönholm [Mon, 25 Jun 2018 12:35:31 +0000 (15:35 +0300)] 
Fixed typo

The name of the strategy is `raise_on_sql` as indicated elsewhere in the documentation.

(cherry picked from commit 6daffe5406fcb4c4015229f0737a4c8218c66d76)

7 years agoAdd unique_constraint_name to MSSQL FK reflection
Sean Dunn [Fri, 29 Jun 2018 14:26:57 +0000 (10:26 -0400)] 
Add unique_constraint_name to MSSQL FK reflection

Fixed bug in MSSQL reflection where when two same-named tables in different
schemas had same-named primary key constraints, foreign key constraints
referring to one of the tables would have their columns doubled, causing
errors.   Pull request courtesy Sean Dunn.

Fixes: #4228
Change-Id: I7dabaaee0944e1030048826ba39fc574b0d63031
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/457
(cherry picked from commit ca94ea8ab583f8ab366ee5971bfc1bdd96e54cc9)

7 years agoMerge "Reflect ASC/DESC in MySQL index columns" into rel_1_2
mike bayer [Thu, 28 Jun 2018 23:48:33 +0000 (19:48 -0400)] 
Merge "Reflect ASC/DESC in MySQL index columns" into rel_1_2

7 years agoReflect ASC/DESC in MySQL index columns
Mike Bayer [Thu, 28 Jun 2018 18:33:14 +0000 (14:33 -0400)] 
Reflect ASC/DESC in MySQL index columns

Fixed bug in index reflection where on MySQL 8.0 an index that includes
ASC or DESC in an indexed column specfication would not be correctly
reflected, as MySQL 8.0 introduces support for returning this information
in a table definition string.

Change-Id: I21f64984ade690aac8c87dbe3aad0c1ee8e9727f
Fixes: #4293
(cherry picked from commit 9d2dc7911b7767b97814479d228072b6f566a864)

7 years agoUpdate URL for PyMySQL documentation
Logan Rosen [Thu, 28 Jun 2018 20:04:27 +0000 (16:04 -0400)] 
Update URL for PyMySQL documentation

(cherry picked from commit b694a309e89e7c3e57e83dd10e9a75c66672c396)

7 years agoVendor python3 formatargspec
Mike Bayer [Thu, 28 Jun 2018 15:49:02 +0000 (11:49 -0400)] 
Vendor python3 formatargspec

Replaced the usage of inspect.formatargspec() with a vendored version
copied from the Python standard library, as inspect.formatargspec()
is deprecated and as of Python 3.7.0 is emitting a warning.

Change-Id: I751652fac7f605a3a10b547ba8c5f34fef1de945
Fixes: #4291
(cherry picked from commit 536d5187a038a44aec624dd2a99792f49dec82ed)

7 years agoMerge "Add do_setinputsizes event for cx_Oracle" into rel_1_2
mike bayer [Thu, 28 Jun 2018 14:44:05 +0000 (10:44 -0400)] 
Merge "Add do_setinputsizes event for cx_Oracle" into rel_1_2

7 years agoTry to get mysqlconnector somewhat working
Mike Bayer [Wed, 27 Jun 2018 20:08:23 +0000 (16:08 -0400)] 
Try to get mysqlconnector somewhat working

Add CI support for MySQL connector and try to fix some of the
more obvious issues.  CI tests will run against MySQL 5.7
only for starters as there appear to be issues with
MySQL 8.0

Change-Id: Id8971143a8385a5c84f0646c21c4c21e793ce3a2
(cherry picked from commit 83750628d180b9b9e5a6ae9a2ecb3a001553cb81)

7 years agoAdd do_setinputsizes event for cx_Oracle
Mike Bayer [Tue, 26 Jun 2018 20:53:51 +0000 (16:53 -0400)] 
Add do_setinputsizes event for cx_Oracle

Added a new event currently used only by the cx_Oracle dialect,
:meth:`.DialectEvents.setiputsizes`.  The event passes a dictionary of
:class:`.BindParameter` objects to DBAPI-specific type objects that will be
passed, after conversion to parameter names, to the cx_Oracle
``cursor.setinputsizes()`` method.  This allows both visibility into the
setinputsizes process as well as the ability to alter the behavior of what
datatypes are passed to this method.

Change-Id: I43b97c8e3c840cad6f01edb274dc9cfed19cb5fc
Fixes: #4290
(cherry picked from commit c270efdfb38a266ac042be2a0d11b6ff7e5ee619)

7 years agoEnsure BakedQuery is cloned before we add options to it
Mike Bayer [Mon, 25 Jun 2018 02:50:06 +0000 (22:50 -0400)] 
Ensure BakedQuery is cloned before we add options to it

Fixed bug in new polymorphic selectin loading where the BakedQuery used
internally would be mutated by the given loader options, which would both
inappropriately mutate the subclass query as well as carry over the effect
to subsequent queries.

Change-Id: Iaceecb50557f78484d09e55b3029a0483dfe873f
Fixes: #4286
(cherry picked from commit f243c00dda1484da97e706b7237670cdce6f10b9)

7 years agoMerge "fix TypeReflectionTest for sqlite 3.24" into rel_1_2
mike bayer [Tue, 26 Jun 2018 03:51:17 +0000 (23:51 -0400)] 
Merge "fix TypeReflectionTest for sqlite 3.24" into rel_1_2

7 years agoLook up adapter info for previous left side in chained query.join()
Mike Bayer [Wed, 13 Jun 2018 22:13:21 +0000 (18:13 -0400)] 
Look up adapter info for previous left side in chained query.join()

Fixed issue where chaining multiple join elements inside of
:meth:`.Query.join` might not correctly adapt to the previous left-hand
side, when chaining joined inheritance classes that share the same base
class.

Change-Id: I4b846430b7362912dbebf50599ec15a1eb978fd4
Fixes: #3505
(cherry picked from commit f683ddf16b34513d9f589202f2cdff9d0e0fad6b)

7 years agoMerge "Fix UnboundLocalError in mssql during isolation level grab" into rel_1_2
mike bayer [Tue, 26 Jun 2018 02:42:51 +0000 (22:42 -0400)] 
Merge "Fix UnboundLocalError in mssql during isolation level grab" into rel_1_2

7 years agoMerge "Support JOIN in UPDATE..FROM" into rel_1_2
mike bayer [Mon, 25 Jun 2018 22:39:26 +0000 (18:39 -0400)] 
Merge "Support JOIN in UPDATE..FROM" into rel_1_2

7 years agofix TypeReflectionTest for sqlite 3.24
Nils Philippsen [Sun, 24 Jun 2018 15:47:05 +0000 (11:47 -0400)] 
fix TypeReflectionTest for sqlite 3.24

Fixed issue in test suite where SQLite 3.24 added a new reserved word that
conflicted with a usage in TypeReflectionTest.  Pull request courtesy Nils
Philippsen.

Change-Id: I396562cecb5ca774f29e9234845bcc6a399fc5cb
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/452
(cherry picked from commit 40a5d0a4b006780167976b296984eb9790f3df7f)

7 years agoFix UnboundLocalError in mssql during isolation level grab
Mike Bayer [Mon, 18 Jun 2018 14:12:56 +0000 (17:12 +0300)] 
Fix UnboundLocalError in mssql during isolation level grab

Fixed issue within the SQL Server dialect under Python 3 where when running
against a non-standard SQL server database that does not contain either the
"sys.dm_exec_sessions" or "sys.dm_pdw_nodes_exec_sessions" views, leading
to a failure to fetch the isolation level, the error raise would fail due
to an UnboundLocalError.

Fixes: #4273
Co-authored-by: wikiped <wikiped@yandex.ru>
Change-Id: I39877c1f65f9cf8602fb1dceaf03072357759564
(cherry picked from commit e2913f65c4e5720394105584c69e7b9e8c2d373c)

7 years agoUse utf8mb4 (or utf8mb3) for all things MySQL
Mike Bayer [Sun, 24 Jun 2018 17:06:38 +0000 (13:06 -0400)] 
Use utf8mb4 (or utf8mb3) for all things MySQL

Fixed bug in MySQLdb dialect and variants such as PyMySQL where an
additional "unicode returns" check upon connection makes explicit use of
the "utf8" character set, which in MySQL 8.0 emits a warning that utf8mb4
should be used.  This is now replaced with a utf8mb4 equivalent.
Documentation is also updated for the MySQL dialect to specify utf8mb4 in
all examples.  Additional changes have been made to the test suite to use
utf8mb3 charsets and databases (there seem to be collation issues in some
edge cases with utf8mb4), and to support configuration default changes made
in MySQL 8.0 such as explicit_defaults_for_timestamp as well as new errors
raised for invalid MyISAM indexes.

Change-Id: Ib596ea7de4f69f976872a33bffa4c902d17dea25
Fixes: #4283
Fixes: #4192
(cherry picked from commit c99345ee9994c3ea2a5e6536cc3365f18d017cc1)

7 years agoCompare mappers more accurately in Load._chop_path
Mike Bayer [Mon, 25 Jun 2018 04:23:54 +0000 (00:23 -0400)] 
Compare mappers more accurately in Load._chop_path

Fixed bug in cache key generation for baked queries which could cause a
too-short cache key to be generated for the case of eager loads across
subclasses.  This could in turn cause the eagerload query to be cached in
place of a non-eagerload query, or vice versa, for a polymorhic "selectin"
load, or possibly for lazy loads or selectin loads as well.

Change-Id: I2a69349d3e38814e2c7e6012fc04fbc0e47658a4
Fixes: #4287
(cherry picked from commit 7d2a581a58e9ca4ffbcb39a384ba6950a966de7a)

7 years agoMerge "render WITH clause after INSERT for INSERT..SELECT on Oracle, MySQL" into...
mike bayer [Sun, 24 Jun 2018 15:57:34 +0000 (11:57 -0400)] 
Merge "render WITH clause after INSERT for INSERT..SELECT on Oracle, MySQL" into rel_1_2

7 years agoSupport JOIN in UPDATE..FROM
Mike Bayer [Wed, 13 Jun 2018 19:59:35 +0000 (15:59 -0400)] 
Support JOIN in UPDATE..FROM

The :class:`.Update` construct now accommodates a :class:`.Join` object
as supported by MySQL for UPDATE..FROM.  As the construct already
accepted an alias object for a similar purpose, the feature of UPDATE
against a non-table was already implied so this has been added.

Change-Id: I7b2bca627849384d5377abb0c94626463e4fad04
Fixes: #3645
(cherry picked from commit 58540ae93db30fb12f331587c32bb2d76db79ab3)