SQLAlchemy 0.6.1 is now available.

This is bugfix release which fixes lots of legacy Oracle issues, i.e. Oracle 8, 
cx_oracle 4, as well as some ORM glitches.

The ORM is also employing an LRU cache to cache the compiler output of the base 
format insert/update/delete clauses during a flush.  In some cases this can 
remove lots of method overhead normally spent compiling.   We may look into 
expanding the caching of compiled SQL statements within the ORM to continue 
removing redundant computation.

Download SQLAlchemy 0.6.1 at:

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


0.6.1
=====
- orm
  - Fixed regression introduced in 0.6.0 involving improper
    history accounting on mutable attributes.  [ticket:1782]
  
  - Fixed regression introduced in 0.6.0 unit of work refactor
    that broke updates for bi-directional relationship()
    with post_update=True. [ticket:1807]
    
  - session.merge() will not expire attributes on the returned
    instance if that instance is "pending".  [ticket:1789]

  - fixed __setstate__ method of CollectionAdapter to not
    fail during deserialize where parent InstanceState not
    yet unserialized.  [ticket:1802]

  - Added internal warning in case an instance without a 
    full PK happened to be expired and then was asked
    to refresh. [ticket:1797]

  - Added more aggressive caching to the mapper's usage of
    UPDATE, INSERT, and DELETE expressions.  Assuming the 
    statement has no per-object SQL expressions attached,
    the expression objects are cached by the mapper after 
    the first create, and their compiled form is stored
    persistently in a cache dictionary for the duration of
    the related Engine.  The cache is an LRUCache for the
    rare case that a mapper receives an extremely
    high number of different column patterns as UPDATEs.
    
- sql
  - expr.in_() now accepts a text() construct as the argument.
    Grouping parenthesis are added automatically, i.e. usage
    is like `col.in_(text("select id from table"))`.
    [ticket:1793]

  - Columns of _Binary type (i.e. LargeBinary, BLOB, etc.)
    will coerce a "basestring" on the right side into a 
    _Binary as well so that required DBAPI processing 
    takes place.
    
  - Added table.add_is_dependent_on(othertable), allows manual
    placement of dependency rules between two Table objects
    for use within create_all(), drop_all(), sorted_tables.
    [ticket:1801]

  - Fixed bug that prevented implicit RETURNING from functioning
    properly with composite primary key that contained zeroes.
    [ticket:1778]
  
  - Fixed errant space character when generating ADD CONSTRAINT
    for a named UNIQUE constraint.

  - Fixed "table" argument on constructor of ForeginKeyConstraint
    [ticket:1571]

  - Fixed bug in connection pool cursor wrapper whereby if a
    cursor threw an exception on close(), the logging of the 
    message would fail.  [ticket:1786]

  - the _make_proxy() method of ColumnClause and Column now use
    self.__class__ to determine the class of object to be returned
    instead of hardcoding to ColumnClause/Column, making it slightly 
    easier to produce specific subclasses of these which work in 
    alias/subquery situations.

  - func.XXX() doesn't inadvertently resolve to non-Function 
    classes (e.g. fixes func.text()).  [ticket:1798]

- engines
  - Fixed building the C extensions on Python 2.4. [ticket:1781]

  - Pool classes will reuse the same "pool_logging_name" setting
    after a dispose() occurs.
    
  - Engine gains an "execution_options" argument and 
    update_execution_options() method, which will apply to 
    all connections generated by this engine.
    
- mysql
  - func.sysdate() emits "SYSDATE()", i.e. with the ending
    parenthesis, on MySQL.  [ticket:1794]

- sqlite
  - Fixed concatenation of constraints when "PRIMARY KEY" 
    constraint gets moved to column level due to SQLite
    AUTOINCREMENT keyword being rendered.  [ticket:1812]
    
- oracle
  - Added a check for cx_oracle versions lower than version 5,
    in which case the incompatible "output type handler" won't 
    be used.   This will impact decimal accuracy and some
    unicode handling issues.  [ticket:1775]

  - Fixed use_ansi=False mode, which was producing broken 
    WHERE clauses in pretty much all cases.  [ticket:1790]

  - Re-established support for Oracle 8 with cx_oracle, 
    including that use_ansi is set to False automatically, 
    NVARCHAR2 and NCLOB are not rendered for Unicode, 
    "native unicode" check doesn't fail, cx_oracle 
    "native unicode" mode is disabled, VARCHAR() is emitted 
    with bytes count instead of char count. [ticket:1808]
    
  - oracle_xe 5 doesn't accept a Python unicode object in 
    its connect string in normal Python 2.x mode - so we coerce
    to str() directly.  non-ascii characters aren't supported
    in connect strings here since we don't know what encoding
    we could use.  [ticket:1670]

  - FOR UPDATE is emitted in the syntactically correct position
    when limit/offset is used, i.e. the ROWNUM subquery.
    However, Oracle can't really handle FOR UPDATE with ORDER BY
    or with subqueries, so its still not very usable, but at
    least SQLA gets the SQL past the Oracle parser.
    [ticket:1815]
    
- firebird
  - Added a label to the query used within has_table() and 
    has_sequence() to work with older versions of Firebird
    that don't provide labels for result columns. [ticket:1521]
    
  - Added integer coercion to the "type_conv" attribute when 
    passed via query string, so that it is properly interpreted
    by Kinterbasdb. [ticket:1779]

  - Added 'connection shutdown' to the list of exception strings
    which indicate a dropped connection.  [ticket:1646]

- sqlsoup
  - the SqlSoup constructor accepts a `base` argument which specifies
    the base class to use for mapped classes, the default being
    `object`.  [ticket:1783]

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