Fix N1QLExpression keys.

Fix syntax of N1QLExpression keys.

Closes #1064.

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
This commit is contained in:
Michael Reiche
2021-03-31 06:10:42 -07:00
committed by GitHub
parent d16bbff4fe
commit 2e8d655751
2 changed files with 14 additions and 2 deletions

View File

@@ -262,13 +262,14 @@ public class N1QLExpression {
public N1QLExpression keys(Iterable<? extends Serializable> ids) {
StringBuilder sb = new StringBuilder();
Iterator<?> it = ids.iterator();
// TODO: really? Lets do better.
sb.append("[");
while (it.hasNext()) {
sb.append(i(it.next().toString()));
sb.append(s(it.next().toString()));
if (it.hasNext()) {
sb.append(",");
}
}
sb.append("]");
return infix("USE KEYS", toString(), sb.toString());
}

View File

@@ -28,6 +28,8 @@ import org.junit.jupiter.api.Test;
import com.couchbase.client.java.json.JsonArray;
import java.util.Arrays;
/**
* @author Mauro Monti
*/
@@ -251,6 +253,15 @@ class QueryCriteriaTests {
assertEquals("not( (`name`) )", c.export());
}
@Test
void testKeys() {
N1QLExpression expression = N1QLExpression.x("");
assertEquals(" USE KEYS [\"a\",\"b\"]", expression.keys(Arrays.asList("a", "b")).toString());
assertEquals(" USE KEYS [\"a\"]", expression.keys(Arrays.asList("a")).toString());
assertEquals(" USE KEYS []", expression.keys(Arrays.asList()).toString());
}
@Test // https://github.com/spring-projects/spring-data-couchbase/issues/1066
void testCriteriaCorrectlyEscapedWhenUsingMetaOnLHS() {
final String bucketName = "sample-bucket";