There are two parallel implementations for the same thing - detection if an Item has a subquery, directly or recursively, e.g. via arguments etc.
- A memmber Item::with_subselect, which is set in constructors and/or during fix_fields()
- A virtual method Item::has_subquery()
We'll remove Item::with_subselect and use the virtual implementation all around the code.
1. Get rid of duplicate functionality
2 With virtual implementation it will be easier to follow:
- which Item subclasses always have a subquery (e.g. Item_subselect)
- which Item subclasses can have a subquery
- which Item subclasses can never have a subquery