jianguotian opened a new pull request, #87: URL: https://github.com/apache/paimon-mosaic/pull/87
## What Add a Java API for streaming a prepared Mosaic row group as a JSON object whose values are comma-separated text columns, directly from Mosaic's native encodings and without materializing intermediate Arrow arrays. The implementation: - supports signed integers, `DOUBLE`, `Decimal128`, and UTF-8 values in `ALL_NULL`, `CONST`, `DICT`, and `PLAIN` encodings; - preserves JVM-compatible `Double.toString` and `BigDecimal.toPlainString` output; - returns `UNSUPPORTED` before touching the output when the row group requires fallback; - keeps ownership of the caller's `OutputStream` with the caller; - exposes a reusable `MosaicRowGroupReader` for fast-path attempts followed by Arrow fallback; and - prevents concurrent or reentrant row-group operations while safely deferring native release when `close()` races an active operation. The format, supported types, fallback behavior, and ownership rules are documented in `docs/columnar-text-json.md`. ## Why Wide Mosaic files often contain many `CONST` and `ALL_NULL` columns. Reading those encodings directly avoids expanding every logical cell into Arrow vectors when a downstream interface only needs column-oriented text. ## Validation Tests cover: - primitive, dictionary, constant, all-null, and projected output; - JVM-exact double formatting and decimal scales; - unsupported and malformed encodings; - partial-output and `OutputStream` exception behavior; - output ownership; and - reentrant use, concurrent close, idempotent close, and use-after-close lifecycle cases. The source branch's identical tree passed the repository's `check`, `rust-test`, `cpp-test`, `java-test`, and `python-test` CI jobs. -- 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]
