Mike Bayer [Thu, 11 Dec 2008 17:27:33 +0000 (17:27 +0000)]
- PickleType now favors == comparison by default,
if the incoming object (such as a dict) implements
__eq__(). If the object does not implement
__eq__() and mutable=True, a deprecation warning
is raised.
Mike Bayer [Wed, 10 Dec 2008 02:16:52 +0000 (02:16 +0000)]
- reworked the "SQL assertion" code to something more flexible and based off of ConnectionProxy. upcoming changes to dependency.py
will make use of the enhanced flexibility.
Mike Bayer [Mon, 8 Dec 2008 21:32:29 +0000 (21:32 +0000)]
- restored the previous API Reference structure
- bumped latex TOC structure, the PDF looks great
- but we need to fix the translate_connect_args docstring bug to really have PDF
Mike Bayer [Sun, 7 Dec 2008 23:58:02 +0000 (23:58 +0000)]
- moved index.rst around to have the API docs right there, no "Main Documentation" chapter which is fairly needless. this all allows PDF to have a decent TOC on the side with only two levels (can we change that ?)
- added LatexFormatter.
- PDF wont work until issue with the docstirng in url.py/URL.translate_connect_args is fixed.
Mike Bayer [Sun, 7 Dec 2008 06:30:00 +0000 (06:30 +0000)]
- re-documented Table and Column constructors, fixed case sensitivity description [ticket:1231]
- turned on autoclass_content="both". Need to specify __init__ docstring with a newline after the """.
- other docs
Mike Bayer [Sat, 6 Dec 2008 23:47:21 +0000 (23:47 +0000)]
- removed creepy exec call for now
- removed unnecessary isinstance() from class_mapper()
- removed unnecessary and py3k incompatible "dictionary sort" from association table delete
Mike Bayer [Sat, 6 Dec 2008 16:59:48 +0000 (16:59 +0000)]
- merged -r5338:5429 of sphinx branch.
- Documentation has been converted to Sphinx.
In particular, the generated API documentation
has been constructed into a full blown
"API Reference" section which organizes
editorial documentation combined with
generated docstrings. Cross linking between
sections and API docs are vastly improved,
a javascript-powered search feature is
provided, and a full index of all
classes, functions and members is provided.
Mike Bayer [Sat, 6 Dec 2008 00:14:50 +0000 (00:14 +0000)]
- union() and union_all() will not whack
any order_by() that has been applied to the
select()s inside. If you union() a
select() with order_by() (presumably to support
LIMIT/OFFSET), you should also call self_group()
on it to apply parenthesis.
Mike Bayer [Fri, 5 Dec 2008 14:46:27 +0000 (14:46 +0000)]
- Adjusted the format of create_xid() to repair
two-phase commit. We now have field reports
of Oracle two-phase commit working properly
with this change.
Mike Bayer [Wed, 3 Dec 2008 21:27:04 +0000 (21:27 +0000)]
- Query.with_polymorphic() now accepts a third
argument "discriminator" which will replace
the value of mapper.polymorphic_on for that
query. Mappers themselves no longer require
polymorphic_on to be set, even if the mapper
has a polymorphic_identity. When not set,
the mapper will load non-polymorphically
by default. Together, these two features allow
a non-polymorphic concrete inheritance setup
to use polymorphic loading on a per-query basis,
since concrete setups are prone to many
issues when used polymorphically in all cases.
Mike Bayer [Wed, 3 Dec 2008 17:28:36 +0000 (17:28 +0000)]
- Two fixes to help prevent out-of-band columns from
being rendered in polymorphic_union inheritance
scenarios (which then causes extra tables to be
rendered in the FROM clause causing cartesian
products):
- improvements to "column adaption" for
a->b->c inheritance situations to better
locate columns that are related to one
another via multiple levels of indirection,
rather than rendering the non-adapted
column.
- the "polymorphic discriminator" column is
only rendered for the actual mapper being
queried against. The column won't be
"pulled in" from a subclass or superclass
mapper since it's not needed.
Mike Bayer [Wed, 3 Dec 2008 06:23:55 +0000 (06:23 +0000)]
- Fixed bug introduced in 0.5rc4 involving eager
loading not functioning for properties which were
added to a mapper post-compile using
add_property() or equivalent.
Mike Bayer [Thu, 27 Nov 2008 15:59:34 +0000 (15:59 +0000)]
- fixed "double iter()" call causing bus errors
in shard API, removed errant result.close()
left over from the 0.4 version. [ticket:1099]
[ticket:1228]
Mike Bayer [Tue, 25 Nov 2008 04:43:04 +0000 (04:43 +0000)]
- Duplicate items in a list-based collection will
be maintained when issuing INSERTs to
a "secondary" table in a many-to-many relation.
Assuming the m2m table has a unique or primary key
constraint on it, this will raise the expected
constraint violation instead of silently
dropping the duplicate entries. Note that the
old behavior remains for a one-to-many relation
since collection entries in that case
don't result in INSERT statements and SQLA doesn't
manually police collections. [ticket:1232]
Mike Bayer [Mon, 24 Nov 2008 01:14:32 +0000 (01:14 +0000)]
- comparator_factory is accepted by all MapperProperty constructors. [ticket:1149]
- added other unit tests as per [ticket:1149]
- rewrote most of the "joined table inheritance" documentation section, removed badly out of
date "polymorphic_fetch" and "select_table" arguments.
- "select_table" raises a deprecation warning. converted unit tests to not use it.
- removed all references to "ORDER BY table.oid" from mapping docs.
- renamed PropertyLoader to RelationProperty. Old symbol remains.
- renamed ColumnProperty.ColumnComparator to ColumnProperty.Comparator. Old symbol remains.
Mike Bayer [Fri, 21 Nov 2008 01:21:00 +0000 (01:21 +0000)]
- Added NotImplementedError for params() method
on Insert/Update/Delete constructs. These items
currently don't support this functionality, which
also would be a little misleading compared to
values().
Mike Bayer [Fri, 14 Nov 2008 18:57:24 +0000 (18:57 +0000)]
- switched session.save() to session.add() throughout declarative test
- Fixed PendingDeprecationWarning involving order_by
parameter on relation(). [ticket:1226]
- Unit tests still filter pending deprecation warnings but have a commented-out
line to temporarily disable this behavior. Tests need to be fully converted
before we can turn this on.
Michael Trier [Fri, 14 Nov 2008 03:57:07 +0000 (03:57 +0000)]
Pulled out values test that uses boolean evaluation in the SELECT in order to appropriately flag it as not supported on mssql. I sure hope I didn't jack things up for other dialects. Cleaned up a comment and removed some commented pdb statements.
Michael Trier [Fri, 14 Nov 2008 03:57:00 +0000 (03:57 +0000)]
Fixed up a lot of missing order_by statements in the tests when using offset. A lot of dialects don't really require order_by although you'll get unpredictable results. mssql does require order_by with an offset, so this fixes problems with that dialect.
Mike Bayer [Thu, 13 Nov 2008 20:38:56 +0000 (20:38 +0000)]
- Rearranged the `load_dialect_impl()` method in
`TypeDecorator` such that it will take effect
even if the user-defined `TypeDecorator` uses
another `TypeDecorator` as its impl.
Mike Bayer [Mon, 10 Nov 2008 20:22:18 +0000 (20:22 +0000)]
- converted some more attributes to @memoized_property in expressions
- flattened an unnecessary KeyError in identity.py
- memoized the default list of mapper properties queried in MapperEntity.setup_context
Michael Trier [Mon, 10 Nov 2008 04:29:53 +0000 (04:29 +0000)]
Handle the mssql port properly. If we're using the SQL Server driver then use the correct host,port syntax, otherwise use the Port= parameter in the connection string. Fixes #1192.
Mike Bayer [Sun, 9 Nov 2008 16:06:05 +0000 (16:06 +0000)]
- Query.count() has been enhanced to do the "right
thing" in a wider variety of cases. It can now
count multiple-entity queries, as well as
column-based queries. Note that this means if you
say query(A, B).count() without any joining
criterion, it's going to count the cartesian
product of A*B. Any query which is against
column-based entities will automatically issue
"SELECT count(1) FROM (SELECT...)" so that the
real rowcount is returned, meaning a query such as
query(func.count(A.name)).count() will return a value of
one, since that query would return one row.
Michael Trier [Sun, 9 Nov 2008 05:21:38 +0000 (05:21 +0000)]
Corrected problems with Access dialect. Corrected issue with reflection due to missing Currency type. Functions didn't return the value. JOINS must be specified as LEFT OUTER JOIN or INNER JOIN. Fixes #1017.
Mike Bayer [Sat, 8 Nov 2008 21:00:15 +0000 (21:00 +0000)]
removed setup_instance() from the public API
of ClassManager, and made it a private method on
_ClassInstrumentationAdapter. ClassManager's approach
handles the default task with fewer function calls which chops off
a few hundred calls from the pertinent profile tests.
Mike Bayer [Thu, 6 Nov 2008 23:07:47 +0000 (23:07 +0000)]
- Fixed bug in Query involving order_by() in conjunction with
multiple aliases of the same class (will add tests in
[ticket:1218])
- Added a new extension sqlalchemy.ext.serializer. Provides
Serializer/Deserializer "classes" which mirror Pickle/Unpickle,
as well as dumps() and loads(). This serializer implements
an "external object" pickler which keeps key context-sensitive
objects, including engines, sessions, metadata, Tables/Columns,
and mappers, outside of the pickle stream, and can later
restore the pickle using any engine/metadata/session provider.
This is used not for pickling regular object instances, which are
pickleable without any special logic, but for pickling expression
objects and full Query objects, such that all mapper/engine/session
dependencies can be restored at unpickle time.