aboutsummaryrefslogtreecommitdiff
path: root/src/include/access/nbtree.h
diff options
context:
space:
mode:
authorMarc G. Fournier <scrappy@hub.org>1996-11-13 20:56:15 +0000
committerMarc G. Fournier <scrappy@hub.org>1996-11-13 20:56:15 +0000
commit07a65b22554d54455de5bc791a48fb0542f48791 (patch)
tree8320f9bb483ac60e34af929036a1a5a36c19d827 /src/include/access/nbtree.h
parent0cec8fe26c4c76bcc72b78c194a1aa026748c6dc (diff)
downloadpostgresql-07a65b22554d54455de5bc791a48fb0542f48791.tar.gz
postgresql-07a65b22554d54455de5bc791a48fb0542f48791.zip
Commit of a *MAJOR* patch from Dan McGuirk <djm@indirect.com>
Changes: * Unique index capability works using the syntax 'create unique index'. * Duplicate OID's in the system tables are removed. I put little scripts called 'duplicate_oids' and 'find_oid' in include/catalog that help to find and remove duplicate OID's. I also moved 'unused_oids' from backend/catalog to include/catalog, since it has to be in the same directory as the include files in order to work. * The backend tries converting the name of a function or aggregate to all lowercase if the original name given doesn't work (mostly for compatibility with ODBC). * You can 'SELECT NULL' to your heart's content. * I put my _bt_updateitem fix in instead, which uses _bt_insertonpg so that even if the new key is so big that the page has to be split, everything still works. * All literal references to system catalog OID's have been replaced with references to define'd constants from the catalog header files. * I added a couple of node copy functions. I think this was a preliminary attempt to get rules to work.
Diffstat (limited to 'src/include/access/nbtree.h')
-rw-r--r--src/include/access/nbtree.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/include/access/nbtree.h b/src/include/access/nbtree.h
index 685546f827f..c17ce47813c 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.3 1996/11/05 10:37:08 scrappy Exp $
+ * $Id: nbtree.h,v 1.4 1996/11/13 20:50:32 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@@ -170,7 +170,10 @@ typedef BTStackData *BTStack;
/*
* prototypes for functions in nbtinsert.c
*/
-extern InsertIndexResult _bt_doinsert(Relation rel, BTItem btitem);
+extern InsertIndexResult _bt_doinsert(Relation rel, BTItem btitem,
+ bool index_is_unique, bool is_update);
+
+ /* default is to allow duplicates */
extern bool _bt_itemcmp(Relation rel, Size keysz, BTItem item1, BTItem item2,
StrategyNumber strat);
@@ -200,7 +203,7 @@ extern void btbuild(Relation heap, Relation index, int natts,
AttrNumber *attnum, IndexStrategy istrat, uint16 pcount,
Datum *params, FuncIndexInfo *finfo, PredInfo *predInfo);
extern InsertIndexResult btinsert(Relation rel, Datum *datum, char *nulls,
- ItemPointer ht_ctid);
+ ItemPointer ht_ctid, bool is_update);
extern char *btgettuple(IndexScanDesc scan, ScanDirection dir);
extern char *btbeginscan(Relation rel, bool fromEnd, uint16 keysz,
ScanKey scankey);
@@ -237,6 +240,7 @@ extern OffsetNumber _bt_binsrch(Relation rel, Buffer buf, int keysz,
extern RetrieveIndexResult _bt_next(IndexScanDesc scan, ScanDirection dir);
extern RetrieveIndexResult _bt_first(IndexScanDesc scan, ScanDirection dir);
extern bool _bt_step(IndexScanDesc scan, Buffer *bufP, ScanDirection dir);
+extern int _bt_compare(Relation rel, TupleDesc itupdesc, Page page, int keysz, ScanKey scankey, OffsetNumber offnum);
/*
* prototypes for functions in nbtstrat.c