}
if (branchLookup.getInput() == null) {
// Simple version for Product_Nested.
stream = new RowStream();
API.InputPreservationOption flag = API.InputPreservationOption.KEEP_INPUT;
ColumnExpressionToIndex boundRow = boundRows.peek();
stream.operator = API.branchLookup_Nested(group,
boundRow.getRowType(),
tableRowType(branchLookup.getSource()),
tableRowType(branchLookup.getAncestor()),
outputRowTypes,
flag,
getBindingPosition(boundRow),
rulesContext.getPipelineConfiguration().getGroupLookupLookaheadQuantum());
}
else if (branchLookup.getInput() instanceof GroupLoopScan) {
// Fuller version for group join across subquery boundary.
stream = new RowStream();
API.InputPreservationOption flag = API.InputPreservationOption.DISCARD_INPUT;
ColumnExpressionToIndex boundRow = lookupNestedBoundRow(((GroupLoopScan)branchLookup.getInput()));
stream.operator = API.branchLookup_Nested(group,
boundRow.getRowType(),
boundRow.getRowType(),
tableRowType(branchLookup.getAncestor()),
outputRowTypes,
flag,
getBindingPosition(boundRow),
rulesContext.getPipelineConfiguration().getGroupLookupLookaheadQuantum());