]> git.basschouten.com Git - openhab-addons.git/commitdiff
Fix PostgreSQL query for storing timestamps (#13745)
authorJacob Laursen <jacob-github@vindvejr.dk>
Sat, 19 Nov 2022 19:57:51 +0000 (20:57 +0100)
committerGitHub <noreply@github.com>
Sat, 19 Nov 2022 19:57:51 +0000 (20:57 +0100)
Fixes #13121

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcPostgresqlDAO.java

index 7a8ab72e886c3df2abbdde589fcfdcacfa7d5276..e12f0b91ae868d71e47130fd031d1f0e57560756 100644 (file)
@@ -13,6 +13,7 @@
 package org.openhab.persistence.jdbc.internal.db;
 
 import java.time.ZoneId;
+import java.time.ZonedDateTime;
 import java.util.List;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -167,6 +168,22 @@ public class JdbcPostgresqlDAO extends JdbcBaseDAO {
         }
     }
 
+    @Override
+    public void doStoreItemValue(Item item, State itemState, ItemVO vo, ZonedDateTime date) throws JdbcSQLException {
+        ItemVO storedVO = storeItemValueProvider(item, itemState, vo);
+        String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue,
+                new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" },
+                new String[] { storedVO.getTableName(), storedVO.getDbType(), "?" });
+        java.sql.Timestamp timestamp = new java.sql.Timestamp(date.toInstant().toEpochMilli());
+        Object[] params = { timestamp, storedVO.getValue() };
+        logger.debug("JDBC::doStoreItemValue sql={} timestamp={} value='{}'", sql, timestamp, storedVO.getValue());
+        try {
+            Yank.execute(sql, params);
+        } catch (YankSQLException e) {
+            throw new JdbcSQLException(e);
+        }
+    }
+
     /****************************
      * SQL generation Providers *
      ****************************/