aboutsummaryrefslogtreecommitdiff
path: root/db2
diff options
context:
space:
mode:
Diffstat (limited to 'db2')
-rw-r--r--db2/Makefile4
-rw-r--r--db2/btree/bt_close.c10
-rw-r--r--db2/btree/bt_compare.c6
-rw-r--r--db2/btree/bt_conv.c18
-rw-r--r--db2/btree/bt_cursor.c26
-rw-r--r--db2/btree/bt_delete.c17
-rw-r--r--db2/btree/bt_put.c32
-rw-r--r--db2/btree/bt_rec.c8
-rw-r--r--db2/btree/bt_recno.c6
-rw-r--r--db2/btree/bt_search.c8
-rw-r--r--db2/btree/bt_split.c61
-rw-r--r--db2/btree/bt_stat.c15
-rw-r--r--db2/common/db_appinit.c62
-rw-r--r--db2/common/db_apprec.c98
-rw-r--r--db2/common/db_byteorder.c7
-rw-r--r--db2/common/db_err.c8
-rw-r--r--db2/common/db_region.c4
-rw-r--r--db2/config.h8
-rw-r--r--db2/db.h9
-rw-r--r--db2/db/db.c24
-rw-r--r--db2/db/db_conv.c6
-rw-r--r--db2/db/db_dup.c16
-rw-r--r--db2/db/db_pr.c40
-rw-r--r--db2/db/db_ret.c4
-rw-r--r--db2/db185/db185.c3
-rw-r--r--db2/dbm/dbm.c14
-rw-r--r--db2/hash/hash_dup.c5
-rw-r--r--db2/include/db_am.h4
-rw-r--r--db2/include/db_page.h31
-rw-r--r--db2/include/mp.h11
-rw-r--r--db2/log/log.c2
-rw-r--r--db2/log/log_findckp.c4
-rw-r--r--db2/log/log_get.c4
-rw-r--r--db2/log/log_rec.c16
-rw-r--r--db2/mp/mp_bh.c59
-rw-r--r--db2/mp/mp_fopen.c4
-rw-r--r--db2/mp/mp_pr.c2
-rw-r--r--db2/mp/mp_sync.c14
-rw-r--r--db2/mutex/x86.gcc4
-rw-r--r--db2/os/db_os_dir.c6
-rw-r--r--db2/os/db_os_fid.c4
-rw-r--r--db2/progs/db_archive/db_archive.c7
-rw-r--r--db2/progs/db_checkpoint/db_checkpoint.c7
-rw-r--r--db2/progs/db_deadlock/db_deadlock.c9
-rw-r--r--db2/progs/db_dump/db_dump.c9
-rw-r--r--db2/progs/db_dump185/db_dump185.c19
-rw-r--r--db2/progs/db_load/db_load.c11
-rw-r--r--db2/progs/db_printlog/db_printlog.c8
-rw-r--r--db2/progs/db_recover/db_recover.c9
-rw-r--r--db2/progs/db_stat/db_stat.c11
-rw-r--r--db2/txn/txn.c18
-rw-r--r--db2/txn/txn_rec.c4
52 files changed, 451 insertions, 345 deletions
diff --git a/db2/Makefile b/db2/Makefile
index a7521b6580..a75dc5aef1 100644
--- a/db2/Makefile
+++ b/db2/Makefile
@@ -19,7 +19,7 @@
#
# Sub-makefile for libdb.
#
-# The code is lifted straight from the db 2.3.4 distribution
+# The code is lifted straight from the db 2.3.6 distribution
# with minimal changes.
#
@@ -90,6 +90,7 @@ $(objpfx)db_checkpoint: $(objpfx)libdb.so$(libdb.so-version)
$(objpfx)db_deadlock: $(objpfx)libdb.so$(libdb.so-version)
$(objpfx)db_dump: $(objpfx)libdb.so$(libdb.so-version)
$(objpfx)db_load: $(objpfx)libdb.so$(libdb.so-version)
+$(objpfx)db_printlog: $(objpfx)libdb.so$(libdb.so-version)
$(objpfx)db_recover: $(objpfx)libdb.so$(libdb.so-version)
$(objpfx)db_stat: $(objpfx)libdb.so$(libdb.so-version)
else
@@ -100,6 +101,7 @@ $(objpfx)db_checkpoint: $(objpfx)libdb.a
$(objpfx)db_deadlock: $(objpfx)libdb.a
$(objpfx)db_dump: $(objpfx)libdb.a
$(objpfx)db_load: $(objpfx)libdb.a
+$(objpfx)db_printlog: $(objpfx)libdb.a
$(objpfx)db_recover: $(objpfx)libdb.a
$(objpfx)db_stat: $(objpfx)libdb.a
endif
diff --git a/db2/btree/bt_close.c b/db2/btree/bt_close.c
index 4e80634e86..7044599dd2 100644
--- a/db2/btree/bt_close.c
+++ b/db2/btree/bt_close.c
@@ -47,7 +47,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)bt_close.c 10.22 (Sleepycat) 8/23/97";
+static const char sccsid[] = "@(#)bt_close.c 10.23 (Sleepycat) 9/2/97";
#endif /* not lint */
#ifndef NO_SYSTEM_INCLUDES
@@ -157,14 +157,12 @@ __bam_upstat(dbp)
if (F_ISSET(dbp, DB_AM_INMEM | DB_AM_RDONLY))
return;
- /* Lock the page. */
- if (__bam_lget(dbp, 0, pgno, DB_LOCK_WRITE, &mlock) != 0)
- return;
-
flags = 0;
pgno = PGNO_METADATA;
- /* Get the page. */
+ /* Lock and retrieve the page. */
+ if (__bam_lget(dbp, 0, pgno, DB_LOCK_WRITE, &mlock) != 0)
+ return;
if (__bam_pget(dbp, (PAGE **)&meta, &pgno, 0) == 0) {
/* Log the change. */
if (DB_LOGGING(dbp) &&
diff --git a/db2/btree/bt_compare.c b/db2/btree/bt_compare.c
index e802fd24ab..a68b1fa891 100644
--- a/db2/btree/bt_compare.c
+++ b/db2/btree/bt_compare.c
@@ -47,7 +47,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)bt_compare.c 10.3 (Sleepycat) 7/19/97";
+static const char sccsid[] = "@(#)bt_compare.c 10.4 (Sleepycat) 9/3/97";
#endif /* not lint */
#ifndef NO_SYSTEM_INCLUDES
@@ -103,7 +103,7 @@ __bam_cmp(dbp, k1, e)
bo = NULL;
if (TYPE(h) == P_LBTREE) {
bk = GET_BKEYDATA(h, e->indx);
- if (bk->type == B_OVERFLOW)
+ if (B_TYPE(bk->type) == B_OVERFLOW)
bo = (BOVERFLOW *)bk;
else {
memset(&k2, 0, sizeof(k2));
@@ -112,7 +112,7 @@ __bam_cmp(dbp, k1, e)
}
} else {
bi = GET_BINTERNAL(h, e->indx);
- if (bi->type == B_OVERFLOW)
+ if (B_TYPE(bi->type) == B_OVERFLOW)
bo = (BOVERFLOW *)(bi->data);
else {
memset(&k2, 0, sizeof(k2));
diff --git a/db2/btree/bt_conv.c b/db2/btree/bt_conv.c
index 537e2f98ec..c9d5d1bc3e 100644
--- a/db2/btree/bt_conv.c
+++ b/db2/btree/bt_conv.c
@@ -8,7 +8,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)bt_conv.c 10.3 (Sleepycat) 8/9/97";
+static const char sccsid[] = "@(#)bt_conv.c 10.4 (Sleepycat) 9/3/97";
#endif /* not lint */
#ifndef NO_SYSTEM_INCLUDES
@@ -69,6 +69,8 @@ __bam_mswap(pg)
u_int8_t *p;
p = (u_int8_t *)pg;
+
+ /* Swap the meta-data information. */
SWAP32(p); /* lsn.file */
SWAP32(p); /* lsn.offset */
SWAP32(p); /* pgno */
@@ -79,5 +81,19 @@ __bam_mswap(pg)
SWAP32(p); /* minkey */
SWAP32(p); /* free */
SWAP32(p); /* flags */
+
+ /* Swap the statistics. */
+ p = (u_int8_t *)&((BTMETA *)pg)->stat;
+ SWAP32(p); /* bt_freed */
+ SWAP32(p); /* bt_pfxsaved */
+ SWAP32(p); /* bt_split */
+ SWAP32(p); /* bt_rootsplit */
+ SWAP32(p); /* bt_fastsplit */
+ SWAP32(p); /* bt_added */
+ SWAP32(p); /* bt_deleted */
+ SWAP32(p); /* bt_get */
+ SWAP32(p); /* bt_cache_hit */
+ SWAP32(p); /* bt_cache_miss */
+
return (0);
}
diff --git a/db2/btree/bt_cursor.c b/db2/btree/bt_cursor.c
index 592ec9b3ff..efae556030 100644
--- a/db2/btree/bt_cursor.c
+++ b/db2/btree/bt_cursor.c
@@ -8,7 +8,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)bt_cursor.c 10.26 (Sleepycat) 8/24/97";
+static const char sccsid[] = "@(#)bt_cursor.c 10.27 (Sleepycat) 9/3/97";
#endif /* not lint */
#ifndef NO_SYSTEM_INCLUDES
@@ -201,9 +201,9 @@ __bam_c_del(dbc, flags)
/* Set the intent-to-delete flag on the page and in all cursors. */
if (cp->dpgno == PGNO_INVALID)
- GET_BKEYDATA(h, indx + O_INDX)->deleted = 1;
+ B_DSET(GET_BKEYDATA(h, indx + O_INDX)->type);
else
- GET_BKEYDATA(h, indx)->deleted = 1;
+ B_DSET(GET_BKEYDATA(h, indx)->type);
(void)__bam_ca_delete(dbp, pgno, indx, NULL);
ret = memp_fput(dbp->mpf, h, DB_MPOOL_DIRTY);
@@ -643,7 +643,7 @@ __bam_c_first(dbp, cp)
/* If it's an empty page or a deleted record, go to the next one. */
if (NUM_ENT(cp->page) == 0 ||
- GET_BKEYDATA(cp->page, cp->indx + O_INDX)->deleted)
+ B_DISSET(GET_BKEYDATA(cp->page, cp->indx + O_INDX)->type))
if ((ret = __bam_c_next(dbp, cp, 0)) != 0)
return (ret);
@@ -653,7 +653,7 @@ __bam_c_first(dbp, cp)
/* If it's a deleted record, go to the next one. */
if (cp->dpgno != PGNO_INVALID &&
- GET_BKEYDATA(cp->page, cp->dindx)->deleted)
+ B_DISSET(GET_BKEYDATA(cp->page, cp->dindx)->type))
if ((ret = __bam_c_next(dbp, cp, 0)) != 0)
return (ret);
return (0);
@@ -694,7 +694,7 @@ __bam_c_last(dbp, cp)
/* If it's an empty page or a deleted record, go to the previous one. */
if (NUM_ENT(cp->page) == 0 ||
- GET_BKEYDATA(cp->page, cp->indx + O_INDX)->deleted)
+ B_DISSET(GET_BKEYDATA(cp->page, cp->indx + O_INDX)->type))
if ((ret = __bam_c_prev(dbp, cp)) != 0)
return (ret);
@@ -704,7 +704,7 @@ __bam_c_last(dbp, cp)
/* If it's a deleted record, go to the previous one. */
if (cp->dpgno != PGNO_INVALID &&
- GET_BKEYDATA(cp->page, cp->dindx)->deleted)
+ B_DISSET(GET_BKEYDATA(cp->page, cp->dindx)->type))
if ((ret = __bam_c_prev(dbp, cp)) != 0)
return (ret);
return (0);
@@ -793,9 +793,9 @@ __bam_c_next(dbp, cp, initial_move)
/* Ignore deleted records. */
if (dbp->type == DB_BTREE &&
((cp->dpgno == PGNO_INVALID &&
- GET_BKEYDATA(cp->page, indx + O_INDX)->deleted) ||
+ B_DISSET(GET_BKEYDATA(cp->page, indx + O_INDX)->type)) ||
(cp->dpgno != PGNO_INVALID &&
- GET_BKEYDATA(cp->page, indx)->deleted))) {
+ B_DISSET(GET_BKEYDATA(cp->page, indx)->type)))) {
indx += adjust;
continue;
}
@@ -908,9 +908,9 @@ __bam_c_prev(dbp, cp)
indx -= adjust;
if (dbp->type == DB_BTREE &&
((cp->dpgno == PGNO_INVALID &&
- GET_BKEYDATA(cp->page, indx + O_INDX)->deleted) ||
+ B_DISSET(GET_BKEYDATA(cp->page, indx + O_INDX)->type)) ||
(cp->dpgno != PGNO_INVALID &&
- GET_BKEYDATA(cp->page, indx)->deleted)))
+ B_DISSET(GET_BKEYDATA(cp->page, indx)->type))))
continue;
/*
@@ -997,7 +997,7 @@ __bam_c_search(dbp, cp, key, flags, isrecno, exactp)
/* If it's a deleted record, go to the next or previous one. */
if (cp->dpgno != PGNO_INVALID &&
- GET_BKEYDATA(cp->page, cp->dindx)->deleted)
+ B_DISSET(GET_BKEYDATA(cp->page, cp->dindx)->type))
if (flags == S_KEYLAST) {
if ((ret = __bam_c_prev(dbp, cp)) != 0)
return (ret);
@@ -1027,7 +1027,7 @@ __bam_ovfl_chk(dbp, cp, indx, to_end)
/* Check for an overflow entry. */
bo = GET_BOVERFLOW(cp->page, indx);
- if (bo->type != B_DUPLICATE)
+ if (B_TYPE(bo->type) != B_DUPLICATE)
return (0);
/*
diff --git a/db2/btree/bt_delete.c b/db2/btree/bt_delete.c
index e7ec4dfe3e..98929540e4 100644
--- a/db2/btree/bt_delete.c
+++ b/db2/btree/bt_delete.c
@@ -47,7 +47,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)bt_delete.c 10.18 (Sleepycat) 8/24/97";
+static const char sccsid[] = "@(#)bt_delete.c 10.21 (Sleepycat) 9/3/97";
#endif /* not lint */
#ifndef NO_SYSTEM_INCLUDES
@@ -107,7 +107,7 @@ __bam_delete(argdbp, txn, key, flags)
break;
for (; cnt > 0; --cnt, ++t->lstat.bt_deleted)
if (__bam_ca_delete(dbp, h->pgno, indx, NULL) != 0) {
- GET_BKEYDATA(h, indx + O_INDX)->deleted = 1;
+ B_DSET(GET_BKEYDATA(h, indx + O_INDX)->type);
indx += P_INDX;
} else if ((ret = __bam_ditem(dbp, h, indx)) != 0 ||
(ret = __bam_ditem(dbp, h, indx)) != 0)
@@ -180,7 +180,7 @@ __ram_delete(argdbp, txn, key, flags)
stack = 1;
/* If the record has already been deleted, we couldn't have found it. */
- if (GET_BKEYDATA(h, indx)->deleted) {
+ if (B_DISSET(GET_BKEYDATA(h, indx)->type)) {
ret = DB_KEYEMPTY;
goto done;
}
@@ -193,14 +193,13 @@ __ram_delete(argdbp, txn, key, flags)
if ((ret = __bam_ditem(dbp, h, indx)) != 0)
goto err;
- bk.deleted = 1;
- bk.type = B_KEYDATA;
+ B_TSET(bk.type, B_KEYDATA, 1);
bk.len = 0;
memset(&hdr, 0, sizeof(hdr));
hdr.data = &bk;
hdr.size = SSZA(BKEYDATA, data);
memset(&data, 0, sizeof(data));
- data.data = (char *) "";
+ data.data = (char *)"";
data.size = 0;
if ((ret = __db_pitem(dbp,
h, indx, BKEYDATA_SIZE(0), &hdr, &data)) != 0)
@@ -263,7 +262,7 @@ __bam_ditem(dbp, h, indx)
switch (TYPE(h)) {
case P_IBTREE:
bi = GET_BINTERNAL(h, indx);
- switch (bi->type) {
+ switch (B_TYPE(bi->type)) {
case B_DUPLICATE:
case B_OVERFLOW:
nbytes = BINTERNAL_SIZE(bi->len);
@@ -298,14 +297,14 @@ __bam_ditem(dbp, h, indx)
/* FALLTHROUGH */
case P_LRECNO:
bk = GET_BKEYDATA(h, indx);
- switch (bk->type) {
+ switch (B_TYPE(bk->type)) {
case B_DUPLICATE:
case B_OVERFLOW:
nbytes = BOVERFLOW_SIZE;
offpage: /* Delete duplicate/offpage chains. */
bo = GET_BOVERFLOW(h, indx);
- if (bo->type == B_DUPLICATE) {
+ if (B_TYPE(bo->type) == B_DUPLICATE) {
if ((ret =
__db_ddup(dbp, bo->pgno, __bam_free)) != 0)
return (ret);
diff --git a/db2/btree/bt_put.c b/db2/btree/bt_put.c
index 632c3d185b..0f0b1e7126 100644
--- a/db2/btree/bt_put.c
+++ b/db2/btree/bt_put.c
@@ -47,7 +47,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)bt_put.c 10.23 (Sleepycat) 8/22/97";
+static const char sccsid[] = "@(#)bt_put.c 10.24 (Sleepycat) 9/3/97";
#endif /* not lint */
#ifndef NO_SYSTEM_INCLUDES
@@ -120,7 +120,7 @@ retry: /*
*/
replace = 0;
if (exact && flags == DB_NOOVERWRITE) {
- if (!GET_BKEYDATA(h, indx + O_INDX)->deleted) {
+ if (!B_DISSET(GET_BKEYDATA(h, indx + O_INDX)->type)) {
ret = DB_KEYEXIST;
goto err;
}
@@ -436,16 +436,14 @@ __bam_iitem(dbp, hp, indxp, key, data, op, flags)
*/
bigkey = bigdata = 0;
if (LF_ISSET(BI_NEWKEY) && key->size > t->bt_ovflsize) {
- kbo.deleted = 0;
- kbo.type = B_OVERFLOW;
+ B_TSET(kbo.type, B_OVERFLOW, 0);
kbo.tlen = key->size;
if ((ret = __db_poff(dbp, key, &kbo.pgno, __bam_new)) != 0)
goto err;
bigkey = 1;
}
if (data->size > t->bt_ovflsize) {
- dbo.deleted = 0;
- dbo.type = B_OVERFLOW;
+ B_TSET(dbo.type, B_OVERFLOW, 0);
dbo.tlen = data->size;
if ((ret = __db_poff(dbp, data, &dbo.pgno, __bam_new)) != 0)
goto err;
@@ -472,7 +470,7 @@ __bam_iitem(dbp, hp, indxp, key, data, op, flags)
if (op == DB_CURRENT) {
bk = GET_BKEYDATA(h,
indx + (TYPE(h) == P_LBTREE ? O_INDX : 0));
- if (bk->type == B_OVERFLOW)
+ if (B_TYPE(bk->type) == B_OVERFLOW)
have_bytes = BOVERFLOW_PSIZE;
else
have_bytes = BKEYDATA_PSIZE(bk->len);
@@ -492,7 +490,7 @@ __bam_iitem(dbp, hp, indxp, key, data, op, flags)
* alignment) and do a delete/insert otherwise.
*/
if (op == DB_CURRENT && !bigdata &&
- bk->type == B_KEYDATA && have_bytes == need_bytes)
+ B_TYPE(bk->type) == B_KEYDATA && have_bytes == need_bytes)
dcopy = 1;
if (have_bytes < need_bytes)
needed += need_bytes - have_bytes;
@@ -622,9 +620,8 @@ __bam_iitem(dbp, hp, indxp, key, da