/** * Adds an expression, deducing an appropriate name if possible. * * @param expr Expression * @param name Suggested name */ private void addExpr(RexNode expr, String name) { convertedInputExprs.add(expr); if ((name == null) && (expr instanceof RexInputRef)) { final int i = ((RexInputRef) expr).getIndex(); name = bb.root.getRowType().getFieldList().get(i).getName(); } if (convertedInputExprNames.contains(name)) { // In case like 'SELECT ... GROUP BY x, y, x', don't add // name 'x' twice. name = null; } convertedInputExprNames.add(name); }
RelDataTypeField getRootField(RexInputRef inputRef) { int fieldOffset = inputRef.getIndex(); for (RelNode input : inputs) { RelDataType rowType = input.getRowType(); if (rowType == null) { // TODO: remove this once leastRestrictive // is correctly implemented return null; } if (fieldOffset < rowType.getFieldCount()) { return rowType.getFieldList().get(fieldOffset); } fieldOffset -= rowType.getFieldCount(); } throw new AssertionError(); }
final RelDataType targetRowType = targetTable.getRowType(); final List<RelDataTypeField> targetFields = targetRowType.getFieldList(); final List<RexNode> sourceExps = new ArrayList<RexNode>(
final List<RelDataTypeField> fields = rel.getRowType().getFieldList(); final List<Pair<RexNode, String>> newProjects = Lists.newArrayList(); for (int i = 0; i < fields.size(); i++) {
exprs, cluster.getTypeFactory().createStructType( rowType.getFieldList().subList(0, fieldCount)), ProjectRelBase.Flags.BOXED), false);
leftRel.getRowType().getFieldList(); leftRel = RelOptUtil.createProject( leftRel, rightRel.getRowType().getFieldList(); final int newLeftCount = leftCount + extraLeftExprs.size(); rightRel = RelOptUtil.createProject(
rexBuilder.makeInputRef( rightField.getType(), leftRowType.getFieldList().size() + rightField.getIndex()); RexNode equalsCall = rexBuilder.makeCall(
return null; RelDataTypeField field = rowType.getFieldList().get(iField); RelDataType type = field.getType(); if (type.isStruct()) {
public String getFieldName(int index) { if (index == at) { return fieldName; } if (index > at) { --index; } return type.getFieldList().get(index).getName(); }
public RelDataType transformType( SqlOperatorBinding opBinding, RelDataType typeToTransform) { final List<RelDataTypeField> fields = typeToTransform.getFieldList(); assert fields.size() == 1; return fields.get(0).getType(); } };
public RelDataTypeField get(int index) { return inputRowType.getFieldList().get( groupList.get(index)); } },
private RelDataType removeDistinct(RelDataType type) { if (type.getSqlTypeName() != SqlTypeName.DISTINCT) { return type; } return type.getFieldList().get(0).getType(); }
public void inferOperandTypes( SqlCallBinding callBinding, RelDataType returnType, RelDataType[] operandTypes) { for (int i = 0; i < operandTypes.length; ++i) { operandTypes[i] = returnType.isStruct() ? returnType.getFieldList().get(i).getType() : returnType; } } };
private RelDataType removeDistinct(RelDataType type) { if (type.getSqlTypeName() != SqlTypeName.DISTINCT) { return type; } return type.getFieldList().get(0).getType(); }
static Class javaRowClass( JavaTypeFactory typeFactory, RelDataType type) { if (type.isStruct() && type.getFieldCount() == 1) { type = type.getFieldList().get(0).getType(); } final Type clazz = typeFactory.getJavaClass(type); return clazz instanceof Class ? (Class) clazz : Object[].class; }
public RelDataType inferReturnType( SqlOperatorBinding opBinding) { RelDataType type = opBinding.getOperandType(0); if (type.isStruct()) { type = type.getFieldList().get(0).getType(); } assert type instanceof ArraySqlType || type instanceof MultisetSqlType; return type.getComponentType(); }
static Class javaRowClass( JavaTypeFactory typeFactory, RelDataType type) { if (type.isStruct() && type.getFieldCount() == 1) { type = type.getFieldList().get(0).getType(); } final Type clazz = typeFactory.getJavaClass(type); return clazz instanceof Class ? (Class) clazz : Object[].class; }
public RelDataTypeField get(int index) { return getChild().getRowType().getFieldList().get( Util.toList(groupSet).get(index)); } },
public RelDataType getColumnType(String sql) { RelDataType rowType = getResultType(sql); final List<RelDataTypeField> fields = rowType.getFieldList(); assertEquals("expected query to return 1 field", 1, fields.size()); return fields.get(0).getType(); }
public RelDataType getColumnType(String sql) { RelDataType rowType = getResultType(sql); final List<RelDataTypeField> fields = rowType.getFieldList(); assertEquals("expected query to return 1 field", 1, fields.size()); RelDataType actualType = fields.get(0).getType(); return actualType; }