-
Notifications
You must be signed in to change notification settings - Fork 259
/
changelog.txt
1682 lines (1510 loc) · 130 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Esper Changelog
===================
Changes in version 9.0.0
------------------------
- Version 9.0.0 requires Java 17 or higher
- The following dependent jar files are upgraded:
- ANTLR is now 4.13.1 (antlr4-runtime-4.13.1.jar, previously antlr-runtime-4.9.3.jar)
- Janino is now 3.1.12 (commons-compiler-3.1.12.jar and janino-3.1.12.jar, previously *3.1.9.jar)
- Reload4J (optional) is now 1.2.25 (reload4j-1.2.25.jar, previously reload4j-1.2.19.jar)
- For use with Avro: Avro (optional) is now 1.11.3 (avro-1.11.3.jar, previously avro-1.11.1)
- The EsperIO dependencies are updated: esperio-kafka to kafka 3.7.0, esperio-amqp to amqp 5.21.0, esperio-springjms to spring 6.1.6
- Fixed issue #266 statement conversion to statement model and back to statement bug for typed arithmetic expression
- Fixed issue #274 failed to compile chain invocation of mapped event property
- Fixed issue #276 No output from statement with 17+ regexp/like clauses
- Fixed issue #285 Regexp and like don`t work for first event in context
- Fixed issue FD212 NPE after restart context and subquery-in-filter
- Fixed issue FD232 Failing statement deployment with @Audit annotation usage
- Fixed issue FD235 NPE context event insert into enumforge
- Fixed issue FD236 Null value for on-insert+unmatched when named window column and trigger event name the same
- Fixed issue FD244 compilation exception when using OBJECTARRAY default representation and partitioned context with join and where-clause with context key properties
- Fixed issue FD247 table inner-join with on-clause does not respect predicate
- Fixed issue FD260 NPE obtaining instancelock concurrent partition drop
Changes in version 8.9.0
------------------------
- The following dependent jar files are upgraded:
- SLF4J is now 1.7.36 (slf4j-api-1.7.36.jar, previously at slf4j-api-1.7.30.jar; optionally use with Reload4J by adding slf4j-reload4j-1.7.36.jar)
- Janino is now 3.1.9 (commons-compiler-3.1.9.jar and janino-3.1.9.jar, previously *3.1.6.jar)
- For use of XML with XML-Schema (XSD): xerces-impl is now version 2.12.2
- For use of Avro: Avro is now version 1.11.1
- Reload4J replaces Log4J 1.2 and is now the default log library; Esper still only depends on SLF4J so applications can use any logging library
- The distribution now ships with reload4j-1.2.19.jar and slf4j-reload4j-1.7.36.jar (removed are reload4j-1.2.19.jar and slf4j-log4j12-1.7.30.jar)
- The EsperIO dependencies are updated: esperio-http to 4.5.14 and 4.4.16, esperio-amqp to 5.17.0, esperio-kafka to 3.4.0, esperio-spring to 5.3.27
- Fixed issue #261 compilation ex EXPRESSION and GROUP BY clause
- Fixed issue #260 compile fails if json schema used and module path contains dots
- Fixed issue FD115 change default avro setting to Avro-disabled
- Fixed issue FD116 create-variable fails with unrecognized type when type defined by create-schema
- Fixed issue FD120 runtime wide pattern subexpression count in HA
- Fixed issue FD129 ConcurrentModificationException named window with unique and FAF-delete/update
- Fixed issue FD130 getter API for statement and runtime metrics
- Fixed issue FD136 compile exception after-datetime with event-provided primitive long
- Fixed issue FD138 wrong index instances dropped upon partition terminate
- Fixed issue FD168 join strategy with all inner-joins always chooses an outer join path
- Fixed issue FD195 NPE compiling on-split with single insert for context prop enum forge
- Fixed issue FD198 compiler exception compiling static method receiving single parameter from declare expr
Changes in version 8.8.0
------------------------
- The following dependent jar files are upgraded:
- ANTLR is now 4.9.3 (antlr4-runtime-4.9.3.jar, previously antlr-runtime-4.7.2.jar)
- Janino is now 3.1.6 (commons-compiler-3.1.6.jar and janino-3.1.6.jar, previously *3.1.0.jar)
- Avro (optional) is now 1.11.0 (avro-1.11.0.jar, previously avro-1.9.1)
- For use of XML with XML-Schema (XSD): New jar files are required in classpath, namely "esper-common-xmlxsd-<version>.jar" and "xercesImpl-2.12.1.jar" (see documentation)
- Support for event precedence in insert-into
- Support for inserting multiple rows in a single fire-and-forget insert
- Support for lock activity logging
- Support for the dot-operator to resolve a property name to a getter method
- Support for substitution parameters for SQL relational database access in SQL query text expressions
- Support for relational database SQL in fire-and-forget query from-clause
- Support for null-value types in SQL type mapping
- Fixed issue FD83 Map event type getter avoidable check of event bean value
- Fixed issue #251 Dependency org.apache.httpcomponents:httpclient, leading to CVE problem
- Fixed issue FD79 Remove compiler dependency on org.apache.xerces.impl
- Fixed issue FD68 Insert-into inconsistently requires some or all properties depend on named window or stream
- Fixed issue FD69 NPE subquery within SQL parameter text
- Fixed issue FD49 Compiler exception planning SQL-join and where-clause constant is null (fix commented out tests)
- Fixed issue FD66 Missing column type validation for fire-and-forget query when inserting into non-bean named window or table
- Fixed issue FD50 Exception compiling grouped aggregation query with empty group_by function parameter
- Fixed issue #241 NPE compiling from Map type property
- Fixed issue #233 No output from statement with multiple regexp or like clauses for the same event property
- Fixed issue #232 NPE on auditing last() window function
- Fixed issue FD49 Compiler exception planning SQL-join and where-clause constant is null
- Fixed issue #252 IllegalArgumentException Unknown Filter Parameter due to Filter Not-Equals Planning
- Fixed issue FD47 Exception compiling context property with dot operator
- Fixed issue FD48 fix EPDeployException Deployment already exists by same-value crc
Changes in version 8.7.0
------------------------
- Visual Studio Code Extension now has a debugging support, see https://marketplace.visualstudio.com/items?itemName=EsperTech.esperepl
- Support for EsperHA state backwards compatibility starting from this version
- Support for module line item to have content line numbers and end line numbers
- Support for dataflow EventBusSource operator to populate events of implicitly-created wrap event type
- Reduced compile time and compiler output size for many types of typical statements and when using the compiler path
- Fixed issue #215 chained method invocation with 'first' aggregation function failed
- Fixed issue #216 Fire-and-Forget query fails with ConcurrentModificationException and when using create-index
- Fixed issue #217 Downcasting from Object to BigDecimal incorrectly uses Number#longValue
- Fixed issue #220 NullPointer when using List field in update istream query
- Fixed issue #228 Configuration-Compiler byte code option "attachModuleEPL" only works for modules
- Fixed issue #229 Create-inlined-class visibility controlled by wrong compiler option
- Fixed issue #230 Tables defined within modules do not work in joins
- Fixed issue #231 Logging configuration setEnableJDBC ignored
- Fixed issue LME-522-32405 Insert-into to column declared as bean event produces eventbean instance
- Fixed issue ZRG-950-63119 Very large number of selected fields and aggregation cause compiler code to grow beyond 64 KB
- Fixed issue LPQ-234-51126 Janino keep flag not honored when Janino debug is enabled
Changes in version 8.6.0
------------------------
- Visual Studio Code Extension for EPL can be download from the Visual Studio Code Marketplace at https://marketplace.visualstudio.com/items?itemName=EsperTech.esperepl
- The following dependent jar files are upgraded:
- SLF4J is now 1.7.30 (slf4j-api-1.7.30.jar, optionally use with Log4J by adding slf4j-log4j12-1.7.30.jar, previously at slf4j-api-1.7.28.jar)
- Support for parameterized types (aka. generic types). Due to Java type erasure previous releases had limited support for parameterized types. This release tracks type parameters more comprehensively.
- Support for queries without a from-clause
- Support for the as-keyword for patterns in context conditions
- Support for a compiler option to receive the compiler output for example for last-minute class analysis
- Reduced compile time and compiler output size for many types of typical statements
- Fixed issue #205 Compiler Index 1 out of bounds when second+ argument to variadic function is an EventBean
- Fixed issue #211 WHERE-expression returning null when rewritten as filter negation lets filter pass when it should not
- Fixed issue #212 Nested nested property with escape cannot find property
- Fixed issue SIQ-731-55169 On-delete with time-to-live window may not delete event from window
- Fixed issue QEQ-496-54542 Filter analyzer should disallow current_timestamp() as a negating expression
- Fixed issue IMQ-251-72540 Keyed context with termination condition as filter with as-name not populating termination event
- Fixed issue EWQ-541-63692 Exists-subselect in filter expression against virtual-data-window ignores criteria
- There are minor changes to some of the extension APIs due to support for parameterized types.
Extension APIs now use EPType (in replacement of java.lang.Class) and EPChainableType (in replacement of EPType). Please review the extension SPI interfaces and examples.
The changes only affect parameter and return type information that are provided to extensions and that extensions may return as result types.
Changes in version 8.5.0
------------------------
- Support for all enumeration methods to have an index and size formal parameter
- Support for the arrayof enumeration method
- Support for array element expressions ([expr]) in chaining
- Support for compiler filter plan logging
- Support for compiler filter index planning to plan composite value expressions, composite lookupable expressions, composite boolean expressions and confirming and negating conditions
- Support for inlined class to expose a plug-in single-row functions, aggregation functions and aggregation multi-functions
- Support for inlined class to become a variable type
- Support for audit to include runtime current time
- Support for compiler flag that disallows inlined-classes
- Support for mutation expressions in update-istream and on-set
- Support for assignment left-hand-side array expressions
- Support for the new-keyword to allow array length and initializer expressions
- Fixed issue #185 On-merge with assign column as typed event causes cast exception when assigned using stream alias for OA and Map types
- Fixed issue #187 Event type is not an runtime-native event type when using AMQPToObjectCollectorJson
- Fixed issue #190 Improve exception message when EPL object model has expression constant that holds application that has no compile representation
- Fixed issue #194 Memory leak in from-clause method invocation when no data window and indexable where-clause
- Fixed issue #195 Module-uses providing wrong module name causes fails to resolve EPL object when the EPL object doesn't need disambiguate
- Fixed issue #197 Mvel same script invoked with different params returns wrong result
- Fixed issue MIZ-174-87260 Binary operator and string-type fails with compile exception
- Fixed issue QAS-554-23879 Filter expression subquery against table throws ClassCastException
- Fixed issue JXU-229-37952 Compiler exception "get" with selectFrom
- Fixed issue EWQ-541-63692 Exists-subselect in filter with udf not processing
- Fixed issue KFJ-950-98528 Contained-event with where-clause fails to validate when no data window when referencing contained type field
- Fixed issue WFP-422-50932 Incorrect function name in multi-function aggregation validation
- Fixed issue XZO-914-34823 Fully-grouped query with irstream and output last unordered outputs groups without changes
- Fixed issue SZP-674-85240 Compiler exception "no applicable method found" for private static class with public method
- Fixed issue VJS-994-99492 Aggregation with nested static calls causing UnsupportedOperationException
- Fixed issue DJE-274-32309 EPL compilation error serde not provided
- Fixed issue IJW-152-82035 Timer:interval with zero-size interval doesn't fire on context allocation
- Fixed issue BTE-313-35520 Keyed and nested context does not include end or termination event in output
- Fixed issue UQR-251-48674 Constant variable not allowed to set
Changes in version 8.4.0
------------------------
- The following dependent jar files are upgraded:
- SLF4J is now 1.7.28 (slf4j-api-1.7.28.jar, optionally use with Log4J by adding slf4j-log4j12-1.7.28.jar, previously at slf4j-api-1.7.28.jar)
- Support for EPL to contain Java class code; In-lining Java code into EPL is useful for adding imperative code for example for library methods, for integration and for extension keeping EPL and code together in one place
- Support for EPL for resetting table column aggregation state
- Support for EPL for subqueries with fire-and-forget
- Support for EPL for a variation of the "selectfrom" enumeration method that provides an index and count
- Support for EPL for passing named events, event properties and variables to an expression
- Support for API for staging and unstaging deployments, and for controlling time and event visiblity on the level of deployments
- Support for API for getting the providing- and consuming dependencies of a deployment
- Support for API for rollout deploying multiple compileds as a unit
- Fixed issue #141 Identifier escaping when using "new" not removing backticks
- Fixed issue #173 NullPointerException if trying to compile a statement with rstream and output in 8.3.0
- Fixed issue #174 janino exception while compiling query with DateTimeFormatter in 8.3.0
- Fixed issue #175 single-row-function not resolved with single "." string literal parameter
- Fixed issue #179 Fails to compile "NOT variable.method()"
- Fixed issue SHW-318-74709 compile exception with ChronoField.MINUTE_OF_DAY
- Fixed issue ELW-805-43147 ClassCastException with custom serde casting BeanEventBean to column type for table with class-typed column where class is underlying type of event
- Fixed issue SCJ-651-76603 Validation fails inserting a stream name into an event-type-typed property using on-merge (expected event type but receives Map)
- Fixed issue DBM-210-95782 Context termination not occurring when terminated (or end) condition is correlated to a pattern in the initiated-by (or start) condition by pattern tags
Changes in version 8.3.0
------------------------
- The following dependent jar files are upgraded:
- SLF4J is now 1.7.28 (slf4j-api-1.7.28.jar, optionally use with Log4J by adding slf4j-log4j12-1.7.28.jar, previously at slf4j-api-1.7.25.jar)
- ANTLR is now 4.7.2 (antlr4-runtime-4.7.2.jar, previously antlr-runtime-4.7.1.jar)
- Janino is now 3.1.0 (commons-compiler-3.1.0.jar and janino-3.1.0.jar, previously *3.0.10.jar)
- Avro (optional) is now 1.9.1 (avro-1.9.1.jar, previously avro-1.8.2)
- Support for create-xml-schema allowing dynamic XML type definition
- Support for defining a deployment-specific class loader
- Support for defining new enumeration methods
- Support for defining new datetime methods
- Support for using application-provided classes with JSON event type
- Support for customizing JSON parsing
- Reduced memory use when there are many partitions
- Fixed issue #166 Partitioned context with pattern that reacts on named window events not applying partition-related filters
- Fixed issue #169 Subquery against named window ignores filter criteria that are placed in parens
- Fixed issue NDJ-568-23909 Bean event types mismatch error inserting into existing stream
- Fixed issue WXG-492-37246 Serde for select-distinct should not be required
- Fixed issue YHA-580-65208: Event type incompatible after using copy-from with class-type properties for Map schema
- Fixed issue DQK-539-38630 NPE parsing JSON having array value that should not be there
- Many other smaller improvements not listed here
Changes in version 8.2.0
------------------------
- Support for the JSON event type.
This allows "create json schema" and make it possible to send JSON formatted text into the runtime as events.
The compiler uses the JSON schema(s) to create a fast JSON parser and fast internal representation of parsed JSON. No external JSON library is required.
The JSON parser has comparable and better performance compared to common JSON parsers. EsperIO gained JSON support.
- Support for fast and memory-saving compound keys
For any composite keys out of two or more expressions the compiler produces a class that represents the composite key and that implements equals and hashCode.
This is applicable to the group-by clause including rollup, data windows with keys (such as #unique, #firstunique, #groupwin, #rank), partition-by for keyed segmented contexts,
contexts with distinct, the select-clause distinct keyword, the query planner when planning implicit and explicit indexes, create index, every-distinct, the partition-by clause
for match-recognize, table column keyed-access expressions, the for-clause for grouped delivery and the distinctOf enumeration method.
- Support for array-type values as part of keys
All expressions for use as keys, as listed above, now allow array-type values.
- Support for resolving serializers and de-serializers (aka. serde) at compile time for use with Esper High Availability.
There are two advantages of resolving the serde at compile time:
The compiler is the best place to decide whether a serde is needed or not and therefore we are only resolving serdes when they are indeed needed for HA.
At start/recovery time the runtime can simply load compiled EPL and the serdes are already associated making recovery or startup in general faster.
- Fixed issue #149 Enum method used on cast to collection not validating
- Fixed issue #155 On-merge against a table with a second action on another table fails
- Fixed issue #156 Constant pool for class has grown past JVM limit of 0xFFFF
- Fixed issue #157 Unable to use avro to event inheritance
- Fixed issue AOW-227-76212 Epl import statements not used when passing epl to compiler
- Fixed issue BLP-654-24304 @protected named window not usable for fire-and-forget
- Fixed issue BUB-725-88367 Unexpected end-of-input trailing comments
- Fixed issue FNA-839-16054 Forbidden expression expects to throw an exception
- Fixed issue IKL-481-12787 Unsupported exception for varargs call for service exposed by variable
- Fixed issue JFP-412-96594 Support for arrays in key expressions and multikey production
- Fixed issue JFU-988-13370 Find-annotation considers annotations of annotations
- Fixed issue KJY-593-62469 NullPointerException with internal timer upon destroy
Changes in version 8.1.0
------------------------
- Support for parallel multi-threaded compiling of multi-statement modules
- Support for named window on-delete silent delete
- Support for crontab to have milliseconds
- Support for aggregation methods
- Support for nested events in online tools
- Support for context conditions to list multiple crontabs
- Support for event_identity_equals (returns a boolean value indicating whether two events are the same event)
- Support for disabling script compile by configuration
- Fixed issue #128 Not-in ranges is erased by compiler when called "toEpl"
- Fixed issue #134 Compile exception calling a Calendar method
- Fixed issue #136 Compile failed with dot escape in map property
- Fixed issue #142 Null EventBean reference delivered to UpdateListener
- Fixed issue AGW-886-87933 @protected for fire-and-forget not working
- Fixed issue BLP-654-24304 validation of @buseventtype fails to throw for @protected
- Fixed issue HMU-266-19541 IllegalArgumentException EventType has already been added by module
- Fixed issue ZLP-624-76474 InternalCompilerException large method when creating many new schemas
Changes in version 8.0.0
------------------------
Version 8 is a significant update to the Esper ecosystem. Starting from version 8 Esper is a compiler and a runtime.
The Esper compiler produces 100% JVM byte code and the runtime loads and executes the byte code, similar to other programming languages such as Scala.
For most applications using Esper public APS version 8 is not a drop-in replacement of earlier versions.
Information on the changes between version 8 and earlier versions can be found online at http://www.espertech.com/esper/esper-information-about-esper-version-8/
Other changes are:
- Support for Java 9 and Java 11
- Support arrays in the cast function (#107)
- Compiler now depends on
- ANTLR runtime library version is now 4.7.1 (antlr4-runtime-4.7.1.jar, previously antlr-runtime-4.7.jar)
- Janino runtime library version is now 3.0.10
- Fixed issue #108 Determination of overloaded method applicability with varargs
- Fixed issue #109 Allow interface to be treated as object type
- Fixed issue #110 Variable with unary minus result in incorrect result
- Fixed issue #121 Filter expression with constant variable does not trigger
- Fixed issue RLQ-681-13506 contained-event-property with on-merge incorrect results
- Fixed issue GUV-728-49821 Zero keys for in-clause causes array exception
- Many other improvements across the code and documentation that are not listed above
Changes in version 7.1.0
------------------------
- Bug fix release with no significant new functionality
- Fixed issue SNU-737-77471 Byte code generation for filter boolean expressions can take place at runtime and degrade performance
- Fixed issue VYZ-3431-6686 JMSOutputAdapter ClassCastException when HA enabled
- Fixed issue CPY-657-70575 FromClause-model produces an extra 'outer' in "toEPL" for joins
- Fixed issue KEC-614-81453 An exception thrown when evaluating rhs for variable-set does not invoke exception handler
- Fixed issue #99 Returning a list from an expression declaration using Case Control Flow with multiple conditions
- Fixed issue ZTB-991-52280 Deployment API fails compile for script expression returning array
- Fixed issue AYG-126-66992 Improve named window dispatches to reduce contention
- Many other improvements across the code and documentation that are not explicitly listed above
Changes in version 7.0.0
------------------------
- Janino is now a compile-time dependency. At runtime Janino is required by default; Janino is not required when byte code generation is disabled in the configuration.
- The following dependent jar files are upgraded:
- ANTLR runtime library version is now 4.7 (antlr-runtime-4.7.jar, previously antlr-runtime-4.5.3.jar)
- CGLIB version is now 3.2.5 (cglib-nodep-3.2.5.jar, previously cglib-nodep-3.2.4.jar)
- SLF4J is now 1.7.25 (slf4j-api-1.7.25.jar, optionally use with Log4J by adding slf4j-log4j12-1.7.25.jar, previously at slf4j-api-1.7.21.jar)
- Byte code generation ... generates byte code for all of result set processing, aggregation, having-clause, order-by and any interdependent expressions
- Support for keyed contexts to have initiated-by and terminated-by
- Support for obtaining context properties from context admin API
- Support for registering listeners that receive context- and context-partition related activity
- Support for on-merge to insert a new row without the need for a where-clause or match-clause
API or EPL Changes:
- Event property types are boxed types except when the event type is a Java class and the property type is a primitive type. Expressions return boxed types.
- In "create schema" when using "copyfrom" the copied properties are now always first and explicitly-listed properties are added last, in respect to property order.
- The "groupwin" grouped window specification is now only allowed once per stream. In previous releases, in queries without more than one data window, it could be used multiple times.
- In output-rate-limiting, the "enable_outputlimit_opt" hint is now the default behavior, resulting in output-rate-limiting needing less memory for most cases
Bug fixes
- Fixed issue LGT-873-30098 Groupwin produces null-results for expression batch window without groups
- Fixed issue KUL-860-35888 Script expression taking subquery result as parameter throws NPE
- Fixed issue #93 audit for in-expression with open/closed range has incorrect text
- Fixed issue PIM-661-90074 propertyexception occurs with nestedcontext when initiatedby-event selected
- Fixed issue EDK-438-50100 NPE in get-context-partitions for 3-lvl context
- Fixed issue GQR-172-75175 Stack overflow processing filters
- Fixed issue JPT-362-46168 Enumeration method on match-recognize measures-clause matches returns invalid results
- Fixed issue QXJ-283-37230 Create-schema 'copyfrom' results in property order that is incompatible with object-array underlying
- Fixed issue UFD-602-37122 Chained max-enumeration-method results in validation exception
- Fixed issue MNO-830-58619-0 Lastever and firstever aggregation functions with wildcard incorrect property type
- Fixed issue MNO-830-58619-1 NPE validating union enumeration method
- Fixed issue MNO-830-58619-3 Min-function with datetime method throws parse exception
- Fixed issue FNP-470-45830 Backtick to escape stream name throws unrecognized
- Fixed issue SMC-627-22819 Method join parameterized by streams not executing in dependency order
- Many other improvements across the code and documentation that are not explicitly listed above
Changes in version 6.1.0
------------------------
- Support for spatial point-region and MX-CIF quadtree indexes both filters and events
- Support for "cast" to take a date format expression
- Support for date-time "format" method to take a format expression
- Support for a new time-to-live data window for use with watermarks
- Support for all aggregation functions to receive a filter expression
- Minor change in default configuration: By default the "share-view" settings is now false and "configuration.getEngineDefaults().getViewResources().setShareViews(false)" is the default.
Minor API Change:
- We have changed how to the statement object model SPI reflects indexes. This affected the following classes:
com.espertech.esper.client.soda.CreateIndexColumn (from the statement object model), columns are now expressions
com.espertech.esper.client.hook.VirtualDataWindowEventStartIndex (from the virtual data window SPI), fields are now expressions
Bug fixes
- Fixed issue #71 OSGi Import-Package: org.slf4j is missed
- Fixed issue #74 Broken link to configuration schema
- Fixed issue #76 Inheritance of avro events fails unpredictably
- Fixed issue TBQ-406-26288 Crontab non-sensible schedule causes hang
- Fixed issue NEA-374-86427 Inbound pool event processing exception not handled by custom ExceptionHandler
- Fixed issue UEJ-229-28464 similar pattern with repeat not firing
- Fixed issue CWV-630-11507 Explicit indexes cause extraneous calls to validateCompileExplicitIndex
- Fixed issue RYX-964-66911 NullpointerException query INNER JOIN without ON
- Many other improvements across the code and documentation that are not explicitly listed above
Changes in version 6.0.1
------------------------
- Requires Java 8
- The following dependent jar files are upgraded:
- ANTLR runtime library version is now 4.5.3 (antlr-runtime-4.5.3.jar) (previously antlr-runtime-4.3.jar)
- CGLIB version is now 3.2.4 (cglib-nodep-3.2.4.jar) (previously cglib-nodep-3.1.jar)
- SLF4J is now required (slf4j-api-1.7.21.jar) (commons-logging is no longer used) (optionally use with Log4J by adding slf4j-log4j12-1.7.21.jar)
- Support for subqueries to use a having-clause
- Support for Avro
- Support for passing transient objects as part of configuration, for extensions that rely on injected objects
- Support for view parameters to originate from context-provided properties
- Support for overlapping and non-overlapping contexts without terminating condition, i.e. "create context PerSession initiated by SessionEvent" making "terminated by" optional.
- Support for microsecond unit of time, allowing application to run either at millisecond and microsecond resolution; added new keywords "microseconds", "microsecond", "usec"
- Support for deployment API to by default atomically deploy and undeploy all statements without the need to take an explicit lock; support for providing a timeout and backoff strategy
- Support for user-defined functions to return EventBean-typed values
- Support for scripts to return EventBean-typed values
- Support for method invocation joins to call script and UDFs and to accept EventBean-typed values
- Support for contained-event expressions to accept EventBean-typed values returned by the expression
- Support for dataflow operator arguments to accept variables as part of the expression
- Support for filter optimization to recognize "in"-keywords when used with array, map or Collection-type values
- Support for plugging-in a provider for class-for-classname and classloader
- Support for views to use #-syntax instead of namespace:name, i.e. "MyEvent#time(30)", and for views to have no parenthesis for empty parameter list
- Support for multiple unidirectional streams for full outer joins
- Support for Java-8 ZonedDateTime and LocalDateTime
- New EsperIO Kafka input and output adapter
- Many other improvements across the code and documentation that are not explicitly listed above
Version 6.0.1 API and EPL Backwards-Incompatible changes:
- The @EventRepresentation annotation changed: it now takes a default parameter i.e. @EventRepresentation(map)
- Minor change in behavior in respect to Object-array event types: When inserting a single column into an existing Object-array event type the engine would allow that column to become the property of a Object-array fragment, which was inconsistent with other types
- Minor change to client API in CurrentTimeEvent to support microseconds: Rename of field "timeInMilliseconds" and CurrentTimeSpanEvent to "targetTime"
- Minor change to deployment API EPDeploymentAdmin which now also declares InterruptedException and DeploymentLockException to indicate when a lock cannot be taken
- Minor change to packages for classes in EsperIO CSV+File adapter: classes moved to "com.espertech.esperio.csv" and "com.espertech.esperio.file".
- Minor change to packages for classes in EsperIO JMS adapter: classes moved to "com.espertech.esperio.jms"
Bug fixes
- Fixed issue #55 NPE thrown in pattern that has a function with a subselect with select-star in an atom filter
- Fixed issue #61 Variable value null for filter boolean expression
- Fixed issue #62 Warning logged re. IllegalArgumentException when undeploying module using context variables
- Fixed issue #65 Cannot set enum variables that contain methods
- Fixed issue QGZ-934-29530 NPE casting null constant to type using 'cast(null, type)'
- Fixed issue FEH-558-71216 NullPointerException thrown during Single Row Function invocation passing invocation context when eligible for filter optimizations
- Fixed issue FIP-509-17859 NPE thrown context-event props used in output rate crontab
- Fixed issue CUI-623-48365 Partitioned-context with null-value key not processing events
- Fixed issue FHX-177-20419 Wrapper underlying EventBean has incorrect associated type for single-column select conversion
- Fixed issue SIP-889-27087 Unparsable for JavaScript script with single-quote in a commented line
- Fixed issue ZBL-605-95607 Event matches twice when filter has an 'or' and when used with contexts causing duplicate delivery or stack overflow
Changes in version 6.0.0
------------------------
- Same as 6.0.1, with the exception of SIP-889-27087 and ZBL-605-95607
Changes in version 5.5.0
------------------------
- Support for methods that take varargs (methods that take an arbitrary number of values as parameters)
- Support for subscribers to receive the EPStatement instance as a parameter
- Support for configuring the size of the declared-expression value cache
- Improved support for extensions for XML schema events
- Added .NET NEsper -specific documentation, see appendixes
- Many other improvements across the code and documentation
Bug fixes
- Fixed issue OUY-825-59339 enumeration-intersection between string-array throws exception
- Fixed issue UBY-248-57701 create-expression of javascript with array init causes parse exception
- Fixed issue ESC-000-00001 stack overflow creating isolated pattern statement, partially completing pattern and un-isolating stmt
- Fixed issue ESC-000-00002 grouped-window grouping parameter as datetime method nets property access exception
- Fixed issue ESC-000-00003 potential deadlock in consumer dispatch for context-partitioned named windows
- Fixed issue ESC-000-00004 possible concurrent modification in update-istream
- Fixed issue ESC-000-00005 category-context with boolean-expr compile NPE
- Fixed issue Github#45 enum named after reserved keyword requires unescape class name
Changes in version 5.4.0
------------------------
- Support for exception handler to receive a callback when an exception occurs during stop of an statement agent instance
- Support for configuring annotation-only imports and for implicit conversion for enumeration values
- Support for AMQP sink emitter to send header map
Bug fixes and other improvements
- Fixed issue IZJ-256-61200 @audit for grouped window with intersection
- Fixed issue DXR-616-21577 context partioned on-trigger no using right premade named window instance lock
- Fixed issue VNB-780-39427 exception cleanup incomplete when unexpected exception during compile and may leave resources referenced
- Fixed issue XRX-507-66275 declaredexpr in filter with contextpartition causes NPE
- Fixed issue GAM-776-53476 load context partition initializes pattern twice
- Fixed issue MIO-528-12756 ArrayIndexOutOfBoundException in match-recognize for define-clause with enumeration method on group variable
- Fixed issue SEK-319-56385 failed to resolve method invocation when prefixed by stream name for named window filter
- Fixed issue LAW-104-94306 ArrayIndexOutOfBoundsException for single-row-udf with filter-optimizable flag in pattern filter accepting properties of pattern-state results
- Fixed issue Github#24 NullPointerException for filter with global expression in context-partitioned stmt
- Fixed issue Github#26 NullPointerException with wrong On-select syntax
- Fixed issue Github#27 joining two named windows when using multiple thread and where both windows use "std:unique" produces incorrect results
- Fixed issue Github#29 StackOverflowError when processing named window insert large batch
- Fixed issue Github#31 Expression with bracket-syntax table access causes string constant validation exception
- Fixed issue Github#32 Incorrect result for aggregation when multiple agg functions in same statement each take a declared expression as parameter
- Fixed issue Github#33 NullPointerException with non-aggregated `having` clause and addListenerWithReplay
- Fixed issue Github#34 minor textual comment UTF-8 fix breaks build on some platforms
- Fixed issue Github#36 terminal-service build issue with Maven minor pom change
- Fixed issue Github#38 Benchmark scripts have incorrect Java classpaths
- Fixed issue Github#41 Prior function does not accept constant variable
- Fixed issue Github#42 BeanEventType call to FastClass.create() for OSGI improvement
- Fixed issue Github#43 esperio socket exports and bundle versions
Changes in version 5.3.0
------------------------
- Support for match recognize to have a maximum state count
- Support for output rate limiting hints
- Support for filter expression rewrite hint
- Support for stateless statements to have no listener dispatch or insert into latches
- Support for configuring an engine-wide default time zone
- Support for insert-into into a stream without any properties to use a select-clause that selects only "null"
- Many other improvements across the code and documentation that are not explicitly listed above
Bug fixes and other improvements
- Fixed issue Github#5 Problem parsing "09" as number
- Fixed issue Github#20 BigDecimal coercing divider not using math context when provided
- Fixed issue Github#21 Concat expression not thread safe
- Fixed issue RPK-972-99663 create-variable with context not releasing variable on undeploy with deployment admin
- Fixed issue GOH-206-36441 aggregated with grouped and having clause incorrect result for non-join and join
- Fixed issue KKL-270-99184 variable with dot-method not current value when used from separate thread
- Fixed issue PJJ-142-58829 bad error message for property-not-found and enum method
Changes in version 5.2.0
------------------------
- Support for aggregation functions to specify the level of grouping in the parameter list, removing the need for separate subqueries for many use cases
- Support for aggregation rollup in conjunction with tables
- Support for a new pattern observer "timer:schedule" that supports the ISO8601 standard for scheduling
- Support for match-recognize to have patterns that specify repetition (exact, N-or-more, between-N-and-M, between-0-and-M)
- Support for match-recognize to have patterns that specify permutation, i.e. for A and B to become "A B" or "B A"
- Support for the "new" expression to instantiate a given class
- Support for substitution parameter to be given names so that they are available by name and not just by numeric position
- Support for filter expressions that use "or" and "typeof" to optimize filter tree use for reverse index sharing
- Support for "create schema" to specify "null" as a property type
- Many smaller enhancements, optimizations, documentation updates
Bug fixes and other improvements
- Fixed issue ESPER-802 EsperIO CSV and CurrentTimeEvent issue
- Fixed issue ESPER-803 outer join with historical stream and on-clause in addition to where-clause causes incorrect result
- Fixed issue ESPER-804 Allow Subscriber methods other than "update"
- Fixed issue ESPER-805 toEPL() generates badly formatted EPL for contained event selections
- Fixed issue ESPER-806 The type checking rejects the child types for non-bean types and insert
- Fixed issue ESPER-807 Outer join with context partitions thread safety issue
- Fixed issue ESPER-808 Accessing Data via Method Invocation on injected Objects
- Fixed issue ESPER-809 ExprBetweenCompBigDecimal.isLowIncluded/isHighIncluded shouldn't use equals
- Fixed issue ESPER-810 Context partitioned by key throws NPE with partition key property in pattern filter expression
- Fixed issue QQY-321-19355 non-overlapping context started by filter for same event as statements can miss an event under threading
- Fixed issue AHK-632-44071 ArrayIndexOutOfBoundsEx on non-fully-aggregated query with stream select
Changes in version 5.1.0
------------------------
- Support for tables. Tables introduce a number of new capabilities, allowing for more expressive EPL.
- Tables allow multiple statements to aggregate into the same state (we call this co-aggregation)
- Tables allow statements to co-locate aggregation state, update-in-place data and event data conveniently
- Tables can be accessed using a convenient key-based expression, as well as in joins, subqueries etc. comparably to named windows
- Support for the Countmin sketch (or CM sketch) probabilistic sub-linear space streaming algorithm and approximate streaming Top-K
- Support for the new "countever" aggregation function that returns a count of events ever regardless of data windows
- Additional API to query context partition instance count
- Audit logging for context partitions
- The match-recognize "define" clause is now optional
- Support for loosely-scoped expressions using expression alias
- CSV adapter now uses time-spans to advance time
- Socket adapter CSV format now supports a property-ordered string without field names
- Many smaller enhancements and bug fixes, with the most important ones listed here
Bug fixes and other improvements
- Fixed issue ESPER-782 "interval" keyword in match-recognize does not allow uppercase
- Fixed issue ESPER-783 ArithmeticException big decimal divide
- Fixed issue ESPER-784 EsperIO Socket Adapter causes configuration loss when calling "initialize"
- Fixed issue ESPER-788 Exception on uppercase MIN/MAX
- Fixed issue ESPER-791 "Route" API call with outbound threading enabled does not work
- Fixed issue ESPER-792 Dataflow is not initializing in correct order with ~16+ operators
- Fixed issue ESPER-793 QualityOfService example main uses wrong provider URI
- Fixed issue ESPER-794 OSGi Manifest does not contain com.espertech.esper.epl.agg.aggregator package
- Fixed issue ESPER-795 Multidrectional join between two unique-window named windows join throws errors and returns spurious results.
- Fixed issue ESPER-796 EventType Configuration Exception compiling Pojo with Collections
- Fixed issue ESPER-799 Escaping comma character error while using socket adapter
- Fixed issue ESPER-800 Custom aggregation function with multiple parameters receives WildcardParameter instead of event
- Fixed issue ESPER-801 Json renderer escape in a wrong way
- Fixed issue ADQ-943-19260 context-partitioned named window with create index causes NPE
- Fixed issue HXB-611-44301 get method called needlessly when using output snapshot
- Fixed issue UJI-364-58495 CPE repeatedly stopping and starting statement with aggregation and grouped window
- Fixed issue TJJ-530-49640 Transpose function causes type incompatibility message when transposing into an existing type
Changes in version 5.0.0
------------------------
- The following dependent jar files are upgraded:
- ANTLR runtime library version is now 4.1 (antlr-runtime-4.5.3.jar) (previously antlr-runtime-3.2.jar)
- CGLIB version is now 3.1 (cglib-nodep-3.1.jar) (previously cglib-nodep-2.2.jar)
- Commons-logging version is now 1.1.3 (commons-logging-1.1.3.jar) (previously commons-logging-1.1.1.jar)
- (optionally) Log4j version is now 1.2.17 (log4j-1.2.17.jar) (previously log4j-1.2.16.jar)
- Support for rollup and cube aggregation output. Support for SQL standard output and SQL keywords namely "rollup", "cube", "grouping sets", "grouping", "grouping_id".
- Support for fire-and-forget insert-into queries using the "values" keyword i.e. "insert into ... values (...)"
- Support for Java 8-style lambda syntax using the "->" operator the same way as "=>" as equivalent syntax
- Support for context partitioned variables. Use "context ... create variable ..." to create a contex partitioned variable.
- Support for method invocation joins to receive object-array events from application code
- Support for query planner expression analysis hints that provide additional control over query planning
- Support for the query planner for joins, subqueries, fire-and-forget and on-action queries to consider in-keyword expressions and "or"
- Support for filter execution planning to consider "or"
- Statements on unbound streams by default no longer retain the last event for use with the iterator API, and instead an application can specify @IterableUnbound or provide an engine configuration to have statements retain the last event
- Statement names are now always trimmed
- Applications that use isolated service providers must now set an engine-wide configuration flag to enable this feature
- The "as" keyword in the select-clause is now optional
- Improved rendering of expressions by rendering parenthesis according to precedence and by removing white space in expressions.
This may affect statements where the select-clause does not name columns using "as" since they may receive a different column name compared to version 4.
- We have changed time period expression month and year interval computation to become relative to the current time. This change disallows float-type values for year and month in a time interval.
- Improved formatting and content of validation messages
- Many performance related enhancements
- Removed version 4 deprecated APIs
Changes in version 4.11.0
------------------------
- Support for patterns to suppress and discard overlapping matches
- Support for match-recognize define-clause and measures-clause to use enumeration methods and array-index access for grouped variables
- Support for match-recognize matching upon pattern state termination when used with interval
- Support for overlapping context to specify "distinct"
- Support for group-by clause in subqueries
- Support for subqueries that select multiple columns to provide input to enumeration methods
- Support for built-in annotations to be case-insensitive
Minor EPL changes
- When in a select-clause the "as" column name is surrounded with backticks (e.g. "select name as `somename` ...") the property name of the output event does no longer carry backticks (i.e. is "somename").
Minor API changes
- SODA class PatternMatchUntilExpr now requires to set single-bounds as a separate expression
Bug fixes and other improvements
- Fixed issue XIN-243-46130 Window(*) returning scalars throws NPE when used with null values
- Fixed issue FOT-686-75760 Context partition using for-clause with keyed-segmented context when for-clause utilizes the same key the for-clause is not grouping
- Fixed issue NUO-642-65913 When JMS unmarshaller receives an exception log error and continue
- Fixed issue LTU-232-62589 Map/oa type with nested pojo with generic-typed list not producing type fragments
- Fixed issue ZXU-154-59144 Context partitioned join against virtual data window throws NPE
- Fixed issue IOO-666-18256 EPL module with script that has brackets and semicolon throws exception on deployment
- Fixed issue UHA-316-24638 Fully-aggregated subquery without filter throws NPE; subquery against context-partitioned VDW throws NPE
- Fixed issue ESPER-754 Class that extends class triggers two events when named window declared for both child and parent class
- Fixed issue ESPER-756 NPE during destroy() when using inbound thread pool and when not waiting for pool to empty
- Fixed issue ESPER-757 VDW callback on consuming rstream events
- Fixed issue ESPER-758 Thread safety issue with contained-event selection
- Fixed issue ESPER-759 Pattern with not-operator controlled by repeat ([n]) does not turn repeat to false
- Fixed issue ESPER-761 On-Demand query inserting row into named window that contains an enumeration throws NPE
- Fixed issue ESPER-762 Keyed segmented context with match recognize and "prev" in define-clause causes first event to not evaluate
- Fixed issue ESPER-763 Allow on-merge assignment of event-typed property
- Fixed issue ESPER-765 Context declaration with @Priority causes first event to arrive twice
- Fixed issue ESPER-766 Allow enumeration method in pattern filter to use pattern tagged events as input
- Fixed issue ESPER-767 Support for tick-escape in select-clause column name
- Fixed issue ESPER-768 Improve standard deviation to use Knuth's
- Fixed issue ESPER-769 Issue evaluating nested enumeration
- Fixed issue ESPER-770 Improve compatibility checking when named window event gets inserted into stream of same-as type (Map and ObjectArray only)
- Fixed issue ESPER-771 Allow subqueries that select a single column that it itself an event to provide enumerable events and insert-into compatible prop
- Fixed issue ESPER-772 ClassCastException for method invocation on a property that is itself an event
Changes in version 4.10.0
------------------------
Major API or EPL changes
- Support for context declarations to perform initiate or start immediately
- Support for mutation expressions for merge and update
- Support for parameterized fire-and-forget queries
- Support for fire-and-forget queries to consider the "in" opertator for index lookup
- Support for having-clause to have subquery
- Support for explicitly selecting eventbean instances of expressions (ESPER-732)
- Support for fire-and-forget queries that insert-into a named window
Bug fixes
- Fixed Issue ESPER-733 Passing aggregate scalars to global script
- Fixed Issue ESPER-734 Unclear exception for invalid match_recognize
- Fixed Issue ESPER-735 Esper 4.9.0 OSGi bundle execution environment restricted to J2SE 1.6
- Fixed Issue ESPER-737 NullPointerException with grouped data window intersecting time window and last/first event
- Fixed Issue ESPER-738 Performance issue with 8 threads, keyed context partitioned, synchronized listener, event sequence for same partition
- Fixed Issue ESPER-739 All calls methods named "get" assumed to be Date-Time method
- Fixed Issue ESPER-740 POJO event populated by selectclause and via POJO constructor and select clause selects same type twice is created using wrong parameters
- Fixed Issue ESPER-741 Named window on-action with relational operator (<, <=) where-clause incorrect behavior when reversing comparison
- Fixed Issue ESPER-742 Static method lookup selects incorrect classstatic method lookup
- Fixed Issue ESPER-743 Join accross ObjectArrayEvent and MapEvent leaks data from MapEvent
- Fixed Issue ESPER-744 parse error in prepared statement for count(*,filter_expr)
- Fixed Issue ESPER-746 Self-Join between derived value streams provides incorrect result
- Fixed Issue ESPER-747 Cron timer is skipping months
- Fixed Issue ESPER-748 create schema fails with fully qualified property type name
- Fixed Issue ESPER-749 split stream with "output all" not working with prepared statement
- Fixed Issue ESPER-750 @audit miscounts pattern instances with "not"
- Fixed Issue ESPER-751 StackOverflow when routing new event during high volume processing
- Fixed Issue ESPER-752 @Drop annotation with context: First event not dropped
- Fixed Issue KPH-656-86796 EPL module with javascript incorrectly parsed
- Fixed Issue PJM-181-84952 Possible deadlock for patterns that have filters that have subqueries
- Fixed Issue IGC-717-55951 efficiency of group reclaim with grouped data windows
- Fixed Issue TBC-634-19891 use thread context class loader for default deserialize
Changes in version 4.9.0
------------------------
Major API or EPL changes
- 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
Bug fixes
- Fixed Issue MWI-774-78809 ArrayIndexOutOfBoundsException upon statement stop context partitioned statement with aggregation
- Fixed Issue QIH-288-93588 ArrayIndexOutOFBoundsException starting a context-partitioned split-stream statement with subquery
- Fixed Issue FLQ-115172 NullPointerException with context partitioned statement and split-stream statement
- Fixed Issue QXU-776433 Populate map event type using "new" operator not working
- Fixed Issue ESPER-726 Aggregation function avg based on BigDecimal with scale defined throws Non-terminating decimal expansion
- Fixed Issue ESPER-727 Thread safety issue with enumeration method in stateless select
- Fixed Issue ESPER-728 Filter improvement for expressions in relationship to other filter ops
- Fixed Issue ESPER-730 Statement Object Model for "is null"
Changes in version 4.8.0
------------------------
Major API or EPL changes
- 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
Bug fixes
- Fixed Issue ESPER-703 Stateless statement with output rate limiting only outputs same event multiple times under inbound threading
- Fixed Issue ESPER-705 Esper tests build fails on platform with default encoding other than ISO-8859-2
- Fixed Issue ESPER-706 Query plan output for on-select not comprehensive and Join does not list key field names
- Fixed Issue ESPER-708 Allow configuration for static methods/UDF to trigger exception handler upon exception
- Fixed Issue ESPER-709 esperio AMQPSink ignores exchange property
- Fixed Issue ESPER-712 Contained-event misbehaves in join and subquery when used with named window
- Fixed Issue ESPER-713 Transaction example probabilistic event skipping won't ever skip for event type B
- Fixed Issue ESPER-714 NPE in enumeration method with join
- Fixed Issue ESPER-718 Debug-level logging triggers ClassCastException in dataflow Select operator when using XML underlying
- Fixed Issue ESPER-719 Exception using variable in "after" endpoint context declaration
- Fixed Issue ESPER-720 Thread safety issue with enumeration method in stream-level filter
- Fixed Issue ESPER-721 NPE on count() in combination with order by
- Fixed Issue ESPER-722 Partitioned full outer join selecting remove stream with time windows fails with NullPointerException
- Fixed Issue ESPER-725 Object-array event type not enforcing single supertype
- additional bug fixes
Changes in version 4.7.0
------------------------
Major API or EPL changes
- Many performance-related changes and also related to support of the new EsperHA release.
Bug fixes
- Fixed issue ESPER-544 Prefer more specific update method over less specific update method in subscriber
- Fixed issue ESPER-662 Custom aggregation function that receives wildcard ("*") receives instance of com.espertech.esper.type.WildcardParameter and not event
- Fixed issue ESPER-663 Keyed Segmented Context with multiple properties not working
- Fixed issue ESPER-664 ValueCache.DISABLED in single row function configuration does not disable UDF cache
- Fixed issue ESPER-666 StatementAgentInstanceFactoryCreateWindow.newContext() throws NPE if other named window does not exist in insert case
- Fixed issue ESPER-668 CharSequence and String type not compatible
- Fixed issue ESPER-669 Enumeration method not working on bean-array that is property of Map
- Fixed issue ESPER-670 Event that ends/terminates context partition
- Fixed issue ESPER-671 Unexpected exception occurs when applying a basic arithmetic operation to short/byte properties
- Fixed issue ESPER-673 Aggregated row-per-event and grouped query with unidirectional join produces incorrect aggregation value
- Fixed issue ESPER-676 Exception using @Audit with create-context and terminated-by filter
- Fixed issue ESPER-679 Improve performance of CSVInputAdapter
- Fixed issue ESPER-683 Firstunique window and firstevent window handling updates
- Fixed issue ESPER-684 Object Array Event Types in Isolated Services
- Fixed issue ESPER-685 "Very likely memory leak" warning in Tomcat 6
- Fixed issue ESPER-687 Named Window and Fire-And-Forget query incorrectly passes null comparison operator
- Fixed issue ESPER-688 ArrayOOB exception with expression def in where-clause of on-select
- Fixed issue ESPER-689 ClassCastException with "stream.*" syntax and insert-into and context
- Fixed issue ESPER-693 Unit test fails with JDK 1.7_07
- Fixed issue ESPER-695 Pattern with named window events when used in partitioned context, not allowing named window
- Fixed issue ESPER-697 EsperIOSocketAdapter hides a critical exception
- Fixed issue ESPER-698 Update-istream with sub-select has thread-safety issue
- Fixed issue ESPER-699 Variable not recognized in output-rate-limiting when using deployment API (default compile option)
- Fixed issue ESPER-701 Nested context with partitioned context managing a non-overlapping context produces incorrect results
- Fixed issue ESPER-702 Distinct count in correlated subselect returns invalid result
Changes in version 4.6.0
------------------------
Major API or EPL changes
- 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.
Bug fixes
- Fixed issue ESPER-648 NullPointerException with "utput Every" & "for discrete_delivery" when no output is available
- Fixed issue ESPER-641 Add SupportSubscriber and SupportSubscriberMRD to Public Test Framework
- Fixed issue ESPER-642 Log destination for @Audit logs moved to "com.espertech.esper.util.AuditPath" but should be "com.espertech.esper.audit"
- Fixed issue ESPER-643 Use expression as mapped-property key or indexed-property index
- Fixed issue ESPER-644 Infinite loop when restarting a statement
- Fixed issue ESPER-652 regexp matches whole pattern
- Fixed issue ESPER-653 ExprDotNode.validate does not handle empty array returned by validationContext.getStreamTypeService().getEventTypes()
- Fixed issue ESPER-654 Allow backtick notation for any identifier
- Fixed issue ESPER-655 Copy method for bean-backed events should prefered configured method over Serializable
- Fixed issue ESPER-656 Variant stream of type ANY when inserting columns and the underlying event in combination the result is not carrying the inserted columns
- Fixed issue ESPER-658 context with "start after 0 seconds" starts only after next time tick
- Fixed issue ESPER-659 Inherit timestamp properties from event super types
- Fixed issue ESPER-660 Allow fragment event type to perform datetime methods
- Fixed issue ESPER-661 EPStatementException in on-select with virtual data window and where-clause using greater-than (less-than) operator
Changes in version 4.5.0
------------------------
Major API or EPL changes
- 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
Bug fixes or other changes
- Fixed issue ESPER-613 Plug-in aggregation functions can't retain context built from validate method
- Fixed issue ESPER-614 Allow named window name to prefix properties in on-merge update set-clause
- Fixed issue ESPER-615 DeploymentActionException when commenting-out block of statements in deployment via deployment admin
- Fixed issue ESPER-616 Allow create-schema and create-window type definition syntax to refer to event type name of POJO-event type
- Fixed issue ESPER-618 Output-When not executing the "then"-part when triggered by output events
- Fixed issue ESPER-622 NullPointerException creating a statement selecting from a filled named window that also subqueries
- Fixed issue ESPER-623 NullPointerException in NamedWindowServiceImpl.processHandle when context-dependent and under prioritized execution
- Fixed issue ESPER-624 ConcurrentModificationException using a subquery against a named window within the stream filter criteria
- Fixed issue ESPER-625 Intersection between length-batch window and unique data window produces incorrect aggregation values
- Fixed issue ESPER-627 Evaluation order of subquery against the same named window that triggers the evaluation
- Fixed issue ESPER-629 Declared expression not recognized by split-stream syntax when used in second or later stream insert
- Fixed issue ESPER-631 ClassCastException with variant stream using single-column conversion to insert into named window
- Fixed issue ESPER-632 No @Audit output for stream category for statement that selects from a named window via select star
- Fixed issue ESPER-633 Undeployment not removing event type for on-merge with insert into new stream
- Fixed issue ESPER-634 ClassCastException in pattern with unbound repeat until and interval observer
- Fixed issue ESPER-635 Property is ambiguous exception for a pattern that features multiple repeats and followed by
- Fixed issue ESPER-637 Update of Map event type not causing derived type to update its event property information
- Fixed issue ESPER-639 NullPointerException with Subscriber and Context and Aggregation
Changes in version 4.4.0
------------------------
Major API or EPL changes
- 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
Minor changes
- Few minor changes to extension APIs to support context partitions.
- Fixed issue ESPER-587 groupwin EPStatementException text
- Fixed issue ESPER-590 Allow configuration of fair locking for administrative functions excluding event processing
- Fixed issue ESPER-591 Exception "Attempting to remove key from map that wasn't added" in RefCountedSet.
- Fixed issue ESPER-592 Statements are not able to get GCed when using Force Update
- Fixed issue ESPER-594 Exception starting statement with @Audit and groupwin
- Fixed issue ESPER-595 Two statements with identical stream and "prev" function not delivering expected events
- Fixed issue ESPER-597 example code error in documentation
- Fixed issue ESPER-599 Aggregation functions 'first' and 'last' with index are represented incorrectly when converted back to EPL
- Fixed issue ESPER-600 Memory leak with "group by", "order by" and a lot of different group by keys
- Fixed issue ESPER-601 Deadlock when an UnmatchedListener creates a new statement
- Fixed issue ESPER-602 Reduce memory use when large number of threads send events - ThreadLocal use
- Fixed issue ESPER-603 NPE in match-recognize when reg-ex pattern event is optional and doesn't have a definition
- Fixed issue ESPER-604 epl_clauses.xml documentation patch
- Fixed issue ESPER-606 Memory leak if creating a large numbers of different event types and using "remove" operation in runtime configuration operations
- Fixed issue ESPER-608 Prepared statement referring to variable that is a class (nested property syntax) not working
- Fixed issue ESPER-609 Distinct causing null pointer exception on time batch query
- Fixed issue ESPER-610 IllegalStateException for prepared statement with "select * from pattern[[?] Event]"
- Fixed issue ESPER-611 ExprValidationException when create from statement object model with SQL join using variable
- Fixed issue ESPER-612 support for providing a deployment id to the deployment admin rather then using a system-generated deployment id
Changes in version 4.3.0
------------------------
Major API or EPL changes
- 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 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".
Minor changes
- Fixed issue ESPER-569 Null-value comparison for "not/equals"-operator (!=, =) not fully consistent with SQL standard
- Fixed issue ESPER-570 3-way inner join and using outer-join notation not working when where-clause added
- Fixed issue ESPER-571 NPE for fully-aggregated and ungrouped query with having clause that selects a non-aggregated property
- Fixed issue ESPER-572 Short-circuit evaluation not always performed for filters
- Fixed issue ESPER-573 Improve statement checking for on-merge "not matched" clause to not allow access to named window properties when subquery
- Fixed issue ESPER-574 Timer:interval pattern observer when a subquery is the parameter throws NPE
- Fixed issue ESPER-576 Expose API to dynamically register new views
- Fixed issue ESPER-577 Allow chained method invocation on cast() result
- Fixed issue ESPER-578 Allowing transposing the result of an aggregation function to a stream
- Fixed issue ESPER-579 Memory leak if creating and removing a large numbers of different event types
- Fixed issue ESPER-582 Error parsing reserved keyword "last" inside a function call
- Fixed issue ESPER-583 Support for filtering aggregation functions
- Fixed issue ESPER-584 Filter expression with relational op and constant not matching
- Fixed issue ESPER-585 On-merge not dispatching if input stream is also from named window
- Fixed issue ESPER-586 Crontab-schedule when use with list-parameter and zero give incorrect results
Changes in version 4.2.0
------------------------
Major API or EPL changes
- 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/select/update/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.
Minor changes
- Fixed issue ESPER-549 NullPointerException upon failing to resolve UDF and when configuring a non-default auto-import
- Fixed issue ESPER-550 Where-clause expression validation not taking expression return type into account
- Fixed issue ESPER-551 Custom exception handler that rethrows runtime exceptions may cause wrong callback for next event
- Fixed issue ESPER-552 NPE logged delivering null-value results to Subscriber update method
- Fixed issue ESPER-555 Improve error message for UDF functions and subscribers that expect primitive typed parameters and receive null
- Fixed issue ESPER-556 Method-invocation-join when not unidirectional in combination with max/min aggregation function produces warning
- Fixed issue ESPER-557 On-merge statement creation throws StringIndexOutOfBoundsException when using alias for named window but not for property
- Fixed issue ESPER-558 Incorrect having-clause validation "non-aggregated properties in the 'having' clause must occur in the 'group-by' clause"
- Fixed issue ESPER-559 Output-first With Having-Clause not honoring output interval reliably
- Fixed issue ESPER-560 Updated (or deleted) event in a Named Window is not delivered to a consuming statement
- Fixed issue ESPER-561 Invoking instance method of an object returned by static method invocation returns cache of static method
- Fixed issue ESPER-562 On-select with aggregation and group-by not releasing memory after completion of a triggering event
- Fixed issue ESPER-563 Small memory leak creating large number of failed-validation statements
- Fixed issue ESPER-564 Subquery of identical event stream does not include most recent event in window aggregate
- Fixed issue ESPER-566 First Aggregation Function Returns Wrong (Growing) Result When Used in Correlated Subquery
- Fixed issue ESPER-568 Duplicate remove stream events posted from intersection-data window when used with on-update (named window only)
Changes in version 4.1.0
------------------------
Major API or EPL changes
- 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
Minor changes
- Fixed issue ESPER-502 NullPointerException in OutputProcessViewDistinctOrAfter.process() and update() methods
- Fixed issue ESPER-503 Incorrect warning logged using @Hint('reclaim_group_aged=2') with std:groupwin grouped data windows
- Fixed issue ESPER-505 Reference Documation 4.0.0; Table 6.5; duplicety of operator
- Fixed issue ESPER-506 NullPointerException on an inner join of named window with aggregation and group-by
- Fixed issue ESPER-509 Documentation bug in subscriber use: "start" and "end" are "updateStart" and "updateEnd"
- Fixed issue ESPER-510 Support for event array for event objects populated by insert into
- Fixed issue ESPER-511 Make CurrentTimeEvent and TimerControlEvent Serializable
- Fixed issue ESPER-512 EventBean getUnderlying method when both subscriber and listener are used returns Class and not the underlying object
- Fixed issue ESPER-513 On-Update set Error starting statement: Property 'u.v2' is not available for write access [on com.espertech.esper.support.bean.SupportBean update MyWindow as u set v1=string, u.v2=string]
- Fixed issue ESPER-516 Insert into stream defined by a schema created as a map schema with property type being an event type not compiling
- Fixed issue ESPER-517 Error message "IllegalStateException: Event named ''a' not found in event pattern result set" is inaccurate
- Fixed issue ESPER-518 NPE in fire-and-forget query against two named windows with group-by and aggregations when named windows are empty
- Fixed issue ESPER-519 Fire-and-Forget join on 2 named windows with where-clause filtering on one window's rows returns incorrect result
- Fixed issue ESPER-520 Possible memory leak using @Hint('reclaim_group_aged=xxx') with time windows
- Fixed issue ESPER-521 Insert into stream defined by a schema created as a map schema with property type being an event type not populating when inserted from a map schema stream
- Fixed issue ESPER-522 Provide time control event for advancing the system clock by a batch of ticks
- Fixed issue ESPER-523 Scheduling service SPI to provide nearest time and statement info
- Fixed issue ESPER-526 Unidirectional inner join between two named windows when started late (named windows have data) produces too many rows for first result delivery
- Fixed issue ESPER-527 memory leak is possible for unbound/unlimited keys used with every-distinct
- Fixed issue ESPER-528 Unidirectional left outer join between same streams (self join) when used with staggered time-window and grouped view causes out of memory
- Fixed issue ESPER-529 create-schema to allow dot characters in property names
- Fixed issue ESPER-533 NullpointerException in Pattern And-state with timer:interval and "not"
- Fixed issue ESPER-535 "Previous" function when used under single-row plug-in function or user-defined function not compiling in match-recognize
- Fixed issue ESPER-536 NPE using Output Limiting clause with an EPStatementObjectModel - ExprTimePeriod
- Fixed issue ESPER-537 NullpointerException in Create-Window with Model-after Syntax when a nested property does not exist
- Fixed issue ESPER-538 Support for auto-event name in insert-into (populate underlying event)
- Fixed issue ESPER-539 Support for insert-into to specifiy the fully-qualified class name
- Fixed issue ESPER-543 Multiple engine instances same thread sending and receiving problem
- Fixed issue ESPER-546 "Last" aggregation function with on-select returns inconsistent results
Changes in version 4.0.0
------------------------
Major API or EPL changes
- Requires a Java 6 runtime (JDK6 or JRE6)
- 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 "..".
- The meaning of the index paramater 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 "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".
- We introduced new aggregation functions that track the data window : "first", "last" and "window" with a convenient syntax for access to all attributes.
- We introduced new single-row function for data window access: "prevtail", "prevwindow" and "prevcount" functions.
- The data window "std:groupby" for grouped data windows has been renamed to "std:groupwin" to avoid confusion with the group-by clause.
- Support for registering an exception handler that is called when any continous-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.
- To be congruent to the JDBC 4 specification, the SQL query metadata now uses the value returned by the JDBC driver result set metadata for "getColumnLabel" as the column name or if that is null the value returned by "getColumnName".
- For plug-in aggregation functions, the parameter to the "validate" method has changed and is now a validation context that provides additional information. The "validateMultiParameter" method has been removed.
- We added a new example demonstrating runtime configuration.
Minor changes
- Fixed issue ESPER-471 Static method called 'join' (reserved keyword) not allowed
- Fixed issue ESPER-481 Create-Window with explicit column-types does not support column types that are an event type (documentation bug/improvement)
- Fixed issue ESPER-489 Plug-in loader destroy order should be reverse of creation order
- Fixed issue ESPER-493 "IllegalStateException" for an aggregation query without group-by and without aggregations in the select clause
- Fixed issue ESPER-455 Aggregation when used with "prev" in where clause may return an incorrect result.
- Fixed issue ESPER-466 First-length and first-unique combined to intersection (multiple data windows) to reduce insert stream
- Fixed issue ESPER-495 Support XPath attribute node list result casted to string array
- Fixed issue ESPER-487 Custom aggregation functions - pass indicator whether running windowed and allow access to child expressions
- Fixed issue ESPER-496 On-select with stream wildcard and aggregation produces event-per-group and not event-per-row
Changes in version 3.5.0
------------------------
Major API changes
- None
New Features
- 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.