Skip to content

Apache Release 2.0.0

Compare
Choose a tag to compare
@leerho leerho released this 12 Feb 20:16
· 1029 commits to master since this release
0dea9cd

Introducing the Relative Error Quantiles Sketch

See website documentation.

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);
    where setOp = union, intersect, or aNotB

  • 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();
    Where setOp = union or intersect
    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

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.