liangjie3138 opened a new pull request, #183:
URL: https://github.com/apache/paimon-cpp/pull/183
### Purpose
Linked issue: close https://github.com/alibaba/paimon-cpp/issues/457
Port the six practical field aggregators missing on the C++ side —
`collect`,
`merge_map`, `nested_update`, `rbm64`, `hll_sketch`, `theta_sketch` .
Also adds `GenericArray` / `GenericMap`, the in-memory `InternalArray` /
`InternalMap` implementations these aggregators need to build ARRAY and MAP
results.
### Tests
18 new unit test cases in `paimon-core-test`, covering each aggregator's
aggregate / retract / null / type-validation paths.
Three pin behaviour that is easy to "fix" incorrectly, and each was
checked by
reverting the corresponding production change and confirming it fails:
- `BinaryAggMergeFunctionTest.OwnedAccumulatorSurvivesNullInput` — drives
a real
`AggregateMergeFunction` so the use-after-free is exercised through the
production path.
- `FieldNestedUpdateAggTest.CountLimitCountsNullElementsOfAccumulator` —
count
limit is measured against the raw element count, matching Java.
- `FieldIgnoreRetractAggTest.ReversedAggBypassesWrappedOverride` — the
wrapper
does not preserve the wrapped aggregator's reversed-aggregation
override, also
matching Java.
No integration tests added.
### API and Format
Additive only, no signatures changed:
- `include/paimon/defs.h`: four new `Options` constants — `NESTED_KEY`,
`NESTED_KEY_NULL_STRATEGY`, `NESTED_SEQUENCE_FIELD`, `COUNT_LIMIT`.
- `CoreOptions`: a `NestedKeyNullStrategy` enum plus accessors.
- `FieldAggregator`: new virtuals default to the existing `Agg` /
`AggReversed`.
New dependency: Apache DataSketches 5.2.0 (Apache-2.0), resolved through
`resolve_dependency()` like the other bundled dependencies.
### Documentation
None.
### Generative AI tooling
Generated-by: Claude Code 2.1.220 (Claude Opus 5)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]