|
Event Stream Intelligence: Esper & NEsper |
News
March 4, 2013 - Esper 4.9.0 - Update release
- Support for new minby, maxby and sorted aggregation functions
- Support for context partition administration through a new API
- Support for specifying a timezone as part of crontab schedules
- Support for instance method invocation on enumeration values
- Support for fire-and-forget (on-demand) queries that delete and update named windows
- Support for passing EventBean and collection of EventBean to EPL-to-code method invocations
- Support for an optional context object passed in EPL-to-code method invocations
- Support for the expression window and expression batch window to the oldest and newest event so that expiry policies are easier to specify that compare event properties
- New extension API for aggregation functions termed aggregation multi-function
- Performance improvements, overall, and related to patterns and self-joins
- Reduced memory utilization
- Please review changelog.txt for additional information.
January 4, 2013 - Esper 4.8.0 - Update release
- Support for "create expression" to declare an independent expression or script for use in other statements.
- Support for an externally-timed batch window (win:ext_timed_batch).
- Support for array variables.
- Support for enumeration methods to operate on collections of scalar values (ESPER-717).
- Support for on-select-delete: On-select can now also delete the selected rows.
- Support for insert-into clause to use "irstream" keyword to produce the insert as well as the remove stream.
- Support for a new "istream" function that returns true if the event is part of the insert stream and false if the event is part of the remove stream.
- Support for marking an index as a unique index.
- Many optimizations around query planning, execution-time reduced memory use and performance.
- Dependency updates for esperio-springjms adapter and J2EE terminal example.
- Minor change to virtual data window API to allow a virtual data window to indicate unique key property names.
- Please see history or changelog.txt for additional information.
October 8, 2012 - Esper 4.7.0 - Update release
- Many performance-related changes and also related to support of the new EsperHA release.
- Please see history or changelog.txt for additional information.
September 26, 2012 - NEsper 4.5.2 for .NET
- Feature equivalent to Esper version 4.5.0
- Many performance-related updates.
April 27, 2012 - Esper 4.6.0 - Update release
- Support for object-array event types; An application can now send Object[] rows as events and can receive Object[] rows as output.
- This release introduces a syntax and API for declarative data flow execution.
- Support for XML and JSON event renderers to take a custom property value renderer.
- Support for a new "ranked" data window that retains the events according to rank and uniqueness criteria.
- Many internal changes related to increasing performance and reducing memory use.
- For class and package imports through configuration or API, the default imports are no longer removed when the first import is added. Imports can be removed explicitly instead.
- The CSV adapter no longer has a dependency on Commons Beanutils (commons-beanutils-1.8.3.jar).
- The documentation has a new look and feel.
- Please see history or changelog.txt for additional information.
March 12, 2012 - NEsper 4.5.0 for .NET
- Feature equivalent to Esper version 4.5.0
- See Esper 4.1.0 to 4.5.0 changes below for a detailed changed list.
January 19, 2012 - Esper 4.5.0 - Update release
- We have made a change to the behavior of intersection data windows (multiple data windows in intersection) when one of the data windows is a batch window. The engine now provides batching behavior, when one of the data windows is a batch window, and not continuous stream behavior.
- Support for declaring a hashed context that uses a consistent-hash algorithm to target context partitions for declarative parallelism in statement execution
- Support for declaring nested contexts allowing combined context policies
- Support for a new API to that provides context partition targeting for on-demand queries and statement iteration
- Support for context initiation by event or patterns and termination by a correlated event or pattern
- Support for context initiation by patterns to include those event(s) that match a pattern in the statement associated to the context
- Support for MVEL and JSR-223 scripting engine i.e. JavaScript and others
- Support for contained-event syntax; one can now specify any expression for returning contained events
- Support for constants: Variables that are constant values and cannot be assigned. Useful for the engine to perform optimizations knowing variable values can't change.
- Support for a new expression batch window that also allows aggregation functions as part of the expiry expression
- Support for aggregation functions in the expiry expression of the expression data window
- Support for iterating statements that have unbound streams (no data window) and have fully-grouped aggregation
- Support for outer joins with streams that don't provide properties (i.e. pattern timer)
- Support for updating mapped and indexed property values of events via update-istream, on-merge or on-update
- Support for when-terminated in output rate limiting to also provide an expression and set-assignments; Support for a new count-total built-in property
- Support for defining an output pattern for audit logs
- Added test framework API for event processing unit or regression testing
- For plug-in aggregation functions we added support for an AggregationFunctionFactory and deprecated AggregationSupport
- Optimization to detect when a statement is stateless and thereby operate lock-free
- Many other bug fixes, improvements to code, performance-related changes; Please see history or changelog.txt for additional information.
October 24, 2011 - Esper 4.4.0 - Update release
- Support for context declarations: Temporal context for interval-based context partitions; Keyed and category segmented contexts; Initiated contexts
- Support for fine-grained locking per context partition for high concurrency
- Support for a new 'between' date-time method
- Support for a new @NoLock annotation that disables context-partition-level locking
- Support for configuring an engine-wide maximum limit of number of sub-expressions for followed-by and for monitoring the number of sub-expressions
- Support for the "create schema" syntax to copy type information from one or more types
- Support for wildcard (*) parameter to derived-value views (stat:uni etc.) to indicate all properties of input type are available in output
- Support for subscribers with a no-parameter "update" method
- Support for configuring the behavior of the value cache for plug-in single-row functions
- Reduced overhead for named windows based on POJOs
- Many other bug fixes, improvements to code, performance-related changes; Please see history or changelog.txt for additional information.
July 19, 2011 - Esper 4.3.0 - Update release
- We have made a change to NULL-value comparison, to closely follow SQL standards, as follows: In version 4.3, the expression "property = NULL" always returns null, use "property is NULL" instead. Version 4.2 and earlier returned true/false. For more information, please see http://jira.codehaus.org/browse/ESPER-569
- Support for filter expressions as part of aggregation functions, for example "select count(*, color='black'), count(*) as percentBlack from Marbels"
- Support for interval algebra methods, e.g. before, after, coincides, during, includes, meets etc.
- Support for a new expression-driven data window "win:expr". Use for dynamically shrinking and expanding time or length windows, or for custom expiry logic based on work days, for example.
- Support for specifying a consumption policy on pattern filters. Useful when a pattern references the same filter multiple times and the application requires a filter to consume or prioritize one filter over another.
- Support for the transpose(...) function. For use in the select-clause to transpose an expression result object to a stream.
- Support for array operator to provide input to enumeration methods.
- Support for subqueries that return multiple result columns to be used in an expression definition.
- Support for @Audit to output nested expression results.
- New example "Trivia Geeks Club".
- Many bug fixes and improvements to documentation, code and performance; Please see history or changelog.txt for additional information.
April 27, 2011 - NEsper 4.1.0 for .NET (incl. Mono support)
- Feature equivalent to Esper version 4.1.0
- See Esper 4.1.0 changes below for a detailed changed list.
April 19, 2011 - Esper 4.2.0 - Update release
- Support for enumeration methods, which work with lambda expressions to perform common tasks on subquery results, named windows, event properties or inputs that are or can be projected to a collection of events, scalar values or objects.
- Support for date-time methods for date and time manipulation and querying, such as for adding or subtracting time periods, setting or rounding calendar fields and querying fields.
- Support for @Audit annotation which instructs the engine to output detailed debug-level information about the statements processing, such as pattern instance counts, expression result values, property values and more.
- Support for Virtual Data Window, an extension point for (large) external data stores to become accessible same as a named window.
- Support for the 'new' operator, which populates a new data structure by evaluating column names and assignment expressions, useful when an expression should return multiple results, for performing a transformation or inside enumeration method lambda expressions.
- Support for constructor injection for event objects populated by insert into.
- Support for the on-merge clause to allow multiple actions (multiple then-clauses), to allow insert-into a stream other then the currently-merged named window and adding support for an optional where-clause for each action.
- Support for mapped and indexed properties to allow an expression as a map key or index.
- Support for expression declarations. Expressions that are common to multiple places in an EPL statement can be moved to a named expression declaration and reused within the statement without duplicating the expression itself.
- Improvement for query planning and indexing for joins, subqueries, on-merge, on-select, on-update, on-delete, fire-and-forget queries and create-index to support btree indexes for use with ranges, inverted ranges and relational operator (>, <, >=, <=) queries.
- Improvements to statement metrics reporting in regards to event counts and reporting for named windows.
- Improvements to query plan output.
- Reduced memory use for hash indexes on single columns.
January 19, 2011 - Esper 4.1.0 - Update release
- Support for on-merge which provides an atomic update-insert-delete (aka. upsert or merge) operation for use with named windows
- Support for subqueries against named windows to share existing indexes on the named window (both implicitly-created or via create-index)
- Support for configuration option to enable output of query plan to log destination (aka. explain-plan)
- Support for a new 'typeof' function that returns the event type name, for use with variant streams and event type super-types (POJO extends and implements, map super-types)
- Support for XML event type update at runtime via ConfigurationOperations
- Support for an extended time interval grammar that now supports 'weeks', 'months' and 'years' keywords
- Support for additional means to control external time
- Support for loading an XML schema from a string
- Support for a new form of the followed-by (->) operator: The form "-[max]> allows specifying an upper limit on the number of pattern instances
- We refactored the pattern engine to reduce memory use of pattern instances significantly
- Many additional bug fixes and improvements to documentation, code and performance; Please see history for additional information.
January 19, 2011 - NEsper 4.0.0 for .NET (incl. Mono support)
- Feature equivalent to Esper version 4.0.0
- See Esper 4.0.0 changes below for a detailed changed list.
October 18, 2010 - NEsper 3.4.1 for .NET (incl. Mono support)
- Update release with performance improvements. Same feature set as 3.4.0.
September 27, 2010 - Esper 4.0.0 - Major release, read compatibility notes below
- Requires a Java 6 runtime
- The following dependent jar files are upgraded:
- Required: ANTLR version upgrade from 3.1.1 to 3.2
- Optional: LOG4J upgrade from 1.2.15 to 1.2.16
- The bound-repeat syntax in the repeat-until pattern operator changed syntax: The old syntax of separating range value by dots "[low .. high]" is no longer supported. Use the colon ":" character instead of "..", version 3.5 supported the same syntax.
- The meaning of the index parameter to the "nth" aggregation function has changed: To be consistent with "prev" and "last" functions an index of zero now returns the current row. For Example: "nth(value, 0)" returns the current row and "nth(value, 1)" returns the previous-row value.
- The semantics for "output first" have changed: For statements that have a "group-by" clause the "output first" now outputs the first events per group.
- The data window "std:groupby" for grouped data windows has been renamed to "std:groupwin" to avoid confusion with the group-by clause.
- The "first" aggregation function has been renamed to "firstever".
- The "last" aggregation function has been renamed to "lastever". This makes a difference as data window deletes are reflected by the new "last" aggregation function and are not reflected by "lastever".
- Support for new aggregation functions that track the data window : "first", "last" and "window" with a convenient syntax for access to all attributes.
- Support for new single-row functions for data window access: "prevtail", "prevwindow" and "prevcount".
- Support for registering an exception handler that is called when any continuous-query statement exception occurs.
- Support for all statistics views and the size view to accept additional expressions as parameters for returning values pertaining to the last-applied event.
- Support for chained method invocations on events in streams, library static methods and single-row functions.
- Support for registering single-row functions by function name.
- Support for dot-syntax in the form of "(expression).method(...).method(...)" which includes support for duck typing, obtaining array size and calling get(index) on an array or collection.
- Support for subqueries to select multiple columns.
- Support for correlated aggregation in subqueries.
- Support for selecting multiple columns in a subquery.
- Support for contained-event syntax on events selected from a named window.
- Support for expressions in the [] bound repeat in patterns.
- Support for grouped data windows to remove groups that haven't changed for a given time period, as specified via hint.
- Many additional bug fixes and improvements to documentation, code and performance; Please see history for additional information.
July 27, 2010 - NEsper 3.4.0 for .NET (incl. Mono support)
- Esper CEP for .NET - feature equivalent to Esper 3.4.0 with the exception of IO adapters
- Update release, see history for details.
June 21, 2010 - Esper 3.5.0
- Support for EPL modules and deployment services.
- Support for "create schema": Declare an event type via EPL statement.
- Support for "for delivery" option: Grouped-delivery means any listeners/subscribers receive one invocation per group, discrete delivery an invocation per event.
- Support for expressions in parameters to SQL statements.
- Preemptive processing of events inserted into named windows. This helps to make behavior of queries with named windows more intuitive.
- Support for a new pattern guard "timer:withinmax". It takes a time period and maximum-count and ends the pattern subexpression when either the stopwatch or counter match.
- Support for a new pattern guard post-fix operator "while": Similar to a while loop, ends the pattern subexpression when an expression turns false.
March 20, 2010 - Esper 3.4.0
- Support for variables of type Object (any type), POJO or EventType
- Support for creating an explicit index on a named window for best on-demand query performance (aka. fire-and-forget queries)
- New socket input adapter
- New HTTP input and output adapter
- New database output adapter for insert, update, delete (DML) and upsert (keyed-insert/update)
March 8, 2010 - NEsper 3.3.0 for .NET
- Esper CEP for .NET - feature equivalent to Esper 3.3.0
- Feature enhancement release, see history for details.
Jan. 26, 2010 - NEsper 3.2.1 for .NET
- Esper CEP for .NET - feature equivalent to Esper 3.2.0
- Bug fix release, see history for details.
Dec. 17, 2009 - Esper 3.3.0
- Support for on-update
- New aggregation functions: rate, last, first, nth, leaving
- Support for subqueries to occur in filter expressions (stream or pattern)
- Support for subqueries in split-stream and on-set and on-select
- The "prev" and "prior" functions now accept a stream name
- Optimization of min and max aggregation function for use with or without data window
- Support for annotations in statement object model
- Variables that are created via "create variable" and that are no longer referenced are removed
Sept. 6, 2009 - Esper 3.2.0
- Support to the proposed SQL standard "match_recognize", a regular expression-based event pattern matching language
- Support for isolated service providers, which allow to control event visibility and time-related behavior on a statement level, i.e. suspend, preload or catch-up statements
- Support for "update istream" which allows declarative modification of event properties of events entering a stream.
- Support for "distinct" in the select clause
- Support for "output after" syntax to discard of events until time period passed
- Support for "limit" clause for on-select and on-insert
August 3, 2009 - NEsper 3.0.0 for .NET
- Esper for .NET - feature equivalent to Esper 3.0.0
- When migrating from NEsper 2.1 to NEsper 3.0, please follow Migrating Esper 2.x to Esper 3
- The Destroy() method has been changed to Dispose(). Of course this implies that the objects now implement IDisposable ... so if you have language bindings, now you can use them.
- The statement listeners have been augmented by true EventHandlers (delegates). So you don't need to implement an interface and you don't need to use proxies from previous versions.
- The strict Map requirement has been replaced with a general infrastructure for handling IDictionary - if you choose not to use that structure, but instead use IDictionary it will now do automatic translation under the covers for you.
- Full support for string indexing was added to NEsper (the Java version doesn't support this).
- XML support is now a part of NEsper. Includes XML schema normalization and XPath.
May 16, 2009 - Esper 3.1.0
- The new "every-distinct" operator has been introduced to the pattern language. Very similar to the "every" operator, this operator suppresses duplicate results received from sub-expressions based on a set of expressions returning distinct-values.
- The EPL language now understands annotations following the annotation syntax standard. An annotation is an addition made to information in a statement. Esper provides certain built-in annotations for defining statement name (@Name), adding a statement description (@Description) or for tagging statements. Applications can provide their own annotation classes that the EPL compiler can populate.
- The engine now provides a way to prioritize and preempt processing of an event when multiple statements must process the event, via the @Priority and @Drop annotations.
- The insert-into clause can now directly populate an underlying event object from a select clause, i.e. populate your object or Map type.
- We have extended the on-insert syntax by a new split-stream syntax. This allows to list multiple insert-into, select clauses and where-clauses thereby making it easy to split or duplicate an event stream into multiple further event streams.
- The behavior of "timer:within" when used within an "every" in a pattern has changed slightly: The sub-expression qualified by "timer-within" upon expiry of the timer now evaluates to permanently false, while previously it simple stopped. This allows the "every" operator to restart such sub-expression. For example, the expression: every(A -> (B where timer:within(5 sec))) ... When no B event arrives after an A event, the "every" restarts the subexpression looking for the next A followed by B within 5 sec.
- Other performance and documentation improvements as well as bug fixes are listed under history.
February 11, 2009 - Esper 3.0.0
- Please consult Migrating Esper 2.x to Esper 3 for detailed information.
The summary of changes are:
- Upgraded version of dependent jar files
- Moved EventType, EventBean and related exception classes from package com.espertech.esper.event to com.espertech.esper.client
- Several minor rename of methods in the Configuration API related to event type name retiring "alias" as a word in method names
- Please see the link above for more information.
- The view parameters and pattern object parameters are now expressions. Thereby they gain certain new features:
- Variables may be used to parameterize views or pattern objects;
- Prepared statements may use substitution parameters to parameterize views and pattern objects;
- Pattern objects may be parameterized by prior events;
- The syntax for views namespace.name('property') is no longer supported.
- New syntax to support contained-event selection, for use with coarse-grained events that contain finer-grained events or rows. This allows convenient extraction and analysis of information from business-level composite events.
- Added XML and JSON renderers for output events
- When using multiple data windows for the same stream in EPL, the default policy is intersection of data windows, and a union-policy is also available via keyword. This allows concise declaration and combination of multiple expiry policies and well-defined semantics.
- We have made substantial internal enhancements to the type system to simplify and support transposing from any type of stream to an event property in a further stream.
- Enhanced the XML DOM event to support: The changes gained features to transposing XPath expression results between statements and including arrays, as well as transposing property expression results. The changes also correct a problem in which an expression "index[1]" accessed the firs element in a collection and not the second.
- Added a new method for statements to add a listener with replay in one transaction, by name "addListenerWithReplay".
- Added support for SQL-standard ANY, SOME and ALL keywords in group comparison.
- Added advanced threading options to configuration for use with inbound, outbound and execution threading at engine-level.
- Improved support for Java-object event representation with parameterized types (Java generics), List and Iterable properties.
- Added support for escaping property names and event type names in case an overlap occurs with keywords.
November 8, 2008 - Esper 2.3.0
- Added API for on-demand, snapshot queries
- Support for array-type properties in Maps; Support for map type name as a property type
- Listener API for receiving callbacks upon statement creation and state change as well as service state
- Allow event types to be removed at runtime; Allow detection of which statements reference types
- Added OSGi manifest to jar files
- Support for language-locale dependent sorting of String value
- Event type name added to EventType interface
- Added route methods for other event representations
- Added user object support to EPStatement
- Many performance and documentation enhancements
September 27, 2008 - NEsper 2.1.0 for .NET
- Esper for .NET - feature equivalent to Esper 2.1
- When migrating from NEsper 1.x to NEsper 2.1, please follow Migrating Esper 1.x to Esper 2.x
August 10, 2008 - Esper 2.2.0
- Support for repeat and repeat-until in pattern matching
- Enhancements for the create-syntax for named windows:
- Allows an additional SQL table-like definition syntax
- Allows constants in the model-after syntax
- Allows the window to be modelled after another named window, and populated from another named window at creation time
- Changed "as" to become an optional keyword
- Added support for BigDecimal and BigInteger in all aspects of EPL
- Added metrics reporting: Instrumentation to provide key engine and statement-level performance indicators as event streams
- Added support for row limiting
- Added four new data window views for first-event type expiry policies: std:firstevent, std:firstunique, win:firstlength, win:firsttime
- Enhanced output limit clause to support crontab-like schedule
- Enhanced output limit clause to support output when an variable or expression turns true
- Enhanced plug-in aggregation functions to accept multiple parameters
- Support for the "inner" keyword for use in outer joins
- Support for variables to be parameters to an SQL join and method join
- Support for polling via iterator from a statement that contains only SQL queries or method invocations (alone or in a join, aka. no-stream pull API)
- Removed limitation on the number of historical streams (SQL and method) in joins, now supporting an unlimited number of historical streams, full iterator support
- Support for Map inheritance: map event types may now be declared to inherit from one or more Map supertypes
- Support for changing Map event types at runtime by adding properties to an existing type
- Optimization for certain filter-only statements to more efficiently process
- Added JMS text message marshaller and unmarshallers for Fix (Fix is a standard financial interchange format)
- Many bug fixes to issues reported, see JIRA closed issues for release 2.2
June 3, 2008 - NEsper 1.12.0 Release Candidate 2
- Feature equivalent with Esper 1.12.0
- Now includes CGLib .NET project files
May 11, 2008 - Esper 2.1.0
- Added support for variant event streams, into which events of disparate event types can be inserted and treated as the same type
- Added support to plug-in of a custom event type
- Added support for update events (aka. version or revision events)
- Added support for streaming XML using Apache Axiom
- Added support for EsperIO CSV adapter to send bean events
- Properties can now be prefixed by the engine URI and the event type alias used in the from-clause; Event streams can be prefixed by the engine URI (SQL compatibility)
- Added full support for nano/microsecond resolution
- Allowed access to statement's XPathFactory instance to supply XPathFunctionResolver, etc.
- Added support for an escape syntax for event property names that contain dots
- Allowed esperio to use external timer
- Added support to specify a time period in output rate limiting
- Added support for the "in" operator to accept array properties, collection (set, list) property or map property for contains-value semantics
- Allowed normalization of subevents into resultant stream
- Allowed DOM-type property of XML events transpose into new stream for use with XPath and nested syntax
- Added additional sendEvent method that accepts alias name and event object, plus EventSender instance to skip type lookup
- Now uses thread ClassLoader for compatilibility with OSGi
- Provide additional XPath return value types to cast to
- Allow certain keywords to be used as column alias, such as "select count(*) as count from foo"
- Fixed issue ESPER-197 EsperIO/CSV reported to be slow
- Fixed issue ESPER-208 Esperio runs out of stack space when processing largeCSV file and not using engine thread
- Fixed issue ESPER-209 Stop of consumer statements of named windows may not entirely deregister consumer
- Fixed issue ESPER-213 ConcurrentModificationException creating consuming statements to a single named window under threading
- Fixed issue ESPER-214 ClassCastException in named window dispatch for timer thread when multiple insert-into
- Fixed issue ESPER-219 Documentation for plug-in views not specifying implicit contract towards object references
- Fixed issue ESPER-220 TimeBatchView.computeWaitMSec can give incorrect results for low "interval"
- Fixed issue ESPER-221 Named window with batch expiry policy causes late consumers to post incorrect data or throw IllegalArgumentException
- Fixed issue ESPER-227 No documentation on time-batch view parameter for reference point
- Fixed issue ESPER-228 PDF document page number not showing
February 16, 2008 - NEsper 1.12.0 Beta 1
- Feature equivalent with Esper 1.12.0
- Improved support for SQL and database access
- Includes benchmark kits
February 16, 2008 - Esper 2.0.0
The Esper release 2.0 makes certain changes to the API and engine output that are not backwards-compatible to release 1 engines. The changes were required to strategically address usability, consistency, performance and aspects of how we publish the project.
Please read through the summary below. We have outlined in detail the changes that are not backwards compatible on the Wiki at Migrating Esper 1.x to Esper 2.x
- New strongly-typed and fast output event delivery to subscriber objects via method call
- Performance improvement: statements without listeners or subscriber (iterator or output-snapshot statements that use insert-into) now compute much faster
- We have upgraded to ANTLR Version 3 to gain excellent error handling, incremental parsing, easy-to-read grammar and a smaller runtime jar
- We have changed view parameter syntax such that event properties do no longer need to appear in quotes
- Added support for nano/microsecond timer resolution (ESPER-191)
- Added API for setting variable values (ESPER-181)
- Added support for map return types in from-clause method invocations
- Added support for a "unidirectional" keyword in joins/outer join to control join direction
- Added support for multiple event properties in unique view (std:unique)
- Added support for use of aggregation functions in subselect
- Fixed issue ESPER-136 Improve error messages when encountering reserved keywords
- Fixed issue ESPER-138 Allow Map event type to contain nested Map values
- Fixed issue ESPER-145 Ignore start or stop commands on already started or stopped EPStatements.
- Fixed issue ESPER-178 Problem selecting "sum" as a property of event posted by stat:uni view
- Fixed issue ESPER-179 Iterator on select statement selecting from a named window may return incomplete results
- Fixed issue ESPER-180 Null aggregation results outer joining a named window on filled named window
- Fixed issue ESPER-183 Replace LinkedLists with ArrayDeque where possible
- Fixed issue ESPER-184 NPE when using regexp or like on null pojo properties
- Fixed issue ESPER-185 Remove limitation whereas grouped-by properties cannot also occur within aggregation functions
- Fixed issue ESPER-186 Iterator not honoring order by clause for grouped join query with output-rate clause
- Fixed issue ESPER-187 Join of two or more named windows on late start may not return correct aggregation state on iterate
- Fixed issue ESPER-188 Output snapshot buffers events until output condition is reached
- Fixed issue ESPER-188 Output snapshot buffers events until output condition is reached
- Fixed issue ESPER-192 Support non-String type auto-discovery in EsperIO
- Fixed issue ESPER-194 Nullpointer when using Jcl104-over-slf4j
- Fixed issue ESPER-195 Not considering having-clause in un-aggregated and un-grouped query (no-join only)
December 15, 2007 - Esper 1.12.0
- New feature: Named windows
- Share data windows between statements
- New create-window syntax to create named windows
- Define entry criteria via insert-into
- Define exit criteria via the new on-delete syntax
- Perform on-demand queries using the new on-select syntax
- New feature: Variables
- New create-variable syntax declares a variable
- Variables can occur in any expression
- A variable can occur in an output-rate limit to dynamically control output rate
- Update variables via the new on-set syntax
- The engine makes consistency and atomicity guarantees
- New multi-policy tumbling window (ESPER-165)
- New time-ordering window for more flexibility in handling out-of-order events (ESPER-147)
- New accumulating time-based data window (ESPER-166)
- New 'snapshot' keyword for the output rate limiting clause for outputting full statement state
- New safe iterator to provide a concurrent-safe pull API (ESPER-172)
- Support for method invocations in the from-clause; For example to query a distributed, object database or web service
- Support for iterator and safe iterator to iterate over joins and outer joins (ESPER-173)
- Support for stream-wildcard "stream.*" selections for more flexibility selecting from joins and patterns (ESPER-174)
- Support for the stream name or pattern tag name as a valid property in expressions, returning the underlying event for the stream
- Support for instance method calls on stream or pattern events that are Java objects
- Support for indexing of cached result sets of SQL poll queries and method invocations
- Support for expiry time cache backed by soft-reference Map and hard-reference map (ESPER-167)
- Support for an unmatched event listener that receives a callback if an event matches no statement (ESPER-160)
- Support for JDK5 enum classes natively (ESPER-13)
- Support for constants (public static final fields) in expressions
- Performance improvements: rewritten insert-into and listener thread blocking techniques for reliable ordered delivery, other changes
- API change: AggregationSupport for plug-in aggregation functions now requires an implementation of the clear() method
- Fixed issue ESPER-125 IllegalStateException in a self-joining statement without join condition using sorted window
- Fixed issue ESPER-177 Deadlock in EPRuntimeImpl.sendEvent
- Fixed issue ESPER-176 NullPointerException for grouped-by length view and previous operator
- Fixed issue ESPER-175 ArrayIndexOutOfBoundsException when no event posted
- Fixed issue ESPER-171 AutoID example in Sun JDK6 fails with Invalid schema error (a JDK6 compatibility issue)
- New example: Java Messaging Service (JMS) server shell
- demonstrates a multi-threaded JMS server
- with dynamic statement management using Java Management Extensions (JMX)
- Documentation improvements
September 23, 2007 - NEsper for .NET 1.10.0 Beta 1
- Feature-equivalent to Esper 1.10.0
- Includes NEsperIO as a port of EsperIO 1.10.0
- Addition of database support to NEsper via ADO.NET and ODBC
- Addition of parameter style support do address quirks in the ADO.NET parameter model
- Addition of dynamic code generation to access properties and fields
September 15, 2007 - Esper 1.11.0
- Support for statement object model (ESPER-108)
- allows to build, change or interrogate an object-oriented representation of a statement
- round-trip between EPL and object model
- Support for precompiled statements and substitution parameters (ESPER-50, ESPER-31)
- Support for dynamic (unchecked) properties; Support for instanceof and cast (ESPER-135)
- Support for the StatementStopCallback to deliver events raised by plug-in views (ESPER-158)
- Support for automatic bean aliases by specifying imported packages (ESPER-149)
- New "current_timestamp" reserved keyword returns the current engine time (ESPER-144)
- API provides timestamp of last state change in EPStatement (ESPER-144)
- Fixed issue ESPER-129 "DOM expects a Document, no error checking if not"
- Fixed issue ESPER-131 "Namespace problem using XML events and XPath properties"
- Fixed issue ESPER-134 "EPException using std:groupwin without child view"
- Fixed issue ESPER-142 "Relational Database Access does not work with Oracle JDBC"
- Fixed issue ESPER-159 "Two patterns with similar filters cause duplicates reported by one pattern"
- Fixed issue ESPER-155 "BeanEventType fails on write only property"
July 18, 2007 - Esper 1.10.0
- Support for a new statement-aware listener interface (ESPER-113)
- Support for case-insensitive Java-class event property names (ESPER-103)
- Fixed issue ESPER-112 "Pattern problem in 'every' operator not restarting a permanently false sub-expression"
- Fixed issue ESPER-114 "Allow equals operator on object types in expressions"
- Fixed issue ESPER-115 "NullPointerException using iterator on pattern without window"
- Fixed issue ESPER-118 "NullPointerException when select * and additional fields"
- Fixed issue ESPER-121 "Filter expression not evaluating correctly after optimization and using multiple pattern subexpression results"
- Fixed issue ESPER-122 "IllegalArgumentException in a join statement between same-typed map-underlying events"
- Fixed issue ESPER-124 "IllegalStateException in a grouped time window using the prior function"
- Fixed issue ESPER-126 "Allow null statement name for createPattern"
- Documentation improvements
- Performance improvement when running engine without log4j configuration
June 13, 2007 - New! NEsper for .NET -- NEsper 1.3.0 Final
- The .NET version is feature-equivalent to Esper version 1.3
- Database joins not yet supported
June 6, 2007 - Esper 1.9.0
- Support for last-day-of-month and weekday for timer:at crontab functions (ESPER-84)
- Support for subqueries to the return event object (ESPER-105)
- Additional documentation on grouping and aggregation (output model chapter)
- Additional documentation on threading and concurrency (API chapter)
- Improvements to multi-threaded processing:
- Deliver events to listeners in a predictable order
- Deterministic in processing events between statements that consume other statement's events via insert-into
- New example out of the RFID domain featuring a Swing GUI and a simulator
- Fixed issue ESPER-98 "NullPointerException for Joins involving Map event types"
- Fixed issue ESPER-99 "IllegalStateException combining a time window with min/max and group-by and output every"
- Fixed issue ESPER-101 "ArrayIndexOutOfBounds with 'output last' and group by"
- Fixed issue ESPER-107 "Memory leak using previous function and length window under a group"
- Fixed issue ESPER-109 "NPE while fetching events from statements"
- Fixed issue ESPER-110 "Iterator not honoring filter, aggregation, group-by and having clause"
April 28, 2007 - New! NEsper for .NET -- NEsper 1.3.0 Beta 1
- The .NET version is feature-equivalent to Esper version 1.3
- Database joins not yet supported
April 22, 2007 - Esper 1.8.0
- Support for subqueries including the exists and subquery-in syntax (ESPER-22 support for subqueries)
- Support for plug-in user-defined aggregation methods, and plug-in pattern observer and pattern guard objects (ESPER-40)
- Fixed issue ESPER-93 "Improve error handling parsing too large Integer numbers and remove L suffix requirement for Long"
- Fixed issue ESPER-94 "Performance degradation for certain statement between 1.4 and 1.5 of 25%"
- Fixed issue ESPER-96 "Cache result of user-defined functions when parameter set is constants"
March 17, 2007 - Esper 1.7.0
- Support for free-form filter expressions (User-defined filter functions ESPER-77, Pattern Filter - null value support ESPER-17, ESPER-91)
- New JMS input and output adapter based on Spring JMS templates (ESPER-4, ESPER-8, ESPER-7)
- Support for adding new event type aliases and Map and DOM event types during runtime (ESPER-87)
- New statement management API (ESPER-90)
- Allow literal keywords to be case insensitive (ESPER-89)
- More helpful error messages when invalid syntax (ESPER-82)
- Support for plugging-in a custom-developed view (ESPER-41)
- Fixed issue ESPER-86 "selecting first element via prev and count(*)"
- Fixed issue ESPER-92 "String with parantheses not parsing in static method arg"
February 17, 2007 - Esper 1.6.0
- Added support for group-by and previous (ESPER-80 Prev function to consider grouped windows)
- Added length window batch (ESPER-27 jumping/tumbling window)
- Added support for array definition (Enhancement Request ESPER-76 Java array initialization syntax for constants)
- Removed dependency on Apache Common BeanUtils (commons-beanutils-1.7.0.jar)
- Documentation - Output model illustrations for time windows and event model; Extensive description of built-in views
- Fixed issue ESPER-78 "Insert-into streams not using correct event type when same-typed streams"
January 11, 2007 - Esper 1.5.0
- Multithread-safety for all operations provided by the administrative and runtime API. Client applications can perform multithreaded sends of events into the engine as well as create, start and stop statements during operation, while retaining full control over threading and efficiently sharing resources between statements (Enhancement Request ESPER-48 Multithread-safety)
- Documentation - new chapter explaining the output model
- Fixed issue ESPER-75 "PropertyAccessException selecting individual fields from a group-by with sub-ordinate length window"
December 26, 2006 - Esper 1.4.0 and EsperIO 1.4.0
- New Esper Input Adapter API named EsperIO for reading CSV (comma-separated value format) files and running event simulations from timestamped CSV files (ESPER-6 Input Adapter for reading CSV files)
- Added support for 'prior' and 'prev' (previous) operator (Enhancement request ESPER-25)
- Added support for 'in' and 'not in' list-of-value matching in filter expressions, and for 'between' and 'not between' keywords, and 'not in' ranges (Enhancement request ESPER-66)
- Added support for modifying events in a stream, i.e. wildcard and expressions combined in a select-clause and insert into (Enhancement request ESPER-67)
- Fixed issue ESPER-69 "Pull throws UnsupportedOperationException for statement not selecting wildcard"
- Fixed issue ESPER-68 "Followed-by operator not releasing memory for dead sub-expressions"
- Various documentation enhancements and performance tuning changes
November 14, 2006 - Esper 1.3.0
- Added support for SQL queries within EPL (Enhancement request ESPER-30) Also provides a LRU and expiry-time-based caches for your SQL queries.
- Added support for regular expressions (regexp) and SQL 'like' (Enhancement request ESPER-65)
October 26, 2006 - Esper 1.2.0 update (licensed GPL)
- NOTE: The following pattern elements now take seconds (not milliseconds) as a parameter (fixes ESPER-52) : timer:within, timer:interval, win:ext_time
- Added new syntax for specifying time periods; Example: timer:within(1 min 5 sec) is equivalent to timer:within(65)
- Added support for 'in' and 'between' standard SQL keywords
- Added support EventType adaptors for legacy Java classes (Enhancement request ESPER-55)
- Added support for != (not equals) in filter expressions (Enhancement request ESPER-63)
- Added support for select-clause istream and rstream keywords (Enhancement request ESPER-54)
- Fixed issue ESPER-52 "EPL windows take seconds parameter while patterns take milliseconds parameter"
- Fixed issue ESPER-58 "IllegalMonitorStateException logged by engine"
- Added J2EE example (Enhancement request ESPER-64)
- Added docs for "How does one use emit" (Enhancement request ESPER-62)
October 26, 2006 - Esper 1.2.0
Esper has change it's license and is now available under GNU General Public License (GPL) (GPL v2).
September 19, 2006 - Esper 1.1.0 update
- Added support for pattern expressions in EPL statements (Enhancement request ESPER-53 Consuming pattern-generated events in EPL)
- Added 'case' control flow function
- Added 'coalesce' comparison function
- Bug fixes to reported issues (see history)
August 21, 2006 - Esper 1.0.5 update
- Added support for the "first" keyword in output rate limiting for outputting only the first matching event for an interval
- Added support for XML events represented by a document object model (DOM) instances of org.w3c.dom.Node
- Added support for Map events represented by a java.util.Map including object values
- New AutoId RFID example for XML event processing, includes simulator for running from the command line
- New reference manual chapter on Event Representations
July 24, 2006 - Esper 1.0.0 final production
- Added support for invoking Java library static methods, invoking user-defined static methods, and defining an auto-import list
- Sort view ext:sort now also allowing multiple columns to sort on
- Added NOT, modulo (%) and SQL string concatention operator (||)
- New example 'Market Feed Monitor' which showcases rate calculation and fall-off detection. With a simulator to run from a command line.
- Build scripts now build Linux tarball; Shell scripts for compiling and running examples reworked.
July 3, 2006 - Esper 0.9.5 Beta
- Completed move to the Codehaus open-source repository, see Esper at Codehaus
- Support for "insert into" clause allowing chains of EPL statements and merging of event streams (continuous insertion)
- Capability added to sort output using an "order-by" clause
- Support for bit-wise AND (&), OR (|) and XOR(^) operators
- Bug fix for allowing boolean expression in select clauses, such as "select a and b from MyEvent..."
- New 10-minute tutorial; Transaction example simplified
June 10, 2006 - Esper 0.9.1 Beta
- Beta bug fix release
- Moving to the Codehaus open-source repository
- New cool example 'Transaction 3-event challenge' which shows EPL in use for detecting missing events and computing latency totals overall and grouped. Added scripts for compiling and executing the example.
- Bug fix for statements that contain only aggregation functions in the select clause that incorrectly posted too many events
- Bug fix for group-by without output rate limiting that incorrectly posted events for past groups
June 4, 2006 - Esper 0.9.0 Beta
- Third beta release
- Planning to move to the Codehaus open-source repository
- Added support for output rate limiting based on number of events and time-based, and choice of last or all events
- Now supporting outer joins for an unlimited number of event streams (was limited to 2 streams)
April 22, 2006 - Esper 0.8.5 Beta
- Second beta release
- Added support for group-by and having
- Added support for aggregation functions max, min, sum, avg, count, median, stddev, avedev; The "distinct" keyword is also supported for each; The "count(*)" syntax is supported.
- New developers onboarded
March 23, 2006 - Esper 0.8.0 Beta
- Event inheritance and interface implementation support; Added support for interfaces, abstract classes, superclasses. E.g. select * from IMyEvent --- where IMyEvent is an interface or superclass, and event classes that implement this interface or extend the superclass match the criteria. Polymorphism of event properties is now also supported.
- Support for simple, mapped, indexed, nested and any combination of these anywhere where and event property name is expected. E.g. subordinate[3].address(home).city
- Refined exception texts to better indicate reason
- Improved documentation
About Esper and NEsper
NewsAbout Esper for Java
About NEsper for .NET
License and Trademark Use
Terms of Use
Tutorials and Case Studies
TutorialQuick Start
Articles and Presentations
Solution Patterns
Short Case Study
Longer Case Study
DEBS 2011 Challenge
Additional Examples
Technology Links
Esper for Java
DownloadChange History
Documentation
FAQ
Reporting Issues
Building
On Performance
NEsper for .NET
DownloadChange History
Documentation
FAQ
Reporting Issues
Building
The Esper/NEsper Team
How To ContributeMailing Lists/Forums
Roadmap
Source Repository
Last Published: Mar 04, 2013
Version: 4.9.0
