Javadoc
This method is called only when the index has at least one functional indexed field. If there is no function field,
we don't need to worry whether there could be paths not found in Scan.
In functional case, we have to check all available (if needed) operators to find out if the query is covered or not.
E.g. cast(a.b as INT) in project, a.b in Scan's rowType or columns, and cast(a.b as INT)
is an indexed field named '$0'. In this case, by looking at Scan, we see only 'a.b' which is not in index. We have to
look into Project, and if we see 'a.b' is only used in functional index expression cast(a.b as INT), then we know
this Project+Scan is covered.