Rename new sortkey index field to sortkey2
For technical reasons googlesource.com's secondary index implementation needs to construct a document containing the union of all fields from all active write schema versions; for this reason we don't allow distinct fields in different versions to have the same name. This fact was missed in Icb760dba. Don't bump the schema version since that change has only been submitted for a few hours. Change-Id: I4f8a2e515372be3a4b4a145a0b54eef864dcea00
This commit is contained in:

committed by
Shawn Pearce

parent
ef78661c29
commit
258c641226
@@ -153,7 +153,7 @@ public class ChangeField {
|
||||
*/
|
||||
public static final FieldDef<ChangeData, Long> SORTKEY =
|
||||
new FieldDef.Single<ChangeData, Long>(
|
||||
"sortkey", FieldType.LONG, true) {
|
||||
"sortkey2", FieldType.LONG, true) {
|
||||
@Override
|
||||
public Long get(ChangeData input, FillArgs args)
|
||||
throws OrmException {
|
||||
|
@@ -278,8 +278,8 @@ public class IndexRewriteImpl implements ChangeQueryRewriter {
|
||||
new QueryRewriter.Definition<ChangeData, BasicRewritesImpl>(
|
||||
BasicRewritesImpl.class, SqlRewriterImpl.BUILDER);
|
||||
@Inject
|
||||
BasicRewritesImpl(Provider<ReviewDb> db) {
|
||||
super(mydef, db);
|
||||
BasicRewritesImpl(Provider<ReviewDb> db, IndexCollection indexes) {
|
||||
super(mydef, db, indexes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -14,9 +14,13 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.common.Nullable;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.ChangeUtil;
|
||||
import com.google.gerrit.server.index.ChangeIndex;
|
||||
import com.google.gerrit.server.index.IndexCollection;
|
||||
import com.google.gerrit.server.index.Schema;
|
||||
import com.google.gerrit.server.query.IntPredicate;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gerrit.server.query.QueryRewriter;
|
||||
@@ -32,13 +36,20 @@ public abstract class BasicChangeRewrites extends QueryRewriter<ChangeData> {
|
||||
null, null, null, null, null, //
|
||||
null, null, null, null, null), null);
|
||||
|
||||
static Schema<ChangeData> schema(@Nullable IndexCollection indexes) {
|
||||
ChangeIndex index = indexes != null ? indexes.getSearchIndex() : null;
|
||||
return index != null ? index.getSchema() : null;
|
||||
}
|
||||
|
||||
protected final Provider<ReviewDb> dbProvider;
|
||||
private final IndexCollection indexes;
|
||||
|
||||
protected BasicChangeRewrites(
|
||||
Definition<ChangeData, ? extends QueryRewriter<ChangeData>> def,
|
||||
Provider<ReviewDb> dbProvider) {
|
||||
Provider<ReviewDb> dbProvider, IndexCollection indexes) {
|
||||
super(def);
|
||||
this.dbProvider = dbProvider;
|
||||
this.indexes = indexes;
|
||||
}
|
||||
|
||||
@Rewrite("-status:open")
|
||||
@@ -74,7 +85,7 @@ public abstract class BasicChangeRewrites extends QueryRewriter<ChangeData> {
|
||||
@Rewrite("sortkey_before:z A=(age:*)")
|
||||
public Predicate<ChangeData> r00_ageToSortKey(@Named("A") AgePredicate a) {
|
||||
String cut = ChangeUtil.sortKey(a.getCut(), Integer.MAX_VALUE);
|
||||
return and(new SortKeyPredicate.Before(dbProvider, cut), a);
|
||||
return and(new SortKeyPredicate.Before(schema(indexes), dbProvider, cut), a);
|
||||
}
|
||||
|
||||
@NoCostComputation
|
||||
|
@@ -579,12 +579,14 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
|
||||
|
||||
@Operator
|
||||
public Predicate<ChangeData> sortkey_after(String sortKey) {
|
||||
return new SortKeyPredicate.After(args.dbProvider, sortKey);
|
||||
return new SortKeyPredicate.After(
|
||||
BasicChangeRewrites.schema(args.indexes), args.dbProvider, sortKey);
|
||||
}
|
||||
|
||||
@Operator
|
||||
public Predicate<ChangeData> sortkey_before(String sortKey) {
|
||||
return new SortKeyPredicate.Before(args.dbProvider, sortKey);
|
||||
return new SortKeyPredicate.Before(
|
||||
BasicChangeRewrites.schema(args.indexes), args.dbProvider, sortKey);
|
||||
}
|
||||
|
||||
@Operator
|
||||
|
@@ -14,6 +14,10 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.gerrit.server.index.ChangeField.SORTKEY;
|
||||
|
||||
import com.google.gerrit.common.Nullable;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.ChangeUtil;
|
||||
@@ -27,18 +31,35 @@ import com.google.inject.Provider;
|
||||
public abstract class SortKeyPredicate extends IndexPredicate<ChangeData> {
|
||||
@SuppressWarnings("deprecation")
|
||||
private static long parseSortKey(Schema<ChangeData> schema, String value) {
|
||||
FieldDef<ChangeData, ?> field = schema.getFields().get(ChangeField.SORTKEY.getName());
|
||||
if (field == ChangeField.SORTKEY) {
|
||||
FieldDef<ChangeData, ?> field = schema.getFields().get(SORTKEY.getName());
|
||||
if (field == SORTKEY) {
|
||||
return ChangeUtil.parseSortKey(value);
|
||||
} else {
|
||||
return ChangeField.legacyParseSortKey(value);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private static FieldDef<ChangeData, ?> sortkeyField(Schema<ChangeData> schema) {
|
||||
if (schema == null) {
|
||||
return ChangeField.LEGACY_SORTKEY;
|
||||
}
|
||||
FieldDef<ChangeData, ?> f = schema.getFields().get(SORTKEY.getName());
|
||||
if (f != null) {
|
||||
return f;
|
||||
}
|
||||
return checkNotNull(
|
||||
schema.getFields().get(ChangeField.LEGACY_SORTKEY.getName()),
|
||||
"schema missing sortkey field, found: %s", schema.getFields().keySet());
|
||||
}
|
||||
|
||||
protected final Schema<ChangeData> schema;
|
||||
protected final Provider<ReviewDb> dbProvider;
|
||||
|
||||
SortKeyPredicate(Provider<ReviewDb> dbProvider, String name, String value) {
|
||||
super(ChangeField.SORTKEY, name, value);
|
||||
SortKeyPredicate(Schema<ChangeData> schema, Provider<ReviewDb> dbProvider,
|
||||
String name, String value) {
|
||||
super(sortkeyField(schema), name, value);
|
||||
this.schema = schema;
|
||||
this.dbProvider = dbProvider;
|
||||
}
|
||||
|
||||
@@ -52,8 +73,9 @@ public abstract class SortKeyPredicate extends IndexPredicate<ChangeData> {
|
||||
public abstract SortKeyPredicate copy(String newValue);
|
||||
|
||||
public static class Before extends SortKeyPredicate {
|
||||
Before(Provider<ReviewDb> dbProvider, String value) {
|
||||
super(dbProvider, "sortkey_before", value);
|
||||
Before(@Nullable Schema<ChangeData> schema, Provider<ReviewDb> dbProvider,
|
||||
String value) {
|
||||
super(schema, dbProvider, "sortkey_before", value);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -74,13 +96,14 @@ public abstract class SortKeyPredicate extends IndexPredicate<ChangeData> {
|
||||
|
||||
@Override
|
||||
public Before copy(String newValue) {
|
||||
return new Before(dbProvider, newValue);
|
||||
return new Before(schema, dbProvider, newValue);
|
||||
}
|
||||
}
|
||||
|
||||
public static class After extends SortKeyPredicate {
|
||||
After(Provider<ReviewDb> dbProvider, String value) {
|
||||
super(dbProvider, "sortkey_after", value);
|
||||
After(@Nullable Schema<ChangeData> schema, Provider<ReviewDb> dbProvider,
|
||||
String value) {
|
||||
super(schema, dbProvider, "sortkey_after", value);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -101,7 +124,7 @@ public abstract class SortKeyPredicate extends IndexPredicate<ChangeData> {
|
||||
|
||||
@Override
|
||||
public After copy(String newValue) {
|
||||
return new After(dbProvider, newValue);
|
||||
return new After(schema, dbProvider, newValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -40,7 +40,7 @@ public class SqlRewriterImpl extends BasicChangeRewrites
|
||||
@Inject
|
||||
@VisibleForTesting
|
||||
public SqlRewriterImpl(Provider<ReviewDb> dbProvider) {
|
||||
super(mydef, dbProvider);
|
||||
super(mydef, dbProvider, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -54,7 +54,7 @@ public class IndexRewriteTest extends TestCase {
|
||||
rewrite = new IndexRewriteImpl(
|
||||
indexes,
|
||||
null,
|
||||
new IndexRewriteImpl.BasicRewritesImpl(null),
|
||||
new IndexRewriteImpl.BasicRewritesImpl(null, indexes),
|
||||
new SqlRewriterImpl(null));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user