From 8217fb1441ce4b4e1785f9acfa0ce50039247a10 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Wed, 25 Mar 2015 15:57:08 -0300 Subject: [PATCH] Add OID output argument to DefineTSConfiguration ... which is set to the OID of a copied text search config, whenever the COPY clause is used. This is in the spirit of commit a2e35b53c39. --- src/backend/commands/tsearchcmds.c | 10 +++++++++- src/backend/tcop/utility.c | 3 ++- src/include/commands/defrem.h | 3 ++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c index 45bafd31707..4c404e73d09 100644 --- a/src/backend/commands/tsearchcmds.c +++ b/src/backend/commands/tsearchcmds.c @@ -964,7 +964,7 @@ makeConfigurationDependencies(HeapTuple tuple, bool removeOld, * CREATE TEXT SEARCH CONFIGURATION */ ObjectAddress -DefineTSConfiguration(List *names, List *parameters) +DefineTSConfiguration(List *names, List *parameters, ObjectAddress *copied) { Relation cfgRel; Relation mapRel = NULL; @@ -1013,6 +1013,14 @@ DefineTSConfiguration(List *names, List *parameters) (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot specify both PARSER and COPY options"))); + /* make copied tsconfig available to callers */ + if (copied && OidIsValid(sourceOid)) + { + ObjectAddressSet(*copied, + TSConfigRelationId, + sourceOid); + } + /* * Look up source config if given. */ diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index d9443b1496a..fd09d3ad9ed 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -1129,7 +1129,8 @@ ProcessUtilitySlow(Node *parsetree, case OBJECT_TSCONFIGURATION: Assert(stmt->args == NIL); DefineTSConfiguration(stmt->defnames, - stmt->definition); + stmt->definition, + NULL); break; case OBJECT_COLLATION: Assert(stmt->args == NIL); diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h index a9c67838a63..595f93f79a5 100644 --- a/src/include/commands/defrem.h +++ b/src/include/commands/defrem.h @@ -101,7 +101,8 @@ extern ObjectAddress AlterTSDictionary(AlterTSDictionaryStmt *stmt); extern ObjectAddress DefineTSTemplate(List *names, List *parameters); extern void RemoveTSTemplateById(Oid tmplId); -extern ObjectAddress DefineTSConfiguration(List *names, List *parameters); +extern ObjectAddress DefineTSConfiguration(List *names, List *parameters, + ObjectAddress *copied); extern void RemoveTSConfigurationById(Oid cfgId); extern ObjectAddress AlterTSConfiguration(AlterTSConfigurationStmt *stmt);