You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by le...@apache.org on 2024/02/04 19:33:18 UTC

(datasketches-java) branch minor_changes_to_boundsRule created (now bae6ab5b)

This is an automated email from the ASF dual-hosted git repository.

leerho pushed a change to branch minor_changes_to_boundsRule
in repository https://gitbox.apache.org/repos/asf/datasketches-java.git


      at bae6ab5b Minor changes to BoundsRule

This branch includes the following new commits:

     new bae6ab5b Minor changes to BoundsRule

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org


(datasketches-java) 01/01: Minor changes to BoundsRule

Posted by le...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

leerho pushed a commit to branch minor_changes_to_boundsRule
in repository https://gitbox.apache.org/repos/asf/datasketches-java.git

commit bae6ab5b567fecb0316f3808d0d82da4111e9fb9
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Sun Feb 4 11:33:04 2024 -0800

    Minor changes to BoundsRule
---
 .../apache/datasketches/partitions/BoundsRule.java |  7 ++++++-
 .../datasketches/partitions/Partitioner.java       | 22 ++++++++++++++--------
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/apache/datasketches/partitions/BoundsRule.java b/src/main/java/org/apache/datasketches/partitions/BoundsRule.java
index 68dc87bc..ecda05e1 100644
--- a/src/main/java/org/apache/datasketches/partitions/BoundsRule.java
+++ b/src/main/java/org/apache/datasketches/partitions/BoundsRule.java
@@ -33,5 +33,10 @@ public enum BoundsRule {
   /**
    * Include only the lower bound but not the upper bound
    */
-  INCLUDE_LOWER
+  INCLUDE_LOWER,
+  /**
+   * Include none
+   */
+  INCLUDE_NEITHER;
+
 }
diff --git a/src/main/java/org/apache/datasketches/partitions/Partitioner.java b/src/main/java/org/apache/datasketches/partitions/Partitioner.java
index 9bc3eeec..be1247ca 100644
--- a/src/main/java/org/apache/datasketches/partitions/Partitioner.java
+++ b/src/main/java/org/apache/datasketches/partitions/Partitioner.java
@@ -26,6 +26,10 @@ import static java.lang.Math.min;
 import static java.lang.Math.pow;
 import static java.lang.Math.round;
 import static java.util.Collections.unmodifiableList;
+import static org.apache.datasketches.partitions.BoundsRule.INCLUDE_BOTH;
+import static org.apache.datasketches.partitions.BoundsRule.INCLUDE_LOWER;
+import static org.apache.datasketches.partitions.BoundsRule.INCLUDE_NEITHER;
+import static org.apache.datasketches.partitions.BoundsRule.INCLUDE_UPPER;
 import static org.apache.datasketches.quantilescommon.QuantileSearchCriteria.INCLUSIVE;
 import static org.apache.datasketches.quantilescommon.QuantilesAPI.EMPTY_MSG;
 
@@ -184,33 +188,35 @@ public class Partitioner<T, S extends QuantilesGenericAPI<T> & PartitioningFeatu
 
     public PartitionBoundsRow(final StackElement<T> se) {
       final GenericPartitionBoundaries<T> gpb = se.gpb;
-      this.part = se.part;
-      this.levelPartId = se.levelPartId + "." + part;
       final QuantileSearchCriteria searchCrit = gpb.getSearchCriteria();
       final T[] boundaries = gpb.getBoundaries();
       final int numParts = gpb.getNumPartitions();
+      this.part = se.part;
+      this.levelPartId = se.levelPartId + "." + part;
+      final long num;
+      this.approxNumDeltaItems = num = gpb.getNumDeltaItems()[part];
       if (searchCrit == INCLUSIVE) {
         if (part == 1) {
           lowerBound = gpb.getMinItem();
           upperBound = boundaries[part];
-          rule = BoundsRule.INCLUDE_BOTH;
+          rule = (num == 0) ? INCLUDE_NEITHER : (lowerBound == upperBound) ? INCLUDE_UPPER : INCLUDE_BOTH;
         } else {
           lowerBound = boundaries[part - 1];
           upperBound = boundaries[part];
-          rule = BoundsRule.INCLUDE_UPPER;
+          rule = (num == 0) ? INCLUDE_NEITHER : INCLUDE_UPPER;
         }
-      } else { //EXCLUSIVE
+      }
+      else { //EXCLUSIVE
         if (part == numParts) {
           lowerBound = boundaries[part - 1];
           upperBound = gpb.getMaxItem();
-          rule = BoundsRule.INCLUDE_BOTH;
+          rule = (num == 0) ? INCLUDE_NEITHER : (lowerBound == upperBound) ? INCLUDE_LOWER : INCLUDE_BOTH;
         } else {
           lowerBound = boundaries[part - 1];
           upperBound = boundaries[part];
-          rule = BoundsRule.INCLUDE_LOWER;
+          rule = (num == 0) ? INCLUDE_NEITHER : INCLUDE_LOWER;
         }
       }
-      approxNumDeltaItems = gpb.getNumDeltaItems()[part];
     }
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org