Changes

The following describes the changes in each version of CQL.

3.4.7

  • 18640)
  • dateOf and unixTimestampOf, replaced by toTimestamp and toUnixTimestamp (18328)
  • 18068)
  • 18069)
  • 18070)
  • 18071)
  • 18037)
  • vector data type (18504)

    3.4.6

  • 16916)
  • 17030)
  • 17334)
  • 14337)
  • 10537)
  • 17027)
  • 11871)

    3.4.5

  • 11935)
  • + and - operations on dates (11936)
  • currentTimestamp, currentDate, currentTime and currentTimeUUID functions (13132)

    3.4.4

  • ALTER TABLE ALTER has been removed; a column’s type may not be changed after creation (12443).
  • ALTER TYPE ALTER has been removed; a field’s type may not be changed after creation (12443).

    3.4.3

  • duration data types <data-types> (11873).
  • GROUP BY (10707).
  • DEFAULT UNSET option for INSERT JSON to ignore omitted columns (11424).
  • null as a legal value for TTL on insert and update. It will be treated as equivalent to inserting a 0 (12216).

    3.4.2

  • default_time_to_live, then explicitly specifying a TTL of 0 in an INSERT or UPDATE statement will result in the new writes not having any expiration (that is, an explicit TTL of 0 cancels the default_time_to_live). This wasn’t the case before and the default_time_to_live was applied even though a TTL had been explicitly set.
  • ALTER TABLE ADD and DROP now allow multiple columns to be added/removed.
  • PER PARTITION LIMIT option for SELECT statements (see CASSANDRA-7017).
  • User-defined functions <cql-functions> can now instantiate UDTValue and TupleValue instances via the new UDFContext interface (see CASSANDRA-10818).
  • User-defined types <udts> may now be stored in a non-frozen form, allowing individual fields to be updated and deleted in UPDATE statements and DELETE statements, respectively. (CASSANDRA-7423)).

    3.4.1

  • CAST functions.

    3.4.0

  • materialized views <materialized-views>.
  • DELETE support for inequality expressions and IN restrictions on any primary key columns.
  • UPDATE support for IN restrictions on any primary key columns.

    3.3.1

  • TRUNCATE TABLE X is now accepted as an alias for TRUNCATE X.

    3.3.0

  • User-defined functions and aggregates <cql-functions> are now supported.
  • Allows double-dollar enclosed strings literals as an alternative to single-quote enclosed strings.
  • Introduces Roles to supersede user based authentication and access control
  • date, time, tinyint and smallint data types <data-types> have been added.
  • JSON support <cql-json> has been added
  • dateOf and unixTimestampOf.

    3.2.0

  • User-defined types <udts> supported.
  • CREATE INDEX now supports indexing collection columns, including indexing the keys of map collections through the keys() function
  • CONTAINS and CONTAINS KEY operators
  • Tuple types <tuples> were added to hold fixed-length sets of typed positional fields.
  • DROP INDEX now supports optionally specifying a keyspace.

    3.1.7

  • SELECT statements now support selecting multiple rows in a single partition using an IN clause on combinations of clustering columns.
  • IF NOT EXISTS and IF EXISTS syntax is now supported by CREATE USER and DROP USER statements, respectively.

    3.1.6

  • uuid() method has been added.
  • DELETE …​ IF EXISTS syntax.

    3.1.5

  • WHERE <where-clause> clauses.
  • static columns <static-columns>.

    3.1.4

  • CREATE INDEX now allows specifying options when creating CUSTOM indexes.

    3.1.3

  • timestamp <timestamps> parser.

    3.1.2

  • NaN and Infinity has been added as valid float constants. They are now reserved keywords. In the unlikely case you we using them as a column identifier (or keyspace/table one), you will now need to double quote them.

    3.1.1

  • SELECT statement now allows listing the partition keys (using the DISTINCT modifier). See CASSANDRA-4536.
  • c IN ? is now supported in WHERE clauses. In that case, the value expected for the bind variable will be a list of whatever type c is.
  • :name instead of ?).

    3.1.0

  • ALTER TABLE DROP option added.
  • SELECT statement now supports aliases in select clause. Aliases in WHERE and ORDER BY clauses are not supported.
  • CREATE statements for KEYSPACE, TABLE and INDEX now supports an IF NOT EXISTS condition. Similarly, DROP statements support a IF EXISTS condition.
  • INSERT statements optionally supports a IF NOT EXISTS condition and UPDATE supports IF conditions.

    3.0.5

  • SELECT, UPDATE, and DELETE statements now allow empty IN relations (see CASSANDRA-5626).

    3.0.4

  • secondary indexes <secondary-indexes>.
  • not the one of the type of the partition key). Instead, the token method should always be used for range queries on the partition key (see WHERE clauses <where-clause>).

    3.0.3

  • secondary indexes <secondary-indexes> has been added.

    3.0.2

  • constants <constants> has been fixed. For instance, the implementation used to allow '2' as a valid value for an int column (interpreting it has the equivalent of 2), or 42 as a valid blob value (in which case 42 was interpreted as an hexadecimal representation of the blob). This is no longer the case, type validation of constants is now more strict. See the data types <data-types> section for details on which constant is allowed for which type.
  • The type validation fixed of the previous point has lead to the introduction of blobs constants to allow the input of blobs. Do note that while the input of blobs as strings constant is still supported by this version (to allow smoother transition to blob constant), it is now deprecated and will be removed by a future version. If you were using strings as blobs, you should thus update your client code ASAP to switch blob constants.
  • section on functions <cql-functions> for details.

    3.0.1

  • timeuuid values. Doing so was a bug in the sense that date string are not valid timeuuid, and it was thus resulting in confusing behaviors. However, the following new methods have been added to help working with timeuuid: now, minTimeuuid, maxTimeuuid , dateOf and unixTimestampOf.
  • 4.2E10 is now a valid floating point value.

    Versioning

    Semantic Versioning guidelines. Versions take the form X.Y.Z where X, Y, and Z are integer values representing major, minor, and patch level respectively. There is no correlation between Cassandra release versions and the CQL language version.