head     1.17;
branch   ;
access   ;
symbols  Version_2_1:1.10 Version_2:1.6 C_Demo_1:1.5;
locks    ; strict;
comment  @ * @;


1.17
date     91.11.08.15.43.24;  author kemnitz;  state Exp;
branches ;
next     1.16;

1.16
date     91.11.06.04.30.19;  author mer;  state Exp;
branches ;
next     1.15;

1.15
date     91.05.22.14.00.37;  author kemnitz;  state Exp;
branches ;
next     1.14;

1.14
date     91.05.13.21.01.35;  author kemnitz;  state Exp;
branches ;
next     1.13;

1.13
date     91.05.13.16.57.07;  author kemnitz;  state Exp;
branches ;
next     1.12;

1.12
date     91.05.01.02.50.11;  author cimarron;  state Exp;
branches ;
next     1.11;

1.11
date     91.04.28.09.15.54;  author cimarron;  state Exp;
branches ;
next     1.10;

1.10
date     91.02.24.09.04.39;  author mao;  state Exp;
branches ;
next     1.9;

1.9
date     90.11.20.15.53.36;  author sp;  state Exp;
branches ;
next     1.8;

1.8
date     90.11.10.18.03.04;  author sp;  state Exp;
branches ;
next     1.7;

1.7
date     90.08.17.08.50.57;  author cimarron;  state Exp;
branches ;
next     1.6;

1.6
date     90.02.08.14.44.47;  author hong;  state Version_2;
branches ;
next     1.5;

1.5
date     89.09.05.17.07.26;  author mao;  state C_Demo_1;
branches ;
next     1.4;

1.4
date     89.04.12.19.28.41;  author dillon;  state Exp;
branches ;
next     1.3;

1.3
date     89.04.12.16.17.31;  author dillon;  state Exp;
branches ;
next     1.2;

1.2
date     89.03.22.18.58.23;  author hirohama;  state Stab;
branches ;
next     1.1;

1.1
date     89.01.17.05.54.22;  author cimarron;  state Exp;
branches ;
next     ;


desc
@@


1.17
log
@fixed prototypes.
@
text
@/* ----------------------------------------------------------------
 *   FILE
 *	itup.h
 *
 *   DESCRIPTION
 *	POSTGRES index tuple definitions.
 *
 *   IDENTIFICATION
 *	$Header: RCS/itup.h,v 1.16 91/11/06 04:30:19 mer Exp Locker: kemnitz $
 * ----------------------------------------------------------------
 */
#ifndef ITUP_H
#define ITUP_H

#include "tmp/c.h"
#include "storage/form.h"
#include "access/ibit.h"
#include "storage/itemptr.h"
#include "rules/rlock.h"

#define MaxIndexAttributeNumber	7

/* ----------------
 * NOTE:
 * A rule lock has 2 different representations:
 *    The disk representation (t_lock.l_ltid) is an ItemPointer
 * to the actual rule lock data (stored somewher else in the disk page).
 * In this case `t_locktype' has the value DISK_INDX_RULE_LOCK.
 *    The main memory representation (t_lock.l_lock) is a pointer
 * (RuleLock) to a (palloced) structure. In this case `t_locktype'
 * has the value MEM_INDX_RULE_LOCK.
 * ----------------
 */

#define DISK_INDX_RULE_LOCK	'd'
#define MEM_INDX_RULE_LOCK	'm'

typedef union 
{
		ItemPointerData	l_ltid;	/* TID of the lock */
		RuleLock	l_lock;		/* internal lock format */
}
IndexTupleRuleLock;

typedef struct IndexTupleData {
	ItemPointerData			t_tid; /* reference TID to base tuple */

	/*
	 * t_info is layed out in the following fashion:
	 *
	 * first (leftmost) bit: "has nulls" bit
	 * second bit: "has varlenas" bit
	 * third bit: "has rules" bit
	 * fourth-16th bit: size of tuple.
	 */

	unsigned short			t_info; /* various info about tuple */

#ifdef NOTDEF
        char            t_locktype;     /* type of rule lock representation*/
	IndexAttributeBitMapData	bits;	/* bitmap of domains */
#endif
} IndexTupleData;	/* MORE DATA FOLLOWS AT END OF STRUCT */

/*
 *  Warning: T_* defined also in tuple.h
 */

/* ----------------
 * "Special" attributes of index tuples...
 * NOTE: I used these big values so that there is no overlapping
 * with the HeapTuple system attributes.
 * ----------------
 */
#define IndxBaseTupleIdAttributeNumber	 	(-101)
#define IndxRuleLockAttributeNumber		(-102)

/* ----------------
 *	{,general,general retrieve} index insert result crap
 * ----------------
 */
typedef IndexTupleData	*IndexTuple;

typedef struct GeneralInsertIndexResultData {
	ItemPointerData	pointerData;
	RuleLock	lock;
} GeneralInsertIndexResultData;

typedef GeneralInsertIndexResultData
	*GeneralInsertIndexResult;	/* from AMinsert() */

typedef struct InsertIndexResultData {
	ItemPointerData	pointerData;
	RuleLock	lock;
	double		offset;
} InsertIndexResultData;

typedef InsertIndexResultData
	*InsertIndexResult;	/* from newinsert() */

typedef struct GeneralRetrieveIndexResultData {
	ItemPointerData	heapItemData;
} GeneralRetrieveIndexResultData;

typedef GeneralRetrieveIndexResultData	*GeneralRetrieveIndexResult;
				/* from AMgettuple() */

typedef struct RetrieveIndexResultData {
	ItemPointerData	indexItemData;
	ItemPointerData	heapItemData;
} RetrieveIndexResultData;

typedef RetrieveIndexResultData	*RetrieveIndexResult;
				/* from newgettuple() */

/* ----------------
 *	support macros
 * ----------------
 */
/*
 * IndexTupleIsValid --
 *	True iff index tuple is valid.
 */
#define	IndexTupleIsValid(tuple)			PointerIsValid(tuple)

/*
 * IndexTupleGetRuleLockItemPointer --
 *	Returns rule lock item pointer for an index tuple.
 *
 * Note:
 *	Assumes index tuple is a valid internal index tuple.
 */
#define IndexTupleGetRuleLockItemPointer(tuple) \
    (AssertMacro(IndexTupleIsValid(tuple)) ? \
     ((ItemPointer) (&(tuple)->t_lock.l_ltid)) : (ItemPointer) 0)

/*
 * IndexTupleGetRuleLock --
 *	Returns rule lock for an index tuple.
 *
 * Note:
 *	Assumes index tuple is a valid external index tuple.
 */
#define IndexTupleGetRuleLock(tuple) \
    (AssertMacro(IndexTupleIsValid(tuple)) ? \
     ((RuleLock) ((tuple)->t_lock.l_lock)) : (RuleLock) 0)

/*
 * IndexTupleGetIndexAttributeBitMap --
 *	Returns attribute bit map for an index tuple.
 *
 * Note:
 *	Assumes index tuple is valid.
 */
#define IndexTupleGetIndexAttributeBitMap(tuple) \
    (AssertMacro(IndexTupleIsValid(tuple)) ? \
     ((IndexAttributeBitMap) (&(tuple)->bits)) : (IndexAttributeBitMap) 0)

/*
 * IndexTupleGetForm --
 *	Returns formated data for an index tuple.
 *
 * Note:
 *	Assumes index tuple is valid.
 */
#define IndexTupleGetForm(tuple) \
    (AssertMacro(IndexTupleIsValid(tuple)) ? \
     ((Form) &(tuple)[1]) : (Form) 0)

/* ----------------
 *	soon to be obsolete index result stuff
 * ----------------
 */
/*
 * GeneralInsertIndexResultIsValid --
 *	True iff general index insertion result is valid.
 */
#define	GeneralInsertIndexResultIsValid(result)		PointerIsValid(result)

/*
 * InsertIndexResultIsValid --
 *	True iff (specific) index insertion result is valid.
 */
#define	InsertIndexResultIsValid(result)		PointerIsValid(result)

/*
 * GeneralRetrieveIndexResultIsValid --
 *	True iff general index retrieval result is valid.
 */
#define	GeneralRetrieveIndexResultIsValid(result)	PointerIsValid(result)

/*
 * RetrieveIndexResultIsValid --
 *	True iff (specific) index retrieval result is valid.
 */
#define	RetrieveIndexResultIsValid(result)		PointerIsValid(result)

/*
 * GeneralInsertIndexResultGetItemPointer --
 *	Returns heap tuple item pointer associated with a general index
 *	insertion result.
 *
 * Note:
 *	Assumes general index insertion result is valid.
 */
#define GeneralInsertIndexResultGetItemPointer(result) \
    (AssertMacro(GeneralInsertIndexResultIsValid(result)) ? \
     ((ItemPointer) (&(result)->pointerData)) : (ItemPointer) 0)

/*
 * GeneralInsertIndexResultGetRuleLock --
 *	Returns rule lock associated with a general index insertion result.
 *
 * Note:
 *	Assumes general index insertion result is valid.
 */
#define GeneralInsertIndexResultGetRuleLock(result) \
    (AssertMacro(GeneralInsertIndexResultIsValid(result)) ? \
     ((RuleLock) ((result)->lock)) : (RuleLock) 0)

/*
 * InsertIndexResultGetItemPointer --
 *	Returns heap tuple item pointer associated with a (specific) index
 *	insertion result.
 *
 * Note:
 *	Assumes (specific) index insertion result is valid.
 */
#define InsertIndexResultGetItemPointer(result) \
    (AssertMacro(InsertIndexResultIsValid(result)) ? \
     ((ItemPointer) (&(result)->pointerData)) | (ItemPointer) 0)

/*
 * InsertIndexResultGetRuleLock --
 *	Returns rule lock associated with a (specific) index insertion result.
 *
 * Note:
 *	Assumes (specific) index insertion result is valid.
 */
#define InsertIndexResultGetRuleLock(result) \
    (AssertMacro(InsertIndexResultIsValid(result)) ? \
     ((RuleLock) ((result)->lock)) : (RuleLock) 0)

/*
 * InsertIndexResultGetInsertOffset --
 *	Returns insertion offset for a (specific) index insertion result.
 *
 * Note:
 *	Assumes (specific) index insertion result is valid.
 */
#define InsertIndexResultGetInsertOffset(result) \
    (AssertMacro(InsertIndexResultIsValid(result)) ? \
     ((double) ((result)->offset)) : (double) 0)

/*
 * GeneralRetrieveIndexResultGetHeapItemPointer --
 *	Returns heap item pointer associated with a general index retrieval.
 *
 * Note:
 *	Assumes general index retrieval result is valid.
 */
#define GeneralRetrieveIndexResultGetHeapItemPointer(result) \
    (AssertMacro(GeneralRetrieveIndexResultIsValid(result)) ? \
     ((ItemPointer) (&(result)->heapItemData)) : (ItemPointer) 0)

/*
 * RetrieveIndexResultGetIndexItemPointer --
 *	Returns index item pointer associated with a (specific) index retrieval
 *
 * Note:
 *	Assumes (specific) index retrieval result is valid.
 */
#define RetrieveIndexResultGetIndexItemPointer(result) \
    (AssertMacro(RetrieveIndexResultIsValid(result)) ? \
     ((ItemPointer) (&(result)->indexItemData)) : (ItemPointer) 0)

/*
 * RetrieveIndexResultGetHeapItemPointer --
 *	Returns heap item pointer associated with a (specific) index retrieval.
 *
 * Note:
 *	Assumes (specific) index retrieval result is valid.
 */
#define RetrieveIndexResultGetHeapItemPointer(result) \
    (AssertMacro(RetrieveIndexResultIsValid(result)) ? \
     ((ItemPointer) (&(result)->heapItemData)) : (ItemPointer) 0)

/* ----------------
 *	externs 
 * ----------------
 */

/*
 * IndexTupleGetHeapTupleItemPointer --
 *	Returns heap tuple item pointer for an index tuple.
 *
 * Note:
 *	Assumes index tuple is valid.
 */
extern
ItemPointer
IndexTupleGetHeapTupleItemPointer ARGS((
	IndexTuple	tuple
));

/*
 * ItemPointerFormGeneralInsertIndexResult --
 *	Returns a general index insertion result.
 *
 * Note:
 *	Assumes item pointer is valid.
 *	Assumes rule lock is valid.
 */
extern
GeneralInsertIndexResult
ItemPointerFormGeneralInsertIndexResult ARGS((
	ItemPointer	itemPointer,
	RuleLock	lock
));

/*
 * ItemPointerFormInsertIndexResult --
 *	Returns a (specific) index insertion result.
 *
 * Note:
 *	Assumes item pointer is valid.
 *	Assumes rule lock is valid.
 *	Assumes insertion offset is valid.
 */
extern
InsertIndexResult
ItemPointerFormInsertIndexResult ARGS((
	ItemPointer	itemPointer,
	RuleLock	lock,
	double		offset
));

/*
 * ItemPointerFormGeneralRetrieveIndexResult --
 *	Returns a (specific) index retrieval result.
 *
 * Note:
 *	Assumes item pointer is valid.
 */
extern
GeneralRetrieveIndexResult
ItemPointerFormGeneralRetrieveIndexResult ARGS((
	ItemPointer	heapItemPointer
));

/*
 * ItemPointerFormRetrieveIndexResult --
 *	Returns a general index retrieval result.
 *
 * Note:
 *	Assumes item pointers are valid.
 */
extern
RetrieveIndexResult
ItemPointerFormRetrieveIndexResult ARGS((
	ItemPointer	indexItemPointer,
	ItemPointer	heapItemPointer
));


#define INDEX_SIZE_MASK 0x1FFF
#define INDEX_NULL_MASK 0x8000
#define INDEX_VAR_MASK  0x4000
#define INDEX_RULE_MASK 0x2000

#define IndexTupleSize(itup)       (((IndexTuple) (itup))->t_info & 0x1FFF)
#define IndexTupleDSize(itup)                      ((itup).t_info & 0x1FFF)
#define IndexTupleNoNulls(itup)  (!(((IndexTuple) (itup))->t_info & 0x8000))
#define IndexTupleAllFixed(itup) (!(((IndexTuple) (itup))->t_info & 0x4000))
#define IndexTupleNoRule(itup)   (!(((IndexTuple) (itup))->t_info & 0x2000))
#define IndexTupleHasMinHeader(itup) (IndexTupleNoNulls(itup) \
								   && IndexTupleNoRule(itup))

extern Size IndexInfoFindDataOffset ARGS((
	 unsigned short t_info
));

#endif
@


1.16
log
@function prototype syntax error fix
@
text
@d9 1
a9 1
 *	$Header: /users/mer/postgres/src/lib/H/access/RCS/itup.h,v 1.15 1991/05/22 14:00:37 kemnitz Exp mer $
d380 1
a380 2
	 unsigned short t_info,
	 Attribute att
@


1.15
log
@changed indextuple layout.
@
text
@d9 1
a9 1
 *	$Header: RCS/itup.h,v 1.14 91/05/13 21:01:35 kemnitz Exp Locker: kemnitz $
d318 1
a318 1
	RuleLock	lock,
@


1.14
log
@fixed a macro problem.
@
text
@d9 1
a9 1
 *	$Header: RCS/itup.h,v 1.13 91/05/13 16:57:07 kemnitz Exp Locker: kemnitz $
d38 7
d46 14
a59 1
	uint16		t_size;		/* size of this index tuple */
a60 6
	union {
		ItemPointerData	l_ltid;	/* TID of the lock */
		RuleLock	l_lock;		/* internal lock format */
	}	t_lock;
	ItemPointerData			t_tid;	/* reference TID to base tuple */
	char t_infomask;
d62 1
d366 4
a369 2
#define IndexTupleNoNulls(itup)  (!(((IndexTuple) (itup))->t_infomask & 0x1))
#define IndexTupleAllFixed(itup) (!(((IndexTuple) (itup))->t_infomask & 0x2))
d371 14
a384 1
#endif	/* !defined(ITUP_H) */
@


1.13
log
@added infomask
@
text
@d9 1
a9 1
 *	$Header: RCS/itup.h,v 1.12 91/05/01 02:50:11 cimarron Exp Locker: cimarron $
d351 2
a352 2
#define IndexTupleNoNulls(itup) (((IndexTuple) (itup))->t_infomask & 0x1) 
#define IndexTupleAllFixed(itup) (((IndexTuple) (itup))->t_infomask & 0x2) 
@


1.12
log
@round II of converting simple functions to macros + code cleaning in general
@
text
@d9 1
a9 1
 *	$Header$
d46 1
d350 3
@


1.11
log
@Converted IsValid code into macros and added an improved NodeIsType scheme
@
text
@d1 5
a5 2
/*
 * itup.h --
d8 3
a10 2
 * Identification:
 *	$Header: RCS/itup.h,v 1.10 91/02/24 09:04:39 mao Exp Locker: cimarron $
a11 1

d23 1
a23 1
/*-----------------------------------------------------------
d32 1
d53 1
a53 1
/*----
d57 1
d62 4
a65 8
#ifdef OBSOLETE
#ifndef	T_CTID
#define T_CTID	(-1)	/* remove me */
#define T_LOCK	(-2)	/* -1 */
#define T_TID	(-3)	/* -2 */
#endif	/* !defined(T_CTID) */
#endif OBSOLETE

d100 4
a103 1

d111 48
d183 3
a185 2
 * IndexTupleGetRuleLockItemPointer --
 *	Returns rule lock item pointer for an index tuple.
d188 1
a188 1
 *	Assumes index tuple is a valid internal index tuple.
d190 3
a192 5
extern
ItemPointer
IndexTupleGetRuleLockItemPointer ARGS((
	IndexTuple	tuple
));
d195 2
a196 2
 * IndexTupleGetRuleLock --
 *	Returns rule lock for an index tuple.
d199 1
a199 1
 *	Assumes index tuple is a valid external index tuple.
d201 3
a203 5
extern
RuleLock
IndexTupleGetRuleLock ARGS((
	IndexTuple	tuple
));
d206 3
a208 2
 * IndexTupleGetHeapTupleItemPointer --
 *	Returns heap tuple item pointer for an index tuple.
d211 1
a211 1
 *	Assumes index tuple is valid.
d213 3
a215 5
extern
ItemPointer
IndexTupleGetHeapTupleItemPointer ARGS((
	IndexTuple	tuple
));
d218 2
a219 2
 * IndexTupleGetIndexAttributeBitMap --
 *	Returns attribute bit map for an index tuple.
d222 1
a222 1
 *	Assumes index tuple is valid.
d224 3
a226 5
extern
IndexAttributeBitMap
IndexTupleGetIndexAttributeBitMap ARGS((
	IndexTuple	tuple
));
d229 2
a230 2
 * IndexTupleGetForm --
 *	Returns formated data for an index tuple.
d233 1
a233 1
 *	Assumes index tuple is valid.
d235 3
a237 5
extern
Form
IndexTupleGetForm ARGS((
	IndexTuple	tuple
));
d240 2
a241 3
 * GeneralInsertIndexResultGetItemPointer --
 *	Returns heap tuple item pointer associated with a general index
 *	insertion result.
d244 1
a244 1
 *	Assumes general index insertion result is valid.
d246 3
a248 5
extern
ItemPointer
GeneralInsertIndexResultGetItemPointer ARGS((
	GeneralInsertIndexResult	result
));
d251 2
a252 2
 * GeneralInsertIndexResultGetRuleLock --
 *	Returns rule lock associated with a general index insertion result.
d255 1
a255 1
 *	Assumes general index insertion result is valid.
d257 3
a259 5
extern
RuleLock
GeneralInsertIndexResultGetRuleLock ARGS((
	GeneralInsertIndexResult	result
));
d262 2
a263 2
 * ItemPointerFormGeneralInsertIndexResult --
 *	Returns a general index insertion result.
d266 1
a266 2
 *	Assumes item pointer is valid.
 *	Assumes rule lock is valid.
d268 3
a270 6
extern
GeneralInsertIndexResult
ItemPointerFormGeneralInsertIndexResult ARGS((
	ItemPointer	itemPointer,
	RuleLock	lock,
));
d272 3
a274 7
/*
 * InsertIndexResultGetItemPointer --
 *	Returns heap tuple item pointer associated with a (specific) index
 *	insertion result.
 *
 * Note:
 *	Assumes (specific) index insertion result is valid.
a275 5
extern
ItemPointer
InsertIndexResultGetItemPointer ARGS((
	InsertIndexResult	result
));
d278 2
a279 2
 * InsertIndexResultGetItemPointer --
 *	Returns rule lock associated with a (specific) index insertion result.
d282 1
a282 1
 *	Assumes (specific) index insertion result is valid.
d285 3
a287 3
RuleLock
InsertIndexResultGetRuleLock ARGS((
	InsertIndexResult	result
d291 2
a292 2
 * InsertIndexResultGetInsertOffset --
 *	Returns insertion offset for a (specific) index insertion result.
d295 2
a296 1
 *	Assumes (specific) index insertion result is valid.
d299 4
a302 3
double	/* XXX invalid POSTGRES ADT type */
InsertIndexResultGetInsertOffset ARGS((
	InsertIndexResult	result
a322 13
 * GeneralRetrieveIndexResultGetHeapItemPointer --
 *	Returns heap item pointer associated with a general index retrieval.
 *
 * Note:
 *	Assumes general index retrieval result is valid.
 */
extern
ItemPointer
GeneralRetrieveIndexResultGetHeapItemPointer ARGS((
	GeneralRetrieveIndexResult	result
));

/*
a335 26
 * RetrieveIndexResultGetIndexItemPointer --
 *	Returns index item pointer associated with a (specific) index retrieval.
 *
 * Note:
 *	Assumes (specific) index retrieval result is valid.
 */
extern
ItemPointer
RetrieveIndexResultGetIndexItemPointer ARGS((
	RetrieveIndexResult	result
));

/*
 * RetrieveIndexResultGetHeapItemPointer --
 *	Returns heap item pointer associated with a (specific) index retrieval.
 *
 * Note:
 *	Assumes (specific) index retrieval result is valid.
 */
extern
ItemPointer
RetrieveIndexResultGetHeapItemPointer ARGS((
	RetrieveIndexResult	result
));

/*
d348 1
@


1.10
log
@index tuples now store their sizes in the tuple data
@
text
@d6 1
a6 1
 *	$Header: RCS/itup.h,v 1.9 90/11/20 15:53:36 sp Exp Locker: mao $
d99 1
d104 1
a104 5
extern
bool
IndexTupleIsValid ARGS((
	IndexTuple	tuple
));
d110 1
a110 5
extern
bool
GeneralInsertIndexResultIsValid ARGS((
	GeneralInsertIndexResult	result
));
d116 1
a116 5
extern
bool
InsertIndexResultIsValid ARGS((
	InsertIndexResult	result
));
d122 1
a122 5
extern
bool
GeneralRetrieveIndexResultIsValid ARGS((
	GeneralRetrieveIndexResult	result
));
d128 1
a128 5
extern
bool
RetrieveIndexResultIsValid ARGS((
	RetrieveIndexResult	result
));
@


1.9
log
@"struct tuple", "struct ituple" and some hash defines (like "T_OID",
"T_CTID", "MAXATTS" etc.) which used to be defined in "htup.h" are
now obsolete and replaced by "HeapTuple", "IndexTuple" etc.
All these new definitions are in "htup.h" and "itup.h".
@
text
@d6 1
a6 1
 *	$Header: RCS/itup.h,v 1.8 90/11/10 18:03:04 sp Exp Locker: sp $
d35 1
@


1.8
log
@Both heap & index tuples have an extra field called: t_locktype
which specifies whether the rule lock is a RuleLock (i.e. a pointer)
or an item in some disk (buffer) page...
@
text
@d6 1
a6 1
 *	$Header: RCS/itup.h,v 1.7 90/08/17 08:50:57 cimarron Exp $
d48 9
d62 1
@


1.7
log
@added pathnames to #include statements
@
text
@d6 1
a6 1
 *	$Header: RCS/itup.h,v 1.6 90/02/08 14:44:47 hong Version_2 Locker: cimarron $
d20 14
d35 1
@


1.6
log
@fix for hermes to reduce levels of #include nesting.
@
text
@d6 1
a6 1
 *	$Header: RCS/itup.h,v 1.5 89/09/05 17:07:26 mao C_Demo_1 $
d12 5
a16 16
#ifndef C_H
#include "c.h"
#endif

#ifndef FORM_H
#include "form.h"
#endif
#ifndef IBIT_H
#include "ibit.h"
#endif
#ifndef ITEMPTR_H
#include "itemptr.h"
#endif
#ifndef RLOCK_H
#include "rlock.h"
#endif
@


1.5
log
@Working version of C-only demo
@
text
@d6 1
a6 1
 *	$Header: /usr6/postgres/mao/postgres/src/lib/H/RCS/itup.h,v 1.4 89/04/12 19:28:41 dillon Exp $
d16 1
d18 2
d21 2
d24 2
d27 1
@


1.4
log
@c.h
@
text
@d6 1
a6 1
 *	$Header: /usr6/postgres/dillon/ptree/src/lib/H/RCS/itup.h,v 1.3 89/04/12 16:17:31 dillon Exp $
@


1.3
log
@add comment
@
text
@d6 1
a6 1
 *	$Header: /usr6/postgres/dillon/ptree/src/lib/H/RCS/itup.h,v 1.2 89/03/22 18:58:23 hirohama Stab $
d9 2
a10 2
#ifndef	ITupIncluded	/* Include this file only once. */
#define ITupIncluded	1
d12 1
d14 1
d356 1
a356 1
#endif	/* !defined(ITupIncluded) */
@


1.2
log
@-r1.1 without the beta release copyright
@
text
@d6 1
a6 1
 *	$Header: itup.h,v 1.1 89/01/17 05:54:22 hirohama Locked $
d29 4
@


1.1
log
@Initial revision
@
text
@a0 27

; /*
; * 
; * POSTGRES Data Base Management System
; * 
; * Copyright (c) 1988 Regents of the University of California
; * 
; * Permission to use, copy, modify, and distribute this software and its
; * documentation for educational, research, and non-profit purposes and
; * without fee is hereby granted, provided that the above copyright
; * notice appear in all copies and that both that copyright notice and
; * this permission notice appear in supporting documentation, and that
; * the name of the University of California not be used in advertising
; * or publicity pertaining to distribution of the software without
; * specific, written prior permission.  Permission to incorporate this
; * software into commercial products can be obtained from the Campus
; * Software Office, 295 Evans Hall, University of California, Berkeley,
; * Ca., 94720 provided only that the the requestor give the University
; * of California a free licence to any derived software for educational
; * and research purposes.  The University of California makes no
; * representations about the suitability of this software for any
; * purpose.  It is provided "as is" without express or implied warranty.
; * 
; */



d6 1
a6 1
 *	$Header: itup.h,v 1.1 88/11/11 16:37:11 postgres Exp $
@
