code: @Override
  	public Scan open() {
  		Scan src = p.open();
  		List<TempTable> runs = splitIntoRuns(src);
  		/*
  		 * If the input source scan has no record, the temp table list will
  		 * result in size 0. Need to check the size of "runs" here.
  		 */
  		if (runs.size() == 0)
  			return src;
  		src.close();
  		while (runs.size() > 2)
  			runs = doAMergeIteration(runs);
  		return new SortScan(runs, comp);
  	}
docs: This method is where most of the action is. Up to 2 sorted temporary
  tables are created, and are passed into SortScan for final merging.
  
  @see Plan#open()