version 1.38, 2011/12/25 13:08:12 |
version 1.39, 2011/12/25 14:58:39 |
Line 575 index_merge(const struct of *of, struct mparse *mp, |
|
Line 575 index_merge(const struct of *of, struct mparse *mp, |
|
uint64_t mask; |
uint64_t mask; |
size_t sv; |
size_t sv; |
unsigned seq; |
unsigned seq; |
struct db_val vbuf; |
uint64_t vbuf[2]; |
char type; |
char type; |
|
|
rec = 0; |
rec = 0; |
Line 714 index_merge(const struct of *of, struct mparse *mp, |
|
Line 714 index_merge(const struct of *of, struct mparse *mp, |
|
recs->last = 0; |
recs->last = 0; |
} else |
} else |
rec++; |
rec++; |
vbuf.rec = htobe32(rec); |
vbuf[1] = htobe64(rec); |
|
|
/* |
/* |
* Copy from the in-memory hashtable of pending |
* Copy from the in-memory hashtable of pending |
Line 726 index_merge(const struct of *of, struct mparse *mp, |
|
Line 726 index_merge(const struct of *of, struct mparse *mp, |
|
seq = R_NEXT; |
seq = R_NEXT; |
assert(sizeof(uint64_t) == val.size); |
assert(sizeof(uint64_t) == val.size); |
memcpy(&mask, val.data, val.size); |
memcpy(&mask, val.data, val.size); |
vbuf.mask = htobe64(mask); |
vbuf[0] = htobe64(mask); |
val.size = sizeof(struct db_val); |
val.size = sizeof(vbuf); |
val.data = &vbuf; |
val.data = &vbuf; |
dbt_put(mdb->db, mdb->dbn, &key, &val); |
dbt_put(mdb->db, mdb->dbn, &key, &val); |
} |
} |
Line 768 index_prune(const struct of *ofile, struct mdb *mdb, s |
|
Line 768 index_prune(const struct of *ofile, struct mdb *mdb, s |
|
{ |
{ |
const struct of *of; |
const struct of *of; |
const char *fn; |
const char *fn; |
struct db_val *vbuf; |
uint64_t vbuf[2]; |
unsigned seq, sseq; |
unsigned seq, sseq; |
DBT key, val; |
DBT key, val; |
int ch; |
int ch; |
Line 817 index_prune(const struct of *ofile, struct mdb *mdb, s |
|
Line 817 index_prune(const struct of *ofile, struct mdb *mdb, s |
|
while (0 == (ch = (*mdb->db->seq)(mdb->db, |
while (0 == (ch = (*mdb->db->seq)(mdb->db, |
&key, &val, sseq))) { |
&key, &val, sseq))) { |
sseq = R_NEXT; |
sseq = R_NEXT; |
if (sizeof(struct db_val) != val.size) |
if (sizeof(vbuf) != val.size) |
break; |
break; |
|
|
vbuf = val.data; |
memcpy(vbuf, val.data, val.size); |
if (recs->last != betoh32(vbuf->rec)) |
if (recs->last != betoh64(vbuf[1])) |
continue; |
continue; |
|
|
if ((ch = (*mdb->db->del)(mdb->db, |
if ((ch = (*mdb->db->del)(mdb->db, |