不能在 where 子句中使用用户定义的函数 return 值
Cant use user defined function return value in where clause
我在 Esper 中有一个 UDF returns 一个 int
getVal(int val){
//doing stuff
return val;
}
如果我这样做
select getVal(eventAttribute) from Event
它returns
{getVal(eventAttribute)=3 } //3 例子可以是任何东西
但是如果我指定
select getVal(eventAttribute) from Event WHERE getVal(eventAttribute) = 3
侦听器不会更新
有谁知道为什么?我必须在事件 class 中设置属性吗?因为它从 select 子句更新但带有 WHERE 子句,即使它 returns an int = 3
编辑:
insert into Stream select getVal(attribute) as value
select value from Stream where value > 3
这有效。
您确定 "getVal" 对于给定的 "eventAttribute" 和 "eventAttribute" 总是 returns 相同的值是不可变的吗?如果是,请提供一些测试代码以重现?
我在 Esper 中有一个 UDF returns 一个 int
getVal(int val){
//doing stuff
return val;
}
如果我这样做
select getVal(eventAttribute) from Event
它returns
{getVal(eventAttribute)=3 } //3 例子可以是任何东西
但是如果我指定
select getVal(eventAttribute) from Event WHERE getVal(eventAttribute) = 3
侦听器不会更新
有谁知道为什么?我必须在事件 class 中设置属性吗?因为它从 select 子句更新但带有 WHERE 子句,即使它 returns an int = 3
编辑:
insert into Stream select getVal(attribute) as value
select value from Stream where value > 3
这有效。
您确定 "getVal" 对于给定的 "eventAttribute" 和 "eventAttribute" 总是 returns 相同的值是不可变的吗?如果是,请提供一些测试代码以重现?