aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/bootstrap/bootparse.y4
-rw-r--r--src/backend/catalog/index.c13
-rw-r--r--src/backend/commands/cluster.c5
-rw-r--r--src/backend/commands/defind.c7
-rw-r--r--src/backend/parser/analyze.c6
-rw-r--r--src/backend/storage/large_object/inv_api.c4
-rw-r--r--src/backend/tcop/utility.c3
-rw-r--r--src/include/catalog/index.h5
-rw-r--r--src/include/commands/defrem.h3
-rw-r--r--src/include/nodes/parsenodes.h3
10 files changed, 33 insertions, 20 deletions
diff --git a/src/backend/bootstrap/bootparse.y b/src/backend/bootstrap/bootparse.y
index 162ca00e78d..5a2a6e09fd4 100644
--- a/src/backend/bootstrap/bootparse.y
+++ b/src/backend/bootstrap/bootparse.y
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootparse.y,v 1.21 1998/08/24 01:13:36 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootparse.y,v 1.22 1999/01/21 22:48:04 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -225,7 +225,7 @@ Boot_DeclareIndexStmt:
DefineIndex(LexIDStr($5),
LexIDStr($3),
LexIDStr($7),
- $9, NIL, 0, 0, NIL);
+ $9, NIL, 0, 0, 0, NIL);
DO_END;
}
;
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 29565ba285e..ce9d7343c84 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.66 1998/12/15 12:45:43 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.67 1999/01/21 22:48:05 momjian Exp $
*
*
* INTERFACE ROUTINES
@@ -82,7 +82,7 @@ static void
static void UpdateIndexRelation(Oid indexoid, Oid heapoid,
FuncIndexInfo *funcInfo, int natts,
AttrNumber *attNums, Oid *classOids, Node *predicate,
- List *attributeList, bool islossy, bool unique);
+ List *attributeList, bool islossy, bool unique, bool primary);
static void DefaultBuild(Relation heapRelation, Relation indexRelation,
int numberOfAttributes, AttrNumber *attributeNumber,
IndexStrategy indexStrategy, uint16 parameterCount,
@@ -734,7 +734,8 @@ UpdateIndexRelation(Oid indexoid,
Node *predicate,
List *attributeList,
bool islossy,
- bool unique)
+ bool unique,
+ bool primary)
{
Form_pg_index indexForm;
IndexElem *IndexKey;
@@ -775,6 +776,7 @@ UpdateIndexRelation(Oid indexoid,
indexForm->indproc = (PointerIsValid(funcInfo)) ?
FIgetProcOid(funcInfo) : InvalidOid;
indexForm->indislossy = islossy;
+ indexForm->indisprimary = primary;
indexForm->indisunique = unique;
indexForm->indhaskeytype = 0;
@@ -1014,7 +1016,8 @@ index_create(char *heapRelationName,
Datum *parameter,
Node *predicate,
bool islossy,
- bool unique)
+ bool unique,
+ bool primary)
{
Relation heapRelation;
Relation indexRelation;
@@ -1126,7 +1129,7 @@ index_create(char *heapRelationName,
*/
UpdateIndexRelation(indexoid, heapoid, funcInfo,
numatts, attNums, classObjectId, predicate,
- attributeList, islossy, unique);
+ attributeList, islossy, unique, primary);
predInfo = (PredInfo *) palloc(sizeof(PredInfo));
predInfo->pred = predicate;
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c
index 9d9324e8ff5..a8103912063 100644
--- a/src/backend/commands/cluster.c
+++ b/src/backend/commands/cluster.c
@@ -14,7 +14,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.34 1998/12/14 05:18:39 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.35 1999/01/21 22:48:06 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -321,7 +321,8 @@ copy_index(Oid OIDOldIndex, Oid OIDNewHeap)
Old_pg_index_Form->indclass,
(uint16) 0, (Datum) NULL, NULL,
Old_pg_index_Form->indislossy,
- Old_pg_index_Form->indisunique);
+ Old_pg_index_Form->indisunique,
+ Old_pg_index_Form->indisprimary);
heap_close(OldIndex);
heap_close(NewHeap);
diff --git a/src/backend/commands/defind.c b/src/backend/commands/defind.c
index 33d069e6517..692e1782368 100644
--- a/src/backend/commands/defind.c
+++ b/src/backend/commands/defind.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/Attic/defind.c,v 1.29 1998/12/15 12:45:56 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/Attic/defind.c,v 1.30 1999/01/21 22:48:06 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -71,6 +71,7 @@ DefineIndex(char *heapRelationName,
List *attributeList,
List *parameterList,
bool unique,
+ bool primary,
Expr *predicate,
List *rangetable)
{
@@ -189,7 +190,7 @@ DefineIndex(char *heapRelationName,
&fInfo, NULL, accessMethodId,
numberOfAttributes, attributeNumberA,
classObjectId, parameterCount, parameterA, (Node *) cnfPred,
- lossy, unique);
+ lossy, unique, primary);
}
else
{
@@ -206,7 +207,7 @@ DefineIndex(char *heapRelationName,
attributeList,
accessMethodId, numberOfAttributes, attributeNumberA,
classObjectId, parameterCount, parameterA, (Node *) cnfPred,
- lossy, unique);
+ lossy, unique, primary);
}
}
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index af94800d2ed..9f61e83b35d 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -5,7 +5,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: analyze.c,v 1.93 1999/01/21 16:08:38 vadim Exp $
+ * $Id: analyze.c,v 1.94 1999/01/21 22:48:07 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -721,10 +721,14 @@ transformCreateStmt(ParseState *pstate, CreateStmt *stmt)
elog(ERROR, "CREATE TABLE/PRIMARY KEY multiple keys for table %s are not legal", stmt->relname);
have_pkey = TRUE;
+ index->primary = TRUE;
index->idxname = makeTableName(stmt->relname, "pkey", NULL);
}
else
+ {
+ index->primary = FALSE;
index->idxname = NULL;
+ }
index->relname = stmt->relname;
index->accessMethod = "btree";
diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c
index 40460404197..255b05c7c15 100644
--- a/src/backend/storage/large_object/inv_api.c
+++ b/src/backend/storage/large_object/inv_api.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.44 1998/12/15 12:46:26 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.45 1999/01/21 22:48:09 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -178,7 +178,7 @@ inv_create(int flags)
classObjectId[0] = INT4_OPS_OID;
index_create(objname, indname, NULL, NULL, BTREE_AM_OID,
1, &attNums[0], &classObjectId[0],
- 0, (Datum) NULL, NULL, FALSE, FALSE);
+ 0, (Datum) NULL, NULL, FALSE, FALSE, FALSE);
/* make the index visible in this transaction */
CommandCounterIncrement();
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 7d9e11ba5bd..22f915c5920 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.52 1999/01/17 06:18:44 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.53 1999/01/21 22:48:11 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -404,6 +404,7 @@ ProcessUtility(Node *parsetree,
stmt->indexParams, /* parameters */
stmt->withClause,
stmt->unique,
+ 0, /* CREATE INDEX can't be primary */
(Expr *) stmt->whereClause,
stmt->rangetable);
}
diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h
index d377832241b..b08d72e7d17 100644
--- a/src/include/catalog/index.h
+++ b/src/include/catalog/index.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: index.h,v 1.13 1998/09/01 04:34:43 momjian Exp $
+ * $Id: index.h,v 1.14 1999/01/21 22:48:14 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -38,7 +38,8 @@ extern void index_create(char *heapRelationName,
Datum *parameter,
Node *predicate,
bool islossy,
- bool unique);
+ bool unique,
+ bool primary);
extern void index_destroy(Oid indexId);
diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h
index 37b287d9fac..f5867bd3fa4 100644
--- a/src/include/commands/defrem.h
+++ b/src/include/commands/defrem.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: defrem.h,v 1.13 1998/09/01 04:35:30 momjian Exp $
+ * $Id: defrem.h,v 1.14 1999/01/21 22:48:16 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -25,6 +25,7 @@ extern void DefineIndex(char *heapRelationName,
List *attributeList,
List *parameterList,
bool unique,
+ bool primary,
Expr *predicate,
List *rangetable);
extern void ExtendIndex(char *indexRelationName,
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index 0e6c8e5068b..32fd65c69ee 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: parsenodes.h,v 1.67 1999/01/21 16:08:55 vadim Exp $
+ * $Id: parsenodes.h,v 1.68 1999/01/21 22:48:20 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -333,6 +333,7 @@ typedef struct IndexStmt
* transformStmt() */
bool *lossy; /* is index lossy? */
bool unique; /* is index unique? */
+ bool primary; /* is index on primary key? */
} IndexStmt;
/* ----------------------