Mike Bayer [Sun, 27 Mar 2011 00:44:47 +0000 (20:44 -0400)]
- move _fixtures to work via the normal methods of _base.MappedTest, convert
all referncing tests to not use globals
- tests that deal with pickle specifically load the fixture classes
from test.lib.pickleable, which gets some more classes added
- removed weird sa05 pickling tests that don't matter
Mike Bayer [Sat, 26 Mar 2011 23:03:11 +0000 (19:03 -0400)]
- remove @testing.resolve_artifact_names, replace with direct attribute
access to the cls/self.tables/classes registries
- express orm/_base.py ORMTest in terms of engine/_base.py TablesTest,
factor out common steps into TablesTest, remove AltEngineTest as a
separate class. will further consolidate these base classes
Mike Bayer [Sat, 26 Mar 2011 15:53:07 +0000 (11:53 -0400)]
- changes to CHANGES
- The "-declarative" changes will now be listed
directly under the "-orm" section, as these
are closely related.
- The 0.5 series changes have been moved to
the file CHANGES_PRE_06 which replaces
CHANGES_PRE_05.
- The changelog for 0.6.7 and subsequent within
the 0.6 series is now listed only in the
CHANGES file within the 0.6 branch.
In the 0.7 CHANGES file all the
0.6 changes are listed inline within the 0.7
section in which they were also applied
(since all 0.6 changes are in 0.7 as well).
Changes that apply to an 0.6 version here
are noted as are if any differences in
implementation/behavior are present.
Mike Bayer [Wed, 23 Mar 2011 21:38:54 +0000 (17:38 -0400)]
- adjust the previous checkin a bit. need to transfer sequences over from pickle
even if they are *not* restated. its necessary here to do a "replacement"
scheme when an incoming sequence replaces the previous. Theoretically
we could do what Table does here, i.e. use a singleton constructor, but
this is heavyhanded. The most recent sequence placed in is the winner
is likely the most expected behavior.
Mike Bayer [Wed, 23 Mar 2011 21:25:57 +0000 (17:25 -0400)]
- Fixed regression whereby MetaData() coming
back from unpickling did not keep track of
new things it keeps track of now, i.e.
collection of Sequence objects, list
of schema names. [ticket:2104]
Mike Bayer [Wed, 23 Mar 2011 03:39:05 +0000 (23:39 -0400)]
- Fixed bug in QueuePool, SingletonThreadPool whereby
connections that were discarded via overflow or periodic
cleanup() were not explicitly closed, leaving garbage
collection to the task instead. This generally only
affects non-reference-counting backends like Jython
and Pypy. Thanks to Jaimy Azle for spotting
this. [ticket:2102]
Mike Bayer [Mon, 21 Mar 2011 15:49:43 +0000 (11:49 -0400)]
- Restored the "catchall" constructor on the base
TypeEngine class, with a deprecation warning.
This so that code which does something like
Integer(11) still succeeds.
Mike Bayer [Sun, 20 Mar 2011 18:00:16 +0000 (14:00 -0400)]
- add attrstrings for all the important mapper() attrbutes, [ticket:2094].
Sticking with quotes here since that's what's used everywhere else.
- rename "API Documentation - XYZ" to "XYZ API".
- move connection API docs to the bottom of that section. still
floating between separate API sections vs. inline API sections, not
sure how to be consistent.
- fix outdated paragraph about derived_attrbutes
- other target function fixes
Mike Bayer [Sun, 20 Mar 2011 16:49:28 +0000 (12:49 -0400)]
- Added new generic function "next_value()", accepts
a Sequence object as its argument and renders the
appropriate "next value" generation string on the
target platform, if supported. Also provides
".next_value()" method on Sequence itself.
[ticket:2085]
- added tests for all the conditions described
in [ticket:2085]
- postgresql dialect will exec/compile a Sequence
that has "optional=True". the optional flag is now only
checked specifically in the context of a Table primary key
evaulation.
- func.next_value() or other SQL expression can
be embedded directly into an insert() construct,
and if implicit or explicit "returning" is used
in conjunction with a primary key column,
the newly generated value will be present in
result.inserted_primary_key. [ticket:2084]
Mike Bayer [Fri, 18 Mar 2011 01:13:14 +0000 (21:13 -0400)]
- some doc reorg
- change engine.Connection to _connection_cls so sphinx doesn't get upset
- globally add "." to all :class:`Foo`
- start naming sections that are mostly docstrings "API Documentation - blah blah"
- move some ad-hoc docstrings into "API" sections, there is some inconsistency here
and it may be that we just have to leave it that way
- add "internals" rsts to core, orm, I'm not super thrilled how these look but they are
targeted by some of the public api docs, users typically become aware of these anyway
Mike Bayer [Thu, 17 Mar 2011 20:22:25 +0000 (16:22 -0400)]
- Fixed bug in query.options() whereby a path
applied to a lazyload using string keys could
overlap a same named attribute on the wrong
entity. Note 0.6 has a more conservative fix
to this. [ticket:2098]
Mike Bayer [Wed, 16 Mar 2011 22:15:27 +0000 (18:15 -0400)]
- Fixed AssertionPool regression bug. A replacement of finalize
logic did the wrong thing, but then also the logic it replaced also
doesn't seem like its needed. If it is, would rather have a test case
first so its out for now, added tests for assertionpool. [ticket:2097]
Mike Bayer [Wed, 16 Mar 2011 18:06:33 +0000 (14:06 -0400)]
- Rewrote the query used to get the definition of a view,
typically when using the Inspector interface, to
use sys.sql_modules instead of the information schema,
thereby allowing views definitions longer than 4000
characters to be fully returned. [ticket:2071]
Mike Bayer [Wed, 16 Mar 2011 16:43:22 +0000 (12:43 -0400)]
- The horizontal_shard ShardedSession class accepts the common
Session argument "query_cls" as a constructor argument,
to enable further subclassing of ShardedQuery.
[ticket:2090]
- The Beaker caching example allows a "query_cls" argument
to the query_callable() function. [ticket:2090]
Mike Bayer [Wed, 16 Mar 2011 16:30:13 +0000 (12:30 -0400)]
- Improvements to the error messages emitted when
querying against column-only entities in conjunction
with (typically incorrectly) using loader options,
where the parent entity is not fully present.
[ticket:2069]
Mike Bayer [Sun, 13 Mar 2011 17:59:00 +0000 (13:59 -0400)]
- Updated the association, association proxy examples
to use declarative, added a new example
dict_of_sets_with_default.py, a "pushing the envelope"
example of association proxy.
That is, "select count(1) from (<full query>)".
This produces a subquery in all cases, but
vastly simplifies all the guessing count()
tried to do previously, which would still
fail in many scenarios particularly when
joined table inheritance and other joins
were involved. If the subquery produced
for an otherwise very simple count is really
an issue, use query(func.count()) as an
optimization. [ticket:2093]
Mike Bayer [Sun, 6 Mar 2011 20:37:18 +0000 (15:37 -0500)]
- A tweak to the unit of work causes it to order
the flush along relationship() dependencies even if
the given objects don't have any inter-attribute
references in memory, which was the behavior in
0.5 and earlier, so a flush of Parent/Child with
only foreign key/primary key set will succeed.
This while still maintaining 0.6 and above's not
generating a ton of useless internal dependency
structures within the flush that don't correspond
to state actually within the current flush.
[ticket:2082]
Mike Bayer [Sat, 5 Mar 2011 01:52:22 +0000 (20:52 -0500)]
- some changes to the identity map regarding
rare weakref callbacks during iterations.
The mutex has been removed as it apparently
can cause a reentrant (i.e. in one thread) deadlock,
perhaps when gc collects objects at the point of
iteration in order to gain more memory. It is hoped
that "dictionary changed during iteration" will
be exceedingly rare as iteration methods internally
acquire the full list of objects in a single values()
call. [ticket:2087]
Mike Bayer [Mon, 28 Feb 2011 17:47:04 +0000 (12:47 -0500)]
- Added a fully descriptive error message for the
case where Column is subclassed and _make_proxy()
fails to make a copy due to TypeError on the
constructor. The method _constructor should
be implemented in this case.
Mike Bayer [Fri, 25 Feb 2011 18:20:43 +0000 (13:20 -0500)]
- establish an "insert" option for events to control ordering if needed (not needed yet tho)
- render foreign key constraints in the order in which they were cerated
Mike Bayer [Fri, 18 Feb 2011 01:43:17 +0000 (20:43 -0500)]
- Fixed regression from 0.6 where SMALLINT and
BIGINT types would both generate SERIAL
on an integer PK column, instead of
SMALLINT and BIGSERIAL [ticket:2065]
Mike Bayer [Fri, 18 Feb 2011 01:27:35 +0000 (20:27 -0500)]
- The Column.references() method now returns True
if it has a foreign key referencing the
given column exactly, not just it's parent
table. [ticket:2064]
Mike Bayer [Fri, 18 Feb 2011 00:59:45 +0000 (19:59 -0500)]
- rename EngineEvents to ConnectionEvents
- simplify connection event model to be inline inside Connection, don't use ad-hoc
subclasses (technically would leak memory for the app that keeps creating engines
and adding events)
- not doing listen-per-connection yet. this is closer. overall things
are much simpler now (until we put listen-per-connection in...)
Mike Bayer [Mon, 14 Feb 2011 17:51:53 +0000 (12:51 -0500)]
- Fixed regression whereby composite() with
Column objects placed inline would fail
to initialize. The Column objects can now
be inline with the composite() or external
and pulled in via name or object ref.
[ticket:2058]
Mike Bayer [Mon, 14 Feb 2011 03:30:00 +0000 (22:30 -0500)]
- Beaker example now takes into account 'limit'
and 'offset', bind params within embedded
FROM clauses (like when you use union() or
from_self()) when generating a cache key.
Mike Bayer [Mon, 14 Feb 2011 01:20:34 +0000 (20:20 -0500)]
- Association proxy now has correct behavior for
any(), has(), and contains() when proxying
a many-to-one scalar attribute to a one-to-many
collection (i.e. the reverse of the 'typical'
association proxy use case) [ticket:2054]
Mike Bayer [Mon, 14 Feb 2011 00:32:00 +0000 (19:32 -0500)]
- The Sequence() construct, when passed a MetaData()
object via its 'metadata' argument, will be
included in CREATE/DROP statements within
metadata.create_all() and metadata.drop_all(),
including "checkfirst" logic. [ticket:2055]
Mike Bayer [Sun, 13 Feb 2011 03:20:47 +0000 (22:20 -0500)]
- Fixed bug whereby Session.merge() would call the
load() event with one too few arguments.
[ticket:2053]
- Added logic which prevents the generation of
events from a MapperExtension or SessionExtension
from generating do-nothing events for all the methods
not overridden. [ticket:2052]
Mike Bayer [Sat, 12 Feb 2011 23:00:45 +0000 (18:00 -0500)]
- remove some remaining sys.modules shenanigans
- The "sqlalchemy.exceptions" alias in sys.modules
has been removed. Base SQLA exceptions are
available via "from sqlalchemy import exc".
The "exceptions" alias for "exc" remains in
"sqlalchemy" for now, it's just not patched into
sys.modules.
Mike Bayer [Fri, 11 Feb 2011 22:58:49 +0000 (17:58 -0500)]
- fix long lines in test_attributes
- add deprecation warning to get_history() when passed
True or False, convert
- rearrange symbol() so we can get sphinx autodata to work
Mike Bayer [Fri, 11 Feb 2011 20:37:44 +0000 (15:37 -0500)]
- replace all usage of True and False for passive with PASSIVE_NO_INITIALIZE,
PASSIVE_OFF, now expresed as non-boolean symbols
- make "passive" available positionally on all get_history() methods,
call it like that
Mike Bayer [Fri, 11 Feb 2011 19:41:29 +0000 (14:41 -0500)]
- Additional tuning to "many-to-one" relationship
loads during a flush(). A change in version 0.6.6
([ticket:2002]) required that more "unnecessary" m2o
loads during a flush could occur. Extra loading modes have
been added so that the SQL emitted in this
specific use case is trimmed back, while still
retrieving the information the flush needs in order
to not miss anything. [ticket:2049]