rmannibucau opened a new issue, #9077:
URL: https://github.com/apache/hop/issues/9077

   ## Problem
   
   The MetaInject (ETL Metadata Injection) transform has a single 
`allowEmptyStreamOnExecution` boolean that only distinguishes two cases:
   - `false` -> every input stream must have data,
   - `true` -> run if *at least one* input stream has data.
   
   There is **no way to run the injected template pipeline when *all* input 
streams are empty** -- even though templates that rely on constant mappings 
alone are perfectly valid. The runtime gate in `MetaInject.processRow()` 
hard-blocks the all-empty case (the `!data.receivedRows` condition) regardless 
of the flag.
   
   ## Proposed solution
   
   Replace the boolean with a three-state `ConditionStreamBehavior` enum:
   - `ALL_NON_EMPTY` -- run only when every stream has data (legacy `false`),
   - `AT_LEAST_ONE_NON_EMPTY` -- run when at least one stream has data (legacy 
`true`),
   - `ALWAYS` -- **new**: run even when every input stream is empty.
   
   Backward compatibility must be preserved: the old 
`allow_empty_stream_on_execution` key is dropped from *new* serialized 
metadata, but old files still load and map deterministically (`Y`/`true` -> 
`AT_LEAST_ONE_NON_EMPTY`, `N`/`false` -> `ALL_NON_EMPTY`, missing -> 
`ALL_NON_EMPTY`), without confusing an explicit `Y` with a missing tag.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to