hey all - this one is pretty important as it fixes a major speed hit that was occuring with backref relationships getting cascaded like crazy when you attached objects together.
also, the internals of Mapper are highly modified to support "deferred" compilation; a compile() method is automatically called when they are first used which works up all the internal relationships, after all mappers have been constructed (you can also call compile() yourself to force the compilation). the advantage is that you can now define your Mappers in any order, using class objects as arguments tor relation(). another enormous change is the attributes package, which does all the "magic" history tracking on your objects, is totally rewritten. its a lot simpler and uses an approach that should allow more flexibility and a little bit more speed. i have run it through a grueling series of tests and i havent managed to break it; but im pretty sure someone out there will...so just let me know. changelog: 0.2.3 - overhaul to mapper compilation to be deferred. this allows mappers to be constructed in any order, and their relationships to each other are compiled when the mappers are first used. - fixed a pretty big speed bottleneck in cascading behavior particularly when backrefs were in use - the attribute instrumentation module has been completely rewritten; its now a large degree simpler and clearer, slightly faster. the "history" of an attribute is no longer micromanaged with each change and is instead part of a "CommittedState" object created when the instance is first loaded. HistoryArraySet is gone, the behavior of list attributes is now more open ended (i.e. theyre not sets anymore). - py2.4 "set" construct used internally, falls back to sets.Set when "set" not available/ordering is needed. - fix to transaction control, so that repeated rollback() calls dont fail (was failing pretty badly when flush() would raise an exception in a larger try/except transaction block) - "foreignkey" argument to relation() can also be a list. fixed auto-foreignkey detection [ticket:151] - fixed bug where tables with schema names werent getting indexed in the MetaData object properly - fixed bug where Column with redefined "key" property wasnt getting type conversion happening in the ResultProxy [ticket:207] - fixed 'port' attribute of URL to be an integer if present - fixed old bug where if a many-to-many table mapped as "secondary" had extra columns, delete operations didnt work - bugfixes for mapping against UNION queries - fixed incorrect exception class thrown when no DB driver present - added NonExistentTable exception thrown when reflecting a table that doesnt exist [ticket:138] - small fix to ActiveMapper regarding one-to-one backrefs, other refactorings - overridden constructor in mapped classes gets __name__ and __doc__ from the original class - fixed small bug in selectresult.py regarding mapper extension [ticket:200] - small tweak to cascade_mappers, not very strongly supported function at the moment - some fixes to between(), column.between() to propigate typing information better [ticket:202] - if an object fails to be constructed, is not added to the session [ticket:203] - CAST function has been made into its own clause object with its own compilation function in ansicompiler; allows MySQL to silently ignore most CAST calls since MySQL seems to only support the standard CAST syntax with Date types. MySQL-compatible CAST support for strings, ints, etc. a TODO _______________________________________________ Sqlalchemy-users mailing list Sqlalchemy-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users