Carlos Rivas [Sat, 23 Jan 2016 09:23:46 +0000 (09:23 +0000)]
Removed entry that causes AttributeError (#3621) - Oracle zxJDBC fails with AttributeError in object OracleCompiler_zxjdbc
(cherry picked from commit edc0b8678bc06ae27fa0f7e80c3eb074978fbe10)
Mike Bayer [Tue, 2 Feb 2016 17:07:39 +0000 (12:07 -0500)]
- D rules seem to have been added overnight to the flake8 plugin
I'm using and many of these seem contradictory and/or undesirable.
block all until individual rules can be approved.
Mike Bayer [Tue, 2 Feb 2016 15:15:40 +0000 (10:15 -0500)]
- Fixed issue where inadvertent use of the Python ``__contains__``
override with a column expression (e.g. by using ``'x' in col``)
would cause an endless loop in the case of an ARRAY type, as Python
defers this to ``__getitem__`` access which never raises for this
type. Overall, all use of ``__contains__`` now raises
NotImplementedError.
fixes #3642
Mike Bayer [Thu, 28 Jan 2016 20:01:31 +0000 (15:01 -0500)]
- revert the change first made in a6fe4dc, as we are now generalizing
the warning here to all safe_reraise() cases in Python 2.
- Revisiting :ticket:`2696`, first released in 1.0.10, which attempts to
work around Python 2's lack of exception context reporting by emitting
a warning for an exception that was interrupted by a second exception
when attempting to roll back the already-failed transaction; this
issue continues to occur for MySQL backends in conjunction with a
savepoint that gets unexpectedly lost, which then causes a
"no such savepoint" error when the rollback is attempted, obscuring
what the original condition was.
The approach has been generalized to the Core "safe
reraise" function which takes place across the ORM and Core in any
place that a transaction is being rolled back in response to an error
which occurred trying to commit, including the context managers
provided by :class:`.Session` and :class:`.Connection`, and taking
place for operations such as a failure on "RELEASE SAVEPOINT".
Previously, the fix was only in place for a specific path within
the ORM flush/commit process; it now takes place for all transational
context managers as well.
fixes #2696
Mike Bayer [Tue, 26 Jan 2016 22:28:40 +0000 (17:28 -0500)]
- unfortunately we need to match within join where col.key does not match
what's given so we need to use a set() here. contains_column is not within
any performance paths
Mike Bayer [Tue, 26 Jan 2016 21:41:26 +0000 (16:41 -0500)]
- rework ColumnCollection to no longer persist "all_col_set"; we don't
need this collection except in the extend/update uses where we
create it ad-hoc. simplifies pickling. Compatibility with 1.0
should be OK as ColumnColleciton uses __getstate__ in any case
and the __setstate__ contract hasn't changed.
- Fixed bug in :class:`.Table` metadata construct which appeared
around the 0.9 series where adding columns to a :class:`.Table`
that was unpickled would fail to correctly establish the
:class:`.Column` within the 'c' collection, leading to issues in
areas such as ORM configuration. This could impact use cases such
as ``extend_existing`` and others. fixes #3632
Mike Bayer [Thu, 21 Jan 2016 20:21:33 +0000 (15:21 -0500)]
- documenation updates to clarify specific SQLite versions
that have problems with right-nested joins and UNION column keys;
references #3633 references #3634. backport from 1.1 to 0.9
announcing 1.1 as where these behaviors will be retired based
on version-specific checks
- fix test_resultset so that it passes when SQLite 3.10.0 is
present, references #3633
Mike Bayer [Mon, 18 Jan 2016 22:35:44 +0000 (17:35 -0500)]
- Fixed bug where some exception re-raise scenarios would attach
the exception to itself as the "cause"; while the Python 3 interpreter
is OK with this, it could cause endless loops in iPython.
fixes #3625
- add tests for reraise, raise_from_cause
- raise_from_cause is the same on py2k/3k, use just one function
Mike Bayer [Thu, 14 Jan 2016 22:18:21 +0000 (17:18 -0500)]
- fix some old verbiage that refers to text() as an "implicit" thing
for SQL fragments; we've deprecated that in 1.0 and its a good idea
to document like this for 0.9 as well.
Mike Bayer [Sun, 10 Jan 2016 16:48:53 +0000 (11:48 -0500)]
- fix link to types in metadata, fixes #3618
- fix "version" got whacked into "f" in core tutorial
- fix short underline in automap
- fix unmatched boldface in session events
Mike Bayer [Sat, 9 Jan 2016 15:10:20 +0000 (10:10 -0500)]
- Fixed regression since 0.9 where the 0.9 style loader options
system failed to accommodate for multiple :func:`.undefer_group`
loader options in a single query. Multiple :func:`.undefer_group`
options will now be taken into account even against the same
entity. fixes #3623
Mike Bayer [Tue, 5 Jan 2016 20:12:56 +0000 (15:12 -0500)]
- dont forwards-report tons of 1.0.x changes in the unreleased 1.1;
only when a 1.1.x is released would we want to capture what's still
sitting in a 1.0.x changelog
Mike Bayer [Tue, 5 Jan 2016 15:25:36 +0000 (10:25 -0500)]
- Fixed 1.0 regression where the eager fetch of cursor.rowcount was
no longer called for an UPDATE or DELETE statement emitted via plain
text or via the :func:`.text` construct, affecting those drivers
that erase cursor.rowcount once the cursor is closed such as SQL
Server ODBC and Firebird drivers.
fixes #3622
Mike Bayer [Tue, 22 Dec 2015 17:04:45 +0000 (12:04 -0500)]
- An adjustment to the regular expression used to parse MySQL views,
such that we no longer assume the "ALGORITHM" keyword is present in
the reflected view source, as some users have reported this not being
present in some Amazon RDS environments.
fixes #3613
Mike Bayer [Wed, 16 Dec 2015 02:44:00 +0000 (21:44 -0500)]
- Fixed bug in baked loader system where the systemwide monkeypatch
for setting up baked lazy loaders would interfere with other
loader strategies that rely on lazy loading as a fallback, e.g.
joined and subquery eager loaders, leading to ``IndexError``
exceptions at mapper configuration time.
fixes #3612
Mike Bayer [Tue, 15 Dec 2015 19:00:50 +0000 (14:00 -0500)]
- Fixed regression caused in 1.0.10 by the fix for :ticket:`3593` where
the check added for a polymorphic joinedload from a
poly_subclass->class->poly_baseclass connection would fail for the
scenario of class->poly_subclass->class.
fixes #3611
Mike Bayer [Mon, 14 Dec 2015 23:01:32 +0000 (18:01 -0500)]
- a few tweaks to allow "server_defaults" to be a little more linkable;
remove "undoc members" that was putting some random server_default
atributes from ColumnClause
Mike Bayer [Mon, 14 Dec 2015 22:53:56 +0000 (17:53 -0500)]
- since we are mutating the statement in a loop, start with
the same cached starting statement each time. no issue has been observed
with the former but it could perhaps have issues w/ versioning
or eager_defaults
Mike Bayer [Mon, 14 Dec 2015 22:39:50 +0000 (17:39 -0500)]
- Fixed bug where :meth:`.Session.bulk_update_mappings` and related
would not bump a version id counter when in use. The experience
here is still a little rough as the original version id is required
in the given dictionaries and there's not clean error reporting
on that yet.
fixes #3610
Mike Bayer [Mon, 14 Dec 2015 22:24:47 +0000 (17:24 -0500)]
- Fixed bug in :meth:`.Update.return_defaults` which would cause all
insert-default holding columns not otherwise included in the SET
clause (such as primary key cols) to get rendered into the RETURNING
even though this is an UPDATE.
- Major fixes to the :paramref:`.Mapper.eager_defaults` flag, this
flag would not be honored correctly in the case that multiple
UPDATE statements were to be emitted, either as part of a flush
or a bulk update operation. Additionally, RETURNING
would be emitted unnecessarily within update statements.
Mike Bayer [Sun, 13 Dec 2015 02:07:25 +0000 (21:07 -0500)]
- Fixed bug where use of the :meth:`.Query.select_from` method would
cause a subsequent call to the :meth:`.Query.with_parent` method to
fail. fixes #3606
- add mark-as-fail test for #3607
Mike Bayer [Thu, 10 Dec 2015 23:27:14 +0000 (18:27 -0500)]
- convert ORM tutorial and basic_relationships to favor
back_populates while still maintaining great familiarity
w/ backref so as not to confuse people. fixes #3390
Mike Bayer [Thu, 10 Dec 2015 22:09:47 +0000 (17:09 -0500)]
- The ORM and Core tutorials, which have always been in doctest format,
are now exercised within the normal unit test suite in both Python
2 and Python 3.
- remove the old testdocs.py runner and replace with test/base/test_tutorials.py
- use pytest's unicode fixer so that we can test for unicode strings
in both py2k/3k
- use py3k format overall for prints, exceptions
- add other fixers to guarantee deterministic results
- add skips and ellipses to outputs that aren't worth matching
Mike Bayer [Wed, 9 Dec 2015 23:15:25 +0000 (18:15 -0500)]
- Fixed issue within the :meth:`.Insert.from_select` construct whereby
the :class:`.Select` construct would have its ``._raw_columns``
collection mutated in-place when compiling the :class:`.Insert`
construct, when the target :class:`.Table` has Python-side defaults.
The :class:`.Select` construct would compile standalone with the
erroneous column present subsequent to compilation of the
:class:`.Insert`, and the the :class:`.Insert` statement itself would
fail on a second compile attempt due to duplicate bound parameters.
fixes #3603
Mike Bayer [Mon, 7 Dec 2015 22:24:09 +0000 (17:24 -0500)]
- Fixed bug in MySQL reflection where the "fractional sections portion"
of the :class:`.mysql.DATETIME`, :class:`.mysql.TIMESTAMP` and
:class:`.mysql.TIME` types would be incorrectly placed into the
``timestamp`` attribute, which is unused by MySQL, instead of the
``fsp`` attribute.
fixes #3602
Mike Bayer [Mon, 7 Dec 2015 17:36:36 +0000 (12:36 -0500)]
- write a real inline documentation section for from_self(),
building on the example of query.join(). Ideally all the methods
in Query would have this kind of thing. fixes #3544
Mike Bayer [Wed, 2 Dec 2015 17:13:57 +0000 (12:13 -0500)]
- Fixed issue where post_update on a many-to-one relationship would
fail to emit an UPDATE in the case where the attribute were set to
None and not previously loaded.
fixes #3599
Mike Bayer [Wed, 2 Dec 2015 00:03:03 +0000 (19:03 -0500)]
- Fixed bug where CREATE TABLE with a no-column table, but a constraint
such as a CHECK constraint would render an erroneous comma in the
definition; this scenario can occur such as with a Postgresql
INHERITS table that has no columns of its own.
fixes #3598
Mike Bayer [Mon, 30 Nov 2015 18:15:40 +0000 (13:15 -0500)]
- Added the error "20006: Write to the server failed" to the list
of disconnect errors for the pymssql driver, as this has been observed
to render a connection unusable.
fixes #3585
Nils Philippsen [Mon, 9 Nov 2015 13:50:23 +0000 (14:50 +0100)]
py2k: accept unicode literals on :func:`backref`, too
Fixed bug where in Py2K a unicode literal would not be accepted as the
string name of a class or other argument within declarative using
:func:`.backref` on :func:`.relationship`.
pgjones [Fri, 30 Oct 2015 20:20:58 +0000 (20:20 +0000)]
Change generator termination from StopIteration to return.
From [PEP 479](https://www.python.org/dev/peps/pep-0479/) the correct way to
terminate a generator is to return (which implicitly raises StopIteration)
rather than raise StopIteration.
Without this change using sqlalchemy in python 3.5 or greater results in
these warnings
PendingDeprecationWarning: generator '__iter__' raised StopIteration
which this commit should remove.
Mike Bayer [Mon, 30 Nov 2015 17:19:26 +0000 (12:19 -0500)]
- A descriptive ValueError is now raised in the event that SQL server
returns an invalid date or time format from a DATE or TIME
column, rather than failing with a NoneType error. Pull request
courtesy Ed Avis.
pullreq github:206
Mike Bayer [Sun, 29 Nov 2015 16:42:55 +0000 (11:42 -0500)]
- Fixed an issue in baked queries where the .get() method, used either
directly or within lazy loads, didn't consider the mapper's "get clause"
as part of the cache key, causing bound parameter mismatches if the
clause got re-generated. This clause is cached by mappers
on the fly but in highly concurrent scenarios may be generated more
than once when first accessed.
fixes #3597
Mike Bayer [Sat, 28 Nov 2015 19:30:05 +0000 (14:30 -0500)]
- Added support for parameter-ordered SET clauses in an UPDATE
statement. This feature is available by passing the
:paramref:`~.sqlalchemy.sql.expression.update.preserve_parameter_order`
flag either to the core :class:`.Update` construct or alternatively
adding it to the :paramref:`.Query.update.update_args` dictionary at
the ORM-level, also passing the parameters themselves as a list of 2-tuples.
Thanks to Gorka Eguileor for implementation and tests.
adapted from pullreq github:200