diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldCountAgg.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldCountAgg.java index f03290cb81a9..5fb7b2bb9e75 100644 --- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldCountAgg.java +++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldCountAgg.java @@ -38,7 +38,7 @@ String name() { public Object agg(Object accumulator, Object inputField) { Object count; if (accumulator == null || inputField == null) { - count = (accumulator == null ? 1 : accumulator); + count = (accumulator == null ? (inputField == null ? 0 : 1) : accumulator); } else { // ordered by type root definition switch (fieldType.getTypeRoot()) { @@ -59,7 +59,7 @@ public Object agg(Object accumulator, Object inputField) { public Object retract(Object accumulator, Object inputField) { Object count; if (accumulator == null || inputField == null) { - count = (accumulator == null ? 1 : accumulator); + count = (accumulator == null ? (inputField == null ? 0 : -1) : accumulator); } else { // ordered by type root definition switch (fieldType.getTypeRoot()) { diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/aggregate/FieldAggregatorTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/aggregate/FieldAggregatorTest.java index e164bda31f21..5bca65ed74a4 100644 --- a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/aggregate/FieldAggregatorTest.java +++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/aggregate/FieldAggregatorTest.java @@ -155,10 +155,11 @@ public void testFieldSumIntAgg() { @Test public void testFieldCountIntAgg() { FieldCountAgg fieldCountAgg = new FieldCountAgg(new IntType()); - assertThat(fieldCountAgg.agg(null, 10)).isEqualTo(1); - assertThat(fieldCountAgg.agg(1, 5)).isEqualTo(2); - assertThat(fieldCountAgg.agg(2, 15)).isEqualTo(3); - assertThat(fieldCountAgg.agg(3, 25)).isEqualTo(4); + assertThat(fieldCountAgg.agg(null, null)).isEqualTo(0); + assertThat(fieldCountAgg.agg(1, null)).isEqualTo(1); + assertThat(fieldCountAgg.agg(null, 15)).isEqualTo(1); + assertThat(fieldCountAgg.agg(1, 0)).isEqualTo(2); + assertThat(fieldCountAgg.agg(3, 6)).isEqualTo(4); } @Test