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

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


The following commit(s) were added to refs/heads/master by this push:
     new e4ef362d82 [python] Update aggregation unsupported validation message 
(#8694)
e4ef362d82 is described below

commit e4ef362d82f4f68ec6d0251c35af8d9b21100220
Author: AuroraVoyage <[email protected]>
AuthorDate: Thu Jul 30 10:39:50 2026 +0800

    [python] Update aggregation unsupported validation message (#8694)
---
 paimon-python/pypaimon/read/merge_engine_support.py           |  8 +++-----
 paimon-python/pypaimon/read/reader/aggregate/aggregators.py   | 11 ++++++-----
 .../pypaimon/read/reader/aggregation_merge_function.py        |  7 +++----
 paimon-python/pypaimon/tests/test_aggregation_e2e.py          |  4 +---
 4 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/paimon-python/pypaimon/read/merge_engine_support.py 
b/paimon-python/pypaimon/read/merge_engine_support.py
index f1c477ed88..daf11b6a2f 100644
--- a/paimon-python/pypaimon/read/merge_engine_support.py
+++ b/paimon-python/pypaimon/read/merge_engine_support.py
@@ -215,9 +215,8 @@ def check_supported(table) -> None:
                 "built-in aggregators ({}); retract opt-ins "
                 "(aggregation.remove-record-on-delete, "
                 "fields.<f>.ignore-retract) "
-                "and other aggregators (product / listagg / collect / "
-                "nested_update* / theta_sketch / "
-                "hll_sketch / roaring_bitmap_*) are not yet supported. "
+                "and other aggregators (hll_sketch / rbm64) "
+                "are not yet supported. "
                 "Open an issue to track support.".format(
                     ", ".join(sorted(unsupported)),
                     ", ".join(sorted(_AGGREGATION_SUPPORTED_AGG_FUNCS)),
@@ -267,8 +266,7 @@ def aggregation_unsupported_options(table) -> Set[str]:
        ``builtin_seq_comparator``).
     3. Out-of-scope aggregator selections: ``fields.<f>.aggregate-
        function`` and ``fields.default-aggregate-function`` set to an
-       identifier this engine doesn't support yet (e.g. ``collect``,
-       ``nested_update``).
+       identifier this engine doesn't support yet (e.g. ``hll_sketch``).
     """
     flagged: Set[str] = set()
     raw = table.options.options.to_map()
diff --git a/paimon-python/pypaimon/read/reader/aggregate/aggregators.py 
b/paimon-python/pypaimon/read/reader/aggregate/aggregators.py
index 4d1a960db9..ca6d69cd09 100644
--- a/paimon-python/pypaimon/read/reader/aggregate/aggregators.py
+++ b/paimon-python/pypaimon/read/reader/aggregate/aggregators.py
@@ -22,13 +22,14 @@ Each class registers itself with the global registry at 
import time
 via :func:`register_aggregator`, so importing
 ``pypaimon.read.reader.aggregate`` makes all of them discoverable.
 
-This module ships 10 aggregators — the primary-key placeholder plus
-the 9 most commonly-used value aggregators: ``primary_key`` /
+This module ships 19 aggregators — the primary-key placeholder plus
+the 18 most commonly-used value aggregators: ``primary_key`` /
 ``last_value`` / ``last_non_null_value`` / ``first_value`` /
 ``first_non_null_value`` / ``sum`` / ``max`` / ``min`` / ``bool_or``
-/ ``bool_and``. Other aggregators (``product`` / ``listagg`` /
-``collect`` / ``merge_map`` / ``nested_update`` / ``theta_sketch`` /
-``hll_sketch`` / ``roaring_bitmap_*``) are intentionally deferred —
+/ ``bool_and`` / ``product`` / ``listagg`` / ``collect`` /
+``merge_map`` / ``merge_map_with_keytime`` / ``nested_update`` /
+``nested_partial_update`` / ``theta_sketch`` / ``rbm32``. Other
+aggregators (``hll_sketch`` / ``rbm64``) are intentionally deferred —
 the registry will report them as unsupported so users see a clear
 error rather than a silent fallback.
 """
diff --git a/paimon-python/pypaimon/read/reader/aggregation_merge_function.py 
b/paimon-python/pypaimon/read/reader/aggregation_merge_function.py
index ae66673403..3d4b64f674 100644
--- a/paimon-python/pypaimon/read/reader/aggregation_merge_function.py
+++ b/paimon-python/pypaimon/read/reader/aggregation_merge_function.py
@@ -27,10 +27,9 @@ aggregation (sum / max / min / last_value / ...) per column.
 
 This is the **core merge semantics only**. Retract on DELETE /
 UPDATE_BEFORE rows (with ``aggregation.remove-record-on-delete`` and
-``fields.<field>.ignore-retract`` opt-ins) and ~14 additional
-aggregators (``product`` / ``listagg`` / ``collect`` / ``merge_map`` /
-``nested_update`` / ``theta_sketch`` / ``hll_sketch`` /
-``roaring_bitmap_*``) are intentionally deferred. Non-INSERT row
+``fields.<field>.ignore-retract`` opt-ins) and 2 additional
+aggregators (``hll_sketch`` / ``rbm64``)
+are intentionally deferred. Non-INSERT row
 kinds raise ``NotImplementedError`` at :meth:`add` time so we never
 silently corrupt data with a half-implemented contract, and
 out-of-scope aggregator identifiers / options are rejected up-front in
diff --git a/paimon-python/pypaimon/tests/test_aggregation_e2e.py 
b/paimon-python/pypaimon/tests/test_aggregation_e2e.py
index b70fe97d51..fc69104352 100644
--- a/paimon-python/pypaimon/tests/test_aggregation_e2e.py
+++ b/paimon-python/pypaimon/tests/test_aggregation_e2e.py
@@ -295,9 +295,7 @@ class AggregationMergeEngineE2ETest(unittest.TestCase):
 
     def test_out_of_scope_field_aggregator_rejected(self):
         # hll_sketch is one of the aggregator identifiers this engine
-        # doesn't support yet. collect is now supported by the Python
-        # aggregation engine, so use hll_sketch instead.
-        # The guard must reject the config rather
+        # doesn't support yet. The guard must reject the config rather
         # than let the per-field factory build a (silently wrong)
         # fallback.
         self._create_and_expect_unsupported(

Reply via email to