更改
以下描述了每个 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 TABLE
ADD
和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 TABLE
DROP
选项。 -
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语言版本之间没有关联。
版本 | 描述 |
---|---|
主版本 |
当引入向后不兼容的更改时,必须提升主版本。这种情况应该很少发生。 |
次版本 |
当引入新的但向后兼容的功能时,会增加次版本。 |
补丁 |
当修复错误时,会增加补丁版本。 |