This is an automated email from the ASF dual-hosted git repository.
starocean999 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 f7e591b3507 [Enhancement](nereids) optimize legacy partitions (#56132)
f7e591b3507 is described below
commit f7e591b3507da062b1332dfe1a7c397249ae1de9
Author: yaoxiao <[email protected]>
AuthorDate: Thu Sep 18 10:28:10 2025 +0800
[Enhancement](nereids) optimize legacy partitions (#56132)
---
.../apache/doris/alter/SchemaChangeHandler.java | 4 ++--
.../apache/doris/analysis/BuildIndexClause.java | 7 +++---
.../java/org/apache/doris/analysis/IndexDef.java | 16 ++++++-------
.../doris/analysis/ReplacePartitionClause.java | 13 ++++++-----
.../main/java/org/apache/doris/catalog/Env.java | 3 +--
.../org/apache/doris/datasource/CatalogIf.java | 6 ++---
.../apache/doris/datasource/ExternalCatalog.java | 10 ++++-----
.../apache/doris/datasource/InternalCatalog.java | 14 ++++++------
.../iceberg/IcebergDLFExternalCatalog.java | 6 ++---
.../doris/insertoverwrite/InsertOverwriteUtil.java | 6 ++---
.../trees/plans/commands/info/IndexDefinition.java | 3 +--
.../plans/commands/info/ReplacePartitionOp.java | 3 +--
.../apache/doris/service/FrontendServiceImpl.java | 4 ++--
.../apache/doris/statistics/AnalysisManager.java | 26 +++++++++-------------
.../doris/statistics/AnalysisManagerTest.java | 4 ++--
15 files changed, 59 insertions(+), 66 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 64bb48a1981..09db668a3ad 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
@@ -2135,11 +2135,11 @@ public class SchemaChangeHandler extends AlterHandler {
}
}
- if (indexDef.getPartitionNames().isEmpty()) {
+ if (indexDef.getPartitionNamesInfo().isEmpty()) {
indexOnPartitions.put(index.getIndexId(),
olapTable.getPartitionNames());
} else {
indexOnPartitions.put(
- index.getIndexId(), new
HashSet<>(indexDef.getPartitionNames()));
+ index.getIndexId(), new
HashSet<>(indexDef.getPartitionNamesInfo()));
}
alterIndexes.add(index);
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/BuildIndexClause.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/BuildIndexClause.java
index 0d143a06375..6692e9c0153 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/BuildIndexClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/BuildIndexClause.java
@@ -27,6 +27,7 @@ import org.apache.doris.catalog.Table;
import org.apache.doris.catalog.TableIf;
import org.apache.doris.common.AnalysisException;
import org.apache.doris.common.Config;
+import org.apache.doris.nereids.trees.plans.commands.info.PartitionNamesInfo;
import com.google.common.collect.Maps;
@@ -44,9 +45,9 @@ public class BuildIndexClause extends AlterTableClause {
// index internal class
private Index index;
private String indexName;
- private PartitionNames partitionNames;
+ private PartitionNamesInfo partitionNames;
- public BuildIndexClause(TableName tableName, String indexName,
PartitionNames partitionNames, boolean alter) {
+ public BuildIndexClause(TableName tableName, String indexName,
PartitionNamesInfo partitionNames, boolean alter) {
super(AlterOpType.SCHEMA_CHANGE);
this.tableName = tableName;
this.indexName = indexName;
@@ -125,7 +126,7 @@ public class BuildIndexClause extends AlterTableClause {
}
indexDef = new IndexDef(indexName, partitionNames, indexType, true);
if (!table.isPartitionedTable()) {
- List<String> specifiedPartitions = indexDef.getPartitionNames();
+ List<String> specifiedPartitions =
indexDef.getPartitionNamesInfo();
if (!specifiedPartitions.isEmpty()) {
throw new AnalysisException("table " + table.getName()
+ " is not partitioned, cannot build index with
partitions.");
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java
index 852a5b2fb30..7764299c295 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/IndexDef.java
@@ -25,6 +25,7 @@ import org.apache.doris.catalog.Type;
import org.apache.doris.common.AnalysisException;
import org.apache.doris.common.Config;
import org.apache.doris.common.util.SqlUtils;
+import org.apache.doris.nereids.trees.plans.commands.info.PartitionNamesInfo;
import org.apache.doris.thrift.TInvertedIndexFileStorageFormat;
import com.google.common.base.Strings;
@@ -46,7 +47,7 @@ public class IndexDef {
private String comment;
private Map<String, String> properties;
private boolean isBuildDeferred = false;
- private PartitionNames partitionNames;
+ private PartitionNamesInfo partitionNamesInfo;
public static final int MIN_NGRAM_SIZE = 1;
public static final int MAX_NGRAM_SIZE = 255;
public static final int MIN_BF_SIZE = 64;
@@ -84,10 +85,11 @@ public class IndexDef {
}
}
- public IndexDef(String indexName, PartitionNames partitionNames, IndexType
indexType, boolean isBuildDeferred) {
+ public IndexDef(String indexName, PartitionNamesInfo partitionNamesInfo,
+ IndexType indexType, boolean isBuildDeferred) {
this.indexName = indexName;
this.indexType = indexType;
- this.partitionNames = partitionNames;
+ this.partitionNamesInfo = partitionNamesInfo;
this.isBuildDeferred = isBuildDeferred;
}
@@ -199,12 +201,8 @@ public class IndexDef {
return ifNotExists;
}
- public boolean isBuildDeferred() {
- return isBuildDeferred;
- }
-
- public List<String> getPartitionNames() {
- return partitionNames == null ? Lists.newArrayList() :
partitionNames.getPartitionNames();
+ public List<String> getPartitionNamesInfo() {
+ return partitionNamesInfo == null ? Lists.newArrayList() :
partitionNamesInfo.getPartitionNames();
}
public enum IndexType {
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplacePartitionClause.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplacePartitionClause.java
index 4e899533d84..853babec423 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplacePartitionClause.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplacePartitionClause.java
@@ -20,6 +20,7 @@ package org.apache.doris.analysis;
import org.apache.doris.alter.AlterOpType;
import org.apache.doris.common.AnalysisException;
import org.apache.doris.common.util.PropertyAnalyzer;
+import org.apache.doris.nereids.trees.plans.commands.info.PartitionNamesInfo;
import com.google.common.base.Joiner;
import com.google.common.collect.Maps;
@@ -31,8 +32,8 @@ import java.util.Map;
// eg:
// ALTER TABLE tbl REPLACE PARTITION (p1, p2, p3) WITH TEMPORARY
PARTITION(tp1, tp2);
public class ReplacePartitionClause extends AlterTableClause {
- private PartitionNames partitionNames;
- private PartitionNames tempPartitionNames;
+ private PartitionNamesInfo partitionNames;
+ private PartitionNamesInfo tempPartitionNames;
private Map<String, String> properties = Maps.newHashMap();
// "isStrictMode" is got from property "strict_range", and default is true.
@@ -58,7 +59,7 @@ public class ReplacePartitionClause extends AlterTableClause {
// and instead, these partitions will be deleted directly.
private boolean forceDropOldPartition;
- public ReplacePartitionClause(PartitionNames partitionNames,
PartitionNames tempPartitionNames,
+ public ReplacePartitionClause(PartitionNamesInfo partitionNames,
PartitionNamesInfo tempPartitionNames,
boolean isForce, Map<String, String> properties) {
super(AlterOpType.REPLACE_PARTITION);
this.partitionNames = partitionNames;
@@ -78,7 +79,7 @@ public class ReplacePartitionClause extends AlterTableClause {
}
// for nereids
- public ReplacePartitionClause(PartitionNames partitionNames,
PartitionNames tempPartitionNames,
+ public ReplacePartitionClause(PartitionNamesInfo partitionNames,
PartitionNamesInfo tempPartitionNames,
boolean isForce, Map<String, String> properties,
boolean isStrictRange, boolean useTempPartitionName) {
super(AlterOpType.REPLACE_PARTITION);
@@ -118,8 +119,8 @@ public class ReplacePartitionClause extends
AlterTableClause {
throw new AnalysisException("No partition specified");
}
- partitionNames.analyze();
- tempPartitionNames.analyze();
+ partitionNames.validate();
+ tempPartitionNames.validate();
if (partitionNames.isTemp() || !tempPartitionNames.isTemp()) {
throw new AnalysisException("Only support replace partitions with
temp partitions");
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 637786bcd3b..ba8fad70724 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
@@ -6469,8 +6469,7 @@ public class Env {
catalog -> new DdlException(("Unknown catalog " + catalog)));
TableNameInfo nameInfo = command.getTableNameInfo();
PartitionNamesInfo partitionNamesInfo =
command.getPartitionNamesInfo().orElse(null);
- catalogIf.truncateTable(nameInfo.getDb(), nameInfo.getTbl(),
- partitionNamesInfo == null ? null :
partitionNamesInfo.translateToLegacyPartitionNames(),
+ catalogIf.truncateTable(nameInfo.getDb(), nameInfo.getTbl(),
partitionNamesInfo,
command.isForceDrop(), command.toSqlWithoutTable());
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java
index eef6b96e23d..6b81e787d2d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogIf.java
@@ -18,7 +18,6 @@
package org.apache.doris.datasource;
import org.apache.doris.analysis.ColumnPosition;
-import org.apache.doris.analysis.PartitionNames;
import org.apache.doris.analysis.TableName;
import org.apache.doris.catalog.Column;
import org.apache.doris.catalog.DatabaseIf;
@@ -34,6 +33,7 @@ import
org.apache.doris.nereids.trees.plans.commands.info.CreateOrReplaceTagInfo
import org.apache.doris.nereids.trees.plans.commands.info.CreateTableInfo;
import org.apache.doris.nereids.trees.plans.commands.info.DropBranchInfo;
import org.apache.doris.nereids.trees.plans.commands.info.DropTagInfo;
+import org.apache.doris.nereids.trees.plans.commands.info.PartitionNamesInfo;
import com.google.common.collect.Lists;
import org.apache.logging.log4j.LogManager;
@@ -204,8 +204,8 @@ public interface CatalogIf<T extends DatabaseIf> {
throw new UnsupportedOperationException("Not support rename table
operation");
}
- void truncateTable(String dbName, String tableName, PartitionNames
partitionNames, boolean forceDrop,
- String rawTruncateSql)
+ void truncateTable(String dbName, String tableName, PartitionNamesInfo
partitionNamesInfo, boolean forceDrop,
+ String rawTruncateSql)
throws DdlException;
// Convert from remote database name to local database name, overridden by
subclass if necessary
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
index 239f7e3afe1..0ab6115ca1f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
@@ -18,7 +18,6 @@
package org.apache.doris.datasource;
import org.apache.doris.analysis.ColumnPosition;
-import org.apache.doris.analysis.PartitionNames;
import org.apache.doris.analysis.TableName;
import org.apache.doris.catalog.Column;
import org.apache.doris.catalog.DatabaseIf;
@@ -59,6 +58,7 @@ import
org.apache.doris.nereids.trees.plans.commands.info.CreateOrReplaceTagInfo
import org.apache.doris.nereids.trees.plans.commands.info.CreateTableInfo;
import org.apache.doris.nereids.trees.plans.commands.info.DropBranchInfo;
import org.apache.doris.nereids.trees.plans.commands.info.DropTagInfo;
+import org.apache.doris.nereids.trees.plans.commands.info.PartitionNamesInfo;
import org.apache.doris.persist.CreateDbInfo;
import org.apache.doris.persist.DropDbInfo;
import org.apache.doris.persist.DropInfo;
@@ -1283,8 +1283,8 @@ public abstract class ExternalCatalog
}
@Override
- public void truncateTable(String dbName, String tableName, PartitionNames
partitionNames, boolean forceDrop,
- String rawTruncateSql) throws DdlException {
+ public void truncateTable(String dbName, String tableName,
PartitionNamesInfo partitionNamesInfo, boolean forceDrop,
+ String rawTruncateSql) throws DdlException {
makeSureInitialized();
if (metadataOps == null) {
throw new DdlException("Truncate table is not supported for
catalog: " + getName());
@@ -1292,8 +1292,8 @@ public abstract class ExternalCatalog
try {
// delete all table data if null
List<String> partitions = null;
- if (partitionNames != null) {
- partitions = partitionNames.getPartitionNames();
+ if (partitionNamesInfo != null) {
+ partitions = partitionNamesInfo.getPartitionNames();
}
ExternalTable dorisTable =
getDbOrDdlException(dbName).getTableOrDdlException(tableName);
metadataOps.truncateTable(dorisTable, partitions);
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
index 9f00ad8bba5..8816802a60f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
@@ -34,7 +34,6 @@ import org.apache.doris.analysis.MultiPartitionDesc;
import org.apache.doris.analysis.PartitionDesc;
import org.apache.doris.analysis.PartitionKeyDesc;
import org.apache.doris.analysis.PartitionKeyDesc.PartitionKeyValueType;
-import org.apache.doris.analysis.PartitionNames;
import org.apache.doris.analysis.PartitionValue;
import org.apache.doris.analysis.SinglePartitionDesc;
import org.apache.doris.analysis.SlotRef;
@@ -127,6 +126,7 @@ import org.apache.doris.mtmv.MTMVUtil;
import org.apache.doris.mysql.privilege.PrivPredicate;
import
org.apache.doris.nereids.trees.plans.commands.DropCatalogRecycleBinCommand.IdType;
import org.apache.doris.nereids.trees.plans.commands.info.CreateTableInfo;
+import org.apache.doris.nereids.trees.plans.commands.info.PartitionNamesInfo;
import org.apache.doris.persist.AlterDatabasePropertyInfo;
import org.apache.doris.persist.AutoIncrementIdUpdateLog;
import org.apache.doris.persist.ColocatePersistInfo;
@@ -3494,15 +3494,15 @@ public class InternalCatalog implements
CatalogIf<Database> {
* otherwise, it will only truncate those specified partitions.
*
*/
- public void truncateTable(String dbName, String tableName, PartitionNames
partitionNames, boolean forceDrop,
- String rawTruncateSql)
+ public void truncateTable(String dbName, String tableName,
PartitionNamesInfo partitionNamesInfo, boolean forceDrop,
+ String rawTruncateSql)
throws DdlException {
// check, and save some info which need to be checked again later
Map<String, Long> origPartitions =
Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER);
Map<Long, DistributionInfo> partitionsDistributionInfo =
Maps.newHashMap();
OlapTable copiedTbl;
- boolean truncateEntireTable = partitionNames == null ||
partitionNames.isStar();
+ boolean truncateEntireTable = partitionNamesInfo == null ||
partitionNamesInfo.isStar();
Database db = getDbOrDdlException(dbName);
OlapTable olapTable = db.getOlapTableOrDdlException(tableName);
@@ -3518,7 +3518,7 @@ public class InternalCatalog implements
CatalogIf<Database> {
try {
olapTable.checkNormalStateForAlter();
if (!truncateEntireTable) {
- for (String partName : partitionNames.getPartitionNames()) {
+ for (String partName : partitionNamesInfo.getPartitionNames())
{
Partition partition = olapTable.getPartition(partName);
if (partition == null) {
throw new DdlException("Partition " + partName + "
does not exist");
@@ -3713,8 +3713,8 @@ public class InternalCatalog implements
CatalogIf<Database> {
}
}
- Env.getCurrentEnv().getAnalysisManager().dropStats(olapTable,
partitionNames);
- LOG.info("finished to truncate table {}.{}, partitions: {}", dbName,
tableName, partitionNames);
+ Env.getCurrentEnv().getAnalysisManager().dropStats(olapTable,
partitionNamesInfo);
+ LOG.info("finished to truncate table {}.{}, partitions: {}", dbName,
tableName, partitionNamesInfo);
}
private List<Partition> truncateTableInternal(OlapTable olapTable,
List<Partition> newPartitions,
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergDLFExternalCatalog.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergDLFExternalCatalog.java
index 8dcdfbd5dd9..4ef2eda9789 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergDLFExternalCatalog.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergDLFExternalCatalog.java
@@ -17,13 +17,13 @@
package org.apache.doris.datasource.iceberg;
-import org.apache.doris.analysis.PartitionNames;
import org.apache.doris.common.DdlException;
import org.apache.doris.common.UserException;
import org.apache.doris.datasource.CatalogProperty;
import org.apache.doris.datasource.property.metastore.HMSBaseProperties;
import org.apache.doris.nereids.exceptions.NotSupportedException;
import org.apache.doris.nereids.trees.plans.commands.info.CreateTableInfo;
+import org.apache.doris.nereids.trees.plans.commands.info.PartitionNamesInfo;
import java.util.Map;
@@ -58,8 +58,8 @@ public class IcebergDLFExternalCatalog extends
IcebergExternalCatalog {
}
@Override
- public void truncateTable(String dbName, String tableName, PartitionNames
partitionNames, boolean forceDrop,
- String rawTruncateSql) throws DdlException {
+ public void truncateTable(String dbName, String tableName,
PartitionNamesInfo partitionNamesInfo, boolean forceDrop,
+ String rawTruncateSql) throws DdlException {
throw new NotSupportedException("iceberg catalog with dlf type not
supports 'truncate table'");
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
b/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
index 35bcaa0001e..a2019660ae4 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
@@ -19,7 +19,6 @@ package org.apache.doris.insertoverwrite;
import org.apache.doris.analysis.AddPartitionLikeClause;
import org.apache.doris.analysis.DropPartitionClause;
-import org.apache.doris.analysis.PartitionNames;
import org.apache.doris.analysis.ReplacePartitionClause;
import org.apache.doris.catalog.Database;
import org.apache.doris.catalog.Env;
@@ -27,6 +26,7 @@ import org.apache.doris.catalog.OlapTable;
import org.apache.doris.catalog.TableIf;
import org.apache.doris.common.DdlException;
import org.apache.doris.common.util.PropertyAnalyzer;
+import org.apache.doris.nereids.trees.plans.commands.info.PartitionNamesInfo;
import com.google.common.collect.Maps;
import org.apache.logging.log4j.LogManager;
@@ -82,8 +82,8 @@ public class InsertOverwriteUtil {
Map<String, String> properties = Maps.newHashMap();
properties.put(PropertyAnalyzer.PROPERTIES_USE_TEMP_PARTITION_NAME, "false");
ReplacePartitionClause replacePartitionClause = new
ReplacePartitionClause(
- new PartitionNames(false, partitionNames),
- new PartitionNames(true, tempPartitionNames), isForce,
properties);
+ new PartitionNamesInfo(false, partitionNames),
+ new PartitionNamesInfo(true, tempPartitionNames),
isForce, properties);
if (replacePartitionClause.getTempPartitionNames().isEmpty()) {
return;
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java
index 5aec7d5d0bf..caa6f2c82fd 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java
@@ -298,8 +298,7 @@ public class IndexDefinition {
*/
public IndexDef translateToLegacyIndexDef() {
if (isBuildDeferred) {
- return new IndexDef(name, partitionNames != null ?
partitionNames.translateToLegacyPartitionNames() : null,
- indexType, true);
+ return new IndexDef(name, partitionNames, indexType, true);
} else {
return new IndexDef(name, ifNotExists, cols, indexType,
properties, comment);
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ReplacePartitionOp.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ReplacePartitionOp.java
index fe11c6ad078..a77e4c2b20e 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ReplacePartitionOp.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ReplacePartitionOp.java
@@ -130,8 +130,7 @@ public class ReplacePartitionOp extends AlterTableOp {
@Override
public AlterTableClause translateToLegacyAlterClause() {
- return new
ReplacePartitionClause(partitionNames.translateToLegacyPartitionNames(),
- tempPartitionNames.translateToLegacyPartitionNames(),
+ return new ReplacePartitionClause(partitionNames, tempPartitionNames,
forceDropOldPartition, properties, isStrictRange,
useTempPartitionName);
}
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 d8cee22b962..e813948742d 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
@@ -3705,9 +3705,9 @@ public class FrontendServiceImpl implements
FrontendService.Iface {
InvalidateStatsTarget target = GsonUtils.GSON.fromJson(request.key,
InvalidateStatsTarget.class);
AnalysisManager analysisManager =
Env.getCurrentEnv().getAnalysisManager();
TableStatsMeta tableStats =
analysisManager.findTableStatsStatus(target.tableId);
- PartitionNames partitionNames = null;
+ PartitionNamesInfo partitionNames = null;
if (target.partitions != null) {
- partitionNames = new PartitionNames(false, new
ArrayList<>(target.partitions));
+ partitionNames = new PartitionNamesInfo(false, new
ArrayList<>(target.partitions));
}
if (target.isTruncate) {
analysisManager.submitAsyncDropStatsTask(target.catalogId,
target.dbId,
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
index 98a531746a5..3223f915fb0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
@@ -18,7 +18,6 @@
package org.apache.doris.statistics;
import org.apache.doris.analysis.AnalyzeProperties;
-import org.apache.doris.analysis.PartitionNames;
import org.apache.doris.analysis.TableName;
import org.apache.doris.catalog.Column;
import org.apache.doris.catalog.Database;
@@ -674,25 +673,22 @@ public class AnalysisManager implements Writable {
TableStatsMeta tableStats =
findTableStatsStatus(dropStatsCommand.getTblId());
Set<String> cols = dropStatsCommand.getColumnNames();
PartitionNamesInfo partitionNamesInfo =
dropStatsCommand.getOpPartitionNamesInfo();
- PartitionNames partitionNames = null;
- if (partitionNamesInfo != null) {
- partitionNames = new PartitionNames(partitionNamesInfo.isTemp(),
partitionNamesInfo.getPartitionNames());
- }
long catalogId = dropStatsCommand.getCatalogId();
long dbId = dropStatsCommand.getDbId();
long tblId = dropStatsCommand.getTblId();
TableIf table = StatisticsUtil.findTable(catalogId, dbId, tblId);
// Remove tableMetaStats if drop whole table stats.
- if ((cols == null || cols.isEmpty()) && (!table.isPartitionedTable()
|| partitionNames == null
- || partitionNames.isStar() ||
partitionNames.getPartitionNames() == null)) {
+ if ((cols == null || cols.isEmpty()) && (!table.isPartitionedTable()
|| partitionNamesInfo == null
+ || partitionNamesInfo.isStar() ||
partitionNamesInfo.getPartitionNames() == null)) {
removeTableStats(tblId);
Env.getCurrentEnv().getEditLog().logDeleteTableStats(new
TableStatsDeletionLog(tblId));
}
- invalidateLocalStats(catalogId, dbId, tblId, cols, tableStats,
partitionNames);
+ invalidateLocalStats(catalogId, dbId, tblId, cols, tableStats,
partitionNamesInfo);
// Drop stats ddl is master only operation.
Set<String> partitions = null;
- if (partitionNames != null && !partitionNames.isStar() &&
partitionNames.getPartitionNames() != null) {
- partitions = new HashSet<>(partitionNames.getPartitionNames());
+ if (partitionNamesInfo != null && !partitionNamesInfo.isStar()
+ && partitionNamesInfo.getPartitionNames() != null) {
+ partitions = new HashSet<>(partitionNamesInfo.getPartitionNames());
}
invalidateRemoteStats(catalogId, dbId, tblId, cols, partitions, false);
StatisticsRepository.dropStatistics(catalogId, dbId, tblId, cols,
partitions);
@@ -702,7 +698,7 @@ public class AnalysisManager implements Writable {
Env.getCurrentEnv().getStatisticsCleaner().clear();
}
- public void dropStats(TableIf table, PartitionNames partitionNames) {
+ public void dropStats(TableIf table, PartitionNamesInfo partitionNames) {
try {
long catalogId = table.getDatabase().getCatalog().getId();
long dbId = table.getDatabase().getId();
@@ -719,11 +715,11 @@ public class AnalysisManager implements Writable {
private final long tableId;
private final Set<String> columns;
private final TableStatsMeta tableStats;
- private final PartitionNames partitionNames;
+ private final PartitionNamesInfo partitionNames;
private final boolean isMaster;
public DropStatsTask(long catalogId, long dbId, long tableId,
Set<String> columns,
- TableStatsMeta tableStats, PartitionNames
partitionNames, boolean isMaster) {
+ TableStatsMeta tableStats, PartitionNamesInfo
partitionNames, boolean isMaster) {
this.catalogId = catalogId;
this.dbId = dbId;
this.tableId = tableId;
@@ -756,7 +752,7 @@ public class AnalysisManager implements Writable {
}
public void submitAsyncDropStatsTask(long catalogId, long dbId, long
tableId,
- PartitionNames partitionNames, boolean isMaster) {
+ PartitionNamesInfo partitionNames, boolean isMaster) {
try {
dropStatsExecutors.submit(new DropStatsTask(catalogId, dbId,
tableId, null,
findTableStatsStatus(tableId), partitionNames, isMaster));
@@ -787,7 +783,7 @@ public class AnalysisManager implements Writable {
}
public void invalidateLocalStats(long catalogId, long dbId, long tableId,
Set<String> columns,
- TableStatsMeta tableStats, PartitionNames
partitionNames) {
+ TableStatsMeta tableStats,
PartitionNamesInfo partitionNames) {
TableIf table = StatisticsUtil.findTable(catalogId, dbId, tableId);
StatisticsCache statsCache = Env.getCurrentEnv().getStatisticsCache();
if (columns == null || columns.isEmpty()) {
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisManagerTest.java
b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisManagerTest.java
index e728623aaa4..0f37721022b 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisManagerTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisManagerTest.java
@@ -17,7 +17,6 @@
package org.apache.doris.statistics;
-import org.apache.doris.analysis.PartitionNames;
import org.apache.doris.catalog.Column;
import org.apache.doris.catalog.Database;
import org.apache.doris.catalog.DatabaseIf;
@@ -31,6 +30,7 @@ import org.apache.doris.datasource.InternalCatalog;
import org.apache.doris.nereids.trees.expressions.ExprId;
import org.apache.doris.nereids.trees.expressions.Slot;
import org.apache.doris.nereids.trees.expressions.SlotReference;
+import org.apache.doris.nereids.trees.plans.commands.info.PartitionNamesInfo;
import org.apache.doris.nereids.types.IntegerType;
import org.apache.doris.statistics.AnalysisInfo.AnalysisType;
import org.apache.doris.statistics.AnalysisInfo.JobType;
@@ -287,7 +287,7 @@ public class AnalysisManagerTest {
new MockUp<AnalysisManager>() {
@Mock
public void invalidateLocalStats(long catalogId, long dbId, long
tableId, Set<String> columns,
- TableStatsMeta tableStats,
PartitionNames partitionNames) {
+ TableStatsMeta tableStats,
PartitionNamesInfo partitionNames) {
try {
Thread.sleep(1000);
count.incrementAndGet();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]