static Predicate.Op getOp(String s) throws simpledb.exceptions.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.exceptions.ParsingException("Unknown predicate " + s);
    }