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 a2e35b53c3.
This commit is contained in:
Alvaro Herrera 2015-03-25 15:57:08 -03:00
parent b3196e65f5
commit 8217fb1441
3 changed files with 13 additions and 3 deletions

View File

@ -964,7 +964,7 @@ makeConfigurationDependencies(HeapTuple tuple, bool removeOld,
* CREATE TEXT SEARCH CONFIGURATION * CREATE TEXT SEARCH CONFIGURATION
*/ */
ObjectAddress ObjectAddress
DefineTSConfiguration(List *names, List *parameters) DefineTSConfiguration(List *names, List *parameters, ObjectAddress *copied)
{ {
Relation cfgRel; Relation cfgRel;
Relation mapRel = NULL; Relation mapRel = NULL;
@ -1013,6 +1013,14 @@ DefineTSConfiguration(List *names, List *parameters)
(errcode(ERRCODE_SYNTAX_ERROR), (errcode(ERRCODE_SYNTAX_ERROR),
errmsg("cannot specify both PARSER and COPY options"))); 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. * Look up source config if given.
*/ */

View File

@ -1129,7 +1129,8 @@ ProcessUtilitySlow(Node *parsetree,
case OBJECT_TSCONFIGURATION: case OBJECT_TSCONFIGURATION:
Assert(stmt->args == NIL); Assert(stmt->args == NIL);
DefineTSConfiguration(stmt->defnames, DefineTSConfiguration(stmt->defnames,
stmt->definition); stmt->definition,
NULL);
break; break;
case OBJECT_COLLATION: case OBJECT_COLLATION:
Assert(stmt->args == NIL); Assert(stmt->args == NIL);

View File

@ -101,7 +101,8 @@ extern ObjectAddress AlterTSDictionary(AlterTSDictionaryStmt *stmt);
extern ObjectAddress DefineTSTemplate(List *names, List *parameters); extern ObjectAddress DefineTSTemplate(List *names, List *parameters);
extern void RemoveTSTemplateById(Oid tmplId); 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 void RemoveTSConfigurationById(Oid cfgId);
extern ObjectAddress AlterTSConfiguration(AlterTSConfigurationStmt *stmt); extern ObjectAddress AlterTSConfiguration(AlterTSConfigurationStmt *stmt);