2016-08-08 55 views
0

Ich möchte TTL 30 Tage aus dem Zeitfeld der Tabelle Datensatz (ID, Name, Zeit) während des Einfügens festlegen. Dafür ich eine benutzerdefinierte Funktion erschaffe (UDF) bigint fun(rTime,cTime) alsEinstellung TTL mit Zeitstempel Feld des Datensatzes während des Einfügens in Cassandra

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

hier, Funktion Spaß ist die Berechnung der Zeit in Sekunden, diese Daten leben sollen. 2592000 ist die Zeit in Sekunden für 30 Tage. Errormessage Code = 2000 ........

:

Jetzt

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())); 

immer Fehler als

Syntax Exception als

TTL oben Funktion zu verwenden für die Einstellung Ich versuche,

Gibt es eine andere Möglichkeit, TTL basierend auf Rekordzeit Feld zu setzen. Was ist ein Problem mit dem obigen Ansatz?

Antwort

1

Funktionsaufruf wird in USING Klausel nicht unterstützt. In Ihrem Fall muss Ihr Client die entsprechende TTL berechnen und als zweite Abfrage übergeben.