SQLAlchemy 0.7.9 is released. This is a maintenance release primarily 
containing bug fixes applied to both the 0.7 and 0.8 SQLAlchemy series.

0.7.9 includes some adjustments that will also be present in 0.8, including 
changes to the event-dispatch system which dramatically reduce the amount of 
memory used. There are also several fixes related to the relatively new common 
table expression (CTE) construct.

Other fixes include small bugs present in components such as the ORM, SQL 
generation system, and various dialect-specific bugs. 0.7.9 also has updates to 
its unit test system which were backported from 0.8.

The 0.8 series, which includes a long list of new features and improvements, is 
more or less ready for initial beta releases, and will be available for 
download within the coming weeks.

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

0.7.9
=====
- orm
  - [bug] Fixed bug mostly local to new
    AbstractConcreteBase helper where the "type"
    attribute from the superclass would not
    be overridden on the subclass to produce the
    "reserved for base" error message, instead placing
    a do-nothing attribute there.  This was inconsistent
    vs. using ConcreteBase as well as all the behavior
    of classical concrete mappings, where the "type"
    column from the polymorphic base would be explicitly
    disabled on subclasses, unless overridden
    explicitly.

  - [bug] A warning is emitted when lazy='dynamic'
    is combined with uselist=False.  This is an
    exception raise in 0.8.

  - [bug] Fixed bug whereby user error in related-object
    assignment could cause recursion overflow if the
    assignment triggered a backref of the same name
    as a bi-directional attribute on the incorrect
    class to the same target.  An informative
    error is raised now.

  - [bug] Fixed bug where incorrect type information
    would be passed when the ORM would bind the
    "version" column, when using the "version" feature.
    Tests courtesy Daniel Miller.  [ticket:2539]

  - [bug] Extra logic has been added to the "flush"
    that occurs within Session.commit(), such that the
    extra state added by an after_flush() or
    after_flush_postexec() hook is also flushed in a
    subsequent flush, before the "commit" completes.
    Subsequent calls to flush() will continue until
    the after_flush hooks stop adding new state.
    An "overflow" counter of 100 is also in place,
    in the event of a broken after_flush() hook
    adding new content each time. [ticket:2566]

- sql
  - [bug] Fixed the DropIndex construct to support
    an Index associated with a Table in a remote
    schema. [ticket:2571]

  - [bug] Fixed bug in over() construct whereby
    passing an empty list for either partition_by
    or order_by, as opposed to None, would fail
    to generate correctly.
    Courtesy Gunnlaugur Þór Briem.
    [ticket:2574]

  - [bug] Fixed CTE bug whereby positional
    bound parameters present in the CTEs themselves
    would corrupt the overall ordering of
    bound parameters.  This primarily
    affected SQL Server as the platform with
    positional binds + CTE support.
    [ticket:2521]

  - [bug] Fixed more un-intuitivenesses in CTEs
    which prevented referring to a CTE in a union
    of itself without it being aliased.
    CTEs now render uniquely
    on name, rendering the outermost CTE of a given
    name only - all other references are rendered
    just as the name.   This even includes other
    CTE/SELECTs that refer to different versions
    of the same CTE object, such as a SELECT
    or a UNION ALL of that SELECT. We are
    somewhat loosening the usual link between object
    identity and lexical identity in this case.
    A true name conflict between two unrelated
    CTEs now raises an error.

  - [bug] quoting is applied to the column names
    inside the WITH RECURSIVE clause of a
    common table expression according to the
    quoting rules for the originating Column.
    [ticket:2512]

  - [bug] Fixed regression introduced in 0.7.6
    whereby the FROM list of a SELECT statement
    could be incorrect in certain "clone+replace"
    scenarios.  [ticket:2518]

  - [bug] Fixed bug whereby usage of a UNION
    or similar inside of an embedded subquery
    would interfere with result-column targeting,
    in the case that a result-column had the same
    ultimate name as a name inside the embedded
    UNION. [ticket:2552]

  - [bug] Fixed a regression since 0.6 regarding
    result-row targeting.   It should be possible
    to use a select() statement with string
    based columns in it, that is
    select(['id', 'name']).select_from('mytable'),
    and have this statement be targetable by
    Column objects with those names; this is the
    mechanism by which
    query(MyClass).from_statement(some_statement)
    works.  At some point the specific case of
    using select(['id']), which is equivalent to
    select([literal_column('id')]), stopped working
    here, so this has been re-instated and of
    course tested. [ticket:2558]

  - [bug] Added missing operators is_(), isnot()
    to the ColumnOperators base, so that these long-available
    operators are present as methods like all
    the other operators.  [ticket:2544]

- engine
  - [bug] Fixed bug whereby
    a disconnect detect + dispose that occurs
    when the QueuePool has threads waiting
    for connections would leave those
    threads waiting for the duration of
    the timeout on the old pool (or indefinitely
    if timeout was disabled).  The fix
    now notifies those waiters with a special
    exception case and has them move onto
    the new pool.  [ticket:2522]

  - [feature] Dramatic improvement in memory
    usage of the event system; instance-level
    collections are no longer created for a
    particular type of event until
    instance-level listeners are established
    for that event.  [ticket:2516]

  - [bug] Added gaerdbms import to mysql/__init__.py,
    the absense of which was preventing the new
    GAE dialect from being loaded.  [ticket:2529]

  - [bug] Fixed cextension bug whereby the
    "ambiguous column error" would fail to
    function properly if the given index were
    a Column object and not a string.
    Note there are still some column-targeting
    issues here which are fixed in 0.8.
    [ticket:2553]

  - [bug] Fixed the repr() of Enum to include
    the "name" and "native_enum" flags.  Helps
    Alembic autogenerate.

- sqlite
  - [bug] Adjusted a very old bugfix which attempted
    to work around a SQLite issue that itself was
    "fixed" as of sqlite 3.6.14, regarding quotes
    surrounding a table name when using
    the "foreign_key_list" pragma.  The fix has been
    adjusted to not interfere with quotes that
    are *actually in the name* of a column or table,
    to as much a degree as possible; sqlite still
    doesn't return the correct result for foreign_key_list()
    if the target table actually has quotes surrounding
    its name, as *part* of its name (i.e. """mytable""").
    [ticket:2568]

  - [bug] Adjusted column default reflection code to
    convert non-string values to string, to accommodate
    old SQLite versions that don't deliver
    default info as a string.  [ticket:2265]

  - [feature] Added support for the localtimestamp()
    SQL function implemented in SQLite, courtesy
    Richard Mitchell.

- postgresql
  - [bug] Columns in reflected primary key constraint
    are now returned in the order in which the constraint
    itself defines them, rather than how the table
    orders them.  Courtesy Gunnlaugur Þór Briem.
    [ticket:2531].

  - [bug] Added 'terminating connection' to the list
    of messages we use to detect a disconnect with PG, which
    appears to be present in some versions when the server
    is restarted.  [ticket:2570]

- mysql
  - [bug] Updated mysqlconnector interface to use
    updated "client flag" and "charset" APIs,
    courtesy David McNelis.

- mssql
  - [bug] Fixed compiler bug whereby using a correlated
    subquery within an ORDER BY would fail to render correctly
    if the stament also used LIMIT/OFFSET, due to mis-rendering
    within the ROW_NUMBER() OVER clause.  Fix courtesy
    sayap [ticket:2538]

  - [bug] Fixed compiler bug whereby a given
    select() would be modified if it had an "offset"
    attribute, causing the construct to not compile
    correctly a second time.  [ticket:2545]

  - [bug] Fixed bug where reflection of primary key constraint
    would double up columns if the same constraint/table
    existed in multiple schemas.



-- 
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