You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2025/11/08 12:43:56 UTC

(doris) branch branch-4.0 updated: branch-4.0: [opt](catalog) Reduce the memory footprint of Column #57401 (#57766)

This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new ae468f9150b branch-4.0: [opt](catalog) Reduce the memory footprint of Column #57401 (#57766)
ae468f9150b is described below

commit ae468f9150b5ba8e51808991f454c159361d48ba
Author: github-actions[bot] <41...@users.noreply.github.com>
AuthorDate: Sat Nov 8 20:43:50 2025 +0800

    branch-4.0: [opt](catalog) Reduce the memory footprint of Column #57401 (#57766)
    
    Cherry-picked from #57401
    
    Co-authored-by: morrySnow <zh...@selectdb.com>
---
 .../apache/doris/alter/SchemaChangeHandler.java    | 11 +--
 .../org/apache/doris/analysis/SlotDescriptor.java  |  6 +-
 .../main/java/org/apache/doris/catalog/Column.java | 78 ++++++++++++----------
 .../main/java/org/apache/doris/catalog/Env.java    |  3 +-
 .../java/org/apache/doris/catalog/OlapTable.java   | 28 ++++----
 .../apache/doris/datasource/hudi/HudiUtils.java    |  8 ++-
 .../doris/datasource/iceberg/IcebergUtils.java     |  8 ++-
 .../apache/doris/datasource/paimon/PaimonUtil.java |  3 +
 .../nereids/load/NereidsStreamLoadPlanner.java     |  3 +-
 .../trees/plans/commands/insert/InsertUtils.java   |  2 +-
 .../apache/doris/service/FrontendServiceImpl.java  |  2 +-
 .../doris/tablefunction/TableValuedFunctionIf.java |  2 +-
 .../info_schema_db/test_info_schema_db.out         | 12 ++--
 .../external_table_p0/tvf/test_tvf_view.groovy     | 36 +++++-----
 14 files changed, 110 insertions(+), 92 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java
index 8ceb3a01def..3450639f609 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java
@@ -116,6 +116,7 @@ import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -392,11 +393,10 @@ public class SchemaChangeHandler extends AlterHandler {
         if (null == targetIndexName) {
             if (nameToColumn.containsKey(dropColName)) {
                 Column column = nameToColumn.get(dropColName);
-                Set<String> generatedColumnsThatReferToThis = column.getGeneratedColumnsThatReferToThis();
-                if (!generatedColumnsThatReferToThis.isEmpty()) {
+                if (CollectionUtils.isNotEmpty(column.getGeneratedColumnsThatReferToThis())) {
                     throw new DdlException(
                             "Column '" + dropColName + "' has a generated column dependency on :"
-                                    + generatedColumnsThatReferToThis);
+                                    + column.getGeneratedColumnsThatReferToThis());
                 }
             }
         }
@@ -3474,8 +3474,9 @@ public class SchemaChangeHandler extends AlterHandler {
                 continue;
             }
             Column c = nameToColumn.get(name);
-            Set<String> sets = c.getGeneratedColumnsThatReferToThis();
-            sets.remove(dropColName);
+            if (CollectionUtils.isNotEmpty(c.getGeneratedColumnsThatReferToThis())) {
+                c.getGeneratedColumnsThatReferToThis().remove(dropColName);
+            }
         }
     }
 
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotDescriptor.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotDescriptor.java
index 58e1073e879..085ee629ee2 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotDescriptor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotDescriptor.java
@@ -224,11 +224,7 @@ public class SlotDescriptor {
 
     public ColumnStats getStats() {
         if (stats == null) {
-            if (column != null) {
-                stats = column.getStats();
-            } else {
-                stats = new ColumnStats();
-            }
+            stats = new ColumnStats();
         }
         // FIXME(dhc): mock ndv
         stats.setNumDistinctValues((long) parent.getCardinality());
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 3127fc17b49..8b5596bda97 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
@@ -42,6 +42,7 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import com.google.gson.annotations.SerializedName;
 import com.google.protobuf.ByteString;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -109,8 +110,6 @@ public class Column implements GsonPostProcessable {
     private String defaultValue;
     @SerializedName(value = "comment")
     private String comment;
-    @SerializedName(value = "stats")
-    private ColumnStats stats;     // cardinality and selectivity etc.
     @SerializedName(value = "children")
     private List<Column> children;
     /**
@@ -152,7 +151,7 @@ public class Column implements GsonPostProcessable {
     private GeneratedColumnInfo generatedColumnInfo;
 
     @SerializedName(value = "gctt")
-    private Set<String> generatedColumnsThatReferToThis = new HashSet<>();
+    private Set<String> generatedColumnsThatReferToThis;
 
     // used for variant sub-field pattern type
     @SerializedName(value = "fpt")
@@ -168,10 +167,9 @@ public class Column implements GsonPostProcessable {
         this.type = Type.NULL;
         this.isAggregationTypeImplicit = false;
         this.isKey = false;
-        this.stats = new ColumnStats();
         this.visible = true;
         this.defineExpr = null;
-        this.children = new ArrayList<>();
+        this.children = null;
         this.uniqueId = -1;
     }
 
@@ -261,16 +259,17 @@ public class Column implements GsonPostProcessable {
         this.defaultValue = defaultValue;
         this.realDefaultValue = realDefaultValue;
         this.defaultValueExprDef = defaultValueExprDef;
-        this.comment = comment;
-        this.stats = new ColumnStats();
+        this.comment = StringUtils.isBlank(comment) ? null : comment;
         this.visible = visible;
-        this.children = new ArrayList<>();
+        this.children = null;
         createChildrenColumn(this.type, this);
         this.uniqueId = colUniqueId;
         this.hasOnUpdateDefaultValue = hasOnUpdateDefaultValue;
         this.onUpdateDefaultValueExprDef = onUpdateDefaultValueExprDef;
         this.generatedColumnInfo = generatedColumnInfo;
-        this.generatedColumnsThatReferToThis.addAll(generatedColumnsThatReferToThis);
+        if (CollectionUtils.isNotEmpty(generatedColumnsThatReferToThis)) {
+            this.generatedColumnsThatReferToThis = new HashSet<>(generatedColumnsThatReferToThis);
+        }
 
         if (type.isAggStateType()) {
             AggStateType aggState = (AggStateType) type;
@@ -320,7 +319,6 @@ public class Column implements GsonPostProcessable {
         this.realDefaultValue = column.realDefaultValue;
         this.defaultValueExprDef = column.defaultValueExprDef;
         this.comment = column.getComment();
-        this.stats = column.getStats();
         this.visible = column.visible;
         this.children = column.getChildren();
         this.uniqueId = column.getUniqueId();
@@ -369,6 +367,9 @@ public class Column implements GsonPostProcessable {
     }
 
     private void addChildrenColumn(Column column) {
+        if (this.children == null) {
+            this.children = Lists.newArrayListWithExpectedSize(2);
+        }
         this.children.add(column);
     }
 
@@ -573,17 +574,8 @@ public class Column implements GsonPostProcessable {
         return result;
     }
 
-
-    public void setStats(ColumnStats stats) {
-        this.stats = stats;
-    }
-
-    public ColumnStats getStats() {
-        return this.stats;
-    }
-
     public void setComment(String comment) {
-        this.comment = comment;
+        this.comment = StringUtils.isBlank(comment) ? null : comment;
     }
 
     public String getComment() {
@@ -591,6 +583,7 @@ public class Column implements GsonPostProcessable {
     }
 
     public String getComment(boolean escapeQuota) {
+        String comment = this.comment == null ? "" : this.comment;
         if (!escapeQuota) {
             return comment;
         }
@@ -649,8 +642,10 @@ public class Column implements GsonPostProcessable {
             AggStateType aggState = (AggStateType) type;
             tColumn.setAggregation(aggState.getFunctionName());
             tColumn.setResultIsNullable(aggState.getResultIsNullable());
-            for (Column column : children) {
-                tColumn.addToChildrenColumn(column.toThrift());
+            if (children != null) {
+                for (Column column : children) {
+                    tColumn.addToChildrenColumn(column.toThrift());
+                }
             }
             tColumn.setBeExecVersion(Config.be_exec_version);
         }
@@ -697,17 +692,21 @@ public class Column implements GsonPostProcessable {
     }
 
     private void addChildren(Column column, TColumn tColumn) {
-        List<Column> childrenColumns = column.getChildren();
-        tColumn.setChildrenColumn(new ArrayList<>());
-        for (Column c : childrenColumns) {
-            setChildrenTColumn(c, tColumn);
+        if (column.getChildren() != null) {
+            List<Column> childrenColumns = column.getChildren();
+            tColumn.setChildrenColumn(new ArrayList<>());
+            for (Column c : childrenColumns) {
+                setChildrenTColumn(c, tColumn);
+            }
         }
     }
 
     private void addChildren(OlapFile.ColumnPB.Builder builder) throws DdlException {
-        List<Column> childrenColumns = this.getChildren();
-        for (Column c : childrenColumns) {
-            builder.addChildrenColumns(c.toPb(Sets.newHashSet(), Lists.newArrayList()));
+        if (this.getChildren() != null) {
+            List<Column> childrenColumns = this.getChildren();
+            for (Column c : childrenColumns) {
+                builder.addChildrenColumns(c.toPb(Sets.newHashSet(), Lists.newArrayList()));
+            }
         }
     }
 
@@ -825,8 +824,10 @@ public class Column implements GsonPostProcessable {
                 builder.setAggregation(aggState.getFunctionName());
                 builder.setResultIsNullable(aggState.getResultIsNullable());
                 builder.setBeExecVersion(Config.be_exec_version);
-                for (Column column : children) {
-                    builder.addChildrenColumns(column.toPb(Sets.newHashSet(), Lists.newArrayList()));
+                if (children != null) {
+                    for (Column column : children) {
+                        builder.addChildrenColumns(column.toPb(Sets.newHashSet(), Lists.newArrayList()));
+                    }
                 }
             } else {
                 builder.setAggregation(this.aggregationType.toString());
@@ -969,7 +970,7 @@ public class Column implements GsonPostProcessable {
             if (this.getVariantSparseHashShardCount() != other.getVariantSparseHashShardCount()) {
                 throw new DdlException("Can not change variant sparse bucket num");
             }
-            if (!this.getChildren().isEmpty() || !other.getChildren().isEmpty()) {
+            if (CollectionUtils.isNotEmpty(this.getChildren()) || CollectionUtils.isNotEmpty(other.getChildren())) {
                 throw new DdlException("Can not change variant schema templates");
             }
         }
@@ -1102,7 +1103,7 @@ public class Column implements GsonPostProcessable {
     @Override
     public int hashCode() {
         return Objects.hash(name, getDataType(), getStrLen(), getPrecision(), getScale(), aggregationType,
-                isAggregationTypeImplicit, isKey, isAllowNull, isAutoInc, defaultValue, comment, children, visible,
+                isAggregationTypeImplicit, isKey, isAllowNull, isAutoInc, defaultValue, getComment(), children, visible,
                 realDefaultValue, clusterKeyId);
     }
 
@@ -1125,7 +1126,7 @@ public class Column implements GsonPostProcessable {
                 && isAllowNull == other.isAllowNull
                 && isAutoInc == other.isAutoInc
                 && Objects.equals(type, other.type)
-                && Objects.equals(comment, other.comment)
+                && Objects.equals(getComment(), other.getComment())
                 && visible == other.visible
                 && Objects.equals(children, other.children)
                 && Objects.equals(realDefaultValue, other.realDefaultValue)
@@ -1262,6 +1263,15 @@ public class Column implements GsonPostProcessable {
                 && type.getLength() != ScalarType.MAX_STRING_LENGTH) {
             ((ScalarType) type).setLength(ScalarType.MAX_STRING_LENGTH);
         }
+        if (CollectionUtils.isEmpty(generatedColumnsThatReferToThis)) {
+            generatedColumnsThatReferToThis = null;
+        }
+        if (StringUtils.isBlank(comment)) {
+            comment = null;
+        }
+        if (CollectionUtils.isEmpty(children)) {
+            children = null;
+        }
     }
 
     public boolean isMaterializedViewColumn() {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
index f33979ad422..69fc28b4dc9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
@@ -5746,7 +5746,8 @@ public class Env {
             // check if have materialized view on rename column
             // and check whether colName is referenced by generated columns
             for (Column column : entry.getValue().getSchema()) {
-                if (column.getName().equals(colName) && !column.getGeneratedColumnsThatReferToThis().isEmpty()) {
+                if (column.getName().equals(colName)
+                        && CollectionUtils.isNotEmpty(column.getGeneratedColumnsThatReferToThis())) {
                     throw new DdlException(
                             "Cannot rename column, because column '" + colName
                                     + "' has a generated column dependency on :"
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
index a465f2f6c9b..d239b31d981 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
@@ -3638,21 +3638,23 @@ public class OlapTable extends Table implements MTMVRelatedTableIf, GsonPostProc
         // subPath is not empty, means it is a variant column, find the field pattern from children
         String subPathString = String.join(".", subPath);
         String fieldPattern = "";
-        for (Column child : column.getChildren()) {
-            String childName = child.getName();
-            if (child.getFieldPatternType() == TPatternType.MATCH_NAME_GLOB) {
-                try {
-                    java.nio.file.PathMatcher matcher = java.nio.file.FileSystems.getDefault()
-                            .getPathMatcher("glob:" + childName);
-                    if (matcher.matches(java.nio.file.Paths.get(subPathString))) {
+        if (column.getChildren() != null) {
+            for (Column child : column.getChildren()) {
+                String childName = child.getName();
+                if (child.getFieldPatternType() == TPatternType.MATCH_NAME_GLOB) {
+                    try {
+                        java.nio.file.PathMatcher matcher = java.nio.file.FileSystems.getDefault()
+                                .getPathMatcher("glob:" + childName);
+                        if (matcher.matches(java.nio.file.Paths.get(subPathString))) {
+                            fieldPattern = childName;
+                        }
+                    } catch (Exception e) {
+                        continue;
+                    }
+                } else if (child.getFieldPatternType() == TPatternType.MATCH_NAME) {
+                    if (childName.equals(subPathString)) {
                         fieldPattern = childName;
                     }
-                } catch (Exception e) {
-                    continue;
-                }
-            } else if (child.getFieldPatternType() == TPatternType.MATCH_NAME) {
-                if (childName.equals(subPathString)) {
-                    fieldPattern = childName;
                 }
             }
         }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/hudi/HudiUtils.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/hudi/HudiUtils.java
index d153d62de7a..a7f9c3d09bd 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/hudi/HudiUtils.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/hudi/HudiUtils.java
@@ -158,9 +158,11 @@ public class HudiUtils {
                 return;
         }
 
-        List<Column> childColumns = column.getChildren();
-        for (int idx = 0; idx < childColumns.size(); idx++) {
-            updateHudiColumnUniqueId(childColumns.get(idx), hudiInternalfields.get(idx));
+        if (column.getChildren() != null) {
+            List<Column> childColumns = column.getChildren();
+            for (int idx = 0; idx < childColumns.size(); idx++) {
+                updateHudiColumnUniqueId(childColumns.get(idx), hudiInternalfields.get(idx));
+            }
         }
     }
 
diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergUtils.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergUtils.java
index 64d333288f4..3b0dbd3c615 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergUtils.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergUtils.java
@@ -778,9 +778,11 @@ public class IcebergUtils {
                 return;
         }
 
-        List<Column> childColumns = column.getChildren();
-        for (int idx = 0; idx < childColumns.size(); idx++) {
-            updateIcebergColumnUniqueId(childColumns.get(idx), icebergFields.get(idx));
+        if (column.getChildren() != null) {
+            List<Column> childColumns = column.getChildren();
+            for (int idx = 0; idx < childColumns.size(); idx++) {
+                updateIcebergColumnUniqueId(childColumns.get(idx), icebergFields.get(idx));
+            }
         }
     }
 
diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonUtil.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonUtil.java
index 16a9c5c5b43..6d2bfc88bae 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonUtil.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonUtil.java
@@ -280,6 +280,9 @@ public class PaimonUtil {
 
     public static void updatePaimonColumnUniqueId(Column column, DataType dataType) {
         List<Column> columns = column.getChildren();
+        if (columns == null) {
+            return;
+        }
         switch (dataType.getTypeRoot()) {
             case ARRAY:
                 ArrayType arrayType = (ArrayType) dataType;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsStreamLoadPlanner.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsStreamLoadPlanner.java
index 81c99d8c9d9..09fba057a91 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsStreamLoadPlanner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsStreamLoadPlanner.java
@@ -56,6 +56,7 @@ import org.apache.doris.thrift.TUniqueKeyUpdateMode;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -191,7 +192,7 @@ public class NereidsStreamLoadPlanner {
                     }
                 }
 
-                if (!col.getGeneratedColumnsThatReferToThis().isEmpty()
+                if (CollectionUtils.isNotEmpty(col.getGeneratedColumnsThatReferToThis())
                         && col.getGeneratedColumnInfo() == null && !existInExpr) {
                     throw new UserException("Partial update should include"
                             + " all ordinary columns referenced"
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertUtils.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertUtils.java
index 0d219f43c3d..5549e4ee662 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertUtils.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertUtils.java
@@ -322,7 +322,7 @@ public class InsertUtils {
                                     throw new AnalysisException("Partial update should include all key columns,"
                                             + " missing: " + col.getName());
                                 }
-                                if (!col.getGeneratedColumnsThatReferToThis().isEmpty()
+                                if (CollectionUtils.isNotEmpty(col.getGeneratedColumnsThatReferToThis())
                                         && col.getGeneratedColumnInfo() == null && !insertCol.isPresent()) {
                                     throw new AnalysisException("Partial update should include"
                                             + " all ordinary columns referenced"
diff --git a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java
index c12e4eddedf..1d666e8dce0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java
@@ -950,7 +950,7 @@ public class FrontendServiceImpl implements FrontendService.Iface {
             desc.setColumnScale(decimalDigits);
         }
         desc.setIsAllowNull(column.isAllowNull());
-        if (column.getChildren().size() > 0) {
+        if (CollectionUtils.isNotEmpty(column.getChildren())) {
             ArrayList<TColumnDesc> children = new ArrayList<>();
             for (Column child : column.getChildren()) {
                 children.add(getColumnDesc(child));
diff --git a/fe/fe-core/src/main/java/org/apache/doris/tablefunction/TableValuedFunctionIf.java b/fe/fe-core/src/main/java/org/apache/doris/tablefunction/TableValuedFunctionIf.java
index 2771189329c..65b187f3830 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/tablefunction/TableValuedFunctionIf.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/tablefunction/TableValuedFunctionIf.java
@@ -32,7 +32,7 @@ import java.util.Map;
 
 public abstract class TableValuedFunctionIf {
     private FunctionGenTable table = null;
-    public static final String TVF_TABLE_PREFIX = "_table_valued_function_";
+    public static final String TVF_TABLE_PREFIX = "_tvf_";
 
     public FunctionGenTable getTable() throws AnalysisException {
         if (table == null) {
diff --git a/regression-test/data/external_table_p0/info_schema_db/test_info_schema_db.out b/regression-test/data/external_table_p0/info_schema_db/test_info_schema_db.out
index 6639a812e83..452d241e2b2 100644
--- a/regression-test/data/external_table_p0/info_schema_db/test_info_schema_db.out
+++ b/regression-test/data/external_table_p0/info_schema_db/test_info_schema_db.out
@@ -43,12 +43,12 @@ addr	varchar(50)	YES	YES	\N
 phone	varchar(50)	YES	YES	\N	
 
 -- !sql22 --
-id	varchar(50)		YES	YES	\N			\N
-name	varchar(50)		YES	YES	\N			\N
-age	int		YES	YES	\N			\N
-gender	varchar(50)		YES	YES	\N			\N
-addr	varchar(50)		YES	YES	\N			\N
-phone	varchar(50)		YES	YES	\N			\N
+id	varchar(50)		YES	YES	\N			
+name	varchar(50)		YES	YES	\N			
+age	int		YES	YES	\N			
+gender	varchar(50)		YES	YES	\N			
+addr	varchar(50)		YES	YES	\N			
+phone	varchar(50)		YES	YES	\N			
 
 -- !sql23 --
 id	varchar	\N	YES		\N			
diff --git a/regression-test/suites/external_table_p0/tvf/test_tvf_view.groovy b/regression-test/suites/external_table_p0/tvf/test_tvf_view.groovy
index 0a59397bab4..56a010e1404 100644
--- a/regression-test/suites/external_table_p0/tvf/test_tvf_view.groovy
+++ b/regression-test/suites/external_table_p0/tvf/test_tvf_view.groovy
@@ -35,15 +35,15 @@ suite("test_tvf_view", "p0,external,tvf,external_docker,hive") {
         qt_3 """select p_partkey from tvf_view order by p_partkey limit 10"""
         explain{
             sql("select * from tvf_view")
-            contains("_table_valued_function_hdfs.p_partkey")
-            contains("_table_valued_function_hdfs.p_name")
-            contains("_table_valued_function_hdfs.p_mfgr")
-            contains("_table_valued_function_hdfs.p_brand")
-            contains("_table_valued_function_hdfs.p_type")
-            contains("_table_valued_function_hdfs.p_size")
-            contains("_table_valued_function_hdfs.p_container")
-            contains("_table_valued_function_hdfs.p_retailprice")
-            contains("_table_valued_function_hdfs.p_comment")
+            contains("_tvf_hdfs.p_partkey")
+            contains("_tvf_hdfs.p_name")
+            contains("_tvf_hdfs.p_mfgr")
+            contains("_tvf_hdfs.p_brand")
+            contains("_tvf_hdfs.p_type")
+            contains("_tvf_hdfs.p_size")
+            contains("_tvf_hdfs.p_container")
+            contains("_tvf_hdfs.p_retailprice")
+            contains("_tvf_hdfs.p_comment")
             contains("table: null.null.HDFSTableValuedFunction")
         }
         explain{
@@ -51,15 +51,15 @@ suite("test_tvf_view", "p0,external,tvf,external_docker,hive") {
                     "  \"uri\"=\"hdfs://${nameNodeHost}:${hdfsPort}/user/doris/tpch1.db/tpch1_parquet/part/part-00000-cb9099f7-a053-4f9a-80af-c659cfa947cc-c000.snappy.parquet\",\n" +
                     "  \"hadoop.username\" = \"hadoop\",\n" +
                     "  \"format\"=\"parquet\")")
-            contains("_table_valued_function_hdfs.p_partkey")
-            contains("_table_valued_function_hdfs.p_name")
-            contains("_table_valued_function_hdfs.p_mfgr")
-            contains("_table_valued_function_hdfs.p_brand")
-            contains("_table_valued_function_hdfs.p_type")
-            contains("_table_valued_function_hdfs.p_size")
-            contains("_table_valued_function_hdfs.p_container")
-            contains("_table_valued_function_hdfs.p_retailprice")
-            contains("_table_valued_function_hdfs.p_comment")
+            contains("_tvf_hdfs.p_partkey")
+            contains("_tvf_hdfs.p_name")
+            contains("_tvf_hdfs.p_mfgr")
+            contains("_tvf_hdfs.p_brand")
+            contains("_tvf_hdfs.p_type")
+            contains("_tvf_hdfs.p_size")
+            contains("_tvf_hdfs.p_container")
+            contains("_tvf_hdfs.p_retailprice")
+            contains("_tvf_hdfs.p_comment")
         }
 
         sql """create view tvf_view_count as select * from hdfs (


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org