protected void visitExpressionWhereFalseIsNull(Expression node) { String name = ((Reference) node.lvalue).name; boolean bool = getBooleanRValue(name, node); node.lvalue.accept(this); if (bool) { buf.append(" = "); buf.append(dialect.toBooleanValueString(true)); } else { buf.append(" IS NULL"); } }
protected void visitExpressionWhereFalseMayBeNull(Expression node) { String name = ((Reference) node.lvalue).name; boolean bool = getBooleanRValue(name, node); if (bool) { node.lvalue.accept(this); buf.append(" = "); buf.append(dialect.toBooleanValueString(true)); } else { buf.append('('); node.lvalue.accept(this); buf.append(" = "); buf.append(dialect.toBooleanValueString(false)); buf.append(" OR "); node.lvalue.accept(this); buf.append(" IS NULL)"); } }
protected void visitExpressionILike(Column column, Operator op, Operand rvalue) { if (directory.getDialect().supportsIlike()) { visitExpression(column, op, rvalue); } else { clause.append("LOWER("); visitColumn(column); clause.append(") "); if (op == Operator.NOTILIKE) { clause.append("NOT "); } clause.append("LIKE"); clause.append(" LOWER("); rvalue.accept(this); clause.append(")"); addLikeEscaping(); } }
protected void visitExpressionIlike(Column column, Operator op, Operand rvalue, String lvalueName, int arrayElementIndex) { if (column.isArray() && arrayElementIndex == -1) { if (lvalueName == null) { throw new AssertionError("Name is required when lvalue is an array"); } boolean positive = op == Operator.ILIKE; String sql = dialect.getArrayIlikeSql(column, lvalueName, positive, dataHierTable); buf.append(sql); whereParams.add(getSerializableLiteral((Literal) rvalue)); } else if (dialect.supportsIlike()) { visitSimpleExpression(column, op, rvalue, null, arrayElementIndex); } else { buf.append("LOWER("); visitReference(column, arrayElementIndex); buf.append(") "); if (op == Operator.NOTILIKE) { buf.append("NOT "); } buf.append("LIKE"); buf.append(" LOWER("); rvalue.accept(this); buf.append(")"); addLikeEscaping(); } }
protected void visitSimpleExpression(Column column, Operator op, Operand rvalue, String cast, int arrayElementIndex) { visitReference(column, cast, arrayElementIndex); op.accept(this); boolean oldVisitingId = visitingId; visitingId = column.getType().isId(); rvalue.accept(this); visitingId = oldVisitingId; }
protected void visitExpression(Column column, Operator op, Operand rvalue) { visitColumn(column); if (op == Operator.EQ || op == Operator.NOTEQ) { if (column.getType().spec == ColumnSpec.BOOLEAN) { rvalue = getBooleanLiteral(rvalue); } if (directory.getDialect().hasNullEmptyString() && rvalue instanceof StringLiteral && ((StringLiteral) rvalue).value.isEmpty()) { // see NXP-6172, empty values are Null in Oracle op = op == Operator.EQ ? Operator.ISNULL : Operator.ISNOTNULL; rvalue = null; } } op.accept(this); if (rvalue != null) { rvalue.accept(this); } }
checkDateLiteralForCast(l.get(1), node); node.lvalue.accept(this); buf.append(' '); op.accept(this);