morningman commented on code in PR #10547:
URL: https://github.com/apache/doris/pull/10547#discussion_r913425447
##########
fe/fe-core/src/main/java/org/apache/doris/planner/HudiScanNode.java:
##########
@@ -229,41 +225,11 @@ private void initParams(Analyzer analyzer) {
context.slotDescByName = slotDescByName;
}
-
- /**
- * Extracts partition predicate from SelectStmt.whereClause that can be
pushed down to Hive.
- */
- private void extractHivePartitionPredicate() throws DdlException {
- ListIterator<Expr> it = conjuncts.listIterator();
- while (it.hasNext()) {
- ExprNodeGenericFuncDesc hiveExpr =
HiveMetaStoreClientHelper.convertToHivePartitionExpr(
- it.next(), partitionKeys, hudiTable.getName());
- if (hiveExpr != null) {
- hivePredicates.add(hiveExpr);
- }
- }
- int count = hivePredicates.size();
- // combine all predicate by `and`
- // compoundExprs must have at least 2 predicates
- if (count >= 2) {
- hivePartitionPredicate =
HiveMetaStoreClientHelper.getCompoundExpr(hivePredicates, "and");
- } else if (count == 1) {
- // only one predicate
- hivePartitionPredicate = (ExprNodeGenericFuncDesc)
hivePredicates.get(0);
- } else {
- // have no predicate, make a dummy predicate "1=1" to get all
partitions
- HiveMetaStoreClientHelper.ExprBuilder exprBuilder =
- new
HiveMetaStoreClientHelper.ExprBuilder(hudiTable.getName());
- hivePartitionPredicate =
exprBuilder.val(TypeInfoFactory.intTypeInfo, 1)
- .val(TypeInfoFactory.intTypeInfo, 1)
- .pred("=", 2).build();
- }
- }
-
private InputSplit[] getSplits() throws UserException, IOException {
String splitsPath = basePath;
if (partitionKeys.size() > 0) {
- extractHivePartitionPredicate();
+ hivePartitionPredicate =
HiveMetaStoreClientHelper.convertToHivePartitionExpr(
Review Comment:
We call `convertToHivePartitionExpr` twice in `HudiScanNode`.
I think the call in `getFileStatus()` can be removed?
##########
fe/fe-core/src/main/java/org/apache/doris/catalog/HiveMetaStoreClientHelper.java:
##########
@@ -400,61 +401,123 @@ public static List<FieldSchema> getSchema(String dbName,
String tableName, Strin
/**
* Convert Doris expr to Hive expr, only for partition column
- * @param dorisExpr
- * @param partitions
* @param tblName
* @return
* @throws DdlException
* @throws SemanticException
*/
- public static ExprNodeGenericFuncDesc convertToHivePartitionExpr(Expr
dorisExpr,
+ public static ExprNodeGenericFuncDesc
convertToHivePartitionExpr(List<Expr> conjuncts,
+ List<String> partitionKeys, String tblName) throws DdlException {
+ List<ExprNodeDesc> hivePredicates = new ArrayList<>();
+
+ for (Expr conjunct : conjuncts) {
+ ExprNodeGenericFuncDesc hiveExpr =
HiveMetaStoreClientHelper.convertToHivePartitionExpr(
+ conjunct, partitionKeys, tblName).getFuncDesc();
+ if (hiveExpr != null) {
+ hivePredicates.add(hiveExpr);
+ }
+ }
+ int count = hivePredicates.size();
+ // combine all predicate by `and`
+ // compoundExprs must have at least 2 predicates
+ if (count >= 2) {
+ return HiveMetaStoreClientHelper.getCompoundExpr(hivePredicates,
"and");
+ } else if (count == 1) {
+ // only one predicate
+ return (ExprNodeGenericFuncDesc) hivePredicates.get(0);
+ } else {
+ return genAlwaysTrueExpr(tblName);
+ }
+ }
+
+ private static ExprNodeGenericFuncDesc genAlwaysTrueExpr(String tblName)
throws DdlException {
+ // have no predicate, make a dummy predicate "1=1" to get all
partitions
+ HiveMetaStoreClientHelper.ExprBuilder exprBuilder =
+ new HiveMetaStoreClientHelper.ExprBuilder(tblName);
+ return exprBuilder.val(TypeInfoFactory.intTypeInfo, 1)
+ .val(TypeInfoFactory.intTypeInfo, 1)
+ .pred("=", 2).build();
+ }
+
+ private static class ExprNodeGenericFuncDescContext {
+ private final ExprNodeGenericFuncDesc funcDesc;
+ private final boolean eligible;
+
+ public ExprNodeGenericFuncDescContext(ExprNodeGenericFuncDesc
funcDesc) {
+ this.funcDesc = funcDesc;
+ this.eligible = true;
+ }
+
+ public ExprNodeGenericFuncDescContext() {
+ this.funcDesc = null;
+ this.eligible = false;
+ }
+
+ /**
+ * Check eligible before use the expr in CompoundPredicate for `and`
and `or` .
+ */
+ public boolean isEligible() {
+ return eligible;
+ }
+
+ public ExprNodeGenericFuncDesc getFuncDesc() {
+ return funcDesc;
+ }
+ }
+
+ private static ExprNodeGenericFuncDescContext
convertToHivePartitionExpr(Expr dorisExpr,
List<String> partitions, String tblName) throws DdlException {
if (dorisExpr == null) {
- return null;
+ return new ExprNodeGenericFuncDescContext();
}
if (dorisExpr instanceof CompoundPredicate) {
CompoundPredicate compoundPredicate = (CompoundPredicate)
dorisExpr;
switch (compoundPredicate.getOp()) {
case AND: {
- ExprNodeGenericFuncDesc left = convertToHivePartitionExpr(
- compoundPredicate.getChild(0), partitions,
tblName);
- ExprNodeGenericFuncDesc right = convertToHivePartitionExpr(
+ ExprNodeGenericFuncDescContext left =
convertToHivePartitionExpr(
compoundPredicate.getChild(0), partitions,
tblName);
- if (left != null && right != null) {
+ ExprNodeGenericFuncDescContext right =
convertToHivePartitionExpr(
+ compoundPredicate.getChild(1), partitions,
tblName);
+
+ if (left.isEligible() && right.isEligible()) {
List<ExprNodeDesc> andArgs = new ArrayList<>();
- andArgs.add(left);
- andArgs.add(right);
- return getCompoundExpr(andArgs, "and");
- } else if (left != null && right == null) {
+ andArgs.add(left.getFuncDesc());
+ andArgs.add(right.getFuncDesc());
+ return new
ExprNodeGenericFuncDescContext(getCompoundExpr(andArgs, "and"));
+ } else if (left.isEligible()) {
return left;
- } else if (left == null && right != null) {
+ } else if (right.isEligible()) {
return right;
+ } else {
+ return new ExprNodeGenericFuncDescContext();
}
- return null;
}
case OR: {
- ExprNodeGenericFuncDesc left = convertToHivePartitionExpr(
- compoundPredicate.getChild(0), partitions,
tblName);
- ExprNodeGenericFuncDesc right = convertToHivePartitionExpr(
+ ExprNodeGenericFuncDescContext left =
convertToHivePartitionExpr(
compoundPredicate.getChild(0), partitions,
tblName);
- if (left != null && right != null) {
- List<ExprNodeDesc> orArgs = new ArrayList<>();
- orArgs.add(left);
- orArgs.add(right);
- return getCompoundExpr(orArgs, "or");
- } else if (left != null && right == null) {
- return left;
- } else if (left == null && right != null) {
- return right;
+ ExprNodeGenericFuncDescContext right =
convertToHivePartitionExpr(
+ compoundPredicate.getChild(1), partitions,
tblName);
+ if (left.isEligible() && right.isEligible()) {
+ List<ExprNodeDesc> andArgs = new ArrayList<>();
+ andArgs.add(left.getFuncDesc());
+ andArgs.add(right.getFuncDesc());
+ return new
ExprNodeGenericFuncDescContext(getCompoundExpr(andArgs, "or"));
+ } else {
+ // If it is not a partition key, this is an always
true expr.
+ // Or if is a partition key and also is a not
supportedOp, this is an always true expr.
+ return new
ExprNodeGenericFuncDescContext(genAlwaysTrueExpr(tblName));
}
- return null;
}
default:
- return null;
+ return new ExprNodeGenericFuncDescContext();
}
}
+ return binaryExprDesc(dorisExpr, partitions, tblName);
+ }
+ private static ExprNodeGenericFuncDescContext binaryExprDesc(Expr
dorisExpr,
+ List<String> partitions, String tblName) throws DdlException {
Review Comment:
```suggestion
List<String> partitionKeys, String tblName) throws DdlException {
```
##########
fe/fe-core/src/main/java/org/apache/doris/catalog/HiveMetaStoreClientHelper.java:
##########
@@ -400,61 +401,123 @@ public static List<FieldSchema> getSchema(String dbName,
String tableName, Strin
/**
* Convert Doris expr to Hive expr, only for partition column
- * @param dorisExpr
- * @param partitions
* @param tblName
* @return
* @throws DdlException
* @throws SemanticException
*/
- public static ExprNodeGenericFuncDesc convertToHivePartitionExpr(Expr
dorisExpr,
+ public static ExprNodeGenericFuncDesc
convertToHivePartitionExpr(List<Expr> conjuncts,
+ List<String> partitionKeys, String tblName) throws DdlException {
+ List<ExprNodeDesc> hivePredicates = new ArrayList<>();
+
+ for (Expr conjunct : conjuncts) {
+ ExprNodeGenericFuncDesc hiveExpr =
HiveMetaStoreClientHelper.convertToHivePartitionExpr(
+ conjunct, partitionKeys, tblName).getFuncDesc();
+ if (hiveExpr != null) {
+ hivePredicates.add(hiveExpr);
+ }
+ }
+ int count = hivePredicates.size();
+ // combine all predicate by `and`
+ // compoundExprs must have at least 2 predicates
+ if (count >= 2) {
+ return HiveMetaStoreClientHelper.getCompoundExpr(hivePredicates,
"and");
+ } else if (count == 1) {
+ // only one predicate
+ return (ExprNodeGenericFuncDesc) hivePredicates.get(0);
+ } else {
+ return genAlwaysTrueExpr(tblName);
+ }
+ }
+
+ private static ExprNodeGenericFuncDesc genAlwaysTrueExpr(String tblName)
throws DdlException {
+ // have no predicate, make a dummy predicate "1=1" to get all
partitions
+ HiveMetaStoreClientHelper.ExprBuilder exprBuilder =
+ new HiveMetaStoreClientHelper.ExprBuilder(tblName);
+ return exprBuilder.val(TypeInfoFactory.intTypeInfo, 1)
+ .val(TypeInfoFactory.intTypeInfo, 1)
+ .pred("=", 2).build();
+ }
+
+ private static class ExprNodeGenericFuncDescContext {
+ private final ExprNodeGenericFuncDesc funcDesc;
+ private final boolean eligible;
+
+ public ExprNodeGenericFuncDescContext(ExprNodeGenericFuncDesc
funcDesc) {
+ this.funcDesc = funcDesc;
+ this.eligible = true;
+ }
+
+ public ExprNodeGenericFuncDescContext() {
Review Comment:
We can use a `static final` field to replace this constructor.
##########
fe/fe-core/src/main/java/org/apache/doris/catalog/HiveMetaStoreClientHelper.java:
##########
@@ -400,61 +401,123 @@ public static List<FieldSchema> getSchema(String dbName,
String tableName, Strin
/**
* Convert Doris expr to Hive expr, only for partition column
- * @param dorisExpr
- * @param partitions
* @param tblName
* @return
* @throws DdlException
* @throws SemanticException
*/
- public static ExprNodeGenericFuncDesc convertToHivePartitionExpr(Expr
dorisExpr,
+ public static ExprNodeGenericFuncDesc
convertToHivePartitionExpr(List<Expr> conjuncts,
+ List<String> partitionKeys, String tblName) throws DdlException {
+ List<ExprNodeDesc> hivePredicates = new ArrayList<>();
+
+ for (Expr conjunct : conjuncts) {
+ ExprNodeGenericFuncDesc hiveExpr =
HiveMetaStoreClientHelper.convertToHivePartitionExpr(
+ conjunct, partitionKeys, tblName).getFuncDesc();
+ if (hiveExpr != null) {
+ hivePredicates.add(hiveExpr);
+ }
+ }
+ int count = hivePredicates.size();
+ // combine all predicate by `and`
+ // compoundExprs must have at least 2 predicates
+ if (count >= 2) {
+ return HiveMetaStoreClientHelper.getCompoundExpr(hivePredicates,
"and");
+ } else if (count == 1) {
+ // only one predicate
+ return (ExprNodeGenericFuncDesc) hivePredicates.get(0);
+ } else {
+ return genAlwaysTrueExpr(tblName);
+ }
+ }
+
+ private static ExprNodeGenericFuncDesc genAlwaysTrueExpr(String tblName)
throws DdlException {
+ // have no predicate, make a dummy predicate "1=1" to get all
partitions
+ HiveMetaStoreClientHelper.ExprBuilder exprBuilder =
+ new HiveMetaStoreClientHelper.ExprBuilder(tblName);
+ return exprBuilder.val(TypeInfoFactory.intTypeInfo, 1)
+ .val(TypeInfoFactory.intTypeInfo, 1)
+ .pred("=", 2).build();
+ }
+
+ private static class ExprNodeGenericFuncDescContext {
+ private final ExprNodeGenericFuncDesc funcDesc;
+ private final boolean eligible;
+
+ public ExprNodeGenericFuncDescContext(ExprNodeGenericFuncDesc
funcDesc) {
+ this.funcDesc = funcDesc;
+ this.eligible = true;
+ }
+
+ public ExprNodeGenericFuncDescContext() {
+ this.funcDesc = null;
+ this.eligible = false;
+ }
+
+ /**
+ * Check eligible before use the expr in CompoundPredicate for `and`
and `or` .
+ */
+ public boolean isEligible() {
+ return eligible;
+ }
+
+ public ExprNodeGenericFuncDesc getFuncDesc() {
+ return funcDesc;
+ }
+ }
+
+ private static ExprNodeGenericFuncDescContext
convertToHivePartitionExpr(Expr dorisExpr,
List<String> partitions, String tblName) throws DdlException {
if (dorisExpr == null) {
- return null;
+ return new ExprNodeGenericFuncDescContext();
}
if (dorisExpr instanceof CompoundPredicate) {
CompoundPredicate compoundPredicate = (CompoundPredicate)
dorisExpr;
switch (compoundPredicate.getOp()) {
case AND: {
- ExprNodeGenericFuncDesc left = convertToHivePartitionExpr(
- compoundPredicate.getChild(0), partitions,
tblName);
- ExprNodeGenericFuncDesc right = convertToHivePartitionExpr(
+ ExprNodeGenericFuncDescContext left =
convertToHivePartitionExpr(
compoundPredicate.getChild(0), partitions,
tblName);
- if (left != null && right != null) {
+ ExprNodeGenericFuncDescContext right =
convertToHivePartitionExpr(
+ compoundPredicate.getChild(1), partitions,
tblName);
+
+ if (left.isEligible() && right.isEligible()) {
List<ExprNodeDesc> andArgs = new ArrayList<>();
- andArgs.add(left);
- andArgs.add(right);
- return getCompoundExpr(andArgs, "and");
- } else if (left != null && right == null) {
+ andArgs.add(left.getFuncDesc());
+ andArgs.add(right.getFuncDesc());
+ return new
ExprNodeGenericFuncDescContext(getCompoundExpr(andArgs, "and"));
+ } else if (left.isEligible()) {
return left;
- } else if (left == null && right != null) {
+ } else if (right.isEligible()) {
return right;
+ } else {
+ return new ExprNodeGenericFuncDescContext();
}
- return null;
}
case OR: {
- ExprNodeGenericFuncDesc left = convertToHivePartitionExpr(
- compoundPredicate.getChild(0), partitions,
tblName);
- ExprNodeGenericFuncDesc right = convertToHivePartitionExpr(
+ ExprNodeGenericFuncDescContext left =
convertToHivePartitionExpr(
compoundPredicate.getChild(0), partitions,
tblName);
- if (left != null && right != null) {
- List<ExprNodeDesc> orArgs = new ArrayList<>();
- orArgs.add(left);
- orArgs.add(right);
- return getCompoundExpr(orArgs, "or");
- } else if (left != null && right == null) {
- return left;
- } else if (left == null && right != null) {
- return right;
+ ExprNodeGenericFuncDescContext right =
convertToHivePartitionExpr(
+ compoundPredicate.getChild(1), partitions,
tblName);
+ if (left.isEligible() && right.isEligible()) {
+ List<ExprNodeDesc> andArgs = new ArrayList<>();
+ andArgs.add(left.getFuncDesc());
+ andArgs.add(right.getFuncDesc());
+ return new
ExprNodeGenericFuncDescContext(getCompoundExpr(andArgs, "or"));
+ } else {
+ // If it is not a partition key, this is an always
true expr.
+ // Or if is a partition key and also is a not
supportedOp, this is an always true expr.
+ return new
ExprNodeGenericFuncDescContext(genAlwaysTrueExpr(tblName));
Review Comment:
I think it can just return `new ExprNodeGenericFuncDescContext()` ?
##########
fe/fe-core/src/main/java/org/apache/doris/catalog/HiveMetaStoreClientHelper.java:
##########
@@ -400,61 +401,123 @@ public static List<FieldSchema> getSchema(String dbName,
String tableName, Strin
/**
* Convert Doris expr to Hive expr, only for partition column
- * @param dorisExpr
- * @param partitions
* @param tblName
* @return
* @throws DdlException
* @throws SemanticException
*/
- public static ExprNodeGenericFuncDesc convertToHivePartitionExpr(Expr
dorisExpr,
+ public static ExprNodeGenericFuncDesc
convertToHivePartitionExpr(List<Expr> conjuncts,
+ List<String> partitionKeys, String tblName) throws DdlException {
+ List<ExprNodeDesc> hivePredicates = new ArrayList<>();
+
+ for (Expr conjunct : conjuncts) {
+ ExprNodeGenericFuncDesc hiveExpr =
HiveMetaStoreClientHelper.convertToHivePartitionExpr(
+ conjunct, partitionKeys, tblName).getFuncDesc();
+ if (hiveExpr != null) {
+ hivePredicates.add(hiveExpr);
+ }
+ }
+ int count = hivePredicates.size();
+ // combine all predicate by `and`
+ // compoundExprs must have at least 2 predicates
+ if (count >= 2) {
+ return HiveMetaStoreClientHelper.getCompoundExpr(hivePredicates,
"and");
+ } else if (count == 1) {
+ // only one predicate
+ return (ExprNodeGenericFuncDesc) hivePredicates.get(0);
+ } else {
+ return genAlwaysTrueExpr(tblName);
+ }
+ }
+
+ private static ExprNodeGenericFuncDesc genAlwaysTrueExpr(String tblName)
throws DdlException {
+ // have no predicate, make a dummy predicate "1=1" to get all
partitions
+ HiveMetaStoreClientHelper.ExprBuilder exprBuilder =
+ new HiveMetaStoreClientHelper.ExprBuilder(tblName);
+ return exprBuilder.val(TypeInfoFactory.intTypeInfo, 1)
+ .val(TypeInfoFactory.intTypeInfo, 1)
+ .pred("=", 2).build();
+ }
+
+ private static class ExprNodeGenericFuncDescContext {
+ private final ExprNodeGenericFuncDesc funcDesc;
+ private final boolean eligible;
+
+ public ExprNodeGenericFuncDescContext(ExprNodeGenericFuncDesc
funcDesc) {
+ this.funcDesc = funcDesc;
+ this.eligible = true;
+ }
+
+ public ExprNodeGenericFuncDescContext() {
+ this.funcDesc = null;
+ this.eligible = false;
+ }
+
+ /**
+ * Check eligible before use the expr in CompoundPredicate for `and`
and `or` .
+ */
+ public boolean isEligible() {
+ return eligible;
+ }
+
+ public ExprNodeGenericFuncDesc getFuncDesc() {
+ return funcDesc;
+ }
+ }
+
+ private static ExprNodeGenericFuncDescContext
convertToHivePartitionExpr(Expr dorisExpr,
List<String> partitions, String tblName) throws DdlException {
Review Comment:
```suggestion
List<String> partitionKeys, String tblName) throws DdlException {
```
##########
fe/fe-core/src/main/java/org/apache/doris/catalog/HiveMetaStoreClientHelper.java:
##########
@@ -400,61 +401,123 @@ public static List<FieldSchema> getSchema(String dbName,
String tableName, Strin
/**
* Convert Doris expr to Hive expr, only for partition column
- * @param dorisExpr
- * @param partitions
* @param tblName
* @return
* @throws DdlException
* @throws SemanticException
*/
- public static ExprNodeGenericFuncDesc convertToHivePartitionExpr(Expr
dorisExpr,
+ public static ExprNodeGenericFuncDesc
convertToHivePartitionExpr(List<Expr> conjuncts,
+ List<String> partitionKeys, String tblName) throws DdlException {
+ List<ExprNodeDesc> hivePredicates = new ArrayList<>();
+
+ for (Expr conjunct : conjuncts) {
+ ExprNodeGenericFuncDesc hiveExpr =
HiveMetaStoreClientHelper.convertToHivePartitionExpr(
+ conjunct, partitionKeys, tblName).getFuncDesc();
+ if (hiveExpr != null) {
+ hivePredicates.add(hiveExpr);
+ }
+ }
+ int count = hivePredicates.size();
+ // combine all predicate by `and`
+ // compoundExprs must have at least 2 predicates
+ if (count >= 2) {
+ return HiveMetaStoreClientHelper.getCompoundExpr(hivePredicates,
"and");
+ } else if (count == 1) {
+ // only one predicate
+ return (ExprNodeGenericFuncDesc) hivePredicates.get(0);
+ } else {
+ return genAlwaysTrueExpr(tblName);
+ }
+ }
+
+ private static ExprNodeGenericFuncDesc genAlwaysTrueExpr(String tblName)
throws DdlException {
+ // have no predicate, make a dummy predicate "1=1" to get all
partitions
+ HiveMetaStoreClientHelper.ExprBuilder exprBuilder =
+ new HiveMetaStoreClientHelper.ExprBuilder(tblName);
+ return exprBuilder.val(TypeInfoFactory.intTypeInfo, 1)
+ .val(TypeInfoFactory.intTypeInfo, 1)
+ .pred("=", 2).build();
+ }
+
+ private static class ExprNodeGenericFuncDescContext {
+ private final ExprNodeGenericFuncDesc funcDesc;
+ private final boolean eligible;
+
+ public ExprNodeGenericFuncDescContext(ExprNodeGenericFuncDesc
funcDesc) {
+ this.funcDesc = funcDesc;
+ this.eligible = true;
+ }
+
+ public ExprNodeGenericFuncDescContext() {
+ this.funcDesc = null;
+ this.eligible = false;
+ }
+
+ /**
+ * Check eligible before use the expr in CompoundPredicate for `and`
and `or` .
+ */
+ public boolean isEligible() {
+ return eligible;
+ }
+
+ public ExprNodeGenericFuncDesc getFuncDesc() {
+ return funcDesc;
+ }
+ }
+
+ private static ExprNodeGenericFuncDescContext
convertToHivePartitionExpr(Expr dorisExpr,
List<String> partitions, String tblName) throws DdlException {
if (dorisExpr == null) {
- return null;
+ return new ExprNodeGenericFuncDescContext();
}
if (dorisExpr instanceof CompoundPredicate) {
CompoundPredicate compoundPredicate = (CompoundPredicate)
dorisExpr;
switch (compoundPredicate.getOp()) {
case AND: {
- ExprNodeGenericFuncDesc left = convertToHivePartitionExpr(
- compoundPredicate.getChild(0), partitions,
tblName);
- ExprNodeGenericFuncDesc right = convertToHivePartitionExpr(
+ ExprNodeGenericFuncDescContext left =
convertToHivePartitionExpr(
compoundPredicate.getChild(0), partitions,
tblName);
- if (left != null && right != null) {
+ ExprNodeGenericFuncDescContext right =
convertToHivePartitionExpr(
+ compoundPredicate.getChild(1), partitions,
tblName);
+
+ if (left.isEligible() && right.isEligible()) {
List<ExprNodeDesc> andArgs = new ArrayList<>();
- andArgs.add(left);
- andArgs.add(right);
- return getCompoundExpr(andArgs, "and");
- } else if (left != null && right == null) {
+ andArgs.add(left.getFuncDesc());
+ andArgs.add(right.getFuncDesc());
+ return new
ExprNodeGenericFuncDescContext(getCompoundExpr(andArgs, "and"));
+ } else if (left.isEligible()) {
return left;
- } else if (left == null && right != null) {
+ } else if (right.isEligible()) {
return right;
+ } else {
+ return new ExprNodeGenericFuncDescContext();
}
- return null;
}
case OR: {
- ExprNodeGenericFuncDesc left = convertToHivePartitionExpr(
- compoundPredicate.getChild(0), partitions,
tblName);
- ExprNodeGenericFuncDesc right = convertToHivePartitionExpr(
+ ExprNodeGenericFuncDescContext left =
convertToHivePartitionExpr(
Review Comment:
```
ExprNodeGenericFuncDescContext left =
convertToHivePartitionExpr(
compoundPredicate.getChild(0), partitions,
tblName);
ExprNodeGenericFuncDescContext right =
convertToHivePartitionExpr(
compoundPredicate.getChild(1), partitions,
tblName);
```
This part can be extracted out of `switch case` block
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]