]> git.basschouten.com Git - openhab-addons.git/commitdiff
[jdbc] Removed check if item exists to allow to truncate data for clean-ups (#12052)
authorChristoph Weitkamp <github@christophweitkamp.de>
Sat, 15 Jan 2022 16:09:54 +0000 (17:09 +0100)
committerGitHub <noreply@github.com>
Sat, 15 Jan 2022 16:09:54 +0000 (17:09 +0100)
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcMapper.java
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcPersistenceService.java
bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/db/JdbcBaseDAOTest.java

index 9f8087066045c6c2bbe97d17116861c09b83c661..7679ac4cca148a578212b6baaee95fddc9f0f8b5 100644 (file)
@@ -362,7 +362,7 @@ public class JdbcBaseDAO {
                 .collect(Collectors.<HistoricItem> toList());
     }
 
-    public void doDeleteItemValues(Item item, FilterCriteria filter, String table, ZoneId timeZone) {
+    public void doDeleteItemValues(FilterCriteria filter, String table, ZoneId timeZone) {
         String sql = histItemFilterDeleteProvider(filter, table, timeZone);
         logger.debug("JDBC::doDeleteItemValues sql={}", sql);
         Yank.execute(sql, null);
@@ -400,10 +400,8 @@ public class JdbcBaseDAO {
         logger.debug("JDBC::histItemFilterDeleteProvider filter = {}, table = {}", filter, table);
 
         String filterString = resolveTimeFilter(filter, timeZone);
-        String deleteString = "DELETE FROM " + table;
-        if (!filterString.isEmpty()) {
-            deleteString += filterString;
-        }
+        String deleteString = filterString.isEmpty() ? "TRUNCATE TABLE " + table
+                : "DELETE FROM " + table + filterString;
         logger.debug("JDBC::delete deleteString = {}", deleteString);
         return deleteString;
     }
index 9476ba5427aaa97178c56fde70e72884a22ab9c5..3a39efb32372e18f4ee398aca60bcc91c35fe775 100644 (file)
@@ -184,12 +184,13 @@ public class JdbcMapper {
         return null;
     }
 
-    public boolean deleteItemValues(FilterCriteria filter, String table, Item item) {
-        logger.debug("JDBC::deleteItemValues filter='{}' table='{}' item='{}' itemName='{}'", (filter != null), table,
-                item, item.getName());
+    @SuppressWarnings("null")
+    public boolean deleteItemValues(FilterCriteria filter, String table) {
+        logger.debug("JDBC::deleteItemValues filter='{}' table='{}' itemName='{}'", (filter != null), table,
+                filter.getItemName());
         if (table != null) {
             long timerStart = System.currentTimeMillis();
-            conf.getDBDAO().doDeleteItemValues(item, filter, table, timeZoneProvider.getTimeZone());
+            conf.getDBDAO().doDeleteItemValues(filter, table, timeZoneProvider.getTimeZone());
             logTime("deleteItemValues", timerStart, System.currentTimeMillis());
             errCnt = 0;
             return true;
index c00e178a8ebb2259b28b655c762d90651aa3f5ad..20a0fff89ece593069b53540c1ae8ff3ee4b3053 100644 (file)
@@ -253,18 +253,11 @@ public class JdbcPersistenceService extends JdbcMapper implements ModifiablePers
 
         // Get the item name from the filter
         // Also get the Item object so we can determine the type
-        Item item = null;
         String itemName = filter.getItemName();
         logger.debug("JDBC::remove: item is {}", itemName);
         if (itemName == null) {
             throw new IllegalArgumentException("Item name must not be null");
         }
-        try {
-            item = itemRegistry.getItem(itemName);
-        } catch (ItemNotFoundException e) {
-            logger.error("JDBC::remove: unable to get item for itemName: '{}'. Ignore and give up!", itemName);
-            return false;
-        }
 
         String table = sqlTables.get(itemName);
         if (table == null) {
@@ -273,10 +266,10 @@ public class JdbcPersistenceService extends JdbcMapper implements ModifiablePers
         }
 
         long timerStart = System.currentTimeMillis();
-        boolean result = deleteItemValues(filter, table, item);
+        boolean result = deleteItemValues(filter, table);
         if (logger.isDebugEnabled()) {
-            logger.debug("JDBC: Deleted values for item '{}' in SQL database at {} in {} ms.", item.getName(),
-                    new Date(), System.currentTimeMillis() - timerStart);
+            logger.debug("JDBC: Deleted values for item '{}' in SQL database at {} in {} ms.", itemName, new Date(),
+                    System.currentTimeMillis() - timerStart);
         }
 
         return result;
index 1b58e6243ea4b89b74649c95a0d22fcbe811e4fd..cc0fe9c4cdd969e94876a4c6f43f8a5f5c28fcb6 100644 (file)
@@ -83,7 +83,7 @@ public class JdbcBaseDAOTest {
     @Test
     public void testHistItemFilterDeleteProviderReturnsDeleteQueryWithoutWhereClause() {
         String sql = jdbcBaseDAO.histItemFilterDeleteProvider(filter, DB_TABLE_NAME, UTC_ZONE_ID);
-        assertThat(sql, is("DELETE FROM " + DB_TABLE_NAME));
+        assertThat(sql, is("TRUNCATE TABLE " + DB_TABLE_NAME));
     }
 
     @Test