]> git.basschouten.com Git - openhab-addons.git/commitdiff
Fix "empty range" exception when querying InfluxDB2 (#14627)
authorJ-N-K <github@klug.nrw>
Sat, 18 Mar 2023 12:31:41 +0000 (13:31 +0100)
committerGitHub <noreply@github.com>
Sat, 18 Mar 2023 12:31:41 +0000 (13:31 +0100)
Signed-off-by: Jan N. Klug <github@klug.nrw>
bundles/org.openhab.persistence.influxdb/src/main/java/org/openhab/persistence/influxdb/internal/influx2/InfluxDB2FilterCriteriaQueryCreatorImpl.java
bundles/org.openhab.persistence.influxdb/src/test/java/org/openhab/persistence/influxdb/internal/InfluxFilterCriteriaQueryCreatorImplTest.java

index 76c1528c549ff48cdfcd78f1ddba464203503474..1f89901dca3b7f098b3df298631de9f15401e817 100644 (file)
@@ -54,10 +54,12 @@ public class InfluxDB2FilterCriteriaQueryCreatorImpl implements FilterCriteriaQu
         if (criteria.getBeginDate() != null) {
             range.withStart(criteria.getBeginDate().toInstant());
         } else {
-            range = flux.range(-100L, ChronoUnit.YEARS); // Flux needs a mandatory start range
+            range.withStart(-100L, ChronoUnit.YEARS); // Flux needs a mandatory start range
         }
         if (criteria.getEndDate() != null) {
             range.withStop(criteria.getEndDate().toInstant());
+        } else {
+            range.withStop(100L, ChronoUnit.YEARS);
         }
         flux = range;
 
index 79f1e504e65fecf3a337ee548f95d97b85c3dc36..a6a724307a8345986e2f8e2fa844413fddc95e04 100644 (file)
@@ -82,7 +82,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
         String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
         assertThat(queryV2, equalTo("""
                 from(bucket:"origin")
-                \t|> range(start:-100y)
+                \t|> range(start:-100y, stop:100y)
                 \t|> filter(fn: (r) => r["_measurement"] == "sampleItem")
                 \t|> keep(columns:["_measurement", "_time", "_value"])"""));
     }
@@ -96,7 +96,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
         assertThat(queryV1, equalTo("SELECT \"value\"::field,\"item\"::tag FROM \"origin\"./.*/;"));
 
         String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
-        assertThat(queryV2, equalTo("from(bucket:\"origin\")\n\t" + "|> range(start:-100y)"));
+        assertThat(queryV2, equalTo("from(bucket:\"origin\")\n\t" + "|> range(start:-100y, stop:100y)"));
     }
 
     @Test
@@ -136,7 +136,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
         String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
         assertThat(queryV2, equalTo("""
                 from(bucket:"origin")
-                \t|> range(start:-100y)
+                \t|> range(start:-100y, stop:100y)
                 \t|> filter(fn: (r) => r["_measurement"] == "sampleItem")
                 \t|> keep(columns:["_measurement", "_time", "_value"])
                 \t|> filter(fn: (r) => (r["_field"] == "value" and r["_value"] <= 90))"""));
@@ -155,7 +155,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
         String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
         assertThat(queryV2, equalTo("""
                 from(bucket:"origin")
-                \t|> range(start:-100y)
+                \t|> range(start:-100y, stop:100y)
                 \t|> filter(fn: (r) => r["_measurement"] == "sampleItem")
                 \t|> keep(columns:["_measurement", "_time", "_value"])
                 \t|> limit(n:10, offset:20)"""));
@@ -173,7 +173,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
         String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
         assertThat(queryV2, equalTo("""
                 from(bucket:"origin")
-                \t|> range(start:-100y)
+                \t|> range(start:-100y, stop:100y)
                 \t|> filter(fn: (r) => r["_measurement"] == "sampleItem")
                 \t|> keep(columns:["_measurement", "_time", "_value"])
                 \t|> sort(desc:false, columns:["_time"])"""));
@@ -187,7 +187,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
         String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
         assertThat(queryV2, equalTo("""
                 from(bucket:"origin")
-                \t|> range(start:-100y)
+                \t|> range(start:-100y, stop:100y)
                 \t|> filter(fn: (r) => r["_measurement"] == "sampleItem")
                 \t|> keep(columns:["_measurement", "_time", "_value"])
                 \t|> last()"""));
@@ -215,7 +215,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
         String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
         assertThat(queryV2, equalTo("""
                 from(bucket:"origin")
-                \t|> range(start:-100y)
+                \t|> range(start:-100y, stop:100y)
                 \t|> filter(fn: (r) => r["_measurement"] == "measurementName")
                 \t|> filter(fn: (r) => r["item"] == "sampleItem")
                 \t|> keep(columns:["_measurement", "_time", "_value", "item"])"""));
@@ -228,7 +228,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
         queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
         assertThat(queryV2, equalTo("""
                 from(bucket:"origin")
-                \t|> range(start:-100y)
+                \t|> range(start:-100y, stop:100y)
                 \t|> filter(fn: (r) => r["_measurement"] == "sampleItem")
                 \t|> keep(columns:["_measurement", "_time", "_value"])"""));
     }