There are various usecases and filter types where evaluating the filter before version are handled either do not make sense, or make filter handling more complicated.
Also see this comment in ScanQueryMatcher:
So we had Filters after the column trackers (which do the version checking), and then moved it.
Should be at the discretion of the Filter.
Could either add a new method to FilterBase (maybe excludeVersions() or something). Or have a new Filter wrapper (like WhileMatchFilter), that should only be used as outmost filter and indicates the same (maybe ExcludeVersionsFilter).
See latest comments on
HBASE-5229 for motivation.