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:
Dave Borowitz
2013-09-24 15:39:08 -07:00
committed by Shawn Pearce
parent ef78661c29
commit 258c641226
7 changed files with 55 additions and 19 deletions

View File

@@ -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 {

View File

@@ -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);
}
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}
}
}

View File

@@ -40,7 +40,7 @@ public class SqlRewriterImpl extends BasicChangeRewrites
@Inject
@VisibleForTesting
public SqlRewriterImpl(Provider<ReviewDb> dbProvider) {
super(mydef, dbProvider);
super(mydef, dbProvider, null);
}
@Override

View File

@@ -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));
}