diff options
Diffstat (limited to 'src/backend/commands/indexcmds.c')
-rw-r--r-- | src/backend/commands/indexcmds.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index ad819177d7d..860a60d1096 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -342,7 +342,6 @@ DefineIndex(Oid relationId, Oid tablespaceId; Oid createdConstraintId = InvalidOid; List *indexColNames; - List *allIndexParams; Relation rel; Relation indexRelation; HeapTuple tuple; @@ -379,16 +378,16 @@ DefineIndex(Oid relationId, numberOfKeyAttributes = list_length(stmt->indexParams); /* - * Calculate the new list of index columns including both key columns and - * INCLUDE columns. Later we can determine which of these are key columns, - * and which are just part of the INCLUDE list by checking the list - * position. A list item in a position less than ii_NumIndexKeyAttrs is - * part of the key columns, and anything equal to and over is part of the - * INCLUDE columns. + * We append any INCLUDE columns onto the indexParams list so that we have + * one list with all columns. Later we can determine which of these are + * key columns, and which are just part of the INCLUDE list by checking + * the list position. A list item in a position less than + * ii_NumIndexKeyAttrs is part of the key columns, and anything equal to + * and over is part of the INCLUDE columns. */ - allIndexParams = list_concat(list_copy(stmt->indexParams), - list_copy(stmt->indexIncludingParams)); - numberOfAttributes = list_length(allIndexParams); + stmt->indexParams = list_concat(stmt->indexParams, + stmt->indexIncludingParams); + numberOfAttributes = list_length(stmt->indexParams); if (numberOfAttributes <= 0) ereport(ERROR, @@ -545,7 +544,7 @@ DefineIndex(Oid relationId, /* * Choose the index column names. */ - indexColNames = ChooseIndexColumnNames(allIndexParams); + indexColNames = ChooseIndexColumnNames(stmt->indexParams); /* * Select name for index if caller didn't specify @@ -659,7 +658,7 @@ DefineIndex(Oid relationId, coloptions = (int16 *) palloc(numberOfAttributes * sizeof(int16)); ComputeIndexAttrs(indexInfo, typeObjectId, collationObjectId, classObjectId, - coloptions, allIndexParams, + coloptions, stmt->indexParams, stmt->excludeOpNames, relationId, accessMethodName, accessMethodId, amcanorder, stmt->isconstraint); @@ -887,8 +886,8 @@ DefineIndex(Oid relationId, memcpy(part_oids, partdesc->oids, sizeof(Oid) * nparts); parentDesc = CreateTupleDescCopy(RelationGetDescr(rel)); - opfamOids = palloc(sizeof(Oid) * numberOfKeyAttributes); - for (i = 0; i < numberOfKeyAttributes; i++) + opfamOids = palloc(sizeof(Oid) * numberOfAttributes); + for (i = 0; i < numberOfAttributes; i++) opfamOids[i] = get_opclass_family(classObjectId[i]); heap_close(rel, NoLock); |