query(@Query(DB) String db, @Query(value = Q, encoded = true) String query,
@Query(CHUNK_SIZE) int chunkSize, @Query(value = PARAMS, encoded = true) String params);
}
diff --git a/src/main/java/org/influxdb/querybuilder/Appender.java b/src/main/java/org/influxdb/querybuilder/Appender.java
index 3dab5c02f..8c7e34bfd 100644
--- a/src/main/java/org/influxdb/querybuilder/Appender.java
+++ b/src/main/java/org/influxdb/querybuilder/Appender.java
@@ -62,6 +62,8 @@ public static StringBuilder appendValue(final Object value, final StringBuilder
stringBuilder.append(')');
} else if (value instanceof Column) {
appendName(((Column) value).getName(), stringBuilder);
+ } else if (value instanceof Placeholder) {
+ stringBuilder.append('$').append(((Placeholder) value).getName());
} else if (value instanceof String) {
stringBuilder.append("'").append(value).append("'");
} else if (value != null) {
diff --git a/src/main/java/org/influxdb/querybuilder/FunctionFactory.java b/src/main/java/org/influxdb/querybuilder/FunctionFactory.java
index 19541c46a..ba5bfaba3 100644
--- a/src/main/java/org/influxdb/querybuilder/FunctionFactory.java
+++ b/src/main/java/org/influxdb/querybuilder/FunctionFactory.java
@@ -61,6 +61,10 @@ public static Object column(final String name) {
return new Column(name);
}
+ public static Object placeholder(final String name) {
+ return new Placeholder(name);
+ }
+
private static void convertToColumns(final Object... arguments) {
for (int i = 0; i < arguments.length; i++) {
arguments[i] = convertToColumn(arguments[i]);
diff --git a/src/main/java/org/influxdb/querybuilder/Placeholder.java b/src/main/java/org/influxdb/querybuilder/Placeholder.java
new file mode 100644
index 000000000..8b21cd880
--- /dev/null
+++ b/src/main/java/org/influxdb/querybuilder/Placeholder.java
@@ -0,0 +1,14 @@
+package org.influxdb.querybuilder;
+
+public class Placeholder {
+
+ private final String name;
+
+ Placeholder(final String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
diff --git a/src/test/java/org/influxdb/querybuilder/api/BuiltQueryTest.java b/src/test/java/org/influxdb/querybuilder/api/BuiltQueryTest.java
index 2f9565add..1fcadfd74 100644
--- a/src/test/java/org/influxdb/querybuilder/api/BuiltQueryTest.java
+++ b/src/test/java/org/influxdb/querybuilder/api/BuiltQueryTest.java
@@ -10,10 +10,14 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.influxdb.dto.Query;
+import org.influxdb.querybuilder.FunctionFactory;
import org.influxdb.querybuilder.RawText;
import org.influxdb.querybuilder.Where;
import org.junit.jupiter.api.Test;
+import org.junit.platform.runner.JUnitPlatform;
+import org.junit.runner.RunWith;
+@RunWith(JUnitPlatform.class)
public class BuiltQueryTest {
private static final String DATABASE = "testdb";
@@ -973,4 +977,12 @@ public void multipleDatabaseBackReferenceing() {
assertEquals(query.getDatabase(), select.getDatabase());
}
+ @Test
+ public void testBoundParameters() {
+ Query query = select().column("a").from(DATABASE, "b")
+ .where(eq("c", FunctionFactory.placeholder("d"))).bindParameter("d", 3);
+ assertEquals("SELECT a FROM b WHERE c = $d;", query.getCommand());
+ assertEquals(Query.encode("{\"d\":3}"), query.getParameterJsonWithUrlEncoded());
+ assertEquals(DATABASE, query.getDatabase());
+ }
}
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy