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

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

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

RexBuilder.makeFieldAccess介绍

[英]Creates an expression accessing a field with a given ordinal from a record.
[中]

代码示例

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

/** Creates an access to a field by name. */
public RexNode dot(RexNode node, String fieldName) {
 final RexBuilder builder = cluster.getRexBuilder();
 return builder.makeFieldAccess(node, fieldName, true);
}

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

/** Creates an access to a field by ordinal. */
public RexNode dot(RexNode node, int fieldOrdinal) {
 final RexBuilder builder = cluster.getRexBuilder();
 return builder.makeFieldAccess(node, fieldOrdinal);
}

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

/** Returns a reference to a given field of a record-valued expression. */
public RexNode field(RexNode e, String name) {
 return getRexBuilder().makeFieldAccess(e, name, false);
}

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

/** Creates an access to a field by name. */
public RexNode dot(RexNode node, String fieldName) {
 final RexBuilder builder = cluster.getRexBuilder();
 return builder.makeFieldAccess(node, fieldName, true);
}

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

/** Creates an access to a field by ordinal. */
public RexNode dot(RexNode node, int fieldOrdinal) {
 final RexBuilder builder = cluster.getRexBuilder();
 return builder.makeFieldAccess(node, fieldOrdinal);
}

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

/** Returns a reference to a given field of a record-valued expression. */
public RexNode field(RexNode e, String name) {
 return getRexBuilder().makeFieldAccess(e, name, false);
}

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

private RexNode convert(final ExprNodeFieldDesc fieldDesc) throws SemanticException {
 RexNode rexNode = convert(fieldDesc.getDesc());
 if (rexNode.getType().isStruct()) {
  // regular case of accessing nested field in a column
  return cluster.getRexBuilder().makeFieldAccess(rexNode, fieldDesc.getFieldName(), true);
 } else {
  // This may happen for schema-less tables, where columns are dynamically
  // supplied by serdes.
  throw new CalciteSemanticException("Unexpected rexnode : "
    + rexNode.getClass().getCanonicalName(), UnsupportedFeature.Schema_less_table);
 }
}

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

private RexNode convert(final ExprNodeFieldDesc fieldDesc) throws SemanticException {
 RexNode rexNode = convert(fieldDesc.getDesc());
 if (rexNode.getType().isStruct()) {
  // regular case of accessing nested field in a column
  return cluster.getRexBuilder().makeFieldAccess(rexNode, fieldDesc.getFieldName(), true);
 } else {
  // This may happen for schema-less tables, where columns are dynamically
  // supplied by serdes.
  throw new CalciteSemanticException("Unexpected rexnode : "
    + rexNode.getClass().getCanonicalName(), UnsupportedFeature.Schema_less_table);
 }
}

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

protected RexNode convert(ExprNodeColumnDesc col) throws SemanticException {
 //if this is co-rrelated we need to make RexCorrelVariable(with id and type)
 // id and type should be retrieved from outerRR
 InputCtx ic = getInputCtx(col);
 if(ic == null) {
  // we have correlated column, build data type from outer rr
  RelDataType rowType = TypeConverter.getType(cluster, this.outerRR, null);
  if (this.outerNameToPosMap.get(col.getColumn()) == null) {
   throw new SemanticException(ErrorMsg.INVALID_COLUMN_NAME.getMsg(col.getColumn()));
  }
  int pos = this.outerNameToPosMap.get(col.getColumn());
  CorrelationId colCorr = new CorrelationId(this.correlatedId);
  RexNode corExpr = cluster.getRexBuilder().makeCorrel(rowType, colCorr);
  return cluster.getRexBuilder().makeFieldAccess(corExpr, pos);
 }
 int pos = ic.hiveNameToPosMap.get(col.getColumn());
 return cluster.getRexBuilder().makeInputRef(
   ic.calciteInpDataType.getFieldList().get(pos).getType(), pos + ic.offsetInCalciteSchema);
}

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

public RexNode visitInputRef(RexInputRef inputRef) {
  final RelDataType leftRowType = left.getRowType();
  final RexBuilder rexBuilder = getRexBuilder();
  final int leftCount = leftRowType.getFieldCount();
  if (inputRef.getIndex() < leftCount) {
   final RexNode v = rexBuilder.makeCorrel(leftRowType, id);
   return rexBuilder.makeFieldAccess(v, inputRef.getIndex());
  } else {
   return rexBuilder.makeInputRef(right, inputRef.getIndex() - leftCount);
  }
 }
}

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

public RexNode visitInputRef(RexInputRef inputRef) {
  final RelDataType leftRowType = left.getRowType();
  final RexBuilder rexBuilder = getRexBuilder();
  final int leftCount = leftRowType.getFieldCount();
  if (inputRef.getIndex() < leftCount) {
   final RexNode v = rexBuilder.makeCorrel(leftRowType, id);
   return rexBuilder.makeFieldAccess(v, inputRef.getIndex());
  } else {
   return rexBuilder.makeInputRef(right, inputRef.getIndex() - leftCount);
  }
 }
}

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

RexNode rowIDFieldAccess = rexBuilder.makeFieldAccess(
  rexBuilder.makeInputRef(tableScan.getTable().getRowType().getFieldList().get(rowIDPos).getType(), rowIDPos),
  0);

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

protected RexNode convert(ExprNodeColumnDesc col) throws SemanticException {
 //if this is co-rrelated we need to make RexCorrelVariable(with id and type)
 // id and type should be retrieved from outerRR
 InputCtx ic = getInputCtx(col);
 if(ic == null) {
  // we have correlated column, build data type from outer rr
  RelDataType rowType = TypeConverter.getType(cluster, this.outerRR, null);
  if (this.outerNameToPosMap.get(col.getColumn()) == null) {
   throw new SemanticException(ErrorMsg.INVALID_COLUMN_NAME.getMsg(col.getColumn()));
  }
  int pos = this.outerNameToPosMap.get(col.getColumn());
  CorrelationId colCorr = new CorrelationId(this.correlatedId);
  RexNode corExpr = cluster.getRexBuilder().makeCorrel(rowType, colCorr);
  return cluster.getRexBuilder().makeFieldAccess(corExpr, pos);
 }
 int pos = ic.hiveNameToPosMap.get(col.getColumn());
 return cluster.getRexBuilder().makeInputRef(
   ic.calciteInpDataType.getFieldList().get(pos).getType(), pos + ic.offsetInCalciteSchema);
}

代码示例来源:origin: org.apache.calcite/calcite-core

/** Creates an access to a field by ordinal. */
public RexNode dot(RexNode node, int fieldOrdinal) {
 final RexBuilder builder = cluster.getRexBuilder();
 return builder.makeFieldAccess(node, fieldOrdinal);
}

代码示例来源:origin: org.apache.calcite/calcite-core

@Override public RexNode visitFieldAccess(RexFieldAccess fieldAccess) {
  RexNode refExpr = fieldAccess.getReferenceExpr().accept(this);
  // creates new RexFieldAccess instance for the case when referenceExpr was replaced.
  // Otherwise calls super method.
  if (refExpr == rexCorrelVariable) {
   return builder.makeFieldAccess(
     refExpr,
     requiredColsMap.get(fieldAccess.getField().getIndex()));
  }
  return super.visitFieldAccess(fieldAccess);
 }
}

代码示例来源:origin: Qihoo360/Quicksql

/**
 * Creates {@code non-nullable boolean variable} with index of {@code arg} (0-based).
 * The resulting node would look like {@code ?0.notNullBool3} if {@code arg} is {@code 3}.
 *
 * @return non-nullable boolean variable with given index (0-based)
 */
protected RexNode vBoolNotNull(int arg) {
 assertArgValue(arg);
 return rexBuilder.makeFieldAccess(
   getDynamicParam(nonNullableBool, "bool"),
   arg + MAX_FIELDS);
}

代码示例来源:origin: Qihoo360/Quicksql

@Override public RexNode visitInputRef(RexInputRef input) {
  int field = input.getIndex();
  if (field >= leftFieldCount) {
   return rexBuilder.makeInputRef(input.getType(),
     input.getIndex() - leftFieldCount);
  }
  requiredColumns.set(field);
  return rexBuilder.makeFieldAccess(corrVar, field);
 }
});

代码示例来源:origin: Qihoo360/Quicksql

/**
 * Creates {@code nullable int variable} with index of {@code arg} (0-based).
 * The resulting node would look like {@code ?0.int3} if {@code arg} is {@code 3}.
 *
 * @return nullable int variable with given index (0-based)
 */
protected RexNode vInt(int arg) {
 assertArgValue(arg);
 return rexBuilder.makeFieldAccess(getDynamicParam(nonNullableInt, "int"), arg);
}

代码示例来源:origin: org.apache.calcite/calcite-core

/**
 * Creates {@code nullable boolean variable} with index of {@code arg} (0-based).
 * The resulting node would look like {@code ?0.bool3} if {@code arg} is {@code 3}.
 *
 * @return nullable boolean variable with given index (0-based)
 */
protected RexNode vBool(int arg) {
 assertArgValue(arg);
 return rexBuilder.makeFieldAccess(getDynamicParam(nonNullableBool, "bool"), arg);
}

代码示例来源:origin: org.apache.calcite/calcite-core

public RexNode visitInputRef(RexInputRef inputRef) {
  final RelDataType leftRowType = left.getRowType();
  final RexBuilder rexBuilder = getRexBuilder();
  final int leftCount = leftRowType.getFieldCount();
  if (inputRef.getIndex() < leftCount) {
   final RexNode v = rexBuilder.makeCorrel(leftRowType, id);
   return rexBuilder.makeFieldAccess(v, inputRef.getIndex());
  } else {
   return rexBuilder.makeInputRef(right, inputRef.getIndex() - leftCount);
  }
 }
}

相关文章

微信公众号

最新文章

更多