Mike Bayer [Fri, 28 Aug 2015 03:38:14 +0000 (23:38 -0400)]
- use consistent and descriptive language in all cases
where we refer to the "weak_identity_map" option, and add additional
exposition in the session documentation which refers to it.
fixes #3517
Mike Bayer [Thu, 27 Aug 2015 19:56:00 +0000 (15:56 -0400)]
- reword and update documentation on passive_updates=False; as virtually
all DBs now support ON UPDATE CASCADE other than Oracle, there's no need
to try to reimplement more functionality here and users should be encouraged
to forego natural PKs unless their target platform supports them.
references #2666
Mike Bayer [Fri, 21 Aug 2015 20:36:15 +0000 (16:36 -0400)]
- rework the "controlling DDL sequences" documentation to
refer mostly to the DDL object; this system is primarily useful
in that case, and not for built-in objects. Reference that
the built-in case is not really viable right now. References #3442.
Mike Bayer [Fri, 14 Aug 2015 19:34:01 +0000 (15:34 -0400)]
- add tests for InstanceEvents.init, InstanceEvents.init_failure
- ensure that kwargs can be modified in-place within InstanceEvents.init
and that these take effect for the __init__ method.
- improve documentation for these and related events, including
that kwargs can be modified in-place.
Mike Bayer [Wed, 29 Jul 2015 21:40:47 +0000 (17:40 -0400)]
- Fixed support for cx_Oracle version 5.2, which was tripping
up SQLAlchemy's version detection under Python 3 and inadvertently
not using the correct unicode mode for Python 3. This would cause
issues such as bound variables mis-interpreted as NULL and rows
silently not being returned.
fixes #3491
Mike Bayer [Wed, 22 Jul 2015 21:59:34 +0000 (17:59 -0400)]
- Fixed critical issue whereby the pool "checkout" event handler
may be called against a stale connection without the "connect"
event handler having been called, in the case where the pool
attempted to reconnect after being invalidated and failed; the stale
connection would remain present and would be used on a subsequent
attempt. This issue has a greater impact in the 1.0 series subsequent
to 1.0.2, as it also delivers a blanked-out ``.info`` dictionary to
the event handler; prior to 1.0.2 the ``.info`` dictionary is still
the previous one.
fixes #3497
Mike Bayer [Tue, 21 Jul 2015 16:33:35 +0000 (12:33 -0400)]
- Fixed bug in SQLite dialect where reflection of UNIQUE constraints
that included non-alphabetic characters in the names, like dots or
spaces, would not be reflected with their name.
fixes #3495
Mike Bayer [Thu, 9 Jul 2015 00:37:04 +0000 (20:37 -0400)]
- try to note under insert.values(), if you need
"multiple parameter sets" there is a much more common case
which works equally well for INSERT/UPDATE/DELETE e.g.
executemany(). reference #3476
Mike Bayer [Sun, 5 Jul 2015 15:16:26 +0000 (11:16 -0400)]
- add a warning suggesting to use the dictionary form of access
if the name of the attribute being accessed is non-specific,
thereby avoiding collisions on names like items, values, keys.
fixes #3475
Mike Bayer [Fri, 8 May 2015 16:37:55 +0000 (12:37 -0400)]
- Added official support for a CTE used by the SELECT present
inside of :meth:`.Insert.from_select`. This behavior worked
accidentally up until 0.9.9, when it no longer worked due to
unrelated changes as part of :ticket:`3248`. Note that this
is the rendering of the WITH clause after the INSERT, before the
SELECT; the full functionality of CTEs rendered at the top
level of INSERT, UPDATE, DELETE is a new feature targeted for a
later release.
fixes #3418
Mike Bayer [Fri, 1 May 2015 16:06:34 +0000 (12:06 -0400)]
- Repair _reinstall_default_lookups to also flip the _extended flag
off again so that test fixtures setup/teardown instrumentation as
expected
- clean up test_extendedattr.py and fix it to no longer leak
itself outside by ensuring _reinstall_default_lookups is always called,
part of #3408
- Fixed bug where when using extended attribute instrumentation system,
the correct exception would not be raised when :func:`.class_mapper`
were called with an invalid input that also happened to not
be weak referencable, such as an integer.
fixes #3408
Mike Bayer [Fri, 1 May 2015 13:20:10 +0000 (09:20 -0400)]
- Repaired / added to tests yet more expressions that were reported
as failing with the new 'entity' key value added to
:attr:`.Query.column_descriptions`, the logic to discover the "from"
clause is again reworked to accommodate columns from aliased classes,
as well as to report the correct value for the "aliased" flag in these
cases.
fixes #3409
Mike Bayer [Fri, 1 May 2015 01:26:48 +0000 (21:26 -0400)]
- Fixed regression from 0.9.10 prior to release due to :ticket:`3349`
where the check for query state on :meth:`.Query.update` or
:meth:`.Query.delete` compared the empty tuple to itself using ``is``,
which fails on Pypy to produce ``True`` in this case; this would
erronously emit a warning in 0.9 and raise an exception in 1.0.
fixes #3405
Mike Bayer [Thu, 30 Apr 2015 16:53:27 +0000 (12:53 -0400)]
- Fixed regression from as yet unreleased 0.9.10 where the new addition
of ``entity`` to the :attr:`.Query.column_descriptions` accessor
would fail if the target entity was produced from a core selectable
such as a :class:`.Table` or :class:`.CTE` object.
fixes #3403 references #3320
Mike Bayer [Tue, 21 Apr 2015 14:04:02 +0000 (10:04 -0400)]
- Added the string value ``"none"`` to those accepted by the
:paramref:`.Pool.reset_on_return` parameter as a synonym for ``None``,
so that string values can be used for all settings, allowing
.ini file utilities like :func:`.engine_from_config` to be usable
without issue.
fixes #3375
Mike Bayer [Fri, 10 Apr 2015 15:20:14 +0000 (11:20 -0400)]
- Fixed issue where a :class:`.MetaData` object that used a naming
convention would not properly work with pickle. The attribute was
skipped leading to inconsistencies and failures if the unpickled
:class:`.MetaData` object were used to base additional tables
from.
fixes #3362
Mike Bayer [Sat, 4 Apr 2015 16:02:51 +0000 (12:02 -0400)]
- Fixed a long-standing bug where the :class:`.Enum` type as used
with the psycopg2 dialect in conjunction with non-ascii values
and ``native_enum=False`` would fail to decode return results properly.
This stemmed from when the PG :class:`.postgresql.ENUM` type used
to be a standalone type without a "non native" option.
fixes #3354
cherry pick from ecd7b31d5eaed138e699293719f70260da3c978d
Mike Bayer [Thu, 2 Apr 2015 16:19:15 +0000 (12:19 -0400)]
- Fixed bug where the state tracking within multiple, nested
:meth:`.Session.begin_nested` operations would fail to propagate
the "dirty" flag for an object that had been updated within
the inner savepoint, such that if the enclosing savepoint were
rolled back, the object would not be part of the state that was
expired and therefore reverted to its database state.
fixes #3352
Mike Bayer [Wed, 1 Apr 2015 23:29:09 +0000 (19:29 -0400)]
- :class:`.Query` doesn't support joins, subselects, or special
FROM clauses when using the :meth:`.Query.update` or
:meth:`.Query.delete` methods; instead of silently ignoring these
fields if methods like :meth:`.Query.join` or
:meth:`.Query.select_from` has been called, a warning
is emitted. In 1.0.0b5 this will raise an error.
Partial cherry pick from 5302bcebb8e18fdad7448ffb60d2a2017eab26c8.
fixes #3349
- don't realy need _no_select_modifiers anymore
Mike Bayer [Sun, 22 Mar 2015 23:05:22 +0000 (19:05 -0400)]
- Fixed unicode support for PyMySQL when using an "executemany"
operation with unicode parameters. SQLAlchemy now passes both
the statement as well as the bound parameters as unicode
objects, as PyMySQL generally uses string interpolation
internally to produce the final statement, and in the case of
executemany does the "encode" step only on the final statement.
fixes #3337
Mike Bayer [Thu, 12 Mar 2015 14:14:52 +0000 (10:14 -0400)]
- try to document how to get columns from constraints.
unfortunately Sphinx refuses to work correctly for the columns
attribute so we just add a lame message to contains_column().
Mike Bayer [Wed, 11 Mar 2015 18:46:52 +0000 (14:46 -0400)]
- Added a new entry ``"entity"`` to the dictionaries returned by
:attr:`.Query.column_descriptions`. This refers to the primary ORM
mapped class or aliased class that is referred to by the expression.
Compared to the existing entry for ``"type"``, it will always be
a mapped entity, even if extracted from a column expression, or
None if the given expression is a pure core expression.
references #3320