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

morrysnow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


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

commit 7adc3be15ae6373eb3310716055e032fa8182b14
Author: morrySnow <[email protected]>
AuthorDate: Thu Nov 6 19:27:54 2025 +0800

    [opt](catalog) Reduce the memory footprint of Column (#57401)
    
    remove useless colstat and let empty attribute to be null to reduce the
    memory footprint of Column
---
 .../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 87843f721c9..827c807c964 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
@@ -228,11 +228,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 335c807e745..6f46a4876dc 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
@@ -40,6 +40,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;
@@ -107,8 +108,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;
     /**
@@ -150,7 +149,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")
@@ -166,10 +165,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;
     }
 
@@ -259,16 +257,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;
@@ -318,7 +317,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();
@@ -367,6 +365,9 @@ public class Column implements GsonPostProcessable {
     }
 
     private void addChildrenColumn(Column column) {
+        if (this.children == null) {
+            this.children = Lists.newArrayListWithExpectedSize(2);
+        }
         this.children.add(column);
     }
 
@@ -569,17 +570,8 @@ public class Column implements GsonPostProcessable {
         }
     }
 
-
-    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() {
@@ -587,6 +579,7 @@ public class Column implements GsonPostProcessable {
     }
 
     public String getComment(boolean escapeQuota) {
+        String comment = this.comment == null ? "" : this.comment;
         if (!escapeQuota) {
             return comment;
         }
@@ -645,8 +638,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);
         }
@@ -693,17 +688,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()));
+            }
         }
     }
 
@@ -821,8 +820,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());
@@ -965,7 +966,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");
             }
         }
@@ -1098,7 +1099,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);
     }
 
@@ -1121,7 +1122,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)
@@ -1258,6 +1259,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 52081150681..c7ea194e190 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
@@ -5745,7 +5745,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 160506c7bff..87141d02e92 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
@@ -3642,21 +3642,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 ea01e72080c..cb6b029ce2e 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 7b712c2eda9..83636931add 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
@@ -323,7 +323,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 d2eb49be3dd..bb17eefec7e 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
@@ -948,7 +948,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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to