db_tutorial
db_tutorial copied to clipboard
Part 5: page_num out of bounds
If page_num start from 0 to TABLE_MAX_PAGE - 1, not 1, the if statement should be this instead. Tell me if I am right or wrong.
void* get_page(Pager* pager, uint32_t page_number){
if(page_number >= TABLE_MAX_PAGES){
printf("Tried to fetch page number out of bounds. %d > %d\n", page_number, TABLE_MAX_PAGES);
exit(EXIT_FAILURE);
}
I noticed the same problem. I think you're right.
Maybe there's a similar problem also in the function get_page (line 248 in db.c):
void* get_page(Pager* pager, uint32_t page_number){
...
if (page_num <= num_pages) {
lseek(pager->file_descriptor, page_num * PAGE_SIZE, SEEK_SET);
...
}
...
}
(line 248 in db.c)if (page_num <= num_pages) I think it should be if (page_num < num_pages). Since the page_num is an index starts from 0 to TABLE_MAX_PAGE - 1, and the num_pages starts from 1.
I'm not quite sure. Could you please tell me if I am right or wrong? Thanks so much.