/** * Creates a literal of the default value for the given type. * * @see #makeZeroLiteral(org.eigenbase.reltype.RelDataType, boolean) * * @param type Type * @return Simple literal */ public RexLiteral makeZeroLiteral(RelDataType type) { return (RexLiteral) makeZeroLiteral(type, false); }
private RexNode makeCastExactToBoolean(RelDataType toType, RexNode exp) { return makeCall( toType, SqlStdOperatorTable.notEqualsOperator, ImmutableList.<RexNode>of( exp, makeZeroLiteral(exp.getType()))); }
private RexNode makeCastExactToBoolean(RelDataType toType, RexNode exp) { return makeCall( toType, SqlStdOperatorTable.NOT_EQUALS, ImmutableList.of(exp, makeZeroLiteral(exp.getType()))); }
private MutableRel invert(List<Pair<RexNode, String>> namedProjects, MutableRel input, RexShuttle shuttle) { if (LOGGER.isLoggable(Level.FINER)) { LOGGER.finer("SubstitutionVisitor: invert:\n" + "projects: " + namedProjects + "\n" + "input: " + input + "\n" + "project: " + shuttle + "\n"); } final List<RexNode> exprList = new ArrayList<RexNode>(); final RexBuilder rexBuilder = input.cluster.getRexBuilder(); final List<RexNode> projects = Pair.left(namedProjects); for (RexNode expr : projects) { exprList.add(rexBuilder.makeZeroLiteral(expr.getType())); } for (Ord<RexNode> expr : Ord.zip(projects)) { final RexNode node = expr.e.accept(shuttle); if (node == null) { throw MatchFailed.INSTANCE; } exprList.set(expr.i, node); } return MutableProject.of(input, exprList, Pair.right(namedProjects)); }
private MutableRel invert(MutableRel model, MutableRel input, MutableProject project) { if (LOGGER.isLoggable(Level.FINER)) { LOGGER.finer("SubstitutionVisitor: invert:\n" + "model: " + model + "\n" + "input: " + input + "\n" + "project: " + project + "\n"); } final List<RexNode> exprList = new ArrayList<RexNode>(); final RexBuilder rexBuilder = model.cluster.getRexBuilder(); for (RelDataTypeField field : model.getRowType().getFieldList()) { exprList.add(rexBuilder.makeZeroLiteral(field.getType())); } for (Ord<RexNode> expr : Ord.zip(project.getProjects())) { if (expr.e instanceof RexInputRef) { final int target = ((RexInputRef) expr.e).getIndex(); exprList.set(expr.i, rexBuilder.ensureType(expr.e.getType(), RexInputRef.of(target, input.rowType), false)); } else { throw MatchFailed.INSTANCE; } } return MutableProject.of(model.rowType, input, exprList); } }
private RexNode makeCastBooleanToExact(RelDataType toType, RexNode exp) { final RexNode casted = makeCall( SqlStdOperatorTable.caseOperator, exp, makeExactLiteral(BigDecimal.ONE, toType), makeZeroLiteral(toType)); if (!exp.getType().isNullable()) { return casted; } return makeCall( toType, SqlStdOperatorTable.caseOperator, ImmutableList.<RexNode>of( makeCall(SqlStdOperatorTable.isNotNullOperator, exp), casted, makeNullLiteral(toType.getSqlTypeName()))); }
private RexNode makeCastBooleanToExact(RelDataType toType, RexNode exp) { final RexNode casted = makeCall( SqlStdOperatorTable.CASE, exp, makeExactLiteral(BigDecimal.ONE, toType), makeZeroLiteral(toType)); if (!exp.getType().isNullable()) { return casted; } return makeCall( toType, SqlStdOperatorTable.CASE, ImmutableList.<RexNode>of( makeCall(SqlStdOperatorTable.IS_NOT_NULL, exp), casted, makeNullLiteral(toType.getSqlTypeName()))); }
exprList.add( source < 0 ? rexBuilder.makeZeroLiteral( field.getType()) : rexBuilder.makeInputRef(
exprList.add( source < 0 ? rexBuilder.makeZeroLiteral(field.getType()) : rexBuilder.makeInputRef(field.getType(), source));