mirror of
https://github.com/postgres/postgres.git
synced 2025-06-22 02:52:08 +03:00
Implement CREATE TABLE LIKE ... INCLUDING INDEXES. Patch from NikhilS,
based in part on an earlier patch from Trevor Hardcastle, and reviewed by myself.
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/commands/indexcmds.c,v 1.160 2007/06/23 22:12:50 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/commands/indexcmds.c,v 1.161 2007/07/17 05:02:00 neilc Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -79,6 +79,8 @@ static bool relationHasPrimaryKey(Relation rel);
|
||||
* to index on.
|
||||
* 'predicate': the partial-index condition, or NULL if none.
|
||||
* 'options': reloptions from WITH (in list-of-DefElem form).
|
||||
* 'src_options': reloptions from the source index, if this is a cloned
|
||||
* index produced by CREATE TABLE LIKE ... INCLUDING INDEXES
|
||||
* 'unique': make the index enforce uniqueness.
|
||||
* 'primary': mark the index as a primary key in the catalogs.
|
||||
* 'isconstraint': index is for a PRIMARY KEY or UNIQUE constraint,
|
||||
@ -100,6 +102,7 @@ DefineIndex(RangeVar *heapRelation,
|
||||
List *attributeList,
|
||||
Expr *predicate,
|
||||
List *options,
|
||||
char *src_options,
|
||||
bool unique,
|
||||
bool primary,
|
||||
bool isconstraint,
|
||||
@ -392,9 +395,17 @@ DefineIndex(RangeVar *heapRelation,
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse AM-specific options, convert to text array form, validate.
|
||||
* Parse AM-specific options, convert to text array form,
|
||||
* validate. The src_options introduced due to using indexes
|
||||
* via the "CREATE LIKE INCLUDING INDEXES" statement also need to
|
||||
* be merged here
|
||||
*/
|
||||
reloptions = transformRelOptions((Datum) 0, options, false, false);
|
||||
if (src_options)
|
||||
reloptions = unflatten_reloptions(src_options);
|
||||
else
|
||||
reloptions = (Datum) 0;
|
||||
|
||||
reloptions = transformRelOptions(reloptions, options, false, false);
|
||||
|
||||
(void) index_reloptions(amoptions, reloptions, true);
|
||||
|
||||
|
Reference in New Issue
Block a user