void DRTupleStream::writeRowTuple(TableTuple& tuple, size_t rowHeaderSz, size_t rowMetadataSz, const std::vector<int> *interestingColumns, const std::pair<const TableIndex*, uint32_t> &indexPair, ExportSerializeOutput &io) { size_t startPos = io.position(); // initialize the full row header to 0. This also // has the effect of setting each column non-null. ::memset(m_currBlock->mutableDataPtr() + io.position(), 0, rowHeaderSz); // the nullarray lives in rowheader after the 4 byte header length prefix uint8_t *nullArray = reinterpret_cast<uint8_t*>(m_currBlock->mutableDataPtr() + io.position() + rowMetadataSz); // Reserve the row header by moving the position beyond the row header. // The row header includes the 4 byte length prefix and the null array. const size_t lengthPrefixPosition = io.reserveBytes(rowHeaderSz); tuple.serializeToDR(io, 0, nullArray, interestingColumns); ExportSerializeOutput hdr(m_currBlock->mutableDataPtr() + lengthPrefixPosition, rowMetadataSz); if (interestingColumns) { // add the row length and a crc of the index used to the header hdr.writeInt((int32_t)(io.position() - startPos - 2 * sizeof(int32_t))); hdr.writeInt(indexPair.second); } else { // add the row length to the header hdr.writeInt((int32_t)(io.position() - startPos - sizeof(int32_t))); } }
void CompatibleDRTupleStream::writeRowTuple(TableTuple& tuple, size_t rowHeaderSz, size_t rowMetadataSz, ExportSerializeOutput &io) { size_t startPos = io.position(); // initialize the full row header to 0. This also // has the effect of setting each column non-null. ::memset(m_currBlock->mutableDataPtr() + io.position(), 0, rowHeaderSz); // the nullarray lives in rowheader after the 4 byte header length prefix uint8_t *nullArray = reinterpret_cast<uint8_t*>(m_currBlock->mutableDataPtr() + io.position() + rowMetadataSz); // Reserve the row header by moving the position beyond the row header. // The row header includes the 4 byte length prefix and the null array. const size_t lengthPrefixPosition = io.reserveBytes(rowHeaderSz); tuple.serializeToDR(io, 0, nullArray); ExportSerializeOutput hdr(m_currBlock->mutableDataPtr() + lengthPrefixPosition, rowMetadataSz); // add the row length to the header hdr.writeInt((int32_t)(io.position() - startPos - sizeof(int32_t))); }