public static Predicate.Op getOp(String s) throws simpledb.ParsingException {
    if (s.equals("="))
      return Predicate.Op.EQUALS;
    if (s.equals(">"))
      return Predicate.Op.GREATER_THAN;
    if (s.equals(">="))
      return Predicate.Op.GREATER_THAN_OR_EQ;
    if (s.equals("<"))
      return Predicate.Op.LESS_THAN;
    if (s.equals("<="))
      return Predicate.Op.LESS_THAN_OR_EQ;
    if (s.equals("LIKE"))
      return Predicate.Op.LIKE;
    if (s.equals("~"))
      return Predicate.Op.LIKE;
    if (s.equals("<>"))
      return Predicate.Op.NOT_EQUALS;
    if (s.equals("!="))
      return Predicate.Op.NOT_EQUALS;

    throw new simpledb.ParsingException("Unknown predicate " + s);
  }