diff --git a/CHANGELOG.md b/CHANGELOG.md index e087ce9bfce..a5812726e6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ 1. [#684](https://github.com/influxdata/influxdb-client-java/issues/684): Fix checking for CSV end of table marker when parsing CSV stream to InfluxQLQueryResult, needed for example when parsing the results of a query like "SHOW SERIES". 2. [#662](https://github.com/influxdata/influxdb-client-java/issues/662): Adds to FluxDsl support for the `|> elapsed(unit)` function. 3. [#623](https://github.com/influxdata/influxdb-client-java/issues/623): Enables the use of IPv6 addresses. +4. [#604](https://github.com/influxdata/influxdb-client-java/issues/604): Custom FluxDSL restrictions for regular expressions ### Dependencies diff --git a/flux-dsl/src/main/java/com/influxdb/query/dsl/functions/restriction/ColumnRestriction.java b/flux-dsl/src/main/java/com/influxdb/query/dsl/functions/restriction/ColumnRestriction.java index 05f27970f6d..2daf791e221 100644 --- a/flux-dsl/src/main/java/com/influxdb/query/dsl/functions/restriction/ColumnRestriction.java +++ b/flux-dsl/src/main/java/com/influxdb/query/dsl/functions/restriction/ColumnRestriction.java @@ -192,7 +192,11 @@ public String toString() { String value; if (fieldValue instanceof String) { - value = "\"" + escapeDoubleQuotes((String) fieldValue) + "\""; + if (operator.contains("~")) { + value = escapeDoubleQuotes((String) fieldValue); + } else { + value = "\"" + escapeDoubleQuotes((String) fieldValue) + "\""; + } } else { value = FunctionsParameters.serializeValue(fieldValue, false); } diff --git a/flux-dsl/src/test/java/com/influxdb/query/dsl/functions/restriction/RestrictionsTest.java b/flux-dsl/src/test/java/com/influxdb/query/dsl/functions/restriction/RestrictionsTest.java index 7a700535602..149416be1a9 100644 --- a/flux-dsl/src/test/java/com/influxdb/query/dsl/functions/restriction/RestrictionsTest.java +++ b/flux-dsl/src/test/java/com/influxdb/query/dsl/functions/restriction/RestrictionsTest.java @@ -74,6 +74,17 @@ void contains() { Assertions.assertThat(restrictions.toString()).isEqualTo("contains(value: r[\"_value\"], set:[\"value1\", \"value2\"])"); } + @Test + void custom (){ + Restrictions restrictions = Restrictions.value().custom("/.*target.*/", "=~"); + + Assertions.assertThat(restrictions.toString()).isEqualTo("r[\"_value\"] =~ /.*target.*/"); + + restrictions = Restrictions.value().custom("1", "=="); + + Assertions.assertThat(restrictions.toString()).isEqualTo("r[\"_value\"] == \"1\""); + } + @Test void not() {