Jackie-Jiang opened a new pull request, #18436: URL: https://github.com/apache/pinot/pull/18436
## Summary Remove the shared `BaseRecordExtractor.convert` dispatcher and its helpers (`convertSingleValue`, `convertMultiValue`, `convertCollection`, `convertArray`, `convertPrimitiveArray`, `convertMap`, `convertRecord`, `isMultiValue`, `isMap`, `isRecord`). Each format extractor now owns its conversion logic. `BaseRecordExtractor` keeps only: - `init` / `_fields` / `_extractAll` / `initConfig` — include-list resolution - `stringifyMapKey` — shared map-key contract serialization ### What changed per extractor | Extractor | Before | After | |---|---|---| | `JSONRecordExtractor` | called `super.convert(...)` | inline `convert` / `convertList` / `convertMap` (BigInteger → BigDecimal; `List` → `Object[]`; `Map` → `Map<String, Object>`; scalar pass-through) | | `CLPLogRecordExtractor` | called `super.convert(...)` | same shape as JSON | | `ThriftRecordExtractor` | called `super.convert(...)`; overrode `isRecord` / `convertRecord` | inline `convert` / `convertSingleValue` / `convertCollection` / `convertMap` / `convertRecord` | | Avro / Parquet (avro + native) / Arrow / ORC / ProtoBuf / CSV | already self-contained | unchanged | ### Other adjustments - Format-specific `convert` methods drop the inherited `@Nullable` where the new impl never returns null (JSON / CLPLog / Thrift). `CSVRecordExtractor.convert` gains `@Nullable` to match its existing null-on-empty behavior. - `BaseRecordExtractorTest` slimmed to cover the surviving surface (`init`, `stringifyMapKey`); the dispatcher tests are exercised through the per-format extractor tests. 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
