=================
Improvements
------------
- A new CaptureTracer has been added to storm.testing, for capturing all SQL
statements executed by Storm. It can be used like this:
with CaptureTracer() as tracer:
Run queries
pass
print tracer.queries Print all queries run in the context manager block
You will need the python-fixtures package in order to use this feature.
- Setuptools <http://pypi.python.org/pypi/setuptools> is now required
to run setup.py. This makes it much easier to install the majority
of the dependencies required to run the test suite in its entirety.
- Disconnection errors arising from PostgreSQL are now more reliably
detected, especially with regard to recent libpq updates in Ubuntu.
There are also disconnection tests that simulate sudden termination
of pgbouncer <http://pgfoundry.org/projects/pgbouncer/>.
- Insert expressions now support multi-row and subquery INSERT
statements.
- Support in the postgres backend to use the RETURNING extension for UPDATE
statement, optionally specifying the columns to return.
(PostgreSQL >= 8.2 only)
- Add a new Distinct expression for pre-pending the 'DISTINCT' token to
SQL expressions that support it (like columns).
- Switch to REPEATABLE READ as isolation level for Postgres. If you use
psycopg2 < 2.4, it doesn't change anything. For psycopg2 2.4 and newer, it
will keep the same behavior on Postgres < 9 as it's equivalent to
SERIALIZABLE, but it will be less strict on Postgres >= 9.
- Add support for two-phase commits, using the DB API version 2.0, which
is only supported by PostgreSQL.
- ZStormResourceManager now has a schema_stamp_dir optional instance attribute
that, if set, will be used to to save timestamps of the schema's patch
packages, so schema upgrades will be performed only when needed.
Bug fixes
---------
- When a SQLObjectResultSet object was sliced with slice.start and
slice.end both zero (sqlobject[0:0]), the full, unsliced resultset
was returned (bug 872086).
- Fixes some test failures around Django disconnections from
PostgreSQL stores.
- Some of the proxy-less disconnection tests were causing segfaults,
so they're now run in a subprocess via subunit's IsolatedTestCase,
when it's available.
- Fix a few non-uses of super() in TestHelper.
- Abort the transaction and reset ZStorm at the end of
tests/zope/README.txt.
- Fix the ./test script to not import tests until after local eggs
have been added to sys.path. This ensures that all possible features
are available to the tests.
- If transaction.commit() fails, call transaction.abort() to rollback
everything and leave the transaction in a clean state when using Django's
ZopeTransactionMiddleware and DatabaseWrapper.
- It's now again possible to use the Desc() expression when passing an
order_by parameter to a ReferenceSet (bug 620369).