diff --git ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java index e692ec5186..09bb8412a3 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java @@ -778,7 +778,10 @@ private static void generateAllCombinations(List result, for(ExpressionTree kid: kids) { for(ExpressionTree or: work) { ExpressionTree copy = new ExpressionTree(or); - copy.children.add(kid); + ExpressionTree kidCopy = new ExpressionTree(kid); + // If we don't use a copy, a non-leaf node will be modified + // more than once in `buildLeafList`, which results in a wrong SARG + copy.children.add(kidCopy); result.add(copy); } }