SQLAlchemy 0.7.7 Released

14 views
Skip to first unread message

Michael Bayer

unread,
May 5, 2012, 7:36:41 PM5/5/12
to sqlal...@googlegroups.com, sqlalche...@googlegroups.com
SQLAlchemy 0.7.7 is now available. This is the first release of the 0.7 series subsequent to the promotion of the 0.8 series to trunk. It nearly two dozen bug fixes and features, including some significant ORM issues that have been resolved.

Development is now proceeding with the 0.8 series, which begins to push 0.7 into maintenance mode. Bug fixes and some features are being backported to 0.7 as is possible. The 0.6 series also launches 0.6.9 at the same time as 0.7.7, in an effort to "push out" all the pending fixes for both the 0.6 and 0.7 series, so that development on 0.8 can continue.

While changes from 0.7.6 to 0.7.7 are intended to be fully backwards compatible, existing installations running on 0.7 should refer to the CHANGES file to determine if and how they may be impacted by the fixes in 0.7.7 before upgrading, and users are advised to fully test their applications against 0.7.7 before promoting to production.

Download SQLAlchemy 0.7.7 at http://www.sqlalchemy.org/download.html .


0.7.7
=====
- orm
- [bug] Fixed issue in unit of work
whereby setting a non-None self-referential
many-to-one relationship to None
would fail to persist the change if the
former value was not already loaded.
[ticket:2477].

- [feature] Added prefix_with() method
to Query, calls upon select().prefix_with()
to allow placement of MySQL SELECT
directives in statements. Courtesy
Diana Clarke [ticket:2443]

- [bug] Fixed bug in 0.7.6 introduced by
[ticket:2409] whereby column_mapped_collection
used against columns that were mapped as
joins or other indirect selectables
would fail to function.

- [feature] Added new flag to @validates
include_removes. When True, collection
remove and attribute del events
will also be sent to the validation function,
which accepts an additional argument
"is_remove" when this flag is used.

- [bug] Fixed bug whereby polymorphic_on
column that's not otherwise mapped on the
class would be incorrectly included
in a merge() operation, raising an error.
[ticket:2449]

- [bug] Fixed bug in expression annotation
mechanics which could lead to incorrect
rendering of SELECT statements with aliases
and joins, particularly when using
column_property(). [ticket:2453]

- [bug] Fixed bug which would prevent
OrderingList from being pickleable
[ticket:2454]. Courtesy Jeff Dairiki

- [bug] Fixed bug in relationship comparisons
whereby calling unimplemented methods like
SomeClass.somerelationship.like() would
produce a recursion overflow, instead
of NotImplementedError.

- sql
- [bug] Removed warning when Index is created
with no columns; while this might not be what
the user intended, it is a valid use case
as an Index could be a placeholder for just an
index of a certain name.

- [feature] Added new connection event
dbapi_error(). Is called for all DBAPI-level
errors passing the original DBAPI exception
before SQLAlchemy modifies the state
of the cursor.

- [bug] If conn.begin() fails when calling
"with engine.begin()", the newly acquired
Connection is closed explicitly before
propagating the exception onward normally.

- [bug] Add BINARY, VARBINARY to types.__all__,
[ticket:2474]

- mssql
- [feature] Added interim create_engine flag
supports_unicode_binds to PyODBC dialect,
to force whether or not the dialect
passes Python unicode literals to PyODBC
or not.

- [bug] Repaired the use_scope_identity
create_engine() flag when using the pyodbc
dialect. Previously this flag would be
ignored if set to False. When set to False,
you'll get "SELECT @@identity" after each
INSERT to get at the last inserted ID,
for those tables which have "implicit_returning"
set to False.

- [bug] UPDATE..FROM syntax with SQL Server
requires that the updated table be present
in the FROM clause when an alias of that
table is also present in the FROM clause.
The updated table is now always present
in the FROM, when FROM is present
in the first place. Courtesy sayap.
[ticket:2468]

- postgresql
- [feature] Added new for_update/with_lockmode()
options for Postgresql: for_update="read"/
with_lockmode("read"),
for_update="read_nowait"/
with_lockmode("read_nowait").
These emit "FOR SHARE" and "FOR SHARE NOWAIT",
respectively. Courtesy Diana Clarke
[ticket:2445]

- [bug] removed unnecessary table clause
when reflecting domains, [ticket:2473]


- mysql
- [bug] Fixed bug whereby column name inside
of "KEY" clause for autoincrement composite
column with InnoDB would double quote a
name that's a reserved word. Courtesy Jeff
Dairiki. [ticket:2460]

- [bug] Fixed bug whereby get_view_names() for
"information_schema" schema would fail
to retrieve views marked as "SYSTEM VIEW".
courtesy Matthew Turland.

- [bug] Fixed bug whereby if cast() is used
on a SQL expression whose type is not supported
by cast() and therefore CAST isn't rendered by
the dialect, the order of evaluation could change
if the casted expression required that it be
grouped; grouping is now applied to those
expressions. [ticket:2467]

- sqlite

- [feature] Added SQLite execution option
"sqlite_raw_colnames=True", will bypass
attempts to remove "." from column names
returned by SQLite cursor.description.
[ticket:2475]

Reply all
Reply to author
Forward
0 new messages