Home Contact

Event Stream Intelligence: Esper & NEsper

Change History

This section lists the changes between Esper releases. The changes introduced in each release are split into the following categories.

  • API changes: Any changes to the API, or the EPL or engine input and output that may impact existing users.
  • Major changes: Major new features that do not change existing functionality
  • Minor changes: Smaller changes and bug fixes.

Version 3.1.0

Released May 16, 2009

Built with Sun JDK 5.0 Update 16; Also tested for JDK 6 Update 10

API changes

  • None.

Major changes

  • 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.

Minor changes

  • The provider URI of the default engine instance is now "default" instead of null. This is for consistency with the default engine qualifier for optional use in stream and property name qualification, which is also "default". Therefore EPServiceProviderManager.getDefaultProvider().getURI() returns "default", and passing null to the EPServiceProviderManager still returns the default instance.
  • The PluginLoader interface for writing adapters has a new required method that must be implemented to allow plugins to initialize after complete Esper engine initialization.
  • Bug fixes: see JIRA list of resolved issues for release 3.1

Version 3.0.0

Released February 11, 2009

Built with Sun JDK 5.0 Update 16; Also tested for JDK 6 Update 10

API changes

  • 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
    • EPL division expressions yield double-type results
    • EPL view and pattern parameters strongly distinquish between string constant and property name
    • EPL join statements for certain stream types now require a data window declaration
    • EPL when using multiple data windows defaults to intersection semantics
    • Extension API for views, pattern objects and event representations have additional or slighly changed signatures

Major changes

  • 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".
  • The EPL now returns a double-type result for division expressions where both operands to a division were non-FP types, such as "1/2", i.e. double 0.5. This follows SQL standards and makes EPL easier to read and use. Esper 2.x returned an integer value following Java standards (i.e. zero).
  • The EPL does no longer assume keep-all semantics if no data window is specified for a filter-based or pattern-based stream in a join. EPL now requires a data window to be explicitly defined to applicable streams.
  • 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.
  • New configuration options to change the caching behavior for UDF invocations.

Minor changes

  • Removed "stat:cube" view.
  • Removed "indicator.jmx" package.
  • Removed "emit" method from EPRuntime and EmittedListener.
  • Removed examples LinearRoad, RSI and ATM.
  • The Maven build no longer compiles the grammar. The grammar is now compiled via "esper/grammar/antlrtool.bat" or "antlrtool.sh". The resulting parser is part of the source code base.
  • Added new examples for named window and OHLC; We restructured the examples directory structure and added Eclipse projects.
  • Documentation and performance enhancements
  • Bug fixes: see JIRA list of resolved issues for release 3.0

Version 2.3.0

Released November 9, 2008

Built with Sun JDK 5.0 Update 16; Tested and certified for JDK 6 Update 10

API changes

  • Added API for on-demand, snapshot queries
  • Listener API for receiving callbacks upon statement creation and state change as well as service state
  • Event type name added to EventType interface
  • Added route methods for other event representations
  • Added user object support to EPStatement
  • Allow event types to be removed at runtime; Allow detection of which statements reference types

Major changes

  • Support for array-type properties in Maps; Support for map type name as a property type
  • Added OSGi manifest to jar files
  • Support for language-locale dependent sorting of String value

Minor changes

  • Documentation and performance enhancements
  • Bug fixes see JIRA list of resolved for release 2.3

Version 2.2.0

Released August 10, 2008

Built using Sun JDK 5.0 Update 12; Tested and certified for JDK 6 Update 1.3

API changes

  • New metrics reporting events and configuration API for instrumentation

Major changes

  • Bug fix for ESPER-264 that impacts joins that utilize the "unidirectional" keyword and that perform aggregation
  • 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)

Minor changes

  • Fixed issue ESPER-270 Property name order not always reflecting select clause order for getPropertyNames
  • Fixed issue ESPER-269 User-define method with dot in parameter generates property not found
  • Fixed issue ESPER-268 User-defined function reports runtime errors through the stack
  • Fixed issue ESPER-264 Unidirectional keyword with aggregation posts lifetime-cumulative results rather then join-current cumulative results
  • Fixed issue ESPER-263 Add boolean ConfigurationOperations.isVariantStreamExists(String variantStreamName)
  • Fixed issue ESPER-258 Extension points for esperio
  • Fixed issue ESPER-257 Esperio beans input to support subset of beans properties in input CSV
  • Fixed issue ESPER-256 It would be really useful for CSVInputAdapter to have a row count so we can tell how many rows it has processed
  • Fixed issue ESPER-254 Iterating over joins that join by polling execution (database or method joins)
  • Fixed issue ESPER-250 Custom aggregation function provided by static inner class not possible
  • Fixed issue ESPER-249 Enhance TimeBatchView with FORCE_UPDATE, START_EAGER keywords
  • Fixed issue ESPER-247 Cast function for String to Int conversion returns null
  • Fixed issue ESPER-246 Unique-view incorrectly posts remove stream data for shared state under view sharing conditions
  • Fixed issue ESPER-243 Swallowing InterruptedException in EPServiceProviderImpl
  • Fixed issue ESPER-241 Predefined variant types not supporting dynamic event types
  • Fixed issue ESPER-239 Esperio - memory leak in AdapterCoordinatorImpl

New Features

Minor changes

Version 2.1.0

Released May 11, 2008

Built using Sun JDK 5.0 Update 12; Tested and certified for JDK 6 Update 1.3

API changes

  • New API to plug-in of a custom event type
  • Added additional sendEvent method that accepts alias name and event object, plus EventSender instance to skip type lookup

Major changes

  • Added support for variant event streams, into which events of disparate event types can be inserted and treated as the same 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
  • 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

Minor changes

  • 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
  • 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

Version 2.0.0 Major Release

Released February 17, 2008

Built using Sun JDK 5.0 Update 12; Tested and certified for JDK 6 Update 1.3

API changes

  • Please consult Migrating Esper 1.x to Esper 2.x for detailed information
  • All package names have changed from "net.esper" to "com.espertech.esper"
  • We have renamed EQL to EPL: All method names and other references to EQL have been renamed to EPL, i.e. createEQL to createEPL
  • We have made changes to engine output to make the output more useful and consistent between different types of queries, and to make the engine more performant.
  • We have upgraded 3rd party library dependencies to new versions.
  • We have switched the schema to 2.0, made it namespace-aware and available online.

Major changes

  • 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

Minor changes

  • Changes to configuration classes: Moved the classes ExpiryTimeCacheDesc, LRUCacheDesc, DataCacheDesc, CacheReferenceType out inner classes of ConfigurationDBRef to ConfigurationExpiryTimeCache, ConfigurationLRUCache, ConfigurationDataCache, ConfigurationCacheReferenceType since the classes were applicable elsewhere
    • Renamed method addJavaSqlTypesBinding on ConfigurationDBRef to addSqlTypesBinding
    • Minor change to SelectClause in the SODA API
  • 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)

Version 1.12.0 Update

Released December 15, 2007

Built using Sun JDK 5.0 Update 12; Tested and certified for JDK 6 Update 1.3

API changes

  • API change: AggregationSupport for plug-in aggregation functions now requires an implementation of the clear() method

Major changes

  • 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

Minor changes

  • 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

Version 1.11.0 Update

Released September 15, 2007

Built using Sun JDK 5.0 Update 12

API changes

  • 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)

Major changes

  • None

Minor changes

  • 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:groupby 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"

Version 1.10.0 Update

Released July 18, 2007

Built using Sun JDK 5.0 Update 12

API changes

  • Support for a new statement-aware listener interface (ESPER-113)

Major changes

  • None

Minor changes

  • Support for case-insensitive Java-class event property names (ESPER-103)
  • Additional engine configuration options
  • 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

Version 1.9.0 Update

Released June 6, 2007

API changes

  • None

Major changes

  • 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

Minor changes

  • 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)
  • 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"

Version 1.8.0 Update

Released April 22, 2007

API changes

  • None

Major changes

  • 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)

Minor changes

  • 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"

Version 1.7.0 Update

Released March 18, 2007

API changes

  • New statement management API (ESPER-90)
    • Note: Starting this release the engine remembers stopped statements, however a stopped statement takes very little memory. Destroy a statement to eliminate any resources held by an engine for a statement.

Major changes

  • 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)
  • Support for plugging-in a custom-developed view (ESPER-41)

Minor changes

  • Allow literal keywords to be case insensitive (ESPER-89)
  • More helpful error messages when invalid syntax (ESPER-82)
  • Fixed issue ESPER-86 "selecting first element via prev and count(*)"
  • Fixed issue ESPER-92 "String with parantheses not parsing in static method arg"

Version 1.6.0 Update

Released February 17, 2007

API changes

  • None

Major changes

  • 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)

Minor changes

  • 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"

Version 1.5.0 Update

Released January 11, 2007

API changes

  • None

Major changes

  • 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

Minor changes

  • Documentation - new chapter explaining the output model
  • Fixed issue ESPER-75 "PropertyAccessException selecting individual fields from a group-by with sub-ordinate length window"

Version 1.4.0 Update + Release of new EsperIO API

Released December 26, 2006

API changes

  • New Esper Input Adapter API for reading CSV (comma-separated value format) files and running event simulations from timestamped CSV files (ESPER-6 Input Adapter for reading CSV files)

Major changes

  • 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)

Minor changes

  • 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

Version 1.3.0 (update)

Released November 14, 2006

API changes

  • None

Major changes

  • Added support for SQL queries within EPL (Enhancement request ESPER-30)
  • Added support for regular expressions (regexp) and SQL 'like' (Enhancement request ESPER-65)

Minor changes

  • None

Version 1.2.0 (update)

Released October 26, 2006

API changes

  • None (Please NOTE any EPL changes as below)

Major changes

  • 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)

Minor changes

  • 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)

Version 1.1.0 (update)

Released September 19, 2006

API changes

  • None

Major changes

  • 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

Minor changes

  • fixed issue ESPER-56 "count(*) always returns 0"
  • fixed issue ESPER-59 "Internal Threading Bugs Found"
  • fixed issue ESPER-57 "Initialize not resetting types declared via 'insert into'"
  • fixed issue ESPER-61 "Having clause not applied in query without group-by and without aggregation functions"
  • documentation enhancements

Version 1.0.5 (update)

Released August 22, 2006

API changes

  • Added methods to com.espertech.esper.client.Configuration and EPRuntime to configure and process XML DOM and Map events

Major changes

  • 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

Minor changes

  • New AutoId RFID example for XML event processing, includes simulator for running from the command line
  • New chapter on Event Representations

Version 1.0.0 (final production)

Released July 24, 2006

API changes

  • Added method on Configuration to add auto-import

Major changes

  • 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 (||)

Minor changes

  • 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.

Version 0.9.5 (Beta enhancements release)

Released July 3, 2006

API changes

  • None

Major changes

  • Support for "insert into" clause allowing chains of EPL statements and merging of event streams
  • Capability added to sort output using an "order-by" clause
  • Support for bit-wise AND (&), OR (|) and XOR(^) operators

Minor changes

  • Bug fix for allowing boolean expression in select clauses, such as "select a and b from MyEvent..."

Version 0.9.1 (Beta bug fix release)

Released June 10, 2006

API changes

  • None

Major changes

  • None

Minor changes

  • New EPL 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 in EPL for statements that contain only aggregation functions in the select clause such as "select sum(volume) from StockTick". The engine was incorrectly posting an event per event posted by the stream's window, rather then a single aggregate event.
  • Bug fix in EPL group-statements by without output rate limiting. This problem occured using a group-by clause without output rate limit and resulted in multiple events posted that include prior groups for each event posted by the window.

Version 0.9.0 (Beta Release)

Released June 4, 2006

API changes

  • None

Major changes

  • Support for output rate limiting based on number of events and time-based, and choice of last or all events
  • Support for outer joins for an unlimited number of event streams (was limited to 2 streams)
  • Renamed view "std:last" to "std:lastevent"

Minor changes

  • New example computing RSI (a financial indicator) using a simple pattern listener
  • New reserved keywords: last, events, output, seconds, minutes

Version 0.8.5 (Beta Release)

Released April 22, 2006

API changes

  • None

Major changes

  • Group-by view has been renamed from "std:group" to "std:groupby" since group is a reserved keyword
  • Support for the "group by" and "having" clauses
  • Support for aggregation functions: max, min, sum, avg, count, median, stddev, avedev; including distinct and count(*)

Minor changes

  • The univariate statistics view "stat:uni" changed the name of derived event properties to "stddev" and "stddevpa" from formerly "stdev" and "stdevpa" to stay consistent with the aggregate functions of the same name

Version 0.8.0 (Beta Release)

Released March. 24, 2006.

API changes

  • Renamed method on Configuration for configuring event type alias

Major changes

  • Support for event inheritance and interface implementation, polymorphism, superclasses
  • Support for simple, mapped, indexed, nested and combinations of event properties
  • Refined exception texts to better indicate problem reasons

Minor changes

  • Documentation enhancements
  • Configuration XML file schema changes: renamed 'event' tag to 'event-type' and replaced 'name' with 'alias'

Version 0.7.5 (Alpha Release)

Released Feb. 21, 2006.

API changes

  • Added optional Configuration parameter to EPServiceProviderManager to control engine configuration

Major changes

  • EPL supports outer joins: left, right and full join on 2 streams
  • EPL supports IS NULL, = NULL, IS NOT NULL, and !=
  • EPL allows new built-in function MAX(a, b,...) and MIN(a, b,...)
  • Event Pattern use of results in filters, such as "every a=EventX -> every b=EventY(objectID=a.objectID)"
  • EPL and Event Pattern: Removed requirement that event names have () postfix, e.g. 'every a=X' is now equivalent to 'every a=X()'

Minor changes

  • Event Patterns - improved removal of permanently false patterns (e.g. B arrives in 'A and not B')
  • Documentation enhancements
  • Added ATM sample to show simple join

Version 0.7.0 (Alpha Release)

Released Jan. 16, 2006.

API changes

  • None

Major changes

  • None

Minor changes

  • None