public Boolean areColumnsUnique(Values rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { if (rel.tuples.size() < 2) { return true; } final Set<List<Comparable>> set = new HashSet<>(); final List<Comparable> values = new ArrayList<>(); for (ImmutableList<RexLiteral> tuple : rel.tuples) { for (int column : columns) { final RexLiteral literal = tuple.get(column); values.add(literal.isNull() ? NullSentinel.INSTANCE : literal.getValueAs(Comparable.class)); } if (!set.add(ImmutableList.copyOf(values))) { return false; } values.clear(); } return true; }
public Boolean areColumnsUnique(Values rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { if (rel.tuples.size() < 2) { return true; } final Set<List<Comparable>> set = new HashSet<>(); final List<Comparable> values = new ArrayList<>(); for (ImmutableList<RexLiteral> tuple : rel.tuples) { for (int column : columns) { final RexLiteral literal = tuple.get(column); values.add(literal.isNull() ? NullSentinel.INSTANCE : literal.getValueAs(Comparable.class)); } if (!set.add(ImmutableList.copyOf(values))) { return false; } values.clear(); } return true; }
return ((RexLiteral) node).isNull();
return ((RexLiteral) node).isNull();
@Override public String visitLiteral(RexLiteral literal) { RelDataType type = literal.getType(); if (type.getSqlTypeName() == SqlTypeName.BOOLEAN) { if (literal.isNull()) { return "nullBool"; } return literal.toString() + "Literal"; } if (type.getSqlTypeName() == SqlTypeName.INTEGER) { if (literal.isNull()) { return "nullInt"; } return "literal(" + literal.getValue() + ")"; } if (type.getSqlTypeName() == SqlTypeName.VARCHAR) { if (literal.isNull()) { return "nullVarchar"; } } return "/*" + literal.getTypeName().getName() + "*/" + literal.toString(); }
@Override public String visitLiteral(RexLiteral literal) { RelDataType type = literal.getType(); if (type.getSqlTypeName() == SqlTypeName.BOOLEAN) { if (literal.isNull()) { return "nullBool"; } return literal.toString() + "Literal"; } if (type.getSqlTypeName() == SqlTypeName.INTEGER) { if (literal.isNull()) { return "nullInt"; } return "literal(" + literal.getValue() + ")"; } if (type.getSqlTypeName() == SqlTypeName.VARCHAR) { if (literal.isNull()) { return "nullVarchar"; } } return "/*" + literal.getTypeName().getName() + "*/" + literal.toString(); }
switch (a.getKind()) { case LITERAL: return rexBuilder.makeLiteral(!((RexLiteral) a).isNull()); default: throw new AssertionError("every CUSTOM policy needs a handler, "
switch (a.getKind()) { case LITERAL: return rexBuilder.makeLiteral(!((RexLiteral) a).isNull()); default: throw new AssertionError("every CUSTOM policy needs a handler, "
} else if (expression instanceof RexLiteral) { RexLiteral p = (RexLiteral) expression; if (p.isNull()) { return new ConstantExpression(null); } else {
JavaTypeFactory typeFactory, RexImpTable.NullAs nullAs) { if (literal.isNull()) { switch (nullAs) { case TRUE:
JavaTypeFactory typeFactory, RexImpTable.NullAs nullAs) { if (literal.isNull()) { switch (nullAs) { case TRUE: