hey list -

I cant keep up with all thats going on at this point, and the trunk  
was just bursting....so I need to get out what we have thus far and  
see how far it flies.

This release has some fairly deep refactorings involving mapper  
relationships, particularly those involving polymorphic mappers, as  
well as changes right up to the last minute (which is typical), so  
any new issues just chime in.

big bugs that were fixed include:

   - fixed bug in mapper refresh/expire whereby eager loaders didnt  
properly re-populate
   item lists [ticket:407]
   - fixed bug where delete-orphan basically didn't work with many-to- 
many relationships [ticket:427],
   backref presence generally hid the symptom

and possibly:

   - added a mutex to the mapper compilation step.

that is, if you were running SA in a super-concurrent environment and  
getting errors/crashes when a process first started.


0.3.4
- general:
   - global "insure"->"ensure" change.  in US english "insure" is  
actually
   largely interchangeable with "ensure" (so says the dictionary), so  
I'm not
   completely illiterate, but its definitely sub-optimal to "ensure"  
which is
   non-ambiguous.
- sql:
   - added "fetchmany()" support to ResultProxy
   - added support for column "key" attribute to be useable in row 
[<key>]/row.<key>
   - changed "BooleanExpression" to subclass from "BinaryExpression",  
so that boolean
   expressions can also follow column-clause behaviors (i.e. label(),  
etc).
   - trailing underscores are trimmed from func.<xxx> calls, such as  
func.if_()
   - fix to correlation of subqueries when the column list of the  
select statement
   is constructed with individual calls to append_column(); this  
fixes an ORM
   bug whereby nested select statements were not getting correlated  
with the
   main select generated by the Query object.
   - another fix to subquery correlation so that a subquery which has  
only one FROM
   element will *not* correlate that single element, since at least  
one FROM element is
   required in a query.
   - default "timezone" setting is now False.  this corresponds to  
Python's datetime
   behavior as well as Postgres' timestamp/time types (which is the  
only timezone-sensitive
   dialect at the moment) [ticket:414]
   - the "op()" function is now treated as an "operation", rather  
than a "comparison".
   the difference is, an operation produces a BinaryExpression from  
which further operations
   can occur whereas comparison produces the more restrictive  
BooleanExpression
   - trying to redefine a reflected primary key column as non-primary  
key raises an error
   - type system slightly modified to support TypeDecorators that can  
be overridden by the dialect
   (ok, thats not very clear, it allows the mssql tweak below to be  
possible)
- mssql:
   - added an NVarchar type (produces NVARCHAR), also MSUnicode which  
provides Unicode-translation
   for the NVarchar regardless of dialect convert_unicode setting.
- postgres:
   - fix to the initial checkfirst for tables to take current schema  
into account [ticket:424]
   - postgres has an optional "server_side_cursors=True" flag which  
will utilize
     server side cursors.  these are appropriate for fetching only  
partial results
     and are necessary for working with very large unbounded result  
sets.
     While we'd like this to be the default behavior, different  
environments seem
     to have different results and the causes have not been isolated  
so we are leaving
     the feature off by default for now.  Uses an apparently  
undocumented psycopg2
     behavior recently discovered on the psycopg mailing list.
   - added "BIGSERIAL" support for postgres table with PGBigInteger/ 
autoincrement
   - fixes to postgres reflection to better handle when schema names  
are present;
     thanks to jason (at) ncsmags.com [ticket:402]
- mysql:
   - mysql is inconsistent with what kinds of quotes it uses in  
foreign keys during a
   SHOW CREATE TABLE, reflection updated to accomodate for all three  
styles [ticket:420]
   - mysql table create options work on a generic passthru now, i.e.  
Table(..., mysql_engine='InnoDB',
   mysql_collate="latin1_german2_ci", mysql_auto_increment="5",  
mysql_<somearg>...),
   helps [ticket:418]
- firebird:
   - order of constraint creation puts primary key first before all  
other constraints;
   required for firebird, not a bad idea for others [ticket:408]
   - Firebird fix to autoload multifield foreign keys [ticket:409]
   - Firebird NUMERIC type properly handles a type without precision  
[ticket:409]
- oracle:
   - *slight* support for binary, but still need to figure out how to  
insert reasonably large
   values (over 4K).  requires auto_setinputsizes=True sent to  
create_engine(), rows must
   be fully fetched individually, etc.
- orm:
   - poked the first hole in the can of worms: saying query.select_by 
(somerelationname=someinstance)
   will create the join of the primary key columns represented by  
"somerelationname"'s mapper to the
   actual primary key in "someinstance".
   - reworked how relations interact with "polymorphic" mappers, i.e.  
mappers that have a select_table
   as well as polymorphic flags.  better determination of proper join  
conditions, interaction with user-
   defined join conditions, and support for self-referential  
polymorphic mappers.
   - related to polymorphic mapping relations, some deeper error  
checking when compiling relations,
   to detect an ambiguous "primaryjoin" in the case that both sides  
of the relationship have foreign key
   references in the primary join condition.  also tightened down  
conditions used to locate "relation direction",
   associating the "foreignkey" of the relationship with the  
"primaryjoin"
   - a little bit of improvement to the concept of a "concrete"  
inheritance mapping, though that concept
   is not well fleshed out yet (added test case to support concrete  
mappers on top of a polymorphic base).
   - fix to "proxy=True" behavior on synonym()
   - fixed bug where delete-orphan basically didn't work with many-to- 
many relationships [ticket:427],
   backref presence generally hid the symptom
   - added a mutex to the mapper compilation step.  ive been  
reluctant to add any kind
   of threading anything to SA but this is one spot that its its  
really needed since mappers
   are typically "global", and while their state does not change  
during normal operation, the
   initial compilation step does modify internal state significantly,  
and this step usually
   occurs not at module-level initialization time (unless you call  
compile()) but at first-request
   time
   - basic idea of "session.merge()" actually implemented.  needs  
more testing.
   - added "compile_mappers()" function as a shortcut to compiling  
all mappers
   - fix to MapperExtension create_instance so that entity_name  
properly associated
with new instance
   - speed enhancements to ORM object instantiation, eager loading of  
rows
   - invalid options sent to 'cascade' string will raise an exception  
[ticket:406]
   - fixed bug in mapper refresh/expire whereby eager loaders didnt  
properly re-populate
   item lists [ticket:407]
   - fix to post_update to ensure rows are updated even for non  
insert/delete scenarios
   [ticket:413]
   - added an error message if you actually try to modify primary key  
values on an entity
   and then flush it [ticket:412]
- extensions
   - added "validate=False" argument to assign_mapper, if True will  
insure that only mapped
   attributes are named [ticket:426]
   - assign_mapper gets "options", "instances" functions added  (i.e.  
MyClass.instances())




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