我想在插入过程中从表记录的时间字段(id,名称,时间)设置TTL 30天。为此,我创建了一个用户定义函数(UDF)bigint fun(rTime,cTime)
作为
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。上述方法有什么问题?
答案 0 :(得分:1)
USING
子句不支持函数调用。
在您的情况下,您的客户必须计算适当的TTL
并将其作为第二个传递给查询。