Add mdb_find_row function

This commit is contained in:
whydoubt
2005-03-07 04:28:12 +00:00
parent 3f79bc4884
commit 3153f5dd1e
6 changed files with 70 additions and 64 deletions

View File

@@ -25,7 +25,7 @@ main(int argc, char **argv)
{
MdbHandle *mdb;
int j;
long int pgnum = 0, row_start, row_end, map_sz;
long int pgnum = 0, row_start, map_sz;
int coln = 1;
unsigned char *map_buf;
@@ -38,10 +38,9 @@ unsigned char *map_buf;
mdb = mdb_open(argv[1], MDB_NOFLAGS);
mdb_read_pg (mdb, 1);
row_start = mdb_get_int16(mdb, (mdb->fmt->row_count_offset + 2));
row_end = mdb_find_end_of_row(mdb, 0);
mdb_find_row(mdb, 0, &row_start, &map_sz);
map_buf = &mdb->pg_buf[row_start];
map_sz = row_end - row_start;
map_sz --;
/*
* trim the end of a type 0 map
*/

View File

@@ -79,20 +79,18 @@ page_name(int page_type)
void check_row(MdbHandle *mdb, MdbIndex *idx, guint32 pg, int row, unsigned char *idxrow, int len)
{
MdbField fields[256];
MdbFormatConstants *fmt;
unsigned int num_fields, i, j;
int row_start, row_end;
int row_start, row_size;
MdbColumn *col;
guchar buf[256], key[256];
int elem;
MdbTableDef *table = idx->table;
fmt = mdb->fmt;
mdb_read_pg(mdb, pg);
row_start = mdb_pg_get_int16(mdb, (fmt->row_count_offset + 2) + (row*2));
row_end = mdb_find_end_of_row(mdb, row);
mdb_find_row(mdb, row, &row_start, &row_size);
num_fields = mdb_crack_row(table, row_start, row_end, fields);
num_fields = mdb_crack_row(table, row_start, row_start + row_size - 1,
fields);
for (i=0;i<idx->num_keys;i++) {
col=g_ptr_array_index(table->columns,idx->key_col_num[i]-1);
if (col->col_type==MDB_TEXT) {