im pleased to announce release 0.3.5 of SQLAlchemy, featuring a whole  
lot of bugfixes and internal refactorings.   While theres still  
plenty more bugs in trac that need to be addressed, this release is  
chock-full of changes that I'd like to get disseminated more deeply  
into the wild before going further.  We have now surpassed 500 unit  
tests !

in this release we have removed the old 0.2 version of specifying  
custom collection classes for ORM relationships - you now have to use  
the 0.3 "collection_class" argument to relation(), as opposed to  
sticking a class-level variable with the collection class.  if you  
dont know what im talking about, then you probably dont need to worry  
about it.  the old version was beginning to conflct with new methods  
added to assign_mapper.

changelog:

0.3.5
- sql:
     - the value of "case_sensitive" defaults to True now, regardless  
of the
       casing of the identifier, unless specifically set to False.  
this is
       because the object might be label'ed as something else which does
       contain mixed case, and propigating "case_sensitive=False"  
breaks that.
       Other fixes to quoting when using labels and "fake" column  
objects
     - added a "supports_execution()" method to ClauseElement, so that
       individual kinds of clauses can express if they are  
appropriate for
       executing...such as, you can execute a "select", but not a  
"Table" or a
       "Join".
     - fixed argument passing to straight textual execute() on engine,
       connection. can handle *args or a list instance for  
positional, **kwargs
       or a dict instance for named args, or a list of list or dicts  
to invoke
       executemany()
     - small fix to BoundMetaData to accept unicode or string URLs
     - fixed named PrimaryKeyConstraint generation [ticket:466] courtesy
       andrija at gmail
     - fixed generation of CHECK constraints on columns [ticket:464]
     - fixes to tometadata() operation to propigate Constraints at  
column and
       table level
- oracle:
     - when returning "rowid" as the ORDER BY column or in use with  
ROW_NUMBER
       OVER, oracle dialect checks the selectable its being applied  
to and will
       switch to table PK if not applicable, i.e. for a UNION.  
checking for
       DISTINCT, GROUP BY (other places that rowid is invalid) still  
a TODO.
       allows polymorphic mappings to function, [ticket:436]
     - sequences on a non-pk column will properly fire off on INSERT
     - added PrefetchingResultProxy support to pre-fetch LOB columns  
when they
       are known to be present, fixes [ticket:435]
     - implemented reflection of tables based on synonyms, including  
across
       dblinks [ticket:379]
     - issues a log warning when a related table cant be reflected  
due to
       certain permission errors [ticket:363]
- mysql:
     - fix to reflection on older DB's that might return array() type  
for
     "show variables like" statements
- postgres:
     - better reflection of sequences for alternate-schema Tables  
[ticket:442]
     - sequences on a non-pk column will properly fire off on INSERT
     - added PGInterval type [ticket:460], PGInet type [ticket:444]
- mssql:
     - preliminary support for pyodbc (Yay!) [ticket:419]
     - better support for NVARCHAR types added [ticket:298]
     - fix for commit logic on pymssql
     - fix for query.get() with schema [ticket:456]
     - fix for non-integer relationships [ticket:473]
     - DB-API module now selectable at run-time [ticket:419]
     - now passes many more unit tests [tickets:422, 481, 415]
     - better unittest compatibility with ANSI functions [ticket:479]
     - improved support for implicit sequence PK columns with auto- 
insert
       [ticket:415]
     - fix for blank password in adodbapi [ticket:371]
     - fixes to get unit tests working with pyodbc [ticket:481]
     - fix to auto_identity_insert on db-url query
     - added query_timeout to db-url query parms. currently works  
only for
       pymssql
     - tested with pymssql 0.8.0 (which is now LGPL)
- orm bugs:
     - another refactoring to relationship calculation. Allows more  
accurate
       ORM behavior with relationships from/to/between mappers,  
particularly
       polymorphic mappers, also their usage with Query,  
SelectResults. tickets
       include [ticket:439], [ticket:441], [ticket:448].
     - removed deprecated method of specifying custom collections on  
classes;
       you must now use the "collection_class" option. the old way was
       beginning to produce conflicts when people used assign_mapper 
(), which
       now patches an "options" method, in conjunction with a  
relationship
       named "options". (relationships take precedence over  
monkeypatched
       assign_mapper methods).
     - extension() query option propigates to Mapper._instance()  
method so that
       all loading-related methods get called [ticket:454]
     - eager relation to an inheriting mapper wont fail if no rows  
returned for
       the relationship.
     - eager relation loading bug fixed for eager relation on multiple
       descendant classes [ticket:486]
     - fix for very large topological sorts, courtesy ants.aasma at  
gmail
       [ticket:423]
     - eager loading is slightly more strict about detecting "self- 
referential"
       relationships, specifically between polymorphic mappers. this  
results in
       an "eager degrade" to lazy loading.
     - improved support for complex queries embedded into "where"  
criterion for
       query.select() [ticket:449]
     - mapper options like eagerload(), lazyload(), deferred(), will  
work for
       "synonym()" relationships [ticket:485]
     - fixed bug where cascade operations incorrectly included deleted
       collection items in the cascade [ticket:445]
     - fixed relationship deletion error when one-to-many child item  
is moved
       to a new parent in a single unit of work [ticket:478]
     - fixed relationship deletion error where parent/child with a  
single
       column as PK/FK on the child would raise a "blank out the  
primary key"
       error, if manually deleted or "delete" cascade without "delete- 
orphan"
       was used
     - fix to deferred so that load operation doesnt mistakenly occur  
when only
       PK col attributes are set
- orm enhancements:
     - implemented foreign_keys argument to mapper [ticket:385]. use in
       conjunction with primaryjoin/secondaryjoin arguments to  
specify/override
       foreign keys defined on the Table instance.
     - contains_eager('foo') automatically implies eagerload('foo')
     - added "alias" argument to contains_eager(). use it to specify  
the string
       name or Alias instance of an alias used in the query for the  
eagerly
       loaded child items. easier to use than "decorator"
     - added "contains_alias()" option for result set mapping to an  
alias of
       the mapped table
     - added support for py2.5 "with" statement with SessionTransaction
       [ticket:468]
- extensions:
     - added distinct() method to SelectResults. generally should  
only make a
       difference when using count().
     - added options() method to SelectResults, equivalent to  
query.options()
       [ticket:472]
     - added optional __table_opts__ dictionary to ActiveMapper, will  
send kw
       options to Table objects [ticket:462]
     - added selectfirst(), selectfirst_by() to assign_mapper [ticket: 
467]


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to