Skip to content

feat(flow-php/parquet): DELTA_LENGTH_BYTE_ARRAY / DELTA_BYTE_ARRAY and arrow-rs default encodings - #2702

Merged
norberttech merged 2 commits into
1.xfrom
parquet-delta-byte-array
Oct 21, 2026
Merged

norberttech merged 2 commits into
1.xfrom
parquet-delta-byte-array

Conversation

@norberttech

Copy link
Copy Markdown
Member

Resolves: #737, #696

Change Log


Added

  • flow-php/parquet - read and write DELTA_LENGTH_BYTE_ARRAY and DELTA_BYTE_ARRAY
  • flow-php/parquet - Option::DICTIONARY_ENABLED

Fixed

  • flow-php/parquet - reading v2 pages flagged as uncompressed
  • flow-php/parquet - DELTA_BINARY_PACKED corruption for INT32 and wide bit widths
  • flow-php/parquet - all-null pages readable by arrow-rs and DuckDB
  • flow-php/parquet - failed writes leave no file behind
  • flow-php/arrow-ext - invalid COLUMNS_ENCODINGS entries throw instead of panicking

Changed

  • flow-php/parquet - dictionary encoding on by default, arrow-rs fallback encodings under WRITER_VERSION 2
  • flow-php/parquet - RLE_DICTIONARY on BOOLEAN columns is refused
  • flow-php/arrow-ext - COLUMNS_ENCODINGS writes exactly the given encoding

Removed

  • flow-php/parquet - PlainFlatColumnChunkBuilder and DeltaBinaryPackedColumnChunkBuilder, replaced by FlatColumnChunkBuilder

Deprecated

Security

…d arrow-rs default encodings

- read and write DELTA_LENGTH_BYTE_ARRAY and DELTA_BYTE_ARRAY, read uncompressed v2 pages
- dictionary on by default (Option::DICTIONARY_ENABLED), arrow-rs fallback encodings under WRITER_VERSION 2
- both engines write and refuse the same COLUMNS_ENCODINGS
- fix DELTA_BINARY_PACKED corruption for INT32 and wide bit widths
- failed writes leave no file
@norberttech norberttech added this to the 1.0.0 milestone Oct 21, 2026
@codecov

codecov Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.52941% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.10%. Comparing base (0651f6a) to head (86192ef).
⚠️ Report is 3 commits behind head on 1.x.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@             Coverage Diff              @@
##                1.x    #2702      +/-   ##
============================================
+ Coverage     90.03%   90.10%   +0.06%     
- Complexity        0    29569   +29569     
============================================
  Files          2212     2220       +8     
  Lines         85809    85858      +49     
============================================
+ Hits          77260    77363     +103     
+ Misses         8549     8495      -54     
Components Coverage Δ
etl 95.90% <ø> (+<0.01%) ⬆️
cli 87.05% <ø> (ø)
lib-array-dot 96.52% <ø> (ø)
lib-azure-sdk 64.44% <ø> (ø)
lib-doctrine-dbal-bulk 94.24% <ø> (ø)
lib-filesystem 87.63% <ø> (ø)
lib-types 94.69% <ø> (ø)
lib-parquet 82.15% <98.52%> (+0.50%) ⬆️
lib-parquet-viewer 83.15% <ø> (ø)
lib-snappy 89.86% <ø> (ø)
lib-dremel 0.00% <ø> (ø)
lib-postgresql 89.39% <ø> (ø)
lib-telemetry 86.85% <ø> (ø)
bridge-filesystem-async-aws 92.76% <ø> (ø)
bridge-filesystem-azure 90.34% <ø> (ø)
bridge-filesystem-sftp 91.02% <ø> (ø)
bridge-monolog-http 96.84% <ø> (ø)
bridge-monolog-telemetry 94.79% <ø> (ø)
bridge-openapi-specification 91.45% <ø> (ø)
symfony-http-foundation 75.81% <ø> (ø)
bridge-psr18-telemetry 100.00% <ø> (ø)
bridge-psr3-telemetry 98.95% <ø> (ø)
bridge-psr7-telemetry 100.00% <ø> (ø)
bridge-telemetry-otlp 90.11% <ø> (ø)
bridge-symfony-http-foundation-telemetry 92.85% <ø> (ø)
bridge-symfony-filesystem-bundle 90.66% <ø> (ø)
bridge-symfony-filesystem-cache 98.18% <ø> (ø)
bridge-symfony-postgresql-bundle 93.35% <ø> (ø)
bridge-symfony-postgresql-cache 94.41% <ø> (ø)
bridge-symfony-postgresql-messenger 98.80% <ø> (ø)
bridge-symfony-postgresql-session 93.65% <ø> (ø)
bridge-symfony-telemetry-bundle 90.77% <ø> (ø)
adapter-chartjs 79.14% <ø> (ø)
adapter-csv 96.68% <ø> (ø)
adapter-doctrine 94.86% <ø> (ø)
adapter-google-sheet 99.20% <ø> (ø)
adapter-http 88.12% <ø> (ø)
adapter-json 89.98% <ø> (ø)
adapter-logger 44.44% <ø> (ø)
adapter-parquet 95.33% <ø> (ø)
adapter-text 96.94% <ø> (ø)
adapter-xml 94.19% <ø> (ø)
adapter-avro 7.14% <ø> (ø)
adapter-excel 97.30% <ø> (ø)
adapter-postgresql 97.48% <ø> (ø)
adapter-seal 90.86% <ø> (ø)
bridge-phpunit-postgresql 75.30% <ø> (ø)
bridge-phpunit-telemetry 87.36% <ø> (ø)
bridge-phpstan-types 0.00% <ø> (ø)
bridge-postgresql-valinor 100.00% <ø> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@norberttech
norberttech merged commit 0f81ac6 into 1.x Oct 21, 2026
31 checks passed
@norberttech
norberttech deleted the parquet-delta-byte-array branch October 21, 2026 20:15
@github-project-automation github-project-automation Bot moved this from Todo to Done in Roadmap Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Parquet - Implement DELTA_BYTE_ARRAY encoding

1 participant