Commit Graph

11080 Commits

Author SHA1 Message Date
Mike Bayer 2ae99b671c Add notes regarding flat=True
Start documenting that flat=True and aliased=True don't work
with selectable particularly when selectable is an aliased select
already.  References #4212

Change-Id: I6e576165f06387350ae97e43ad979e575a4912b9
(cherry picked from commit 39d7dfa08a)
2018-03-07 16:03:58 -05:00
Mike Bayer e2aea6e3e2 Version 1.1.19 placeholder 2018-03-06 14:10:39 -05:00
Mike Bayer fb8e01a7df - 1.1.18 rel_1_1_18 2018-03-06 14:04:26 -05:00
Mike Bayer cc6ec001b2 Only replace first occurrence for COLLATE/ARRAY syntax
Fixed bug in Postgresql COLLATE / ARRAY adjustment first introduced
in 🎫`4006` where new behaviors in Python 3.7 regular expressions
caused the fix to fail.

Change-Id: Ied3893d7cac210befa0277b55b3b895b0ba1f0d2
Fixes: #4208
(cherry picked from commit 7300469f71)
2018-03-05 15:53:06 -05:00
Mike Bayer 8064be5b00 Get MySQL version info from @@version
MySQL dialects now query the server version using ``SELECT @@version``
explicitly to the server to ensure we are getting the correct version
information back.   Proxy servers like MaxScale interfere with the value
that is passed to the DBAPI's connection.server_version value so this
is no longer reliable.

Change-Id: Iafd39be8c9bf1982d58b34cc997ae1016ad6c48c
Fixes: #4205
(cherry picked from commit 9ba77e8d3b682bff89fdab5e80271a96a52fe8c8)
(cherry picked from commit 5c1ebbc370)
2018-03-03 16:16:32 -05:00
Mike Bayer 1127fe7407 - add some seealsos for the transient object that loads use case
Change-Id: Ibfa79a3721f31806223906cccf4547673b3d42f1
(cherry picked from commit 5de2e17b6e)
2018-03-02 11:59:15 -05:00
Mike Bayer 6e2bb7686e Fix enable_relationship_loading() works fine w/ one-to-many
Change-Id: I6efb62afa02be4d42482cfdbec739a5c6ab32bd7
(cherry picked from commit fde2f77fd1978d4162ab01bc05bb5c793bc733b2)
2018-03-02 10:46:18 -05:00
Anton Vlasenko 6d975ec9ff Fix typo in python example
(cherry picked from commit 31d28179c2)
2018-02-27 14:46:47 -05:00
Mike Bayer ad1c56b3a2 Version 1.1.18 placeholder 2018-02-22 16:16:11 -05:00
Mike Bayer ee2e266256 - 1.1.17 rel_1_1_17 2018-02-22 16:08:56 -05:00
Mike Bayer b37f007732 Default to using current mapped class as owner if none found
Repaired regression caused in 1.2.3 and 1.1.16 regarding association proxy
objects, revising the approach to 🎫`4185` when calculating the
"owning class" of an association proxy to default to choosing the current
class if the proxy object is not directly associated with a mapped class,
such as a mixin.

Change-Id: I87d0ac09f695dc285bd4bbe0a547f1d5ce23e068
Fixes: #4185
(cherry picked from commit 93881f7873048403b62cc3e179354712ba8e9282)
2018-02-20 16:42:24 -05:00
Mike Bayer de6488d75f Rewrite the "deleting from collections" section
This section documents an aspect of the ORM that is
more generalized than just collections as well as more general
than just using session.delete(), even though session.delete()
with collections is the most common use case.   Try to expand
out the scope here to explain the situation from the perspective
of any kind of relationship, include example with delete cascade
with many-to-one as well.

Change-Id: Ifacb91f90951d1b0da6dbadc2d72273d79b756e2
Fixes: #4191
2018-02-19 18:16:38 -05:00
Mike Bayer 1337d73421 Version 1.1.17 placeholder 2018-02-16 17:36:45 -05:00
Mike Bayer 0dab4cbf3a - 1.1.16 rel_1_1_16 2018-02-16 16:55:40 -05:00
Mike Bayer 055821630b fix formatting
Change-Id: Ie4687c970508cf8bf183e342db6b89a8aca9d6f9
2018-02-16 16:54:43 -05:00
André Cruz 683e5a2dd4 Add ssl "operation timed out" message for psycopg2
Added "SSL SYSCALL error: Operation timed out" to the list
of messages that trigger a "disconnect" scenario for the
psycopg2 driver.  Pull request courtesy André Cruz.

Change-Id: Ie1a8fc97e74b6906ccacf53dad70fed973c42b7f
Pull-request: https://bitbucket.org/zzzeek/sqlalchemy/pull-requests/3
(cherry picked from commit 2f03ec08b5)
2018-02-15 12:48:43 -05:00
Tim Shaffer 54854d290c Fixed link to Flask-SQLAlchemy in documentation
(cherry picked from commit 9feb900f3e)
2018-02-14 11:00:34 -05:00
Mike Bayer f1125b79cc Add dependency for parent_pre post updates to parent deletes
Fixed issue in post_update feature where an UPDATE is emitted
when the parent object has been deleted but the dependent object
is not.   This issue has existed for a long time however
since 1.2 now asserts rows matched for post_update, this
was raising an error.

Change-Id: I31b1d22408e358962577435f0c4cb9a456ba0872
Fixes: #4187
(cherry picked from commit 8607ae51fc)
2018-02-12 17:06:03 -05:00
Mike Bayer cc6cef5184 Search through mapper superclass hierarchy for owner
Fixed regression caused by fix for issue 🎫`4116` affecting versions
1.2.2 as well as 1.1.15, which had the effect of mis-calculation of the
"owning class" of an :class:`.AssociationProxy` as the ``NoneType`` class
in some declarative mixin/inheritance situations as well as if the
association proxy were accessed off of an un-mapped class.  The "figure out
the owner" logic has been replaced by an in-depth routine that searches
through the complete mapper hierarchy assigned to the class or subclass to
determine the correct (we hope) match; will not assign the owner if no
match is found.  An exception is now raised if the proxy is used
against an un-mapped instance.

Change-Id: I611b590df2babe077ce6c19bea89e84251d1a7f4
Fixes: #4185
(cherry picked from commit 650b9eddae)
2018-02-09 16:31:24 -05:00
mike bayer d41ab3d108 Merge "Ensure weakref finalize_fairy operates upon the current connection" into rel_1_1 2018-02-09 08:40:17 -05:00
Mike Bayer c2f29f33ac - fix formatting
Change-Id: Ic919048462520de8de84174a5e366d6c85316e87
(cherry picked from commit ea3fd42495)
2018-02-08 16:47:05 -05:00
Mike Bayer 6c6f865541 Ensure weakref finalize_fairy operates upon the current connection
Fixed a fairly serious connection pool bug where a connection that is
acquired after being refreshed as a result of a user-defined
:class:`.DisconnectionError` or due to the 1.2-released "pre_ping" feature
would not be correctly reset if the connection were returned to the pool by
weakref cleanup (e.g. the front-facing object is garbage collected); the
weakref would still refer to the previously invalidated DBAPI connection
which would have the reset operation erroneously called upon it instead.
This would lead to stack traces in the logs and a connection being checked
into the pool without being reset, which can cause locking issues.

Change-Id: Iabd9f3a63a1d0207d0de0054a6ced3560818cf9c
Fixes: #4184
(cherry picked from commit ab1f524c355c0bbac68485a60cb99e7a9d0f944a)
2018-02-08 14:56:19 -05:00
Mike Bayer 646b803297 - ensure it's clear that all DDLEvents can be associated
using propagate=True, which is consulted within the scope
of Table.tometadata().  Fixes: #4179

Change-Id: I0cb0d8f6a894bb645cfc94b3d9083339039c9193
(cherry picked from commit 56ff3c5270)
2018-02-02 15:47:48 -05:00
Mike Bayer d0ec6d0dc4 - don't scare off developers with the word "advanced" here
Change-Id: I72a0295634e228bacf6c92088e650183f91e4585
(cherry picked from commit 399988aaed)
2018-01-31 09:27:59 -05:00
Mike Bayer 80e1e8b4a5 Add note to FAQ that IN behavior is modernized in 1.2.
Change-Id: Ibe05d8aaa8da90b52cd07f3bce89dcbd49b841c9
2018-01-25 16:14:54 -05:00
Mike Bayer 6ae587b59f Add a new FAQ section explaining how to ensure parenthesis
with op().

Not sure if this can be further improved at some point, such
as if a BinaryExpression automatically applied self_group()
when op() is called, however for the moment op() behaves consistently
as with all other operators without any ad-hoc effects.

Change-Id: Ia7f1ab43990450bd96757848b77a35e8fedeab63
References: #4174
(cherry picked from commit 1d435b9f49)
2018-01-25 16:13:56 -05:00
Mike Bayer 54ebae8bcd Further refine map_column verbiage
The verbiage here continues to be misleading as it implies that
a MapperProperty already exists for the Column when this is not
the case.

Change-Id: Iaa6990dc9693d47d50b15c4815c3c7f6f34d8577
(cherry picked from commit bc9cdd5de0)
2018-01-25 09:18:14 -05:00
Mike Bayer f5b84ab2c5 Rework synonym, synonym_for documentation
The map_column example was incorrect, and overall the purpose
of this parameter as well as that of synonym_for was not explained;
examples added along with more encouragement to use hybrids.

Change-Id: I20bd286f541f798daa81fa598c0f31db1f5aa6ed
(cherry picked from commit 8250a4248f)
2018-01-24 18:03:58 -05:00
Mike Bayer dde5274fb1 - add missing 2018 update to conf.py
Change-Id: Ie2d4ff9486375867ed6958b82cd2595bae43746d
(cherry picked from commit c3fe4b585b)
2018-01-15 09:21:07 -05:00
Mike Bayer 0b04471331 happy new year
Change-Id: I3ef36bfd0cb0ba62b3123c8cf92370a43156cf8f
(cherry picked from commit 699272e4dc)
2018-01-12 14:25:17 -05:00
Aubrey Stark-Toller 8e112ad2cc ValuesBase.values inconsistency fix
Fixed bug in :meth:`.Insert.values` where using the "multi-values"
format in combination with :class:`.Column` objects as keys rather
than strings would fail.   Pull request courtesy Aubrey Stark-Toller.

Change-Id: I9d3b40b5950df8f5bfdc8b1d22f9c3afb277f17f
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/412
Fixes: #4162
(cherry picked from commit ab2165e6d6)
2018-01-12 11:30:05 -05:00
Mike Bayer 386d52aeb8 turn off pytest's latest plugin we didn't ask for, logging
Change-Id: I24d57894c519366febbce268b04474182dfbb0a1
(cherry picked from commit 3316890ffa)
2018-01-05 15:32:13 -05:00
Mike Bayer a71e1ea211 Check for object was expunged before restoring after pk switch + rollback
Fixed bug where an object that is expunged during a rollback of
a nested or subtransaction which also had its primary key mutated
would not be correctly removed from the session, causing subsequent
issues in using the session.

Change-Id: I57e2888902015d67ee11857e44382818f1d2f8bc
Fixes: #4151
(cherry picked from commit 5811276bb7)
2018-01-04 14:11:00 -05:00
Jacob Hayes fe84543cc7 Add TRUNCATE to postgres autocommit regexp
Extends AUTOCOMMIT_REGEXP for the postgres dialect to include `TRUNCATE`.

Change-Id: I315e03674b89bb89aae669b8655481e4d890491e
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/407
(cherry picked from commit 756d578287)
2017-12-18 11:33:37 -05:00
Martijn Pieters 0018127e47 Allow for the database to produce a UUID instance
Some database adapters (specifically, pg8000) already produce a uuid.UUID()
instance for UUID columns. Account for this.

(cherry picked from commit e80a5adfd4)
2017-12-15 09:53:00 -05:00
Jacob Hayes 9f3bf6b506 Fix import in Inspector.reflecttable doc
(cherry picked from commit e6b290df27)
2017-12-15 09:50:04 -05:00
Mike Bayer 0be865d7bd Add tests for ARRAY propagate events re. MutableList
Issue #4141 appears in version 1.2, however we are adding the
MutableList test for it to 1.1 as well.  The metadata test
does not apply as in 1.1 ARRAY is not a SchemaEventTarget.

Change-Id: If8c57615860883837f6cf72661e46180a77778c1
(cherry picked from commit 14bb6eae364f41b6acbce782ebf5f984b9364af9)
2017-12-04 17:42:04 -05:00
Randy Barlow 3314e84f26 Fix a typo in basic_relationships.rst.
Signed-off-by: Randy Barlow <randy@electronsweatshop.com>
(cherry picked from commit 096bace0da)
2017-12-01 12:51:52 -05:00
mike bayer 339b43fd12 Merge "add nullsfirst() / nullslast() to top-level imports" into rel_1_1 2017-11-17 10:32:40 -05:00
Jeff Widman 95ae3020f8 Add license to Wheel metadata
https://wheel.readthedocs.io/en/stable/index.html#including-the-license-in-the-generated-wheel-file

Change-Id: Icf91b96ba534c8f835ad287e7840ac2a9d2ac502
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/397
(cherry picked from commit bcbff960a1)
2017-11-16 09:36:45 -05:00
Lele Gaifax 1be8f9597b add nullsfirst() / nullslast() to top-level imports
Change-Id: Ieefcc4c30c1c17f43f2908d961e00815bae862bb
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/378
(cherry picked from commit d507ea00a9)
2017-11-16 09:35:13 -05:00
Mike Bayer a616c0566d Propagate kwargs for mysql concat, match
Fixed bug where the MySQL "concat" and "match" operators failed to
propagate kwargs to the left and right expressions, causing compiler
options such as "literal_binds" to fail.

Also adds non-interpreted **kw for visit_create_index, visit_typeclause

Change-Id: Iaf54ac18949cc6a54f50678125f010b4f12c5673
Fixes: #4136
(cherry picked from commit 4f054550b7)
2017-11-13 09:24:02 -05:00
Mike Bayer bccfc2181d - fix loop logic that was leaving out 10K items from
example suites, fixes #4132

Change-Id: Icf07f33fc99a880d6165d300579ef5d2c366f6f5
(cherry picked from commit 6448903b52)
2017-11-09 11:39:04 -05:00
Mike Bayer 0274d80f83 Version 1.1.16 placeholder
Change-Id: Ia563c801f5f467084c49fc367f31b2385e0777bb
2017-11-03 17:07:06 -04:00
Mike Bayer 0b33a8c48f - 1.1.15 rel_1_1_15 2017-11-03 16:47:02 -04:00
Mike Bayer b3502459c3 Fix as many RST parse warnings as possible.
Still a few I can't get.   Also 0.9 is EOL so hide the
unreleased notes.

Change-Id: If0e44d4a0b3e78e211f32d5c33b51b1a007c9c69
(cherry picked from commit 75bdcd096f)
2017-11-03 14:47:52 -04:00
Mike Bayer 4e4642d5d8 Add doc note for contains_eager() w/ subclasses.
Change-Id: I9634136e1855a081c25b04bb6ae8248f0f94be1c
Fixes: #4130
(cherry picked from commit 152522b3f2)
2017-11-02 13:54:04 -04:00
Nicolas CANIART d91edf2511 Accommodate tuples for ColumnDefault.__repr__
Fixed bug where ``__repr__`` of :class:`.ColumnDefault` would fail
if the argument were a tuple.  Pull request courtesy Nicolas Caniart.

Change-Id: I08aa2448ef91054c43d6068ac54cedbdf7a83d64
Pull-request: https://bitbucket.org/zzzeek/sqlalchemy/pull-requests/1
Fixes: #4126
(cherry picked from commit 5acc9b149a)
2017-10-31 11:40:00 -04:00
Mike Bayer a92f6316ed - add notes that @comparator and @expression don't go together.
Change-Id: I3fb366f8b49454453e4b6dada565c24c5ccb975e
(cherry picked from commit 8965f30215)
2017-10-30 20:03:24 -04:00
Mike Bayer e06bf169e5 Filter attributes we don't map during a load_scalar_attributes
Fixed bug where a descriptor that is elsewhere a mapped column
or relationship within a hierarchy based on :class:`.AbstractConcreteBase`
would be referred towards during a refresh operation, causing an error
as the attribute is not mapped as a mapper property.
A similar issue can arise for other attributes like the "type" column
added by :class:`.AbstractConcreteBase` if the class fails to include
"concrete=True" in its mapper, however the check here should also
prevent that scenario from causing a problem.

Change-Id: I407b07a3a3e2c374da19fc86ed44b987d595dcfa
Fixes: #4124
(cherry picked from commit fd4289c582)
2017-10-28 13:30:18 -04:00