value = ((HiveChar) value).getValue(); calciteLiteral = rexBuilder.makeCharLiteral(asUnicodeString((String) value)); break; case VARCHAR: value = ((HiveVarchar) value).getValue(); calciteLiteral = rexBuilder.makeCharLiteral(asUnicodeString((String) value)); break; case STRING: calciteLiteral = rexBuilder.makeCharLiteral(asUnicodeString((String) value)); break; case DATE:
value = ((HiveChar) value).getValue(); calciteLiteral = rexBuilder.makeCharLiteral(asUnicodeString((String) value)); break; case VARCHAR: value = ((HiveVarchar) value).getValue(); calciteLiteral = rexBuilder.makeCharLiteral(asUnicodeString((String) value)); break; case STRING: calciteLiteral = rexBuilder.makeCharLiteral(asUnicodeString((String) value)); break; case DATE:
public RexLiteral charLiteral(String z) { return rexBuilder.makeCharLiteral( new NlsString(z, null, SqlCollation.COERCIBLE)); }
public RexLiteral charLiteral(String z) { return rexBuilder.makeCharLiteral( new NlsString(z, null, SqlCollation.COERCIBLE)); }
@Test public void testSubstring() throws Exception { check((rexBuilder, executor) -> { final List<RexNode> reducedValues = new ArrayList<>(); final RexLiteral hello = rexBuilder.makeCharLiteral( new NlsString("Hello world!", null, null)); final RexNode plus = rexBuilder.makeCall(SqlStdOperatorTable.PLUS, rexBuilder.makeExactLiteral(BigDecimal.ONE), rexBuilder.makeExactLiteral(BigDecimal.ONE)); RexLiteral four = rexBuilder.makeExactLiteral(BigDecimal.valueOf(4)); final RexNode substring = rexBuilder.makeCall(SqlStdOperatorTable.SUBSTRING, hello, plus, four); executor.reduce(rexBuilder, ImmutableList.of(substring, plus), reducedValues); assertThat(reducedValues.size(), equalTo(2)); assertThat(reducedValues.get(0), instanceOf(RexLiteral.class)); assertThat(((RexLiteral) reducedValues.get(0)).getValue2(), equalTo((Object) "ello")); // substring('Hello world!, 2, 4) assertThat(reducedValues.get(1), instanceOf(RexLiteral.class)); assertThat(((RexLiteral) reducedValues.get(1)).getValue2(), equalTo((Object) 2L)); }); }
@Test public void testSubstring() throws Exception { check((rexBuilder, executor) -> { final List<RexNode> reducedValues = new ArrayList<>(); final RexLiteral hello = rexBuilder.makeCharLiteral( new NlsString("Hello world!", null, null)); final RexNode plus = rexBuilder.makeCall(SqlStdOperatorTable.PLUS, rexBuilder.makeExactLiteral(BigDecimal.ONE), rexBuilder.makeExactLiteral(BigDecimal.ONE)); RexLiteral four = rexBuilder.makeExactLiteral(BigDecimal.valueOf(4)); final RexNode substring = rexBuilder.makeCall(SqlStdOperatorTable.SUBSTRING, hello, plus, four); executor.reduce(rexBuilder, ImmutableList.of(substring, plus), reducedValues); assertThat(reducedValues.size(), equalTo(2)); assertThat(reducedValues.get(0), instanceOf(RexLiteral.class)); assertThat(((RexLiteral) reducedValues.get(0)).getValue2(), equalTo((Object) "ello")); // substring('Hello world!, 2, 4) assertThat(reducedValues.get(1), instanceOf(RexLiteral.class)); assertThat(((RexLiteral) reducedValues.get(1)).getValue2(), equalTo((Object) 2L)); }); }
switch (type.getSqlTypeName()) { case CHAR: return makeCharLiteral(padRight((NlsString) value, type.getPrecision())); case VARCHAR: literal = makeCharLiteral((NlsString) value); if (allowCast) { return makeCast(type, literal);
switch (type.getSqlTypeName()) { case CHAR: return makeCharLiteral(padRight((NlsString) value, type.getPrecision())); case VARCHAR: literal = makeCharLiteral((NlsString) value); if (allowCast) { return makeCast(type, literal);
return rexBuilder.makeCharLiteral( new NlsString( Spaces.padRight(unpadded.getValue(), type.getPrecision()),
return rexBuilder.makeCharLiteral( new NlsString( Spaces.padRight(unpadded.getValue(), type.getPrecision()),
return rexBuilder.makeCharLiteral( new NlsString( Spaces.padRight(unpadded.getValue(), type.getPrecision()),
return rexBuilder.makeCharLiteral( new NlsString( Spaces.padRight(unpadded.getValue(), type.getPrecision()),
return rexBuilder.makeCharLiteral(literal.getValueAs(NlsString.class)); case BOOLEAN: return rexBuilder.makeLiteral(literal.getValueAs(Boolean.class));
return rexBuilder.makeCharLiteral(literal.getValueAs(NlsString.class)); case BOOLEAN: return rexBuilder.makeLiteral(literal.getValueAs(Boolean.class));