You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2021/11/12 03:47:10 UTC
[incubator-doris] 05/09: [Bug] Fix bug that NPE thrown when adding
partition for table with MV (#7069)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-0.15
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git
commit aea87ca0444c01c7c1244a2084042eab9045c1d4
Author: Mingyu Chen <mo...@gmail.com>
AuthorDate: Thu Nov 11 15:43:16 2021 +0800
[Bug] Fix bug that NPE thrown when adding partition for table with MV (#7069)
The `defineExpr` in `Column` must be analyzed before calling its `treeToThrift` method.
And fro CreateReplicaTask, no need to set `defineExpr` in TColumn.
---
.../src/main/java/org/apache/doris/analysis/SlotRef.java | 1 +
.../src/main/java/org/apache/doris/catalog/Column.java | 16 ++++++++--------
.../org/apache/doris/catalog/MaterializedIndexMeta.java | 1 -
.../java/org/apache/doris/task/CreateRollupTask.java | 1 +
.../java/org/apache/doris/task/SchemaChangeTask.java | 1 +
5 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
index 006beff..e1995c5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
@@ -404,6 +404,7 @@ public class SlotRef extends Expr {
@Override
public boolean isNullable() {
+ Preconditions.checkNotNull(desc);
return desc.getIsNullable();
}
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java
index b875563..2e61df6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java
@@ -84,7 +84,7 @@ public class Column implements Writable {
private List<Column> children;
// Define expr may exist in two forms, one is analyzed, and the other is not analyzed.
// Currently, analyzed define expr is only used when creating materialized views, so the define expr in RollupJob must be analyzed.
- // In other cases, such as define expr in `MaterializedIndexMeta`, it may not be analyzed after being relayed.
+ // In other cases, such as define expr in `MaterializedIndexMeta`, it may not be analyzed after being replayed.
private Expr defineExpr; // use to define column in materialize view
@SerializedName(value = "visible")
private boolean visible;
@@ -344,13 +344,13 @@ public class Column implements Writable {
tColumn.setVisible(visible);
tColumn.setChildrenColumn(new ArrayList<>());
toChildrenThrift(this, tColumn);
-
- // The define expr does not need to be serialized here for now.
- // At present, only serialized(analyzed) define expr is directly used when creating a materialized view.
- // It will not be used here, but through another structure `TAlterMaterializedViewParam`.
- if (this.defineExpr != null) {
- tColumn.setDefineExpr(this.defineExpr.treeToThrift());
- }
+
+ // ATTN:
+ // Currently, this `toThrift()` method is only used from CreateReplicaTask.
+ // And CreateReplicaTask does not need `defineExpr` field.
+ // The `defineExpr` is only used when creating `TAlterMaterializedViewParam`, which is in `AlterReplicaTask`.
+ // And when creating `TAlterMaterializedViewParam`, the `defineExpr` is certainly analyzed.
+ // If we need to use `defineExpr` and call defineExpr.treeToThrift(), make sure it is analyzed, or NPE will thrown.
return tColumn;
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java
index 0e6712d..c236554 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java
@@ -58,7 +58,6 @@ public class MaterializedIndexMeta implements Writable, GsonPostProcessable {
@SerializedName(value = "keysType")
private KeysType keysType;
@SerializedName(value = "defineStmt")
-
private OriginStatement defineStmt;
public MaterializedIndexMeta(long indexId, List<Column> schema, int schemaVersion, int schemaHash,
diff --git a/fe/fe-core/src/main/java/org/apache/doris/task/CreateRollupTask.java b/fe/fe-core/src/main/java/org/apache/doris/task/CreateRollupTask.java
index 68d00cf..a4fb118 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/task/CreateRollupTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/task/CreateRollupTask.java
@@ -31,6 +31,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+@Deprecated
public class CreateRollupTask extends AgentTask {
private long baseTableId;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/task/SchemaChangeTask.java b/fe/fe-core/src/main/java/org/apache/doris/task/SchemaChangeTask.java
index 865330c..59616cc 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/task/SchemaChangeTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/task/SchemaChangeTask.java
@@ -31,6 +31,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+@Deprecated
public class SchemaChangeTask extends AgentTask {
private long baseReplicaId;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org