private GremlinToEnumerableConverter getConverter(int fieldIndex, String field, RelNode node) { if(node instanceof EnumerableJoin) { final EnumerableJoin join = (EnumerableJoin) node; List<String> fieldNames = join.getRowType().getFieldNames(); final String chosenField = fieldNames.get(fieldIndex); return fieldMap.get(join).get(chosenField); } return null; } }
final List<String> leftFields = join.getRowType().getFieldNames(). subList(0, left.getRowType().getFieldCount()); leftFields.stream().forEach(field -> { } else { final List<String> leftFields = join.getRowType().getFieldNames(). subList(0, left.getRowType().getFieldCount()); int col = 0; final List<String> rightFields = join.getRowType().getFieldNames(). subList(left.getRowType().getFieldCount(), join.getRowType().getFieldCount()); rightFields.stream().forEach(field -> { fieldMap.get(join).put(field, (GremlinToEnumerableConverter) right); } else { final List<String> rightFields = join.getRowType().getFieldNames(). subList(left.getRowType().getFieldCount(), join.getRowType().getFieldCount()); int col = 0; for(String field : rightFields) {
final Integer rightKeyId = join.getRightKeys().get(0); final List<String> joinFields = join.getRowType().getFieldNames(); final List<String> leftJoinFields = joinFields.subList(0, left.getRowType().getFieldCount()); final List<String> rightJoinFields = joinFields.subList(left.getRowType().getFieldCount(), joinFields.size());
private PlannerOp planEnumerableJoin(EnumerableJoin op, RelDataType rowType) { // please note that EnumerableJoin has a condition field which actually is not useful PlannerOp left = convertRelNode(op.getLeft(), null, false); PlannerOp right = convertRelNode(op.getRight(), null, false); int[] leftKeys = op.getLeftKeys().toIntArray(); int[] rightKeys = op.getRightKeys().toIntArray(); boolean generateNullsOnLeft = op.getJoinType().generatesNullsOnLeft(); boolean generateNullsOnRight = op.getJoinType().generatesNullsOnRight(); final RelDataType _rowType = rowType == null ? op.getRowType() : rowType; List<RelDataTypeField> fieldList = _rowType.getFieldList(); Column[] columns = new Column[fieldList.size()]; String[] fieldNames = new String[columns.length]; int i = 0; for (RelDataTypeField field : fieldList) { Column col = Column.column(field.getName().toLowerCase(), convertToHerdType(field.getType())); fieldNames[i] = col.name; columns[i++] = col; } return new JoinOp(fieldNames, columns, leftKeys, left, rightKeys, right, generateNullsOnLeft, generateNullsOnRight, false); }
final PhysType physType = PhysTypeImpl.of( implementor.getTypeFactory(), getRowType(), pref.preferArray()); final PhysType keyPhysType = leftResult.physType.project(
final PhysType physType = PhysTypeImpl.of( implementor.getTypeFactory(), getRowType(), pref.preferArray()); final PhysType keyPhysType = leftResult.physType.project(