Description
Scanning a wide table with a predicate that doesn't ever match showed ~10% CPU usage in CFileSet::Iterator::FinishBatch. Looking at the assembly it seems that the cost was in iterating over the vector<bool> indicating which columns had been prepared. In the case of a selective predicate, only one of the 200+ columns was prepared, and the iteration was quite slow. Instead of using the bitmap, we can instead just keep a list of the prepared column iterators.