Products | Versions |
---|---|
TIBCO BusinessEvents Enterprise Edition | - |
Not Applicable | - |
Resolution:
Description:
==========
The documentation says that any built in functon with a q can be used in a query. I am able to use /#DateTime/ and /#String/ functios but not /#Math/ or /#Number functions. I am wondering why?
Environment:
==========
BusinessEvents 5.0.0
Symptoms:
=========
Query:
select /#Math/round(lt.EventId,10) from /Concepts/LogTiming lt;
Error:
2011 Jun 21 10:10:28:525 GMT +8 192.168.69.49 Error [com.tibco.cep.runtime.service.debug.DebuggerService] - [runtime.service] [inference-class] Got runtime exception while executing Rule be.gen.Rules.QueryCreation_math(Rules.QueryCreation_math) Action be.gen.Rules.QueryCreation_math$QueryCreation_math_a@2596c1 Objects <be.gen.Events.TRYEvent@id=6>
java.lang.RuntimeException: com.tibco.cep.query.api.QueryException: com.tibco.cep.query.exception.ParseException: Line:1 Position:9 Error:mismatched input 'Math' expecting set null
at com.tibco.cep.query.functions.QueryFunctions.create(QueryFunctions.java:95)
at be.gen.RuleFunctions.ObjectTestQueryUtilObject$.TestQueryUtil(ObjectTestQueryUtilObject$.java:20)
at be.gen.RuleFunctions.TestQueryUtil.invoke(TestQueryUtil.java:13)
at com.tibco.cep.query.functions.QueryUtilFunctions.callRF(QueryUtilFunctions.java:102)
at com.tibco.cep.query.functions.QueryUtilFunctions.invokeFunctionInQuerySession(QueryUtilFunctions.java:83)
at be.gen.Rules.QueryCreation_math$QueryCreation_math_a.execute(QueryCreation_math.java:49)
at com.tibco.cep.kernel.core.rete.ReteWM.a(SourceFile:305)
at com.tibco.cep.kernel.core.rete.ReteWM.do(SourceFile:283)
at com.tibco.cep.kernel.core.rete.ReteWM.assertObject(SourceFile:1522)
at com.tibco.cep.runtime.session.impl.RuleSessionImpl.assertObject(RuleSessionImpl.java:1214)
at com.tibco.cep.runtime.service.debug.DebugTaskImpl.run(DebugTaskImpl.java:97)
at com.tibco.cep.runtime.service.debug.DebuggerService.processTask(DebuggerService.java:221)
at com.tibco.cep.runtime.service.debug.DebuggerService.run(DebuggerService.java:202)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: com.tibco.cep.query.api.QueryException: com.tibco.cep.query.exception.ParseException: Line:1 Position:9 Error:mismatched input 'Math' expecting set null
at com.tibco.cep.query.service.impl.QueryImpl.<init>(QueryImpl.java:107)
at com.tibco.cep.query.service.impl.QueryRuleSessionImpl.createQuery(QueryRuleSessionImpl.java:219)
at com.tibco.cep.query.functions.QueryFunctions.create(QueryFunctions.java:86)
... 15 more
Caused by: com.tibco.cep.query.exception.ParseException: Line:1 Position:9 Error:mismatched input 'Math' expecting set null
at com.tibco.cep.query.ast.parser.ParserUtil.parse(ParserUtil.java:74)
at com.tibco.cep.query.ast.parser.ParserUtil.getAST(ParserUtil.java:88)
at com.tibco.cep.query.service.impl.QueryImpl.parseOql(QueryImpl.java:156)
at com.tibco.cep.query.service.impl.QueryImpl.<init>(QueryImpl.java:93)
... 17 more
Resolution:
=========
Remove the "#" character in front of Math. The "#" character is used to escape a set of reserved words. Math and Number are not reserved words. Refer to the BE document --> Developer's Guide --> Rule Language Grammar --> Keywords and Other Reserved Words for the list of reserved words.