Motivation
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/recordtransformer/ExpressionTransformer.java and pinot-segment-local/src/main/java/org/apache/pinot/segment/local/recordtransformer/enricher/function/CustomFunctionEnricher.java still carry reciprocal TODOs to merge the two implementations.
Both code paths evaluate function-based transformations during ingestion, but they live behind different extension points (RecordTransformer vs RecordEnricher). That makes behavior drift and duplicate maintenance more likely.
Scope
- Document the overlap and intended ownership between the two implementations.
- Consolidate shared evaluation logic behind one path or a shared abstraction.
- Preserve current ingestion behavior for transform configs and enricher configs.
- Add or update focused tests for parity and backward compatibility.
Notes
Observed on upstream/master on April 15, 2026.
Motivation
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/recordtransformer/ExpressionTransformer.javaandpinot-segment-local/src/main/java/org/apache/pinot/segment/local/recordtransformer/enricher/function/CustomFunctionEnricher.javastill carry reciprocal TODOs to merge the two implementations.Both code paths evaluate function-based transformations during ingestion, but they live behind different extension points (
RecordTransformervsRecordEnricher). That makes behavior drift and duplicate maintenance more likely.Scope
Notes
Observed on
upstream/masteron April 15, 2026.