This is an automated email from the ASF dual-hosted git repository.
zouxinyi pushed a commit to branch branch-2.0-var
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0-var by this push:
new 1cdeb41191f [branch-2.0-var](sample) Fix computeSampleTabletIds
NullPointerException (#26434)
1cdeb41191f is described below
commit 1cdeb41191f309fd05f34388c0ea2b1af187f933
Author: Xinyi Zou <[email protected]>
AuthorDate: Tue Nov 14 11:56:43 2023 +0800
[branch-2.0-var](sample) Fix computeSampleTabletIds NullPointerException
(#26434)
```
2023-11-05 22:52:01,914 WARN (mysql-nio-pool-167|1655)
[StmtExecutor.analyze():992] Analyze failed. stmt[222101,
ec1adf0f9f7b405d-8cb71a522bc50b82]
java.lang.NullPointerException: null
at
org.apache.doris.planner.OlapScanNode.computeSampleTabletIds(OlapScanNode.java:952)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.planner.OlapScanNode.init(OlapScanNode.java:548)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.planner.SingleNodePlanner.createScanNode(SingleNodePlanner.java:2064)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.planner.SingleNodePlanner.createTableRefNode(SingleNodePlanner.java:2213)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.planner.SingleNodePlanner.createSelectPlan(SingleNodePlanner.java:1244)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.planner.SingleNodePlanner.createQueryPlan(SingleNodePlanner.java:266)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.planner.SingleNodePlanner.createSingleNodePlan(SingleNodePlanner.java:189)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.planner.OriginalPlanner.createPlanFragments(OriginalPlanner.java:160)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.planner.OriginalPlanner.plan(OriginalPlanner.java:101)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.qe.StmtExecutor.analyzeAndGenerateQueryPlan(StmtExecutor.java:1141)
~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.analyze(StmtExecutor.java:975)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.qe.StmtExecutor.executeByLegacy(StmtExecutor.java:673)
~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:451)
~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:422)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:435)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.qe.ConnectProcessor.dispatch(ConnectProcessor.java:583)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.qe.ConnectProcessor.processOnce(ConnectProcessor.java:834)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52)
~[doris-fe.jar:1.2-SNAPSHOT]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
~[?:1.8.0_333]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
~[?:1.8.0_333]
at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_333]
2023-11-05 22:52:01,914 WARN (mysql-nio-pool-167|1655)
[StmtExecutor.executeByLegacy():776] execute Exception. stmt[222101,
ec1adf0f9f7b405d-8cb71a522bc50b82]
org.apache.doris.common.AnalysisException: errCode = 2, detailMessage =
Unexpected exception: null
at org.apache.doris.qe.StmtExecutor.analyze(StmtExecutor.java:993)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.qe.StmtExecutor.executeByLegacy(StmtExecutor.java:673)
~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:451)
~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:422)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:435)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.qe.ConnectProcessor.dispatch(ConnectProcessor.java:583)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.qe.ConnectProcessor.processOnce(ConnectProcessor.java:834)
~[doris-fe.jar:1.2-SNAPSHOT]
at
org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52)
~[doris-fe.jar:1.2-SNAPSHOT]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
~[?:1.8.0_333]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
~[?:1.8.0_333]
at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_333]
```
---
.../src/main/java/org/apache/doris/planner/OlapScanNode.java | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java
b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java
index 7e6d81db793..11ed56f1f86 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java
@@ -948,9 +948,13 @@ public class OlapScanNode extends ScanNode {
}
for (Long partitionId : selectedPartitionIds) {
final Partition partition = olapTable.getPartition(partitionId);
- final MaterializedIndex selectedTable =
partition.getIndex(selectedIndexId);
- selectedRows += selectedTable.getRowCount();
- selectedPartitionList.add(partitionId);
+ final MaterializedIndex selectedIndex =
partition.getIndex(selectedIndexId);
+ // selectedIndex is not expected to be null, because
MaterializedIndex ids in one rollup's partitions
+ // are all same. skip this partition here.
+ if (selectedIndex != null) {
+ selectedRows += selectedIndex.getRowCount();
+ selectedPartitionList.add(partitionId);
+ }
}
selectedPartitionList.sort(Comparator.naturalOrder());
@@ -970,7 +974,7 @@ public class OlapScanNode extends ScanNode {
// 3. Sampling partition. If Seek is specified, the partition will be
the same for each sampling.
long hitRows = 0; // The number of rows hit by the tablet
long partitionSeek = tableSample.getSeek() != -1
- ? tableSample.getSeek() : (long) (new
SecureRandom().nextDouble() * selectedPartitionIds.size());
+ ? tableSample.getSeek() : (long) (new
SecureRandom().nextDouble() * selectedPartitionList.size());
for (int i = 0; i < selectedPartitionList.size(); i++) {
int seekPid = (int) ((i + partitionSeek) %
selectedPartitionList.size());
final Partition partition =
olapTable.getPartition(selectedPartitionList.get(seekPid));
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]