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]