private static boolean isLateral(SqlNode node) { switch (node.getKind()) { case LATERAL: case UNNEST: // Per SQL std, UNNEST is implicitly LATERAL. return true; case AS: return isLateral(((SqlCall) node).operand(0)); default: return false; } }
final SqlNode left = join.getLeft(); final SqlNode right = join.getRight(); final boolean rightIsLateral = isLateral(right); boolean forceLeftNullable = forceNullable; boolean forceRightNullable = forceNullable;
private static boolean isLateral(SqlNode node) { switch (node.getKind()) { case LATERAL: case UNNEST: // Per SQL std, UNNEST is implicitly LATERAL. return true; case AS: return isLateral(((SqlCall) node).operand(0)); default: return false; } }
private static boolean isLateral(SqlNode node) { switch (node.getKind()) { case LATERAL: case UNNEST: // Per SQL std, UNNEST is implicitly LATERAL. return true; case AS: return isLateral(((SqlCall) node).operand(0)); default: return false; } }
final SqlNode left = join.getLeft(); final SqlNode right = join.getRight(); final boolean rightIsLateral = isLateral(right); boolean forceLeftNullable = forceNullable; boolean forceRightNullable = forceNullable;
final SqlNode left = join.getLeft(); final SqlNode right = join.getRight(); final boolean rightIsLateral = isLateral(right); boolean forceLeftNullable = forceNullable; boolean forceRightNullable = forceNullable;