Skip to content

fix: align format options and listagg semantics with Java - #263

Open
lxy-9602 wants to merge 3 commits into
apache:mainfrom
lxy-9602:manifest-avro
Open

fix: align format options and listagg semantics with Java#263
lxy-9602 wants to merge 3 commits into
apache:mainfrom
lxy-9602:manifest-avro

Conversation

@lxy-9602

Copy link
Copy Markdown
Member

Purpose

This change aligns several format-related behaviors with the latest Java Paimon implementation:

  • Keep legacy manifest formats readable, but allow only Avro for manifest writes.
    • manifest.format is retained as a deprecated compatibility option.
    • Writing with a non-Avro manifest format now returns an explicit error.
    • Read paths continue to use the configured legacy format.
  • Convert the parquet/append_09 test fixture manifests from ORC to Avro while preserving the existing manifest filenames and snapshots.
  • Rename the Parquet dictionary option from parquet.enable-dictionary to parquet.enable.dictionary, matching Java Paimon.
  • Align listagg blank-string handling with Java:
    • Add StringUtils::IsBlank with Java Character.isWhitespace semantics.
    • Ignore empty, whitespace-only, and supported Unicode blank inputs.
    • Prevent blank accumulators from producing a leading delimiter.
    • Ignore blank tokens when distinct is enabled.

Tests

Added or updated unit tests covering:

  • read and write access for Avro and legacy manifest formats
  • rejection of non-Avro manifest writes
  • disabling Parquet dictionary encoding with parquet.enable.dictionary
  • ASCII and Unicode behavior of StringUtils::IsBlank
  • listagg handling of blank inputs, accumulators, and distinct tokens
  • commit tests using the Avro-converted parquet/test_data fixture

API and Format

Behavioral and format-related changes:

  • Avro is now the only writable manifest format.
  • Existing non-Avro manifests remain readable.
  • The Parquet dictionary option is renamed to parquet.enable.dictionary.

Documentation

Generative AI tooling

Generated-by: Codex (GPT-5)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant