更改
以下描述了每个 CQL 版本中的更改。
3.4.7
-
添加向量相似度函数 (
18640) -
删除已弃用的函数
dateOf和unixTimestampOf,替换为toTimestamp和toUnixTimestamp(18328) -
添加了对将屏蔽函数附加到表列的支持 (
18068) -
添加 UNMASK 权限 (
18069) -
添加 SELECT_MASKED 权限 (
18070) -
添加了对使用 UDF 作为屏蔽函数的支持 (
18071) -
采用 snake_case 函数名,弃用所有以前的 camelCase 或 alltogetherwithoutspaces 函数名 (
18037) -
添加新的
vector数据类型 (18504)
3.4.6
-
在 ALTER 语句中添加对 IF EXISTS 和 IF NOT EXISTS 的支持 (
16916) -
允许在单个语句中授予/撤销多个权限 (
17030) -
在 CQL 中预先散列密码 (
17334) -
添加了对 WHERE 子句组件和 INSERT/UPDATE 语句的值中进行类型转换的支持 (
14337) -
在条件 UPDATE 和 DELETE 语句中添加对 CONTAINS 和 CONTAINS KEY 的支持 (
10537) -
允许授予对键空间中所有表的权限 (
17027) -
允许按时间间隔聚合 (
11871)
3.4.5
-
添加了对算术运算符的支持 (
11935) -
添加了对日期进行
+和-操作的支持 (11936) -
添加了
currentTimestamp、currentDate、currentTime和currentTimeUUID函数 (13132)
3.4.3
-
添加了新的
duration数据类型 <data-types>(11873)。 -
支持
GROUP BY(10707)。 -
为
INSERT JSON添加了DEFAULT UNSET选项,以忽略省略的列 (11424)。 -
允许
null作为插入和更新时 TTL 的合法值。它将被视为等效于插入 0 (12216)。
3.4.2
-
如果表具有非零
default_time_to_live,则在INSERT或UPDATE语句中显式指定 TTL 为 0 将导致新写入没有过期时间(即,显式 TTL 为 0 会取消default_time_to_live)。以前情况并非如此,即使显式设置了 TTL,也会应用default_time_to_live。 -
ALTER TABLEADD和DROP现在允许添加/删除多列。 -
SELECT语句的新PER PARTITION LIMIT选项(请参阅 CASSANDRA-7017)。 -
用户定义函数 <cql-functions>现在可以通过新的UDFContext接口实例化UDTValue和TupleValue实例(请参阅 CASSANDRA-10818)。 -
用户定义类型 <udts>现在可以以非冻结形式存储,允许分别在UPDATE语句和DELETE语句中更新和删除各个字段。(CASSANDRA-7423)。
3.3.0
-
现在支持
用户定义函数和聚合 <cql-functions>。 -
允许使用双美元符号括起来的字符串文字作为单引号括起来的字符串的替代方案。
-
引入角色以取代基于用户的身份验证和访问控制
-
添加了新的
date、time、tinyint和smallint数据类型 <data-types>。 -
添加了
JSON 支持 <cql-json> -
添加了新的时间转换函数,并弃用了
dateOf和unixTimestampOf。
3.2.0
-
支持
用户定义类型 <udts>。 -
CREATE INDEX现在支持索引集合列,包括通过keys()函数索引映射集合的键 -
可以使用新的
CONTAINS和CONTAINS KEY运算符查询集合上的索引 -
添加了
元组类型 <tuples>来保存固定长度的类型化位置字段集。 -
DROP INDEX现在支持可选地指定键空间。
3.1.7
-
SELECT语句现在支持使用对聚类列组合的IN子句在单个分区中选择多行。 -
CREATE USER和DROP USER语句分别支持IF NOT EXISTS和IF EXISTS语法。
3.1.1
-
SELECT语句现在允许列出分区键(使用DISTINCT修饰符)。请参阅 CASSANDRA-4536。 -
语法
c IN ?现在在WHERE子句中受支持。在这种情况下,绑定变量的预期值为c类型的列表。 -
现在可以使用命名绑定变量(使用
:name而不是?)。
3.1.0
-
添加了
ALTER TABLEDROP选项。 -
SELECT语句现在支持 select 子句中的别名。WHERE 和 ORDER BY 子句中的别名不受支持。 -
KEYSPACE、TABLE和INDEX的CREATE语句现在支持IF NOT EXISTS条件。类似地,DROP语句支持IF EXISTS条件。 -
INSERT语句可选地支持IF NOT EXISTS条件,UPDATE支持IF条件。
3.0.5
-
SELECT、UPDATE和DELETE语句现在允许空IN关系(请参阅 CASSANDRA-5626)。
3.0.4
-
更新了自定义
辅助索引 <secondary-indexes>的语法。 -
分区键上的非等式条件现在永远不受支持,即使对于排序分区器也是如此,因为这并不正确(顺序不是分区键类型的顺序)。相反,对于分区键上的范围查询,应始终使用
token方法(请参阅WHERE 子句 <where-clause>)。
3.0.2
-
已修复
常量 <constants>的类型验证。例如,实现以前允许'2'作为int列的有效值(将其解释为等效于2),或42作为有效的blob值(在这种情况下,42被解释为blob的十六进制表示)。现在不再是这种情况,常量的类型验证现在更加严格。有关允许哪种类型的常量的详细信息,请参阅数据类型 <data-types>部分。 -
上一条中修复的类型验证导致引入了blob常量以允许输入blob。请注意,虽然此版本仍然支持将blob作为字符串常量输入(以允许更平滑地过渡到blob常量),但它现在已弃用,并将由未来版本删除。如果您以前使用字符串作为blob,则应尽快更新您的客户端代码以切换blob常量。
-
还引入了一些将本机类型转换为blob的函数。此外,token函数现在也允许在select子句中使用。有关详细信息,请参阅
关于函数的部分 <cql-functions>。
3.0.1
-
日期字符串(和时间戳)不再被接受为有效的
timeuuid值。这样做在某种程度上是一个错误,因为日期字符串不是有效的timeuuid,因此会导致令人困惑的行为。但是,以下新方法已添加以帮助使用timeuuid:now、minTimeuuid、maxTimeuuid、dateOf和unixTimestampOf。 -
浮点常量现在支持指数表示法。换句话说,
4.2E10现在是一个有效的浮点数。
版本控制
CQL语言的版本控制遵循语义版本控制指南。版本采用X.Y.Z的形式,其中X、Y和Z是表示主版本、次版本和补丁级别的整数。Cassandra发布版本与CQL语言版本之间没有关联。
| 版本 | 描述 |
|---|---|
主版本 |
当引入向后不兼容的更改时,必须提升主版本。这种情况应该很少发生。 |
次版本 |
当引入新的但向后兼容的功能时,会增加次版本。 |
补丁 |
当修复错误时,会增加补丁版本。 |
