This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-1.2-lts in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-1.2-lts by this push: new 666d3f5b06 [fix](catalog) wrong required slot info causing BE crash. (#21702) 666d3f5b06 is described below commit 666d3f5b06751bc3cd811f82dc4246acf7833fcb Author: Qi Chen <kaka11.c...@gmail.com> AuthorDate: Wed Jul 12 09:33:17 2023 +0800 [fix](catalog) wrong required slot info causing BE crash. (#21702) Merge #21598 to branch-1.2-lts. Co-Authored-By: morningman morning...@163.com --- .../apache/doris/datasource/hive/HiveMetaStoreCache.java | 2 +- .../doris/planner/external/ExternalFileScanNode.java | 1 + .../apache/doris/planner/external/HiveScanProvider.java | 15 ++++++++++++++- .../hive/test_external_catalog_hive.out | 3 +++ .../hive/test_external_catalog_hive.groovy | 2 ++ 5 files changed, 21 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java index 778fb10262..169ed3727b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java @@ -701,7 +701,7 @@ public class HiveMetaStoreCache { return dummyKey.equals(((FileCacheKey) obj).dummyKey); } return location.equals(((FileCacheKey) obj).location) - && partitionValues.equals(((FileCacheKey) obj).partitionValues); + && Objects.equals(partitionValues, ((FileCacheKey) obj).partitionValues); } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/external/ExternalFileScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/external/ExternalFileScanNode.java index 1aadb1e5c6..c94305233f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/external/ExternalFileScanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/external/ExternalFileScanNode.java @@ -353,6 +353,7 @@ public class ExternalFileScanNode extends ExternalScanNode { if (scanProvider instanceof HiveScanProvider) { this.totalPartitionNum = ((HiveScanProvider) scanProvider).getTotalPartitionNum(); this.readPartitionNum = ((HiveScanProvider) scanProvider).getReadPartitionNum(); + ((HiveScanProvider) scanProvider).updateRequiredSlots(context); } } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/external/HiveScanProvider.java b/fe/fe-core/src/main/java/org/apache/doris/planner/external/HiveScanProvider.java index 845d62f92c..94d50ebd45 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/external/HiveScanProvider.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/external/HiveScanProvider.java @@ -258,6 +258,19 @@ public class HiveScanProvider extends HMSTableScanProvider { List<String> partitionKeys = getPathPartitionKeys(); List<Column> columns = hmsTable.getBaseSchema(false); context.params.setNumOfColumnsFromFile(columns.size() - partitionKeys.size()); + updateRequiredSlots(context); + return context; + } + + public void updateRequiredSlots(ParamCreateContext context) throws UserException { + updateRequiredSlots(context, null); + } + + public void updateRequiredSlots(ParamCreateContext context, List<String> partitionKeys) throws UserException { + context.params.unsetRequiredSlots(); + if (partitionKeys == null) { + partitionKeys = getPathPartitionKeys(); + } for (SlotDescriptor slot : desc.getSlots()) { if (!slot.isMaterialized()) { continue; @@ -268,9 +281,9 @@ public class HiveScanProvider extends HMSTableScanProvider { slotInfo.setIsFileSlot(!partitionKeys.contains(slot.getColumn().getName())); context.params.addToRequiredSlots(slotInfo); } - return context; } + @Override public TFileAttributes getFileAttributes() throws UserException { TFileTextScanRangeParams textParams = new TFileTextScanRangeParams(); diff --git a/regression-test/data/external_table_emr_p2/hive/test_external_catalog_hive.out b/regression-test/data/external_table_emr_p2/hive/test_external_catalog_hive.out index b7a66d44d4..54dc2d9a40 100644 --- a/regression-test/data/external_table_emr_p2/hive/test_external_catalog_hive.out +++ b/regression-test/data/external_table_emr_p2/hive/test_external_catalog_hive.out @@ -93,3 +93,6 @@ moccasin steel bisque cornsilk lace -- !q25 -- Z6n2t4XA2n7CXTECJ,PE,iBbsCh0RE1Dd2A,z48 +-- !pr21598 -- +5 + diff --git a/regression-test/suites/external_table_emr_p2/hive/test_external_catalog_hive.groovy b/regression-test/suites/external_table_emr_p2/hive/test_external_catalog_hive.groovy index 10bcea354e..ca445dbcda 100644 --- a/regression-test/suites/external_table_emr_p2/hive/test_external_catalog_hive.groovy +++ b/regression-test/suites/external_table_emr_p2/hive/test_external_catalog_hive.groovy @@ -87,6 +87,8 @@ suite("test_external_catalog_hive", "p2") { sql """ use tpch_1000_orc; """ q03() + // test #21598 + qt_pr21598 """select count(*) from( (SELECT r_regionkey AS key1, r_name AS name, pday AS pday FROM (SELECT r_regionkey, r_name, replace(r_comment, ' ', 'aaaa') AS pday FROM ${catalog_name}.tpch_1000_parquet.region) t2))x;""" // test remember last used database after switch / rename catalog sql """switch ${catalog_name};""" --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org