diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityTimeSeriesDAO.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityTimeSeriesDAO.java index 96ea3e06a08f..a6add863e085 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityTimeSeriesDAO.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityTimeSeriesDAO.java @@ -22,6 +22,7 @@ import org.openmetadata.schema.utils.JsonUtils; import org.openmetadata.service.jdbi3.locator.ConnectionAwareSqlQuery; import org.openmetadata.service.jdbi3.locator.ConnectionAwareSqlUpdate; +import org.openmetadata.service.util.FullyQualifiedName; import org.openmetadata.service.util.RestUtil; import org.openmetadata.service.util.jdbi.BindFQN; @@ -530,6 +531,18 @@ default void delete(String entityFQNHash, String extension) { delete(getTimeSeriesTableName(), entityFQNHash, extension); } + @SqlUpdate( + "DELETE FROM WHERE entityFQNHash LIKE :fqnHashPrefix AND extension = :extension") + void deleteByFQNPrefix( + @Define("table") String table, + @Bind("fqnHashPrefix") String fqnHashPrefix, + @Bind("extension") String extension); + + default void deleteByFQNPrefix(String entityFQN, String extension) { + String hashPrefix = FullyQualifiedName.buildHash(entityFQN) + ".%"; + deleteByFQNPrefix(getTimeSeriesTableName(), hashPrefix, extension); + } + @SqlUpdate( "DELETE FROM
WHERE entityFQNHash = :entityFQNHash AND extension = :extension AND timestamp = :timestamp") void deleteAtTimestamp( diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java index 453e301021f6..aa6ad3347094 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java @@ -1154,6 +1154,16 @@ public void deleteTableProfile(String fqn, String entityType, Long timestamp) { daoCollection.profilerDataTimeSeriesDao().deleteAtTimestamp(fqn, extension, timestamp); } + @Override + protected void entitySpecificCleanup(Table table) { + String fqn = table.getFullyQualifiedName(); + daoCollection.profilerDataTimeSeriesDao().delete(fqn, TABLE_PROFILE_EXTENSION); + daoCollection.profilerDataTimeSeriesDao().delete(fqn, SYSTEM_PROFILE_EXTENSION); + daoCollection + .profilerDataTimeSeriesDao() + .deleteByFQNPrefix(fqn, TABLE_COLUMN_PROFILE_EXTENSION); + } + public ResultList getTableProfiles(String fqn, Long startTs, Long endTs) { List entityProfiles; List tableProfiles;