There are no EPL changes between Esper-7 and Esper-8 other than as documented below. The execution of EPL is the same between the versions.
URI Use in EPL
Esper-7 allowed the use of the engine-URI to be used as a prefix to the event property name in expressions. Since in Esper-8 the runtime-URI is not available to the compiler the URI cannot be specified any longer as part of an event property expression.
Automated Bean Event Type Registration when the From-Clause Provided a Fully-Qualified Class Name
In Esper-7 when the from-clause or on-clause had a fully-qualified class name Esper-7 would create an event type for the class implicitly. Esper-8 does not automatically create an event type for the from-clause and on-clause. In Esper-8 the from-clause or on-clause must refer to existing event type. You may however register an event type with an event type name that is the fully-qualified class name.
Substitution Parameters
In Esper-7 the type of the substitution parameter was known before EPL query validation since the call to set a value took place before query validation. In Esper-8 the type of the substitution parameter is not known since setting a value takes place at runtime. In Esper-8 the compiler assumes Object-type for substitution parameters in case the EPL does not provide a type. This can cause your EPL to not compile. You can either provide the type of the substitution parameter using ?::type
or ?:name:type
. Or you can use the cast
function to cast to the desired type.
Named Window Subquery Index Sharing
Subquery index sharing for named windows now requires creating an explicit index using create index
. In Esper-7 the query planner, when using named window subquery index sharing, would know about indexes already created by other modules. In Esper-8 the compiler does not know implicit indexes created by other modules therefore named window subquery index sharing relies on indexes created using create index
only.