Storm 0.13

Milestone information

Project:
Storm
Series:
trunk
Version:
0.13
Released:
 
Registrant:
Thomas Herve
Release registered:
Active:
No. Drivers cannot target bugs and blueprints to this milestone.  

Download RDF metadata

Activities

Assigned to you:
No blueprints or bugs assigned to you.
Assignees:
No users assigned to blueprints and bugs.
Blueprints:
No blueprints are targeted to this milestone.
Bugs:
No bugs are targeted to this milestone.

Download files for this release

After you've downloaded a file, you can verify its authenticity using its MD5 sum or signature. (How do I verify a download?)

File Description Downloads
download icon storm-0.13.tar.bz2 (md5, sig) Tarball 1,235
last downloaded 9 weeks ago
Total downloads: 1,235

Release notes 

Improvements
------------
 - Add group_by/having methods on ResultSet objects, to allow access to
   the "GROUP BY" and "HAVING" statements.
 - Change tests/store to keep the connection during the tests to make it
   faster.
 - Implemented support for plugging generic "tracers". Statement
   debugging is now implemented using a tracer, and easily enabled
   with storm.tracer.debug(True) (storm.database.DEBUG = True is gone).
 - All properties now accept a "validator" parameter. When used, a
   function like validate(object, attribute_name, value) should be
   given, and it may validate or modify the value before it's set in
   the property. The value assigned to the property is the result
   of the validator, so the original value should be returned if
   changing it isn't intended.
 - Expressions can be passed to Store.find() as well as classes. This
   makes it possible to request individual columns from a table,
   computed expressions or aggregates.
 - Objects will be flushed in the order they become dirty by default.
   This means that generally the order in which Python operations are
   performed will be used to define the order in which flushes are done,
   which is generally the most expected.
 - The cextensions module was fixed, optimized, and improved. It's now
   built by default, but to actually enable it the environment variable
   STORM_CEXTENSIONS=1 must be defined at runtime. The module will
   likely be enabled by default on a future release.
 - ClassAlias will now cache all explicitly named aliases, to prevent
   the cost of rebuilding it.
 - Result sets and reference sets now have a __contains__() method.
   While code like "item in set" was previously possible, it involved
   iterating over the result set, which is expensive for large
   databases.
 - The storm.zope.zstorm code can now be used with only the
   zope.interface and transaction packages installed. This makes it
   easier to reuse the per-thread store management and global
   transaction handling from other web frameworks.

Bug fixes
---------
 - Make is_in returns False instead of NULL on an empty result set.
 - ZStorm now keeps strong references to named stores. Previously it only kept
   weak ones, so stores were recreated more often than necessary.
 - References now won't flush the store or query the database when
   the foreign key is None.
 - When a reference is set to an object that wasn't yet inserted in
   the database, the foreign key is immediately unset instead of
   keeping the old value up to the flushing.
 - Setting a reference to None works even if the previously referenced
   object isn't in memory.
 - When setting a reference, flush ordering is only enforced if the
   key is dirty. This allows a number of changes that would
   previously raise OrderLoopError.
 - If the remote object in a back reference is removed, the reference
   will now be broken.
 - Fixed a race condition when two threads try to initialize the
   ClassInfo for a given class at the same time.
 - Improve handling of AUTO INCREMENT columns in the MySQL backend to
   remove an unnecessary query when adding objects to a store.

Changelog 

View the full changelog

Improvements
------------
 - Add group_by/having methods on ResultSet objects, to allow access to
   the "GROUP BY" and "HAVING" statements.
 - Change tests/store to keep the connection during the tests to make it
   faster.
 - Implemented support for plugging generic "tracers". Statement
   debugging is now implemented using a tracer, and easily enabled
   with storm.tracer.debug(True) (storm.database.DEBUG = True is gone).
 - All properties now accept a "validator" parameter. When used, a
   function like validate(object, attribute_name, value) should be
   given, and it may validate or modify the value before it's set in
   the property. The value assigned to the property is the result
   of the validator, so the original value should be returned if
   changing it isn't intended.
 - Expressions can be passed to Store.find() as well as classes. This
   makes it possible to request individual columns from a table,
   computed expressions or aggregates.
 - Objects will be flushed in the order they become dirty by default.
   This means that generally the order in which Python operations are
   performed will be used to define the order in which flushes are done,
   which is generally the most expected.
 - The cextensions module was fixed, optimized, and improved. It's now
   built by default, but to actually enable it the environment variable
   STORM_CEXTENSIONS=1 must be defined at runtime. The module will
   likely be enabled by default on a future release.
 - ClassAlias will now cache all explicitly named aliases, to prevent
   the cost of rebuilding it.
 - Result sets and reference sets now have a __contains__() method.
   While code like "item in set" was previously possible, it involved
   iterating over the result set, which is expensive for large
   databases.
 - The storm.zope.zstorm code can now be used with only the
   zope.interface and transaction packages installed. This makes it
   easier to reuse the per-thread store management and global
   transaction handling from other web frameworks.

Bug fixes
---------
 - Make is_in returns False instead of NULL on an empty result set.
 - ZStorm now keeps strong references to named stores. Previously it only kept
   weak ones, so stores were recreated more often than necessary.
 - References now won't flush the store or query the database when
   the foreign key is None.
 - When a reference is set to an object that wasn't yet inserted in
   the database, the foreign key is immediately unset instead of
   keeping the old value up to the flushing.
 - Setting a reference to None works even if the previously referenced
   object isn't in memory.
 - When setting a reference, flush ordering is only enforced if the
   key is dirty. This allows a number of changes that would
   previously raise OrderLoopError.
 - If the remote object in a back reference is removed, the reference
   will now be broken.
 - Fixed a race condition when two threads try to initialize the
   ClassInfo for a given class at the same time.
 - Improve handling of AUTO INCREMENT columns in the MySQL backend to
   remove an unnecessary query when adding objects to a store.

0 blueprints and 0 bugs targeted

There are no feature specifications or bug tasks targeted to this milestone. The project's maintainer, driver, or bug supervisor can target specifications and bug tasks to this milestone to track the things that are expected to be completed for the release.

This milestone contains Public information
Everyone can see this information.