/** Creates a result based on a join. (Each join could contain one or more * relational expressions.) */ public Result result(SqlNode join, Result leftResult, Result rightResult) { final ImmutableMap.Builder<String, RelDataType> builder = ImmutableMap.builder(); collectAliases(builder, join, Iterables.concat(leftResult.aliases.values(), rightResult.aliases.values()).iterator()); return new Result(join, Expressions.list(Clause.FROM), null, null, builder.build()); }
/** Creates a result based on a join. (Each join could contain one or more * relational expressions.) */ public Result result(SqlNode join, Result leftResult, Result rightResult) { final ImmutableMap.Builder<String, RelDataType> builder = ImmutableMap.builder(); collectAliases(builder, join, Iterables.concat(leftResult.aliases.values(), rightResult.aliases.values()).iterator()); return new Result(join, Expressions.list(Clause.FROM), null, null, builder.build()); }
/** * In join, when the left and right nodes have been generated, * update their alias with 'neededAlias' if not null. */ public Result resetAlias() { if (neededAlias == null) { return this; } else { return new Result(node, clauses, neededAlias, neededType, ImmutableMap.of(neededAlias, neededType)); } } }
/** Creates a result based on a single relational expression. */ public Result result(SqlNode node, Collection<Clause> clauses, RelNode rel, Map<String, RelDataType> aliases) { assert aliases == null || aliases.size() < 2 || aliases instanceof LinkedHashMap || aliases instanceof ImmutableMap : "must use a Map implementation that preserves order"; final String alias2 = SqlValidatorUtil.getAlias(node, -1); final String alias3 = alias2 != null ? alias2 : "t"; final String alias4 = SqlValidatorUtil.uniquify( alias3, aliasSet, SqlValidatorUtil.EXPR_SUGGESTER); if (aliases != null && !aliases.isEmpty() && (!dialect.hasImplicitTableAlias() || aliases.size() > 1)) { return new Result(node, clauses, alias4, rel.getRowType(), aliases); } final String alias5; if (alias2 == null || !alias2.equals(alias4) || !dialect.hasImplicitTableAlias()) { alias5 = alias4; } else { alias5 = null; } return new Result(node, clauses, alias5, rel.getRowType(), ImmutableMap.of(alias4, rel.getRowType())); }
/** Creates a result based on a single relational expression. */ public Result result(SqlNode node, Collection<Clause> clauses, RelNode rel, Map<String, RelDataType> aliases) { assert aliases == null || aliases.size() < 2 || aliases instanceof LinkedHashMap || aliases instanceof ImmutableMap : "must use a Map implementation that preserves order"; final String alias2 = SqlValidatorUtil.getAlias(node, -1); final String alias3 = alias2 != null ? alias2 : "t"; final String alias4 = SqlValidatorUtil.uniquify( alias3, aliasSet, SqlValidatorUtil.EXPR_SUGGESTER); if (aliases != null && !aliases.isEmpty() && (!dialect.hasImplicitTableAlias() || aliases.size() > 1)) { return new Result(node, clauses, alias4, rel.getRowType(), aliases); } final String alias5; if (alias2 == null || !alias2.equals(alias4) || !dialect.hasImplicitTableAlias()) { alias5 = alias4; } else { alias5 = null; } return new Result(node, clauses, alias5, rel.getRowType(), ImmutableMap.of(alias4, rel.getRowType())); }
/** * In join, when the left and right nodes have been generated, * update their alias with 'neededAlias' if not null. */ public Result resetAlias() { if (neededAlias == null) { return this; } else { return new Result(node, clauses, neededAlias, neededType, ImmutableMap.of(neededAlias, neededType)); } } }