Skip to content

Commit 014023a

Browse files
committed
refactor and pass tests
1 parent 45b5bf7 commit 014023a

File tree

6 files changed

+36
-116
lines changed

6 files changed

+36
-116
lines changed

query-builder/src/main/java/com/datastax/oss/driver/api/querybuilder/QueryBuilder.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import com.datastax.oss.driver.api.core.CqlIdentifier;
2121
import com.datastax.oss.driver.api.core.context.DriverContext;
22-
import com.datastax.oss.driver.api.core.data.CqlVector;
2322
import com.datastax.oss.driver.api.core.metadata.token.Token;
2423
import com.datastax.oss.driver.api.core.type.DataType;
2524
import com.datastax.oss.driver.api.core.type.DataTypes;
@@ -30,7 +29,6 @@
3029
import com.datastax.oss.driver.api.querybuilder.delete.DeleteSelection;
3130
import com.datastax.oss.driver.api.querybuilder.insert.InsertInto;
3231
import com.datastax.oss.driver.api.querybuilder.relation.Relation;
33-
import com.datastax.oss.driver.api.querybuilder.select.Ann;
3432
import com.datastax.oss.driver.api.querybuilder.select.SelectFrom;
3533
import com.datastax.oss.driver.api.querybuilder.select.Selector;
3634
import com.datastax.oss.driver.api.querybuilder.term.Term;
@@ -45,7 +43,6 @@
4543
import com.datastax.oss.driver.internal.querybuilder.DefaultRaw;
4644
import com.datastax.oss.driver.internal.querybuilder.delete.DefaultDelete;
4745
import com.datastax.oss.driver.internal.querybuilder.insert.DefaultInsert;
48-
import com.datastax.oss.driver.internal.querybuilder.select.DefaultAnn;
4946
import com.datastax.oss.driver.internal.querybuilder.select.DefaultBindMarker;
5047
import com.datastax.oss.driver.internal.querybuilder.select.DefaultSelect;
5148
import com.datastax.oss.driver.internal.querybuilder.term.BinaryArithmeticTerm;
@@ -541,12 +538,4 @@ public static Truncate truncate(@Nullable String keyspace, @NonNull String table
541538
return truncate(
542539
keyspace == null ? null : CqlIdentifier.fromCql(keyspace), CqlIdentifier.fromCql(table));
543540
}
544-
545-
public static Ann annOf(@NonNull CqlIdentifier cqlIdentifier, @NonNull CqlVector<Number> vector) {
546-
return new DefaultAnn(cqlIdentifier, vector);
547-
}
548-
549-
public static Ann annOf(@NonNull String cqlIdentifier, @NonNull CqlVector<Number> vector) {
550-
return new DefaultAnn(CqlIdentifier.fromCql(cqlIdentifier), vector);
551-
}
552541
}

query-builder/src/main/java/com/datastax/oss/driver/api/querybuilder/select/Ann.java

Lines changed: 0 additions & 22 deletions
This file was deleted.

query-builder/src/main/java/com/datastax/oss/driver/api/querybuilder/select/Select.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package com.datastax.oss.driver.api.querybuilder.select;
1919

2020
import com.datastax.oss.driver.api.core.CqlIdentifier;
21+
import com.datastax.oss.driver.api.core.data.CqlVector;
2122
import com.datastax.oss.driver.api.core.metadata.schema.ClusteringOrder;
2223
import com.datastax.oss.driver.api.querybuilder.BindMarker;
2324
import com.datastax.oss.driver.api.querybuilder.BuildableQuery;
@@ -146,8 +147,16 @@ default Select orderBy(@NonNull String columnName, @NonNull ClusteringOrder orde
146147
return orderBy(CqlIdentifier.fromCql(columnName), order);
147148
}
148149

150+
/**
151+
* Shortcut for {@link #orderBy(CqlIdentifier, CqlVector)}, adding an ORDER BY ... ANN OF ...
152+
* clause
153+
*/
154+
@NonNull
155+
Select orderBy(@NonNull String columnName, @NonNull CqlVector<? extends Number> ann);
156+
157+
/** Adds the ORDER BY ... ANN OF ... clause */
149158
@NonNull
150-
Select orderBy(@NonNull Ann ann);
159+
Select orderBy(@NonNull CqlIdentifier columnId, @NonNull CqlVector<? extends Number> ann);
151160
/**
152161
* Adds a LIMIT clause to this query with a literal value.
153162
*

query-builder/src/main/java/com/datastax/oss/driver/internal/querybuilder/select/DefaultAnn.java

Lines changed: 0 additions & 73 deletions
This file was deleted.

query-builder/src/main/java/com/datastax/oss/driver/internal/querybuilder/select/DefaultSelect.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@
2020
import com.datastax.oss.driver.api.core.CqlIdentifier;
2121
import com.datastax.oss.driver.api.core.cql.SimpleStatement;
2222
import com.datastax.oss.driver.api.core.cql.SimpleStatementBuilder;
23+
import com.datastax.oss.driver.api.core.data.CqlVector;
2324
import com.datastax.oss.driver.api.core.metadata.schema.ClusteringOrder;
2425
import com.datastax.oss.driver.api.querybuilder.BindMarker;
26+
import com.datastax.oss.driver.api.querybuilder.QueryBuilder;
2527
import com.datastax.oss.driver.api.querybuilder.relation.Relation;
26-
import com.datastax.oss.driver.api.querybuilder.select.Ann;
2728
import com.datastax.oss.driver.api.querybuilder.select.Select;
2829
import com.datastax.oss.driver.api.querybuilder.select.SelectFrom;
2930
import com.datastax.oss.driver.api.querybuilder.select.Selector;
@@ -276,14 +277,20 @@ public Select orderBy(@NonNull CqlIdentifier columnId, @NonNull ClusteringOrder
276277

277278
@NonNull
278279
@Override
279-
public Select orderByIds(@NonNull Map<CqlIdentifier, ClusteringOrder> newOrderings) {
280-
return withOrderings(ImmutableCollections.concat(orderings, newOrderings));
280+
public Select orderBy(@NonNull String columnName, @NonNull CqlVector<? extends Number> ann) {
281+
return withAnn(new Ann(CqlIdentifier.fromCql(columnName), ann));
282+
}
283+
284+
@NonNull
285+
@Override
286+
public Select orderBy(@NonNull CqlIdentifier columnId, @NonNull CqlVector<? extends Number> ann) {
287+
return withAnn(new Ann(columnId, ann));
281288
}
282289

283290
@NonNull
284291
@Override
285-
public Select orderBy(@NonNull Ann ann) {
286-
return withAnn(ann);
292+
public Select orderByIds(@NonNull Map<CqlIdentifier, ClusteringOrder> newOrderings) {
293+
return withOrderings(ImmutableCollections.concat(orderings, newOrderings));
287294
}
288295

289296
@NonNull
@@ -435,7 +442,8 @@ public String asCql() {
435442
CqlHelper.append(groupByClauses, builder, " GROUP BY ", ",", null);
436443

437444
if (ann != null) {
438-
builder.append(" ").append(this.ann.asCql());
445+
builder.append(" ORDER BY ").append(this.ann.columnId.asCql(true)).append(" ANN OF ");
446+
QueryBuilder.literal(ann.vector).appendTo(builder);
439447
} else {
440448
boolean first = true;
441449
for (Map.Entry<CqlIdentifier, ClusteringOrder> entry : orderings.entrySet()) {
@@ -559,4 +567,14 @@ public boolean allowsFiltering() {
559567
public String toString() {
560568
return asCql();
561569
}
570+
571+
public static class Ann {
572+
private final CqlVector<? extends Number> vector;
573+
private final CqlIdentifier columnId;
574+
575+
private Ann(CqlIdentifier columnId, CqlVector<? extends Number> vector) {
576+
this.vector = vector;
577+
this.columnId = columnId;
578+
}
579+
}
562580
}

query-builder/src/test/java/com/datastax/oss/driver/api/querybuilder/select/SelectOrderingTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import static com.datastax.oss.driver.api.core.metadata.schema.ClusteringOrder.ASC;
2121
import static com.datastax.oss.driver.api.core.metadata.schema.ClusteringOrder.DESC;
2222
import static com.datastax.oss.driver.api.querybuilder.Assertions.assertThat;
23-
import static com.datastax.oss.driver.api.querybuilder.QueryBuilder.annOf;
2423
import static com.datastax.oss.driver.api.querybuilder.QueryBuilder.literal;
2524
import static com.datastax.oss.driver.api.querybuilder.QueryBuilder.selectFrom;
2625

@@ -83,7 +82,7 @@ public void should_generate_ann_clause() {
8382
selectFrom("foo")
8483
.all()
8584
.where(Relation.column("k").isEqualTo(literal(1)))
86-
.orderBy(annOf("c1", CqlVector.newInstance(0.1, 0.2, 0.3))))
85+
.orderBy("c1", CqlVector.newInstance(0.1, 0.2, 0.3)))
8786
.hasCql("SELECT * FROM foo WHERE k=1 ORDER BY c1 ANN OF [0.1, 0.2, 0.3]");
8887
}
8988

@@ -93,6 +92,6 @@ public void should_fail_when_provided_ann_with_other_orderings() {
9392
.all()
9493
.where(Relation.column("k").isEqualTo(literal(1)))
9594
.orderBy("c1", ASC)
96-
.orderBy(annOf("c1", CqlVector.newInstance(0.1, 0.2, 0.3)));
95+
.orderBy("c2", CqlVector.newInstance(0.1, 0.2, 0.3));
9796
}
9897
}

0 commit comments

Comments
 (0)