Eng 6591 partial aggregate

This would be cleaner if coveredGroupByColumns was initialized inside calculateGroupbyColumnsCovered and used as a return value rather than passed as a parameter.
You do not want to use the same allBindings list for every call in this loop -- it will get contaminated with information from unused indexes. You should reset it to an empty list before each call and save the bindings of only the last index with max coverage in another local variable.