@Override public List<SqlOperator> getOperatorList() { final List<SqlOperator> retVal = new ArrayList<>(); for (SqlAggregator aggregator : aggregators.values()) { retVal.add(aggregator.calciteFunction()); } for (SqlOperatorConversion operatorConversion : operatorConversions.values()) { retVal.add(operatorConversion.calciteOperator()); } retVal.addAll(DruidConvertletTable.knownOperators()); return retVal; }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return baseConversion.toDruidExpression(plannerContext, rowSignature, rexNode); } }
return null; } else { DimFilter filter = conversion.toDruidFilter(plannerContext, rowSignature, rexNode); if (filter != null) { return filter; DruidExpression expression = conversion.toDruidExpression(plannerContext, rowSignature, rexNode); if (expression != null) { return new ExpressionDimFilter(expression.getExpression(), plannerContext.getExprMacroTable());
@Nullable public SqlOperatorConversion lookupOperatorConversion(final SqlOperator operator) { final SqlOperatorConversion operatorConversion = operatorConversions.get(OperatorKey.of(operator)); if (operatorConversion != null && operatorConversion.calciteOperator().equals(operator)) { return operatorConversion; } else { return null; } }
return null; } else { return conversion.toDruidExpression(plannerContext, rowSignature, rexNode);
@Override public void lookupOperatorOverloads( final SqlIdentifier opName, final SqlFunctionCategory category, final SqlSyntax syntax, final List<SqlOperator> operatorList ) { if (opName == null) { return; } if (opName.names.size() != 1) { return; } final OperatorKey operatorKey = OperatorKey.of(opName.getSimple(), syntax); final SqlAggregator aggregator = aggregators.get(operatorKey); if (aggregator != null) { operatorList.add(aggregator.calciteFunction()); } final SqlOperatorConversion operatorConversion = operatorConversions.get(operatorKey); if (operatorConversion != null) { operatorList.add(operatorConversion.calciteOperator()); } final SqlOperator convertletOperator = CONVERTLET_OPERATORS.get(operatorKey); if (convertletOperator != null) { operatorList.add(convertletOperator); } }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return baseConversion.toDruidExpression(plannerContext, rowSignature, rexNode); } }
public AliasedOperatorConversion(final SqlOperatorConversion baseConversion, final String name) { if (!SqlKind.FUNCTION.contains(baseConversion.calciteOperator().getKind())) { throw new IAE("Base operator must be a function but was[%s]", baseConversion.calciteOperator().getKind()); } final SqlFunction baseFunction = (SqlFunction) baseConversion.calciteOperator(); this.baseConversion = baseConversion; this.name = name; this.operator = new SqlFunction( name, baseFunction.getKind(), baseFunction.getReturnTypeInference(), baseFunction.getOperandTypeInference(), baseFunction.getOperandTypeChecker(), baseFunction.getFunctionType() ); }
return null; } else { return conversion.toDruidExpression(plannerContext, rowSignature, rexNode);
final OperatorKey operatorKey = OperatorKey.of(operatorConversion.calciteOperator()); if (this.aggregators.containsKey(operatorKey) || this.operatorConversions.put(operatorKey, operatorConversion) != null) { final OperatorKey operatorKey = OperatorKey.of(operatorConversion.calciteOperator());
@Override public List<SqlOperator> getOperatorList() { final List<SqlOperator> retVal = new ArrayList<>(); for (SqlAggregator aggregator : aggregators.values()) { retVal.add(aggregator.calciteFunction()); } for (SqlOperatorConversion operatorConversion : operatorConversions.values()) { retVal.add(operatorConversion.calciteOperator()); } retVal.addAll(DruidConvertletTable.knownOperators()); return retVal; }
public SqlOperatorConversion lookupOperatorConversion(final SqlOperator operator) { final SqlOperatorConversion operatorConversion = operatorConversions.get(OperatorKey.of(operator)); if (operatorConversion != null && operatorConversion.calciteOperator().equals(operator)) { return operatorConversion; } else { return null; } }
@Override public void lookupOperatorOverloads( final SqlIdentifier opName, final SqlFunctionCategory category, final SqlSyntax syntax, final List<SqlOperator> operatorList ) { if (opName.names.size() != 1) { return; } final OperatorKey operatorKey = OperatorKey.of(opName.getSimple(), syntax); final SqlAggregator aggregator = aggregators.get(operatorKey); if (aggregator != null) { operatorList.add(aggregator.calciteFunction()); } final SqlOperatorConversion operatorConversion = operatorConversions.get(operatorKey); if (operatorConversion != null) { operatorList.add(operatorConversion.calciteOperator()); } final SqlOperator convertletOperator = CONVERTLET_OPERATORS.get(operatorKey); if (convertletOperator != null) { operatorList.add(convertletOperator); } }
public AliasedOperatorConversion(final SqlOperatorConversion baseConversion, final String name) { if (!SqlKind.FUNCTION.contains(baseConversion.calciteOperator().getKind())) { throw new IAE("Base operator must be a function but was[%s]", baseConversion.calciteOperator().getKind()); } final SqlFunction baseFunction = (SqlFunction) baseConversion.calciteOperator(); this.baseConversion = baseConversion; this.name = name; this.operator = new SqlFunction( name, baseFunction.getKind(), baseFunction.getReturnTypeInference(), baseFunction.getOperandTypeInference(), baseFunction.getOperandTypeChecker(), baseFunction.getFunctionType() ); }
final OperatorKey operatorKey = OperatorKey.of(operatorConversion.calciteOperator()); if (this.aggregators.containsKey(operatorKey) || this.operatorConversions.put(operatorKey, operatorConversion) != null) { final OperatorKey operatorKey = OperatorKey.of(operatorConversion.calciteOperator());