diff --git a/docs/en_US/collation_dialog.rst b/docs/en_US/collation_dialog.rst index c178f0887..9813a725c 100644 --- a/docs/en_US/collation_dialog.rst +++ b/docs/en_US/collation_dialog.rst @@ -40,6 +40,9 @@ settings: as the existing one, but will be an independent object. If you choose to copy an existing collation, you cannot modify the collation properties displayed on this tab. +* Use the drop-down listbox next to *Provider* to select a locale services associated + with the collation. Possible values are: icu, libc and builtin. + **Note:** The builtin option is available from v17 onwards. * Use the *Locale* field to specify a locale; a locale specifies language and language formatting characteristics. If you specify this, you cannot specify either of the following parameters. To view a list of locales supported by @@ -50,8 +53,6 @@ settings: * Use the *LC_CTYPE* field to specify a locale with specified character classification. The locale must be applicable to the current database encoding. (See CREATE DATABASE for details.) -* Use the drop-down listbox next to *Locale Provider* to select a locale services associated - with the collation. Possible values are: icu, libc. libc is the default. * Move the switch next to *Deterministic* to *YES* to specify whether the collation should use deterministic comparisons. By default, this option is set to true. In a deterministic comparison, strings that are not byte-wise equal are considered diff --git a/docs/en_US/images/collation_definition.png b/docs/en_US/images/collation_definition.png index 49f134d44..0edbe963f 100644 Binary files a/docs/en_US/images/collation_definition.png and b/docs/en_US/images/collation_definition.png differ diff --git a/docs/en_US/release_notes_9_7.rst b/docs/en_US/release_notes_9_7.rst index 5a97157ee..dd30d5e2f 100644 --- a/docs/en_US/release_notes_9_7.rst +++ b/docs/en_US/release_notes_9_7.rst @@ -23,6 +23,7 @@ New features | `Issue #5766 `_ - Add support for automatic updates in the pgAdmin 4 Desktop application on macOS. | `Issue #6456 `_ - Added GENERIC_PLAN, MEMORY, SERIALIZE option to EXPLAIN/EXPLAIN ANALYZE command. | `Issue #8917 `_ - Add support for server tag-based filtering in the Object Explorer. + | `Issue #8931 `_ - Added support for builtin locale provider while creating Collation. | `Issue #8935 `_ - Added all new connection string parameters introduced in PostgreSQL 16 and later. Housekeeping diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.js index 965dd5457..cead8555d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.js @@ -79,7 +79,8 @@ define('pgadmin.node.collation', [ { owner: pgBrowser.serverInfo[treeNodeInfo.server._id].user.name, schema: ('schema' in treeNodeInfo)? treeNodeInfo.schema.label : '' - } + }, + treeNodeInfo ); } }); diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.ui.js index 15fae8365..a7cd5cc53 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.ui.js @@ -12,7 +12,7 @@ import gettext from 'sources/gettext'; import { isEmptyString } from 'sources/validators'; export default class CollationSchema extends BaseUISchema { - constructor(fieldOptions = {},initValues={}) { + constructor(fieldOptions = {}, initValues={}, nodeInfo={}) { super({ name: undefined, oid: undefined, @@ -30,6 +30,7 @@ export default class CollationSchema extends BaseUISchema { this.schemaList = fieldOptions.schemaList; this.ownerList = fieldOptions.rolesList; this.collationsList = fieldOptions.collationsList; + this.nodeInfo = nodeInfo; } get idAttribute() { @@ -86,16 +87,24 @@ export default class CollationSchema extends BaseUISchema { deps: ['locale', 'lc_collate', 'lc_type'], }, { - id: 'provider', label: gettext('Locale Provider'), + id: 'provider', label: gettext('Provider'), editable: false, type: 'select',mode: ['create'], group: gettext('Definition'), readonly: function (state) { return !obj.isNew(state); }, - options: [{ - label: gettext('icu'), - value: 'icu', - }, { - label: gettext('libc'), - value: 'libc', - }], + options: function() { + let options = [{ + label: gettext('icu'), + value: 'icu', + }, { + label: gettext('libc'), + value: 'libc', + }]; + if(obj.getServerVersion() >= 170000) { + options.push({ + label: gettext('builtin'), value: 'builtin', + }); + } + return Promise.resolve(options); + }, min_version: 110000, deps: ['copy_collation'], depChange: (state)=>{ @@ -110,7 +119,7 @@ export default class CollationSchema extends BaseUISchema { } }, { - id: 'provider', label: gettext('Locale Provider'), + id: 'provider', label: gettext('Provider'), type: 'text',mode: ['properties', 'edit'], group: gettext('Definition'), readonly: true, min_version: 110000, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/12_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/12_plus/properties.sql index 976dd8802..0f633710f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/12_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/12_plus/properties.sql @@ -1,7 +1,7 @@ SELECT c.oid, c.collname AS name, c.collcollate AS lc_collate, c.collctype AS lc_type, pg_catalog.pg_get_userbyid(c.collowner) AS owner, c.collisdeterministic AS is_deterministic, c.collversion AS version, - c.collprovider AS provider, des.description, n.nspname AS schema - + CASE WHEN c.collprovider = 'i' THEN 'icu' ELSE 'libc' END provider, + des.description, n.nspname AS schema FROM pg_catalog.pg_collation c JOIN pg_catalog.pg_namespace n ON n.oid=c.collnamespace LEFT OUTER JOIN pg_catalog.pg_description des ON (des.objoid=c.oid AND des.classoid='pg_collation'::regclass) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/15_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/15_plus/properties.sql index 8fa6f6c0e..080cb432a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/15_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/15_plus/properties.sql @@ -1,6 +1,6 @@ SELECT c.oid, c.collname AS name, COALESCE(c.collcollate, c.colliculocale) AS lc_collate, COALESCE(c.collctype, c.colliculocale) AS lc_type, c.collisdeterministic AS is_deterministic, c.collversion AS version, - c.collprovider AS provider, + CASE WHEN c.collprovider = 'i' THEN 'icu' ELSE 'libc' END provider, pg_catalog.pg_get_userbyid(c.collowner) AS owner, description, n.nspname AS schema FROM pg_catalog.pg_collation c JOIN pg_catalog.pg_namespace n ON n.oid=c.collnamespace diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/16_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/16_plus/properties.sql index ef0f51084..c81be5503 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/16_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/16_plus/properties.sql @@ -1,6 +1,6 @@ SELECT c.oid, c.collname AS name, COALESCE(c.collcollate, c.colliculocale) AS lc_collate, COALESCE(c.collctype, c.colliculocale) AS lc_type, c.collisdeterministic AS is_deterministic, c.collversion AS version, - c.collprovider AS provider, c.collicurules AS rules, + CASE WHEN c.collprovider = 'i' THEN 'icu' ELSE 'libc' END provider, c.collicurules AS rules, pg_catalog.pg_get_userbyid(c.collowner) AS owner, description, n.nspname AS schema FROM pg_catalog.pg_collation c JOIN pg_catalog.pg_namespace n ON n.oid=c.collnamespace diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/17_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/17_plus/properties.sql index c567e94e4..cdbd22be9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/17_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/17_plus/properties.sql @@ -1,6 +1,7 @@ SELECT c.oid, c.collname AS name, COALESCE(c.collcollate, c.colllocale) AS lc_collate, COALESCE(c.collctype, c.colllocale) AS lc_type, c.collisdeterministic AS is_deterministic, c.collversion AS version, - c.collprovider AS provider, c.collicurules AS rules, + CASE WHEN c.collprovider = 'i' THEN 'icu' WHEN c.collprovider = 'b' THEN 'builtin' + ELSE 'libc' END provider, c.collicurules AS rules, pg_catalog.pg_get_userbyid(c.collowner) AS owner, description, n.nspname AS schema FROM pg_catalog.pg_collation c JOIN pg_catalog.pg_namespace n ON n.oid=c.collnamespace diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/alter_collation.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/alter_collation.sql similarity index 81% rename from web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/alter_collation.sql rename to web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/alter_collation.sql index 215b1a41f..5548a4701 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/alter_collation.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/alter_collation.sql @@ -3,7 +3,7 @@ -- DROP COLLATION IF EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#a"; CREATE COLLATION IF NOT EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#a" - (LC_COLLATE = 'C', LC_CTYPE = 'C', PROVIDER = 'c', DETERMINISTIC = true); + (LC_COLLATE = 'C', LC_CTYPE = 'C', PROVIDER = 'libc', DETERMINISTIC = true); ALTER COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#a" OWNER TO ; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/create_collation.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/create_collation.sql similarity index 80% rename from web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/create_collation.sql rename to web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/create_collation.sql index 551417cd2..5595fb16c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/create_collation.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/create_collation.sql @@ -3,7 +3,7 @@ -- DROP COLLATION IF EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#"; CREATE COLLATION IF NOT EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#" - (LC_COLLATE = 'C', LC_CTYPE = 'C', PROVIDER = 'c', DETERMINISTIC = true); + (LC_COLLATE = 'C', LC_CTYPE = 'C', PROVIDER = 'libc', DETERMINISTIC = true); ALTER COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#" OWNER TO ; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/create_collation_with_extra_params.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/create_collation_with_extra_params.sql similarity index 77% rename from web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/create_collation_with_extra_params.sql rename to web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/create_collation_with_extra_params.sql index 279d06ffd..115c2a77c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/create_collation_with_extra_params.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/create_collation_with_extra_params.sql @@ -3,7 +3,7 @@ -- DROP COLLATION IF EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#b"; CREATE COLLATION IF NOT EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#b" - (LC_COLLATE = 'locale', LC_CTYPE = 'locale', PROVIDER = 'i', DETERMINISTIC = true, VERSION = '1'); + (LC_COLLATE = 'locale', LC_CTYPE = 'locale', PROVIDER = 'icu', DETERMINISTIC = true, VERSION = '1'); ALTER COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#b" OWNER TO ; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/create_collation_with_libc.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/create_collation_with_libc.sql new file mode 100644 index 000000000..568879b4c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/create_collation_with_libc.sql @@ -0,0 +1,12 @@ +-- Collation: Cl1_$%{}[]()&*^!@"'`\/#b; + +-- DROP COLLATION IF EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#b"; + +CREATE COLLATION IF NOT EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + (LC_COLLATE = 'C', LC_CTYPE = 'C', PROVIDER = 'libc', DETERMINISTIC = true, VERSION = '1'); + +ALTER COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + OWNER TO ; + +COMMENT ON COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + IS 'libc'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/msql_collation.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/msql_collation.sql similarity index 100% rename from web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/msql_collation.sql rename to web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/msql_collation.sql diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/test.json similarity index 62% rename from web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/test.json rename to web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/test.json index a76967ae2..e680befb9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/16_plus/test.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/13_plus/test.json @@ -33,12 +33,12 @@ "name": "Drop Collation", "endpoint": "NODE-collation.delete_id", "data": { - "name": "Cl1_$%{}[]()&*^!@\"'`\\/#b" + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#a" } }, { "type": "create", - "name": "Create Collation with extra parameters", + "name": "Create Collation with icu provider", "endpoint": "NODE-collation.obj", "sql_endpoint": "NODE-collation.sql_id", "data": { @@ -53,6 +53,40 @@ }, "store_object_id": true, "expected_sql_file": "create_collation_with_extra_params.sql" + }, + { + "type": "delete", + "name": "Drop Collation", + "endpoint": "NODE-collation.delete_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#b" + } + }, + { + "type": "create", + "name": "Create Collation with libc provider", + "endpoint": "NODE-collation.obj", + "sql_endpoint": "NODE-collation.sql_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#b", + "schema": "testschema", + "owner": "postgres", + "description": "libc", + "locale": "C", + "provider": "libc", + "is_deterministic": true, + "version": "1" + }, + "store_object_id": true, + "expected_sql_file": "create_collation_with_libc.sql" + }, + { + "type": "delete", + "name": "Drop Collation", + "endpoint": "NODE-collation.delete_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#b" + } } ] } diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/alter_collation.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/alter_collation.sql new file mode 100644 index 000000000..5548a4701 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/alter_collation.sql @@ -0,0 +1,12 @@ +-- Collation: Cl1_$%{}[]()&*^!@"'`\/#a; + +-- DROP COLLATION IF EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#a"; + +CREATE COLLATION IF NOT EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#a" + (LC_COLLATE = 'C', LC_CTYPE = 'C', PROVIDER = 'libc', DETERMINISTIC = true); + +ALTER COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#a" + OWNER TO ; + +COMMENT ON COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#a" + IS 'Description for alter'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation.sql new file mode 100644 index 000000000..5595fb16c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation.sql @@ -0,0 +1,12 @@ +-- Collation: Cl1_$%{}[]()&*^!@"'`\/#; + +-- DROP COLLATION IF EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#"; + +CREATE COLLATION IF NOT EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#" + (LC_COLLATE = 'C', LC_CTYPE = 'C', PROVIDER = 'libc', DETERMINISTIC = true); + +ALTER COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#" + OWNER TO ; + +COMMENT ON COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#" + IS 'Description'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation_with_builtin.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation_with_builtin.sql new file mode 100644 index 000000000..93421fbb6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation_with_builtin.sql @@ -0,0 +1,12 @@ +-- Collation: Cl1_$%{}[]()&*^!@"'`\/#b; + +-- DROP COLLATION IF EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#b"; + +CREATE COLLATION IF NOT EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + (LC_COLLATE = 'C', LC_CTYPE = 'C', PROVIDER = 'builtin', DETERMINISTIC = true, VERSION = '1'); + +ALTER COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + OWNER TO ; + +COMMENT ON COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + IS 'builtin'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation_with_extra_params.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation_with_extra_params.sql new file mode 100644 index 000000000..115c2a77c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation_with_extra_params.sql @@ -0,0 +1,12 @@ +-- Collation: Cl1_$%{}[]()&*^!@"'`\/#b; + +-- DROP COLLATION IF EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#b"; + +CREATE COLLATION IF NOT EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + (LC_COLLATE = 'locale', LC_CTYPE = 'locale', PROVIDER = 'icu', DETERMINISTIC = true, VERSION = '1'); + +ALTER COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + OWNER TO ; + +COMMENT ON COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + IS 'Description for extra params'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation_with_libc.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation_with_libc.sql new file mode 100644 index 000000000..1628e6093 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/create_collation_with_libc.sql @@ -0,0 +1,12 @@ +-- Collation: Cl1_$%{}[]()&*^!@"'`\/#b; + +-- DROP COLLATION IF EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#b"; + +CREATE COLLATION IF NOT EXISTS testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + (LC_COLLATE = 'C', LC_CTYPE = 'C', PROVIDER = 'libc', DETERMINISTIC = true); + +ALTER COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + OWNER TO ; + +COMMENT ON COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#b" + IS 'libc'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/msql_collation.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/msql_collation.sql new file mode 100644 index 000000000..f58616dcb --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/msql_collation.sql @@ -0,0 +1,5 @@ +COMMENT ON COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#" + IS 'Description for alter'; + +ALTER COLLATION testschema."Cl1_$%{}[]()&*^!@""'`\/#" + RENAME TO "Cl1_$%{}[]()&*^!@""'`\/#a"; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/test.json new file mode 100644 index 000000000..138ac5201 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/pg/17_plus/test.json @@ -0,0 +1,117 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create Collation", + "endpoint": "NODE-collation.obj", + "sql_endpoint": "NODE-collation.sql_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#", + "schema": "testschema", + "copy_collation": "pg_catalog.\"C\"", + "description": "Description" + }, + "store_object_id": true, + "expected_sql_file": "create_collation.sql" + }, + { + "type": "alter", + "name": "Alter Collation", + "endpoint": "NODE-collation.obj_id", + "sql_endpoint": "NODE-collation.sql_id", + "msql_endpoint": "NODE-collation.msql_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#a", + "schema": "testschema", + "description": "Description for alter" + }, + "expected_sql_file": "alter_collation.sql", + "expected_msql_file": "msql_collation.sql" + }, + { + "type": "delete", + "name": "Drop Collation", + "endpoint": "NODE-collation.delete_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#a" + } + }, + { + "type": "create", + "name": "Create Collation with icu provider", + "endpoint": "NODE-collation.obj", + "sql_endpoint": "NODE-collation.sql_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#b", + "schema": "testschema", + "owner": "postgres", + "description": "Description for extra params", + "locale": "locale", + "provider": "icu", + "is_deterministic": true, + "version": "1" + }, + "store_object_id": true, + "expected_sql_file": "create_collation_with_extra_params.sql" + }, + { + "type": "delete", + "name": "Drop Collation", + "endpoint": "NODE-collation.delete_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#b" + } + }, + { + "type": "create", + "name": "Create Collation with libc provider", + "endpoint": "NODE-collation.obj", + "sql_endpoint": "NODE-collation.sql_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#b", + "schema": "testschema", + "owner": "postgres", + "description": "libc", + "locale": "C", + "provider": "libc", + "is_deterministic": true + }, + "store_object_id": true, + "expected_sql_file": "create_collation_with_libc.sql" + }, + { + "type": "delete", + "name": "Drop Collation", + "endpoint": "NODE-collation.delete_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#b" + } + }, + { + "type": "create", + "name": "Create Collation with builtin provider", + "endpoint": "NODE-collation.obj", + "sql_endpoint": "NODE-collation.sql_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#b", + "schema": "testschema", + "owner": "postgres", + "description": "builtin", + "locale": "C", + "provider": "builtin", + "is_deterministic": true, + "version": "1" + }, + "store_object_id": true, + "expected_sql_file": "create_collation_with_builtin.sql" + }, + { + "type": "delete", + "name": "Drop Collation", + "endpoint": "NODE-collation.delete_id", + "data": { + "name": "Cl1_$%{}[]()&*^!@\"'`\\/#b" + } + } + ] +}