use list instead of set to keep join orders