Integer.MAX_VALUE);
QueryUnitAttemptId id = LocalTajoTestingUtility.newQueryUnitAttemptId(masterPlan);
Path workDir = CommonTestingUtil.getTestDir(
"target/test-data/testPartitionedStorePlanWithEmptyGroupingSet");
TaskAttemptContext ctx = new TaskAttemptContext(conf, id, new FileFragment[] { frags[0] }, workDir);
ctx.setEnforcer(new Enforcer());
Expr expr = analyzer.parse(QUERIES[14]);
LogicalPlan plan = planner.createPlan(session, expr);
LogicalNode rootNode = plan.getRootBlock().getRoot();
int numPartitions = 1;
DataChannel dataChannel = new DataChannel(masterPlan.newExecutionBlockId(), masterPlan.newExecutionBlockId(),
ShuffleType.HASH_SHUFFLE, numPartitions);
dataChannel.setShuffleKeys(new Column[]{});
ctx.setDataChannel(dataChannel);
optimizer.optimize(plan);
TableMeta outputMeta = CatalogUtil.newTableMeta(dataChannel.getStoreType());
PhysicalPlanner phyPlanner = new PhysicalPlannerImpl(conf,sm);
PhysicalExec exec = phyPlanner.createPlan(ctx, rootNode);
exec.init();
exec.next();
exec.close();
Path path = new Path(workDir, "output");
FileSystem fs = sm.getFileSystem();
FileStatus [] list = fs.listStatus(path);
assertEquals(numPartitions, list.length);
FileFragment[] fragments = new FileFragment[list.length];
int i = 0;
for (FileStatus status : list) {
fragments[i++] = new FileFragment("partition", status.getPath(), 0, status.getLen());
}
Scanner scanner = new MergeScanner(conf, rootNode.getOutSchema(), outputMeta, TUtil.newList(fragments));
scanner.init();
Tuple tuple;
i = 0;
while ((tuple = scanner.next()) != null) {
assertEquals(60, tuple.get(0).asInt4()); // sum
assertEquals(3, tuple.get(1).asInt4()); // max
assertEquals(1, tuple.get(2).asInt4()); // min
i++;
}
assertEquals(1, i);
scanner.close();
// Examine the statistics information
assertEquals(1, ctx.getResultStats().getNumRows().longValue());
}