January 21, 2020

Merged from OSS master (3.21):

Bug fixes

  • Handle prepared id mismatch when repreparing on the fly (PYTHON-1124)

  • re-raising the CQLEngineException will fail on Python 3 (PYTHON-1166)

  • asyncio message chunks can be processed discontinuously (PYTHON-1185)

  • Reconnect attempts persist after downed node removed from peers (PYTHON-1181)

  • ResponseFuture._set_result crashes on connection error when used with PrepareMessage (PYTHON-1187)

  • Insights fail to serialize the startup message when the SSL Context is from PyOpenSSL (PYTHON-1192)


October 28, 2019

Merged from OSS master (3.20):


  • DataStax Apollo Support (PYTHON-1074)

  • Use 4.0 schema parser in 4 alpha and snapshot builds (PYTHON-1158)

Bug Fixes

  • Connection setup methods prevent using ExecutionProfile in cqlengine (PYTHON-1009)

  • Driver deadlock if all connections dropped by heartbeat whilst request in flight and request times out (PYTHON-1044)

  • Exception when use pk__token__gt filter In python 3.7 (PYTHON-1121)


August 26, 2019

Merged from OSS master (3.19):


  • Add Python 3.7 support (PYTHON-1016)

  • Future-proof Mapping imports (PYTHON-1023)

  • Include param values in cqlengine logging (PYTHON-1105)

  • NTS Token Replica Map Generation is slow (PYTHON-622)

Bug Fixes

  • as_cql_query UDF/UDA parameters incorrectly includes “frozen” if arguments are collections (PYTHON-1031)

  • cqlengine does not currently support combining TTL and TIMESTAMP on INSERT (PYTHON-1093)

  • Fix incorrect metadata for compact counter tables (PYTHON-1100)

  • Call ConnectionException with correct kwargs (PYTHON-1117)

  • Can’t connect to clusters built from source because version parsing doesn’t handle ‘x.y-SNAPSHOT’ (PYTHON-1118)

  • Discovered node doesn´t honor the configured Cluster port on connection (PYTHON-1127)


  • Remove invalid warning in set_session when we initialize a default connection (PYTHON-1104)

  • Set the proper default ExecutionProfile.row_factory value (PYTHON-1119)


May 27, 2019


  • Insights integration (PYTHON-1047)

Merged from OSS master (3.18):


  • Abstract Host Connection information (PYTHON-1079)

  • Improve version parsing to support a non-integer 4th component (PYTHON-1091)

  • Expose on_request_error method in the RetryPolicy (PYTHON-1064)

  • Add jitter to ExponentialReconnectionPolicy (PYTHON-1065)

Bug Fixes

  • Fix error when preparing queries with beta protocol v5 (PYTHON-1081)

  • Accept legacy empty strings as column names (PYTHON-1082)

  • Let util.SortedSet handle uncomparable elements (PYTHON-1087)


May 2, 2019

Merged from OSS 3.17.1:

Bug Fixes

  • Socket errors EAGAIN/EWOULDBLOCK are not handled properly and cause timeouts (PYTHON-1089)


February 19, 2019

Bug Fixes

  • Continuous paging sessions raise RuntimeError when results are not entirely consumed (PYTHON-1054)

Merged from OSS master (3.17):


  • Send driver name and version in startup message (PYTHON-1068)

  • Add Cluster ssl_context option to enable SSL (PYTHON-995)

  • Allow encrypted private keys for 2-way SSL cluster connections (PYTHON-995)

  • Introduce new method ConsistencyLevel.is_serial (PYTHON-1067)

  • Add Session.get_execution_profile (PYTHON-932)

  • Add host kwarg to Session.execute/execute_async APIs to send a query to a specific node (PYTHON-993)

Bug Fixes

  • NoHostAvailable when all hosts are up and connectable (PYTHON-891)

  • Serial consistency level is not used (PYTHON-1007)


  • Fail faster on incorrect lz4 import (PYTHON-1042)

  • Bump Cython dependency version to 0.29 (PYTHON-1036)

  • Expand Driver SSL Documentation (PYTHON-740)


  • Using Cluster.ssl_options to enable SSL is deprecated and will be removed in the next major release, use ssl_context.

  • DowngradingConsistencyRetryPolicy is deprecated and will be removed in the next major release. (PYTHON-937)

Merged from OSS master (3.16):

Bug Fixes

  • Cluster instantiation fails if any contact points’ hostname resolution fails (PYTHON-895)

  • Log profile name on attempt to create existing profile (PYTHON-944)

  • fails if the row_factory is using a generator (PYTHON-1026)


  • Fix wrong use of ResultSet indexing (PYTHON-1015)

  • remove ‘ nosetests’ from documentation (PYTHON-988)


November 12, 2018


  • Graph execution profiles should preserve their graph_source when graph_options is overridden (PYTHON-1021)

Bug Fixes

  • GraphSON Property deserializer should return a dict instead of a set (PYTHON-1033)

Merged from OSS master (3.16):

Bug Fixes

  • Improve and fix socket error-catching code in nonblocking-socket reactors (PYTHON-1024)

  • Non-ASCII characters in schema break CQL string generation (PYTHON-1008)

  • Fix OSS driver’s virtual table support against DSE 6.0.X and future server releases (PYTHON-1020)


  • Fix tests when RF is not maintained if we decomission a node (PYTHON-1017)


August 30, 2018

Merged from OSS master (3.15.0):


  • Parse Virtual Keyspace Metadata (PYTHON-992)

Bug Fixes

  • Tokenmap.get_replicas returns the wrong value if token coincides with the end of the range (PYTHON-978)

  • Python Driver fails with “more than 255 arguments” python exception when > 255 columns specified in query response (PYTHON-893)

  • Hang in integration.standard.test_cluster.ClusterTests.test_set_keyspace_twice (PYTHON-998)

  • Asyncore reactors should use a global variable instead of a class variable for the event loop (PYTHON-697)


  • Use global variable for libev loops so it can be subclassed (PYTHON-973)

  • Update SchemaParser for V4 (PYTHON-1006)

  • Bump Cython dependency version to 0.28 (PYTHON-1012)


April 17, 2018


  • Add NodeSync metadata (PYTHON-799)

  • Add new NodeSync failure values (PYTHON-934)

  • DETERMINISTIC and MONOTONIC Clauses for Functions and Aggregates (PYTHON-955)

Bug Fixes

  • ResponseFuture.has_more_pages may hold the wrong value (PYTHON-946)

  • Warn users when using the deprecated Session.default_consistency_level (PYTHON-953)

  • DETERMINISTIC clause in AGGREGATE misplaced in CQL generation (PYTHON-963)


  • Disallow setting default_consistency_level (PYTHON-970)

  • Add tests around cqlengine and continuous paging (PYTHON-872)

  • Fix DSE docs for Session.default_consistency_level (PYTHON-965)

Merged from OSS master (3.14.0):


  • Add one() function to the ResultSet API (PYTHON-947)

  • Create an utility function to fetch concurrently many keys from the same replica (PYTHON-647)

  • Allow filter queries with fields that have an index managed outside of cqlengine (PYTHON-966)

  • Twisted SSL Support (PYTHON-343)

  • Support IS NOT NULL operator in cqlengine (PYTHON-968)


  • Fix Broken Links in Docs (PYTHON-916)

  • Reevaluate MONKEY_PATCH_LOOP in test codebase (PYTHON-903)

  • Remove CASS_SERVER_VERSION and replace it for CASSANDRA_VERSION in tests (PYTHON-910)

  • Refactor CASSANDRA_VERSION to a some kind of version object (PYTHON-915)

  • Log warning when driver configures an authenticator, but server does not request authentication (PYTHON-940)

  • Warn users when using the deprecated Session.default_consistency_level (PYTHON-953)

  • Add DSE smoke test to OSS driver tests (PYTHON-894)

  • Improve error for batch WriteTimeouts (PYTHON-941)

  • Deprecate ResultSet indexing (PYTHON-945)


February 6, 2018


  • add CHANGELOG to docs (PYTHON-904)

  • Fix Broken Links in Docs (PYTHON-916)


January 30, 2018


  • GraphOptions should show a warning for unknown parameters (PYTHON-819)

Bug Fixes

  • dse.graph module import cause a DLL issue on Windows due to its cythonizing failure (PYTHON-900)

Merged from OSS master (3.13.0):


  • cqlengine: LIKE filter operator (PYTHON-512)

  • Support cassandra.query.BatchType with cqlengine BatchQuery (PYTHON-888)

Bug Fixes

  • AttributeError: ‘NoneType’ object has no attribute ‘add_timer’ (PYTHON-862)

  • Support retry_policy in PreparedStatement (PYTHON-861)

  • __del__ method in Session is throwing an exception (PYTHON-813)

  • LZ4 import issue with recent versions (PYTHON-897)

  • ResponseFuture._connection can be None when returning request_id (PYTHON-853)

  • ResultSet.was_applied doesn’t support batch with LWT statements (PYTHON-848)


  • cqlengine: avoid warning when unregistering connection on shutdown (PYTHON-865)

  • Fix DeprecationWarning of log.warn (PYTHON-846)

  • Fix for python3 (PYTHON-860)

  • Possible deadlock on cassandra.concurrent.execute_concurrent (PYTHON-768)

  • Add some known deprecated warnings for 4.x (PYTHON-877)

  • Remove copyright dates from copyright notices (PYTHON-863)

  • Remove “Experimental” tag from execution profiles documentation (PYTHON-840)

  • request_timer metrics descriptions are slightly incorrect (PYTHON-885)

  • Remove “Experimental” tag from cqlengine connections documentation (PYTHON-892)

  • Set in documentation default consistency for operations is LOCAL_ONE (PYTHON-901)


November 6, 2017


  • DSE protocol version 2 and continous paging backpressure (PYTHON-798)

  • GraphSON2 Serialization/Deserialization Support (PYTHON-775)

  • Add graph-results payload option for GraphSON format (PYTHON-773)

  • Send keyspace in QUERY, PREPARE, and BATCH messages (PYTHON-678)

  • Add support of Python3 IPv4Address and IPv6Address for inet types (PYTHON-751)

  • Create an AuthProvider for the DSE transitional mode (PYTHON-831)

  • WriteType.CDC and VIEW missing (PYTHON-794)

  • Warn on Cluster init if contact points are specified but LBP isn’t (legacy mode) (PYTHON-812)

  • Warn on Cluster init if contact points are specified but LBP isn’t (exection profile mode) (PYTHON-838)

  • Include hash of result set metadata in prepared stmt id (PYTHON-808)

  • Add NO_COMPACT startup option (PYTHON-839)

  • Add new exception type for CDC (PYTHON-837)

  • Allow 0ms in ConstantSpeculativeExecutionPolicy (PYTHON-836)

  • Add asyncio reactor (PYTHON-507)

Bug Fixes

  • Both _set_final_exception/result called for the same ResponseFuture (PYTHON-630)

  • Use of DCAwareRoundRobinPolicy raises NoHostAvailable exception (PYTHON-781)

  • Update date serialization to isoformat in graph (PYTHON-805)


  • Add an abstract GraphStatement to handle different graph statements (PYTHON-789)

  • Not create two sessions by default in CQLEngine (PYTHON-814)

  • Bug when subclassing AyncoreConnection (PYTHON-827)

  • Error at cleanup when closing the asyncore connections (PYTHON-829)

  • Fix sites where sessions can change during iteration (PYTHON-793)

  • cqlengine: allow min_length=0 for Ascii and Text column types (PYTHON-735)

  • Rare exception when “sys.exit(0)” after query timeouts (PYTHON-752)

  • Dont set the session keyspace when preparing statements (PYTHON-843)

  • Use of DCAwareRoundRobinPolicy raises NoHostAvailable exception (PYTHON-781)

  • Remove DeprecationWarning when using WhiteListRoundRobinPolicy (PYTHON-810)

  • Bump Cython dependency version to 0.27 (PYTHON-833)

  • Rename rpc_address to native_transport_address (PYTHON-830)


July 24, 2017


  • Implement serializers for the Graph String API (PYTHON-778)

  • Provide deserializers for GraphSON types (PYTHON-782)

  • Add Graph DurationType support (PYTHON-607)

Merged from OSS master (3.11.0):


  • Add idle_heartbeat_timeout cluster option to tune how long to wait for heartbeat responses. (PYTHON-762)

  • Add HostFilterPolicy (PYTHON-761)

Bug Fixes

  • is_idempotent flag is not propagated from PreparedStatement to BoundStatement (PYTHON-736)

  • Fix asyncore hang on exit (PYTHON-767)

  • Driver takes several minutes to remove a bad host from session (PYTHON-762)

  • Installation doesn’t always fall back to no cython in Windows (PYTHON-763)

  • Avoid to replace a connection that is supposed to shutdown (PYTHON-772)

  • request_ids may not be returned to the pool (PYTHON-739)

  • Fix murmur3 on big-endian systems (PYTHON-653)

  • Ensure unused connections are closed if a Session is deleted by the GC (PYTHON-774)

  • Fix .values_list by using db names internally (cqlengine) (PYTHON-785)


  • Bump Cython dependency version to 0.25.2 (PYTHON-754)

  • Fix DeprecationWarning when using lz4 (PYTHON-769)

  • Deprecate WhiteListRoundRobinPolicy (PYTHON-759)

  • Improve upgrade guide for materializing pages (PYTHON-464)

  • Documentation for time/date specifies timestamp inupt as microseconds (PYTHON-717)

  • Point to DSA Slack, not IRC, in docs index


May 24, 2017


  • Correct licence in DSE Driver (PYTHON-748)

Merged from OSS 3.10.0:


  • Add Duration type to cqlengine (PYTHON-750)

  • Community PR review: Raise error on primary key update only if its value changed (PYTHON-705)

  • get_query_trace() contract is ambiguous (PYTHON-196)

Bug Fixes

  • Queries using speculative execution policy timeout prematurely (PYTHON-755)

  • Fix map where results are not consumed (PYTHON-749)

  • Driver fails to encode Duration’s with large values (PYTHON-747)

  • UDT values are not updated correctly in CQLEngine (PYTHON-743)

  • UDT types are not validated in CQLEngine (PYTHON-742)

  • to_python is not implemented for types columns.Type and columns.Date in CQLEngine (PYTHON-741)

  • Clients spin infinitely trying to connect to a host that is drained (PYTHON-734)

  • Resulset.get_query_trace returns empty trace sometimes (PYTHON-730)

  • Memory grows and doesn’t get removed (PYTHON-720)

  • Fix RuntimeError caused by change dict size during iteration (PYTHON-708)

  • fix ExponentialReconnectionPolicy may throw OverflowError problem (PYTHON-707)

  • Avoid using nonexistent prepared statement in ResponseFuture (PYTHON-706)


  • Update README (PYTHON-746)

  • Test python versions 3.5 and 3.6 (PYTHON-737)

  • Docs Warning About Prepare “select *” (PYTHON-626)

  • Increase Coverage in CqlEngine Test Suite (PYTHON-505)

  • Example SSL connection code does not verify server certificates (PYTHON-469)


April 18, 2017

Release merged in changes from cassandra-driver 3.9.0

Bug Fixes

  • DateRange Parse Error (PYTHON-729)

  • MontonicTimestampGenerator.__init__ ignores class defaults (PYTHON-728)

  • metadata.get_host returning None unexpectedly (PYTHON-709)

  • Sockets associated with sessions not getting cleaned up on session.shutdown() (PYTHON-673)


  • Write documentation examples for DSE 2.0 features (PYTHON-732)


March 15, 2017

Release merged in changes from cassandra-driver 3.8.1 (PYTHON-712)

Bug Fixes

  • Migrate DateRange and DateRangeBound off namedtuple implementations (PYTHON-701)

  • Add missing rich comparisons for some custom types (PYTHON-714)

  • Fix Comparisons for DateRange util types (PYTHON-718)


  • Remove support for Cassandra 2.0 and below (PYTHON-681)


February 13, 2017


  • Support DSE DateRange type (PYTHON-668)

  • RLAC CQL output for materialized views (PYTHON-682)

Bug Fixes

  • DSE_V1 protocol should not include all of protocol v5 (PYTHON-694)


November 2, 2016


  • Add Geom Types wkt deserializer


September 13, 2016

Release upgrading to cassandra-driver 3.7.0


August 5, 2016

Release upgrading to cassandra-driver 3.6.0


June 28, 2016


  • DSE Graph Client timeouts in custom payload (PYTHON-589)

  • Make DSEGSSAPIAuthProvider accept principal name (PYTHON-574)

  • Add config profiles to DSE graph execution (PYTHON-570)

  • DSE Driver version checking (PYTHON-568)

Bug Fixes

  • Resolve FQDN from ip address and use that as host passed to SASLClient (PYTHON-566)

  • Geospatial type implementations don’t handle ‘EMPTY’ values. (PYTHON-481)


March 30, 2016


  • Distinct default timeout for graph queries (PYTHON-477)

  • Graph result parsing for known types (PYTHON-479,487)

  • Distinct read/write CL for graph execution (PYTHON-509)

  • Target graph analytics query to spark master when available (PYTHON-510)

Bug Fixes

  • Correctly handle other types in geo type equality (PYTHON-508)


February 4, 2016

Initial release