變更
以下說明每個 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
) -
允許在單一陳述式中 GRANT/REVOKE 多個權限 (
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
資料類型 <資料類型>
(11873
)。 -
支援
GROUP BY
(10707
)。 -
加入
DEFAULT UNSET
選項,用於INSERT JSON
以忽略已省略的欄位 (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
運算子查詢集合上的索引 -
新增
Tuple 類型 <tuples>
來保存固定長度的已輸入類型位置欄位組。 -
DROP INDEX
現在支援選擇性地指定鍵空間。
3.1.7
-
SELECT
陳述式現在支援使用IN
子句在單一分割區中選擇多個列,該子句針對分群欄位的組合。 -
IF NOT EXISTS
和IF EXISTS
語法現在分別由CREATE USER
和DROP USER
陳述式支援。
3.1.1
-
SELECT
陳述式現在允許列出分組鍵(使用DISTINCT
修改器)。請參閱 CASSANDRA-4536。 -
現在在
WHERE
子句中支援c IN ?
語法。在這種情況下,繫結變數預期的值將是c
類型的清單。 -
現在可以使用命名繫結變數(使用
:name
代替?
)。
3.1.0
-
已新增
ALTER TABLE
DROP
選項。 -
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 <secondary-indexes>
的語法。 -
現在永遠不支援分組鍵上的非等於條件,即使對於排序分區器也是如此,因為這不正確(順序不是分組鍵類型的順序)。相反,
token
方法應始終用於分組鍵上的範圍查詢(請參閱WHERE clauses <where-clause>
)。
3.0.2
-
已修正
constants <constants>
的類型驗證。例如,實作過去允許'2'
作為int
欄位的有效值(將其解釋為等同於2
),或42
作為有效的blob
值(這種情況下,42
被解釋為 blob 的十六進位表示)。現在不再如此,常數的類型驗證現在更加嚴格。有關哪種類型允許哪個常數的詳細資訊,請參閱data types <data-types>
區段。 -
前一點修正的類型驗證已導致引入 blob 常數,以允許輸入 blob。請注意,雖然此版本仍支援將 blob 作為字串常數輸入(以允許更順利地轉換為 blob 常數),但現在已不建議使用,且將在未來版本中移除。如果您將字串用作 blob,則應盡快更新您的用戶端程式碼以切換 blob 常數。
-
還引入了許多將原生類型轉換為 blob 的函式。此外,現在也允許在選取子句中使用 token 函式。有關詳細資訊,請參閱
section on functions <cql-functions>
。
3.0.1
-
日期字串(和時間戳記)不再被接受為有效的
timeuuid
值。這樣做是一個錯誤,因為日期字串不是有效的timeuuid
,因此導致 令人困惑的行為。但是,已新增下列新方法來協助處理timeuuid
:now
、minTimeuuid
、maxTimeuuid
、dateOf
和unixTimestampOf
。 -
浮點常數現在支援指數表示法。換句話說,
4.2E10
現在是一個有效的浮點值。
版本控制
CQL 語言的版本控制遵循 語意化版本控制 指南。版本採用 X.Y.Z 形式,其中 X、Y 和 Z 是分別代表主要、次要和修補程式的整數值。Cassandra 發行版本和 CQL 語言版本之間沒有關聯性。
版本 | 說明 |
---|---|
主要 |
當引入向後不相容的變更時,必須升級主要版本。這應該很少發生。 |
次要 |
當引入新的但向後相容的功能時,會增加次要版本。 |
修補程式 |
當錯誤修正時,修補程式版本會遞增。 |