Apache Release 2.0.0
Introducing the Relative Error Quantiles Sketch
Improved input null and empty handling policies for Theta / Tuple sketches
Exceptions are now being thrown where there could be accidental destruction of data. Where a null is harmless, it is ignored. However, receiving an empty sketch is considered valid, and the result follows the set operation logic.
Operation | Null Policy | Empty Policy |
---|---|---|
Union | Ignored | Ignored |
Intersection | Exception | Empty result |
AnotB, first Argument, A | Exception | Empty result |
AnotB, subsequent Argument, B | Ignored | Ignored |
Improved Set Operation handling
In Theta Sketch and Tuple Sketch (Generic), the APIs for Union, AnotB and Intersection now allow for both stateless and stateful operation.
-
see ExamplesTest.java for full example code
-
Pseudocode model for stateless operation.
Two set operation arguments and the result are accomplished in one call:
result = setOp(Sketch A, Sketch B);
wheresetOp
=union
,intersect
, oraNotB
-
Pseudocode model for stateful operation. Any number of arguments can be presented sequentially:
void setOp(Sketch 1);
void setOp(Sketch 2);
...
void setOp(Sketch N);
result = getResult();
WheresetOp = union
orintersect
Because the AnotB operation is asymmetric, the method names are a little different:
void setA(Sketch 1);
//for the first argument
void notB(Sketch 2);
//for all subsequent arguments
...
void notB(Sketch N);
result = getResult();
Tuple Sketch (Generic) set operations now allow combining with Theta Sketch
-
Pseudocode model for stateless operation:
result = setOp(TupleSketch A, ThetaSketch B);
-
Pseudocode model for stateful operation:
void setOp(TupleSketch 1);
void setOp(ThetaSketch 1);
void setOp(TupleSketch 2);
...
void setOp(ThetaSketch N);
result = getResult();
Package changes
- The
tuple
package was too large and confusing. The ArrayOfDoubles classes, generic base classes and example generic classes were all mingled together. These have now been split up into the following hierarchy:- tuple/
- adouble/
- aninteger/
- arrayofdoubles
- strings
- tuple/
Lots of internal refactoring, code cleanup, and documentation improvements
Release Process
- Replaced Travis-CI with GitHub Actions
- Added Maven toolchains.xml in anticipation of multiple JDK releases
- Cleaned up Release Zip files to exclude unneeded hidden files.