public RexNode visitFieldAccess(RexFieldAccess fieldAccess) { RexNode before = fieldAccess.getReferenceExpr(); RexNode after = before.accept(this); if (before == after) { return fieldAccess; } else { return new RexFieldAccess( after, fieldAccess.getField()); } }
RexFieldAccess( RexNode expr, RelDataTypeField field) { this.expr = expr; this.field = field; computeDigest(); }
public RexNode visitFieldAccess(RexFieldAccess fieldAccess) { return builder.makeFieldAccess( fieldAccess.getReferenceExpr().accept(this), fieldAccess.getField().getIndex()); }
public Boolean visitFieldAccess(RexFieldAccess fieldAccess) { super.visitFieldAccess(fieldAccess); final RelDataType refType = fieldAccess.getReferenceExpr().getType(); assert refType.isStruct(); final RelDataTypeField field = fieldAccess.getField(); final int index = field.getIndex(); if ((index < 0) || (index > refType.getFieldList().size())) { assert !fail; ++failCount; return false; } final RelDataTypeField typeField = refType.getFieldList().get(index); if (!RelOptUtil.eq( "type1", typeField.getType(), "type2", fieldAccess.getType(), fail)) { assert !fail; ++failCount; return false; } return true; }
public Boolean visitFieldAccess(RexFieldAccess fieldAccess) { // "<expr>.FIELD" is constant iff "<expr>" is constant. return fieldAccess.getReferenceExpr().accept(this); } }
public RexNode visitFieldAccess(RexFieldAccess fieldAccess) { if (cm.mapFieldAccessToCorVar.containsKey(fieldAccess)) { // if it is a corVar, change it to be input ref. Correlation corVar = cm.mapFieldAccessToCorVar.get(fieldAccess); // corVar offset should point to the leftInput of currentRel, // which is the CorrelatorRel. RexNode newRexNode = new RexInputRef(corVar.getOffset(), fieldAccess.getType()); if (projectPulledAboveLeftCorrelator && (nullIndicator != null)) { // need to enforce nullability by applying an additional // cast operator over the transformed expression. newRexNode = createCaseExpression( nullIndicator, rexBuilder.constantNull(), newRexNode); } return newRexNode; } return fieldAccess; }
public RexFieldAccess clone() { return new RexFieldAccess(expr, field); }
public Boolean visitFieldAccess(RexFieldAccess fieldAccess) { super.visitFieldAccess(fieldAccess); final RelDataType refType = fieldAccess.getReferenceExpr().getType(); assert refType.isStruct(); final RelDataTypeField field = fieldAccess.getField(); final int index = field.getIndex(); if ((index < 0) || (index > refType.getFieldList().size())) { assert !fail; ++failCount; return false; } final RelDataTypeField typeField = refType.getFieldList().get(index); if (!RelOptUtil.eq( "type1", typeField.getType(), "type2", fieldAccess.getType(), fail)) { assert !fail; ++failCount; return false; } return true; }
public RexNode visitFieldAccess(RexFieldAccess fieldAccess) { return builder.makeFieldAccess( fieldAccess.getReferenceExpr().accept(this), fieldAccess.getField().getIndex()); }
public R visitFieldAccess(RexFieldAccess fieldAccess) { if (!deep) { return null; } final RexNode expr = fieldAccess.getReferenceExpr(); return expr.accept(this); }
public RexNode visitFieldAccess(RexFieldAccess fieldAccess) { if (mapFieldAccessToCorVar.containsKey(fieldAccess)) { // if it is a corVar, change it to be input ref. CorrelatorRel.Correlation corVar = mapFieldAccessToCorVar.get(fieldAccess); // corVar offset shuold point to the leftInput of currentRel, // which is the CorrelatorRel. RexNode newRexNode = new RexInputRef(corVar.getOffset(), fieldAccess.getType()); if (projectPulledAboveLeftCorrelator && (nullIndicator != null)) { // need to enforce nullability by applying an additional // cast operator over the transformed expression. newRexNode = createCaseExpression( nullIndicator, rexBuilder.constantNull(), newRexNode); } return newRexNode; } return fieldAccess; }
/** * Creates an expression accessing a given field from a record. * * @param expr Expression yielding a record * @param field Field * @return Expression accessing given field */ private RexNode makeFieldAccessInternal( RexNode expr, final RelDataTypeField field) { if (expr instanceof RexRangeRef) { RexRangeRef range = (RexRangeRef) expr; if (field.getIndex() < 0) { return makeCall( field.getType(), GET_OPERATOR, ImmutableList.of( expr, makeLiteral(field.getName()))); } return new RexInputRef( range.getOffset() + field.getIndex(), field.getType()); } return new RexFieldAccess(expr, field); }
public RexNode visitFieldAccess(RexFieldAccess fieldAccess) { final RexNode referenceExpr = fieldAccess.getReferenceExpr().accept(this); return new RexFieldAccess( referenceExpr, fieldAccess.getField()); } }
public Boolean visitFieldAccess(RexFieldAccess fieldAccess) { super.visitFieldAccess(fieldAccess); final RelDataType refType = fieldAccess.getReferenceExpr().getType(); assert refType.isStruct(); final RelDataTypeField field = fieldAccess.getField(); final int index = field.getIndex(); if ((index < 0) || (index > refType.getFieldList().size())) { assert !fail; ++failCount; return false; } final RelDataTypeField typeField = refType.getFieldList().get(index); if (!RelOptUtil.eq( "type1", typeField.getType(), "type2", fieldAccess.getType(), fail)) { assert !fail; ++failCount; return false; } return true; } }
map = jsonBuilder.map(); final RexFieldAccess fieldAccess = (RexFieldAccess) node; map.put("field", fieldAccess.getField().getName()); map.put("expr", toJson(fieldAccess.getReferenceExpr())); return map; case LITERAL:
public R visitFieldAccess(RexFieldAccess fieldAccess) { if (!deep) { return null; } final RexNode expr = fieldAccess.getReferenceExpr(); return expr.accept(this); }
new RexInputRef( newInputPos, fieldAccess.getType()); return newInput;