org.apache.calcite.rex.RexBuilder.makeLiteral()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(10.5k)|赞(0)|评价(0)|浏览(137)

本文整理了Java中org.apache.calcite.rex.RexBuilder.makeLiteral方法的一些代码示例,展示了RexBuilder.makeLiteral的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RexBuilder.makeLiteral方法的具体详情如下:
包路径:org.apache.calcite.rex.RexBuilder
类名称:RexBuilder
方法名:makeLiteral

RexBuilder.makeLiteral介绍

[英]Internal method to create a call to a literal. Code outside this package should call one of the type-specific methods such as #makeDateLiteral(DateString), #makeLiteral(boolean), #makeLiteral(String).
[中]创建对文本的调用的内部方法。这个包之外的代码应该调用一个特定于类型的方法,比如#makeDateLiteral(DateString)、#makeLiteral(boolean)、#makeLiteral(String)。

代码示例

代码示例来源:origin: apache/hive

private static List<RexNode> createInClauses(RexBuilder rexBuilder, Map<String, RexNode> stringToExpr,
    Multimap<String, String> inLHSExprToRHSExprs) {
 List<RexNode> newExpressions = Lists.newArrayList();
 for (Entry<String,Collection<String>> entry : inLHSExprToRHSExprs.asMap().entrySet()) {
  String ref = entry.getKey();
  Collection<String> exprs = entry.getValue();
  if (exprs.isEmpty()) {
   newExpressions.add(rexBuilder.makeLiteral(false));
  } else {
   List<RexNode> newOperands = new ArrayList<RexNode>(exprs.size() + 1);
   newOperands.add(stringToExpr.get(ref));
   for (String expr : exprs) {
    newOperands.add(stringToExpr.get(expr));
   }
   newExpressions.add(rexBuilder.makeCall(HiveIn.INSTANCE, newOperands));
  }
 }
 return newExpressions;
}

代码示例来源:origin: apache/incubator-druid

private RexNode integerLiteral(final int integer)
{
 return rexBuilder.makeLiteral(new BigDecimal(integer), typeFactory.createSqlType(SqlTypeName.INTEGER), true);
}

代码示例来源:origin: apache/incubator-druid

SqlStdOperatorTable.EQUALS,
leftExpressions.get(i),
getCluster().getRexBuilder().makeLiteral(value)

代码示例来源:origin: apache/hive

@Override
public double estimateRowCount(RelMetadataQuery mq) {
 return mq.getDistinctRowCount(this, groupSet, getCluster().getRexBuilder().makeLiteral(true));
}

代码示例来源:origin: apache/drill

@Override
public double estimateRowCount(RelMetadataQuery mq) {
 return mq.getDistinctRowCount(this, groupSet, getCluster().getRexBuilder().makeLiteral(true));
}

代码示例来源:origin: apache/hive

public static Double getDistinctRowCount(RelNode r, RelMetadataQuery mq, int indx) {
 ImmutableBitSet bitSetOfRqdProj = ImmutableBitSet.of(indx);
 return mq.getDistinctRowCount(r, bitSetOfRqdProj, r
   .getCluster().getRexBuilder().makeLiteral(true));
}

代码示例来源:origin: apache/drill

public static Double getDistinctRowCount(RelNode r, RelMetadataQuery mq, int indx) {
 ImmutableBitSet bitSetOfRqdProj = ImmutableBitSet.of(indx);
 return mq.getDistinctRowCount(r, bitSetOfRqdProj, r
   .getCluster().getRexBuilder().makeLiteral(true));
}

代码示例来源:origin: apache/incubator-druid

@Test
public void testTimeShift()
{
 testExpression(
   rexBuilder.makeCall(
     new TimeShiftOperatorConversion().calciteOperator(),
     inputRef("t"),
     rexBuilder.makeLiteral("PT2H"),
     rexBuilder.makeLiteral(-3, typeFactory.createSqlType(SqlTypeName.INTEGER), true)
   ),
   DruidExpression.fromExpression("timestamp_shift(\"t\",'PT2H',-3)"),
   DateTimes.of("2000-02-02T22:05:06").getMillis()
 );
}

代码示例来源:origin: apache/hive

@Override
public Double getDistinctRowCount(Join rel, RelMetadataQuery mq, ImmutableBitSet groupKey,
  RexNode predicate) {
 if (rel instanceof HiveJoin) {
  HiveJoin hjRel = (HiveJoin) rel;
  //TODO: Improve this
  if (rel instanceof SemiJoin) {
   return mq.getDistinctRowCount(hjRel.getLeft(), groupKey,
     rel.getCluster().getRexBuilder().makeLiteral(true));
  } else {
   return RelMdUtil.getJoinDistinctRowCount(mq, rel, rel.getJoinType(),
     groupKey, predicate, true);
  }
 }
 return mq.getDistinctRowCount(rel, groupKey, predicate);
}

代码示例来源:origin: apache/incubator-druid

@Test
public void testConcat()
{
 testExpression(
   rexBuilder.makeCall(
     typeFactory.createSqlType(SqlTypeName.VARCHAR),
     SqlStdOperatorTable.CONCAT,
     ImmutableList.of(
       inputRef("s"),
       rexBuilder.makeLiteral("bar")
     )
   ),
   DruidExpression.fromExpression("concat(\"s\",'bar')"),
   "foobar"
 );
}

代码示例来源:origin: apache/drill

@Override
public Double getDistinctRowCount(Join rel, RelMetadataQuery mq, ImmutableBitSet groupKey,
  RexNode predicate) {
 if (rel instanceof HiveJoin) {
  HiveJoin hjRel = (HiveJoin) rel;
  //TODO: Improve this
  if (rel instanceof SemiJoin) {
   return mq.getDistinctRowCount(hjRel.getLeft(), groupKey,
     rel.getCluster().getRexBuilder().makeLiteral(true));
  } else {
   return RelMdUtil.getJoinDistinctRowCount(mq, rel, rel.getJoinType(),
     groupKey, predicate, true);
  }
 }
 return mq.getDistinctRowCount(rel, groupKey, predicate);
}

代码示例来源:origin: apache/incubator-druid

@Test
public void testTimeParse()
{
 testExpression(
   rexBuilder.makeCall(
     new TimeParseOperatorConversion().calciteOperator(),
     inputRef("tstr"),
     rexBuilder.makeLiteral("yyyy-MM-dd HH:mm:ss")
   ),
   DruidExpression.fromExpression("timestamp_parse(\"tstr\",'yyyy-MM-dd HH:mm:ss')"),
   DateTimes.of("2000-02-03T04:05:06").getMillis()
 );
 testExpression(
   rexBuilder.makeCall(
     new TimeParseOperatorConversion().calciteOperator(),
     inputRef("tstr"),
     rexBuilder.makeLiteral("yyyy-MM-dd HH:mm:ss"),
     rexBuilder.makeLiteral("America/Los_Angeles")
   ),
   DruidExpression.fromExpression("timestamp_parse(\"tstr\",'yyyy-MM-dd HH:mm:ss','America/Los_Angeles')"),
   DateTimes.of("2000-02-03T04:05:06-08:00").getMillis()
 );
}

代码示例来源:origin: apache/incubator-druid

@Test
public void testTimeExtract()
{
 testExpression(
   rexBuilder.makeCall(
     new TimeExtractOperatorConversion().calciteOperator(),
     inputRef("t"),
     rexBuilder.makeLiteral("QUARTER")
   ),
   DruidExpression.fromExpression("timestamp_extract(\"t\",'QUARTER','UTC')"),
   1L
 );
 testExpression(
   rexBuilder.makeCall(
     new TimeExtractOperatorConversion().calciteOperator(),
     inputRef("t"),
     rexBuilder.makeLiteral("DAY"),
     rexBuilder.makeLiteral("America/Los_Angeles")
   ),
   DruidExpression.fromExpression("timestamp_extract(\"t\",'DAY','America/Los_Angeles')"),
   2L
 );
}

代码示例来源:origin: apache/incubator-druid

@Test
public void testTimeFormat()
{
 testExpression(
   rexBuilder.makeCall(
     new TimeFormatOperatorConversion().calciteOperator(),
     inputRef("t"),
     rexBuilder.makeLiteral("yyyy-MM-dd HH:mm:ss")
   ),
   DruidExpression.fromExpression("timestamp_format(\"t\",'yyyy-MM-dd HH:mm:ss','UTC')"),
   "2000-02-03 04:05:06"
 );
 testExpression(
   rexBuilder.makeCall(
     new TimeFormatOperatorConversion().calciteOperator(),
     inputRef("t"),
     rexBuilder.makeLiteral("yyyy-MM-dd HH:mm:ss"),
     rexBuilder.makeLiteral("America/Los_Angeles")
   ),
   DruidExpression.fromExpression("timestamp_format(\"t\",'yyyy-MM-dd HH:mm:ss','America/Los_Angeles')"),
   "2000-02-02 20:05:06"
 );
}

代码示例来源:origin: apache/incubator-druid

rexBuilder.makeCall(
  SqlStdOperatorTable.POSITION,
  rexBuilder.makeLiteral("oo"),
  inputRef("s")
),
rexBuilder.makeCall(
  SqlStdOperatorTable.POSITION,
  rexBuilder.makeLiteral("oo"),
  inputRef("s"),
  rexBuilder.makeExactLiteral(BigDecimal.valueOf(2))
rexBuilder.makeCall(
  SqlStdOperatorTable.POSITION,
  rexBuilder.makeLiteral("oo"),
  inputRef("s"),
  rexBuilder.makeExactLiteral(BigDecimal.valueOf(3))

代码示例来源:origin: apache/incubator-druid

@Test
public void testTimeFloor()
{
 testExpression(
   rexBuilder.makeCall(
     new TimeFloorOperatorConversion().calciteOperator(),
     timestampLiteral(DateTimes.of("2000-02-03T04:05:06Z")),
     rexBuilder.makeLiteral("PT1H")
   ),
   DruidExpression.fromExpression("timestamp_floor(949550706000,'PT1H',null,'UTC')"),
   DateTimes.of("2000-02-03T04:00:00").getMillis()
 );
 testExpression(
   rexBuilder.makeCall(
     new TimeFloorOperatorConversion().calciteOperator(),
     inputRef("t"),
     rexBuilder.makeLiteral("P1D"),
     rexBuilder.makeNullLiteral(typeFactory.createSqlType(SqlTypeName.TIMESTAMP)),
     rexBuilder.makeLiteral("America/Los_Angeles")
   ),
   DruidExpression.fromExpression("timestamp_floor(\"t\",'P1D',null,'America/Los_Angeles')"),
   DateTimes.of("2000-02-02T08:00:00").getMillis()
 );
}

代码示例来源:origin: apache/incubator-druid

@Test
public void testDateTrunc()
{
 testExpression(
   rexBuilder.makeCall(
     new DateTruncOperatorConversion().calciteOperator(),
     rexBuilder.makeLiteral("hour"),
     timestampLiteral(DateTimes.of("2000-02-03T04:05:06Z"))
   ),
   DruidExpression.fromExpression("timestamp_floor(949550706000,'PT1H',null,'UTC')"),
   DateTimes.of("2000-02-03T04:00:00").getMillis()
 );
 testExpression(
   rexBuilder.makeCall(
     new DateTruncOperatorConversion().calciteOperator(),
     rexBuilder.makeLiteral("DAY"),
     timestampLiteral(DateTimes.of("2000-02-03T04:05:06Z"))
   ),
   DruidExpression.fromExpression("timestamp_floor(949550706000,'P1D',null,'UTC')"),
   DateTimes.of("2000-02-03T00:00:00").getMillis()
 );
}

代码示例来源:origin: apache/incubator-druid

SqlStdOperatorTable.TRIM,
  rexBuilder.makeFlag(SqlTrimFunction.Flag.BOTH),
  rexBuilder.makeLiteral(" "),
  inputRef("spacey")
),
  SqlStdOperatorTable.TRIM,
  rexBuilder.makeFlag(SqlTrimFunction.Flag.LEADING),
  rexBuilder.makeLiteral(" h"),
  inputRef("spacey")
),
  SqlStdOperatorTable.TRIM,
  rexBuilder.makeFlag(SqlTrimFunction.Flag.TRAILING),
  rexBuilder.makeLiteral(" e"),
  inputRef("spacey")
),

代码示例来源:origin: apache/incubator-druid

new StrposOperatorConversion().calciteOperator(),
  inputRef("s"),
  rexBuilder.makeLiteral("oo")
),
DruidExpression.fromExpression("(strpos(\"s\",'oo') + 1)"),
  new StrposOperatorConversion().calciteOperator(),
  inputRef("s"),
  rexBuilder.makeLiteral("ax")
),
DruidExpression.fromExpression("(strpos(\"s\",'ax') + 1)"),
  new StrposOperatorConversion().calciteOperator(),
  rexBuilder.makeNullLiteral(typeFactory.createSqlType(SqlTypeName.VARCHAR)),
  rexBuilder.makeLiteral("ax")
),
DruidExpression.fromExpression("(strpos(null,'ax') + 1)"),

代码示例来源:origin: apache/incubator-druid

@Test
public void testRegexpExtract()
{
 testExpression(
   rexBuilder.makeCall(
     new RegexpExtractOperatorConversion().calciteOperator(),
     inputRef("s"),
     rexBuilder.makeLiteral("f(.)"),
     integerLiteral(1)
   ),
   DruidExpression.of(
     SimpleExtraction.of("s", new RegexDimExtractionFn("f(.)", 1, true, null)),
     "regexp_extract(\"s\",'f(.)',1)"
   ),
   "o"
 );
 testExpression(
   rexBuilder.makeCall(
     new RegexpExtractOperatorConversion().calciteOperator(),
     inputRef("s"),
     rexBuilder.makeLiteral("f(.)")
   ),
   DruidExpression.of(
     SimpleExtraction.of("s", new RegexDimExtractionFn("f(.)", 0, true, null)),
     "regexp_extract(\"s\",'f(.)')"
   ),
   "fo"
 );
}

相关文章

微信公众号

最新文章

更多