2016-08-08 3 views
0

Я хочу установить TTL 30 дней из поля времени записи таблицы (id, name, time) во время вставки. Для этого я создаю пользовательские функции (UDF) bigint fun(rTime,cTime) какустановка TTL с использованием временного поля записи при вставке в cassandra

CREATE FUNCTION fun(rtime timestamp,ctime timestamp) CALLED ON NULL INPUT 
RETURNS bigint LANGUAGE java as 'return 2592000-((ctime.toTime() -rtime.toTime())/1000);'; 

здесь, функция весело вычисляет время в секундах, эти данные должны жить. 2592000 - это время в секундах в течение 30 дней.

Теперь я пытаюсь использовать функцию выше для установки TTL, как

INSERT INTO record(id,name,time) VALUES (123,'data123','2016-08-08 06:06:00') 
USING TTL fun('2016-08-08 06:06:00',totimestamp(now())); 

получаю ошибку, как

Синтаксис Исключение: ErrorMessage код = 2000 ........

Есть ли другой способ установить ttl на основе поля времени записи. Что такое проблема с вышеуказанным подходом?

ответ

1

Функциональный вызов не поддерживается в пункте USING. В этом случае ваш клиент должен вычислить соответствующий TTL и передать его в запросе в качестве второго.

 Смежные вопросы

  • Нет связанных вопросов^_^