Remove remaining int24 uses

This commit is contained in:
whydoubt 2005-06-23 07:04:17 +00:00
parent 3e65f9718c
commit d0474b4692
6 changed files with 35 additions and 65 deletions

View File

@ -1,5 +1,10 @@
Thu Jun 23 00:40:32 CDT 2005 Jeff Smith <whydoubt@yahoo.com> Thu Jun 23 00:40:32 CDT 2005 Jeff Smith <whydoubt@yahoo.com>
* src/libmdb/write.c: Use col->is_fixed member directly * src/libmdb/write.c: Use col->is_fixed member directly
* doc/reference/libmdb/libmdb-sections.txt:
* include/mdbtools.h:
* src/libmdb/file.c:
* src/libmdb/index.c:
* src/libmdb/write.c: Remove remaining int24 uses
Sat Jun 18 01:49:03 CDT 2005 Jeff Smith <whydoubt@yahoo.com> Sat Jun 18 01:49:03 CDT 2005 Jeff Smith <whydoubt@yahoo.com>
* src/gmdb2/gladefiles/gmdb-debug.glade: * src/gmdb2/gladefiles/gmdb-debug.glade:

View File

@ -120,17 +120,15 @@ mdb_read_pg
mdb_read_alt_pg mdb_read_alt_pg
mdb_get_byte mdb_get_byte
mdb_get_int16 mdb_get_int16
mdb_get_int24
mdb_get_int32 mdb_get_int32
mdb_get_int32_msb
mdb_get_single mdb_get_single
mdb_get_double mdb_get_double
mdb_pg_get_byte mdb_pg_get_byte
mdb_pg_get_int16 mdb_pg_get_int16
mdb_pg_get_int24
mdb_pg_get_int32 mdb_pg_get_int32
mdb_pg_get_single mdb_pg_get_single
mdb_pg_get_double mdb_pg_get_double
mdb_pg_get_int24_msb
mdb_swap_pgbuf mdb_swap_pgbuf
mdb_index_swap_n mdb_index_swap_n
mdb_test_sargs mdb_test_sargs

View File

@ -397,17 +397,15 @@ extern ssize_t mdb_read_pg(MdbHandle *mdb, unsigned long pg);
extern ssize_t mdb_read_alt_pg(MdbHandle *mdb, unsigned long pg); extern ssize_t mdb_read_alt_pg(MdbHandle *mdb, unsigned long pg);
extern unsigned char mdb_get_byte(void *buf, int offset); extern unsigned char mdb_get_byte(void *buf, int offset);
extern int mdb_get_int16(void *buf, int offset); extern int mdb_get_int16(void *buf, int offset);
extern gint32 mdb_get_int24(void *buf, int offset);
extern long mdb_get_int32(void *buf, int offset); extern long mdb_get_int32(void *buf, int offset);
extern long mdb_get_int32_msb(void *buf, int offset);
extern float mdb_get_single(void *buf, int offset); extern float mdb_get_single(void *buf, int offset);
extern double mdb_get_double(void *buf, int offset); extern double mdb_get_double(void *buf, int offset);
extern unsigned char mdb_pg_get_byte(MdbHandle *mdb, int offset); extern unsigned char mdb_pg_get_byte(MdbHandle *mdb, int offset);
extern int mdb_pg_get_int16(MdbHandle *mdb, int offset); extern int mdb_pg_get_int16(MdbHandle *mdb, int offset);
extern gint32 mdb_pg_get_int24(MdbHandle *mdb, int offset);
extern long mdb_pg_get_int32(MdbHandle *mdb, int offset); extern long mdb_pg_get_int32(MdbHandle *mdb, int offset);
extern float mdb_pg_get_single(MdbHandle *mdb, int offset); extern float mdb_pg_get_single(MdbHandle *mdb, int offset);
extern double mdb_pg_get_double(MdbHandle *mdb, int offset); extern double mdb_pg_get_double(MdbHandle *mdb, int offset);
extern gint32 mdb_pg_get_int24_msb(MdbHandle *mdb, int offset);
extern MdbHandle *mdb_open(const char *filename, MdbFileFlags flags); extern MdbHandle *mdb_open(const char *filename, MdbFileFlags flags);
extern void mdb_close(MdbHandle *mdb); extern void mdb_close(MdbHandle *mdb);
extern MdbHandle *mdb_clone_handle(MdbHandle *mdb); extern MdbHandle *mdb_clone_handle(MdbHandle *mdb);

View File

@ -314,27 +314,12 @@ int mdb_pg_get_int16(MdbHandle *mdb, int offset)
return mdb_get_int16(mdb->pg_buf, offset); return mdb_get_int16(mdb->pg_buf, offset);
} }
gint32 mdb_pg_get_int24_msb(MdbHandle *mdb, int offset) long mdb_get_int32_msb(void *buf, int offset)
{ {
gint32 l = 0; gint32 l;
if (offset <0 || offset+3 > mdb->fmt->pg_size) return -1; memcpy(&l, buf + offset, 4);
mdb->cur_pos+=3; return (long)GINT32_FROM_BE(l);
memcpy(&l, mdb->pg_buf + offset, 3);
return GINT32_FROM_BE(l);
} }
gint32 mdb_get_int24(void *buf, int offset)
{
gint32 l = 0;
memcpy(&l, buf + offset, 3);
return GINT32_FROM_LE(l);
}
gint32 mdb_pg_get_int24(MdbHandle *mdb, int offset)
{
if (offset <0 || offset+3 > mdb->fmt->pg_size) return -1;
mdb->cur_pos+=3;
return mdb_get_int24(mdb->pg_buf, offset);
}
long mdb_get_int32(void *buf, int offset) long mdb_get_int32(void *buf, int offset)
{ {
gint32 l; gint32 l;

View File

@ -455,7 +455,7 @@ mdb_find_next_leaf(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain)
//printf("find_next_on_page returned 0\n"); //printf("find_next_on_page returned 0\n");
return 0; return 0;
} }
pg = mdb_pg_get_int24_msb(mdb, ipg->offset + ipg->len - 3); pg = mdb_get_int32_msb(mdb->pg_buf, ipg->offset + ipg->len - 3) >> 8;
//printf("Looking at pg %lu at %lu %d\n", pg, ipg->offset, ipg->len); //printf("Looking at pg %lu at %lu %d\n", pg, ipg->offset, ipg->len);
ipg->offset += ipg->len; ipg->offset += ipg->len;
@ -566,6 +566,7 @@ mdb_index_find_next(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32
int idx_sz; int idx_sz;
int idx_start = 0; int idx_start = 0;
MdbColumn *col; MdbColumn *col;
guint32 pg_row;
ipg = mdb_index_read_bottom_pg(mdb, idx, chain); ipg = mdb_index_read_bottom_pg(mdb, idx, chain);
@ -587,7 +588,8 @@ mdb_index_find_next(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32
if (!chain->last_leaf_found) return 0; if (!chain->last_leaf_found) return 0;
mdb_read_pg(mdb, chain->last_leaf_found); mdb_read_pg(mdb, chain->last_leaf_found);
chain->last_leaf_found = mdb_pg_get_int24(mdb, 0x0c); chain->last_leaf_found = mdb_get_int32(
mdb->pg_buf, 0x0c);
//printf("next leaf %lu\n", chain->last_leaf_found); //printf("next leaf %lu\n", chain->last_leaf_found);
mdb_read_pg(mdb, chain->last_leaf_found); mdb_read_pg(mdb, chain->last_leaf_found);
/* reuse the chain for cleanup mode */ /* reuse the chain for cleanup mode */
@ -600,8 +602,9 @@ mdb_index_find_next(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32
return 0; return 0;
} }
} }
*row = mdb->pg_buf[ipg->offset + ipg->len - 1]; pg_row = mdb_get_int32_msb(mdb->pg_buf, ipg->offset + ipg->len - 4);
*pg = mdb_pg_get_int24_msb(mdb, ipg->offset + ipg->len - 4); *row = pg_row & 0xff;
*pg = pg_row >> 8;
//printf("row = %d pg = %lu ipg->pg = %lu offset = %lu len = %d\n", *row, *pg, ipg->pg, ipg->offset, ipg->len); //printf("row = %d pg = %lu ipg->pg = %lu offset = %lu len = %d\n", *row, *pg, ipg->pg, ipg->offset, ipg->len);
col=g_ptr_array_index(idx->table->columns,idx->key_col_num[0]-1); col=g_ptr_array_index(idx->table->columns,idx->key_col_num[0]-1);
idx_sz = mdb_col_fixed_size(col); idx_sz = mdb_col_fixed_size(col);
@ -639,8 +642,8 @@ mdb_index_find_row(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32
{ {
MdbIndexPage *ipg; MdbIndexPage *ipg;
int passed = 0; int passed = 0;
guint32 datapg; guint32 pg_row = (pg << 8) | (row & 0xff);
guint16 datarow; guint32 datapg_row;
ipg = mdb_index_read_bottom_pg(mdb, idx, chain); ipg = mdb_index_read_bottom_pg(mdb, idx, chain);
@ -668,10 +671,8 @@ mdb_index_find_row(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32
return 0; return 0;
} }
/* test row and pg */ /* test row and pg */
datarow = mdb->pg_buf[ipg->offset + ipg->len - 1]; datapg_row = mdb_get_int32_msb(mdb->pg_buf, ipg->offset + ipg->len - 4);
datapg = mdb_pg_get_int24_msb(mdb, ipg->offset + ipg->len - 4); if (pg_row == datapg_row) {
if (datapg == pg && datarow == row) {
passed = 1; passed = 1;
} }
ipg->offset += ipg->len; ipg->offset += ipg->len;

View File

@ -32,38 +32,20 @@ static int mdb_add_row_to_leaf_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPag
void void
_mdb_put_int16(unsigned char *buf, guint32 offset, guint32 value) _mdb_put_int16(unsigned char *buf, guint32 offset, guint32 value)
{ {
buf[offset] = value % 256; value = GINT32_TO_LE(value);
value /= 256; memcpy(buf + offset, &value, 2);
buf[offset+1] = value % 256;
} }
void void
_mdb_put_int32(unsigned char *buf, guint32 offset, guint32 value) _mdb_put_int32(unsigned char *buf, guint32 offset, guint32 value)
{ {
buf[offset] = value % 256; value = GINT32_TO_LE(value);
value /= 256; memcpy(buf + offset, &value, 4);
buf[offset+1] = value % 256;
value /= 256;
buf[offset+2] = value % 256;
value /= 256;
buf[offset+3] = value % 256;
} }
void void
_mdb_put_int24(unsigned char *buf, guint32 offset, guint32 value) _mdb_put_int32_msb(unsigned char *buf, guint32 offset, guint32 value)
{ {
buf[offset] = value % 256; value = GINT32_TO_BE(value);
value /= 256; memcpy(buf + offset, &value, 4);
buf[offset+1] = value % 256;
value /= 256;
buf[offset+2] = value % 256;
}
void
_mdb_put_int24_msb(unsigned char *buf, guint32 offset, guint32 value)
{
buf[offset+2] = value % 256;
value /= 256;
buf[offset+1] = value % 256;
value /= 256;
buf[offset] = value % 256;
} }
ssize_t ssize_t
mdb_write_pg(MdbHandle *mdb, unsigned long pg) mdb_write_pg(MdbHandle *mdb, unsigned long pg)
@ -782,7 +764,7 @@ mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg)
MdbCatalogEntry *entry = table->entry; MdbCatalogEntry *entry = table->entry;
MdbHandle *mdb = entry->mdb; MdbHandle *mdb = entry->mdb;
MdbColumn *col; MdbColumn *col;
guint32 pg; guint32 pg, pg_row;
guint16 row; guint16 row;
unsigned char *new_pg; unsigned char *new_pg;
unsigned char key_hash[256]; unsigned char key_hash[256];
@ -815,8 +797,9 @@ mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg)
return 0; return 0;
} }
pg = mdb_pg_get_int24_msb(mdb, ipg->offset + ipg->len - 4); pg_row = mdb_get_int32_msb(mdb->pg_buf, ipg->offset + ipg->len - 4);
row = mdb->pg_buf[ipg->offset + ipg->len - 1]; pg = pg_row >> 8;
row = pg_row & 0xff;
iflag = mdb->pg_buf[ipg->offset]; iflag = mdb->pg_buf[ipg->offset];
/* turn the key hash back into a value */ /* turn the key hash back into a value */
@ -850,8 +833,8 @@ mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg)
} }
new_pg[ipg->offset] = 0x7f; new_pg[ipg->offset] = 0x7f;
memcpy(&new_pg[ipg->offset + 1], key_hash, col->col_size); memcpy(&new_pg[ipg->offset + 1], key_hash, col->col_size);
_mdb_put_int24_msb(new_pg, ipg->offset + 5, pgnum); pg_row = (pgnum << 8) | ((rownum-1) & 0xff);
new_pg[ipg->offset + 8] = rownum-1; _mdb_put_int32_msb(new_pg, ipg->offset + 5, pg_row);
ipg->idx_starts[row++] = ipg->offset + ipg->len; ipg->idx_starts[row++] = ipg->offset + ipg->len;
//ipg->idx_starts[row] = ipg->offset + ipg->len; //ipg->idx_starts[row] = ipg->offset + ipg->len;
if (mdb_get_option(MDB_DEBUG_WRITE)) { if (mdb_get_option(MDB_DEBUG_WRITE)) {