0

Mac OS X (dsc-cassandra-1.2.6) で Datastax cassandra ディストリビューションを使用しています。timeuuid タイプを使用したいので、それらに対するクエリを試していました。

ここに私のテーブルがあります:

CREATE TABLE test_t (
  canon_key text,
  t timeuuid,
  PRIMARY KEY (canon_key, t)
)

ここで、私が行を取得したとしましょう。

cqlsh:pagedb> select canon_key, t, dateOf(t), unixTimestampOf(t) from test_t where canon_key = 'xxx' and t >= minTimeuuid('2013-08-08 18:43:58-0700');                 
 canon_key | t                                    | dateOf(t)                | unixTimestampOf(t)

-----------+--------------------------------------+--------------------------+--------------------

       xxx | 287d3c30-0095-11e3-9268-a7d2e09193eb | 2013-08-08 18:43:58-0700 |      1376012638067

今、私はこの行を削除したいと思います。timeuuid 型の等価演算子がないため、これを行う良い方法がわかりません。

私が追加しているデータの性質は、私が(おそらく)これを行うことさえ気にしないようなものです:

cqlsh:pagedb> select canon_key, t, dateOf(t), unixTimestampOf(t) from test_t where canon_key = 'xxx' and t >= minTimeuuid('2013-08-08 18:43:58-0700') and t < = maxTimeuuid('2013-08-08 18:43:58-0700');

しかし、ドキュメント ( http://cassandra.apache.org/doc/cql3/CQL.html#usingdates ) によると、それは機能しません。引用: " t >= maxTimeuuid('2013-01-01 00:05+0000') は、正確に '2013-01-01 00:05+0000' に生成された timeuuid を選択しないことに注意してください。 t > maxTimeuuid('2013-01-01 00:05+0000').".

では、この行を削除するにはどうすればよいですか?

4

1 に答える 1

5

あなたの前提は間違っています -minTimeuuidそして、timeuuids の等価演算maxTimeuuidを許可するために存在します、それは単純な等価性がサポートされていないという意味ではありません:

cqlsh:foo> insert into test_t (canon_key, t) values ('k', now());
cqlsh:foo> select * from test_t;

 canon_key | t
-----------+--------------------------------------
         k | 27609890-0209-11e3-b862-59d5a2b25b8f

(1 rows)

cqlsh:foo> delete from test_t where canon_key = 'k' and t = 27609890-0209-11e3-b862-59d5a2b25b8f;
cqlsh:foo> select * from test_t;

(0 rows)
于 2013-08-10T22:09:30.963 に答える