Use ChangeField.WIP only if the index schema has this field

While the online reindexing goes on, Gerrit still uses the old index
schema version which doesn't contain this field.

Change-Id: I43e81295326e8c99b25cb1fb7dc33ad040b94cad
Signed-off-by: Edwin Kempin <ekempin@google.com>
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 22e8d58..099a3d1 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
@@ -572,9 +572,12 @@
     }
 
     if ("reviewer".equalsIgnoreCase(value)) {
-      return Predicate.and(
-          Predicate.not(new BooleanPredicate(ChangeField.WIP, args.fillArgs)),
-          ReviewerPredicate.reviewer(args, self()));
+      if (args.getSchema().hasField(ChangeField.WIP)) {
+        return Predicate.and(
+            Predicate.not(new BooleanPredicate(ChangeField.WIP, args.fillArgs)),
+            ReviewerPredicate.reviewer(args, self()));
+      }
+      return ReviewerPredicate.reviewer(args, self());
     }
 
     if ("cc".equalsIgnoreCase(value)) {
@@ -606,7 +609,10 @@
     }
 
     if ("wip".equalsIgnoreCase(value)) {
-      return new BooleanPredicate(ChangeField.WIP, args.fillArgs);
+      if (args.getSchema().hasField(ChangeField.WIP)) {
+        return new BooleanPredicate(ChangeField.WIP, args.fillArgs);
+      }
+      throw new QueryParseException("'is:wip' operator is not supported by change index version");
     }
 
     try {
@@ -962,9 +968,12 @@
 
   @Operator
   public Predicate<ChangeData> reviewer(String who) throws QueryParseException, OrmException {
-    return Predicate.and(
-        Predicate.not(new BooleanPredicate(ChangeField.WIP, args.fillArgs)),
-        reviewerByState(who, ReviewerStateInternal.REVIEWER));
+    if (args.getSchema().hasField(ChangeField.WIP)) {
+      return Predicate.and(
+          Predicate.not(new BooleanPredicate(ChangeField.WIP, args.fillArgs)),
+          reviewerByState(who, ReviewerStateInternal.REVIEWER));
+    }
+    return reviewerByState(who, ReviewerStateInternal.REVIEWER);
   }
 
   @Operator