2

これらの列を含むテーブルがありました:

cassandra@cqlsh:test> DESCRIBE Table "ItemSource";

CREATE TABLE connect."ItemSource" (
    "Identifier" text,
    "SourceID" uuid,
    "ItemID" uuid,
    "Priority" int,
    "AdditionalParams" map<text, text>,
    "Binding" map<text, text>,
    "CountryRestriction" list<text>,
    "ItemSourceID" uuid,
    "Marker" text,
    "Scraped" int,
    "SearchField" text,
    PRIMARY KEY (("Identifier", "SourceID"), "ItemID", "Priority")
) WITH CLUSTERING ORDER BY ("ItemID" ASC, "Priority" ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
    AND comment = ''
    AND compaction = {'min_threshold': '4', 'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32'}
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99.0PERCENTILE';

次の列を起動して、int 型の Limit という名前の列を追加しました。

ALTER TABLE "ItemSource" ADD "Limit" int;

テーブルにはすでに要素が含まれていました。それらをすべて更新して、制限が 0 になるようにしました。cqlsh を使用して次のコマンドを実行すると、「制限」列が表示され、値も表示されます。

しかし、cassandra の Go ドライバーである gocql を使用してまったく同じ要求を行った場合、Limit 列は表示されませんが、その他の列は表示されます。作成された要求は次のとおりです。

SELECT * FROM "ItemSource" WHERE "Identifier" = ? AND "ItemID" = ? AND "SourceID" = ? AND "Priority" = ? LIMIT ? ALLOW FILTERING 

何が起こっているのかわかりません。データをcsvファイルにコピーしてから、テーブルを切り捨ててからデータを再インポートしようとしましたが、それでも同じ結果が得られます...

キャッシングの問題でしょうか?はいの場合、どうすれば空にできますか。そうでなければ、それは何でしょうか?

4

1 に答える 1

1

私の質問と比較的似ていて、すぐに修正されるバグであると回答が説明している質問を見つけました。実際には修正されており、次の更新を待つ必要があります ( 2.1.3)。

https://stackoverflow.com/a/28035521/1405208

そして、ここにcassandraの問題へのリンクがあります:CASSANDRA-7910

編集:Cassandra 2.1.3が数か月間リリースされたため(実際、この回答を投稿した日にリリースされました。素晴らしい!:))、修正が機能するため、このメッセージを編集します。

ほら!

于 2015-02-17T00:41:15.340 に答える