Fetching contributors…
Cannot retrieve contributors at this time
541 lines (385 sloc) 18.2 KB


Changes in Version 1.3.0

This release adds full compatibility with Cassandra 1.0 and removes support for schema manipulation in Cassandra 0.7.

In this release, schema manipulation should work with Cassandra 0.8 and 1.0, but not 0.7. The data API should continue to work with all three versions.

Bug Fixes



Changes in Version 1.2.1

This is strictly a bug-fix release addressing a few issues created in 1.2.0.

Bug Fixes

Changes in Version 1.2.0

This should be a fairly smooth upgrade from pycassa 1.1. The primary changes that may introduce minor incompatibilities are the changes to :class:`.ColumnFamilyMap` and the automatic skipping of "ghost ranges" in :meth:`.ColumnFamily.get_range()`.


Bug Fixes

  • Add connections to :class:`~.ConnectionPool` more readily when prefill is False. Before this change, if the ConnectionPool was created with prefill=False, connections would only be added to the pool when there was concurrent demand for connections. After this change, if prefill=False and pool_size=N, the first N operations will each result in a new connection being added to the pool.
  • Close connection and adjust the :class:`~.ConnectionPool`'s connection count after a :exc:`.TApplicationException`. This exception generally indicates programmer error, so it's not extremely common.
  • Handle typed keys that evaluate to False



Changes in Version 1.1.1


Bug Fixes

  • Don't retry operations after a TApplicationException. This exception is reserved for programmatic errors (such as a bad API parameters), so retries are not needed.
  • If the read_consistency_level kwarg was used in a :class:`~.ColumnFamily` constructor, it would be ignored, resulting in a default read consistency level of :const:`ONE`. This did not affect the read consistency level if it was specified in any other way, including per-method or by setting the :attr:`~.ColumnFamily.read_consistency_level` attribute.

Changes in Version 1.1.0

This release adds compatibility with Cassandra 0.8, including support for counters and key_validation_class. This release is backwards-compatible with Cassandra 0.7, and can support running against a mixed cluster of both Cassandra 0.7 and 0.8.

Changes related to Cassandra 0.8

Other Features

Bug Fixes

There were several related issues with overlow in :class:`.ConnectionPool`:

  • Connection failures when a :class:`.ConnectionPool` was in a state of overflow would not result in adjustment of the overflow counter, eventually leading the :class:`.ConnectionPool` to refuse to create new connections.
  • Settings of -1 for :attr:`.ConnectionPool.overflow` erroneously caused overflow to be disabled.
  • If overflow was enabled in conjunction with prefill being disabled, the effective overflow limit was raised to max_overflow + pool_size.


Removed Deprecated Items

The following deprecated items have been removed:


Athough not technically deprecated, most :class:`.ColumnFamily` constructor arguments should instead be set by setting the corresponding attribute on the :class:`.ColumnFamily` after construction. However, all previous constructor arguments will continue to be supported if passed as keyword arguments.

Changes in Version 1.0.8

  • Pack :class:`.IndexExpression` values in :meth:`~.ColumnFamilyMap.get_indexed_slices()` that are supplied through the :class:`.IndexClause` instead of just the instance parameter.
  • Column names and values which use Cassandra's IntegerType are unpacked as though they are in a BigInteger-like format. This is (backwards) compatible with the format that pycassa uses to pack IntegerType data. This fixes an incompatibility with the format that cassandra-cli and other clients use to pack IntegerType data.
  • Restore Python 2.5 compatibility that was broken through out of order keyword arguments in :class:`.ConnectionWrapper`.
  • Pack column_start and column_finish arguments in :class:`.ColumnFamily` *get*() methods when the super_column parameter is used.
  • Issue a :class:`DeprecationWarning` when a method, parameter, or class that has been deprecated is used. Most of these have been deprecated for several releases, but no warnings were issued until now.
  • Deprecations are now split into separate sections for each release in the changelog.


Changes in Version 1.0.7

  • Catch KeyError in :meth:`pycassa.columnfamily.ColumnFamily.multiget()` empty row removal. If the same non-existent key was passed multiple times, a :exc:`KeyError` was raised when trying to remove it from the OrderedDictionary after the first removal. The :exc:`KeyError` is caught and ignored now.
  • Handle connection failures during retries. When a connection fails, it tries to create a new connection to replace itself. Exceptions during this process were not properly handled; they are now handled and count towards the retry count for the current operation.
  • Close connection when a :exc:`MaximumRetryException` is raised. Normally a connection is closed when an operation it is performing fails, but this was not happening for the final failure that triggers the :exc:`MaximumRetryException`.

Changes in Version 1.0.6


Changes in Version 1.0.5

Changes in Version 1.0.4


Changes in Version 1.0.3

  • Fixed supercolumn slice bug in get()
  • pycassaShell now runs scripts with execfile to allow for multiline statements
  • 2.4 compatability fixes

Changes in Version 1.0.2

Changes in Version 1.0.1

Changes in Version 1.0.0


Changes in Version 0.5.4

Changes in Version 0.5.3

Changes in Version 0.5.2

Changes in Version 0.5.1

Changes in Version 0.5.0

Changes in Version 0.4.3

  • Autopack on CF's default_validation_class
  • Use Thrift API 13.0.0

Changes in Version 0.4.2

  • Added batch mutations interface: :mod:`pycassa.batch`
  • Made bundled thrift-gen code a subpackage of pycassa
  • Don't attempt to reencode already encoded UTF8 strings

Changes in Version 0.4.1

Changes in Version 0.4.0