Re: RM 4463 - MSQL test cases for domain node

Neel Patel <[email protected]>
Newsgroups gmane.comp.db.postgresql.pgadmin.devel
Message-ID <CACCA4P1kPTG+YK4PAJT5XbDNAt785KgJUHkGuKbtb9vd-+rTCg@mail.gmail.com>
Hi,

Please find attached updated patch. I have tested with PG 9.4, PG 10 & EPAS
10.
Do review it and let me know in case of any failures.

Thanks,
Neel Patel

On Fri, Aug 23, 2019 at 1:52 PM Dave Page <[email protected]> wrote:

> Hi
>
> On Wed, Aug 21, 2019 at 8:58 AM Neel Patel <[email protected]>
> wrote:
>
>> Hi,
>>
>> Please find attached patch that will add more resql test cases and msql
>> test cases for domain node.
>>
>>    - Covered test cases for Length, Precision and Collation.
>>    - Also added msql test cases.
>>
>> While writing resql test cases for domain node, I found one more issue
>> RM-4644 <https://redmine.postgresql.org/issues/4644>. I have sent
>> separate patch for the same.
>>
>
> I'm getting the following error with this patch:
>
> ======================================================================
> ERROR: runTest
> (regression.re_sql.tests.test_resql.ReverseEngineeredSQLTestCases)
> Reverse Engineered SQL Test Cases
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File
> "/Users/dpage/git/pgadmin4/web/regression/re_sql/tests/test_resql.py", line
> 126, in runTest
>     self.execute_test_case(scenarios)
>   File
> "/Users/dpage/git/pgadmin4/web/regression/re_sql/tests/test_resql.py", line
> 204, in execute_test_case
>     if not self.check_msql(scenario, object_id):
>   File
> "/Users/dpage/git/pgadmin4/web/regression/re_sql/tests/test_resql.py", line
> 329, in check_msql
>     object_id)
>   File
> "/Users/dpage/git/pgadmin4/web/regression/re_sql/tests/test_resql.py", line
> 178, in get_url
>     object_url = url_for(rule.endpoint, **options)
>   File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.7/site-packages/flask/helpers.py",
> line 356, in url_for
>     return appctx.app.handle_url_build_error(error, endpoint, values)
>   File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.7/site-packages/flask/app.py",
> line 2061, in handle_url_build_error
>     reraise(exc_type, exc_value, tb)
>   File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.7/site-packages/flask/_compat.py",
> line 35, in reraise
>     raise value
>   File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.7/site-packages/flask/helpers.py",
> line 345, in url_for
>     force_external=external)
>   File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.7/site-packages/werkzeug/routing.py",
> line 1776, in build
>     raise BuildError(endpoint, values, method, self)
> werkzeug.routing.BuildError: Could not build url for endpoint
> 'NODE-domain.msql_id' with values ['did', 'gid', 'scid', 'sid']. Did you
> forget to specify values ['doid']?
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
RM_4463_V3.patch (application/octet-stream, 31.1 KB)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/test.json
deleted file mode 100644
index fa8b38191..000000000
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/test.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "scenarios": [{
-      "type": "create",
-      "name": "Create Domain",
-      "endpoint": "NODE-domain.obj",
-      "sql_endpoint": "NODE-domain.sql_id",
-      "data": {
-	"name": "Dom1_$%{}[]()&*^!@\"'`\\/#",
-	"schema": "public",
-        "schema_id": "<SCHEMA_ID>",
-        "basensp": "public",
-        "description": "test_comment",
-        "basetype": "bigint",
-        "typdefault": "5",
-        "typnotnull": "true",
-        "constraints": [{
-		"conname": "constraint_1",
-		"consrc": "true",
-		"convalidated": "true"
-	}],
-	"seclabels": []
-      },
-      "expected_sql_file": "create_domain.sql"
-    }, {
-      "type": "alter",
-      "name": "Alter domain comment",
-      "endpoint": "NODE-domain.obj_id",
-      "sql_endpoint": "NODE-domain.sql_id",
-      "data": {
-        "description": "test updated domain comment"
-      },
-      "expected_sql_file": "alter_domain_comment.sql"
-    }, {
-      "type": "alter",
-      "name": "Alter domain null type",
-      "endpoint": "NODE-domain.obj_id",
-      "sql_endpoint": "NODE-domain.sql_id",
-      "data": {
-        "typnotnull": "false"
-      },
-      "expected_sql_file": "alter_domain_null_type.sql"
-    }, {
-      "type": "alter",
-      "name": "Alter domain default expression",
-      "endpoint": "NODE-domain.obj_id",
-      "sql_endpoint": "NODE-domain.sql_id",
-      "data": {
-        "typdefault": "3"
-      },
-      "expected_sql_file": "alter_domain_default_expression.sql"
-    }, {
-      "type": "alter",
-      "name": "Alter domain name",
-      "endpoint": "NODE-domain.obj_id",
-      "sql_endpoint": "NODE-domain.sql_id",
-      "data": {
-        "name": "Dom2_$%{}[]()&*^!@\"'`\\/#"
-      },
-      "expected_sql_file": "alter_domain_name.sql"
-    }, {
-      "type": "delete",
-      "name": "Drop domain",
-      "endpoint": "NODE-domain.delete_id",
-      "data": {
-        "name": "Dom2_$%{}[]()&*^!@\"'`\\/#"
-      }
-    }
-  ]
-}
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_comment.sql
similarity index 55%
rename from web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_comment.sql
rename to web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_comment.sql
index 27648cd9a..132f6ba8a 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_comment.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_comment.sql
@@ -3,14 +3,18 @@
 -- DROP DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#";
 
 CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
-    AS bigint
+    AS text
+    COLLATE pg_catalog."C"
     DEFAULT 5
     NOT NULL;
 
-ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO <OWNER>;
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO postgres;
 
 ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
-    ADD CONSTRAINT constraint_1 CHECK (true);
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
 
 COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
     IS 'test updated domain comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_default_expression.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_default_expression.sql
similarity index 54%
rename from web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_default_expression.sql
rename to web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_default_expression.sql
index 7d9ca3560..6987a3381 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_default_expression.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_default_expression.sql
@@ -3,13 +3,17 @@
 -- DROP DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#";
 
 CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
-    AS bigint
+    AS text
+    COLLATE pg_catalog."C"
     DEFAULT 3;
 
-ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO <OWNER>;
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO postgres;
 
 ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
-    ADD CONSTRAINT constraint_1 CHECK (true);
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
 
 COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
     IS 'test updated domain comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_name.sql
similarity index 54%
rename from web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_name.sql
rename to web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_name.sql
index 5b546dcf7..fad3d0f4c 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_name.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_name.sql
@@ -3,13 +3,17 @@
 -- DROP DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#";
 
 CREATE DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#"
-    AS bigint
+    AS text
+    COLLATE pg_catalog."C"
     DEFAULT 3;
 
-ALTER DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#" OWNER TO <OWNER>;
+ALTER DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#" OWNER TO postgres;
 
 ALTER DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#"
-    ADD CONSTRAINT constraint_1 CHECK (true);
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
 
 COMMENT ON DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#"
     IS 'test updated domain comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_null_type.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_null_type.sql
similarity index 54%
rename from web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_null_type.sql
rename to web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_null_type.sql
index 1e0747a52..a8d6a3fac 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/alter_domain_null_type.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/alter_domain_null_type.sql
@@ -3,13 +3,17 @@
 -- DROP DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#";
 
 CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
-    AS bigint
+    AS text
+    COLLATE pg_catalog."C"
     DEFAULT 5;
 
-ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO <OWNER>;
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO postgres;
 
 ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
-    ADD CONSTRAINT constraint_1 CHECK (true);
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
 
 COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
     IS 'test updated domain comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/create_domain.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/create_domain.sql
new file mode 100644
index 000000000..246cbc1e3
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/create_domain.sql
@@ -0,0 +1,20 @@
+-- DOMAIN: public."Dom1_$%{}[]()&*^!@""'`\/#"
+
+-- DROP DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#";
+
+CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    AS text
+    COLLATE pg_catalog."C"
+    DEFAULT 5
+    NOT NULL;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO postgres;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
+
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test_comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/create_domain.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/create_domain_numeric.sql
similarity index 55%
rename from web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/create_domain.sql
rename to web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/create_domain_numeric.sql
index 0d3933521..81d572e22 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/default/create_domain.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/create_domain_numeric.sql
@@ -3,14 +3,11 @@
 -- DROP DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#";
 
 CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
-    AS bigint
-    DEFAULT 5
+    AS numeric(5,2)
+    DEFAULT 3
     NOT NULL;
 
-ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO <OWNER>;
-
-ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
-    ADD CONSTRAINT constraint_1 CHECK (true);
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO postgres;
 
 COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
     IS 'test_comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_comment.sql
new file mode 100644
index 000000000..8a4fb8644
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_comment.sql
@@ -0,0 +1,2 @@
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test updated domain comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_default_expression.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_default_expression.sql
new file mode 100644
index 000000000..4321f7b56
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_default_expression.sql
@@ -0,0 +1,2 @@
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    SET DEFAULT 3;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_name.sql
new file mode 100644
index 000000000..51a634176
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_name.sql
@@ -0,0 +1,2 @@
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    RENAME TO "Dom2_$%{}[]()&*^!@""'`\/#";
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_null_type.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_null_type.sql
new file mode 100644
index 000000000..190e94b47
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_alter_domain_null_type.sql
@@ -0,0 +1,2 @@
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    DROP NOT NULL;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_create_domain.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_create_domain.sql
new file mode 100644
index 000000000..5e4da15a3
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_create_domain.sql
@@ -0,0 +1,16 @@
+CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    AS text
+    COLLATE pg_catalog."C"
+    DEFAULT 5
+    NOT NULL;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO postgres;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
+
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test_comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_create_domain_numeric.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_create_domain_numeric.sql
new file mode 100644
index 000000000..9feccd2db
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/msql_create_domain_numeric.sql
@@ -0,0 +1,9 @@
+CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    AS numeric(5,2)
+    DEFAULT 3
+    NOT NULL;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO postgres;
+
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test_comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/test.json
new file mode 100644
index 000000000..f3d8e238b
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/pg/default/test.json
@@ -0,0 +1,114 @@
+{
+  "scenarios": [{
+      "type": "create",
+      "name": "Create Domain with all options",
+      "endpoint": "NODE-domain.obj",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql",
+      "data": {
+	"name": "Dom1_$%{}[]()&*^!@\"'`\\/#",
+	"schema": "public",
+        "schema_id": "<SCHEMA_ID>",
+	"owner": "postgres",
+        "basensp": "public",
+        "description": "test_comment",
+        "basetype": "text",
+	"collname": "pg_catalog.\"C\"",
+        "typdefault": "5",
+        "typnotnull": "true",
+        "constraints": [{
+	  "conname": "constraint_1",
+	  "consrc": "3 < 5",
+	  "convalidated": true
+	  }, {
+	  "conname": "constraint_2",
+	  "consrc": "4 < 2",
+	  "convalidated": false
+	}],
+	"seclabels": []
+      },
+      "expected_sql_file": "create_domain.sql",
+      "expected_msql_file": "msql_create_domain.sql"
+    }, {
+      "type": "alter",
+      "name": "Alter domain comment",
+      "endpoint": "NODE-domain.obj_id",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql_id",
+      "data": {
+        "description": "test updated domain comment"
+      },
+      "expected_sql_file": "alter_domain_comment.sql",
+      "expected_msql_file": "msql_alter_domain_comment.sql"
+    }, {
+      "type": "alter",
+      "name": "Alter domain null type",
+      "endpoint": "NODE-domain.obj_id",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql_id",
+      "data": {
+        "typnotnull": "false"
+      },
+      "expected_sql_file": "alter_domain_null_type.sql",
+      "expected_msql_file": "msql_alter_domain_null_type.sql"
+    }, {
+      "type": "alter",
+      "name": "Alter domain default expression",
+      "endpoint": "NODE-domain.obj_id",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql_id",
+      "data": {
+        "typdefault": "3"
+      },
+      "expected_sql_file": "alter_domain_default_expression.sql",
+      "expected_msql_file": "msql_alter_domain_default_expression.sql"
+    }, {
+      "type": "alter",
+      "name": "Alter domain name",
+      "endpoint": "NODE-domain.obj_id",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql_id",
+      "data": {
+        "name": "Dom2_$%{}[]()&*^!@\"'`\\/#"
+      },
+      "expected_sql_file": "alter_domain_name.sql",
+      "expected_msql_file": "msql_alter_domain_name.sql"
+    }, {
+      "type": "delete",
+      "name": "Drop domain of text data type",
+      "endpoint": "NODE-domain.delete_id",
+      "data": {
+        "name": "Dom2_$%{}[]()&*^!@\"'`\\/#"
+      }
+    }, {
+      "type": "create",
+      "name": "Create Domain with numeric data type",
+      "endpoint": "NODE-domain.obj",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql",
+      "data": {
+        "name": "Dom1_$%{}[]()&*^!@\"'`\\/#",
+        "schema": "public",
+        "schema_id": "<SCHEMA_ID>",
+	"owner": "postgres",
+        "basensp": "public",
+        "description": "test_comment",
+        "basetype": "numeric",
+        "typlen": 5,
+        "precision": 2,
+        "typdefault": "3",
+        "typnotnull": "true",
+        "seclabels": []
+      },
+      "expected_sql_file": "create_domain_numeric.sql",
+      "expected_msql_file": "msql_create_domain_numeric.sql"
+    }, {
+      "type": "delete",
+      "name": "Drop domain of numeric data type",
+      "endpoint": "NODE-domain.delete_id",
+      "data": {
+        "name": "Dom2_$%{}[]()&*^!@\"'`\\/#"
+      }
+    }
+  ]
+}
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_comment.sql
new file mode 100644
index 000000000..4e430fc64
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_comment.sql
@@ -0,0 +1,20 @@
+-- DOMAIN: public."Dom1_$%{}[]()&*^!@""'`\/#"
+
+-- DROP DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#";
+
+CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    AS text
+    COLLATE pg_catalog."C"
+    DEFAULT 5
+    NOT NULL;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO enterprisedb;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
+
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test updated domain comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_default_expression.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_default_expression.sql
new file mode 100644
index 000000000..d6df44a8d
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_default_expression.sql
@@ -0,0 +1,19 @@
+-- DOMAIN: public."Dom1_$%{}[]()&*^!@""'`\/#"
+
+-- DROP DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#";
+
+CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    AS text
+    COLLATE pg_catalog."C"
+    DEFAULT 3;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO enterprisedb;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
+
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test updated domain comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_name.sql
new file mode 100644
index 000000000..dde706dae
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_name.sql
@@ -0,0 +1,19 @@
+-- DOMAIN: public."Dom2_$%{}[]()&*^!@""'`\/#"
+
+-- DROP DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#";
+
+CREATE DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#"
+    AS text
+    COLLATE pg_catalog."C"
+    DEFAULT 3;
+
+ALTER DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#" OWNER TO enterprisedb;
+
+ALTER DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
+
+COMMENT ON DOMAIN public."Dom2_$%{}[]()&*^!@""'`\/#"
+    IS 'test updated domain comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_null_type.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_null_type.sql
new file mode 100644
index 000000000..3ac89e3df
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/alter_domain_null_type.sql
@@ -0,0 +1,19 @@
+-- DOMAIN: public."Dom1_$%{}[]()&*^!@""'`\/#"
+
+-- DROP DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#";
+
+CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    AS text
+    COLLATE pg_catalog."C"
+    DEFAULT 5;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO enterprisedb;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
+
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test updated domain comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/create_domain.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/create_domain.sql
new file mode 100644
index 000000000..ba9c72f09
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/create_domain.sql
@@ -0,0 +1,20 @@
+-- DOMAIN: public."Dom1_$%{}[]()&*^!@""'`\/#"
+
+-- DROP DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#";
+
+CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    AS text
+    COLLATE pg_catalog."C"
+    DEFAULT 5
+    NOT NULL;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO enterprisedb;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
+
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test_comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/create_domain_numeric.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/create_domain_numeric.sql
new file mode 100644
index 000000000..2462f685e
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/create_domain_numeric.sql
@@ -0,0 +1,13 @@
+-- DOMAIN: public."Dom1_$%{}[]()&*^!@""'`\/#"
+
+-- DROP DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#";
+
+CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    AS numeric(5,2)
+    DEFAULT 3
+    NOT NULL;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO enterprisedb;
+
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test_comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_comment.sql
new file mode 100644
index 000000000..8a4fb8644
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_comment.sql
@@ -0,0 +1,2 @@
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test updated domain comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_default_expression.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_default_expression.sql
new file mode 100644
index 000000000..4321f7b56
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_default_expression.sql
@@ -0,0 +1,2 @@
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    SET DEFAULT 3;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_name.sql
new file mode 100644
index 000000000..51a634176
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_name.sql
@@ -0,0 +1,2 @@
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    RENAME TO "Dom2_$%{}[]()&*^!@""'`\/#";
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_null_type.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_null_type.sql
new file mode 100644
index 000000000..190e94b47
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_alter_domain_null_type.sql
@@ -0,0 +1,2 @@
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    DROP NOT NULL;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_create_domain.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_create_domain.sql
new file mode 100644
index 000000000..6eb5affcb
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_create_domain.sql
@@ -0,0 +1,16 @@
+CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    AS text
+    COLLATE pg_catalog."C"
+    DEFAULT 5
+    NOT NULL;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO enterprisedb;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_1 CHECK (3 < 5);
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    ADD CONSTRAINT constraint_2 CHECK (4 < 2) NOT VALID;
+
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test_comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_create_domain_numeric.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_create_domain_numeric.sql
new file mode 100644
index 000000000..bd21ebc38
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/msql_create_domain_numeric.sql
@@ -0,0 +1,9 @@
+CREATE DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    AS numeric(5,2)
+    DEFAULT 3
+    NOT NULL;
+
+ALTER DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#" OWNER TO enterprisedb;
+
+COMMENT ON DOMAIN public."Dom1_$%{}[]()&*^!@""'`\/#"
+    IS 'test_comment';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/test.json
new file mode 100644
index 000000000..4c6344d92
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/ppas/default/test.json
@@ -0,0 +1,114 @@
+{
+  "scenarios": [{
+      "type": "create",
+      "name": "Create Domain with all options",
+      "endpoint": "NODE-domain.obj",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql",
+      "data": {
+	"name": "Dom1_$%{}[]()&*^!@\"'`\\/#",
+	"schema": "public",
+        "schema_id": "<SCHEMA_ID>",
+	"owner": "enterprisedb",
+        "basensp": "public",
+        "description": "test_comment",
+        "basetype": "text",
+	"collname": "pg_catalog.\"C\"",
+        "typdefault": "5",
+        "typnotnull": "true",
+        "constraints": [{
+	  "conname": "constraint_1",
+	  "consrc": "3 < 5",
+	  "convalidated": true
+	  }, {
+	  "conname": "constraint_2",
+	  "consrc": "4 < 2",
+	  "convalidated": false
+	}],
+	"seclabels": []
+      },
+      "expected_sql_file": "create_domain.sql",
+      "expected_msql_file": "msql_create_domain.sql"
+    }, {
+      "type": "alter",
+      "name": "Alter domain comment",
+      "endpoint": "NODE-domain.obj_id",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql_id",
+      "data": {
+        "description": "test updated domain comment"
+      },
+      "expected_sql_file": "alter_domain_comment.sql",
+      "expected_msql_file": "msql_alter_domain_comment.sql"
+    }, {
+      "type": "alter",
+      "name": "Alter domain null type",
+      "endpoint": "NODE-domain.obj_id",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql_id",
+      "data": {
+        "typnotnull": "false"
+      },
+      "expected_sql_file": "alter_domain_null_type.sql",
+      "expected_msql_file": "msql_alter_domain_null_type.sql"
+    }, {
+      "type": "alter",
+      "name": "Alter domain default expression",
+      "endpoint": "NODE-domain.obj_id",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql_id",
+      "data": {
+        "typdefault": "3"
+      },
+      "expected_sql_file": "alter_domain_default_expression.sql",
+      "expected_msql_file": "msql_alter_domain_default_expression.sql"
+    }, {
+      "type": "alter",
+      "name": "Alter domain name",
+      "endpoint": "NODE-domain.obj_id",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql_id",
+      "data": {
+        "name": "Dom2_$%{}[]()&*^!@\"'`\\/#"
+      },
+      "expected_sql_file": "alter_domain_name.sql",
+      "expected_msql_file": "msql_alter_domain_name.sql"
+    }, {
+      "type": "delete",
+      "name": "Drop domain of text data type",
+      "endpoint": "NODE-domain.delete_id",
+      "data": {
+        "name": "Dom2_$%{}[]()&*^!@\"'`\\/#"
+      }
+    }, {
+      "type": "create",
+      "name": "Create Domain with numeric data type",
+      "endpoint": "NODE-domain.obj",
+      "sql_endpoint": "NODE-domain.sql_id",
+      "msql_endpoint": "NODE-domain.msql",
+      "data": {
+        "name": "Dom1_$%{}[]()&*^!@\"'`\\/#",
+        "schema": "public",
+        "schema_id": "<SCHEMA_ID>",
+	"owner": "enterprisedb",
+        "basensp": "public",
+        "description": "test_comment",
+        "basetype": "numeric",
+        "typlen": 5,
+        "precision": 2,
+        "typdefault": "3",
+        "typnotnull": "true",
+        "seclabels": []
+      },
+      "expected_sql_file": "create_domain_numeric.sql",
+      "expected_msql_file": "msql_create_domain_numeric.sql"
+    }, {
+      "type": "delete",
+      "name": "Drop domain of numeric data type",
+      "endpoint": "NODE-domain.delete_id",
+      "data": {
+        "name": "Dom2_$%{}[]()&*^!@\"'`\\/#"
+      }
+    }
+  ]
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.