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>
* 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>
* src/gmdb2/gladefiles/gmdb-debug.glade:

View File

@ -120,17 +120,15 @@ mdb_read_pg
mdb_read_alt_pg
mdb_get_byte
mdb_get_int16
mdb_get_int24
mdb_get_int32
mdb_get_int32_msb
mdb_get_single
mdb_get_double
mdb_pg_get_byte
mdb_pg_get_int16
mdb_pg_get_int24
mdb_pg_get_int32
mdb_pg_get_single
mdb_pg_get_double
mdb_pg_get_int24_msb
mdb_swap_pgbuf
mdb_index_swap_n
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 unsigned char mdb_get_byte(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_msb(void *buf, int offset);
extern float mdb_get_single(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 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 float mdb_pg_get_single(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 void mdb_close(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);
}
gint32 mdb_pg_get_int24_msb(MdbHandle *mdb, int offset)
long mdb_get_int32_msb(void *buf, int offset)
{
gint32 l = 0;
if (offset <0 || offset+3 > mdb->fmt->pg_size) return -1;
mdb->cur_pos+=3;
memcpy(&l, mdb->pg_buf + offset, 3);
return GINT32_FROM_BE(l);
gint32 l;
memcpy(&l, buf + offset, 4);
return (long)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)
{
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");
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);
ipg->offset += ipg->len;
@ -566,6 +566,7 @@ mdb_index_find_next(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32
int idx_sz;
int idx_start = 0;
MdbColumn *col;
guint32 pg_row;
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;
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);
mdb_read_pg(mdb, chain->last_leaf_found);
/* reuse the chain for cleanup mode */
@ -600,8 +602,9 @@ mdb_index_find_next(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32
return 0;
}
}
*row = mdb->pg_buf[ipg->offset + ipg->len - 1];
*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 = 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);
col=g_ptr_array_index(idx->table->columns,idx->key_col_num[0]-1);
idx_sz = mdb_col_fixed_size(col);
@ -639,8 +642,8 @@ mdb_index_find_row(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32
{
MdbIndexPage *ipg;
int passed = 0;
guint32 datapg;
guint16 datarow;
guint32 pg_row = (pg << 8) | (row & 0xff);
guint32 datapg_row;
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;
}
/* test row and pg */
datarow = mdb->pg_buf[ipg->offset + ipg->len - 1];
datapg = mdb_pg_get_int24_msb(mdb, ipg->offset + ipg->len - 4);
if (datapg == pg && datarow == row) {
datapg_row = mdb_get_int32_msb(mdb->pg_buf, ipg->offset + ipg->len - 4);
if (pg_row == datapg_row) {
passed = 1;
}
ipg->offset += ipg->len;

View File

@ -32,38 +32,20 @@ static int mdb_add_row_to_leaf_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPag
void
_mdb_put_int16(unsigned char *buf, guint32 offset, guint32 value)
{
buf[offset] = value % 256;
value /= 256;
buf[offset+1] = value % 256;
value = GINT32_TO_LE(value);
memcpy(buf + offset, &value, 2);
}
void
_mdb_put_int32(unsigned char *buf, guint32 offset, guint32 value)
{
buf[offset] = value % 256;
value /= 256;
buf[offset+1] = value % 256;
value /= 256;
buf[offset+2] = value % 256;
value /= 256;
buf[offset+3] = value % 256;
value = GINT32_TO_LE(value);
memcpy(buf + offset, &value, 4);
}
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 /= 256;
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;
value = GINT32_TO_BE(value);
memcpy(buf + offset, &value, 4);
}
ssize_t
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;
MdbHandle *mdb = entry->mdb;
MdbColumn *col;
guint32 pg;
guint32 pg, pg_row;
guint16 row;
unsigned char *new_pg;
unsigned char key_hash[256];
@ -815,8 +797,9 @@ mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg)
return 0;
}
pg = mdb_pg_get_int24_msb(mdb, ipg->offset + ipg->len - 4);
row = mdb->pg_buf[ipg->offset + ipg->len - 1];
pg_row = mdb_get_int32_msb(mdb->pg_buf, ipg->offset + ipg->len - 4);
pg = pg_row >> 8;
row = pg_row & 0xff;
iflag = mdb->pg_buf[ipg->offset];
/* 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;
memcpy(&new_pg[ipg->offset + 1], key_hash, col->col_size);
_mdb_put_int24_msb(new_pg, ipg->offset + 5, pgnum);
new_pg[ipg->offset + 8] = rownum-1;
pg_row = (pgnum << 8) | ((rownum-1) & 0xff);
_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;
if (mdb_get_option(MDB_DEBUG_WRITE)) {