]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/log
thirdparty/sqlalchemy/sqlalchemy.git
6 years agoSet a reading order to the compatibility import file
Agam Rafaeli [Mon, 17 Dec 2018 16:20:09 +0000 (11:20 -0500)] 
Set a reading order to the compatibility import file

The order is as follows:
1. Imports, in the same format of "import X"
2. Members denoting versions of python
3. Members of imports that are shadowed for usage across the system
4. Global variables
5. If conditions of imports. (internally organized by this order)
6. Function definitions

Closes: #4409
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/4409
Pull-request-sha: a7eb52d39f9758572e6a3314865bb633260aa8e1

Change-Id: I2fa44d1aebd7575df968f2e3f3fc7d474fa3c6d7

6 years agoDocument and support nested composites
Mike Bayer [Wed, 12 Dec 2018 17:51:20 +0000 (12:51 -0500)] 
Document and support nested composites

Composites can behave in a "nested" fashion by defining the
class in that way.   To make the constructor more convenient,
a callable can be passed to :func:`.composite` instead of the
class itself.  This works now, so add a test to ensure this
pattern remains available.

Change-Id: Ia009f274fca7269f41d6d824e0f70b6fb0ada081

6 years agocherry-pick changelog update for 1.2.16
Mike Bayer [Tue, 11 Dec 2018 21:56:37 +0000 (16:56 -0500)] 
cherry-pick changelog update for 1.2.16

6 years agocherry-pick changelog from 1.2.15
Mike Bayer [Tue, 11 Dec 2018 21:56:37 +0000 (16:56 -0500)] 
cherry-pick changelog from 1.2.15

6 years agoMerge "Refer to existing of_type when resolving string attribute name"
mike bayer [Sat, 8 Dec 2018 14:19:28 +0000 (14:19 +0000)] 
Merge "Refer to existing of_type when resolving string attribute name"

6 years agoMerge "Take instance into account when determining AssociationProxyInstance"
mike bayer [Sat, 8 Dec 2018 14:18:53 +0000 (14:18 +0000)] 
Merge "Take instance into account when determining AssociationProxyInstance"

6 years agoTake instance into account when determining AssociationProxyInstance
Mike Bayer [Fri, 7 Dec 2018 18:08:29 +0000 (13:08 -0500)] 
Take instance into account when determining AssociationProxyInstance

Fixed a regression in 1.3.0b1 caused by :ticket:`3423` where association
proxy objects that access an attribute that's only present on a polymorphic
subclass would raise an ``AttributeError`` even though the actual instance
being accessed was an instance of that subclass.

Fixes: #4401
Change-Id: Ie62c48aa9142adff45cbf9a297184987c72f30f3

6 years agoRefer to existing of_type when resolving string attribute name
Mike Bayer [Fri, 7 Dec 2018 21:01:04 +0000 (16:01 -0500)] 
Refer to existing of_type when resolving string attribute name

Fixed bug where chaining of mapper options using
:meth:`.RelationshipProperty.of_type` in conjunction with a chained option
that refers to an attribute name by string only would fail to locate the
attribute.

Fixes: #4400
Change-Id: I01bf449ec4d8f56bb8c34e25153c1c9b31ff8012

6 years agoAdd versioned_update_old_row example
Mike Bayer [Fri, 7 Dec 2018 19:01:23 +0000 (14:01 -0500)] 
Add versioned_update_old_row example

A modification to the "turn UPDATE into INSERT" recipe that
also UPDATEs the previous row.  The example is using timestamps
to maintain a relationship between two objects.

Change-Id: Ifdb8ee73616190384263bbe88c71d9278d616f6b

6 years ago- fix formatting on examples to list the description first, some flake8
Mike Bayer [Fri, 7 Dec 2018 17:17:59 +0000 (12:17 -0500)] 
- fix formatting on examples to list the description first, some flake8

Change-Id: I57144a559f20abab02e745d052be5ff84edec7f8

6 years agoFixed typo in docs
adriennefranke [Thu, 6 Dec 2018 00:57:50 +0000 (18:57 -0600)] 
Fixed typo in docs

Fixes: #4166
Fixes: #4399
Change-Id: I49494209463089114e77dfc737c811837d49ea20

6 years agoRemoved the leading underscore for visitor_iterator property
Agam Rafaeli [Wed, 5 Dec 2018 21:12:59 +0000 (16:12 -0500)] 
Removed the leading underscore for visitor_iterator property

A leading underscore usually denotes a private member. Since this
is a property and it is used in Query I removed the leading underscore

Change-Id: I8a35c09fd6d20ee0a13568ed7257a08b7bee2a08
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/4398

6 years agoMerge "Move CRUDTest, InlineDefaultTest from test_compiler"
mike bayer [Tue, 4 Dec 2018 14:28:10 +0000 (14:28 +0000)] 
Merge "Move CRUDTest, InlineDefaultTest from test_compiler"

6 years agoAll sphinx dependencies move under the github sqlalchemy organization
Mike Bayer [Mon, 3 Dec 2018 22:02:23 +0000 (17:02 -0500)] 
All sphinx dependencies move under the github sqlalchemy organization

Change-Id: I7a0dc1ef320b6abad0eeac8b24c20f821e5b8c81

6 years agoMerge "Fix PostgreSQL reflection of domains expressed as arrays"
mike bayer [Mon, 3 Dec 2018 02:35:11 +0000 (02:35 +0000)] 
Merge "Fix PostgreSQL reflection of domains expressed as arrays"

6 years ago"left" -> "accidentally placed at"
Mike Bayer [Sun, 2 Dec 2018 23:54:40 +0000 (18:54 -0500)] 
"left" -> "accidentally placed at"

since "left" is kind of ambiguous, use more explicit terminology
here.

Also update the test to use a positive assertion that the
warning is emitted; quote the attribute name.

Change-Id: Ic2284c200a26b32b2da063cfaf6d59547309d587
References: https://github.com/zzzeek/sqlalchemy/pull/488

6 years agoMove CRUDTest, InlineDefaultTest from test_compiler
Mike Bayer [Sat, 1 Dec 2018 19:28:57 +0000 (14:28 -0500)] 
Move CRUDTest, InlineDefaultTest from test_compiler

test_compiler is mostly related to SELECT statements as well
as smaller SQL elements.  While it still has some DDL related
tests, move out all the remaining insert/update tests into
the already present test_insert.py, test_update.py

Fixes: #2630
Change-Id: I4167618543fd1235d12d1717c8c629d2374b325a

6 years agoFix PostgreSQL reflection of domains expressed as arrays
Jakub Synowiec [Sat, 1 Dec 2018 18:26:43 +0000 (13:26 -0500)] 
Fix PostgreSQL reflection of domains expressed as arrays

Fixed issue where reflection of a PostgreSQL domain that is expressed as an
array would fail to be recognized.  Pull request courtesy Jakub Synowiec.

Fixes: #4377
Change-Id: I252c79ca435b87d4d9172b1c84e0e74e789ef676
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/4380

6 years agoMerge "Apply path generation for superclasses to Load._set_path_strategy()"
mike bayer [Sat, 1 Dec 2018 16:52:22 +0000 (16:52 +0000)] 
Merge "Apply path generation for superclasses to Load._set_path_strategy()"

6 years agoApply path generation for superclasses to Load._set_path_strategy()
Mike Bayer [Fri, 30 Nov 2018 19:36:20 +0000 (14:36 -0500)] 
Apply path generation for superclasses to Load._set_path_strategy()

Extended the fix first made as part of :ticket:`3287`, where a loader option
made against a subclass using a wildcard would extend itself to include
application of the wildcard to attributes on the super classes as well, to a
"bound" loader option as well, e.g. in an expression like
``Load(SomeSubClass).load_only('foo')``.  Columns that are part of the
parent class of ``SomeSubClass`` will also be excluded in the same way as if
the unbound option ``load_only('foo')`` were used.

Fixes: #4373
Change-Id: I2eee0e587c34323a77df077b9cb699da370c403d

6 years agoMerge "Add __clause_element__ to ColumnProperty"
mike bayer [Fri, 30 Nov 2018 18:12:02 +0000 (18:12 +0000)] 
Merge "Add __clause_element__ to ColumnProperty"

6 years agoMerge "Add the write_timeout option for mysql."
mike bayer [Fri, 30 Nov 2018 18:11:06 +0000 (18:11 +0000)] 
Merge "Add the write_timeout option for mysql."

6 years agoMerge "Allow optional *args with base AnsiFunction"
mike bayer [Fri, 30 Nov 2018 15:18:44 +0000 (15:18 +0000)] 
Merge "Allow optional *args with base AnsiFunction"

6 years agoAdd the write_timeout option for mysql.
jun923.gu [Fri, 30 Nov 2018 05:21:29 +0000 (00:21 -0500)] 
Add the write_timeout option for mysql.

As MySQLdb support read_timeout and write_timeout option, and
sqlalchemy just support read_timeout option. So sqlalchemy need to add
write_timeout option.

Fixes: #4381
Change-Id: I2bea80bdd6f20fafc72b48fa0e5d795626d9d9b9
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/4385

6 years agoAllow optional *args with base AnsiFunction
Mike Bayer [Thu, 29 Nov 2018 15:13:03 +0000 (10:13 -0500)] 
Allow optional *args with base AnsiFunction

Amended the :class:`.AnsiFunction` class, the base of common SQL
functions like ``CURRENT_TIMESTAMP``, to accept positional arguments
like a regular ad-hoc function.  This to suit the case that many of
these functions on specific backends accept arguments such as
"fractional seconds" precision and such.  If the function is created
with arguments, it renders the the parenthesis and the arguments.  If
no arguents are present, the compiler generates the non-parenthesized form.

Fixes: #4386
Change-Id: Ic492ef177e4987cec99ec4d95f55292be8daa087

6 years agotypo 4388/head
Raphael [Fri, 30 Nov 2018 00:11:24 +0000 (19:11 -0500)] 
typo

typo

6 years agoMerge remote-tracking branch 'origin/pr/4382'
Mike Bayer [Wed, 28 Nov 2018 17:32:24 +0000 (12:32 -0500)] 
Merge remote-tracking branch 'origin/pr/4382'

Change-Id: I957a13fa77be659a1ce2371342af4e33b1c5a304

6 years agoAdd a test harness for MySQL connect args
Mike Bayer [Wed, 28 Nov 2018 16:27:46 +0000 (11:27 -0500)] 
Add a test harness for MySQL connect args

This is to assist with #4381.

Change-Id: I5ebfc0da906a13edc4fb3f0ca7ab2d843d43bb00

6 years agoprint() is a function in Python 3 4382/head
cclauss [Wed, 28 Nov 2018 09:38:57 +0000 (10:38 +0100)] 
print() is a function in Python 3

6 years agoAdd __clause_element__ to ColumnProperty
Mike Bayer [Thu, 22 Nov 2018 15:39:29 +0000 (10:39 -0500)] 
Add __clause_element__ to ColumnProperty

Added a ``__clause_element__()`` method to :class:`.ColumnProperty` which
can allow the usage of a not-fully-declared column or deferred attribute in
a declarative mapped class slightly more friendly when it's used in a
constraint or other column-oriented scenario within the class declaration,
though this still can't work in open-ended expressions; prefer to call the
:attr:`.ColumnProperty.expression` attribute if receiving ``TypeError``.

Fixes: #4372
Change-Id: I5d3d1adb9c77de0566298bc2c46e9001d314b0c7

6 years agoMerge "Warn for lower-case column attribute on declarative"
mike bayer [Tue, 27 Nov 2018 07:54:43 +0000 (07:54 +0000)] 
Merge "Warn for lower-case column attribute on declarative"

6 years agoMove links etc. to github, new alembic links
Mike Bayer [Tue, 27 Nov 2018 03:58:50 +0000 (22:58 -0500)] 
Move links etc. to github, new alembic links

Change-Id: I59392d355a216ae59552a04c5508f548b901aa7b

6 years agoWarn for lower-case column attribute on declarative
Mike Bayer [Mon, 26 Nov 2018 05:59:01 +0000 (00:59 -0500)] 
Warn for lower-case column attribute on declarative

A warning is emitted in the case that a :func:`.column` object is applied to
a declarative class, as it seems likely this intended to be a
:class:`.Column` object.

Fixes: #4374
Change-Id: I2e617ef65547162e3ba6587c168548ad0cf6203d

6 years ago- remove @HEAD indicator from docs requirements, fixes #4375
Mike Bayer [Mon, 26 Nov 2018 04:54:44 +0000 (23:54 -0500)] 
- remove @HEAD indicator from docs requirements, fixes #4375

Change-Id: I50b1622c2c2236bf9e436f61c7eea31faaeaa3e1

6 years agoVersion 1.3.0b2 placeholder
Mike Bayer [Sat, 17 Nov 2018 04:13:08 +0000 (23:13 -0500)] 
Version 1.3.0b2 placeholder

6 years ago- 1.3.0b1 rel_1_3_0b1
Mike Bayer [Sat, 17 Nov 2018 04:04:42 +0000 (23:04 -0500)] 
- 1.3.0b1

6 years ago- edits
Mike Bayer [Sat, 17 Nov 2018 03:46:20 +0000 (22:46 -0500)] 
- edits

Change-Id: Ia8e1b5b51acc2b249499796ac36a7a3b68c941a1

6 years ago- edits for 1.3 migration notes
Mike Bayer [Fri, 16 Nov 2018 23:52:42 +0000 (18:52 -0500)] 
- edits for 1.3 migration notes

Change-Id: Id2065053088481df5a703c63bfc88799a9943a5e

6 years ago- we don't have a separate contributors doc anymore...
Mike Bayer [Fri, 16 Nov 2018 23:51:35 +0000 (18:51 -0500)] 
- we don't have a separate contributors doc anymore...

Change-Id: I0d09d3aa386336263829a98aeb1237caab78b789

6 years agoMerge "Modernize cx_Oracle parameters"
mike bayer [Fri, 16 Nov 2018 03:14:54 +0000 (03:14 +0000)] 
Merge "Modernize cx_Oracle parameters"

6 years ago- fix spacing
Mike Bayer [Fri, 16 Nov 2018 00:51:03 +0000 (19:51 -0500)] 
- fix spacing

Change-Id: I460d873b4c6a250594e291b5f47fff5a06280817

6 years agoRepair tutorial code example to be deterministic
Mike Bayer [Fri, 16 Nov 2018 00:48:45 +0000 (19:48 -0500)] 
Repair tutorial code example to be deterministic

A few queries featured an aggregate without a GROUP BY
or a complete ordering, causing the doctests to fail
with recent versions of SQLite.  The queries are now made
to include a GROUP BY as well as ORDER BY both columns.

Fixes: #4370
Change-Id: I904bddb4372224158fcecff9f0dbbbe7c1bf36b3

6 years agoModernize cx_Oracle parameters
Mike Bayer [Thu, 15 Nov 2018 17:11:12 +0000 (12:11 -0500)] 
Modernize cx_Oracle parameters

Updated the parameters that can be sent to the cx_Oracle DBAPI to both allow
for all current parameters as well as for future parameters not added yet.
In addition, removed unused parameters that were deprecated in version 1.2,
and additionally we are now defaulting "threaded" to False.

Fixes: #4369
Change-Id: I599668960e7b2d5bd1f5e6850e10b5b3ec215ed3

6 years agoModernize cx_oracle connect documentation
Mike Bayer [Thu, 15 Nov 2018 17:52:33 +0000 (12:52 -0500)] 
Modernize cx_oracle connect documentation

in preparation for #4369, however the documentation was
also inaccurate in that it did not mention connect_args.

Change-Id: I992e5f53ce16cc9c72d2c893a3ca798a9c2b4d07

6 years agoMerge "Add secondary selectable to FROM clauses for correlated exists"
mike bayer [Thu, 15 Nov 2018 15:17:59 +0000 (15:17 +0000)] 
Merge "Add secondary selectable to FROM clauses for correlated exists"

6 years agoMerge "Allow join() to pick the best candidate from multiple froms/entities"
mike bayer [Thu, 15 Nov 2018 15:05:11 +0000 (15:05 +0000)] 
Merge "Allow join() to pick the best candidate from multiple froms/entities"

6 years agoAllow join() to pick the best candidate from multiple froms/entities
Mike Bayer [Mon, 12 Nov 2018 23:27:34 +0000 (18:27 -0500)] 
Allow join() to pick the best candidate from multiple froms/entities

Refactored :meth:`.Query.join` to further clarify the individual components
of structuring the join. This refactor adds the ability for
:meth:`.Query.join` to determine the most appropriate "left" side of the
join when there is more than one element in the FROM list or the query is
against multiple entities.  In particular this targets the regression we
saw in :ticket:`4363` but is also of general use.   The codepaths within
:meth:`.Query.join` are now easier to follow and the error cases are
decided more specifically at an earlier point in the operation.

Fixes: #4365
Change-Id: I403f451243904a020ceab4c3f94bead550c7b2d5

6 years agoAdd secondary selectable to FROM clauses for correlated exists
Mike Bayer [Wed, 14 Nov 2018 16:02:40 +0000 (11:02 -0500)] 
Add secondary selectable to FROM clauses for correlated exists

In continuing with a similar theme as that of very recent :ticket:`4349`,
repaired issue with :meth:`.RelationshipProperty.Comparator.any` and
:meth:`.RelationshipProperty.Comparator.has` where the "secondary"
selectable needs to be explicitly part of the FROM clause in the
EXISTS subquery to suit the case where this "secondary" is a :class:`.Join`
object.

Fixes: #4366
Change-Id: Icd0d0c3871bbd0059f0c9256e2b980edc2c90551

6 years agoMerge "Add new parameters for IDENTITY start/increment in mssql"
mike bayer [Wed, 14 Nov 2018 22:35:19 +0000 (22:35 +0000)] 
Merge "Add new parameters for IDENTITY start/increment in mssql"

6 years agoAdd new parameters for IDENTITY start/increment in mssql
Mike Bayer [Sun, 11 Nov 2018 02:36:18 +0000 (21:36 -0500)] 
Add new parameters for IDENTITY start/increment in mssql

Deprecated the use of :class:`.Sequence` with SQL Server in order to affect
the "start" and "increment" of the IDENTITY value, in favor of new
parameters ``mssql_identity_start`` and ``mssql_identity_increment`` which
set these parameters directly.  :class:`.Sequence` will be used to generate
real ``CREATE SEQUENCE`` DDL with SQL Server in a future release.

Fixes: #4362
Change-Id: I1e69378c5c960ff0bc28137c923589692f1a918f

6 years agoMerge "Deannotate "parententity" in primaryjoin/secondaryjoin"
mike bayer [Wed, 14 Nov 2018 19:22:25 +0000 (19:22 +0000)] 
Merge "Deannotate "parententity" in primaryjoin/secondaryjoin"

6 years agoMerge "Insert primary entity in dynamic "secondary""
mike bayer [Wed, 14 Nov 2018 19:20:30 +0000 (19:20 +0000)] 
Merge "Insert primary entity in dynamic "secondary""

6 years agoDeannotate "parententity" in primaryjoin/secondaryjoin
Mike Bayer [Wed, 14 Nov 2018 16:31:22 +0000 (11:31 -0500)] 
Deannotate "parententity" in primaryjoin/secondaryjoin

Fixed bug where the ORM annotations could be incorrect for the
primaryjoin/secondaryjoin a relationship if one used the pattern
``ForeignKey(SomeClass.id)`` in the declarative mappings.   This pattern
would leak undesired annotations into the join conditions which can break
aliasing operations done within :class:`.Query` that are not supposed to
impact elements in that join condition.  These annotations are now removed
up front if present.

Also add a test suite for has/any into test_query which will
form the basis for new tests to be added in :ticket:`4366`.

Fixes: #4367
Change-Id: I929ef983981bb49bf975f346950ebb0e19c986b8

6 years agoMerge "Add Sequence to StrSQLCompiler"
mike bayer [Tue, 13 Nov 2018 23:37:33 +0000 (23:37 +0000)] 
Merge "Add Sequence to StrSQLCompiler"

6 years agoInsert primary entity in dynamic "secondary"
Mike Bayer [Mon, 12 Nov 2018 20:09:37 +0000 (15:09 -0500)] 
Insert primary entity in dynamic "secondary"

Fixed regression caused by :ticket:`4349` where adding the "secondary"
table to the FROM clause for a dynamic loader would affect the ability of
the :class:`.Query` to make a subsequent join to another entity.   The fix
adds the primary entity as the first element of the FROM list since
:meth:`.Query.join` wants to jump from that.   Version 1.3 will have
a more comprehensive solution to this problem as well (:ticket:`4365`).

Fixes: #4363
Change-Id: I1abbb6207722619dc5369e1fd96de43d60a1ee62

6 years agoConvert to spaces
Mike Bayer [Sun, 11 Nov 2018 02:56:52 +0000 (21:56 -0500)] 
Convert to spaces

Change-Id: I219f7f6ef4f644f64fcb04fed224c6415465df0b

6 years agoAdd Sequence to StrSQLCompiler
Mike Bayer [Sun, 11 Nov 2018 02:10:51 +0000 (21:10 -0500)] 
Add Sequence to StrSQLCompiler

Added :class:`.Sequence` to the "string SQL" system that will render a
meaningful string expression (``"<next sequence value: my_sequence>"``)
when stringifying without a dialect a statement that includes a "sequence
nextvalue" expression, rather than raising a compilation error.

Fixes: #4144
Change-Id: Ia910f0e22008a7cde7597365954ede324101cf4d

6 years agoMerge "Add new "all columns" naming convention tokens"
mike bayer [Sun, 11 Nov 2018 01:58:18 +0000 (01:58 +0000)] 
Merge "Add new "all columns" naming convention tokens"

6 years agoMerge "Modernize deferred callable for many-to-one comparison"
mike bayer [Sun, 11 Nov 2018 01:56:41 +0000 (01:56 +0000)] 
Merge "Modernize deferred callable for many-to-one comparison"

6 years agoModernize deferred callable for many-to-one comparison
Mike Bayer [Wed, 7 Nov 2018 16:21:39 +0000 (11:21 -0500)] 
Modernize deferred callable for many-to-one comparison

Improved the behavior of a relationship-bound many-to-one object expression
such that the retrieval of column values on the related object are now
resilient against the object being detached from its parent
:class:`.Session`, even if the attribute has been expired.  New features
within the :class:`.InstanceState` are used to memoize the last known value
of a particular column attribute before its expired, so that the expression
can still evaluate when the object is detached and expired at the same
time.  Error conditions are also improved using modern attribute state
features to produce more specific messages as needed.

To support the value being mutated while also being resilient towards
expiration, a new feature to InstanceState is added ._last_known_values
which holds onto the expired value when an individual key is expired.
Only takes effect specific to keys and InstanceState objects that
received a special instruction so this does not add to overall
memory/latency.

Fixes: #4359
Change-Id: Iff272e667bf741074549db550bf65348553ca8e7

6 years agoAdd new "all columns" naming convention tokens
Mike Bayer [Mon, 5 Nov 2018 19:52:35 +0000 (14:52 -0500)] 
Add new "all columns" naming convention tokens

Added new naming convention tokens ``column_0N_name``, ``column_0_N_name``,
etc., which will render the names / keys / labels for all columns referenced
by a particular constraint in a sequence.  In order to accommodate for the
length of such a naming convention, the SQL compiler's auto-truncation
feature now applies itself to constraint names as well, which creates a
shortened, deterministically generated name for the constraint that will
apply to a target backend without going over the character limit of that
backend.

Additional notes:

1. the SQLite dialect had a format_index method that was apparently not
used, removed.

2. the naming convention logic has been applying the foreign key
remote column spec to the naming convention, and not the actual
column name.  In the case where the referenced Table object uses
.key inside the columns and these are what ForeignKey() references,
the naming convention was doing the wrong thing.   The patch here
fixes this, however this isn't noted in the migration notes.

Fixes: #3989
Change-Id: Ib24f4754b886676096c480fc54b2e5c2463ac99a

6 years agocherry-pick changelog update for 1.2.15
Mike Bayer [Sat, 10 Nov 2018 20:59:12 +0000 (15:59 -0500)] 
cherry-pick changelog update for 1.2.15

6 years agocherry-pick changelog from 1.2.14
Mike Bayer [Sat, 10 Nov 2018 20:59:12 +0000 (15:59 -0500)] 
cherry-pick changelog from 1.2.14

6 years agoFix typo
Mike Bayer [Sat, 10 Nov 2018 16:26:31 +0000 (11:26 -0500)] 
Fix typo

Change-Id: I411466dc1952cf57f73d1453c73b0ca449842c35

6 years agoUse case insensitive matching on lower_case_table_names=1,2
Mike Bayer [Sat, 10 Nov 2018 04:18:55 +0000 (23:18 -0500)] 
Use case insensitive matching on lower_case_table_names=1,2

Fixed regression caused by :ticket:`4344` released in 1.2.13, where the fix
for MySQL 8.0's case sensitivity problem with referenced column names when
reflecting foreign key referents is worked around using the
``information_schema.columns`` view.  The workaround was failing on OSX /
``lower_case_table_names=2`` which produces non-matching casing for the
``information_schema.columns`` vs. that of ``SHOW CREATE TABLE``, so in
case-insensitive SQL modes case-insensitive matching is now used.

Fixes: #4361
Change-Id: I748549bc4c27fad6394593f8ec93fc22bfd01f6c

6 years agoMerge "Implement SQLite ON CONFLICT for constraints"
mike bayer [Fri, 9 Nov 2018 22:43:20 +0000 (22:43 +0000)] 
Merge "Implement SQLite ON CONFLICT for constraints"

6 years agoImplement SQLite ON CONFLICT for constraints
Denis Kataev [Mon, 12 Mar 2018 15:40:34 +0000 (11:40 -0400)] 
Implement SQLite ON CONFLICT for constraints

Implemented the SQLite ``ON CONFLICT`` clause as understood at the DDL
level, e.g. for primary key, unique, and CHECK constraints as well as
specified on a :class:`.Column` to satisfy inline primary key and NOT NULL.
Pull request courtesy Denis Kataev.

Fixes: #4360
Change-Id: I4cd4bafa8fca41e3101c87dbbfe169741bbda3f4
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/431

6 years agoImprove documentation re: Session.binds and partitioning strategies
Mike Bayer [Tue, 6 Nov 2018 20:13:03 +0000 (15:13 -0500)] 
Improve documentation re: Session.binds and partitioning strategies

Update documentation to include background on arbitrary superclass
usage, add full cross-linking between all related methods and parameters.
De-emphasize "twophase" and document that it is not well-supported
in drivers.

Change-Id: Id99894bb62cc506e896c9aa7c256e9f6e602243e

6 years agoMerge remote-tracking branch 'origin/pr/486'
Mike Bayer [Sat, 3 Nov 2018 16:45:31 +0000 (12:45 -0400)] 
Merge remote-tracking branch 'origin/pr/486'

Change-Id: I90596d4fc238b913146906db0ab700dd767c5615

6 years agoMerge remote-tracking branch 'origin/pr/450'
Mike Bayer [Sat, 3 Nov 2018 16:37:19 +0000 (12:37 -0400)] 
Merge remote-tracking branch 'origin/pr/450'

Change-Id: I50c0dd75199a34f68f9a2fa0f89208a887193969

6 years agoMerge "Deannotate ORM columns in ColumnEntity"
mike bayer [Sat, 3 Nov 2018 16:17:04 +0000 (16:17 +0000)] 
Merge "Deannotate ORM columns in ColumnEntity"

6 years ago- block py.test 3.9.1 and 3.9.2, 3.9.3 is OK
Mike Bayer [Fri, 2 Nov 2018 20:54:21 +0000 (16:54 -0400)] 
- block py.test 3.9.1 and 3.9.2, 3.9.3 is OK

Change-Id: I35ecd78b92ea420ef7909de65f82e005b92bf986

6 years agoDeannotate ORM columns in ColumnEntity
Mike Bayer [Fri, 2 Nov 2018 20:40:59 +0000 (16:40 -0400)] 
Deannotate ORM columns in ColumnEntity

Fixed a minor performance issue which could in some cases add unnecessary
overhead to result fetching, involving the use of ORM columns and entities
that include those same columns at the same time within a query.  The issue
has to do with hash / eq overhead when referring to the column in different
ways.

Fixes: #4347
Change-Id: I191d4d1b1623898060a9accdfd186de16f89a6b7

6 years agoTweak code-style and readability in `events/base.py`
Iwo Herka [Fri, 2 Nov 2018 18:06:25 +0000 (19:06 +0100)] 
Tweak code-style and readability in `events/base.py`

This includes a few low-key, syntax-level tweaks and:

1. Rewrite of the if-statment in `Events._accept_with`.
2. Property name change, i.e. from `dispatcher.dispatch_cls` to
`dispatcher.dispatch`. In this case postfix `_cls` is confusing as
the property is not a class, but an instance of one.

6 years agoAdd new NO_RAISE attribute flag and specify for m2o history load
Mike Bayer [Thu, 1 Nov 2018 15:11:03 +0000 (11:11 -0400)] 
Add new NO_RAISE attribute flag and specify for m2o history load

Added new behavior to the lazy load that takes place when the "old" value of
a many-to-one is retrieved, such that exceptions which would be raised due
to either ``lazy="raise"`` or a detached session error are skipped.

Fixes: #4353
Change-Id: I6c6c77613e93061a909f5062b70b17e8913fc9ee

6 years agoMerge "Implement __delete__"
mike bayer [Fri, 2 Nov 2018 13:21:15 +0000 (13:21 +0000)] 
Merge "Implement __delete__"

6 years agoImplement __delete__
Mike Bayer [Thu, 1 Nov 2018 17:15:14 +0000 (13:15 -0400)] 
Implement __delete__

A long-standing oversight in the ORM, the ``__delete__`` method for a many-
to-one relationship was non-functional, e.g. for an operation such as ``del
a.b``.  This is now implemented and is equivalent to setting the attribute
to ``None``.

Fixes: #4354
Change-Id: I60131a84c007b0bf6f20c5cc5f21a3b96e954046

6 years agoUse attr keys when testing bulk update params for primary key
Mike Bayer [Fri, 2 Nov 2018 01:53:18 +0000 (21:53 -0400)] 
Use attr keys when testing bulk update params for primary key

Fixed bug in :meth:`.Session.bulk_update_mappings` where alternate mapped
attribute names would result in the primary key column of the UPDATE
statement being included in the SET clause, as well as the WHERE clause;
while usually harmless, for SQL Server this can raise an error due to the
IDENTITY column.  This is a continuation of the same bug that was fixed in
:ticket:`.3849`, where testing was insufficient to catch this additional
flaw.

Fixes: #4357
Change-Id: Iead058c0465dfa31c5b8a8780769278b7000acc8

6 years agocherry-pick changelog update for 1.2.14
Mike Bayer [Wed, 31 Oct 2018 20:49:15 +0000 (16:49 -0400)] 
cherry-pick changelog update for 1.2.14

6 years agocherry-pick changelog from 1.2.13
Mike Bayer [Wed, 31 Oct 2018 20:49:14 +0000 (16:49 -0400)] 
cherry-pick changelog from 1.2.13

6 years agoAdd missing index method to _AssociationList.
Chris Macklin [Wed, 31 Oct 2018 13:03:50 +0000 (09:03 -0400)] 
Add missing index method to _AssociationList.

Added missing ``.index()`` method to list-based association collections
in the association proxy extension.

Change-Id: Ice81dc4bcccd520638c5bc9a0f8bb2027946c846
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/485

6 years agoMerge "Move pk on single-inh subclass check below conflict resolution check"
mike bayer [Wed, 31 Oct 2018 15:24:55 +0000 (15:24 +0000)] 
Merge "Move pk on single-inh subclass check below conflict resolution check"

6 years agoMerge "Add reserved word 'function' for MySQL"
mike bayer [Tue, 30 Oct 2018 21:23:49 +0000 (21:23 +0000)] 
Merge "Add reserved word 'function' for MySQL"

6 years agoMove pk on single-inh subclass check below conflict resolution check
Tom Manderson [Tue, 30 Oct 2018 17:05:43 +0000 (13:05 -0400)] 
Move pk on single-inh subclass check below conflict resolution check

The column conflict resolution technique discussed at
:ref:`declarative_column_conflicts` is now functional for a :class:`.Column`
that is also a primary key column.  Previously, a check for primary key
columns declared on a single-inheritance subclass would occur before the
column copy were allowed to pass.

Fixes: #4352
Change-Id: Id4c025da53c28e58db6b549fe398f25f8a90d355
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/483

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

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

6 years agoMerge remote-tracking branch 'origin/pr/478'
Mike Bayer [Tue, 30 Oct 2018 16:53:42 +0000 (12:53 -0400)] 
Merge remote-tracking branch 'origin/pr/478'

Change-Id: I0f27b6426dbfd665edf2a119b1cfaadb54511dd0

6 years agoMerge "Create object- and column-oriented versions of AssociationProxyInstance"
mike bayer [Sat, 27 Oct 2018 18:08:44 +0000 (14:08 -0400)] 
Merge "Create object- and column-oriented versions of AssociationProxyInstance"

6 years agoCreate object- and column-oriented versions of AssociationProxyInstance
Mike Bayer [Tue, 23 Oct 2018 23:38:46 +0000 (19:38 -0400)] 
Create object- and column-oriented versions of AssociationProxyInstance

The :class:`.AssociationProxy` now has standard column comparison operations
such as :meth:`.ColumnOperators.like` and
:meth:`.ColumnOperators.startswith` available when the target attribute is a
plain column - the EXISTS expression that joins to the target table is
rendered as usual, but the column expression is then use within the WHERE
criteria of the EXISTS.  Note that this alters the behavior of the
``.contains()`` method on the association proxy to make use of
:meth:`.ColumnOperators.contains` when used on a column-based attribute.

Fixes: #4351
Change-Id: I310941f4e8f778c200f8144a26a89e5364cd4dfb

6 years agoPin pytest *before* 3.9.1 totally
Mike Bayer [Wed, 24 Oct 2018 13:09:32 +0000 (09:09 -0400)] 
Pin pytest *before* 3.9.1 totally

Unfortunately they have released
3.9.2 before fixing issue 4181, which means we will have to
re-pin a third time after they eventually release with
a fix

Change-Id: I9b6fab1b535f883a035f002264c41ad0166790ab
Reference: https://github.com/pytest-dev/pytest/issues/4181

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

6 years ago- also correct for dbapi is a Mock without __version__...
Mike Bayer [Sat, 20 Oct 2018 21:51:10 +0000 (17:51 -0400)] 
- also correct for dbapi is a Mock without __version__...

Change-Id: I9e6b61a3292a2a6c8bb281c2375f2326282bcb76

6 years agoMerge "Check more specifically for hybrid attr and not mapped property"
mike bayer [Sat, 20 Oct 2018 20:55:01 +0000 (16:55 -0400)] 
Merge "Check more specifically for hybrid attr and not mapped property"

6 years ago- correct for dbapi not present in some tests
Mike Bayer [Sat, 20 Oct 2018 20:04:35 +0000 (16:04 -0400)] 
- correct for dbapi not present in some tests

Change-Id: Iaa81a00658060d40add26c95cc69cee7edd5966a

6 years agoEnable decimal implicit bind for mysqlclient, is fixed as of
Mike Bayer [Sat, 20 Oct 2018 16:32:25 +0000 (12:32 -0400)] 
Enable decimal implicit bind for mysqlclient, is fixed as of
post 1.3.13

Change-Id: Ic7a2055597d06038ab330f1114416e4538964a2b

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

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

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

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