変更点
以下は、CQLの各バージョンの変更点を説明しています。
3.4.7
-
ベクトル類似度関数`(18640)`を追加
-
非推奨の関数`dateOf`と`unixTimestampOf`を削除し、`toTimestamp`と`toUnixTimestamp`に置き換えられました `(18328)`
-
マスキング関数をテーブル列にアタッチするためのサポートが追加されました `(18068)`
-
UNMASKパーミッションを追加 `(18069)`
-
SELECT_MASKEDパーミッションを追加 `(18070)`
-
UDFをマスキング関数として使用するためのサポートを追加 `(18071)`
-
スネークケースの関数名を採用し、以前のキャメルケースまたはスペースなしの関数名をすべて非推奨にしました `(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.4
-
`ALTER TABLE` `ALTER`は削除されました。 列の型は、作成後に変更できません `(12443)`。
-
`ALTER TYPE` `ALTER`は削除されました。 フィールドの型は、作成後に変更できません `(12443)`。
3.4.3
-
新しい`duration` `データ型<data-types>`を追加 `(11873)`。
-
`GROUP BY`のサポート `(10707)`。
-
`DEFAULT UNSET`オプションを`INSERT JSON`に追加して、省略された列を無視するようにしました `(11424)`。
-
挿入および更新時にTTLの有効な値として`null`を許可します。 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.4.0
-
`マテリアライズドビュー<materialized-views>`のサポート。
-
プライマリキー列の不等式と`IN`制限に対する`DELETE`のサポート。
-
プライマリキー列の`IN`制限に対する`UPDATE`のサポート。
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`句を使用して、単一パーティションで複数の行を選択できるようになりました。
-
`IF NOT EXISTS`および`IF EXISTS`構文は、それぞれ`CREATE USER`および`DROP USER`ステートメントでサポートされるようになりました。
3.1.5
-
関係でクラスタリング列をグループ化できるようになりました。`WHERE <where-clause>`句を参照してください。
-
`静的列<static-columns>`のサポートが追加されました。
3.1.2
-
`NaN`と`Infinity`が有効なフロート定数として追加されました。 これらは予約語になりました。 これらを列識別子(またはキースペース/テーブル識別子)として使用していたまれな場合は、二重引用符で囲む必要があります。
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>`の型検証が修正されました。 たとえば、実装では、`int`列の有効な値として`'2'`を許可していました(`2`と同等として解釈)、または`blob`値として`42`を許可していました(この場合、`42`は16進表現として解釈されていました)ブロブの)。 もはやそうではなく、定数の型検証はより厳格になりました。 どの定数がどの型に許可されているかの詳細については、`データ型<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 言語バージョン間に相関関係はありません。
バージョン | 説明 |
---|---|
メジャー |
後方互換性のない変更が導入された場合は、メジャーバージョンを*必ず*上げる必要があります。これはめめ起こるべきではありません。 |
マイナー |
後方互換性のある新しい機能が導入された場合、マイナーバージョンが増加されます。 |
パッチ |
バグが修正された場合、パッチバージョンが増加されます。 |