morrySnow commented on code in PR #49345:
URL: https://github.com/apache/doris/pull/49345#discussion_r2006992229
##########
fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsCleaner.java:
##########
@@ -116,19 +116,35 @@ private void clearTableStats() {
// If ctlName, dbName and tblName exist, it means the table
stats is created under new version.
// First try to find the table by the given names. If table
exists, means the tableMeta is valid,
// it should be kept in memory.
+ boolean tableExist = false;
try {
- StatisticsUtil.findTable(stats.ctlName, stats.dbName,
stats.tblName);
- continue;
+ TableIf table = StatisticsUtil.findTable(stats.ctlName,
stats.dbName, stats.tblName);
+ // Tables may have identical names but different id, e.g.
replace table.
+ tableExist = table.getId() == id;
+ if (!tableExist) {
+ if (tableExistInInternalCatalog(internalCatalog, id)) {
+ LOG.debug("Table {}.{}.{} found with ID {}.",
+ stats.ctlName, stats.dbName,
stats.tblName, id);
+ tableExist = true;
+ }
+ }
} catch (Exception e) {
LOG.debug("Table {}.{}.{} not found.", stats.ctlName,
stats.dbName, stats.tblName);
+ // If we couldn't find table by names, try to find it in
internal catalog. This is to support older
+ // version which the tableStats object doesn't store the
names but only table id.
+ // We may remove external table's tableStats here, but
it's not a big problem.
+ // Because the stats in column_statistics table is still
available,
+ // the only disadvantage is auto analyze may be triggered
for this table.
+ // But it only happens once, the new table stats object
will have all the catalog,
+ // db and table names.
+ // Also support REPLACE TABLE
+ if (tableExistInInternalCatalog(internalCatalog, id)) {
+ LOG.debug("Table {}.{}.{} found with ID {}.",
+ stats.ctlName, stats.dbName, stats.tblName,
id);
+ tableExist = true;
+ }
}
- // If we couldn't find table by names, try to find it in
internal catalog. This is to support older
- // version which the tableStats object doesn't store the names
but only table id.
- // We may remove external table's tableStats here, but it's
not a big problem.
- // Because the stats in column_statistics table is still
available,
- // the only disadvantage is auto analyze may be triggered for
this table.
- // But it only happens once, the new table stats object will
have all the catalog, db and table names.
- if (tableExistInInternalCatalog(internalCatalog, id)) {
+ if (tableExist) {
Review Comment:
```suggestion
if (tableExist ||
tableExistInInternalCatalog(internalCatalog, id)) {
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]