summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>1997-04-16 01:21:59 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>1997-04-16 01:21:59 +0000
commitafd92957868ad2438910ad2db7f7719b46a2c2b9 (patch)
tree511ca21e2b0ef0b45bc59659a2e67e59c4cc99fc /src
parentcacaaed62b56aadfd3b1536c2b910d6ba5897928 (diff)
downloadpostgresql-afd92957868ad2438910ad2db7f7719b46a2c2b9.tar.gz
BTREE_VERSION_1: using bti_itup->t_tid as unique identifier for a given
index tuple (logical position within A LEVEL). bti_oid & bti_dummy taken off from BTItemData.
Diffstat (limited to 'src')
-rw-r--r--src/include/access/nbtree.h23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/include/access/nbtree.h b/src/include/access/nbtree.h
index 4abd8ec05d..24b7f8cca9 100644
--- a/src/include/access/nbtree.h
+++ b/src/include/access/nbtree.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: nbtree.h,v 1.11 1997/03/24 08:04:51 vadim Exp $
+ * $Id: nbtree.h,v 1.12 1997/04/16 01:21:59 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -84,18 +84,37 @@ typedef BTScanOpaqueData *BTScanOpaque;
* tuples. Note that we do not use the OID as part of a composite
* key; the OID only serves as a unique identifier for a given index
* tuple (logical position within a page).
+ *
+ * New comments:
+ * actually, we must guarantee that all tuples in A LEVEL
+ * are unique, not in ALL INDEX. So, we can use bti_itup->t_tid
+ * as unique identifier for a given index tuple (logical position
+ * within a level). - vadim 04/09/97
*/
typedef struct BTItemData {
+#ifndef BTREE_VERSION_1
Oid bti_oid;
int32 bti_dummy; /* padding to make bti_itup
* align at 8-byte boundary
*/
+#endif
IndexTupleData bti_itup;
} BTItemData;
typedef BTItemData *BTItem;
+#ifdef BTREE_VERSION_1
+#define BTItemSame(i1, i2) ( i1->bti_itup.t_tid.ip_blkid.bi_hi == \
+ i2->bti_itup.t_tid.ip_blkid.bi_hi && \
+ i1->bti_itup.t_tid.ip_blkid.bi_lo == \
+ i2->bti_itup.t_tid.ip_blkid.bi_lo && \
+ i1->bti_itup.t_tid.ip_posid == \
+ i2->bti_itup.t_tid.ip_posid )
+#else
+#define BTItemSame(i1, i2) ( i1->bti_oid == i2->bti_oid )
+#endif
+
/*
* BTStackData -- As we descend a tree, we push the (key, pointer)
* pairs from internal nodes onto a private stack. If we split a
@@ -206,7 +225,7 @@ extern void _bt_relbuf(Relation rel, Buffer buf, int access);
extern void _bt_wrtbuf(Relation rel, Buffer buf);
extern void _bt_wrtnorelbuf(Relation rel, Buffer buf);
extern void _bt_pageinit(Page page, Size size);
-extern void _bt_metaproot(Relation rel, BlockNumber rootbknum);
+extern void _bt_metaproot(Relation rel, BlockNumber rootbknum, int level);
extern Buffer _bt_getstackbuf(Relation rel, BTStack stack, int access);
extern void _bt_setpagelock(Relation rel, BlockNumber blkno, int access);
extern void _bt_unsetpagelock(Relation rel, BlockNumber blkno, int access);