!636 Fix bitmap issue when the operator in predicate is not supported

Merge pull request !636 from Han_Weng/fix-bitmap
This commit is contained in:
i-robot 2021-02-26 11:07:09 +08:00 committed by Gitee
commit 1a4c77fca4
1 changed files with 19 additions and 23 deletions

View File

@ -342,19 +342,17 @@ abstract class AbstractOrcRecordReader<T extends AbstractColumnReader>
if (!andDomainMap.isEmpty()) {
List<Iterator<Integer>> matchings = new ArrayList<>(andDomainMap.size());
for (Map.Entry<Index, Domain> e : andDomainMap.entrySet()) {
Iterator<Integer> lookUpRes = e.getKey().lookUp(e.getValue());
if (lookUpRes != null) {
matchings.add(lookUpRes);
try {
Iterator<Integer> lookUpRes = e.getKey().lookUp(e.getValue());
if (lookUpRes != null) {
matchings.add(lookUpRes);
}
else if (!e.getKey().matches(e.getValue())) {
return true;
}
}
else {
try {
if (!e.getKey().matches(e.getValue())) {
return true;
}
}
catch (UnsupportedOperationException uoe2) {
return false;
}
catch (UnsupportedOperationException uoe2) {
return false;
}
}
if (!matchings.isEmpty()) {
@ -366,23 +364,21 @@ abstract class AbstractOrcRecordReader<T extends AbstractColumnReader>
}
if (!orDomainMap.isEmpty()) {
for (Map.Entry<Index, Domain> e : orDomainMap.entrySet()) {
Iterator<Integer> thisStripeMatchingRows = e.getKey().lookUp(e.getValue());
if (thisStripeMatchingRows != null) {
if (thisStripeMatchingRows.hasNext()) {
/* any one matched; then include the stripe */
return false;
}
}
else {
try {
if (e.getKey().matches(e.getValue())) {
try {
Iterator<Integer> thisStripeMatchingRows = e.getKey().lookUp(e.getValue());
if (thisStripeMatchingRows != null) {
if (thisStripeMatchingRows.hasNext()) {
/* any one matched; then include the stripe */
return false;
}
}
catch (UnsupportedOperationException uoe2) {
else if (e.getKey().matches(e.getValue())) {
return false;
}
}
catch (UnsupportedOperationException uoe2) {
return false;
}
}
return true;
}