Simplify CREATE TEXT SEARCH CONFIGURATION by eliminating the separate
authorTom Lane
Tue, 21 Aug 2007 21:24:00 +0000 (21:24 +0000)
committerTom Lane
Tue, 21 Aug 2007 21:24:00 +0000 (21:24 +0000)
'with map' parameter; as things now stand there's really not much point
in specifying a config-to-copy if you don't copy its map.  Also, use
COPY instead of TEMPLATE as the key word for a config-to-copy, so as
to avoid confusion with text search templates.  Per discussion; the
just-committed reference page for the command already describes it
this way.

src/backend/commands/tsearchcmds.c

index 7092da132d8715e5ac563722cd75994750c2f3f8..af34c58c7c230c4d003bd871f791516793bb9b21 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/tsearchcmds.c,v 1.1 2007/08/21 01:11:15 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/tsearchcmds.c,v 1.2 2007/08/21 21:24:00 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1192,10 +1192,9 @@ DefineTSConfiguration(List *names, List *parameters)
    Oid         namespaceoid;
    char       *cfgname;
    NameData    cname;
-   List       *templateName = NIL;
-   Oid         templateOid = InvalidOid;
+   List       *sourceName = NIL;
+   Oid         sourceOid = InvalidOid;
    Oid         prsOid = InvalidOid;
-   bool        with_map = false;
    Oid         cfgOid;
    ListCell   *pl;
 
@@ -1217,10 +1216,8 @@ DefineTSConfiguration(List *names, List *parameters)
 
        if (pg_strcasecmp(defel->defname, "parser") == 0)
            prsOid = TSParserGetPrsid(defGetQualifiedName(defel), false);
-       else if (pg_strcasecmp(defel->defname, "template") == 0)
-           templateName = defGetQualifiedName(defel);
-       else if (pg_strcasecmp(defel->defname, "map") == 0)
-           with_map = defGetBoolean(defel);
+       else if (pg_strcasecmp(defel->defname, "copy") == 0)
+           sourceName = defGetQualifiedName(defel);
        else
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
@@ -1229,26 +1226,24 @@ DefineTSConfiguration(List *names, List *parameters)
    }
 
    /*
-    * Look up template if given.  XXX the "template" is an existing config
-    * that we copy, not a pg_ts_template entry.  This seems confusing.
-    * Maybe should use "source" or some other word?
+    * Look up source config if given.
     */
-   if (templateName)
+   if (sourceName)
    {
        Form_pg_ts_config cfg;
 
-       templateOid = TSConfigGetCfgid(templateName, false);
+       sourceOid = TSConfigGetCfgid(sourceName, false);
 
        tup = SearchSysCache(TSCONFIGOID,
-                            ObjectIdGetDatum(templateOid),
+                            ObjectIdGetDatum(sourceOid),
                             0, 0, 0);
        if (!HeapTupleIsValid(tup))
            elog(ERROR, "cache lookup failed for text search configuration %u",
-                templateOid);
+                sourceOid);
 
        cfg = (Form_pg_ts_config) GETSTRUCT(tup);
 
-       /* Use template's parser if no other was specified */
+       /* Use source's parser if no other was specified */
        if (!OidIsValid(prsOid))
            prsOid = cfg->cfgparser;
 
@@ -1283,10 +1278,10 @@ DefineTSConfiguration(List *names, List *parameters)
 
    CatalogUpdateIndexes(cfgRel, tup);
 
-   if (OidIsValid(templateOid) && with_map)
+   if (OidIsValid(sourceOid))
    {
        /*
-        * Copy token-dicts map from template
+        * Copy token-dicts map from source config
         */
        ScanKeyData skey;
        SysScanDesc scan;
@@ -1297,7 +1292,7 @@ DefineTSConfiguration(List *names, List *parameters)
        ScanKeyInit(&skey,
                    Anum_pg_ts_config_map_mapcfg,
                    BTEqualStrategyNumber, F_OIDEQ,
-                   ObjectIdGetDatum(templateOid));
+                   ObjectIdGetDatum(sourceOid));
 
        scan = systable_beginscan(mapRel, TSConfigMapIndexId, true,
                                  SnapshotNow, 1, &skey);