@Override
public FunctionRender render(FunctionRenderer renderer, RexCall call) {
checkArity(call, 2);
PredicateAnalyzer.checkForIncompatibleDateTimeOperands(call);
RexNode o1 = call.getOperands().get(0);
RexNode o2 = call.getOperands().get(1);
FunctionRender op1 = o1.accept(renderer.getVisitor());
FunctionRender op2 = o2.accept(renderer.getVisitor());
boolean isTime1 = isTemporal(o1.getType());
boolean isTime2 = isTemporal(o2.getType());
if(isTime1 != isTime2){
throw new RuntimeException("Can't do comparison between a date and a non-date field.");
}
// we need special handling in painless for temporal types and comparison other than equality/inequality.
if(renderer.isUsingPainless() && isTime1 && type != Type.EQ && type != Type.NEQ){
return handlePainlessTimeComparison(op1, op2);
}
String script = String.format("( %s %s %s )", op1.getScript(), elasticName, op2.getScript());
return new FunctionRender(script, Iterables.concat(op1.getNulls(), op2.getNulls()));
}
CompareFunction.java 文件源码
java
阅读 30
收藏 0
点赞 0
评论 0
项目:dremio-oss
作者:
评论列表
文章目录