The query with each Filter's invalid values read again against the schema of its input, as inference gives it, e.g. once its sources are typed again after an import (PLAN ยง10.3): a Filter after a Join reads against the joined columns. An invalid node has no schema, so a Filter after another one with invalid values is read once that one is: passes repeat until nothing changes, each turning at least one invalid value into a value. The query itself comes back when no value was read again.