@Override public Expression getAllowingNull(String attributeName) { ObjectExpression exp = existingDerivedExpressionNamed(attributeName); // The same (aliased) table cannot participate in a normal join and an outer join. // To help enforce this, if the node already exists if (exp != null) { return exp; } ObjectExpression result = derivedExpressionNamed(attributeName); result.doUseOuterJoin(); return result; }
/** Defines a join between this expression and the target expression based on the ON clause. */ @Override public Expression leftJoin(Expression target, Expression onClause) { join(target, onClause); ((ObjectExpression) target).doUseOuterJoin(); return this; }