@Override public Sequence<Object[]> get() { if (root.isRefTrivial()) { return druidRel.runQuery(); } else { // Add a mapping on top to accommodate root.fields. return Sequences.map( druidRel.runQuery(), new Function<Object[], Object[]>() { @Override public Object[] apply(final Object[] input) { final Object[] retVal = new Object[root.fields.size()]; for (int i = 0; i < root.fields.size(); i++) { retVal[i] = input[root.fields.get(i).getKey()]; } return retVal; } } ); } } };
); if (!root.isRefTrivial()) {
/** Returns the root relational expression as a {@link LogicalProject}. * * @param force Create a Project even if all fields are used */ public RelNode project(boolean force) { if (isRefTrivial() && (SqlKind.DML.contains(kind) || !force || rel instanceof LogicalProject)) { return rel; } final List<RexNode> projects = new ArrayList<>(); final RexBuilder rexBuilder = rel.getCluster().getRexBuilder(); for (Pair<Integer, String> field : fields) { projects.add(rexBuilder.makeInputRef(rel, field.left)); } return LogicalProject.create(rel, projects, Pair.right(fields)); }
/** Returns the root relational expression as a {@link LogicalProject}. * * @param force Create a Project even if all fields are used */ public RelNode project(boolean force) { if (isRefTrivial() && (SqlKind.DML.contains(kind) || !force || rel instanceof LogicalProject)) { return rel; } final List<RexNode> projects = new ArrayList<>(); final RexBuilder rexBuilder = rel.getCluster().getRexBuilder(); for (Pair<Integer, String> field : fields) { projects.add(rexBuilder.makeInputRef(rel, field.left)); } return LogicalProject.create(rel, projects, Pair.right(fields)); }
@Override public Sequence<Object[]> get() { if (root.isRefTrivial()) { return druidRel.runQuery(); } else { // Add a mapping on top to accommodate root.fields. return Sequences.map( druidRel.runQuery(), new Function<Object[], Object[]>() { @Override public Object[] apply(final Object[] input) { final Object[] retVal = new Object[root.fields.size()]; for (int i = 0; i < root.fields.size(); i++) { retVal[i] = input[root.fields.get(i).getKey()]; } return retVal; } } ); } } };
} else { EnumerableRel enumerable = (EnumerableRel) root.rel; if (!root.isRefTrivial()) { final List<RexNode> projects = new ArrayList<>(); final RexBuilder rexBuilder = enumerable.getCluster().getRexBuilder();
} else { EnumerableRel enumerable = (EnumerableRel) root.rel; if (!root.isRefTrivial()) { final List<RexNode> projects = new ArrayList<>(); final RexBuilder rexBuilder = enumerable.getCluster().getRexBuilder();
} else { EnumerableRel enumerable = (EnumerableRel) root.rel; if (!root.isRefTrivial()) { final List<RexNode> projects = new ArrayList<>(); final RexBuilder rexBuilder = enumerable.getCluster().getRexBuilder();
); if (!root.isRefTrivial()) {