From 25078217adb7b7660fd8c7e937c5aeba6657176d Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Fri, 11 Oct 2013 10:44:23 -0700 Subject: [PATCH] Fix status:closed query There was no rewrite rule matching this so the query processor helpfully ANDed in status:open. Add one. Change-Id: Ia9afcf0661d6e89d633588db3d0e7f4f60488477 --- .../query/change/ChangeQueryBuilder.java | 28 +++++++++++-------- .../server/query/change/SqlRewriterImpl.java | 8 ++++++ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java index 5ede45274a..9fc3dbf030 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java @@ -557,18 +557,24 @@ public class ChangeQueryBuilder extends QueryBuilder { return limit(Integer.parseInt(limit)); } - public Predicate limit(int limit) { - return new IntPredicate(FIELD_LIMIT, limit) { - @Override - public boolean match(ChangeData object) { - return true; - } + static class LimitPredicate extends IntPredicate { + LimitPredicate(int limit) { + super(FIELD_LIMIT, limit); + } - @Override - public int getCost() { - return 0; - } - }; + @Override + public boolean match(ChangeData object) { + return true; + } + + @Override + public int getCost() { + return 0; + } + } + + public Predicate limit(int limit) { + return new LimitPredicate(limit); } @Operator diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/SqlRewriterImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/SqlRewriterImpl.java index c94ee12e5e..bcc4859b4e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/SqlRewriterImpl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/SqlRewriterImpl.java @@ -23,6 +23,7 @@ import com.google.gerrit.server.query.IntPredicate; import com.google.gerrit.server.query.Predicate; import com.google.gerrit.server.query.QueryRewriter; import com.google.gerrit.server.query.RewritePredicate; +import com.google.gerrit.server.query.change.ChangeQueryBuilder.LimitPredicate; import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.ResultSet; import com.google.inject.Inject; @@ -538,6 +539,13 @@ public class SqlRewriterImpl extends BasicChangeRewrites return or(r30_byReviewerOpen(r), r30_byReviewerClosed(r)); } + @Rewrite("status:closed") + public Predicate r99_allClosed() { + return r20_byClosedNext( + new SortKeyPredicate.Before(null, dbProvider, "z"), + new LimitPredicate(Integer.MAX_VALUE)); + } + @Rewrite("status:submitted") public Predicate r99_allSubmitted() { return new ChangeSource(50) {