This is a bugfix release, available for download at : http://www.sqlalchemy.org/download.html
0.5.6 ===== - orm - Fixed bug whereby inheritance discriminator part of a composite primary key would fail on updates. Continuation of [ticket:1300]. - Fixed bug which disallowed one side of a many-to-many bidirectional reference to declare itself as "viewonly" [ticket:1507] - Added an assertion that prevents a @validates function or other AttributeExtension from loading an unloaded collection such that internal state may be corrupted. [ticket:1526] - Fixed bug which prevented two entities from mutually replacing each other's primary key values within a single flush() for some orderings of operations. [ticket:1519] - Fixed an obscure issue whereby a joined-table subclass with a self-referential eager load on the base class would populate the related object's "subclass" table with data from the "subclass" table of the parent. [ticket:1485] - relations() now have greater ability to be "overridden", meaning a subclass that explicitly specifies a relation() overriding that of the parent class will be honored during a flush. This is currently to support many-to-many relations from concrete inheritance setups. Outside of that use case, YMMV. [ticket:1477] - Squeezed a few more unnecessary "lazy loads" out of relation(). When a collection is mutated, many-to-one backrefs on the other side will not fire off to load the "old" value, unless "single_parent=True" is set. A direct assignment of a many-to-one still loads the "old" value in order to update backref collections on that value, which may be present in the session already, thus maintaining the 0.5 behavioral contract. [ticket:1483] - Fixed bug whereby a load/refresh of joined table inheritance attributes which were based on column_property() or similar would fail to evaluate. [ticket:1480] - Improved support for MapperProperty objects overriding that of an inherited mapper for non-concrete inheritance setups - attribute extensions won't randomly collide with each other. [ticket:1488] - UPDATE and DELETE do not support ORDER BY, LIMIT, OFFSET, etc. in standard SQL. Query.update() and Query.delete() now raise an exception if any of limit(), offset(), order_by(), group_by(), or distinct() have been called. [ticket:1487] - Added AttributeExtension to sqlalchemy.orm.__all__ - Improved error message when query() is called with a non-SQL /entity expression. [ticket:1476] - Using False or 0 as a polymorphic discriminator now works on the base class as well as a subclass. [ticket:1440] - Added enable_assertions(False) to Query which disables the usual assertions for expected state - used by Query subclasses to engineer custom state. [ticket:1424]. See http://www.sqlalchemy.org/trac/wiki/UsageRecipes/PreFilteredQuery for an example. - Fixed recursion issue which occured if a mapped object's `__len__()` or `__nonzero__()` method resulted in state changes. [ticket:1501] - Fixed incorrect exception raise in Weak/StrongIdentityMap.add() [ticket:1506] - Fixed the error message for "could not find a FROM clause" in query.join() which would fail to issue correctly if the query was against a pure SQL construct. [ticket:1522] - Fixed a somewhat hypothetical issue which would result in the wrong primary key being calculated for a mapper using the old polymorphic_union function - but this is old stuff. [ticket:1486] - sql - Fixed column.copy() to copy defaults and onupdates. [ticket:1373] - Fixed a bug in extract() introduced in 0.5.4 whereby the string "field" argument was getting treated as a ClauseElement, causing various errors within more complex SQL transformations. - Unary expressions such as DISTINCT propagate their type handling to result sets, allowing conversions like unicode and such to take place. [ticket:1420] - Fixed bug in Table and Column whereby passing empty dict for "info" argument would raise an exception. [ticket:1482] - postgresql - The driver can be specified as "postgresql://" in URLs, allowing forwards-compatibility with 0.6. - oracle - Backported 0.6 fix for Oracle alias names not getting truncated. [ticket:1309] - ext - The collection proxies produced by associationproxy are now pickleable. A user-defined proxy_factory however is still not pickleable unless it defines __getstate__ and __setstate__. [ticket:1446] - Declarative will raise an informative exception if __table_args__ is passed as a tuple with no dict argument. Improved documentation. [ticket:1468] - Table objects declared in the MetaData can now be used in string expressions sent to primaryjoin/secondaryjoin/ secondary - the name is pulled from the MetaData of the declarative base. [ticket:1527] - A column can be added to a joined-table subclass after the class has been constructed (i.e. via class-level attribute assignment). The column is added to the underlying Table as always, but now the mapper will rebuild its "join" to include the new column, instead of raising an error about "no such column, use column_property() instead". [ticket:1523] - test - Added examples into the test suite so they get exercised regularly and cleaned up a couple deprecation warnings. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@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 -~----------~----~----~----~------~----~------~--~---