Подтвердить что ты не робот

CQL3: Как получить TTL, когда есть только первичный ключ?

У меня есть таблица CQL, определенная следующим образом:

CREATE table primary_key_only(
  row_key varchar,
  clustered_key varchar,
  primary key(row_key, clustered_key)
)

Предполагаю, что я вставляю такие значения:

INSERT INTO primary_key_only (row_key, clustered_key) VALUES ('FACE', 'D00D') USING TTL 86400;

Как я могу получить TTL для вставленных данных? Обычно, если бы был столбец CQL, который не был частью первичного ключа, я мог бы использовать оператор, например:

SELECT ttl(<column_name>) FROM table WHERE row_key='key';

Но поскольку есть только столбцы первичного ключа, такие функции, как ttl и writetime, не будут работать. Как я могу получить TTL, не добавляя дополнительный столбец "dummy" в таблицу, которая не является частью первичного ключа?

4b9b3361

Ответ 1

Просто для всех будущих посетителей, начиная с 2.2, это все еще невозможно без добавления фиктивного столбца.

Ответ 2

Вы можете вызвать ttl на clustered_key, за исключением того, что он является частью первичного ключа.

Возможно, кластеризованный ключ не должен быть частью вашего первичного ключа?

CREATE table primary_key_only(
  row_key varchar primary key,
  clustered_key varchar
);

INSERT INTO primary_key_only(row_key, clustered_key) VALUES('FACE', 'D00D') USING TTL 86400;

SELECT row_key, clustered_key, ttl(clustered_key) FROM primary_key_only;