translatePredicate(or.getLeft(), tableName, where);
where.or();
translatePredicate(or.getRight(), tableName, where);
where.closeParen();
} else if (predicate instanceof Union) {
Union union = (Union)predicate;
where = where.openParen();
translatePredicate(union.getLeft(), tableName, where);
where.or();
translatePredicate(union.getRight(), tableName, where);
where.closeParen();
} else if (predicate instanceof Literal) {
Literal literal = (Literal)predicate;
if (literal.isInteger()) return tableName; // do nothing, since this is a path constraint and is handled elsewhere
} else if (predicate instanceof AttributeNameTest) {