@Override public TupleExpression visitLiteral(RexLiteral literal) { TupleExpression tuple; Object value = literal.getValue(); if (value instanceof Number) { tuple = new NumberTupleExpression(value); } else { if (value == null) { tuple = new StringTupleExpression(null); } else if (value instanceof NlsString) { tuple = new StringTupleExpression(((NlsString) value).getValue()); } else { tuple = new StringTupleExpression(value.toString()); } } tuple.setDigest(literal.toString()); return tuple; } }
return new FunctionRender(literal.toString() + "L", ImmutableList.<NullReference>of()); return new FunctionRender(literal.toString() + "D", ImmutableList.<NullReference>of()); return new FunctionRender("Instant.ofEpochMilli(" + Long.toString(((Calendar) literal.getValue()).getTimeInMillis()) + "L)", ImmutableList.of()); default: return new FunctionRender(literal.toString(), ImmutableList.<NullReference>of());
@Override public TupleExpression visitLiteral(RexLiteral literal) { TupleExpression tuple; Object value = literal.getValue(); if (value instanceof Number) { tuple = new NumberTupleExpression(value); } else { if (value == null) { tuple = new StringTupleExpression(null); } else if (value instanceof NlsString) { tuple = new StringTupleExpression(((NlsString) value).getValue()); } else { tuple = new StringTupleExpression(value.toString()); } } tuple.setDigest(literal.toString()); return tuple; } }
final String literal = comparison.literal.toString(); final String prevLiteral = equalityConstantTerms.put(comparison.ref.toString(), literal);
@Test public void testAllPredicatesAggregate1() { final String sql = "select a, max(b) from (\n" + " select empno as a, sal as b from emp where empno = 5)subq\n" + "group by a"; final RelNode rel = convertSql(sql); final RelMetadataQuery mq = RelMetadataQuery.instance(); RelOptPredicateList inputSet = mq.getAllPredicates(rel); ImmutableList<RexNode> pulledUpPredicates = inputSet.pulledUpPredicates; assertThat(pulledUpPredicates.size(), is(1)); RexCall call = (RexCall) pulledUpPredicates.get(0); assertThat(call.getOperands().size(), is(2)); final RexTableInputRef inputRef1 = (RexTableInputRef) call.getOperands().get(0); assertTrue(inputRef1.getQualifiedName().equals(EMP_QNAME)); assertThat(inputRef1.getIndex(), is(0)); final RexLiteral constant = (RexLiteral) call.getOperands().get(1); assertThat(constant.toString(), is("5")); }
@Test public void testAllPredicatesAggregate2() { final String sql = "select * from (select a, max(b) from (\n" + " select empno as a, sal as b from emp)subq\n" + "group by a) \n" + "where a = 5"; final RelNode rel = convertSql(sql); final RelMetadataQuery mq = RelMetadataQuery.instance(); RelOptPredicateList inputSet = mq.getAllPredicates(rel); ImmutableList<RexNode> pulledUpPredicates = inputSet.pulledUpPredicates; assertThat(pulledUpPredicates.size(), is(1)); RexCall call = (RexCall) pulledUpPredicates.get(0); assertThat(call.getOperands().size(), is(2)); final RexTableInputRef inputRef1 = (RexTableInputRef) call.getOperands().get(0); assertTrue(inputRef1.getQualifiedName().equals(EMP_QNAME)); assertThat(inputRef1.getIndex(), is(0)); final RexLiteral constant = (RexLiteral) call.getOperands().get(1); assertThat(constant.toString(), is("5")); }
@Test public void testAllPredicatesAggregate1() { final String sql = "select a, max(b) from (\n" + " select empno as a, sal as b from emp where empno = 5)subq\n" + "group by a"; final RelNode rel = convertSql(sql); final RelMetadataQuery mq = RelMetadataQuery.instance(); RelOptPredicateList inputSet = mq.getAllPredicates(rel); ImmutableList<RexNode> pulledUpPredicates = inputSet.pulledUpPredicates; assertThat(pulledUpPredicates.size(), is(1)); RexCall call = (RexCall) pulledUpPredicates.get(0); assertThat(call.getOperands().size(), is(2)); final RexTableInputRef inputRef1 = (RexTableInputRef) call.getOperands().get(0); assertTrue(inputRef1.getQualifiedName().equals(EMP_QNAME)); assertThat(inputRef1.getIndex(), is(0)); final RexLiteral constant = (RexLiteral) call.getOperands().get(1); assertThat(constant.toString(), is("5")); }
@Test public void testAllPredicatesAggregate2() { final String sql = "select * from (select a, max(b) from (\n" + " select empno as a, sal as b from emp)subq\n" + "group by a) \n" + "where a = 5"; final RelNode rel = convertSql(sql); final RelMetadataQuery mq = RelMetadataQuery.instance(); RelOptPredicateList inputSet = mq.getAllPredicates(rel); ImmutableList<RexNode> pulledUpPredicates = inputSet.pulledUpPredicates; assertThat(pulledUpPredicates.size(), is(1)); RexCall call = (RexCall) pulledUpPredicates.get(0); assertThat(call.getOperands().size(), is(2)); final RexTableInputRef inputRef1 = (RexTableInputRef) call.getOperands().get(0); assertTrue(inputRef1.getQualifiedName().equals(EMP_QNAME)); assertThat(inputRef1.getIndex(), is(0)); final RexLiteral constant = (RexLiteral) call.getOperands().get(1); assertThat(constant.toString(), is("5")); }
@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(); }