diff --git a/docs/en_US/release_notes_4_11.rst b/docs/en_US/release_notes_4_11.rst index 51d52eaff..f5efd0cb7 100644 --- a/docs/en_US/release_notes_4_11.rst +++ b/docs/en_US/release_notes_4_11.rst @@ -12,6 +12,7 @@ New features | `Feature #4335 `_ - Add EXPLAIN options for SETTINGS and SUMMARY. | `Feature #4415 `_ - Add Reverse Engineered SQL tests for Roles and Resource Groups. | `Feature #4318 `_ - Set the mouse cursor appropriately based on the layout lock state. +| `Feature #4441 `_ - Add Reverse Engineered SQL tests for FDWs. Bug fixes ********* diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_change_opt2.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_change_opt2.sql new file mode 100644 index 000000000..eee2f8b4d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_change_opt2.sql @@ -0,0 +1,12 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OPTIONS (opt1 'val1', opt2 'valopt2'); + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_comment.sql new file mode 100644 index 000000000..5efdd18cb --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_comment.sql @@ -0,0 +1,11 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#"; + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_opt1.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_opt1.sql new file mode 100644 index 000000000..e1e9b637d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_opt1.sql @@ -0,0 +1,12 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OPTIONS (opt1 'val1'); + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_opt2.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_opt2.sql new file mode 100644 index 000000000..b0c5b8844 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_opt2.sql @@ -0,0 +1,12 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OPTIONS (opt1 'val1', opt2 'val2'); + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_rename.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_rename.sql new file mode 100644 index 000000000..1e8897fe6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_rename.sql @@ -0,0 +1,13 @@ +-- Foreign Data Wrapper: Fdw2_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw2_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw2_$%{}[]()&*^!@""'`\/#" + VALIDATOR pg_catalog.postgresql_fdw_validator + OPTIONS (opt1 'val1'); + +ALTER FOREIGN DATA WRAPPER "Fdw2_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw2_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_validator.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_validator.sql new file mode 100644 index 000000000..54025dfba --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/alter_fdw_validator.sql @@ -0,0 +1,13 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + VALIDATOR pg_catalog.postgresql_fdw_validator + OPTIONS (opt1 'val1'); + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/create_fdw.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/create_fdw.sql new file mode 100644 index 000000000..4776beff3 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/create_fdw.sql @@ -0,0 +1,8 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#"; + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/test.json b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/test.json new file mode 100644 index 000000000..21501b4a2 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/9.3_plus/test.json @@ -0,0 +1,104 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create FDW", + "endpoint": "NODE-foreign_data_wrapper.obj", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "name": "Fdw1_$%{}[]()&*^!@\"'`\\/#", + "fdwowner": "postgres", + "fdwacl": [], + "fdwoptions": [] + }, + "expected_sql_file": "create_fdw.sql" + },{ + "type": "alter", + "name": "Alter FDW add comment", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "description": "a comment" + }, + "expected_sql_file": "alter_fdw_comment.sql" + },{ + "type": "alter", + "name": "Alter FDW add option 1", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "fdwoptions": { + "added": [{ + "fdwoption": "opt1", + "fdwvalue": "val1" + }] + } + }, + "expected_sql_file": "alter_fdw_opt1.sql" + },{ + "type": "alter", + "name": "Alter FDW add option 2", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "fdwoptions": { + "added": [{ + "fdwoption": "opt2", + "fdwvalue": "val2" + }] + } + }, + "expected_sql_file": "alter_fdw_opt2.sql" + },{ + "type": "alter", + "name": "Alter FDW change option 2 value", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "fdwoptions": { + "changed": [{ + "fdwoption": "opt2", + "fdwvalue": "valopt2" + }] + } + }, + "expected_sql_file": "alter_fdw_change_opt2.sql" + },{ + "type": "alter", + "name": "Alter FDW remove option 2", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "fdwoptions": { + "deleted": [{ + "fdwoption": "opt2", + "fdwvalue": "valopt2" + }] + } + }, + "expected_sql_file": "alter_fdw_opt1.sql" + },{ + "type": "alter", + "name": "Alter FDW add validator", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "fdwvalue": "pg_catalog.postgresql_fdw_validator" + }, + "expected_sql_file": "alter_fdw_validator.sql" + },{ + "type": "alter", + "name": "Alter FDW rename", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "name": "Fdw2_$%{}[]()&*^!@\"'`\\/#" + }, + "expected_sql_file": "alter_fdw_rename.sql" + },{ + "type": "delete", + "name": "Drop FDW", + "endpoint": "NODE-foreign_data_wrapper.delete_id" + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_change_opt2.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_change_opt2.sql new file mode 100644 index 000000000..eee2f8b4d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_change_opt2.sql @@ -0,0 +1,12 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OPTIONS (opt1 'val1', opt2 'valopt2'); + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_comment.sql new file mode 100644 index 000000000..5efdd18cb --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_comment.sql @@ -0,0 +1,11 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#"; + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_opt1.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_opt1.sql new file mode 100644 index 000000000..e1e9b637d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_opt1.sql @@ -0,0 +1,12 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OPTIONS (opt1 'val1'); + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_opt2.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_opt2.sql new file mode 100644 index 000000000..b0c5b8844 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_opt2.sql @@ -0,0 +1,12 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OPTIONS (opt1 'val1', opt2 'val2'); + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_rename.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_rename.sql new file mode 100644 index 000000000..b61fd7a75 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_rename.sql @@ -0,0 +1,13 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""`\/#" + VALIDATOR pg_catalog.postgresql_fdw_validator + OPTIONS (opt1 'val1'); + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_validator.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_validator.sql new file mode 100644 index 000000000..54025dfba --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/alter_fdw_validator.sql @@ -0,0 +1,13 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + VALIDATOR pg_catalog.postgresql_fdw_validator + OPTIONS (opt1 'val1'); + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; + +COMMENT ON FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + IS 'a comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/create_fdw.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/create_fdw.sql new file mode 100644 index 000000000..4776beff3 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/create_fdw.sql @@ -0,0 +1,8 @@ +-- Foreign Data Wrapper: Fdw1_$%{}[]()&*^!@"'`\/# + +-- DROP FOREIGN DATA WRAPPER Fdw1_$%{}[]()&*^!@"'`\/# + +CREATE FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#"; + +ALTER FOREIGN DATA WRAPPER "Fdw1_$%{}[]()&*^!@""'`\/#" + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/test.json b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/test.json new file mode 100644 index 000000000..21501b4a2 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/default/test.json @@ -0,0 +1,104 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create FDW", + "endpoint": "NODE-foreign_data_wrapper.obj", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "name": "Fdw1_$%{}[]()&*^!@\"'`\\/#", + "fdwowner": "postgres", + "fdwacl": [], + "fdwoptions": [] + }, + "expected_sql_file": "create_fdw.sql" + },{ + "type": "alter", + "name": "Alter FDW add comment", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "description": "a comment" + }, + "expected_sql_file": "alter_fdw_comment.sql" + },{ + "type": "alter", + "name": "Alter FDW add option 1", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "fdwoptions": { + "added": [{ + "fdwoption": "opt1", + "fdwvalue": "val1" + }] + } + }, + "expected_sql_file": "alter_fdw_opt1.sql" + },{ + "type": "alter", + "name": "Alter FDW add option 2", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "fdwoptions": { + "added": [{ + "fdwoption": "opt2", + "fdwvalue": "val2" + }] + } + }, + "expected_sql_file": "alter_fdw_opt2.sql" + },{ + "type": "alter", + "name": "Alter FDW change option 2 value", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "fdwoptions": { + "changed": [{ + "fdwoption": "opt2", + "fdwvalue": "valopt2" + }] + } + }, + "expected_sql_file": "alter_fdw_change_opt2.sql" + },{ + "type": "alter", + "name": "Alter FDW remove option 2", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "fdwoptions": { + "deleted": [{ + "fdwoption": "opt2", + "fdwvalue": "valopt2" + }] + } + }, + "expected_sql_file": "alter_fdw_opt1.sql" + },{ + "type": "alter", + "name": "Alter FDW add validator", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "fdwvalue": "pg_catalog.postgresql_fdw_validator" + }, + "expected_sql_file": "alter_fdw_validator.sql" + },{ + "type": "alter", + "name": "Alter FDW rename", + "endpoint": "NODE-foreign_data_wrapper.obj_id", + "sql_endpoint": "NODE-foreign_data_wrapper.sql_id", + "data": { + "name": "Fdw2_$%{}[]()&*^!@\"'`\\/#" + }, + "expected_sql_file": "alter_fdw_rename.sql" + },{ + "type": "delete", + "name": "Drop FDW", + "endpoint": "NODE-foreign_data_wrapper.delete_id" + } + ] +}