Skip to content

fix(flow-php/etl): array_expand() no longer copies every input column per element - #2674

Merged
norberttech merged 2 commits into
1.xfrom
expand-gather-overflow
Oct 8, 2026
Merged

norberttech merged 2 commits into
1.xfrom
expand-gather-overflow

Conversation

@norberttech

Copy link
Copy Markdown
Member

Resolves: #xxx

Change Log


Added

  • flow-php/etl - optimizer rule pruning columns a later select()/drop() discards before an expansion

Fixed

  • flow-php/etl - array_expand() no longer copies every input column once per element
  • flow-php/flow-php-ext - a native string column past 2 GiB no longer overflows its offsets

Changed

  • flow-php/etl - an expanding withEntry() emits batches of at most 1,000 rows
  • flow-php/etl - ScalarFunctionTransformer refuses array_expand()
  • flow-php/etl - a serialized Rows holds a list of frames
  • flow-php/flow-php-ext - native strings use 64-bit offsets (LargeBinary)
  • flow-php/arrow-ext - canonical string type is LargeBinary

Removed

  • flow-php/etl - NestedExpandTransformer

Deprecated

Security

… per element

- expansions run on ExpandingProcessor, output in batches of at most 1,000 rows
- optimizer prunes columns a later select()/drop() discards before expanding
- ScalarFunctionTransformer refuses array_expand(), NestedExpandTransformer removed
- native string columns use 64-bit offsets in flow-php-ext and arrow-ext
- serialized Rows split into frames past the 2 GiB offset limit
@codecov

codecov Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.47909% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 89.39%. Comparing base (e5cedf0) to head (91c18b1).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@             Coverage Diff              @@
##                1.x    #2674      +/-   ##
============================================
+ Coverage     89.37%   89.39%   +0.01%     
- Complexity        0    27866   +27866     
============================================
  Files          2111     2117       +6     
  Lines         81983    82107     +124     
============================================
+ Hits          73275    73400     +125     
+ Misses         8708     8707       -1     
Components Coverage Δ
etl 95.75% <98.47%> (+<0.01%) ⬆️
cli 87.62% <ø> (ø)
lib-array-dot 96.52% <ø> (ø)
lib-azure-sdk 64.44% <ø> (ø)
lib-doctrine-dbal-bulk 94.24% <ø> (ø)
lib-filesystem 87.62% <ø> (ø)
lib-types 94.68% <ø> (ø)
lib-parquet 73.78% <ø> (+0.05%) ⬆️
lib-parquet-viewer 82.07% <ø> (ø)
lib-snappy 89.86% <ø> (ø)
lib-dremel 0.00% <ø> (ø)
lib-postgresql 89.39% <ø> (ø)
lib-telemetry 86.64% <ø> (ø)
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 91.85% <ø> (ø)
bridge-symfony-filesystem-cache 98.18% <ø> (ø)
bridge-symfony-postgresql-bundle 93.62% <ø> (ø)
bridge-symfony-postgresql-cache 94.41% <ø> (ø)
bridge-symfony-postgresql-messenger 98.80% <ø> (ø)
bridge-symfony-postgresql-session 93.65% <ø> (ø)
bridge-symfony-telemetry-bundle 90.72% <ø> (ø)
adapter-chartjs 79.14% <ø> (ø)
adapter-csv 96.64% <ø> (ø)
adapter-doctrine 94.86% <ø> (ø)
adapter-google-sheet 99.18% <ø> (ø)
adapter-http 88.29% <ø> (ø)
adapter-json 89.91% <ø> (ø)
adapter-logger 44.44% <ø> (ø)
adapter-parquet 93.71% <ø> (ø)
adapter-text 96.92% <ø> (ø)
adapter-xml 94.18% <ø> (ø)
adapter-avro 7.14% <ø> (ø)
adapter-excel 97.27% <ø> (ø)
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 ca82a38 into 1.x Oct 8, 2026
48 of 50 checks passed
@norberttech
norberttech deleted the expand-gather-overflow branch October 8, 2026 17:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant