mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-04-05 20:31:00 +08:00
Remove remaining int24 uses
This commit is contained in:
parent
3e65f9718c
commit
d0474b4692
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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)) {
|
||||
|
Loading…
Reference in New Issue
Block a user