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,currentTimeandcurrentTimeUUIDfunctions (13132)
3.4.4
-
ALTER TABLEALTERhas been removed; a column’s type may not be changed after creation (12443). -
ALTER TYPEALTERhas been removed; a field’s type may not be changed after creation (12443).
3.4.3
-
Adds a new
durationdata types <data-types>(11873). -
Support for
GROUP BY(10707). -
Adds a
DEFAULT UNSEToption forINSERT JSONto ignore omitted columns (11424). -
Allows
nullas 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 anINSERTorUPDATEstatement 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_livewas applied even though a TTL had been explicitly set. -
ALTER TABLEADDandDROPnow allow multiple columns to be added/removed. -
New
PER PARTITION LIMIToption forSELECTstatements (see CASSANDRA-7017. -
User-defined functions <cql-functions>can now instantiateUDTValueandTupleValueinstances via the newUDFContextinterface (see CASSANDRA-10818. -
User-defined types <udts>may now be stored in a non-frozen form, allowing individual fields to be updated and deleted inUPDATEstatements andDELETEstatements, respectively. (CASSANDRA-7423).
3.4.0
-
Support for
materialized views <materialized-views>. -
DELETEsupport for inequality expressions andINrestrictions on any primary key columns. -
UPDATEsupport forINrestrictions on any primary key columns.
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,tinyintandsmallintdata types <data-types>have been added. -
JSON support <cql-json>has been added -
Adds new time conversion functions and deprecate
dateOfandunixTimestampOf.
3.2.0
-
User-defined types <udts>supported. -
CREATE INDEXnow supports indexing collection columns, including indexing the keys of map collections through thekeys()function -
Indexes on collections may be queried using the new
CONTAINSandCONTAINS KEYoperators -
Tuple types <tuples>were added to hold fixed-length sets of typed positional fields. -
DROP INDEXnow supports optionally specifying a keyspace.
3.1.7
-
SELECTstatements now support selecting multiple rows in a single partition using anINclause on combinations of clustering columns. -
IF NOT EXISTSandIF EXISTSsyntax is now supported byCREATE USERandDROP USERstatements, respectively.
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.2
-
NaNandInfinityhas 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
-
SELECTstatement now allows listing the partition keys (using theDISTINCTmodifier). See CASSANDRA-4536. -
The syntax
c IN ?is now supported inWHEREclauses. In that case, the value expected for the bind variable will be a list of whatever typecis. -
It is now possible to use named bind variables (using
:nameinstead of?).
3.1.0
-
ALTER TABLEDROPoption added. -
SELECTstatement now supports aliases in select clause. Aliases in WHERE and ORDER BY clauses are not supported. -
CREATEstatements forKEYSPACE,TABLEandINDEXnow supports anIF NOT EXISTScondition. Similarly,DROPstatements support aIF EXISTScondition. -
INSERTstatements optionally supports aIF NOT EXISTScondition andUPDATEsupportsIFconditions.
3.0.5
-
SELECT,UPDATE, andDELETEstatements now allow emptyINrelations (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
tokenmethod should always be used for range queries on the partition key (seeWHERE clauses <where-clause>).
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 anintcolumn (interpreting it has the equivalent of2), or42as a validblobvalue (in which case42was 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
timeuuidvalues. 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,dateOfandunixTimestampOf. -
Float constants now support the exponent notation. In other words,
4.2E10is 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. |
