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]

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to