/** * Writes a given record to this sort buffer. The written record will be appended and take * the last logical position. * * @param record The record to be written. * @return True, if the record was successfully written, false, if the sort buffer was full. * @throws IOException Thrown, if an error occurred while serializing the record into the buffers. */ public boolean write(BaseRow record) throws IOException { //check whether we need a new memory segment for the sort index if (!checkNextIndexOffset()) { return false; } // serialize the record into the data buffers int skip; try { skip = this.inputSerializer.serializeToPages(record, this.recordCollector); } catch (EOFException e) { return false; } final long newOffset = this.recordCollector.getCurrentOffset(); long currOffset = currentDataBufferOffset + skip; writeIndexAndNormalizedKey(record, currOffset); this.currentDataBufferOffset = newOffset; return true; }