From afd92957868ad2438910ad2db7f7719b46a2c2b9 Mon Sep 17 00:00:00 2001 From: "Vadim B. Mikheev" Date: Wed, 16 Apr 1997 01:21:59 +0000 Subject: [PATCH] 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. --- src/include/access/nbtree.h | 23 +++++++++++++++++++++-- 1 file 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); -- 2.40.0