不能在 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 相同的值是不可变的吗?如果是,请提供一些测试代码以重现?