Happy Holidays !

0.5.7 is a bugfix release which also backports many fixes that have been 
committed to 0.6 trunk.   

Of note in this release is that the development status has been moved to 
"Production/Stable".   The SQLA 0.5 series is the first series that I've gotten 
to use extensively in production for two different full time jobs - I've been 
running 0.5.6 in a wide variety of high availability scenarios and I'm pretty 
confident in its behavior being consistent - 0.5.7 includes a few fixes such an 
issue affecting pickleability in a particular query.options() scenario.

Download SQLA 0.5.7 at:  

http://www.sqlalchemy.org/download.html


0.5.7
=====
- orm
    - contains_eager() now works with the automatically 
      generated subquery that results when you say 
      "query(Parent).join(Parent.somejoinedsubclass)", i.e. 
      when Parent joins to a joined-table-inheritance subclass.  
      Previously contains_eager() would erroneously add the 
      subclass table to the query separately producing a 
      cartesian product.  An example is in the ticket
      description.  [ticket:1543]

    - query.options() now only propagate to loaded objects
      for potential further sub-loads only for options where
      such behavior is relevant, keeping
      various unserializable options like those generated
      by contains_eager() out of individual instance states.
      [ticket:1553]
    
    - Session.execute() now locates table- and 
      mapper-specific binds based on a passed
      in expression which is an insert()/update()/delete() 
      construct. [ticket:1054]
      
    - Session.merge() now properly overwrites a many-to-one or 
      uselist=False attribute to None if the attribute 
      is also None in the given object to be merged.
     
    - Fixed a needless select which would occur when merging
      transient objects that contained a null primary key
      identifier.  [ticket:1618]

    - Mutable collection passed to the "extension" attribute
      of relation(), column_property() etc. will not be mutated
      or shared among multiple instrumentation calls, preventing
      duplicate extensions, such as backref populators,
      from being inserted into the list.
      [ticket:1585]
    
    - Fixed the call to get_committed_value() on CompositeProperty.
      [ticket:1504]
    
    - Fixed bug where Query would crash if a join() with no clear
      "left" side were called when a non-mapped column entity
      appeared in the columns list. [ticket:1602]
    
    - Fixed bug whereby composite columns wouldn't load properly
      when configured on a joined-table subclass, introduced in
      version 0.5.6 as a result of the fix for [ticket:1480].
      [ticket:1616] thx to Scott Torborg.
    
    - The "use get" behavior of many-to-one relations, i.e. that a 
      lazy load will fallback to the possibly cached query.get() 
      value, now works across join conditions where the two compared 
      types are not exactly the same class, but share the same 
      "affinity" - i.e. Integer and SmallInteger.  Also allows
      combinations of reflected and non-reflected types to work
      with 0.5 style type reflection, such as PGText/Text (note 0.6 
      reflects types as their generic versions).   [ticket:1556]
    
    - Fixed bug in query.update() when passing Cls.attribute
      as keys in the value dict and using synchronize_session='expire'.
      [ticket:1436]
      
- sql
    - Fixed bug in two-phase transaction whereby commit() method
      didn't set the full state which allows subsequent close()
      call to succeed. [ticket:1603]

    - Fixed the "numeric" paramstyle, which apparently is the
      default paramstyle used by Informixdb.
      
    - Repeat expressions in the columns clause of a select
      are deduped based on the identity of each clause element,
      not the actual string.  This allows positional 
      elements to render correctly even if they all render
      identically, such as "qmark" style bind parameters.
      [ticket:1574]
    
    - The cursor associated with connection pool connections
      (i.e. _CursorFairy) now proxies `__iter__()` to the 
      underlying cursor correctly. [ticket:1632]

    - types now support an "affinity comparison" operation, i.e.
      that an Integer/SmallInteger are "compatible", or 
      a Text/String, PickleType/Binary, etc.  Part of 
      [ticket:1556].
      
    - Fixed bug preventing alias() of an alias() from being
      cloned or adapted (occurs frequently in ORM operations).
      [ticket:1641]
      
- sqlite
    - sqlite dialect properly generates CREATE INDEX for a table
      that is in an alternate schema.  [ticket:1439]
      
- postgresql
    - Added support for reflecting the DOUBLE PRECISION type,
      via a new postgres.PGDoublePrecision object.  
      This is postgresql.DOUBLE_PRECISION in 0.6.
      [ticket:1085]
    
    - Added support for reflecting the INTERVAL YEAR TO MONTH
      and INTERVAL DAY TO SECOND syntaxes of the INTERVAL 
      type.  [ticket:460]
      
    - Corrected the "has_sequence" query to take current schema,
      or explicit sequence-stated schema, into account.
      [ticket:1576]

    - Fixed the behavior of extract() to apply operator
      precedence rules to the "::" operator when applying
      the "timestamp" cast - ensures proper parenthesization.  
      [ticket:1611]

- firebird
    - FBDate now extends Date instead of DateTime. [ticket:1573]
    
- mssql
    - Changed the name of TrustedConnection to 
      Trusted_Connection when constructing pyodbc connect
      arguments [ticket:1561]

- informix
    - Fixed erroneous reference to "owner" attribute in 
      Informix dialect when reflecting tables.
      [ticket:1645]

- oracle
     - The "table_names" dialect function, used by MetaData
       .reflect(), omits "index overflow tables", a system
       table generated by Oracle when "index only tables"
       with overflow are used.  These tables aren't accessible
       via SQL and can't be reflected.  [ticket:1637]
       
- ext 
    - A column can be added to a joined-table declarative 
      superclass after the class has been constructed 
      (i.e. via class-level attribute assignment), and
      the column will be propagated down to 
      subclasses. [ticket:1570]  This is the reverse
      situation as that of [ticket:1523], fixed in 0.5.6.

    - Fixed a slight inaccuracy in the sharding example.
      Comparing equivalence of columns in the ORM is best 
      accomplished using col1.shares_lineage(col2).
      [ticket:1491]
    
    - Removed unused `load()` method from ShardedQuery.
      [ticket:1606]
      

--

You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@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