Skip to content

fix(flow-php/etl): empty sources without a declared schema fail at the source - #2696

Merged
norberttech merged 1 commit into
1.xfrom
empty-input-schema
Oct 20, 2026
Merged

norberttech merged 1 commit into
1.xfrom
empty-input-schema

Conversation

@norberttech

Copy link
Copy Markdown
Member

Change Log


Added

  • flow-php/etl-adapter-parquet - from_parquet()->withSchema() reads every file by name against a declared schema
  • flow-php/etl - from_floe()->withSchema() reads every file by name against a declared schema

Fixed

  • flow-php/etl - an empty source under a declared schema reads 0 rows instead of failing at plan time

Changed

  • flow-php/etl - an empty source without a declared schema throws InferredSchemaException
  • flow-php/etl - from_cache() without a cache instance throws SchemaNotDerivableException
  • flow-php/etl-adapter-csv, flow-php/etl-adapter-json, flow-php/etl-adapter-excel, flow-php/etl-adapter-google-sheet - an empty file, sheet or glob without a declared schema throws InferredSchemaException

Removed

Deprecated

Security

…e source

- empty sources throw InferredSchemaException from schema()
- reading an empty source under a declared schema yields 0 rows
- parquet and floe accept withSchema(), files read by name
- from_cache() without a cache is not derivable
- upgrading notes and declared schema docs
@codecov

codecov Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.07%. Comparing base (7764560) to head (e3cb7e7).
⚠️ Report is 1 commits behind head on 1.x.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@             Coverage Diff              @@
##                1.x    #2696      +/-   ##
============================================
+ Coverage     90.04%   90.07%   +0.02%     
- Complexity    29453    29489      +36     
============================================
  Files          2212     2212              
  Lines         85683    85778      +95     
============================================
+ Hits          77157    77261     +104     
+ Misses         8526     8517       -9     
Components Coverage Δ
etl 95.90% <100.00%> (+0.03%) ⬆️
cli 87.62% <ø> (ø)
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 81.66% <ø> (+0.01%) ⬆️
lib-parquet-viewer 83.15% <ø> (ø)
lib-snappy 89.42% <ø> (ø)
lib-dremel 0.00% <ø> (ø)
lib-postgresql 89.39% <ø> (+<0.01%) ⬆️
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 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.77% <ø> (ø)
adapter-chartjs 79.14% <ø> (ø)
adapter-csv 96.68% <100.00%> (+0.04%) ⬆️
adapter-doctrine 94.86% <ø> (ø)
adapter-google-sheet 99.20% <100.00%> (+0.01%) ⬆️
adapter-http 88.29% <ø> (ø)
adapter-json 89.98% <100.00%> (+0.07%) ⬆️
adapter-logger 44.44% <ø> (ø)
adapter-parquet 95.33% <100.00%> (+0.20%) ⬆️
adapter-text 96.94% <ø> (ø)
adapter-xml 94.19% <ø> (ø)
adapter-avro 7.14% <ø> (ø)
adapter-excel 97.30% <100.00%> (+0.03%) ⬆️
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 1631c2f into 1.x Oct 20, 2026
49 of 50 checks passed
@norberttech
norberttech deleted the empty-input-schema branch October 20, 2026 19:49
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