Cassandra 文档

您正在查看预发布版本的文档。

更改

以下描述了每个 CQL 版本中的更改。

3.4.7

  • 添加向量相似度函数 (18640)

  • 删除已弃用的函数 dateOfunixTimestampOf,替换为 toTimestamptoUnixTimestamp (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)

  • 添加了 currentTimestampcurrentDatecurrentTimecurrentTimeUUID 函数 (13132)

3.4.4

  • ALTER TABLE ALTER 已被删除;列的类型在创建后不能更改 (12443)。

  • ALTER TYPE ALTER 已被删除;字段的类型在创建后不能更改 (12443)。

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,则在 INSERTUPDATE 语句中显式指定 TTL 为 0 将导致新写入没有过期时间(即,显式 TTL 为 0 会取消 default_time_to_live)。以前情况并非如此,即使显式设置了 TTL,也会应用 default_time_to_live

  • ALTER TABLE ADDDROP 现在允许添加/删除多列。

  • SELECT 语句的新 PER PARTITION LIMIT 选项(请参阅 CASSANDRA-7017)。

  • 用户定义函数 <cql-functions> 现在可以通过新的 UDFContext 接口实例化 UDTValueTupleValue 实例(请参阅 CASSANDRA-10818)。

  • 用户定义类型 <udts> 现在可以以非冻结形式存储,允许分别在 UPDATE 语句和 DELETE 语句中更新和删除各个字段。(CASSANDRA-7423)。

3.4.1

  • 添加了 CAST 函数。

3.4.0

  • 支持 物化视图 <materialized-views>

  • DELETE 支持对任何主键列的不等式表达式和 IN 限制。

  • UPDATE 支持对任何主键列的 IN 限制。

3.3.1

  • 语法 TRUNCATE TABLE X 现在被接受为 TRUNCATE X 的别名。

3.3.0

  • 现在支持 用户定义函数和聚合 <cql-functions>

  • 允许使用双美元符号括起来的字符串文字作为单引号括起来的字符串的替代方案。

  • 引入角色以取代基于用户的身份验证和访问控制

  • 添加了新的 datetimetinyintsmallint 数据类型 <data-types>

  • 添加了 JSON 支持 <cql-json>

  • 添加了新的时间转换函数,并弃用了 dateOfunixTimestampOf

3.2.0

  • 支持 用户定义类型 <udts>

  • CREATE INDEX 现在支持索引集合列,包括通过 keys() 函数索引映射集合的键

  • 可以使用新的 CONTAINSCONTAINS KEY 运算符查询集合上的索引

  • 添加了 元组类型 <tuples> 来保存固定长度的类型化位置字段集。

  • DROP INDEX 现在支持可选地指定键空间。

3.1.7

  • SELECT 语句现在支持使用对聚类列组合的 IN 子句在单个分区中选择多行。

  • CREATE USERDROP USER 语句分别支持 IF NOT EXISTSIF EXISTS 语法。

3.1.6

  • 添加了新的 uuid() 方法。

  • 支持 DELETE …​ IF EXISTS 语法。

3.1.5

  • 现在可以将聚类列分组到关系中,请参阅 WHERE <where-clause> 子句。

  • 添加了对 静态列 <static-columns> 的支持。

3.1.4

  • CREATE INDEX 现在允许在创建自定义索引时指定选项。

3.1.3

  • 已将毫秒精度格式添加到 timestamp <timestamps> 解析器。

3.1.2

  • NaNInfinity 已被添加为有效的浮点数常量。它们现在是保留关键字。在您不太可能将它们用作列标识符(或键空间/表标识符)的情况下,您现在需要用双引号将它们括起来。

3.1.1

  • SELECT 语句现在允许列出分区键(使用 DISTINCT 修饰符)。请参阅 CASSANDRA-4536

  • 语法 c IN ? 现在在 WHERE 子句中受支持。在这种情况下,绑定变量的预期值为 c 类型的列表。

  • 现在可以使用命名绑定变量(使用 :name 而不是 ?)。

3.1.0

  • 添加了 ALTER TABLE DROP 选项。

  • SELECT 语句现在支持 select 子句中的别名。WHERE 和 ORDER BY 子句中的别名不受支持。

  • KEYSPACETABLEINDEXCREATE 语句现在支持 IF NOT EXISTS 条件。类似地,DROP 语句支持 IF EXISTS 条件。

  • INSERT 语句可选地支持 IF NOT EXISTS 条件,UPDATE 支持 IF 条件。

3.0.5

  • SELECTUPDATEDELETE 语句现在允许空 IN 关系(请参阅 CASSANDRA-5626)。

3.0.4

  • 更新了自定义 辅助索引 <secondary-indexes> 的语法。

  • 分区键上的非等式条件现在永远不受支持,即使对于排序分区器也是如此,因为这并不正确(顺序不是分区键类型的顺序)。相反,对于分区键上的范围查询,应始终使用 token 方法(请参阅 WHERE 子句 <where-clause>)。

3.0.3

  • 已添加对自定义二级索引 <secondary-indexes>的支持。

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,因此会导致令人困惑的行为。但是,以下新方法已添加以帮助使用timeuuidnowminTimeuuidmaxTimeuuiddateOfunixTimestampOf

  • 浮点常量现在支持指数表示法。换句话说,4.2E10现在是一个有效的浮点数。

版本控制

CQL语言的版本控制遵循语义版本控制指南。版本采用X.Y.Z的形式,其中X、Y和Z是表示主版本、次版本和补丁级别的整数。Cassandra发布版本与CQL语言版本之间没有关联。

版本 描述

主版本

当引入向后不兼容的更改时,必须提升主版本。这种情况应该很少发生。

次版本

当引入新的但向后兼容的功能时,会增加次版本。

补丁

当修复错误时,会增加补丁版本。