diff options
Diffstat (limited to 'src/backend/parser/parse_utilcmd.c')
-rw-r--r-- | src/backend/parser/parse_utilcmd.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c index 7540043ce50..c29f1065294 100644 --- a/src/backend/parser/parse_utilcmd.c +++ b/src/backend/parser/parse_utilcmd.c @@ -1072,7 +1072,9 @@ generateClonedIndexStmt(CreateStmtContext *cxt, Relation source_idx, index->oldNode = InvalidOid; index->unique = idxrec->indisunique; index->primary = idxrec->indisprimary; + index->transformed = true; /* don't need transformIndexStmt */ index->concurrent = false; + index->if_not_exists = false; /* * We don't try to preserve the name of the source index; instead, just @@ -1530,7 +1532,9 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt) index->idxcomment = NULL; index->indexOid = InvalidOid; index->oldNode = InvalidOid; + index->transformed = false; index->concurrent = false; + index->if_not_exists = false; /* * If it's ALTER TABLE ADD CONSTRAINT USING INDEX, look up the index and @@ -1941,6 +1945,10 @@ transformIndexStmt(Oid relid, IndexStmt *stmt, const char *queryString) ListCell *l; Relation rel; + /* Nothing to do if statement already transformed. */ + if (stmt->transformed) + return stmt; + /* * We must not scribble on the passed-in IndexStmt, so copy it. (This is * overkill, but easy.) @@ -2021,6 +2029,9 @@ transformIndexStmt(Oid relid, IndexStmt *stmt, const char *queryString) /* Close relation */ heap_close(rel, NoLock); + /* Mark statement as successfully transformed */ + stmt->transformed = true; + return stmt; } |