diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdParallelism.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdParallelism.java index 96ca5ec..4fa0bab 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdParallelism.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdParallelism.java @@ -17,6 +17,8 @@ */ package org.apache.hadoop.hive.ql.optimizer.calcite.stats; +import java.util.List; + import org.apache.calcite.rel.RelNode; import org.apache.calcite.rel.metadata.ReflectiveRelMetadataProvider; import org.apache.calcite.rel.metadata.RelMdParallelism; @@ -27,6 +29,7 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSort; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan; +import org.apache.hadoop.hive.ql.parse.HiveParser.tableBuckets_return; public class HiveRelMdParallelism extends RelMdParallelism { @@ -62,7 +65,12 @@ public Integer splitCount(HiveJoin join) { public Integer splitCount(HiveTableScan scan) { RelOptHiveTable table = (RelOptHiveTable) scan.getTable(); - return table.getHiveTableMD().getNumBuckets(); + List bucketCols = table.getHiveTableMD().getBucketCols(); + if (bucketCols != null && !bucketCols.isEmpty()) { + return table.getHiveTableMD().getNumBuckets(); + } else { + return splitCountRepartition(scan); + } } public Integer splitCount(RelNode rel) {