Remove all references to deleted change fields

We had lots of hard-coded logic to do slightly different things
depending on which version of a particular field was present in a
schema. For every field that has now been completely removed, we can
remove references including these bits of extra logic.

The difference is especially striking in the sortkey query path. Note
that queries containing sortkeys have already been failing since
servers upgraded to schema version 8 (2.9), which no longer uses this
field.

Change-Id: Ib1fbc9f3aa45bf068b7869ca3aada40dbe4cb1bb
This commit is contained in:
Dave Borowitz
2014-12-18 14:32:29 -08:00
parent 6a2fe90923
commit 90ee0cb3f2
18 changed files with 60 additions and 547 deletions

View File

@@ -41,8 +41,6 @@ import com.google.gerrit.server.query.Predicate;
import com.google.gerrit.server.query.QueryParseException;
import com.google.gerrit.server.query.change.ChangeData;
import com.google.gerrit.server.query.change.ChangeDataSource;
import com.google.gerrit.server.query.change.ChangeQueryBuilder;
import com.google.gerrit.server.query.change.SortKeyPredicate;
import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.ResultSet;
import com.google.inject.Provider;
@@ -108,7 +106,7 @@ class SolrChangeIndex implements ChangeIndex, LifecycleListener {
}
queryBuilder = new QueryBuilder(
schema, new StandardAnalyzer(CharArraySet.EMPTY_SET));
new StandardAnalyzer(CharArraySet.EMPTY_SET));
base = Strings.nullToEmpty(base);
openIndex = new CloudSolrServer(url);
@@ -199,23 +197,15 @@ class SolrChangeIndex implements ChangeIndex, LifecycleListener {
indexes.add(closedIndex);
}
return new QuerySource(indexes, queryBuilder.toQuery(p), start, limit,
getSorts(schema, p));
getSorts());
}
@SuppressWarnings("deprecation")
private static List<SortClause> getSorts(Schema<ChangeData> schema,
Predicate<ChangeData> p) {
if (SortKeyPredicate.hasSortKeyField(schema)) {
boolean reverse = ChangeQueryBuilder.hasNonTrivialSortKeyAfter(schema, p);
return ImmutableList.of(new SortClause(ChangeField.SORTKEY.getName(),
!reverse ? SolrQuery.ORDER.desc : SolrQuery.ORDER.asc));
} else {
return ImmutableList.of(
new SortClause(
ChangeField.UPDATED.getName(), SolrQuery.ORDER.desc),
new SortClause(
ChangeField.LEGACY_ID.getName(), SolrQuery.ORDER.desc));
}
private static List<SortClause> getSorts() {
return ImmutableList.of(
new SortClause(
ChangeField.UPDATED.getName(), SolrQuery.ORDER.desc),
new SortClause(
ChangeField.LEGACY_ID.getName(), SolrQuery.ORDER.desc));
}
private void commit(SolrServer server) throws IOException {
@@ -319,17 +309,8 @@ class SolrChangeIndex implements ChangeIndex, LifecycleListener {
doc.addField(name, value);
}
} else if (type == FieldType.TIMESTAMP) {
@SuppressWarnings("deprecation")
boolean legacy = values.getField() == ChangeField.LEGACY_UPDATED;
if (legacy) {
for (Object value : values.getValues()) {
int t = queryBuilder.toIndexTimeInMinutes((Timestamp) value);
doc.addField(name, t);
}
} else {
for (Object value : values.getValues()) {
doc.addField(name, ((Timestamp) value).getTime());
}
for (Object value : values.getValues()) {
doc.addField(name, ((Timestamp) value).getTime());
}
} else if (type == FieldType.EXACT
|| type == FieldType.PREFIX