mirror of https://github.com/citusdata/citus.git
address review comments
parent
dee408248c
commit
573555747f
6
cstore.h
6
cstore.h
|
@ -300,6 +300,10 @@ typedef struct SmgrAddr
|
|||
uint32 offset;
|
||||
} SmgrAddr;
|
||||
|
||||
/*
|
||||
* Map logical offsets (as tracked in the metadata) to a physical page and
|
||||
* offset where the data is kept.
|
||||
*/
|
||||
static inline SmgrAddr
|
||||
logical_to_smgr(uint64 logicalOffset)
|
||||
{
|
||||
|
@ -307,7 +311,7 @@ logical_to_smgr(uint64 logicalOffset)
|
|||
SmgrAddr addr;
|
||||
|
||||
addr.blockno = logicalOffset / bytes_per_page;
|
||||
addr.offset = logicalOffset % bytes_per_page;
|
||||
addr.offset = SizeOfPageHeaderData + (logicalOffset % bytes_per_page);
|
||||
|
||||
return addr;
|
||||
}
|
||||
|
|
|
@ -1175,14 +1175,13 @@ ReadFromSmgr(Relation rel, uint64 offset, uint32 size)
|
|||
PageHeader phdr;
|
||||
uint32 to_read;
|
||||
SmgrAddr addr = logical_to_smgr(offset + read);
|
||||
uint32 pageoffset = addr.offset + SizeOfPageHeaderData;
|
||||
|
||||
buffer = ReadBuffer(rel, addr.blockno);
|
||||
page = BufferGetPage(buffer);
|
||||
phdr = (PageHeader)page;
|
||||
|
||||
to_read = Min(size - read, phdr->pd_upper - pageoffset);
|
||||
memcpy(resultBuffer->data + read, page + pageoffset, to_read);
|
||||
to_read = Min(size - read, phdr->pd_upper - addr.offset);
|
||||
memcpy(resultBuffer->data + read, page + addr.offset, to_read);
|
||||
ReleaseBuffer(buffer);
|
||||
read += to_read;
|
||||
}
|
||||
|
|
|
@ -405,12 +405,13 @@ WriteToSmgr(TableWriteState *writeState, char *data, uint32 dataLength)
|
|||
PageInit(page, BLCKSZ, 0);
|
||||
|
||||
/* always appending */
|
||||
Assert(phdr->pd_lower == addr.offset + SizeOfPageHeaderData);
|
||||
Assert(phdr->pd_lower == addr.offset);
|
||||
|
||||
to_write = Min(phdr->pd_upper - phdr->pd_lower, remaining);
|
||||
memcpy(page + phdr->pd_lower, data, to_write);
|
||||
phdr->pd_lower += to_write;
|
||||
|
||||
MarkBufferDirty(buffer);
|
||||
UnlockReleaseBuffer(buffer);
|
||||
|
||||
data += to_write;
|
||||
|
|
Loading…
Reference in New Issue