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

karan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 14e16cf5471 Adding support for big decimal aggregations via MSQ 
(#18164)
14e16cf5471 is described below

commit 14e16cf5471b27c9b33972e4e25dffb77cc1373c
Author: Karan Kumar <[email protected]>
AuthorDate: Tue Jul 1 22:01:11 2025 +0530

    Adding support for big decimal aggregations via MSQ (#18164)
    
    * * Adding support for big decimal aggregations via MSQ
    * Minor refactoring to move classes into separate packages.
    
    * * Adding quidem test.
    * Review comments
    
    * Adding big decimal pom to quidem UT.
---
 .../extensions-contrib/compressed-big-decimal.md   | 27 +++++++++++++++++++++-
 .../ArrayCompressedBigDecimal.java                 |  4 ++--
 .../ByteBufferCompressedBigDecimal.java            |  4 ++--
 .../compressedbigdecimal/CompressedBigDecimal.java |  6 ++---
 .../CompressedBigDecimalModule.java                |  8 +++++++
 .../CompressedBigDecimalAggregateCombinerBase.java |  3 ++-
 .../CompressedBigDecimalAggregatorBase.java        |  3 ++-
 .../CompressedBigDecimalAggregatorFactoryBase.java |  5 +++-
 ...mpressedBigDecimalAggregatorFactoryCreator.java |  2 +-
 .../CompressedBigDecimalBufferAggregatorBase.java  |  5 +++-
 .../CompressedBigDecimalSqlAggregatorBase.java     |  2 +-
 .../CompressedBigDecimalMaxAggregateCombiner.java  |  5 +++-
 .../max}/CompressedBigDecimalMaxAggregator.java    |  6 ++++-
 .../CompressedBigDecimalMaxAggregatorFactory.java  | 11 ++++++++-
 .../CompressedBigDecimalMaxBufferAggregator.java   |  7 +++++-
 .../max}/CompressedBigDecimalMaxSqlAggregator.java |  4 +++-
 .../CompressedBigDecimalMinAggregateCombiner.java  |  5 +++-
 .../min}/CompressedBigDecimalMinAggregator.java    |  6 ++++-
 .../CompressedBigDecimalMinAggregatorFactory.java  | 11 ++++++++-
 .../CompressedBigDecimalMinBufferAggregator.java   |  7 +++++-
 .../min}/CompressedBigDecimalMinSqlAggregator.java |  4 +++-
 .../CompressedBigDecimalSumAggregateCombiner.java  |  5 +++-
 .../sum}/CompressedBigDecimalSumAggregator.java    |  6 ++++-
 .../CompressedBigDecimalSumAggregatorFactory.java  | 11 ++++++++-
 .../CompressedBigDecimalSumBufferAggregator.java   |  6 ++++-
 .../sum}/CompressedBigDecimalSumSqlAggregator.java |  4 +++-
 .../CompressedBigDecimalJsonSerializer.java        |  3 ++-
 .../CompressedBigDecimalLongColumnSerializer.java  |  4 +++-
 .../CompressedBigDecimalMetricSerde.java           |  7 +++++-
 .../ArrayCompressedBigDecimalTest.java             |  1 +
 .../CompressedBigDecimalCachingTest.java           |  3 +++
 .../CompressedBigDecimalFactoryTestBase.java       |  1 +
 .../CompressedBigDecimalMaxFactoryTest.java        |  4 ++++
 .../CompressedBigDecimalMinFactoryTest.java        |  5 ++++
 .../CompressedBigDecimalSumFactoryTest.java        |  5 ++++
 ...pressedBigDecimalAggregatorGroupByTestBase.java |  5 +++-
 .../CompressedBigDecimalAggregatorTestBase.java    |  2 +-
 ...ssedBigDecimalAggregatorTimeseriesTestBase.java |  4 +++-
 .../CompressedBigDecimalSqlAggregatorTestBase.java |  5 ++--
 ...mpressedBigDecimalMaxAggregatorGroupByTest.java |  4 +++-
 .../CompressedBigDecimalMaxAggregatorTest.java     |  3 ++-
 ...essedBigDecimalMaxAggregatorTimeseriesTest.java |  4 +++-
 .../CompressedBigDecimalMaxSqlAggregatorTest.java  |  3 ++-
 ...mpressedBigDecimalMinAggregatorGroupByTest.java |  4 +++-
 .../CompressedBigDecimalMinAggregatorTest.java     |  3 ++-
 ...essedBigDecimalMinAggregatorTimeseriesTest.java |  4 +++-
 .../CompressedBigDecimalMinSqlAggregatorTest.java  |  3 ++-
 ...mpressedBigDecimalSumAggregatorGroupByTest.java |  4 +++-
 .../CompressedBigDecimalSumAggregatorTest.java     |  4 +++-
 ...essedBigDecimalSumAggregatorTimeseriesTest.java |  4 +++-
 .../CompressedBigDecimalSumSqlAggregatorTest.java  |  3 ++-
 extensions-core/multi-stage-query/pom.xml          |  6 +++++
 .../test/AbstractMSQComponentSupplierDelegate.java |  4 +++-
 .../dart.iq                                        | 15 ++++++++++++
 .../msq1.iq                                        | 15 ++++++++++++
 quidem-ut/pom.xml                                  |  5 ++++
 56 files changed, 254 insertions(+), 50 deletions(-)

diff --git a/docs/development/extensions-contrib/compressed-big-decimal.md 
b/docs/development/extensions-contrib/compressed-big-decimal.md
index b95f06ef7c3..28a52185fd9 100644
--- a/docs/development/extensions-contrib/compressed-big-decimal.md
+++ b/docs/development/extensions-contrib/compressed-big-decimal.md
@@ -105,7 +105,7 @@ IngestionSpec syntax:
                        },
                        "metricsSpec": [{
                                "name": "saleAmount",
-                               "type": *"compressedBigDecimal"*,
+                               "type": "compressedBigDecimalSum",
                                "fieldName": "saleAmount"
                        }],
                        "transformSpec": {
@@ -144,6 +144,31 @@ IngestionSpec syntax:
        }
 }
 ```
+
+SQL-based ingestion sample query:
+```sql
+
+REPLACE INTO "bigdecimal" OVERWRITE ALL
+WITH "ext" AS (
+  SELECT *
+  FROM TABLE(
+    EXTERN(
+      
'{"type":"local","baseDir":""/home/user/sales/data/staging/invoice-data","filter":"invoice-001.20201208.txt"}',
+      
'{"type":"csv","findColumnsFromHeader":false,"columns":["timestamp","itemName","saleAmount"]}',
+      
'[{"name":"timestamp","type":"string"},{"name":"itemName","type":"string"},{"name":"saleAmount","type":"double"}]'
+    )
+  ) 
+)
+SELECT
+  TIME_PARSE(TRIM("timestamp")) AS "__time",
+  "itemName",
+  BIG_SUM("saleAmount") as amount
+FROM "ext"
+group by TIME_PARSE(TRIM("timestamp")) , itemName
+PARTITIONED BY DAY
+```
+
+
 ### Group By Query  example
 
 Calculating sales groupBy all.
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/ArrayCompressedBigDecimal.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/ArrayCompressedBigDecimal.java
index 440f20e0d64..c294efd9d73 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/ArrayCompressedBigDecimal.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/ArrayCompressedBigDecimal.java
@@ -205,7 +205,7 @@ public class ArrayCompressedBigDecimal extends 
CompressedBigDecimal
    * @return the entry
    */
   @Override
-  protected int getArrayEntry(int idx)
+  public int getArrayEntry(int idx)
   {
     return array[idx];
   }
@@ -223,7 +223,7 @@ public class ArrayCompressedBigDecimal extends 
CompressedBigDecimal
   }
 
   @Override
-  protected void setValue(CompressedBigDecimal rhs)
+  public void setValue(CompressedBigDecimal rhs)
   {
     Preconditions.checkArgument(
         rhs.getArraySize() <= array.length,
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/ByteBufferCompressedBigDecimal.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/ByteBufferCompressedBigDecimal.java
index e2d6e6b7815..1cc0f8153fa 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/ByteBufferCompressedBigDecimal.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/ByteBufferCompressedBigDecimal.java
@@ -119,7 +119,7 @@ public class ByteBufferCompressedBigDecimal extends 
CompressedBigDecimal
    * @return the entry
    */
   @Override
-  protected int getArrayEntry(int idx)
+  public int getArrayEntry(int idx)
   {
     return buf.getInt(position + idx * Integer.BYTES);
   }
@@ -137,7 +137,7 @@ public class ByteBufferCompressedBigDecimal extends 
CompressedBigDecimal
   }
 
   @Override
-  protected void setValue(CompressedBigDecimal rhs)
+  public void setValue(CompressedBigDecimal rhs)
   {
     Preconditions.checkArgument(
         rhs.getArraySize() <= getArraySize(),
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimal.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimal.java
index 3b3fdb7719e..2c3612e901d 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimal.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimal.java
@@ -114,7 +114,7 @@ public abstract class CompressedBigDecimal extends Number 
implements Comparable<
    *
    * @param rhs a {@link CompressedBigDecimal} object
    */
-  protected abstract void setValue(CompressedBigDecimal rhs);
+  public abstract void setValue(CompressedBigDecimal rhs);
 
   /**
    * Clear any value, resetting to zero. Scale is preserved at its original 
value.
@@ -261,7 +261,7 @@ public abstract class CompressedBigDecimal extends Number 
implements Comparable<
    *
    * @return the array size
    */
-  protected abstract int getArraySize();
+  public abstract int getArraySize();
 
   /**
    * Get value from the array.
@@ -269,7 +269,7 @@ public abstract class CompressedBigDecimal extends Number 
implements Comparable<
    * @param idx the index
    * @return value from the array at that index
    */
-  protected abstract int getArrayEntry(int idx);
+  public abstract int getArrayEntry(int idx);
 
   /**
    * Set value in the array.
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalModule.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalModule.java
index 5f4c844426e..28e440fd74f 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalModule.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalModule.java
@@ -24,6 +24,14 @@ import com.fasterxml.jackson.databind.jsontype.NamedType;
 import com.fasterxml.jackson.databind.module.SimpleModule;
 import com.google.common.collect.ImmutableList;
 import com.google.inject.Binder;
+import 
org.apache.druid.compressedbigdecimal.aggregator.max.CompressedBigDecimalMaxAggregatorFactory;
+import 
org.apache.druid.compressedbigdecimal.aggregator.max.CompressedBigDecimalMaxSqlAggregator;
+import 
org.apache.druid.compressedbigdecimal.aggregator.min.CompressedBigDecimalMinAggregatorFactory;
+import 
org.apache.druid.compressedbigdecimal.aggregator.min.CompressedBigDecimalMinSqlAggregator;
+import 
org.apache.druid.compressedbigdecimal.aggregator.sum.CompressedBigDecimalSumAggregatorFactory;
+import 
org.apache.druid.compressedbigdecimal.aggregator.sum.CompressedBigDecimalSumSqlAggregator;
+import 
org.apache.druid.compressedbigdecimal.serde.CompressedBigDecimalJsonSerializer;
+import 
org.apache.druid.compressedbigdecimal.serde.CompressedBigDecimalMetricSerde;
 import org.apache.druid.initialization.DruidModule;
 import org.apache.druid.segment.serde.ComplexMetrics;
 import org.apache.druid.sql.guice.SqlBindings;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregateCombinerBase.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregateCombinerBase.java
similarity index 94%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregateCombinerBase.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregateCombinerBase.java
index 377d150b733..9246d9ad33e 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregateCombinerBase.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregateCombinerBase.java
@@ -17,9 +17,10 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator;
 
 
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
 import org.apache.druid.query.aggregation.AggregateCombiner;
 import org.apache.druid.segment.ColumnValueSelector;
 
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorBase.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorBase.java
similarity index 95%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorBase.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorBase.java
index 03388278152..bc835fb386b 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorBase.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorBase.java
@@ -17,8 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator;
 
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
 import org.apache.druid.query.aggregation.Aggregator;
 import org.apache.druid.segment.ColumnValueSelector;
 
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorFactoryBase.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorFactoryBase.java
similarity index 96%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorFactoryBase.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorFactoryBase.java
index da1dd19cfaa..cb444316c1b 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorFactoryBase.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorFactoryBase.java
@@ -17,10 +17,13 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.google.common.base.Objects;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimalModule;
+import org.apache.druid.compressedbigdecimal.Utils;
 import org.apache.druid.java.util.common.StringUtils;
 import org.apache.druid.query.aggregation.AggregateCombiner;
 import org.apache.druid.query.aggregation.Aggregator;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorFactoryCreator.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorFactoryCreator.java
similarity index 94%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorFactoryCreator.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorFactoryCreator.java
index 0d7269251b9..983c35cf3a1 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorFactoryCreator.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorFactoryCreator.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator;
 
 import org.apache.druid.query.aggregation.AggregatorFactory;
 
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalBufferAggregatorBase.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalBufferAggregatorBase.java
similarity index 94%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalBufferAggregatorBase.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalBufferAggregatorBase.java
index f06fc781d81..b3e3b0eb1d1 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalBufferAggregatorBase.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalBufferAggregatorBase.java
@@ -17,8 +17,11 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator;
 
+import org.apache.druid.compressedbigdecimal.ByteBufferCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.Utils;
 import org.apache.druid.query.aggregation.BufferAggregator;
 import org.apache.druid.segment.ColumnValueSelector;
 
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSqlAggregatorBase.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalSqlAggregatorBase.java
similarity index 99%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSqlAggregatorBase.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalSqlAggregatorBase.java
index 8ce60b1a5f3..04e21f8540e 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSqlAggregatorBase.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalSqlAggregatorBase.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator;
 
 import com.google.common.collect.ImmutableList;
 import org.apache.calcite.rel.core.AggregateCall;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregateCombiner.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregateCombiner.java
similarity index 87%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregateCombiner.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregateCombiner.java
index 073485f80d3..0e51d098939 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregateCombiner.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregateCombiner.java
@@ -17,9 +17,12 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.max;
 
 
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregateCombinerBase;
 import org.apache.druid.segment.ColumnValueSelector;
 
 /**
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregator.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregator.java
similarity index 85%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregator.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregator.java
index de6538f9d5b..ff4a20b33b5 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregator.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregator.java
@@ -17,8 +17,12 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.max;
 
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.Utils;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorBase;
 import org.apache.druid.segment.ColumnValueSelector;
 
 /**
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorFactory.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorFactory.java
similarity index 90%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorFactory.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorFactory.java
index bce2bf25708..35ad3b429e3 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorFactory.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorFactory.java
@@ -17,10 +17,13 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.max;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorFactoryBase;
 import org.apache.druid.query.aggregation.AggregateCombiner;
 import org.apache.druid.query.aggregation.Aggregator;
 import org.apache.druid.query.aggregation.AggregatorFactory;
@@ -110,6 +113,12 @@ public class CompressedBigDecimalMaxAggregatorFactory 
extends CompressedBigDecim
     return new CompressedBigDecimalMaxAggregateCombiner();
   }
 
+  @Override
+  public AggregatorFactory withName(String newName)
+  {
+    return new CompressedBigDecimalMaxAggregatorFactory(newName, fieldName, 
size, scale, strictNumberParsing);
+  }
+
   @Override
   public String toString()
   {
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxBufferAggregator.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxBufferAggregator.java
similarity index 84%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxBufferAggregator.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxBufferAggregator.java
index 59fd281d30b..22bf92ce550 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxBufferAggregator.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxBufferAggregator.java
@@ -17,8 +17,13 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.max;
 
+import org.apache.druid.compressedbigdecimal.ByteBufferCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.Utils;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorFactoryBase;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalBufferAggregatorBase;
 import org.apache.druid.segment.ColumnValueSelector;
 
 import java.nio.ByteBuffer;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxSqlAggregator.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxSqlAggregator.java
similarity index 87%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxSqlAggregator.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxSqlAggregator.java
index 8a941cafdd1..4b52b41d5f2 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxSqlAggregator.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxSqlAggregator.java
@@ -17,7 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.max;
+
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalSqlAggregatorBase;
 
 public class CompressedBigDecimalMaxSqlAggregator extends 
CompressedBigDecimalSqlAggregatorBase
 {
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregateCombiner.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregateCombiner.java
similarity index 87%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregateCombiner.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregateCombiner.java
index f38e5b80531..f01100f6487 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregateCombiner.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregateCombiner.java
@@ -17,9 +17,12 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.min;
 
 
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregateCombinerBase;
 import org.apache.druid.segment.ColumnValueSelector;
 
 /**
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregator.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregator.java
similarity index 85%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregator.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregator.java
index 11aa3c76974..b1f83246e9c 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregator.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregator.java
@@ -17,8 +17,12 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.min;
 
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.Utils;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorBase;
 import org.apache.druid.segment.ColumnValueSelector;
 
 /**
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorFactory.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorFactory.java
similarity index 90%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorFactory.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorFactory.java
index 091af345353..4559b0f618d 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorFactory.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorFactory.java
@@ -17,10 +17,13 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.min;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorFactoryBase;
 import org.apache.druid.query.aggregation.AggregateCombiner;
 import org.apache.druid.query.aggregation.Aggregator;
 import org.apache.druid.query.aggregation.AggregatorFactory;
@@ -116,6 +119,12 @@ public class CompressedBigDecimalMinAggregatorFactory 
extends CompressedBigDecim
     return new CompressedBigDecimalMinAggregateCombiner();
   }
 
+  @Override
+  public AggregatorFactory withName(String newName)
+  {
+    return new CompressedBigDecimalMinAggregatorFactory(newName, fieldName, 
size, scale, strictNumberParsing);
+  }
+
   @Override
   public String toString()
   {
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinBufferAggregator.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinBufferAggregator.java
similarity index 84%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinBufferAggregator.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinBufferAggregator.java
index 3b9e7fb7c48..f71a9ce95f1 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinBufferAggregator.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinBufferAggregator.java
@@ -17,8 +17,13 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.min;
 
+import org.apache.druid.compressedbigdecimal.ByteBufferCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.Utils;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorFactoryBase;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalBufferAggregatorBase;
 import org.apache.druid.segment.ColumnValueSelector;
 
 import java.nio.ByteBuffer;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinSqlAggregator.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinSqlAggregator.java
similarity index 87%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinSqlAggregator.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinSqlAggregator.java
index 520d306c3a3..7fbd06d6eb7 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinSqlAggregator.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinSqlAggregator.java
@@ -17,7 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.min;
+
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalSqlAggregatorBase;
 
 public class CompressedBigDecimalMinSqlAggregator extends 
CompressedBigDecimalSqlAggregatorBase
 {
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregateCombiner.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregateCombiner.java
similarity index 87%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregateCombiner.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregateCombiner.java
index 03bf84348c9..728af0fb559 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregateCombiner.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregateCombiner.java
@@ -17,9 +17,12 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.sum;
 
 
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregateCombinerBase;
 import org.apache.druid.segment.ColumnValueSelector;
 
 /**
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregator.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregator.java
similarity index 85%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregator.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregator.java
index 53f7f9fcd1f..677c52266b0 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregator.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregator.java
@@ -17,8 +17,12 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.sum;
 
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.Utils;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorBase;
 import org.apache.druid.segment.ColumnValueSelector;
 
 /**
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorFactory.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorFactory.java
similarity index 91%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorFactory.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorFactory.java
index d7e08a2daf4..d1f5d1f686e 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorFactory.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorFactory.java
@@ -17,10 +17,13 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.sum;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorFactoryBase;
 import org.apache.druid.query.aggregation.AggregateCombiner;
 import org.apache.druid.query.aggregation.Aggregator;
 import org.apache.druid.query.aggregation.AggregatorFactory;
@@ -116,6 +119,12 @@ public class CompressedBigDecimalSumAggregatorFactory 
extends CompressedBigDecim
     return new CompressedBigDecimalSumAggregateCombiner();
   }
 
+  @Override
+  public AggregatorFactory withName(String newName)
+  {
+    return new CompressedBigDecimalSumAggregatorFactory(newName, fieldName, 
size, scale, strictNumberParsing);
+  }
+
   @Override
   public String toString()
   {
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumBufferAggregator.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumBufferAggregator.java
similarity index 87%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumBufferAggregator.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumBufferAggregator.java
index 7b2e3557274..49d77ff2b0c 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumBufferAggregator.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumBufferAggregator.java
@@ -17,8 +17,12 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.sum;
 
+import org.apache.druid.compressedbigdecimal.ByteBufferCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.Utils;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalBufferAggregatorBase;
 import org.apache.druid.segment.ColumnValueSelector;
 
 import java.nio.ByteBuffer;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumSqlAggregator.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumSqlAggregator.java
similarity index 87%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumSqlAggregator.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumSqlAggregator.java
index 5f97f6f6181..1564247bdcc 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumSqlAggregator.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumSqlAggregator.java
@@ -17,7 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.sum;
+
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalSqlAggregatorBase;
 
 public class CompressedBigDecimalSumSqlAggregator extends 
CompressedBigDecimalSqlAggregatorBase
 {
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalJsonSerializer.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/serde/CompressedBigDecimalJsonSerializer.java
similarity index 91%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalJsonSerializer.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/serde/CompressedBigDecimalJsonSerializer.java
index 1a3263785bf..f3a07aae33a 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalJsonSerializer.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/serde/CompressedBigDecimalJsonSerializer.java
@@ -17,11 +17,12 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.serde;
 
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.databind.JsonSerializer;
 import com.fasterxml.jackson.databind.SerializerProvider;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
 
 import java.io.IOException;
 
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalLongColumnSerializer.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/serde/CompressedBigDecimalLongColumnSerializer.java
similarity index 95%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalLongColumnSerializer.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/serde/CompressedBigDecimalLongColumnSerializer.java
index f25c028d904..c76d1dd221a 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalLongColumnSerializer.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/serde/CompressedBigDecimalLongColumnSerializer.java
@@ -17,8 +17,10 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.serde;
 
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import 
org.apache.druid.compressedbigdecimal.CompressedBigDecimalColumnPartSupplier;
 import org.apache.druid.java.util.common.io.smoosh.FileSmoosher;
 import org.apache.druid.segment.ColumnValueSelector;
 import org.apache.druid.segment.GenericColumnSerializer;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMetricSerde.java
 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/serde/CompressedBigDecimalMetricSerde.java
similarity index 88%
rename from 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMetricSerde.java
rename to 
extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/serde/CompressedBigDecimalMetricSerde.java
index 749af8ff380..2122a3e3694 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMetricSerde.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/main/java/org/apache/druid/compressedbigdecimal/serde/CompressedBigDecimalMetricSerde.java
@@ -17,8 +17,13 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.serde;
 
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimal;
+import 
org.apache.druid.compressedbigdecimal.CompressedBigDecimalColumnPartSupplier;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimalModule;
+import 
org.apache.druid.compressedbigdecimal.CompressedBigDecimalObjectStrategy;
+import org.apache.druid.compressedbigdecimal.Utils;
 import org.apache.druid.data.input.InputRow;
 import org.apache.druid.segment.IndexSpec;
 import org.apache.druid.segment.column.ColumnBuilder;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/ArrayCompressedBigDecimalTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/ArrayCompressedBigDecimalTest.java
index bb69b2b019d..b6791e12da3 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/ArrayCompressedBigDecimalTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/ArrayCompressedBigDecimalTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.druid.compressedbigdecimal;
 
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorFactoryBase;
 import org.apache.druid.java.util.common.IAE;
 import org.junit.Assert;
 import org.junit.Test;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalCachingTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalCachingTest.java
index 70718403f5d..305e28a3e99 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalCachingTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalCachingTest.java
@@ -19,6 +19,9 @@
 
 package org.apache.druid.compressedbigdecimal;
 
+import 
org.apache.druid.compressedbigdecimal.aggregator.max.CompressedBigDecimalMaxAggregatorFactory;
+import 
org.apache.druid.compressedbigdecimal.aggregator.min.CompressedBigDecimalMinAggregatorFactory;
+import 
org.apache.druid.compressedbigdecimal.aggregator.sum.CompressedBigDecimalSumAggregatorFactory;
 import org.apache.druid.query.aggregation.AggregatorFactory;
 import org.junit.Assert;
 import org.junit.Test;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalFactoryTestBase.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalFactoryTestBase.java
index ca98eb3796f..ab17224a6e3 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalFactoryTestBase.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalFactoryTestBase.java
@@ -22,6 +22,7 @@ package org.apache.druid.compressedbigdecimal;
 import com.fasterxml.jackson.databind.MapperFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.collect.ImmutableList;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorFactoryCreator;
 import org.apache.druid.query.aggregation.AggregateCombiner;
 import org.apache.druid.query.aggregation.Aggregator;
 import org.apache.druid.query.aggregation.AggregatorFactory;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxFactoryTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxFactoryTest.java
index 9eef55d4ee7..e3dbdc258a0 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxFactoryTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxFactoryTest.java
@@ -19,6 +19,10 @@
 
 package org.apache.druid.compressedbigdecimal;
 
+import 
org.apache.druid.compressedbigdecimal.aggregator.max.CompressedBigDecimalMaxAggregateCombiner;
+import 
org.apache.druid.compressedbigdecimal.aggregator.max.CompressedBigDecimalMaxAggregator;
+import 
org.apache.druid.compressedbigdecimal.aggregator.max.CompressedBigDecimalMaxAggregatorFactory;
+import 
org.apache.druid.compressedbigdecimal.aggregator.max.CompressedBigDecimalMaxBufferAggregator;
 import org.apache.druid.segment.ColumnValueSelector;
 import org.easymock.EasyMock;
 import org.junit.Assert;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinFactoryTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinFactoryTest.java
index 7a9aa0f82b0..b4cc8e54481 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinFactoryTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinFactoryTest.java
@@ -19,6 +19,11 @@
 
 package org.apache.druid.compressedbigdecimal;
 
+import 
org.apache.druid.compressedbigdecimal.aggregator.max.CompressedBigDecimalMaxAggregatorFactory;
+import 
org.apache.druid.compressedbigdecimal.aggregator.min.CompressedBigDecimalMinAggregateCombiner;
+import 
org.apache.druid.compressedbigdecimal.aggregator.min.CompressedBigDecimalMinAggregator;
+import 
org.apache.druid.compressedbigdecimal.aggregator.min.CompressedBigDecimalMinAggregatorFactory;
+import 
org.apache.druid.compressedbigdecimal.aggregator.min.CompressedBigDecimalMinBufferAggregator;
 import org.apache.druid.segment.ColumnValueSelector;
 import org.easymock.EasyMock;
 import org.junit.Assert;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumFactoryTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumFactoryTest.java
index 572772507b0..5998e2e11f2 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumFactoryTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumFactoryTest.java
@@ -19,6 +19,11 @@
 
 package org.apache.druid.compressedbigdecimal;
 
+import 
org.apache.druid.compressedbigdecimal.aggregator.max.CompressedBigDecimalMaxAggregatorFactory;
+import 
org.apache.druid.compressedbigdecimal.aggregator.sum.CompressedBigDecimalSumAggregateCombiner;
+import 
org.apache.druid.compressedbigdecimal.aggregator.sum.CompressedBigDecimalSumAggregator;
+import 
org.apache.druid.compressedbigdecimal.aggregator.sum.CompressedBigDecimalSumAggregatorFactory;
+import 
org.apache.druid.compressedbigdecimal.aggregator.sum.CompressedBigDecimalSumBufferAggregator;
 import org.apache.druid.segment.ColumnValueSelector;
 import org.easymock.EasyMock;
 import org.junit.Assert;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorGroupByTestBase.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorGroupByTestBase.java
similarity index 94%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorGroupByTestBase.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorGroupByTestBase.java
index 13d7ac34306..8efefa7dde4 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorGroupByTestBase.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorGroupByTestBase.java
@@ -17,10 +17,13 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.io.Resources;
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import 
org.apache.druid.compressedbigdecimal.CompressedBigDecimalGroupByQueryConfig;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimalModule;
 import org.apache.druid.data.input.MapBasedRow;
 import org.apache.druid.java.util.common.granularity.Granularities;
 import org.apache.druid.java.util.common.guava.Sequence;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorTestBase.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorTestBase.java
similarity index 95%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorTestBase.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorTestBase.java
index 8ae349605ec..b35e55210fe 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorTestBase.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorTestBase.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator;
 
 import org.apache.druid.query.aggregation.Aggregator;
 import org.junit.Assert;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorTimeseriesTestBase.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorTimeseriesTestBase.java
similarity index 96%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorTimeseriesTestBase.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorTimeseriesTestBase.java
index f12ebab406e..b2dc3131455 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalAggregatorTimeseriesTestBase.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorTimeseriesTestBase.java
@@ -17,10 +17,12 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator;
 
 import com.google.common.collect.Iterables;
 import com.google.common.io.Resources;
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimalModule;
 import org.apache.druid.java.util.common.granularity.Granularities;
 import org.apache.druid.java.util.common.guava.Sequence;
 import org.apache.druid.query.Result;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSqlAggregatorTestBase.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalSqlAggregatorTestBase.java
similarity index 98%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSqlAggregatorTestBase.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalSqlAggregatorTestBase.java
index 7296f001f33..06a6bcb12d5 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSqlAggregatorTestBase.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalSqlAggregatorTestBase.java
@@ -17,10 +17,11 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator;
 
 import com.google.common.collect.ImmutableList;
-import 
org.apache.druid.compressedbigdecimal.CompressedBigDecimalSqlAggregatorTestBase.CompressedBigDecimalComponentSupplier;
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimalModule;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalSqlAggregatorTestBase.CompressedBigDecimalComponentSupplier;
 import org.apache.druid.data.input.InputRow;
 import org.apache.druid.data.input.InputRowSchema;
 import org.apache.druid.data.input.impl.DimensionsSpec;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorGroupByTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorGroupByTest.java
similarity index 89%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorGroupByTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorGroupByTest.java
index 55e2ca6ec92..8bb130cff8a 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorGroupByTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorGroupByTest.java
@@ -17,8 +17,10 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.max;
 
+import 
org.apache.druid.compressedbigdecimal.CompressedBigDecimalGroupByQueryConfig;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorGroupByTestBase;
 import org.apache.druid.query.groupby.GroupByQueryConfig;
 import org.apache.druid.query.groupby.GroupByQueryRunnerTest;
 import org.junit.runners.Parameterized;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorTest.java
similarity index 88%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorTest.java
index 63e7f8558ef..d4839c83054 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorTest.java
@@ -17,8 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.max;
 
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorTestBase;
 import org.apache.druid.segment.ColumnValueSelector;
 import org.easymock.EasyMock;
 
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorTimeseriesTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorTimeseriesTest.java
similarity index 89%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorTimeseriesTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorTimeseriesTest.java
index 14e5ec61f23..d6a2c85dcf0 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxAggregatorTimeseriesTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorTimeseriesTest.java
@@ -17,7 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.max;
+
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorTimeseriesTestBase;
 
 public class CompressedBigDecimalMaxAggregatorTimeseriesTest extends 
CompressedBigDecimalAggregatorTimeseriesTestBase
 {
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxSqlAggregatorTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxSqlAggregatorTest.java
similarity index 94%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxSqlAggregatorTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxSqlAggregatorTest.java
index 1223135ab27..5ad53c13f29 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMaxSqlAggregatorTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxSqlAggregatorTest.java
@@ -17,8 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.max;
 
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalSqlAggregatorTestBase;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertThrows;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorGroupByTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorGroupByTest.java
similarity index 89%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorGroupByTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorGroupByTest.java
index 1567da9ed02..f27c2bda682 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorGroupByTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorGroupByTest.java
@@ -17,8 +17,10 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.min;
 
+import 
org.apache.druid.compressedbigdecimal.CompressedBigDecimalGroupByQueryConfig;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorGroupByTestBase;
 import org.apache.druid.query.groupby.GroupByQueryConfig;
 import org.apache.druid.query.groupby.GroupByQueryRunnerTest;
 import org.junit.runner.RunWith;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorTest.java
similarity index 88%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorTest.java
index 9f6bf646846..fbf82672616 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorTest.java
@@ -17,8 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.min;
 
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorTestBase;
 import org.apache.druid.segment.ColumnValueSelector;
 import org.easymock.EasyMock;
 
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorTimeseriesTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorTimeseriesTest.java
similarity index 89%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorTimeseriesTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorTimeseriesTest.java
index a22c3605af8..a38d4dc9a97 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinAggregatorTimeseriesTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorTimeseriesTest.java
@@ -17,7 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.min;
+
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorTimeseriesTestBase;
 
 public class CompressedBigDecimalMinAggregatorTimeseriesTest extends 
CompressedBigDecimalAggregatorTimeseriesTestBase
 {
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinSqlAggregatorTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinSqlAggregatorTest.java
similarity index 94%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinSqlAggregatorTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinSqlAggregatorTest.java
index e739b928f2e..693fa984aae 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalMinSqlAggregatorTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinSqlAggregatorTest.java
@@ -17,8 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.min;
 
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalSqlAggregatorTestBase;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.Assert.assertThrows;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorGroupByTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorGroupByTest.java
similarity index 89%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorGroupByTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorGroupByTest.java
index f308665723e..e60cff5382b 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorGroupByTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorGroupByTest.java
@@ -17,8 +17,10 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.sum;
 
+import 
org.apache.druid.compressedbigdecimal.CompressedBigDecimalGroupByQueryConfig;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorGroupByTestBase;
 import org.apache.druid.query.groupby.GroupByQueryConfig;
 import org.apache.druid.query.groupby.GroupByQueryRunnerTest;
 import org.junit.runners.Parameterized;
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorTest.java
similarity index 85%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorTest.java
index dfdf1a348b8..d90b0549aaa 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorTest.java
@@ -17,8 +17,10 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.sum;
 
+import org.apache.druid.compressedbigdecimal.ArrayCompressedBigDecimal;
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorTestBase;
 import org.apache.druid.segment.ColumnValueSelector;
 import org.easymock.EasyMock;
 
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorTimeseriesTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorTimeseriesTest.java
similarity index 89%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorTimeseriesTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorTimeseriesTest.java
index 8c67ccc35ed..74ae24ee7e6 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumAggregatorTimeseriesTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorTimeseriesTest.java
@@ -17,7 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.sum;
+
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalAggregatorTimeseriesTestBase;
 
 public class CompressedBigDecimalSumAggregatorTimeseriesTest extends 
CompressedBigDecimalAggregatorTimeseriesTestBase
 {
diff --git 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumSqlAggregatorTest.java
 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumSqlAggregatorTest.java
similarity index 94%
rename from 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumSqlAggregatorTest.java
rename to 
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumSqlAggregatorTest.java
index 8970f002ffe..3f2bc448b55 100644
--- 
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalSumSqlAggregatorTest.java
+++ 
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumSqlAggregatorTest.java
@@ -17,8 +17,9 @@
  * under the License.
  */
 
-package org.apache.druid.compressedbigdecimal;
+package org.apache.druid.compressedbigdecimal.aggregator.sum;
 
+import 
org.apache.druid.compressedbigdecimal.aggregator.CompressedBigDecimalSqlAggregatorTestBase;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.Assert.assertThrows;
diff --git a/extensions-core/multi-stage-query/pom.xml 
b/extensions-core/multi-stage-query/pom.xml
index 7c9607a6301..0b85650fd76 100644
--- a/extensions-core/multi-stage-query/pom.xml
+++ b/extensions-core/multi-stage-query/pom.xml
@@ -345,6 +345,12 @@
             <version>${project.parent.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.druid.extensions.contrib</groupId>
+            <artifactId>druid-compressed-bigdecimal</artifactId>
+            <version>${project.parent.version}</version>
+            <scope>test</scope>
+        </dependency>
       <dependency>
         <groupId>com.google.inject.extensions</groupId>
         <artifactId>guice-testlib</artifactId>
diff --git 
a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/AbstractMSQComponentSupplierDelegate.java
 
b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/AbstractMSQComponentSupplierDelegate.java
index 65634365dd6..4d1fa384e2e 100644
--- 
a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/AbstractMSQComponentSupplierDelegate.java
+++ 
b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/AbstractMSQComponentSupplierDelegate.java
@@ -19,6 +19,7 @@
 
 package org.apache.druid.msq.test;
 
+import org.apache.druid.compressedbigdecimal.CompressedBigDecimalModule;
 import org.apache.druid.guice.IndexingServiceTuningConfigModule;
 import org.apache.druid.guice.JoinableFactoryModule;
 import org.apache.druid.initialization.DruidModule;
@@ -53,7 +54,8 @@ public class AbstractMSQComponentSupplierDelegate extends 
QueryComponentSupplier
         new JoinableFactoryModule(),
         new MSQExternalDataSourceModule(),
         new MSQIndexingModule(),
-        new TestMSQSqlModule()
+        new TestMSQSqlModule(),
+        new CompressedBigDecimalModule()
     );
   }
 
diff --git 
a/extensions-core/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/dart.iq
 
b/extensions-core/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/dart.iq
index d232a52ac20..a7520ec0a98 100644
--- 
a/extensions-core/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/dart.iq
+++ 
b/extensions-core/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/dart.iq
@@ -44,3 +44,18 @@ select dim2,count(dim3) from foo group by dim2;
 (4 rows)
 
 !ok
+
+select dim1,BIG_SUM(dbl1)  from numfoo group by 1;
++------+-------------+
+| dim1 | EXPR$1      |
++------+-------------+
+|      | 1.000000000 |
+| 1    |             |
+| 10.1 | 1.700000000 |
+| 2    | 0           |
+| abc  |             |
+| def  |             |
++------+-------------+
+(6 rows)
+
+!ok
diff --git 
a/extensions-core/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msq1.iq
 
b/extensions-core/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msq1.iq
index 5f2631aadd5..34d82b745b6 100644
--- 
a/extensions-core/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msq1.iq
+++ 
b/extensions-core/multi-stage-query/src/test/quidem/org.apache.druid.msq.quidem.MSQQuidemTest/msq1.iq
@@ -308,5 +308,20 @@ DruidAggregate(group=[{0}], cnt=[COUNT($1) FILTER $2], 
aall=[COUNT()], druid=[lo
 }
 !nativePlan
 
+select dim1,BIG_SUM(dbl1)  from numfoo group by 1;
++------+-------------+
+| dim1 | EXPR$1      |
++------+-------------+
+|      | 1.000000000 |
+| 1    |             |
+| 10.1 | 1.700000000 |
+| 2    | 0           |
+| abc  |             |
+| def  |             |
++------+-------------+
+(6 rows)
+
+!ok
+
 
 
diff --git a/quidem-ut/pom.xml b/quidem-ut/pom.xml
index 7c6a70f88b0..8b5b539928b 100644
--- a/quidem-ut/pom.xml
+++ b/quidem-ut/pom.xml
@@ -246,6 +246,11 @@
             <artifactId>druid-server</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.druid.extensions.contrib</groupId>
+            <artifactId>druid-compressed-bigdecimal</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to