Hi Hackers,

Attached is the patch to add schema qualified dictionary names in FTS
configuration to overcome the confusion of duplicate dictionary names.

Also modified the resql test cases accordingly.

Please review.

Regards,
Ganesh Jaybhay
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/dictionaries.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/dictionaries.sql
index f0e7b0f..e7d81d4 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/dictionaries.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/dictionaries.sql
@@ -1,7 +1,6 @@
 {# FETCH DICTIONARIES statement #}
-SELECT
-    dictname
-FROM
-    pg_ts_dict
-ORDER BY
-    dictname
\ No newline at end of file
+SELECT CONCAT(pg_ns.nspname, '.', pg_td.dictname) as dictname
+--	pg_td.dictname
+FROM pg_ts_dict pg_td
+LEFT OUTER JOIN pg_namespace pg_ns
+ON pg_td.dictnamespace = pg_ns.oid;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/sql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/sql.sql
index 76ed60e..213cd19 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/sql.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/sql.sql
@@ -24,10 +24,10 @@ FROM
         array_to_string(
          array(
 	        SELECT
-	            'ALTER TEXT SEARCH CONFIGURATION ' || quote_ident(nspname) ||
+	            'ALTER TEXT SEARCH CONFIGURATION ' || quote_ident(b.nspname) ||
 	            E'.' || quote_ident(cfg.cfgname) || ' ADD MAPPING FOR ' ||
 	            t.alias  || ' WITH ' ||
-	            array_to_string(array_agg(dict.dictname), ', ') || ';'
+	            array_to_string(array_agg(CONCAT(pg_ns.nspname, '.', dict.dictname)), ', ') || ';'
             FROM
                 pg_ts_config_map map
                 LEFT JOIN (
@@ -38,6 +38,7 @@ FROM
                               pg_catalog.ts_token_type(cfg.cfgparser)
                           ) t ON (t.tokid = map.maptokentype)
                 LEFT OUTER JOIN pg_ts_dict dict ON (map.mapdict = dict.oid)
+                LEFT OUTER JOIN pg_namespace pg_ns ON (pg_ns.oid = dict.dictnamespace)
             WHERE
                 map.mapcfg = cfg.oid
             GROUP BY t.alias
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/tokenDictList.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/tokenDictList.sql
index e8a2d5b..3783928 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/tokenDictList.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/tokenDictList.sql
@@ -9,15 +9,16 @@ SELECT
     WHERE
         t.tokid = maptokentype
     ) AS token,
-    array_agg(dictname) AS dictname
+    array_agg(CONCAT(pg_ns.nspname, '.', pg_ts_dict.dictname)) AS dictname
 FROM
     pg_ts_config_map
     LEFT OUTER JOIN pg_ts_config ON mapcfg = pg_ts_config.oid
     LEFT OUTER JOIN pg_ts_dict ON mapdict = pg_ts_dict.oid
+    LEFT OUTER JOIN pg_namespace pg_ns ON pg_ns.oid = pg_ts_dict.dictnamespace
 WHERE
     mapcfg={{cfgid}}::OID
 GROUP BY
     token
 ORDER BY
     1
-{% endif %}
\ No newline at end of file
+{% endif %}
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_add_token.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_add_token.sql
index fcf1c10..f7b8548 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_add_token.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_add_token.sql
@@ -7,4 +7,4 @@ CREATE TEXT SEARCH CONFIGURATION test.test_fts_configuration_def1 (
 );
 
 COMMENT ON TEXT SEARCH CONFIGURATION test.test_fts_configuration_def1 IS 'test comment';
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def1 ADD MAPPING FOR file WITH english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def1 ADD MAPPING FOR file WITH pg_catalog.english_stem;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_remove_token.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_remove_token.sql
index 130488b..05ff797 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_remove_token.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_remove_token.sql
@@ -5,21 +5,21 @@
 CREATE TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 (
 	PARSER = default
 );
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR asciihword WITH english_stem;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR asciiword WITH english_stem;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR email WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR file WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR float WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR host WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword WITH english_stem;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_asciipart WITH english_stem;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_numpart WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_part WITH english_stem;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR int WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR numhword WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR numword WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR sfloat WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR uint WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR url WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR url_path WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR version WITH simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR asciihword WITH pg_catalog.english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR asciiword WITH pg_catalog.english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR email WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR file WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR float WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR host WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword WITH pg_catalog.english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_asciipart WITH pg_catalog.english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_numpart WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_part WITH pg_catalog.english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR int WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR numhword WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR numword WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR sfloat WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR uint WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR url WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR url_path WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR version WITH pg_catalog.simple;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_rename.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_rename.sql
index 6924617..dd64a8f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_rename.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/alter_fts_conf_rename.sql
@@ -7,4 +7,4 @@ CREATE TEXT SEARCH CONFIGURATION test.test_fts_configuration (
 );
 
 COMMENT ON TEXT SEARCH CONFIGURATION test.test_fts_configuration IS 'test comment';
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration ADD MAPPING FOR file WITH english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration ADD MAPPING FOR file WITH pg_catalog.english_stem;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/create_fts_conf_def2.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/create_fts_conf_def2.sql
index 07cd7b9..fd1cc24 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/create_fts_conf_def2.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/create_fts_conf_def2.sql
@@ -5,22 +5,22 @@
 CREATE TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 (
 	PARSER = default
 );
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR asciihword WITH english_stem;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR asciiword WITH english_stem;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR email WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR file WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR float WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR host WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword WITH english_stem;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_asciipart WITH english_stem;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_numpart WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_part WITH english_stem;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR int WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR numhword WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR numword WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR sfloat WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR uint WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR url WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR url_path WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR version WITH simple;
-ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR word WITH english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR asciihword WITH pg_catalog.english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR asciiword WITH pg_catalog.english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR email WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR file WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR float WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR host WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword WITH pg_catalog.english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_asciipart WITH pg_catalog.english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_numpart WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR hword_part WITH pg_catalog.english_stem;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR int WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR numhword WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR numword WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR sfloat WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR uint WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR url WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR url_path WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR version WITH pg_catalog.simple;
+ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def2 ADD MAPPING FOR word WITH pg_catalog.english_stem;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/msql_alter_fts_conf_add_token.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/msql_alter_fts_conf_add_token.sql
index 23419b7..c2333b4 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/msql_alter_fts_conf_add_token.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/msql_alter_fts_conf_add_token.sql
@@ -1,3 +1,3 @@
 ALTER TEXT SEARCH CONFIGURATION test.test_fts_configuration_def1
     ADD MAPPING FOR file
-    WITH english_stem;
+    WITH pg_catalog.english_stem;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/test.json
index b3b1b51..aae55ea 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/test.json
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/default/test.json
@@ -54,7 +54,7 @@
       "sql_endpoint": "NODE-fts_configuration.sql_id",
       "msql_endpoint": "NODE-fts_configuration.msql_id",
       "data": {
-        "tokens": {"added": [{"token": "file", "dictname": ["english_stem"]}]}
+        "tokens": {"added": [{"token": "file", "dictname": ["pg_catalog.english_stem"]}]}
       },
       "expected_sql_file": "alter_fts_conf_add_token.sql",
       "expected_msql_file": "msql_alter_fts_conf_add_token.sql"
@@ -97,7 +97,7 @@
       "sql_endpoint": "NODE-fts_configuration.sql_id",
       "msql_endpoint": "NODE-fts_configuration.msql_id",
       "data": {
-        "tokens": {"deleted": [{"token": "word", "dictname": ["english_stem"]}]}
+        "tokens": {"deleted": [{"token": "word", "dictname": ["pg_catalog.english_stem"]}]}
       },
       "expected_sql_file": "alter_fts_conf_remove_token.sql",
       "expected_msql_file": "msql_alter_fts_conf_remove_token.sql"

Reply via email to