本文整理了Java中org.apache.calcite.rex.RexBuilder.makeFieldAccess
方法的一些代码示例,展示了RexBuilder.makeFieldAccess
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RexBuilder.makeFieldAccess
方法的具体详情如下:
包路径:org.apache.calcite.rex.RexBuilder
类名称: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);
}
}
}
内容来源于网络,如有侵权,请联系作者删除!