Changelog
4.3.1
- [bug] JAVA-2557: Accept any negative length when decoding elements of tuples and UDTs
4.3.0
- [improvement] JAVA-2497: Ensure nodes and exceptions are serializable
- [bug] JAVA-2464: Fix initial schema refresh when reconnect-on-init is enabled
- [improvement] JAVA-2516: Enable hostname validation with Cloud
- [documentation]: JAVA-2460: Document how to determine the local DC
- [improvement] JAVA-2476: Improve error message when codec registry inspects a collection with a null element
- [documentation] JAVA-2509: Mention file-based approach for Cloud configuration in the manual
- [improvement] JAVA-2447: Mention programmatic local DC method in Default LBP error message
- [improvement] JAVA-2459: Improve extensibility of existing load balancing policies
- [documentation] JAVA-2428: Add developer docs
- [documentation] JAVA-2503: Migrate Cloud “getting started” page to driver manual
- [improvement] JAVA-2484: Add errors for cloud misconfiguration
- [improvement] JAVA-2490: Allow to read the secure bundle from an InputStream
- [new feature] JAVA-2478: Allow to provide the secure bundle via URL
- [new feature] JAVA-2356: Support for DataStax Cloud API
- [improvement] JAVA-2407: Improve handling of logback configuration files in IDEs
- [improvement] JAVA-2434: Add support for custom cipher suites and host name validation to ProgrammaticSslEngineFactory
- [improvement] JAVA-2480: Upgrade Jackson to 2.10.0
- [documentation] JAVA-2505: Annotate Node.getHostId() as nullable
- [improvement] JAVA-1708: Support DSE “everywhere” replication strategy
- [improvement] JAVA-2471: Consider DSE version when parsing the schema
- [improvement] JAVA-2444: Add method setRoutingKey(ByteBuffer…) to StatementBuilder
- [improvement] JAVA-2398: Improve support for optional dependencies in OSGi
- [improvement] JAVA-2452: Allow “none” as a compression option
- [improvement] JAVA-2419: Allow registration of user codecs at runtime
- [documentation] JAVA-2384: Add quick overview section to each manual page
- [documentation] JAVA-2412: Cover DDL query debouncing in FAQ and upgrade guide
- [documentation] JAVA-2416: Update paging section in the manual
- [improvement] JAVA-2402: Add setTracing(boolean) to StatementBuilder
- [bug] JAVA-2466: Set idempotence to null in BatchStatement.newInstance
4.2.2
- [bug] JAVA-2475: Fix message size when query string contains Unicode surrogates
- [bug] JAVA-2470: Fix Session.OSS_DRIVER_COORDINATES for shaded JAR
4.2.1
- [bug] JAVA-2454: Handle “empty” CQL type while parsing schema
- [improvement] JAVA-2455: Improve logging of schema refresh errors
- [documentation] JAVA-2429: Document expected types on DefaultDriverOption
- [documentation] JAVA-2426: Fix month pattern in CqlDuration documentation
- [bug] JAVA-2451: Make zero a valid estimated size for PagingIterableSpliterator
- [bug] JAVA-2443: Compute prepared statement PK indices for protocol v3
- [bug] JAVA-2430: Use variable metadata to infer the routing keyspace on bound statements
4.2.0
- [improvement] JAVA-2390: Add methods to set the SSL engine factory programmatically
- [improvement] JAVA-2379: Fail fast if prepared id doesn’t match when repreparing on the fly
- [bug] JAVA-2375: Use per-request keyspace when repreparing on the fly
- [improvement] JAVA-2370: Remove auto-service plugin from mapper processor
- [improvement] JAVA-2377: Add a config option to make driver threads daemon
- [improvement] JAVA-2371: Handle null elements in collections on the decode path
- [improvement] JAVA-2351: Add a driver example for the object mapper
- [bug] JAVA-2323: Handle restart of a node with same host_id but a different address
- [improvement] JAVA-2303: Ignore peer rows matching the control host’s RPC address
- [improvement] JAVA-2236: Add methods to set the auth provider programmatically
- [improvement] JAVA-2369: Change mapper annotations retention to runtime
- [improvement] JAVA-2365: Redeclare default constants when an enum is abstracted behind an interface
- [improvement] JAVA-2302: Better target mapper errors and warnings for inherited methods
- [improvement] JAVA-2336: Expose byte utility methods in the public API
- [improvement] JAVA-2338: Revisit toString() for data container types
- [bug] JAVA-2367: Fix column names in EntityHelper.updateByPrimaryKey
- [bug] JAVA-2358: Fix list of reserved CQL keywords
- [improvement] JAVA-2359: Allow default keyspace at the mapper level
- [improvement] JAVA-2306: Clear security tokens from memory immediately after use
- [improvement] JAVA-2320: Expose more attributes on mapper Select for individual query clauses
- [bug] JAVA-2332: Destroy connection pool when a node gets removed
- [bug] JAVA-2324: Add support for primitive shorts in mapper
- [bug] JAVA-2325: Allow “is” prefix for boolean getters in mapped entities
- [improvement] JAVA-2308: Add customWhereClause to
@Delete
- [improvement] JAVA-2247: PagingIterable implementations should implement spliterator()
- [bug] JAVA-2312: Handle UDTs with names that clash with collection types
- [improvement] JAVA-2307: Improve
@Select
and@Delete
by not requiring full primary key - [improvement] JAVA-2315: Improve extensibility of session builder
- [bug] JAVA-2394: BaseCcmRule DseRequirement max should use DseVersion, not Cassandra version
4.1.0
- [documentation] JAVA-2294: Fix wrong examples in manual page on batch statements
- [bug] JAVA-2304: Avoid direct calls to ByteBuffer.array()
- [new feature] JAVA-2078: Add object mapper
- [improvement] JAVA-2297: Add a NettyOptions method to set socket options
- [bug] JAVA-2280: Ignore peer rows with missing host id or RPC address
- [bug] JAVA-2264: Adjust HashedWheelTimer tick duration from 1 to 100 ms
- [bug] JAVA-2260: Handle empty collections in PreparedStatement.bind(…)
- [improvement] JAVA-2278: Pass the request’s log prefix to RequestTracker
- [bug] JAVA-2253: Don’t strip trailing zeros in ByteOrderedToken
- [improvement] JAVA-2207: Add bulk value assignment to QueryBuilder Insert
- [bug] JAVA-2234: Handle terminated executor when the session is closed twice
- [documentation] JAVA-2220: Emphasize that query builder is now a separate artifact in root README
- [documentation] JAVA-2217: Cover contact points and local datacenter earlier in the manual
- [improvement] JAVA-2242: Allow skipping all integration tests with -DskipITs
- [improvement] JAVA-2241: Make DefaultDriverContext.cycleDetector protected
- [bug] JAVA-2226: Support IPv6 contact points in the configuration
4.0.1
- [new feature] JAVA-2201: Expose a public API for programmatic config
- [new feature] JAVA-2205: Expose public factory methods for alternative config loaders
- [bug] JAVA-2214: Fix flaky RequestLoggerIT test
- [bug] JAVA-2203: Handle unresolved addresses in DefaultEndPoint
- [bug] JAVA-2210: Add ability to set TTL for modification queries
- [improvement] JAVA-2212: Add truncate to QueryBuilder
- [improvement] JAVA-2211: Upgrade Jersey examples to fix security issue sid-3606
- [bug] JAVA-2193: Fix flaky tests in ExecutionInfoWarningsIT
- [improvement] JAVA-2197: Skip deployment of examples and integration tests to Maven central
4.0.0
- [improvement] JAVA-2192: Don’t return generic types with wildcards
- [improvement] JAVA-2148: Add examples
- [bug] JAVA-2189: Exclude virtual keyspaces from token map computation
- [improvement] JAVA-2183: Enable materialized views when testing against Cassandra 4
- [improvement] JAVA-2182: Add insertInto().json() variant that takes an object in QueryBuilder
- [improvement] JAVA-2161: Annotate mutating methods with
@CheckReturnValue
- [bug] JAVA-2177: Don’t exclude down nodes when initializing LBPs
- [improvement] JAVA-2143: Rename Statement.setTimestamp() to setQueryTimestamp()
- [improvement] JAVA-2165: Abstract node connection information
- [improvement] JAVA-2090: Add support for additional_write_policy and read_repair table options
- [improvement] JAVA-2164: Rename statement builder methods to setXxx
- [bug] JAVA-2178: QueryBuilder: Alias after function column is not included in a query
- [improvement] JAVA-2158: Allow BuildableQuery to build statement with values
- [improvement] JAVA-2150: Improve query builder error message on unsupported literal type
- [documentation] JAVA-2149: Improve Term javadocs in the query builder
4.0.0-rc1
- [improvement] JAVA-2106: Log server side warnings returned from a query
- [improvement] JAVA-2151: Drop “Dsl” suffix from query builder main classes
- [new feature] JAVA-2144: Expose internal API to hook into the session lifecycle
- [improvement] JAVA-2119: Add PagingIterable abstraction as a supertype of ResultSet
- [bug] JAVA-2063: Normalize authentication logging
- [documentation] JAVA-2034: Add performance recommendations in the manual
- [improvement] JAVA-2077: Allow reconnection policy to detect first connection attempt
- [improvement] JAVA-2067: Publish javadocs JAR for the shaded module
- [improvement] JAVA-2103: Expose partitioner name in TokenMap API
- [documentation] JAVA-2075: Document preference for LZ4 over Snappy
4.0.0-beta3
- [bug] JAVA-2066: Array index range error when fetching routing keys on bound statements
- [documentation] JAVA-2061: Add section to upgrade guide about updated type mappings
- [improvement] JAVA-2038: Add jitter to delays between reconnection attempts
- [improvement] JAVA-2053: Cache results of session.prepare()
- [improvement] JAVA-2058: Make programmatic config reloading part of the public API
- [improvement] JAVA-1943: Fail fast in execute() when the session is closed
- [improvement] JAVA-2056: Reduce HashedWheelTimer tick duration
- [bug] JAVA-2057: Do not create pool when SUGGEST_UP topology event received
- [improvement] JAVA-2049: Add shorthand method to SessionBuilder to specify local DC
- [bug] JAVA-2037: Fix NPE when preparing statement with no bound variables
- [improvement] JAVA-2014: Schedule timeouts on a separate Timer
- [bug] JAVA-2029: Handle schema refresh failure after a DDL query
- [bug] JAVA-1947: Make schema parsing more lenient and allow missing system_virtual_schema
- [bug] JAVA-2028: Use CQL form when parsing UDT types in system tables
- [improvement] JAVA-1918: Document temporal types
- [improvement] JAVA-1914: Optimize use of System.nanoTime in CqlRequestHandlerBase
- [improvement] JAVA-1945: Document corner cases around UDT and tuple attachment
- [improvement] JAVA-2026: Make CqlDuration implement TemporalAmount
- [improvement] JAVA-2017: Slightly optimize conversion methods on the hot path
- [improvement] JAVA-2010: Make dependencies to annotations required again
- [improvement] JAVA-1978: Add a config option to keep contact points unresolved
- [bug] JAVA-2000: Fix ConcurrentModificationException during channel shutdown
- [improvement] JAVA-2002: Reimplement TypeCodec.accepts to improve performance
- [improvement] JAVA-2011: Re-add ResultSet.getAvailableWithoutFetching() and isFullyFetched()
- [improvement] JAVA-2007: Make driver threads extend FastThreadLocalThread
- [bug] JAVA-2001: Handle zero timeout in admin requests
4.0.0-beta2
- [new feature] JAVA-1919: Provide a timestamp <=> ZonedDateTime codec
- [improvement] JAVA-1989: Add BatchStatement.newInstance(BatchType, Iterable
) - [improvement] JAVA-1988: Remove pre-fetching from ResultSet API
- [bug] JAVA-1948: Close session properly when LBP fails to initialize
- [improvement] JAVA-1949: Improve error message when contact points are wrong
- [improvement] JAVA-1956: Add statementsCount accessor to BatchStatementBuilder
- [bug] JAVA-1946: Ignore protocol version in equals comparison for UdtValue/TupleValue
- [new feature] JAVA-1932: Send Driver Name and Version in Startup message
- [new feature] JAVA-1917: Add ability to set node on statement
- [improvement] JAVA-1916: Base TimestampCodec.parse on java.util.Date.
- [improvement] JAVA-1940: Clean up test resources when CCM integration tests finish
- [bug] JAVA-1938: Make CassandraSchemaQueries classes public
- [improvement] JAVA-1925: Rename context getters
- [improvement] JAVA-1544: Check API compatibility with Revapi
- [new feature] JAVA-1900: Add support for virtual tables
4.0.0-beta1
- [new feature] JAVA-1869: Add DefaultDriverConfigLoaderBuilder
- [improvement] JAVA-1913: Expose additional counters on Node
- [improvement] JAVA-1880: Rename “config profile” to “execution profile”
- [improvement] JAVA-1889: Upgrade dependencies to the latest minor versions
- [improvement] JAVA-1819: Propagate more attributes to bound statements
- [improvement] JAVA-1897: Improve extensibility of schema metadata classes
- [improvement] JAVA-1437: Enable SSL hostname validation by default
- [improvement] JAVA-1879: Duplicate basic.request options as Request/Statement attributes
- [improvement] JAVA-1870: Use sensible defaults in RequestLogger if config options are missing
- [improvement] JAVA-1877: Use a separate reconnection schedule for the control connection
- [improvement] JAVA-1763: Generate a binary tarball as part of the build process
- [improvement] JAVA-1884: Add additional methods from TypeToken to GenericType
- [improvement] JAVA-1883: Use custom queue implementation for LBP’s query plan
- [improvement] JAVA-1890: Add more configuration options to DefaultSslEngineFactory
- [bug] JAVA-1895: Rename PreparedStatement.getPrimaryKeyIndices to getPartitionKeyIndices
- [bug] JAVA-1891: Allow null items when setting values in bulk
- [improvement] JAVA-1767: Improve message when column not in result set
- [improvement] JAVA-1624: Expose ExecutionInfo on exceptions where applicable
- [improvement] JAVA-1766: Revisit nullability
- [new feature] JAVA-1860: Allow reconnection at startup if no contact point is available
- [improvement] JAVA-1866: Make all public policies implement AutoCloseable
- [new feature] JAVA-1762: Build alternate core artifact with Netty shaded
- [new feature] JAVA-1761: Add OSGi descriptors
- [bug] JAVA-1560: Correctly propagate policy initialization errors
- [improvement] JAVA-1865: Add RelationMetadata.getPrimaryKey()
- [improvement] JAVA-1862: Add ConsistencyLevel.isDcLocal and isSerial
- [improvement] JAVA-1858: Implement Serializable in implementations, not interfaces
- [improvement] JAVA-1830: Surface response frame size in ExecutionInfo
- [improvement] JAVA-1853: Add newValue(Object…) to TupleType and UserDefinedType
- [improvement] JAVA-1815: Reorganize configuration into basic/advanced categories
- [improvement] JAVA-1848: Add logs to DefaultRetryPolicy
- [new feature] JAVA-1832: Add Ec2MultiRegionAddressTranslator
- [improvement] JAVA-1825: Add remaining Typesafe config primitive types to DriverConfigProfile
- [new feature] JAVA-1846: Add ConstantReconnectionPolicy
- [improvement] JAVA-1824: Make policies overridable in profiles
- [bug] JAVA-1569: Allow null to be used in positional and named values in statements
- [new feature] JAVA-1592: Expose request’s total Frame size through API
- [new feature] JAVA-1829: Add metrics for bytes-sent and bytes-received
- [improvement] JAVA-1755: Normalize usage of DEBUG/TRACE log levels
- [improvement] JAVA-1803: Log driver version on first use
- [improvement] JAVA-1792: Add AuthProvider callback to handle missing challenge from server
- [improvement] JAVA-1775: Assume default packages for built-in policies
- [improvement] JAVA-1774: Standardize policy locations
- [improvement] JAVA-1798: Allow passing the default LBP filter as a session builder argument
- [new feature] JAVA-1523: Add query logger
- [improvement] JAVA-1801: Revisit NodeStateListener and SchemaChangeListener APIs
- [improvement] JAVA-1759: Revisit metrics API
- [improvement] JAVA-1776: Use concurrency annotations
- [improvement] JAVA-1799: Use CqlIdentifier for simple statement named values
- [new feature] JAVA-1515: Add query builder
- [improvement] JAVA-1773: Make DriverConfigProfile enumerable
- [improvement] JAVA-1787: Use standalone shaded Guava artifact
- [improvement] JAVA-1769: Allocate exact buffer size for outgoing requests
- [documentation] JAVA-1780: Add manual section about case sensitivity
- [new feature] JAVA-1536: Add request throttling
- [improvement] JAVA-1772: Revisit multi-response callbacks
- [new feature] JAVA-1537: Add remaining socket options
- [bug] JAVA-1756: Propagate custom payload when preparing a statement
- [improvement] JAVA-1847: Add per-node request tracking
4.0.0-alpha3
- [new feature] JAVA-1518: Expose metrics
- [improvement] JAVA-1739: Add host_id and schema_version to node metadata
- [improvement] JAVA-1738: Convert enums to allow extensibility
- [bug] JAVA-1727: Override DefaultUdtValue.equals
- [bug] JAVA-1729: Override DefaultTupleValue.equals
- [improvement] JAVA-1720: Merge Cluster and Session into a single interface
- [improvement] JAVA-1713: Use less nodes in DefaultLoadBalancingPolicyIT
- [improvement] JAVA-1707: Add test infrastructure for running DSE clusters with CCM
- [bug] JAVA-1715: Propagate unchecked exceptions to CompletableFuture in SyncAuthenticator methods
- [improvement] JAVA-1714: Make replication strategies pluggable
- [new feature] JAVA-1647: Handle metadata_changed flag in protocol v5
- [new feature] JAVA-1633: Handle per-request keyspace in protocol v5
- [improvement] JAVA-1678: Warn if auth is configured on the client but not the server
- [improvement] JAVA-1673: Remove schema agreement check when repreparing on up
- [new feature] JAVA-1526: Provide a single load balancing policy implementation
- [improvement] JAVA-1680: Improve error message on batch log write timeout
- [improvement] JAVA-1675: Remove dates from copyright headers
- [improvement] JAVA-1645: Don’t log stack traces at WARN level
- [new feature] JAVA-1524: Add query trace API
- [improvement] JAVA-1646: Provide a more readable error when connecting to Cassandra 2.0 or lower
- [improvement] JAVA-1662: Raise default request timeout
- [improvement] JAVA-1566: Enforce API rules automatically
- [bug] JAVA-1584: Validate that no bound values are unset in protocol v3
4.0.0-alpha2
- [new feature] JAVA-1525: Handle token metadata
- [new feature] JAVA-1638: Check schema agreement
- [new feature] JAVA-1494: Implement Snappy and LZ4 compression
- [new feature] JAVA-1514: Port Uuids utility class
- [new feature] JAVA-1520: Add node state listeners
- [new feature] JAVA-1493: Handle schema metadata
- [improvement] JAVA-1605: Refactor request execution model
- [improvement] JAVA-1597: Fix raw usages of Statement
- [improvement] JAVA-1542: Enable JaCoCo code coverage
- [improvement] JAVA-1295: Auto-detect best protocol version in mixed cluster
- [bug] JAVA-1565: Mark node down when it loses its last connection and was already reconnecting
- [bug] JAVA-1594: Don’t create pool if node comes back up but is ignored
- [bug] JAVA-1593: Reconnect control connection if current node is removed, forced down or ignored
- [bug] JAVA-1595: Don’t use system.local.rpc_address when refreshing node list
- [bug] JAVA-1568: Handle Reconnection#reconnectNow/stop while the current attempt is still in progress
- [improvement] JAVA-1585: Add GenericType#where
- [improvement] JAVA-1590: Properly skip deployment of integration-tests module
- [improvement] JAVA-1576: Expose AsyncResultSet’s iterator through a currentPage() method
- [improvement] JAVA-1591: Add programmatic way to get driver version
4.0.0-alpha1
- [improvement] JAVA-1586: Throw underlying exception when codec not found in cache
- [bug] JAVA-1583: Handle write failure in ChannelHandlerRequest
- [improvement] JAVA-1541: Reorganize configuration
- [improvement] JAVA-1577: Set default consistency level to LOCAL_ONE
- [bug] JAVA-1548: Retry idempotent statements on READ_TIMEOUT and UNAVAILABLE
- [bug] JAVA-1562: Fix various issues around heart beats
- [improvement] JAVA-1546: Make all statement implementations immutable
- [bug] JAVA-1554: Include VIEW and CDC in WriteType
- [improvement] JAVA-1498: Add a cache above Typesafe config
- [bug] JAVA-1547: Abort pending requests when connection dropped
- [new feature] JAVA-1497: Port timestamp generators from 3.x
- [improvement] JAVA-1539: Configure for deployment to Maven central
- [new feature] JAVA-1519: Close channel if number of orphan stream ids exceeds a configurable threshold
- [new feature] JAVA-1529: Make configuration reloadable
- [new feature] JAVA-1502: Reprepare statements on newly added/up nodes
- [new feature] JAVA-1530: Add ResultSet.wasApplied
- [improvement] JAVA-1531: Merge CqlSession and Session
- [new feature] JAVA-1513: Handle batch statements
- [improvement] JAVA-1496: Improve log messages
- [new feature] JAVA-1501: Reprepare on the fly when we get an UNPREPARED response
- [bug] JAVA-1499: Wait for load balancing policy at cluster initialization
- [new feature] JAVA-1495: Add prepared statements