Skip to content

Commit e6998e7

Browse files
committed
Fix N1qlExpression keys.
Fix syntax for USE KEYS [ ... ] Closes #1064. Original pull request: #1113. Co-authored-by: mikereiche <[email protected]>
1 parent 32498b0 commit e6998e7

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/main/java/org/springframework/data/couchbase/core/query/N1QLExpression.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -262,13 +262,14 @@ public N1QLExpression returning(N1QLExpression right) {
262262
public N1QLExpression keys(Iterable<? extends Serializable> ids) {
263263
StringBuilder sb = new StringBuilder();
264264
Iterator<?> it = ids.iterator();
265-
// TODO: really? Lets do better.
265+
sb.append("[");
266266
while (it.hasNext()) {
267-
sb.append(i(it.next().toString()));
267+
sb.append(s(it.next().toString()));
268268
if (it.hasNext()) {
269269
sb.append(",");
270270
}
271271
}
272+
sb.append("]");
272273
return infix("USE KEYS", toString(), sb.toString());
273274
}
274275

src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java

+11
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828

2929
import com.couchbase.client.java.json.JsonArray;
3030

31+
import java.util.Arrays;
32+
3133
/**
3234
* @author Mauro Monti
3335
*/
@@ -251,6 +253,15 @@ void testFalse() {
251253
assertEquals("not( (`name`) )", c.export());
252254
}
253255

256+
@Test
257+
void testKeys() {
258+
N1QLExpression expression = N1QLExpression.x("");
259+
assertEquals(" USE KEYS [\"a\",\"b\"]", expression.keys(Arrays.asList("a", "b")).toString());
260+
assertEquals(" USE KEYS [\"a\"]", expression.keys(Arrays.asList("a")).toString());
261+
assertEquals(" USE KEYS []", expression.keys(Arrays.asList()).toString());
262+
}
263+
264+
254265
@Test // https://github.com/spring-projects/spring-data-couchbase/issues/1066
255266
void testCriteriaCorrectlyEscapedWhenUsingMetaOnLHS() {
256267
final String bucketName = "sample-bucket";

0 commit comments

Comments
 (0)