Changes
The following describes the changes in each version of CQL.
3.4.5
-
Adds support for arithmetic operators (
11935
) -
Adds support for
+
and-
operations on dates (11936
) -
Adds
currentTimestamp
,currentDate
,currentTime
andcurrentTimeUUID
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
-
Adds a new
duration
data types <data-types>
(11873
). -
Support for
GROUP BY
(10707
). -
Adds a
DEFAULT UNSET
option forINSERT JSON
to ignore omitted columns (11424
). -
Allows
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
-
If a table has a non zero
default_time_to_live
, then explicitly specifying a TTL of 0 in anINSERT
orUPDATE
statement will result in the new writes not having any expiration (that is, an explicit TTL of 0 cancels thedefault_time_to_live
). This wasn’t the case before and thedefault_time_to_live
was applied even though a TTL had been explicitly set. -
ALTER TABLE
ADD
andDROP
now allow multiple columns to be added/removed. -
New
PER PARTITION LIMIT
option forSELECT
statements (see CASSANDRA-7017. -
User-defined functions <cql-functions>
can now instantiateUDTValue
andTupleValue
instances via the newUDFContext
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 inUPDATE
statements andDELETE
statements, respectively. (CASSANDRA-7423).
3.4.1
-
Adds
CAST
functions.
3.4.0
-
Support for
materialized views <materialized-views>
. -
DELETE
support for inequality expressions andIN
restrictions on any primary key columns. -
UPDATE
support forIN
restrictions on any primary key columns.
3.3.1
-
The syntax
TRUNCATE TABLE X
is now accepted as an alias forTRUNCATE 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
-
New
date
,time
,tinyint
andsmallint
data types <data-types>
have been added. -
JSON support <cql-json>
has been added -
Adds new time conversion functions and deprecate
dateOf
andunixTimestampOf
.
3.2.0
-
User-defined types <udts>
supported. -
CREATE INDEX
now supports indexing collection columns, including indexing the keys of map collections through thekeys()
function -
Indexes on collections may be queried using the new
CONTAINS
andCONTAINS 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 anIN
clause on combinations of clustering columns. -
IF NOT EXISTS
andIF EXISTS
syntax is now supported byCREATE USER
andDROP USER
statements, respectively.
3.1.6
-
A new
uuid()
method has been added. -
Support for
DELETE … IF EXISTS
syntax.
3.1.5
-
It is now possible to group clustering columns in a relation, see
WHERE <where-clause>
clauses. -
Added support for
static columns <static-columns>
.
3.1.4
-
CREATE INDEX
now allows specifying options when creating CUSTOM indexes.
3.1.3
-
Millisecond precision formats have been added to the
timestamp <timestamps>
parser.
3.1.2
-
NaN
andInfinity
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 theDISTINCT
modifier). See CASSANDRA-4536. -
The syntax
c IN ?
is now supported inWHERE
clauses. In that case, the value expected for the bind variable will be a list of whatever typec
is. -
It is now possible to use named bind variables (using
: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 forKEYSPACE
,TABLE
andINDEX
now supports anIF NOT EXISTS
condition. Similarly,DROP
statements support aIF EXISTS
condition. -
INSERT
statements optionally supports aIF NOT EXISTS
condition andUPDATE
supportsIF
conditions.
3.0.5
-
SELECT
,UPDATE
, andDELETE
statements now allow emptyIN
relations (see CASSANDRA-5626.
3.0.4
-
Updated the syntax for custom
secondary indexes <secondary-indexes>
. -
Non-equal condition on the partition key are now never supported, even for ordering partitioner as this was not correct (the order was 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 (seeWHERE clauses <where-clause>
).
3.0.3
-
Support for custom
secondary indexes <secondary-indexes>
has been added.
3.0.2
-
Type validation for the
constants <constants>
has been fixed. For instance, the implementation used to allow'2'
as a valid value for anint
column (interpreting it has the equivalent of2
), or42
as a validblob
value (in which case42
was interpreted as an hexadecimal representation of the blob). This is no longer the case, type validation of constants is now more strict. See thedata 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.
-
A number of functions to convert native types to blobs have also been introduced. Furthermore the token function is now also allowed in select clauses. See the
section on functions <cql-functions>
for details.
3.0.1
-
Date strings (and timestamps) are no longer accepted as valid
timeuuid
values. Doing so was a bug in the sense that date string are not validtimeuuid
, and it was thus resulting in confusing behaviors. However, the following new methods have been added to help working withtimeuuid
:now
,minTimeuuid
,maxTimeuuid
,dateOf
andunixTimestampOf
. -
Float constants now support the exponent notation. In other words,
4.2E10
is now a valid floating point value.
Versioning
Versioning of the CQL language adheres to the 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.
version | description |
---|---|
Major |
The major version must be bumped when backward incompatible changes are introduced. This should rarely occur. |
Minor |
Minor version increments occur when new, but backward compatible, functionality is introduced. |
Patch |
The patch version is incremented when bugs are fixed. |