xiangfu0 opened a new pull request, #19535: URL: https://github.com/apache/pinot/pull/19535
Decoding a V4 DataTable currently allocates a temporary UTF-8 byte array for each string dictionary entry. Reuse a method-local scratch array across entries, growing only when necessary; returned Strings still own their contents. Wire encoding, the standalone string decoder, and malformed-input behavior remain unchanged. Adds buffer/ownership regression coverage, a full-message JMH benchmark and replay instructions in `pinot-perf/README.md`. Three alternating paired runs show 40.8% / 18.9% less allocation for 5000-entry ASCII / UTF-8 dictionaries, with median latency ratios of 1.028–1.033× / 1.033–1.047×. Outlier-first heap/read-only cases have median paired slowdowns of about 3.3% / 2.7% despite 26.6% less allocation. Numeric, single-entry and growing-length allocation is unchanged. These are shared-host component results, not query-throughput claims; all 18 cases and raw results are retained in `pinot-perf/benchmark-results/datatable-dictionary-decode-20260912/`. Validation: 114 tests across dictionary decoding, full V4 messages, DataTable serde, selection and inter-segment GROUP BY; benchmark packaging; Spotless, checkstyle, license checks and Apache RAT. Independent correctness/testing review passed. Benchmark review flagged one short outlier/read-only pair at +5.111%; three separate longer pairs did not reproduce it (median paired ratios: direct 1.062×, heap 1.004×, read-only 1.009×). Both sets are retained, with the original tradeoff disclosed. Scoped javac has no new source warnings versus the separately compiled baseline; the report records existing warnings and the prior same-base full-reactor Xlint limitation. -- 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]
