[influxdb] Fix for influxdbv1 retention and table names containing keywords or special chars (#11139)
* [influxdbv1] https://github.com/openhab/openhab-addons/issues/9790 and https://github.com/openhab/openhab-addons/issues/10398 Fix for retention and table names containing InfluxQL keywords or special characters Signed-off-by: fremel@gmail.com <fremel@gmail.com> * Revert escaped qoutes on null items Signed-off-by: fremel@gmail.com <fremel@gmail.com> * Apply suggestions from code review Signed-off-by: Fabian Wolter <github@fabian-wolter.de> Co-authored-by: Joan Pujol <joanpujol@gmail.com> * Apply spotless Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk> Co-authored-by: Fabian Wolter <github@fabian-wolter.de> Co-authored-by: Joan Pujol <joanpujol@gmail.com> Co-authored-by: Jacob Laursen <jacob-github@vindvejr.dk>
This commit is contained in:
parent
531ddb37da
commit
6190867c39
@ -19,7 +19,6 @@ import static org.openhab.persistence.influxdb.internal.InfluxDBStateConvertUtil
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.influxdb.dto.Query;
|
||||
import org.influxdb.querybuilder.Appender;
|
||||
import org.influxdb.querybuilder.BuiltQuery;
|
||||
import org.influxdb.querybuilder.Select;
|
||||
import org.influxdb.querybuilder.Where;
|
||||
@ -117,10 +116,10 @@ public class Influx1FilterCriteriaQueryCreatorImpl implements FilterCriteriaQuer
|
||||
|
||||
private String fullQualifiedTableName(String retentionPolicy, String tableName, boolean escapeTableName) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
Appender.appendName(retentionPolicy, sb);
|
||||
sb.append('"').append(retentionPolicy).append('"');
|
||||
sb.append(".");
|
||||
if (escapeTableName) {
|
||||
Appender.appendName(tableName, sb);
|
||||
sb.append('"').append(tableName).append('"');
|
||||
} else {
|
||||
sb.append(tableName);
|
||||
}
|
||||
|
||||
@ -76,7 +76,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
|
||||
FilterCriteria criteria = createBaseCriteria();
|
||||
|
||||
String queryV1 = instanceV1.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(queryV1, equalTo("SELECT \"value\"::field,\"item\"::tag FROM origin.sampleItem;"));
|
||||
assertThat(queryV1, equalTo("SELECT \"value\"::field,\"item\"::tag FROM \"origin\".\"sampleItem\";"));
|
||||
|
||||
String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(queryV2,
|
||||
@ -91,7 +91,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
|
||||
criteria.setOrdering(null);
|
||||
|
||||
String queryV1 = instanceV1.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(queryV1, equalTo("SELECT \"value\"::field,\"item\"::tag FROM origin./.*/;"));
|
||||
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)"));
|
||||
@ -107,7 +107,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
|
||||
|
||||
String queryV1 = instanceV1.createQuery(criteria, RETENTION_POLICY);
|
||||
String expectedQueryV1 = String.format(
|
||||
"SELECT \"value\"::field,\"item\"::tag FROM origin.sampleItem WHERE time >= '%s' AND time <= '%s';",
|
||||
"SELECT \"value\"::field,\"item\"::tag FROM \"origin\".\"sampleItem\" WHERE time >= '%s' AND time <= '%s';",
|
||||
now.toInstant(), tomorrow.toInstant());
|
||||
assertThat(queryV1, equalTo(expectedQueryV1));
|
||||
|
||||
@ -127,7 +127,8 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
|
||||
criteria.setState(new PercentType(90));
|
||||
|
||||
String query = instanceV1.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(query, equalTo("SELECT \"value\"::field,\"item\"::tag FROM origin.sampleItem WHERE value <= 90;"));
|
||||
assertThat(query,
|
||||
equalTo("SELECT \"value\"::field,\"item\"::tag FROM \"origin\".\"sampleItem\" WHERE value <= 90;"));
|
||||
|
||||
String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(queryV2,
|
||||
@ -144,7 +145,8 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
|
||||
criteria.setPageSize(10);
|
||||
|
||||
String query = instanceV1.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(query, equalTo("SELECT \"value\"::field,\"item\"::tag FROM origin.sampleItem LIMIT 10 OFFSET 20;"));
|
||||
assertThat(query,
|
||||
equalTo("SELECT \"value\"::field,\"item\"::tag FROM \"origin\".\"sampleItem\" LIMIT 10 OFFSET 20;"));
|
||||
|
||||
String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(queryV2, equalTo("from(bucket:\"origin\")\n\t" + "|> range(start:-100y)\n\t"
|
||||
@ -158,7 +160,8 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
|
||||
criteria.setOrdering(FilterCriteria.Ordering.ASCENDING);
|
||||
|
||||
String query = instanceV1.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(query, equalTo("SELECT \"value\"::field,\"item\"::tag FROM origin.sampleItem ORDER BY time ASC;"));
|
||||
assertThat(query,
|
||||
equalTo("SELECT \"value\"::field,\"item\"::tag FROM \"origin\".\"sampleItem\" ORDER BY time ASC;"));
|
||||
|
||||
String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(queryV2,
|
||||
@ -201,7 +204,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
|
||||
|
||||
String queryV1 = instanceV1.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(queryV1, equalTo(
|
||||
"SELECT \"value\"::field,\"item\"::tag FROM origin.measurementName WHERE item = 'sampleItem';"));
|
||||
"SELECT \"value\"::field,\"item\"::tag FROM \"origin\".\"measurementName\" WHERE item = 'sampleItem';"));
|
||||
|
||||
String queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(queryV2,
|
||||
@ -214,7 +217,7 @@ public class InfluxFilterCriteriaQueryCreatorImplTest {
|
||||
.thenReturn(new Metadata(metadataKey, "", Map.of("key1", "val1", "key2", "val2")));
|
||||
|
||||
queryV1 = instanceV1.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(queryV1, equalTo("SELECT \"value\"::field,\"item\"::tag FROM origin.sampleItem;"));
|
||||
assertThat(queryV1, equalTo("SELECT \"value\"::field,\"item\"::tag FROM \"origin\".\"sampleItem\";"));
|
||||
|
||||
queryV2 = instanceV2.createQuery(criteria, RETENTION_POLICY);
|
||||
assertThat(queryV2,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user