To unlock some impossible now features like dependent subqueries in a FROM clause name (but probably not only this) resolution should be redone to separate it from other info collecting.
- First pass should create array of name of fields (Item_type_holder(?)) for SELECTs and TABLE_LISTs(?), including unfolding "*" in SELECTs (inner -> out, Post-order tree traversal)
- Second pass (or two) only create connection between place of name usage (Item_ident(?)) and a field descriptor in the table above (possible in any order now)
- Third pass collect type information for all Items, calculate type compatibility (Post-order tree traversal).
- Forth pass "normalize" tree:
- add correct Item in place of resolved names
- constant calculation/conversion
All changes made once and on statement mem_root memory.