summaryrefslogtreecommitdiff
path: root/db2/include/btree.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-01-02 06:01:06 +0000
committerUlrich Drepper <drepper@redhat.com>2000-01-02 06:01:06 +0000
commit8d6f1731fcd082e4f744ba9cb4bde4be7c08f1b3 (patch)
tree099a250d7366aef2ab028fdb24f0d692cd784b4a /db2/include/btree.h
parent9a6450d578556c11e7c173d2f28362345b8f1258 (diff)
Update.
* Makeconfig (all-subdirs): Remove db and db2. * db/*: Removed. * db2/*: Removed.
Diffstat (limited to 'db2/include/btree.h')
-rw-r--r--db2/include/btree.h263
1 files changed, 0 insertions, 263 deletions
diff --git a/db2/include/btree.h b/db2/include/btree.h
deleted file mode 100644
index b0c04b1508..0000000000
--- a/db2/include/btree.h
+++ /dev/null
@@ -1,263 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998
- * Sleepycat Software. All rights reserved.
- */
-/*
- * Copyright (c) 1990, 1993, 1994, 1995, 1996
- * Keith Bostic. All rights reserved.
- */
-/*
- * Copyright (c) 1990, 1993, 1994, 1995
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Mike Olson.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)btree.h 10.26 (Sleepycat) 12/16/98
- */
-
-/* Forward structure declarations. */
-struct __btree; typedef struct __btree BTREE;
-struct __cursor; typedef struct __cursor CURSOR;
-struct __epg; typedef struct __epg EPG;
-struct __recno; typedef struct __recno RECNO;
-
-#define DEFMINKEYPAGE (2)
-
-#define ISINTERNAL(p) (TYPE(p) == P_IBTREE || TYPE(p) == P_IRECNO)
-#define ISLEAF(p) (TYPE(p) == P_LBTREE || TYPE(p) == P_LRECNO)
-
-/*
- * If doing transactions we have to hold the locks associated with a data item
- * from a page for the entire transaction. However, we don't have to hold the
- * locks associated with walking the tree. Distinguish between the two so that
- * we don't tie up the internal pages of the tree longer than necessary.
- */
-#define __BT_LPUT(dbc, lock) \
- (F_ISSET((dbc)->dbp, DB_AM_LOCKING) ? \
- lock_put((dbc)->dbp->dbenv->lk_info, lock) : 0)
-#define __BT_TLPUT(dbc, lock) \
- (F_ISSET((dbc)->dbp, DB_AM_LOCKING) && (dbc)->txn == NULL ? \
- lock_put((dbc)->dbp->dbenv->lk_info, lock) : 0)
-
-/*
- * Flags to __bam_search() and __bam_rsearch().
- *
- * Note, internal page searches must find the largest record less than key in
- * the tree so that descents work. Leaf page searches must find the smallest
- * record greater than key so that the returned index is the record's correct
- * position for insertion.
- *
- * The flags parameter to the search routines describes three aspects of the
- * search: the type of locking required (including if we're locking a pair of
- * pages), the item to return in the presence of duplicates and whether or not
- * to return deleted entries. To simplify both the mnemonic representation
- * and the code that checks for various cases, we construct a set of bitmasks.
- */
-#define S_READ 0x00001 /* Read locks. */
-#define S_WRITE 0x00002 /* Write locks. */
-
-#define S_APPEND 0x00040 /* Append to the tree. */
-#define S_DELNO 0x00080 /* Don't return deleted items. */
-#define S_DUPFIRST 0x00100 /* Return first duplicate. */
-#define S_DUPLAST 0x00200 /* Return last duplicate. */
-#define S_EXACT 0x00400 /* Exact items only. */
-#define S_PARENT 0x00800 /* Lock page pair. */
-#define S_STACK 0x01000 /* Need a complete stack. */
-#define S_PAST_EOF 0x02000 /* If doing insert search (or keyfirst
- * or keylast operations), or a split
- * on behalf of an insert, it's okay to
- * return an entry one past end-of-page.
- */
-
-#define S_DELETE (S_WRITE | S_DUPFIRST | S_DELNO | S_EXACT | S_STACK)
-#define S_FIND (S_READ | S_DUPFIRST | S_DELNO)
-#define S_FIND_WR (S_WRITE | S_DUPFIRST | S_DELNO)
-#define S_INSERT (S_WRITE | S_DUPLAST | S_PAST_EOF | S_STACK)
-#define S_KEYFIRST (S_WRITE | S_DUPFIRST | S_PAST_EOF | S_STACK)
-#define S_KEYLAST (S_WRITE | S_DUPLAST | S_PAST_EOF | S_STACK)
-#define S_WRPAIR (S_WRITE | S_DUPLAST | S_PAST_EOF | S_PARENT)
-
-/*
- * Flags to __bam_iitem().
- */
-#define BI_DELETED 0x01 /* Key/data pair only placeholder. */
-#define BI_DOINCR 0x02 /* Increment the record count. */
-#define BI_NEWKEY 0x04 /* New key. */
-
-/*
- * Various routines pass around page references. A page reference can be a
- * pointer to the page or a page number; for either, an indx can designate
- * an item on the page.
- */
-struct __epg {
- PAGE *page; /* The page. */
- db_indx_t indx; /* The index on the page. */
- DB_LOCK lock; /* The page's lock. */
-};
-
-/*
- * We maintain a stack of the pages that we're locking in the tree. Btree's
- * (currently) only save two levels of the tree at a time, so the default
- * stack is always large enough. Recno trees have to lock the entire tree to
- * do inserts/deletes, however. Grow the stack as necessary.
- */
-#define BT_STK_CLR(c) \
- ((c)->csp = (c)->sp)
-
-#define BT_STK_ENTER(c, pagep, page_indx, lock, ret) do { \
- if ((ret = \
- (c)->csp == (c)->esp ? __bam_stkgrow(c) : 0) == 0) { \
- (c)->csp->page = pagep; \
- (c)->csp->indx = page_indx; \
- (c)->csp->lock = lock; \
- } \
-} while (0)
-
-#define BT_STK_PUSH(c, pagep, page_indx, lock, ret) do { \
- BT_STK_ENTER(c, pagep, page_indx, lock, ret); \
- ++(c)->csp; \
-} while (0)
-
-#define BT_STK_POP(c) \
- ((c)->csp == (c)->stack ? NULL : --(c)->csp)
-
-/*
- * Arguments passed to __bam_ca_replace().
- */
-typedef enum {
- REPLACE_SETUP,
- REPLACE_SUCCESS,
- REPLACE_FAILED
-} ca_replace_arg;
-
-/* Arguments passed to __ram_ca(). */
-typedef enum {
- CA_DELETE,
- CA_IAFTER,
- CA_IBEFORE
-} ca_recno_arg;
-
-#define RECNO_OOB 0 /* Illegal record number. */
-
-/* Btree/Recno cursor. */
-struct __cursor {
- DBC *dbc; /* Enclosing DBC. */
-
- /* Per-thread information: shared by btree/recno. */
- EPG *sp; /* Stack pointer. */
- EPG *csp; /* Current stack entry. */
- EPG *esp; /* End stack pointer. */
- EPG stack[5];
-
- /* Per-thread information: btree private. */
- PAGE *page; /* Cursor page. */
-
- db_pgno_t pgno; /* Page. */
- db_indx_t indx; /* Page item ref'd by the cursor. */
-
- db_pgno_t dpgno; /* Duplicate page. */
- db_indx_t dindx; /* Page item ref'd by the cursor. */
-
- DB_LOCK lock; /* Cursor read lock. */
- db_lockmode_t mode; /* Lock mode. */
-
- /* Per-thread information: recno private. */
- db_recno_t recno; /* Current record number. */
-
- /*
- * Btree:
- * We set a flag in the cursor structure if the underlying object has
- * been deleted. It's not strictly necessary, we could get the same
- * information by looking at the page itself.
- *
- * Recno:
- * When renumbering recno databases during deletes, cursors referencing
- * "deleted" records end up positioned between two records, and so must
- * be specially adjusted on the next operation.
- */
-#define C_DELETED 0x0001 /* Record was deleted. */
- u_int32_t flags;
-};
-
-/*
- * The in-memory recno data structure.
- *
- * !!!
- * These fields are ignored as far as multi-threading is concerned. There
- * are no transaction semantics associated with backing files, nor is there
- * any thread protection.
- */
-struct __recno {
- int re_delim; /* Variable-length delimiting byte. */
- int re_pad; /* Fixed-length padding byte. */
- u_int32_t re_len; /* Length for fixed-length records. */
-
- char *re_source; /* Source file name. */
- int re_fd; /* Source file descriptor */
- db_recno_t re_last; /* Last record number read. */
- void *re_cmap; /* Current point in mapped space. */
- void *re_smap; /* Start of mapped space. */
- void *re_emap; /* End of mapped space. */
- size_t re_msize; /* Size of mapped region. */
- /* Recno input function. */
- int (*re_irec) __P((DBC *, db_recno_t));
-
-#define RECNO_EOF 0x0001 /* EOF on backing source file. */
-#define RECNO_MODIFIED 0x0002 /* Tree was modified. */
- u_int32_t flags;
-};
-
-/*
- * The in-memory, per-tree btree data structure.
- */
-struct __btree {
- db_pgno_t bt_lpgno; /* Last insert location. */
-
- db_indx_t bt_maxkey; /* Maximum keys per page. */
- db_indx_t bt_minkey; /* Minimum keys per page. */
-
- int (*bt_compare) /* Comparison function. */
- __P((const DBT *, const DBT *));
- size_t(*bt_prefix) /* Prefix function. */
- __P((const DBT *, const DBT *));
-
- db_indx_t bt_ovflsize; /* Maximum key/data on-page size. */
-
- RECNO *recno; /* Private recno structure. */
-};
-
-#include "btree_auto.h"
-#include "btree_ext.h"
-#include "db_am.h"
-#include "common_ext.h"