handle any object type in mdb-prop

This commit is contained in:
brianb
2004-05-02 11:39:25 +00:00
parent 8c54cf8331
commit 50a94fdccf
4 changed files with 17 additions and 7 deletions

View File

@@ -1,5 +1,6 @@
Sun May 2 06:31:17 EDT 2004 Brian Bruns <brian@bruns.com> Sun May 2 06:31:17 EDT 2004 Brian Bruns <brian@bruns.com>
* src/libmdb/mdb-tables.c: Add -t flag to specify object type * src/util/mdb-tables.c: Add -t flag to specify object type
* src/util/mdb-props.c: Handle any object type, not just tables
Sat May 1 00:02:09 CDT 2004 Jeff Smith <whydoubt@yahoo.com> Sat May 1 00:02:09 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
* doc/reference/libmdb/libmdb-sections.txt: * doc/reference/libmdb/libmdb-sections.txt:

View File

@@ -26,7 +26,8 @@
#endif #endif
static int mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg); //static int mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg);
static int mdb_add_row_to_leaf_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg, MdbField *idx_fields);
void void
_mdb_put_int16(unsigned char *buf, guint32 offset, guint32 value) _mdb_put_int16(unsigned char *buf, guint32 offset, guint32 value)
@@ -615,12 +616,15 @@ mdb_update_index(MdbTableDef *table, MdbIndex *idx, int num_fields, MdbField *fi
int idx_xref[16]; int idx_xref[16];
int i, j; int i, j;
MdbIndexChain *chain; MdbIndexChain *chain;
MdbField idx_fields[10];
for (i = 0; i < idx->num_keys; i++) { for (i = 0; i < idx->num_keys; i++) {
for (j = 0; j < num_fields; j++) { for (j = 0; j < num_fields; j++) {
// key_col_num is 1 based, can't remember why though // key_col_num is 1 based, can't remember why though
if (fields[j].colnum == idx->key_col_num[i]-1) if (fields[j].colnum == idx->key_col_num[i]-1) {
idx_xref[i] = j; idx_xref[i] = j;
idx_fields[i] = fields[j];
}
} }
} }
for (i = 0; i < idx->num_keys; i++) { for (i = 0; i < idx->num_keys; i++) {
@@ -639,7 +643,8 @@ mdb_update_index(MdbTableDef *table, MdbIndex *idx, int num_fields, MdbField *fi
mdb_index_find_row(mdb, idx, chain, pgnum, rownum); mdb_index_find_row(mdb, idx, chain, pgnum, rownum);
printf("chain depth = %d\n", chain->cur_depth); printf("chain depth = %d\n", chain->cur_depth);
printf("pg = %lu\n", chain->pages[chain->cur_depth-1].pg); printf("pg = %lu\n", chain->pages[chain->cur_depth-1].pg);
mdb_copy_index_pg(table, idx, &chain->pages[chain->cur_depth-1]); //mdb_copy_index_pg(table, idx, &chain->pages[chain->cur_depth-1]);
mdb_add_row_to_leaf_pg(table, idx, &chain->pages[chain->cur_depth-1], idx_fields);
return 1; return 1;
} }
@@ -859,9 +864,12 @@ int i, pos;
} }
return 0; return 0;
} }
/*mdb_add_row_to_leaf_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg, MdbRow row, guint32 pgnum, guint16 rownum) */ static int
mdb_add_row_to_leaf_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg, MdbField *idx_fields)
/*, guint32 pgnum, guint16 rownum)
static int static int
mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg) 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;
@@ -894,10 +902,12 @@ mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg)
while (mdb_index_find_next_on_page(mdb, ipg)) { while (mdb_index_find_next_on_page(mdb, ipg)) {
/* check for compressed indexes. */
if (ipg->len < col->col_size + 1) { if (ipg->len < col->col_size + 1) {
fprintf(stderr,"compressed indexes not yet supported, aborting\n"); fprintf(stderr,"compressed indexes not yet supported, aborting\n");
return 0; return 0;
} }
pg = mdb_pg_get_int24_msb(mdb, ipg->offset + ipg->len - 4); pg = mdb_pg_get_int24_msb(mdb, ipg->offset + ipg->len - 4);
row = mdb->pg_buf[ipg->offset + ipg->len - 1]; row = mdb->pg_buf[ipg->offset + ipg->len - 1];
iflag = mdb->pg_buf[ipg->offset]; iflag = mdb->pg_buf[ipg->offset];

View File

@@ -57,7 +57,7 @@ main(int argc, char **argv)
if (!(mdb = mdb_open(argv[optind], MDB_NOFLAGS))) { if (!(mdb = mdb_open(argv[optind], MDB_NOFLAGS))) {
exit(1); exit(1);
} }
mdb_read_catalog(mdb, MDB_TABLE); mdb_read_catalog(mdb, MDB_ANY);
for (i=0;i<mdb->num_catalog;i++) { for (i=0;i<mdb->num_catalog;i++) {
entry = g_ptr_array_index(mdb->catalog,i); entry = g_ptr_array_index(mdb->catalog,i);

View File

@@ -108,7 +108,6 @@ main (int argc, char **argv)
fprintf (stderr, "Valid types are: %s\n",valid_types()); fprintf (stderr, "Valid types are: %s\n",valid_types());
exit(1); exit(1);
} }
printf("objtype is %d\n", objtype);
break; break;
case 'd': case 'd':
delimiter = (char *) malloc(strlen(optarg)+1); delimiter = (char *) malloc(strlen(optarg)+1);