if (ableToHandle) {
// first, go through output constraints and create new groups
for (Iterator<Tuple> it = outputConstraints.iterator(); it.hasNext(); ) {
Tuple outputConstraint = it.next();
Datum groupLabel = outputConstraint.getField(0);
for (int input = 0; input < numInputs; input++) {
//int numInputFields = inputs.get(input).outputSchema().numFields();
int numInputFields = op.getOpTable().get(inputs.get(input)).outputSchema().numFields();
// List<Integer> groupCols = groupSpecs.get(input).getCols();
List<Integer> groupCols = groupSpecs.get(input);
for (int i = 0; i < minGroupSize; i++) {
Tuple inputConstraint = GenerateGroupByInput(groupLabel, groupCols, numInputFields);
if (inputConstraint != null) inputConstraints.get(input).add(inputConstraint);
}
}
}
// then, go through all organic data groups and add input constraints to make each group big enough
DataBag outputData = derivedData.get(op);
for (Iterator<Tuple> it = outputData.iterator(); it.hasNext(); ) {
Tuple groupTup = it.next();
Datum groupLabel = groupTup.getField(0);
for (int input = 0; input < numInputs; input++) {
int numInputFields = op.getOpTable().get(inputs.get(input)).outputSchema().numFields();
// List<Integer> groupCols = groupSpecs.get(input).getCols();
List<Integer> groupCols = groupSpecs.get(input);