Skip to content

Commit

Permalink
fix rel updates
Browse files Browse the repository at this point in the history
  • Loading branch information
ray6080 committed Nov 16, 2023
1 parent 53bc76b commit cd048ae
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 48 deletions.
7 changes: 3 additions & 4 deletions src/include/storage/store/table.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,9 @@ class Table {
public:
Table(catalog::TableSchema* tableSchema, TablesStatistics* tablesStatistics,
MemoryManager* memoryManager, WAL* wal)
: tableType{tableSchema->tableType},
tablesStatistics{tablesStatistics}, tableID{tableSchema->tableID},
memoryManager{memoryManager}, bufferManager{memoryManager->getBufferManager()}, wal{wal} {
}
: tableType{tableSchema->tableType}, tablesStatistics{tablesStatistics},
tableID{tableSchema->tableID}, memoryManager{memoryManager},
bufferManager{memoryManager->getBufferManager()}, wal{wal} {}
virtual ~Table() = default;

inline common::TableType getTableType() const { return tableType; }
Expand Down
88 changes: 44 additions & 44 deletions src/storage/store/column.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,16 @@ struct NullColumnFunc {
// Read bit-packed null flags from the frame into the result vector
// Casting to uint64_t should be safe as long as the page size is a multiple of 8 bytes.
// Otherwise, it could read off the end of the page.
resultVector->setNullFromBits(
(uint64_t*)frame, pageCursor.elemPosInPage, posInVector, numValuesToRead);
resultVector->setNullFromBits((uint64_t*)frame, pageCursor.elemPosInPage, posInVector,
numValuesToRead);
}

static void writeValueToPage(uint8_t* frame, uint16_t posInFrame, ValueVector* vector,
uint32_t posInVector, const CompressionMetadata& /*metadata*/) {
// Casting to uint64_t should be safe as long as the page size is a multiple of 8 bytes.
// Otherwise, it could read off the end of the page.
NullMask::setNull(
(uint64_t*)frame, posInFrame, NullMask::isNull(vector->getNullMaskData(), posInVector));
NullMask::setNull((uint64_t*)frame, posInFrame,
NullMask::isNull(vector->getNullMaskData(), posInVector));
}
};

Expand All @@ -68,8 +68,8 @@ struct BoolColumnFunc {
//
// Currently, the frame stores bitpacked bools, but the value_vector does not
for (auto i = 0; i < numValuesToRead; i++) {
resultVector->setValue(
posInVector + i, NullMask::isNull((uint64_t*)frame, pageCursor.elemPosInPage + i));
resultVector->setValue(posInVector + i,
NullMask::isNull((uint64_t*)frame, pageCursor.elemPosInPage + i));
}
}

Expand Down Expand Up @@ -159,8 +159,8 @@ class NullColumn : public Column {
writeFromVectorFunc = NullColumnFunc::writeValueToPage;
}

void scan(
Transaction* transaction, ValueVector* nodeIDVector, ValueVector* resultVector) final {
void scan(Transaction* transaction, ValueVector* nodeIDVector,
ValueVector* resultVector) final {
if (propertyStatistics.mayHaveNull(*transaction)) {
scanInternal(transaction, nodeIDVector, resultVector);
} else {
Expand Down Expand Up @@ -188,8 +188,8 @@ class NullColumn : public Column {
}
}

void lookup(
Transaction* transaction, ValueVector* nodeIDVector, ValueVector* resultVector) final {
void lookup(Transaction* transaction, ValueVector* nodeIDVector,
ValueVector* resultVector) final {
if (propertyStatistics.mayHaveNull(*transaction)) {
lookupInternal(transaction, nodeIDVector, resultVector);
} else {
Expand Down Expand Up @@ -243,8 +243,8 @@ class SerialColumn : public Column {
bufferManager, wal, transaction, RWPropertyStats::empty(),
false /* enableCompression */, false /*requireNullColumn*/} {}

void scan(
Transaction* /*transaction*/, ValueVector* nodeIDVector, ValueVector* resultVector) final {
void scan(Transaction* /*transaction*/, ValueVector* nodeIDVector,
ValueVector* resultVector) final {
// Serial column cannot contain null values.
for (auto i = 0ul; i < nodeIDVector->state->selVector->selectedSize; i++) {
auto pos = nodeIDVector->state->selVector->selectedPositions[i];
Expand All @@ -254,8 +254,8 @@ class SerialColumn : public Column {
}
}

void lookup(
Transaction* /*transaction*/, ValueVector* nodeIDVector, ValueVector* resultVector) final {
void lookup(Transaction* /*transaction*/, ValueVector* nodeIDVector,
ValueVector* resultVector) final {
// Serial column cannot contain null values.
for (auto i = 0ul; i < nodeIDVector->state->selVector->selectedSize; i++) {
auto pos = nodeIDVector->state->selVector->selectedPositions[i];
Expand Down Expand Up @@ -289,8 +289,8 @@ Column::Column(std::unique_ptr<common::LogicalType> dataType,
BufferManager* bufferManager, WAL* wal, transaction::Transaction* transaction,
RWPropertyStats propertyStatistics, bool enableCompression, bool requireNullColumn)
: dbFileID{DBFileID::newDataFileID()}, dataType{std::move(dataType)}, dataFH{dataFH},
metadataFH{metadataFH}, bufferManager{bufferManager},
propertyStatistics{propertyStatistics}, wal{wal}, enableCompression{enableCompression} {
metadataFH{metadataFH}, bufferManager{bufferManager}, propertyStatistics{propertyStatistics},
wal{wal}, enableCompression{enableCompression} {
metadataDA = std::make_unique<InMemDiskArray<ColumnChunkMetadata>>(*metadataFH,
DBFileID::newMetadataFileID(), metaDAHeaderInfo.dataDAHPageIdx, bufferManager, wal,
transaction);
Expand All @@ -306,8 +306,8 @@ Column::Column(std::unique_ptr<common::LogicalType> dataType,
}
}

void Column::batchLookup(
Transaction* transaction, const offset_t* nodeOffsets, size_t size, uint8_t* result) {
void Column::batchLookup(Transaction* transaction, const offset_t* nodeOffsets, size_t size,
uint8_t* result) {
for (auto i = 0u; i < size; ++i) {
auto nodeOffset = nodeOffsets[i];
auto cursor = getPageCursorForOffset(transaction->getType(), nodeOffset);
Expand Down Expand Up @@ -339,12 +339,12 @@ void Column::scan(transaction::Transaction* transaction, node_group_idx_t nodeGr
chunkMeta.compMeta.numValues(BufferPoolConstants::PAGE_4KB_SIZE, *dataType));
pageCursor.pageIdx += chunkMeta.pageIdx;
auto numValuesToScan = endOffsetInGroup - startOffsetInGroup;
scanUnfiltered(
transaction, pageCursor, numValuesToScan, resultVector, chunkMeta, offsetInVector);
scanUnfiltered(transaction, pageCursor, numValuesToScan, resultVector, chunkMeta,
offsetInVector);
}

void Column::scan(
Transaction* transaction, node_group_idx_t nodeGroupIdx, ColumnChunk* columnChunk) {
void Column::scan(Transaction* transaction, node_group_idx_t nodeGroupIdx,
ColumnChunk* columnChunk) {
if (nullColumn) {
nullColumn->scan(transaction, nodeGroupIdx, columnChunk->getNullChunk());
}
Expand Down Expand Up @@ -377,8 +377,8 @@ void Column::scan(
}
}

void Column::scanInternal(
Transaction* transaction, ValueVector* nodeIDVector, ValueVector* resultVector) {
void Column::scanInternal(Transaction* transaction, ValueVector* nodeIDVector,
ValueVector* resultVector) {
auto startNodeOffset = nodeIDVector->readNodeOffset(0);
KU_ASSERT(startNodeOffset % DEFAULT_VECTOR_CAPACITY == 0);
auto cursor = getPageCursorForOffset(transaction->getType(), startNodeOffset);
Expand Down Expand Up @@ -441,16 +441,16 @@ void Column::scanFiltered(Transaction* transaction, PageElementCursor& pageCurso
}
}

void Column::lookup(
Transaction* transaction, ValueVector* nodeIDVector, ValueVector* resultVector) {
void Column::lookup(Transaction* transaction, ValueVector* nodeIDVector,
ValueVector* resultVector) {
if (nullColumn) {
nullColumn->lookup(transaction, nodeIDVector, resultVector);
}
lookupInternal(transaction, nodeIDVector, resultVector);
}

void Column::lookupInternal(
transaction::Transaction* transaction, ValueVector* nodeIDVector, ValueVector* resultVector) {
void Column::lookupInternal(transaction::Transaction* transaction, ValueVector* nodeIDVector,
ValueVector* resultVector) {
for (auto i = 0ul; i < nodeIDVector->state->selVector->selectedSize; i++) {
auto pos = nodeIDVector->state->selVector->selectedPositions[i];
if (nodeIDVector->isNull(pos)) {
Expand All @@ -468,13 +468,13 @@ void Column::lookupValue(transaction::Transaction* transaction, offset_t nodeOff
auto chunkMeta = metadataDA->get(nodeGroupIdx, transaction->getType());
KU_ASSERT(cursor.pageIdx < chunkMeta.pageIdx + chunkMeta.numPages);
readFromPage(transaction, cursor.pageIdx, [&](uint8_t* frame) -> void {
readToVectorFunc(
frame, cursor, resultVector, posInVector, 1 /* numValuesToRead */, chunkMeta.compMeta);
readToVectorFunc(frame, cursor, resultVector, posInVector, 1 /* numValuesToRead */,
chunkMeta.compMeta);
});
}

void Column::readFromPage(
Transaction* transaction, page_idx_t pageIdx, const std::function<void(uint8_t*)>& func) {
void Column::readFromPage(Transaction* transaction, page_idx_t pageIdx,
const std::function<void(uint8_t*)>& func) {
auto [fileHandleToPin, pageIdxToPin] = DBFileUtils::getFileHandleAndPhysicalPageIdxToPin(
*dataFH, pageIdx, *wal, transaction->getType());
bufferManager->optimisticRead(*fileHandleToPin, pageIdxToPin, func);
Expand All @@ -493,8 +493,8 @@ void Column::append(ColumnChunk* columnChunk, uint64_t nodeGroupIdx) {
}
}

void Column::write(
offset_t nodeOffset, ValueVector* vectorToWriteFrom, uint32_t posInVectorToWriteFrom) {
void Column::write(offset_t nodeOffset, ValueVector* vectorToWriteFrom,
uint32_t posInVectorToWriteFrom) {
if (nullColumn) {
nullColumn->write(nodeOffset, vectorToWriteFrom, posInVectorToWriteFrom);
}
Expand All @@ -505,8 +505,8 @@ void Column::write(
writeValue(nodeOffset, vectorToWriteFrom, posInVectorToWriteFrom);
}

void Column::writeValue(
offset_t nodeOffset, ValueVector* vectorToWriteFrom, uint32_t posInVectorToWriteFrom) {
void Column::writeValue(offset_t nodeOffset, ValueVector* vectorToWriteFrom,
uint32_t posInVectorToWriteFrom) {
auto walPageInfo = createWALVersionOfPageForValue(nodeOffset);
auto nodeGroupIdx = StorageUtils::getNodeGroupIdx(nodeOffset);
auto chunkMeta = metadataDA->get(nodeGroupIdx, TransactionType::WRITE);
Expand Down Expand Up @@ -606,8 +606,8 @@ bool Column::canCommitInPlace(Transaction* transaction, node_group_idx_t nodeGro
for (auto rowIdx : rowIdxesToRead) {
auto localVector = localChunk->getLocalVector(rowIdx);
auto offsetInVector = rowIdx & (DEFAULT_VECTOR_CAPACITY - 1);
if (!metadata.compMeta.canUpdateInPlace(
*localVector->getVector(), offsetInVector, dataType->getPhysicalType())) {
if (!metadata.compMeta.canUpdateInPlace(*localVector->getVector(), offsetInVector,
dataType->getPhysicalType())) {
return false;
}
}
Expand Down Expand Up @@ -656,8 +656,8 @@ void Column::applyLocalChunkToColumnChunk(LocalVectorCollection* localChunk,
}
}

void Column::applyLocalChunkToColumn(
LocalVectorCollection* localChunk, const std::map<offset_t, row_idx_t>& updateInfo) {
void Column::applyLocalChunkToColumn(LocalVectorCollection* localChunk,
const std::map<offset_t, row_idx_t>& updateInfo) {
for (auto& [nodeOffset, rowIdx] : updateInfo) {
auto localVector = localChunk->getLocalVector(rowIdx);
auto offsetInVector = rowIdx & (DEFAULT_VECTOR_CAPACITY - 1);
Expand Down Expand Up @@ -704,8 +704,8 @@ void Column::populateWithDefaultVal(const Property& property, Column* column,
}
}

PageElementCursor Column::getPageCursorForOffset(
TransactionType transactionType, offset_t nodeOffset) {
PageElementCursor Column::getPageCursorForOffset(TransactionType transactionType,
offset_t nodeOffset) {
auto nodeGroupIdx = StorageUtils::getNodeGroupIdx(nodeOffset);
auto offsetInNodeGroup = nodeOffset - StorageUtils::getStartOffsetOfNodeGroup(nodeGroupIdx);
auto chunkMeta = metadataDA->get(nodeGroupIdx, transactionType);
Expand Down Expand Up @@ -760,8 +760,8 @@ std::unique_ptr<Column> ColumnFactory::createColumn(std::unique_ptr<common::Logi
metadataFH, bufferManager, wal, transaction, propertyStatistics, enableCompression);
}
case LogicalTypeID::SERIAL: {
return std::make_unique<SerialColumn>(
metaDAHeaderInfo, dataFH, metadataFH, bufferManager, wal, transaction);
return std::make_unique<SerialColumn>(metaDAHeaderInfo, dataFH, metadataFH, bufferManager,
wal, transaction);
}
default: {
KU_UNREACHABLE;
Expand Down

0 comments on commit cd048ae

Please sign in to comment.