@Override public void visitOrderByClause(OrderByClause node) { inOrderBy = true; super.visitOrderByClause(node); inOrderBy = false; }
@Override public void visitSelectClause(SelectClause node) { inProjection = true; super.visitSelectClause(node); inProjection = false; }
@Override public void visitQuery(SQLQuery node) { super.visitQuery(node); // intentionally does not set limit or offset in the query }
@Override public void visitExpression(Expression node) { super.visitExpression(node); processExpression(node, Arrays.asList(node.lvalue, node.rvalue)); }
@Override public void visitMultiExpression(MultiExpression node) { super.visitMultiExpression(node); processExpression(node, node.predicates); }
@Override public void visitReference(Reference node) { super.visitReference(node); processReference(node); }
@Override public void visitOrderByExpr(OrderByExpr node) { int length = buf.length(); // generates needed joins super.visitOrderByExpr(node); // visit reference if (aliasOrderByColumns) { // but don't use generated values // make the ORDER BY clause uses the aliases instead buf.setLength(length); buf.append(aliasesByName.get(node.reference.name)); } if (node.isDescending) { buf.append(dialect.getDescending()); } }
@Override public void visitExpression(Expression node) { Reference ref = node.lvalue instanceof Reference ? (Reference) node.lvalue : null; String name = ref != null ? ref.name : null; if (name != null && name.startsWith(NXQL.ECM_FULLTEXT) && !NXQL.ECM_FULLTEXT_JOBID.equals(name)) { visitExpressionFulltext(node, name); } else { super.visitExpression(node); } }
@Override public void visitWhereClause(WhereClause node) { if (node != null) { analyzeToplevelPredicates(node.predicate); } simplifyToplevelPredicates(); wherePredicate = new MultiExpression(Operator.AND, toplevelPredicates); super.visitMultiExpression(wherePredicate); }
if (op == Operator.AND || op == Operator.OR || op == Operator.NOT) { builders.add(new ExpressionBuilder(op.toString())); super.visitExpression(node); ExpressionBuilder expr = builders.removeLast(); if (!builders.isEmpty()) {
@Override public void visitSelectClause(SelectClause node) { inSelect = true; super.visitSelectClause(node); inSelect = false; }
@Override public void visitOrderByClause(OrderByClause node) { inOrderBy = true; super.visitOrderByClause(node); inOrderBy = false; }
@Override public void visitExpression(Expression node) { clause.append('('); Operand lvalue = node.lvalue; Operand rvalue = node.rvalue; Column column = null; if (lvalue instanceof Reference) { Reference ref = (Reference) lvalue; if (ref.cast != null) { throw new QueryParseException("Cannot use cast: " + node); } column = getColumn(ref.name); Operator op = node.operator; if (op == Operator.BETWEEN || op == Operator.NOTBETWEEN) { visitExpressionBetween(column, op, (LiteralList) rvalue); } else if (op == Operator.LIKE || op == Operator.NOTLIKE) { visitExpressionLike(column, op, rvalue); } else if (op == Operator.ILIKE || op == Operator.NOTILIKE) { visitExpressionILike(column, op, rvalue); } else { visitExpression(column, op, rvalue); } } else { super.visitExpression(node); } clause.append(')'); }
@Override public void visitSelectClause(SelectClause node) { inSelect = true; super.visitSelectClause(node); inSelect = false; }
super.visitExpression(node); l.get(1).accept(this); } else { super.visitExpression(node);