Skip to content

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

Merged
SteNicholas merged 11 commits into
apache:mainfrom
lxy-9602:manifest-avro
Sep 3, 2026
Merged

fix: align format options and listagg semantics with Java#263
SteNicholas merged 11 commits into
apache:mainfrom
lxy-9602:manifest-avro

Conversation

@lxy-9602

@lxy-9602 lxy-9602 commented Aug 31, 2026

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:

  • Remove manifest.format option.
  • 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)

Comment thread src/paimon/common/utils/string_utils_test.cpp
Comment thread src/paimon/common/utils/string_utils.cpp
@lucasfang

Copy link
Copy Markdown
Collaborator

LGTM

@SteNicholas SteNicholas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@SteNicholas
SteNicholas merged commit 2e6935f into apache:main Sep 3, 2026
16 checks passed
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.

4 participants