8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-02-02 10:40:38 +01:00

Fix the usage of the page number as a 32-bit value

This commit is contained in:
Roman Simakov 2021-11-15 18:05:49 +03:00
parent 965f7cb0ac
commit 348e6b1e9a
4 changed files with 26 additions and 26 deletions

View File

@ -1504,7 +1504,7 @@ void PAG_init2(thread_db* tdbb, USHORT shadow_number)
}
SLONG PAG_last_page(thread_db* tdbb)
ULONG PAG_last_page(thread_db* tdbb)
{
/**************************************
*

View File

@ -54,7 +54,7 @@ void PAG_header(Jrd::thread_db*, bool);
void PAG_header_init(Jrd::thread_db*);
void PAG_init(Jrd::thread_db*);
void PAG_init2(Jrd::thread_db*, USHORT);
SLONG PAG_last_page(Jrd::thread_db* tdbb);
ULONG PAG_last_page(Jrd::thread_db* tdbb);
void PAG_release_page(Jrd::thread_db* tdbb, const Jrd::PageNumber&, const Jrd::PageNumber&);
void PAG_release_pages(Jrd::thread_db* tdbb, USHORT pageSpaceID, int cntRelease,
const ULONG* pgNums, const ULONG prior_page);

View File

@ -456,7 +456,7 @@ void SDW_dump_pages(thread_db* tdbb)
SyncLockGuard guard(&dbb->dbb_shadow_sync, SYNC_EXCLUSIVE, "SDW_dump_pages");
gds__log("conditional shadow dumped for database %s", dbb->dbb_filename.c_str());
const SLONG max = PAG_last_page(tdbb);
const ULONG max = PAG_last_page(tdbb);
// mark the first shadow in the list because we don't
// want to start shadowing to any files that are added
@ -468,15 +468,15 @@ void SDW_dump_pages(thread_db* tdbb)
window.win_flags = WIN_large_scan;
window.win_scans = 1;
for (SLONG page_number = HEADER_PAGE + 1; page_number <= max; page_number++)
for (ULONG page_number = HEADER_PAGE + 1; page_number <= max; page_number++)
{
#ifdef SUPERSERVER_V2
if (!(page_number % dbb->dbb_prefetch_sequence))
{
SLONG pages[PREFETCH_MAX_PAGES];
ULONG pages[PREFETCH_MAX_PAGES];
SLONG number = page_number;
SLONG i = 0;
ULONG number = page_number;
ULONG i = 0;
while (i < dbb->dbb_prefetch_pages && number <= max) {
pages[i++] = number++;
}

View File

@ -195,7 +195,7 @@ static void db_error(int);
static USHORT get_format_length(ISC_STATUS*, isc_db_handle, isc_tr_handle, ISC_QUAD&);
static dba_fil* db_open(const char*, USHORT);
static const pag* db_read(SLONG page_number, bool ok_enc = false);
static const pag* db_read(ULONG page_number, bool ok_enc = false);
#ifdef WIN_NT
static void db_close(void* file_desc);
#else
@ -264,7 +264,7 @@ public:
USHORT page_size;
USHORT dp_per_pp;
USHORT max_records;
SLONG page_number;
ULONG page_number;
pag* buffer1;
pag* buffer2;
pag* global_buffer;
@ -615,8 +615,8 @@ int gstat(Firebird::UtilSvc* uSvc)
SCHAR temp[RAW_HEADER_SIZE];
tddba->page_size = sizeof(temp);
tddba->global_buffer = (pag*) temp;
tddba->page_number = -1;
const header_page* header = (const header_page*) db_read((SLONG) 0);
tddba->page_number = ~0u;
const header_page* header = (const header_page*) db_read(0);
uSvc->started();
@ -641,7 +641,7 @@ int gstat(Firebird::UtilSvc* uSvc)
tddba->buffer1 = (pag*) alloc(tddba->page_size);
tddba->buffer2 = (pag*) alloc(tddba->page_size);
tddba->global_buffer = (pag*) alloc(tddba->page_size);
tddba->page_number = -1;
tddba->page_number = ~0u;
// gather continuation files
@ -1331,7 +1331,7 @@ static void analyze_data( dba_rel* relation, bool sw_record)
pointer_page* ptr_page = (pointer_page*) tddba->buffer1;
for (SLONG next_pp = relation->rel_pointer_page; next_pp; next_pp = ptr_page->ppg_next)
for (ULONG next_pp = relation->rel_pointer_page; next_pp; next_pp = ptr_page->ppg_next)
{
++relation->rel_pointer_pages;
memcpy(ptr_page, (const SCHAR*) db_read(next_pp), tddba->page_size);
@ -1477,13 +1477,13 @@ static void analyze_blob(dba_rel* relation, const blh* blob, int length)
{
relation->rel_blobs_level_2++;
SLONG pages[MAX_PAGE_SIZE / sizeof(SLONG)];
memcpy(pages, blob->blh_page, slots * sizeof(SLONG));
ULONG pages[MAX_PAGE_SIZE / sizeof(ULONG)];
memcpy(pages, blob->blh_page, slots * sizeof(ULONG));
for (int i = 0; i < slots; i++)
{
const blob_page* bpage = (const blob_page*) db_read(pages[i]);
relation->rel_blob_pages += bpage->blp_length / sizeof(SLONG);
relation->rel_blob_pages += bpage->blp_length / sizeof(ULONG);
}
}
}
@ -1507,7 +1507,7 @@ static ULONG analyze_fragments(dba_rel* relation, const rhdf* header)
while (header->rhdf_flags & rhd_incomplete)
{
const SLONG f_page = header->rhdf_f_page;
const ULONG f_page = header->rhdf_f_page;
const USHORT f_line = header->rhdf_f_line;
const data_page* page = (const data_page*) db_read(f_page);
if (page->dpg_header.pag_type != pag_data || page->dpg_relation != relation->rel_id ||
@ -1555,7 +1555,7 @@ static void analyze_index( const dba_rel* relation, dba_idx* index)
const index_root_page* index_root = (const index_root_page*) db_read(relation->rel_index_root);
SLONG page;
ULONG page;
if (index_root->irt_count <= index->idx_id ||
!(page = index_root->irt_rpt[index->idx_id].getRoot()))
{
@ -1578,7 +1578,7 @@ static void analyze_index( const dba_rel* relation, dba_idx* index)
}
bool firstLeafNode = true;
SLONG number;
ULONG number;
FB_UINT64 duplicates = 0;
// Maximum key length is 1/4 of the used page-size
@ -1701,7 +1701,7 @@ static ULONG analyze_versions( dba_rel* relation, const rhdf* header)
**************************************/
//tdba* tddba = tdba::getSpecific();
ULONG space = 0, versions = 0;
SLONG b_page = header->rhdf_b_page;
ULONG b_page = header->rhdf_b_page;
USHORT b_line = header->rhdf_b_line;
while (b_page)
@ -1912,7 +1912,7 @@ static dba_fil* db_open(const char* file_name, USHORT file_length)
}
static const pag* db_read( SLONG page_number, bool ok_enc)
static const pag* db_read( ULONG page_number, bool ok_enc)
{
/**************************************
*
@ -1935,7 +1935,7 @@ static const pag* db_read( SLONG page_number, bool ok_enc)
tddba->page_number = page_number;
dba_fil* fil;
for (fil = tddba->files; page_number > (SLONG) fil->fil_max_page && fil->fil_next;)
for (fil = tddba->files; page_number > fil->fil_max_page && fil->fil_next;)
{
fil = fil->fil_next;
}
@ -2015,7 +2015,7 @@ static void db_error( int status)
*
**************************************/
tdba* tddba = tdba::getSpecific();
tddba->page_number = -1;
tddba->page_number = ~0u;
// FIXME: The strerror() function returns the appropriate description
// string, or an unknown error message if the error code is unknown.
@ -2097,7 +2097,7 @@ static dba_fil* db_open(const char* file_name, USHORT file_length)
}
static const pag* db_read( SLONG page_number, bool ok_enc)
static const pag* db_read( ULONG page_number, bool ok_enc)
{
/**************************************
*
@ -2117,7 +2117,7 @@ static const pag* db_read( SLONG page_number, bool ok_enc)
tddba->page_number = page_number;
dba_fil* fil;
for (fil = tddba->files; page_number > (SLONG) fil->fil_max_page && fil->fil_next;)
for (fil = tddba->files; page_number > fil->fil_max_page && fil->fil_next;)
{
fil = fil->fil_next;
}
@ -2177,7 +2177,7 @@ static void dba_error(USHORT errcode, const SafeArg& arg)
*
**************************************/
tdba* tddba = tdba::getSpecific();
tddba->page_number = -1;
tddba->page_number = ~0u;
tddba->uSvc->setServiceStatus(GSTAT_MSG_FAC, errcode, arg);
if (!tddba->uSvc->isService())