diff --git a/docs/en_US/release_notes_4_13.rst b/docs/en_US/release_notes_4_13.rst index bbc94bcfb..3630d2f2a 100644 --- a/docs/en_US/release_notes_4_13.rst +++ b/docs/en_US/release_notes_4_13.rst @@ -16,6 +16,7 @@ New features Housekeeping ************ +| `Issue #4576 `_ - Add Reverse Engineered SQL tests for Views. | `Issue #4600 `_ - Add Reverse Engineered SQL tests for Rules. Bug fixes @@ -25,6 +26,7 @@ Bug fixes | `Issue #2828 `_ - Added Gather Merge, Named Tuple Store Scan and Table Function Scan icon for explain module. | `Issue #3778 `_ - Ensure Boolean columns should be editable using keyboard keys. | `Issue #4419 `_ - Fix a debugger error when using Python 2.7. +| `Issue #4486 `_ - Ensure View should be created with special characters. | `Issue #4487 `_ - Ensure Boolean columns should be editable in View/Edit data and Query Tool. | `Issue #4577 `_ - Fix an error that could be seen when click on any system column of a table. | `Issue #4584 `_ - Unescape HTML entities in database names in the Query Tool title bar. diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.1_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.1_plus/sql/view_id.sql index 64181cd64..4916e090f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.1_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.1_plus/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_class c LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; +WHERE c.relname = {{ data.name |qtLiteral }} and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/create.sql index 8d5f729f4..3e04ea1d2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/create.sql @@ -6,9 +6,9 @@ {% endif %} {% if data.name and data.schema and data.definition %} -CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }}{% if (data.security_barrier) %}{{'\r'}} +CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }}{% if (data.security_barrier) %} WITH ( -{% if data.security_barrier %} security_barrier={{ data.security_barrier|lower }}{% endif %}{{'\r'}} +{% if data.security_barrier %} security_barrier={{ data.security_barrier|lower }}{% endif %} ){% endif %} AS {{ data.definition.rstrip(';') }}; {% if data.owner %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/view_id.sql index 64181cd64..4916e090f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_class c LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; +WHERE c.relname = {{ data.name |qtLiteral }} and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/create.sql index d1eec0860..e5068b256 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/create.sql @@ -6,9 +6,9 @@ {% endif %} {% if data.name and data.schema and data.definition %} -CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }}{% if (data.security_barrier) %}{{'\r'}} +CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }}{% if (data.security_barrier) %} WITH ( -{% if data.security_barrier %} security_barrier={{ data.security_barrier|lower }}{% endif %}{{'\r'}} +{% if data.security_barrier %} security_barrier={{ data.security_barrier|lower }}{% endif %} ){% endif %} AS {{ data.definition.rstrip(';') }}; {% if data.owner %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/view_id.sql index 64181cd64..4916e090f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_class c LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; +WHERE c.relname = {{ data.name |qtLiteral }} and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/create.sql index b43b51984..3d8ae374c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/create.sql @@ -6,8 +6,14 @@ {% endif %} {% if data.name and data.schema and data.definition %} -CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }}{% if ((data.check_option and data.check_option.lower() != 'no') or data.security_barrier) %}{{ '\n' }}WITH ( -{% if data.check_option and data.check_option.lower() != 'no' %} check_option={{ data.check_option }}{% endif %}{{ ',\r' if data.check_option and data.check_option.lower() != 'no' and data.security_barrier }}{% if data.security_barrier %} security_barrier={{ data.security_barrier|lower }}{% endif %}{{'\r'}} +CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }} +{% if ((data.check_option and data.check_option.lower() != 'no') or data.security_barrier) %} +WITH ({% if data.check_option and data.check_option.lower() != 'no' %} + + check_option={{ data.check_option }}{% endif %}{{ ',' if data.check_option and data.check_option.lower() != 'no' and data.security_barrier }} +{% if data.security_barrier %} + security_barrier={{ data.security_barrier|lower }} +{% endif %} ){% endif %} AS {{ data.definition.rstrip(';') }}; {% if data.owner and data.m_view is undefined %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/view_id.sql index 64181cd64..4916e090f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_class c LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; +WHERE c.relname = {{ data.name |qtLiteral }} and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.1_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.1_plus/sql/view_id.sql index 64181cd64..445047489 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.1_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.1_plus/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_class c LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; +WHERE c.relname = {{ data.name|qtLiteral }} and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/create.sql index d1eec0860..e5068b256 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/create.sql @@ -6,9 +6,9 @@ {% endif %} {% if data.name and data.schema and data.definition %} -CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }}{% if (data.security_barrier) %}{{'\r'}} +CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }}{% if (data.security_barrier) %} WITH ( -{% if data.security_barrier %} security_barrier={{ data.security_barrier|lower }}{% endif %}{{'\r'}} +{% if data.security_barrier %} security_barrier={{ data.security_barrier|lower }}{% endif %} ){% endif %} AS {{ data.definition.rstrip(';') }}; {% if data.owner %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/view_id.sql index 64181cd64..445047489 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_class c LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; +WHERE c.relname = {{ data.name|qtLiteral }} and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/create.sql index d1eec0860..e5068b256 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/create.sql @@ -6,9 +6,9 @@ {% endif %} {% if data.name and data.schema and data.definition %} -CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }}{% if (data.security_barrier) %}{{'\r'}} +CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }}{% if (data.security_barrier) %} WITH ( -{% if data.security_barrier %} security_barrier={{ data.security_barrier|lower }}{% endif %}{{'\r'}} +{% if data.security_barrier %} security_barrier={{ data.security_barrier|lower }}{% endif %} ){% endif %} AS {{ data.definition.rstrip(';') }}; {% if data.owner %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/view_id.sql index 64181cd64..445047489 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_class c LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; +WHERE c.relname = {{ data.name|qtLiteral }} and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/create.sql index b43b51984..3d8ae374c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/create.sql @@ -6,8 +6,14 @@ {% endif %} {% if data.name and data.schema and data.definition %} -CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }}{% if ((data.check_option and data.check_option.lower() != 'no') or data.security_barrier) %}{{ '\n' }}WITH ( -{% if data.check_option and data.check_option.lower() != 'no' %} check_option={{ data.check_option }}{% endif %}{{ ',\r' if data.check_option and data.check_option.lower() != 'no' and data.security_barrier }}{% if data.security_barrier %} security_barrier={{ data.security_barrier|lower }}{% endif %}{{'\r'}} +CREATE OR REPLACE VIEW {{ conn|qtIdent(data.schema, data.name) }} +{% if ((data.check_option and data.check_option.lower() != 'no') or data.security_barrier) %} +WITH ({% if data.check_option and data.check_option.lower() != 'no' %} + + check_option={{ data.check_option }}{% endif %}{{ ',' if data.check_option and data.check_option.lower() != 'no' and data.security_barrier }} +{% if data.security_barrier %} + security_barrier={{ data.security_barrier|lower }} +{% endif %} ){% endif %} AS {{ data.definition.rstrip(';') }}; {% if data.owner and data.m_view is undefined %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/view_id.sql index 64181cd64..a6d9b0b2e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_class c LEFT OUTER JOIN pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = '{{ data.name }}' and nsp.nspname = '{{ data.schema }}'; +WHERE c.relname = {{ data.name|qtLiteral }} and nsp.nspname = '{{ data.schema}}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_view.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_view.sql new file mode 100644 index 000000000..47542ab90 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_view.sql @@ -0,0 +1,20 @@ +-- View: public."testview_$%{}[]()&*^!@""'`\/#" + +-- DROP VIEW public."testview_$%{}[]()&*^!@""'`\/#"; + +CREATE OR REPLACE VIEW public."testview_$%{}[]()&*^!@""'`\/#" +WITH ( + check_option=cascaded, + security_barrier=true +) AS + SELECT test_view_table.col1 + FROM test_view_table; + +ALTER TABLE public."testview_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; +COMMENT ON VIEW public."testview_$%{}[]()&*^!@""'`\/#" + IS 'Testcomment-updated'; + +GRANT ALL ON TABLE public."testview_$%{}[]()&*^!@""'`\/#" TO postgres; + + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/create_view.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/create_view.sql new file mode 100644 index 000000000..a1901611a --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/create_view.sql @@ -0,0 +1,17 @@ +-- View: public."testview_$%{}[]()&*^!@""'`\/#" + +-- DROP VIEW public."testview_$%{}[]()&*^!@""'`\/#"; + +CREATE OR REPLACE VIEW public."testview_$%{}[]()&*^!@""'`\/#" +WITH ( + check_option=local +) AS + SELECT test_view_table.col1 + FROM test_view_table; + +ALTER TABLE public."testview_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; +COMMENT ON VIEW public."testview_$%{}[]()&*^!@""'`\/#" + IS 'Testcomment'; + +GRANT ALL ON TABLE public."testview_$%{}[]()&*^!@""'`\/#" TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/tests.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/tests.json new file mode 100644 index 000000000..864ae34d1 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/tests.json @@ -0,0 +1,78 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create Table for Views", + "endpoint": "NODE-table.obj", + "sql_endpoint": "NODE-table.sql_id", + "data": { + "name": "test_view_table", + "check_constraint": [], + "coll_inherits": "[]", + "columns": [ + { + "name": "col1", + "cltype": "integer" + } + ], + "schema": "public" + } + }, + { + "type": "create", + "name": "Create View", + "endpoint": "NODE-view.obj", + "sql_endpoint": "NODE-view.sql_id", + "data": { + "definition": "select col1 from test_view_table;", + "name": "testview_$%{}[]()&*^!@\"'`\\/#", + "owner": "postgres", + "schema": "public", + "check_option": "local", + "security_barrier": false, + "comment":"Testcomment", + "datacl":[{"grantee":"postgres", "grantor":"postgres", "privileges":[{"privilege_type": "a", "privilege": true, + "with_grant":false}]}] + }, + "expected_sql_file": "create_view.sql" + }, + { + "type": "alter", + "name": "Alter View", + "endpoint": "NODE-view.obj_id", + "sql_endpoint": "NODE-view.sql_id", + "data": { + "definition": "select col1 from test_view_table;", + "name": "testview_$%{}[]()&*^!@\"'`\\/#", + "owner": "postgres", + "schema": "public", + "check_option": "cascaded", + "security_barrier": true, + "comment":"Testcomment-updated", + "datacl":[{"grantee":"postgres", "grantor":"postgres", "privileges":[{"privilege_type": "a", "privilege": true, + "with_grant":false}]}] + }, + "expected_sql_file": "alter_view.sql" + }, + { + "type": "delete", + "name": "Drop View", + "endpoint": "NODE-view.obj_id", + "data": { + "name": "testview_$%{}[]()&*^!@\"'`\\/#", + "owner": "postgres", + "schema": "public" + } + }, + { + "type": "delete", + "name": "Drop Table for view", + "endpoint": "NODE-table.obj_id", + "data": { + "name": "test_view_table", + "owner": "postgres", + "schema": "public" + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_view.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_view.sql new file mode 100644 index 000000000..6d33e6400 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_view.sql @@ -0,0 +1,18 @@ +-- View: public."testview1_$%{}[]()&*^!@""'`\/#" + +-- DROP VIEW public."testview1_$%{}[]()&*^!@""'`\/#"; + +CREATE OR REPLACE VIEW public."testview1_$%{}[]()&*^!@""'`\/#" +WITH ( + check_option=cascaded, + security_barrier=true +) AS + SELECT test_view_table.col1 + FROM test_view_table; + +ALTER TABLE public."testview1_$%{}[]()&*^!@""'`\/#" + OWNER TO enterprisedb; +COMMENT ON VIEW public."testview1_$%{}[]()&*^!@""'`\/#" + IS 'Testcomment-updated'; + +GRANT ALL ON TABLE public."testview1_$%{}[]()&*^!@""'`\/#" TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/create_view.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/create_view.sql new file mode 100644 index 000000000..37a68a320 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/create_view.sql @@ -0,0 +1,21 @@ +-- View: public."testview_$%{}[]()&*^!@""'`\/#" + +-- DROP VIEW public."testview_$%{}[]()&*^!@""'`\/#"; + +CREATE OR REPLACE VIEW public."testview_$%{}[]()&*^!@""'`\/#" +WITH ( + check_option=local +) AS + SELECT test_view_table.col1 + FROM test_view_table; + +ALTER TABLE public."testview_$%{}[]()&*^!@""'`\/#" + OWNER TO enterprisedb; +COMMENT ON VIEW public."testview_$%{}[]()&*^!@""'`\/#" + IS 'Testcomment'; + +GRANT ALL ON TABLE public."testview_$%{}[]()&*^!@""'`\/#" TO enterprisedb; + + + + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/tests.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/tests.json new file mode 100644 index 000000000..ce9aa5d65 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/tests.json @@ -0,0 +1,76 @@ +{ + "scenarios": [{ + "type": "create", + "name": "Create Table for Views", + "endpoint": "NODE-table.obj", + "sql_endpoint": "NODE-table.sql_id", + "data":{ + "name":"test_view_table", + "check_constraint": [], + "coll_inherits": "[]", + "columns": [ + { + "name": "col1", + "cltype": "integer" + } + ], + "schema": "public" + } + }, + { + "type": "create", + "name": "Create View", + "endpoint": "NODE-view.obj", + "sql_endpoint": "NODE-view.sql_id", + "data": { + "datacl":[{"grantee":"enterprisedb", "grantor":"enterprisedb", "privileges":[{"privilege_type": "a", "privilege": true, "with_grant": + false}]}], + "definition": "select col1 from test_view_table;", + "name": "testview_$%{}[]()&*^!@\"'`\\/#", + "owner": "enterprisedb", + "schema": "public", + "check_option": "local", + "security_barrier": false, + "comment":"Testcomment" + }, + "expected_sql_file": "create_view.sql" + }, + { + "type": "alter", + "name": "Alter View", + "endpoint": "NODE-view.obj_id", + "sql_endpoint": "NODE-view.sql_id", + "data": { + "definition": "select col1 from test_view_table;", + "name": "testview1_$%{}[]()&*^!@\"'`\\/#", + "owner": "enterprisedb", + "schema": "public", + "check_option": "cascaded", + "security_barrier": true, + "comment":"Testcomment-updated", + "datacl":[{"grantee":"enterprisedb", "grantor":"enterprisedb", "privileges":[{"privilege_type": "a", "privilege": false, + "with_grant":false}]}] + }, + "expected_sql_file": "alter_view.sql" + }, + { + "type": "delete", + "name": "Drop View", + "endpoint": "NODE-view.obj_id", + "data": { + "name": "testview1_$%{}[]()&*^!@\"'`\\/#", + "owner": "enterprisedb", + "schema": "public" + } + }, + { + "type": "delete", + "name": "Drop Table for Views", + "endpoint": "NODE-table.obj_id", + "data": { + "name": "test_view_table", + "owner": "enterprisedb", + "schema": "public" + } + }] +}