Context can be found in #17546 (comment)
The fact that reassign_predicate_columns can return invalid column expressions seems like a big footgun. I didn't change within this PR due to usage elsewhere but we might want to think about refactoring it
Ideally, we should change how the ignore_not_found parameter works and not allow returning column expressions with an invalid index