Skip to content

Array empty type - #2593

Open
norberttech wants to merge 5 commits into
1.xfrom
array-empty-type
Open

Array empty type#2593
norberttech wants to merge 5 commits into
1.xfrom
array-empty-type

Conversation

@norberttech

Copy link
Copy Markdown
Member

Change Log


Added

  • flow-php/types - array{} empty array type with type_empty_array() DSL function
  • flow-php/etl - array<mixed> and array{} project onto json at any schema depth

Fixed

  • flow-php/etl-adapter-parquet - nested json and uuid values round-trip through parquet encode and decode
  • flow-php/arrow-ext - nested uuid values read as canonical strings, map writes throw exceptions instead of aborting the process
  • flow-php/etl - Floe inferred schema preserves first batch nullability instead of making every column nullable
  • flow-php/types - array type detection never returns a type that rejects its own input

Changed

  • flow-php/etl-adapter-json - to_json()/to_json_lines() write list/map/structure/array entries as nested JSON instead of escaped strings

Removed

Deprecated

Security

- add EmptyArrayType with type_empty_array() DSL, detected for [] at
every depth
- keep list/map/structure detection byte-identical for all other inputs
- treat array{} like array<mixed> in type comparability
- project array{} onto json wherever an ETL Definition is built, column
and nested
- ParquetEncoder converts json/uuid leaves at any depth via
schema-driven ValueConverters, not just top-level columns
- arrow-ext reader returns canonical uuid strings for nested
struct/list/map leaves
- arrow-ext writer keeps extension metadata on map key/value fields,
fixing a process abort on map<string, uuid|json> writes
- writer schema mismatches now raise exceptions instead of panicking
- TypeProjection maps ArrayType to json, matching the array{} rule
- UnionTypeNormalizer collapsed to TypeProjection::union() delegation
- to_floe() no longer widens every inferred column to nullable; the
footer schema is the first batch's union, so non-nullable declarations
survive a round-trip
- to_json()/to_json_lines() emit list/map/structure/array entries as
nested JSON instead of escaped strings, normalizing nested
datetime/interval/uuid/json/enum leaves
…ejects its own input

- scalar values mixed with arrays no longer count as homogeneous
lists/maps; they detect as array<mixed>
- valueType() widens to array<mixed> instead of dropping types by order
([] still keeps a list/map element type)
@norberttech norberttech added this to the 0.43.0 milestone Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

1 participant