From 6c4049f29a36e2193aca786c5f7db5c2fe997939 Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Tue, 6 Oct 2020 17:13:41 +0530 Subject: [PATCH] Added RESQL/MSQL test cases for Functions. Fixes #5395 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Initial patch sent by Nikhil Mohite. --- docs/en_US/release_notes_4_27.rst | 1 + .../functions/pg/sql/11_plus/create.sql | 69 ----- .../functions/pg/sql/12_plus/create.sql | 11 +- .../functions/pg/sql/9.6_plus/create.sql | 7 +- .../functions/ppas/sql/12_plus/create.sql | 23 +- .../functions/ppas/sql/9.6_plus/create.sql | 19 +- .../ppas/sql/9.6_plus/properties.sql | 35 +++ .../functions/ppas/sql/default/acl.sql | 3 +- .../pg/11_plus/alter_function_add_acl.msql | 1 + .../pg/11_plus/alter_function_add_acl.sql | 24 ++ .../11_plus/alter_function_add_parameter.msql | 13 + .../11_plus/alter_function_add_parameter.sql | 20 ++ .../pg/11_plus/alter_function_comment.msql | 2 + .../pg/11_plus/alter_function_comment.sql | 22 ++ .../pg/11_plus/alter_function_delete_acl.msql | 3 + .../pg/11_plus/alter_function_delete_acl.sql | 19 ++ .../alter_function_delete_parameter.msql | 2 + .../alter_function_delete_parameter.sql | 19 ++ .../pg/11_plus/alter_function_rename.msql | 2 + .../pg/11_plus/alter_function_rename.sql | 19 ++ .../tests/pg/11_plus/create_function.msql | 14 + .../tests/pg/11_plus/create_function.sql | 20 ++ .../pg/11_plus/create_function_for_alter.msql | 14 + .../pg/11_plus/create_function_for_alter.sql | 19 ++ .../tests/pg/11_plus/test_function.json | 260 +++++++++++++++++ .../pg/12_plus/alter_function_add_acl.msql | 1 + .../pg/12_plus/alter_function_add_acl.sql | 24 ++ .../12_plus/alter_function_add_parameter.msql | 14 + .../12_plus/alter_function_add_parameter.sql | 20 ++ .../pg/12_plus/alter_function_comment.msql | 2 + .../pg/12_plus/alter_function_comment.sql | 22 ++ .../pg/12_plus/alter_function_delete_acl.msql | 3 + .../pg/12_plus/alter_function_delete_acl.sql | 19 ++ .../alter_function_delete_parameter.msql | 2 + .../alter_function_delete_parameter.sql | 19 ++ .../pg/12_plus/alter_function_rename.msql | 2 + .../pg/12_plus/alter_function_rename.sql | 19 ++ .../tests/pg/12_plus/alter_proc_comment.sql | 15 + .../pg/12_plus/alter_proc_comment_msql.sql | 2 + .../tests/pg/12_plus/alter_proc_param.sql | 16 ++ .../pg/12_plus/alter_proc_param_msql.sql | 2 + .../tests/pg/12_plus/alter_ptrig_comment.sql | 20 ++ .../tests/pg/12_plus/alter_ptrig_set_1.sql | 20 ++ .../tests/pg/12_plus/alter_ptrig_set_2.sql | 22 ++ .../tests/pg/12_plus/alter_ptrig_set_3.sql | 23 ++ .../pg/12_plus/create_event_trigger_full.sql | 26 ++ .../tests/pg/12_plus/create_function.msql | 14 + .../tests/pg/12_plus/create_function.sql | 20 ++ .../pg/12_plus/create_function_for_alter.msql | 14 + .../pg/12_plus/create_function_for_alter.sql | 19 ++ .../tests/pg/12_plus/create_plain_trigger.sql | 17 ++ .../pg/12_plus/create_plain_trigger_full.sql | 27 ++ .../tests/pg/12_plus/create_procedure.sql | 12 + .../tests/pg/12_plus/test_function.json | 260 +++++++++++++++++ .../tests/pg/12_plus/test_procedures.json | 58 ++++ .../pg/12_plus/test_trigger_functions.json | 191 ++++++++++++ .../pg/9.5_plus/alter_function_add_acl.msql | 1 + .../pg/9.5_plus/alter_function_add_acl.sql | 26 ++ .../alter_function_add_parameter.msql | 12 + .../9.5_plus/alter_function_add_parameter.sql | 20 ++ .../pg/9.5_plus/alter_function_comment.msql | 2 + .../pg/9.5_plus/alter_function_comment.sql | 22 ++ .../9.5_plus/alter_function_delete_acl.msql | 3 + .../pg/9.5_plus/alter_function_delete_acl.sql | 19 ++ .../alter_function_delete_parameter.msql | 2 + .../alter_function_delete_parameter.sql | 19 ++ .../pg/9.5_plus/alter_function_rename.msql | 2 + .../pg/9.5_plus/alter_function_rename.sql | 19 ++ .../tests/pg/9.5_plus/alter_ptrig_comment.sql | 20 ++ .../tests/pg/9.5_plus/alter_ptrig_set_1.sql | 20 ++ .../tests/pg/9.5_plus/alter_ptrig_set_2.sql | 22 ++ .../tests/pg/9.5_plus/alter_ptrig_set_3.sql | 23 ++ .../pg/9.5_plus/create_event_trigger_full.sql | 26 ++ .../tests/pg/9.5_plus/create_function.msql | 14 + .../tests/pg/9.5_plus/create_function.sql | 20 ++ .../9.5_plus/create_function_for_alter.msql | 14 + .../pg/9.5_plus/create_function_for_alter.sql | 19 ++ .../pg/9.5_plus/create_plain_trigger.sql | 17 ++ .../pg/9.5_plus/create_plain_trigger_full.sql | 27 ++ .../tests/pg/9.5_plus/test_function.json | 259 +++++++++++++++++ .../pg/9.5_plus/test_trigger_functions.json | 191 ++++++++++++ .../pg/9.6_plus/alter_function_add_acl.msql | 1 + .../pg/9.6_plus/alter_function_add_acl.sql | 24 ++ .../alter_function_add_parameter.msql | 13 + .../9.6_plus/alter_function_add_parameter.sql | 20 ++ .../pg/9.6_plus/alter_function_comment.msql | 2 + .../pg/9.6_plus/alter_function_comment.sql | 22 ++ .../9.6_plus/alter_function_delete_acl.msql | 3 + .../pg/9.6_plus/alter_function_delete_acl.sql | 19 ++ .../alter_function_delete_parameter.msql | 2 + .../alter_function_delete_parameter.sql | 19 ++ .../pg/9.6_plus/alter_function_rename.msql | 2 + .../pg/9.6_plus/alter_function_rename.sql | 19 ++ .../tests/pg/9.6_plus/alter_ptrig_comment.sql | 20 ++ .../tests/pg/9.6_plus/alter_ptrig_set_1.sql | 20 ++ .../tests/pg/9.6_plus/alter_ptrig_set_2.sql | 22 ++ .../tests/pg/9.6_plus/alter_ptrig_set_3.sql | 23 ++ .../pg/9.6_plus/create_event_trigger_full.sql | 26 ++ .../tests/pg/9.6_plus/create_function.msql | 14 + .../tests/pg/9.6_plus/create_function.sql | 20 ++ .../9.6_plus/create_function_for_alter.msql | 14 + .../pg/9.6_plus/create_function_for_alter.sql | 19 ++ .../pg/9.6_plus/create_plain_trigger.sql | 17 ++ .../pg/9.6_plus/create_plain_trigger_full.sql | 27 ++ .../tests/pg/9.6_plus/test_function.json | 260 +++++++++++++++++ .../pg/9.6_plus/test_trigger_functions.json | 191 ++++++++++++ .../ppas/11_plus/alter_function_add_acl.msql | 3 + .../ppas/11_plus/alter_function_add_acl.sql | 24 ++ .../11_plus/alter_function_add_parameter.msql | 13 + .../11_plus/alter_function_add_parameter.sql | 20 ++ .../ppas/11_plus/alter_function_comment.msql | 2 + .../ppas/11_plus/alter_function_comment.sql | 22 ++ .../11_plus/alter_function_delete_acl.msql | 3 + .../11_plus/alter_function_delete_acl.sql | 19 ++ .../alter_function_delete_parameter.msql | 2 + .../alter_function_delete_parameter.sql | 19 ++ .../ppas/11_plus/alter_function_rename.msql | 2 + .../ppas/11_plus/alter_function_rename.sql | 19 ++ .../tests/ppas/11_plus/create_function.msql | 14 + .../tests/ppas/11_plus/create_function.sql | 19 ++ .../11_plus/create_function_for_alter.msql | 14 + .../11_plus/create_function_for_alter.sql | 19 ++ .../tests/ppas/11_plus/test_function.json | 272 ++++++++++++++++++ .../ppas/12_plus/alter_function_add_acl.msql | 3 + .../ppas/12_plus/alter_function_add_acl.sql | 24 ++ .../12_plus/alter_function_add_parameter.msql | 13 + .../12_plus/alter_function_add_parameter.sql | 20 ++ .../ppas/12_plus/alter_function_comment.msql | 2 + .../ppas/12_plus/alter_function_comment.sql | 22 ++ .../12_plus/alter_function_delete_acl.msql | 3 + .../12_plus/alter_function_delete_acl.sql | 19 ++ .../alter_function_delete_parameter.msql | 2 + .../alter_function_delete_parameter.sql | 19 ++ .../ppas/12_plus/alter_function_rename.msql | 2 + .../ppas/12_plus/alter_function_rename.sql | 19 ++ .../tests/ppas/12_plus/alter_proc_comment.sql | 15 + .../ppas/12_plus/alter_proc_comment_msql.sql | 2 + .../tests/ppas/12_plus/alter_proc_param.sql | 16 ++ .../ppas/12_plus/alter_proc_param_msql.sql | 2 + .../ppas/12_plus/alter_ptrig_comment.sql | 20 ++ .../tests/ppas/12_plus/alter_ptrig_set_1.sql | 20 ++ .../tests/ppas/12_plus/alter_ptrig_set_2.sql | 22 ++ .../tests/ppas/12_plus/alter_ptrig_set_3.sql | 23 ++ .../12_plus/create_event_trigger_full.sql | 26 ++ .../tests/ppas/12_plus/create_function.msql | 14 + .../tests/ppas/12_plus/create_function.sql | 19 ++ .../12_plus/create_function_for_alter.msql | 14 + .../12_plus/create_function_for_alter.sql | 19 ++ .../ppas/12_plus/create_plain_trigger.sql | 17 ++ .../12_plus/create_plain_trigger_full.sql | 27 ++ .../tests/ppas/12_plus/create_procedure.sql | 12 + .../tests/ppas/12_plus/test_function.json | 272 ++++++++++++++++++ .../tests/ppas/12_plus/test_procedures.json | 58 ++++ .../ppas/12_plus/test_trigger_functions.json | 191 ++++++++++++ .../ppas/9.5_plus/alter_function_add_acl.msql | 3 + .../ppas/9.5_plus/alter_function_add_acl.sql | 24 ++ .../alter_function_add_parameter.msql | 13 + .../9.5_plus/alter_function_add_parameter.sql | 20 ++ .../ppas/9.5_plus/alter_function_comment.msql | 2 + .../ppas/9.5_plus/alter_function_comment.sql | 22 ++ .../9.5_plus/alter_function_delete_acl.msql | 3 + .../9.5_plus/alter_function_delete_acl.sql | 19 ++ .../alter_function_delete_parameter.msql | 2 + .../alter_function_delete_parameter.sql | 19 ++ .../ppas/9.5_plus/alter_function_rename.msql | 2 + .../ppas/9.5_plus/alter_function_rename.sql | 19 ++ .../tests/ppas/9.5_plus/create_function.msql | 14 + .../tests/ppas/9.5_plus/create_function.sql | 19 ++ .../9.5_plus/create_function_for_alter.msql | 14 + .../9.5_plus/create_function_for_alter.sql | 19 ++ .../tests/ppas/9.5_plus/test_function.json | 271 +++++++++++++++++ .../ppas/9.6_plus/alter_function_add_acl.msql | 3 + .../ppas/9.6_plus/alter_function_add_acl.sql | 24 ++ .../alter_function_add_parameter.msql | 13 + .../9.6_plus/alter_function_add_parameter.sql | 20 ++ .../ppas/9.6_plus/alter_function_comment.msql | 2 + .../ppas/9.6_plus/alter_function_comment.sql | 22 ++ .../9.6_plus/alter_function_delete_acl.msql | 3 + .../9.6_plus/alter_function_delete_acl.sql | 19 ++ .../alter_function_delete_parameter.msql | 2 + .../alter_function_delete_parameter.sql | 19 ++ .../ppas/9.6_plus/alter_function_rename.msql | 2 + .../ppas/9.6_plus/alter_function_rename.sql | 19 ++ .../tests/ppas/9.6_plus/create_function.msql | 14 + .../tests/ppas/9.6_plus/create_function.sql | 19 ++ .../9.6_plus/create_function_for_alter.msql | 14 + .../9.6_plus/create_function_for_alter.sql | 19 ++ .../tests/ppas/9.6_plus/test_function.json | 272 ++++++++++++++++++ 188 files changed, 5504 insertions(+), 94 deletions(-) delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/create.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.6_plus/properties.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_comment.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_rename.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_rename.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function_for_alter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function_for_alter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/test_function.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_comment.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_rename.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_rename.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_comment_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_param.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_param_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_1.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_2.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_3.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_event_trigger_full.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function_for_alter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function_for_alter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger_full.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_procedure.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_function.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_procedures.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_trigger_functions.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_comment.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_rename.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_rename.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_1.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_2.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_3.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_event_trigger_full.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function_for_alter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function_for_alter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_plain_trigger.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_plain_trigger_full.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_function.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_trigger_functions.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_comment.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_rename.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_rename.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_1.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_2.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_3.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_event_trigger_full.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function_for_alter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function_for_alter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_plain_trigger.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_plain_trigger_full.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_function.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_trigger_functions.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_comment.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_rename.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_rename.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function_for_alter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function_for_alter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/test_function.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_comment.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_rename.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_rename.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_comment_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_param.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_param_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_1.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_2.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_3.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_event_trigger_full.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function_for_alter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function_for_alter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_plain_trigger.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_plain_trigger_full.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_procedure.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_function.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_procedures.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_trigger_functions.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_comment.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_rename.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_rename.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function_for_alter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function_for_alter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/test_function.json create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_comment.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_comment.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_acl.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_acl.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_parameter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_parameter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_rename.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_rename.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function_for_alter.msql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function_for_alter.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_function.json diff --git a/docs/en_US/release_notes_4_27.rst b/docs/en_US/release_notes_4_27.rst index 9efd250b0..95996d6c5 100644 --- a/docs/en_US/release_notes_4_27.rst +++ b/docs/en_US/release_notes_4_27.rst @@ -17,6 +17,7 @@ Housekeeping ************ | `Issue #5330 `_ - Improve code coverage and API test cases for Functions. +| `Issue #5395 `_ - Added RESQL/MSQL test cases for Functions. | `Issue #5497 `_ - Merged the latest code of 'pgcli' used for the autocomplete feature. Bug fixes diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/create.sql deleted file mode 100644 index 77bf6ef9b..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/create.sql +++ /dev/null @@ -1,69 +0,0 @@ -{% import 'macros/functions/security.macros' as SECLABEL %} -{% import 'macros/functions/privilege.macros' as PRIVILEGE %} -{% import 'macros/functions/variable.macros' as VARIABLE %} -{% set is_columns = [] %} -{% set exclude_quoting = ['search_path'] %} -{% if data %} -{% if query_for == 'sql_panel' and func_def is defined %} -CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{func_def}} -{% else %} -CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.arguments %} -{% for p in data.arguments %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname) }} {% endif %}{% if p.argtype %}{{ p.argtype }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %} -{% if not loop.last %}, {% endif %} -{% endfor %} -{% endif -%} -) -{% endif %} - RETURNS{% if data.proretset and (data.prorettypename.startswith('SETOF ') or data.prorettypename.startswith('TABLE')) %} {{ data.prorettypename }} {% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} - - LANGUAGE {{ data.lanname|qtLiteral }} -{% if data.procost %} - - COST {{data.procost}} -{% endif %} - {% if data.provolatile %}{% if data.provolatile == 'i' %}IMMUTABLE{% elif data.provolatile == 's' %}STABLE{% else %}VOLATILE{% endif %} {% endif %}{% if data.proleakproof %}LEAKPROOF {% endif %} -{% if data.proisstrict %}STRICT {% endif %} -{% if data.prosecdef %}SECURITY DEFINER {% endif %} -{% if data.proiswindow %}WINDOW {% endif %} -{% if data.proparallel and (data.proparallel == 'r' or data.proparallel == 's' or data.proparallel == 'u') %} -{% if data.proparallel == 'r' %} PARALLEL RESTRICTED{% elif data.proparallel == 's' %} PARALLEL SAFE {% elif data.proparallel == 'u' %} PARALLEL UNSAFE{% endif %}{% endif %} -{% if data.prorows and (data.prorows | int) > 0 %} - - ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %} - - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} -{% endif %} - -AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} -{% else %} -$BODY${{ data.prosrc }}$BODY${% endif -%}; -{% if data.funcowner %} - -ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - OWNER TO {{ conn|qtIdent(data.funcowner) }}; -{% endif -%} -{% if data.acl %} -{% for p in data.acl %} - -{{ PRIVILEGE.SET(conn, "FUNCTION", p.grantee, data.name, p.without_grant, p.with_grant, data.pronamespace, data.func_args_without)}} -{% endfor %}{% endif %} -{% if data.revoke_all %} - -{{ PRIVILEGE.UNSETALL(conn, "FUNCTION", "PUBLIC", data.name, data.pronamespace, data.func_args_without)}} -{% endif %} -{% if data.description %} - -COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - IS {{ data.description|qtLiteral }}; -{% endif -%} -{% if data.seclabels %} -{% for r in data.seclabels %} -{% if r.label and r.provider %} - -{{ SECLABEL.SET(conn, 'FUNCTION', data.name, r.provider, r.label, data.pronamespace, data.func_args_without) }} -{% endif %} -{% endfor %} -{% endif -%} - -{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql index 565b86f1d..b4f164f9b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql @@ -18,7 +18,6 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con LANGUAGE {{ data.lanname|qtLiteral }} {% if data.procost %} - COST {{data.procost}} {% endif %} {% if data.provolatile %}{% if data.provolatile == 'i' %}IMMUTABLE{% elif data.provolatile == 's' %}STABLE{% else %}VOLATILE{% endif %} {% endif %}{% if data.proleakproof %}LEAKPROOF {% endif %} @@ -26,12 +25,16 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% if data.prosecdef %}SECURITY DEFINER {% endif %} {% if data.proiswindow %}WINDOW {% endif %} {% if data.proparallel and (data.proparallel == 'r' or data.proparallel == 's' or data.proparallel == 'u') %} -{% if data.proparallel == 'r' %} PARALLEL RESTRICTED{% elif data.proparallel == 's' %} PARALLEL SAFE {% elif data.proparallel == 'u' %} PARALLEL UNSAFE{% endif %}{% endif %} +{% if data.proparallel == 'r' %}PARALLEL RESTRICTED {% elif data.proparallel == 's' %}PARALLEL SAFE {% elif data.proparallel == 'u' %}PARALLEL UNSAFE{% endif %}{% endif %} {% if data.prorows and (data.prorows | int) > 0 %} - ROWS {{data.prorows}}{% endif %} + ROWS {{data.prorows}} +{% endif %} +{% if data.prosupportfunc %} - {% if data.prosupportfunc %}SUPPORT {{ data.prosupportfunc }}{% endif -%}{% if data.variables %}{% for v in data.variables %} + SUPPORT {{ data.prosupportfunc }} +{% endif -%} +{% if data.variables %}{% for v in data.variables %} SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/9.6_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/9.6_plus/create.sql index 4fadfb054..f9cbda510 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/9.6_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/9.6_plus/create.sql @@ -18,7 +18,6 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con LANGUAGE {{ data.lanname|qtLiteral }} {% if data.procost %} - COST {{data.procost}} {% endif %} {% if data.provolatile %}{% if data.provolatile == 'i' %}IMMUTABLE{% elif data.provolatile == 's' %}STABLE{% else %}VOLATILE{% endif %} {% endif %}{% if data.proleakproof %}LEAKPROOF {% endif %} @@ -26,10 +25,12 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% if data.prosecdef %}SECURITY DEFINER {% endif %} {% if data.proiswindow %}WINDOW {% endif %} {% if data.proparallel and (data.proparallel == 'r' or data.proparallel == 's' or data.proparallel == 'u') %} -{% if data.proparallel == 'r' %} PARALLEL RESTRICTED{% elif data.proparallel == 's' %} PARALLEL SAFE {% elif data.proparallel == 'u' %} PARALLEL UNSAFE{% endif %}{% endif -%} +{% if data.proparallel == 'r' %}PARALLEL RESTRICTED {% elif data.proparallel == 's' %}PARALLEL SAFE {% elif data.proparallel == 'u' %}PARALLEL UNSAFE{% endif %}{% endif %} {% if data.prorows and (data.prorows | int) > 0 %} - ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %} + ROWS {{data.prorows}} +{% endif %} +{% if data.variables %}{% for v in data.variables %} SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/create.sql index 99b64e38d..b4f164f9b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/create.sql @@ -9,27 +9,32 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{func {% else %} CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.arguments %} {% for p in data.arguments %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname) }} {% endif %}{% if p.argtype %}{{ p.argtype }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %} -{% if not loop.last %},{% endif %} +{% if not loop.last %}, {% endif %} {% endfor %} {% endif -%} - ) -{% endif -%} +) +{% endif %} RETURNS{% if data.proretset and (data.prorettypename.startswith('SETOF ') or data.prorettypename.startswith('TABLE')) %} {{ data.prorettypename }} {% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} LANGUAGE {{ data.lanname|qtLiteral }} +{% if data.procost %} + COST {{data.procost}} +{% endif %} {% if data.provolatile %}{% if data.provolatile == 'i' %}IMMUTABLE{% elif data.provolatile == 's' %}STABLE{% else %}VOLATILE{% endif %} {% endif %}{% if data.proleakproof %}LEAKPROOF {% endif %} {% if data.proisstrict %}STRICT {% endif %} {% if data.prosecdef %}SECURITY DEFINER {% endif %} {% if data.proiswindow %}WINDOW {% endif %} {% if data.proparallel and (data.proparallel == 'r' or data.proparallel == 's' or data.proparallel == 'u') %} -{% if data.proparallel == 'r' %} PARALLEL RESTRICTED{% elif data.proparallel == 's' %} PARALLEL SAFE {% elif data.proparallel == 'u' %} PARALLEL UNSAFE{% endif %}{% endif %} -{% if data.procost %} +{% if data.proparallel == 'r' %}PARALLEL RESTRICTED {% elif data.proparallel == 's' %}PARALLEL SAFE {% elif data.proparallel == 'u' %}PARALLEL UNSAFE{% endif %}{% endif %} +{% if data.prorows and (data.prorows | int) > 0 %} - COST {{data.procost}}{% endif %}{% if data.prorows and (data.prorows | int) > 0 %} + ROWS {{data.prorows}} +{% endif %} +{% if data.prosupportfunc %} - ROWS {{data.prorows}}{% endif %} - - {% if data.prosupportfunc %}SUPPORT {{ data.prosupportfunc }}{% endif -%}{% if data.variables %}{% for v in data.variables %} + SUPPORT {{ data.prosupportfunc }} +{% endif -%} +{% if data.variables %}{% for v in data.variables %} SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.6_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.6_plus/create.sql index fd2383b38..f9cbda510 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.6_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.6_plus/create.sql @@ -9,25 +9,28 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{func {% else %} CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.arguments %} {% for p in data.arguments %}{% if p.argmode %}{{p.argmode}} {% endif %}{% if p.argname %}{{ conn|qtIdent(p.argname) }} {% endif %}{% if p.argtype %}{{ p.argtype }}{% endif %}{% if p.argdefval %} DEFAULT {{p.argdefval}}{% endif %} -{% if not loop.last %},{% endif %} +{% if not loop.last %}, {% endif %} {% endfor %} {% endif -%} - ) -{% endif -%} +) +{% endif %} RETURNS{% if data.proretset and (data.prorettypename.startswith('SETOF ') or data.prorettypename.startswith('TABLE')) %} {{ data.prorettypename }} {% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} LANGUAGE {{ data.lanname|qtLiteral }} +{% if data.procost %} + COST {{data.procost}} +{% endif %} {% if data.provolatile %}{% if data.provolatile == 'i' %}IMMUTABLE{% elif data.provolatile == 's' %}STABLE{% else %}VOLATILE{% endif %} {% endif %}{% if data.proleakproof %}LEAKPROOF {% endif %} {% if data.proisstrict %}STRICT {% endif %} {% if data.prosecdef %}SECURITY DEFINER {% endif %} {% if data.proiswindow %}WINDOW {% endif %} {% if data.proparallel and (data.proparallel == 'r' or data.proparallel == 's' or data.proparallel == 'u') %} -{% if data.proparallel == 'r' %} PARALLEL RESTRICTED{% elif data.proparallel == 's' %} PARALLEL SAFE {% elif data.proparallel == 'u' %} PARALLEL UNSAFE{% endif %}{% endif %} -{% if data.procost %} +{% if data.proparallel == 'r' %}PARALLEL RESTRICTED {% elif data.proparallel == 's' %}PARALLEL SAFE {% elif data.proparallel == 'u' %}PARALLEL UNSAFE{% endif %}{% endif %} +{% if data.prorows and (data.prorows | int) > 0 %} - COST {{data.procost}}{% endif %}{% if data.prorows and (data.prorows | int) > 0 %} - - ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %} + ROWS {{data.prorows}} +{% endif %} +{% if data.variables %}{% for v in data.variables %} SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.6_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.6_plus/properties.sql new file mode 100644 index 000000000..489b6ead6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/9.6_plus/properties.sql @@ -0,0 +1,35 @@ +SELECT + pr.oid, pr.xmin, pr.proiswindow, pr.prosrc, pr.prosrc AS prosrc_c, + pr.pronamespace, pr.prolang, pr.procost, pr.prorows, + pr.prosecdef, pr.proleakproof, pr.proisstrict, pr.proretset, pr.provolatile, pr.proparallel, + pr.pronargs, pr.prorettype, pr.proallargtypes, pr.proargmodes, pr.probin, pr.proacl, + pr.proname, pr.proname AS name, pg_get_function_result(pr.oid) AS prorettypename, + typns.nspname AS typnsp, lanname, proargnames, oidvectortypes(proargtypes) AS proargtypenames, + pg_get_expr(proargdefaults, 'pg_catalog.pg_class'::regclass) AS proargdefaultvals, + pr.pronargdefaults, proconfig, pg_get_userbyid(proowner) AS funcowner, description, + (SELECT + array_agg(provider || '=' || label) + FROM + pg_seclabel sl1 + WHERE + sl1.objoid=pr.oid) AS seclabels +FROM + pg_proc pr +JOIN + pg_type typ ON typ.oid=prorettype +JOIN + pg_namespace typns ON typns.oid=typ.typnamespace +JOIN + pg_language lng ON lng.oid=prolang +LEFT OUTER JOIN + pg_description des ON (des.objoid=pr.oid AND des.classoid='pg_proc'::regclass and des.objsubid = 0) +WHERE + proisagg = FALSE + AND typname NOT IN ('trigger', 'event_trigger') +{% if fnid %} + AND pr.oid = {{fnid}}::oid +{% else %} + AND pronamespace = {{scid}}::oid +{% endif %} +ORDER BY + proname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/acl.sql index ebbbe7d56..822e53b7c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/acl.sql @@ -32,4 +32,5 @@ FROM ) d LEFT JOIN pg_catalog.pg_roles g ON (d.grantor = g.oid) LEFT JOIN pg_catalog.pg_roles gt ON (d.grantee = gt.oid) -GROUP BY g.rolname, gt.rolname; +GROUP BY g.rolname, gt.rolname +ORDER BY grantee diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_acl.msql new file mode 100644 index 000000000..82ce0c5cc --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_acl.msql @@ -0,0 +1 @@ +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_acl.sql new file mode 100644 index 000000000..7509f0cd4 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_acl.sql @@ -0,0 +1,24 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO postgres; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_parameter.msql new file mode 100644 index 000000000..ae35deb48 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_parameter.msql @@ -0,0 +1,13 @@ +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE + PARALLEL UNSAFE + COST 100 + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_parameter.sql new file mode 100644 index 000000000..54fc22de6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_add_parameter.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_comment.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_comment.msql new file mode 100644 index 000000000..12b3a148c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_comment.msql @@ -0,0 +1,2 @@ +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_comment.sql new file mode 100644 index 000000000..ce622e6c0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_comment.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; + +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_acl.msql new file mode 100644 index 000000000..1393bd746 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_acl.msql @@ -0,0 +1,3 @@ +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_acl.sql new file mode 100644 index 000000000..e8db8efb0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_acl.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_parameter.msql new file mode 100644 index 000000000..f21583867 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_parameter.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RESET application_name; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_parameter.sql new file mode 100644 index 000000000..f7624d831 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_delete_parameter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_rename.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_rename.msql new file mode 100644 index 000000000..8ddfca77b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_rename.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RENAME TO "Function3_$%{}[]()&*^!@""'`\/#"; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_rename.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_rename.sql new file mode 100644 index 000000000..7bdf81a3d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/alter_function_rename.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function.msql new file mode 100644 index 000000000..a7595a1f8 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(IN param character varying DEFAULT '1') + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function.sql new file mode 100644 index 000000000..74a4a62a0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function_for_alter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function_for_alter.msql new file mode 100644 index 000000000..a66e41b65 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function_for_alter.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function_for_alter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function_for_alter.sql new file mode 100644 index 000000000..e8db8efb0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/create_function_for_alter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/test_function.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/test_function.json new file mode 100644 index 000000000..43c034d61 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/11_plus/test_function.json @@ -0,0 +1,260 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create function with all options.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function1_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proretset": false, + "proisstrict": true, + "prosecdef": true, + "proiswindow": true, + "proparallel": "u", + "procost": "100", + "prorows": "0", + "proleakproof": true, + "arguments": [ + { + "argtype": "character varying", + "argmode": "IN", + "argname": "param", + "argdefval": "'1'" + } + ], + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function.sql", + "expected_msql_file": "create_function.msql" + }, + { + "type": "alter", + "name": "Alter function comment", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "description": "Some comment" + }, + "expected_sql_file": "alter_function_comment.sql", + "expected_msql_file": "alter_function_comment.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for alter.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function rename.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name":"Function3_$%{}[]()&*^!@\"'`\\/#" + }, + "expected_sql_file": "alter_function_rename.sql", + "expected_msql_file": "alter_function_rename.msql" + }, + { + "type": "alter", + "name": "Alter function code and add parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "prosrc": "begin\nselect '2';\nend\n", + "variables": { + "added": [ + { + "name": "application_name", + "value": "appname" + } + ] + } + }, + "expected_sql_file": "alter_function_add_parameter.sql", + "expected_msql_file": "alter_function_add_parameter.msql" + }, + { + "type": "alter", + "name": "Alter function delete parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "variables": { + "deleted": [ + { + "name": "application_name", + "value": true + } + ] + } + }, + "expected_sql_file": "alter_function_delete_parameter.sql", + "expected_msql_file": "alter_function_delete_parameter.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for acl.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "added": [ + { + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_add_acl.sql", + "expected_msql_file": "alter_function_add_acl.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "deleted": [ + { + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_delete_acl.sql", + "expected_msql_file": "alter_function_delete_acl.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_acl.msql new file mode 100644 index 000000000..82ce0c5cc --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_acl.msql @@ -0,0 +1 @@ +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_acl.sql new file mode 100644 index 000000000..7509f0cd4 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_acl.sql @@ -0,0 +1,24 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO postgres; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_parameter.msql new file mode 100644 index 000000000..2102c333e --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_parameter.msql @@ -0,0 +1,14 @@ +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE + PARALLEL UNSAFE + COST 100 + + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_parameter.sql new file mode 100644 index 000000000..54fc22de6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_add_parameter.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_comment.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_comment.msql new file mode 100644 index 000000000..12b3a148c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_comment.msql @@ -0,0 +1,2 @@ +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_comment.sql new file mode 100644 index 000000000..ce622e6c0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_comment.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; + +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_acl.msql new file mode 100644 index 000000000..1393bd746 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_acl.msql @@ -0,0 +1,3 @@ +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_acl.sql new file mode 100644 index 000000000..e8db8efb0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_acl.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_parameter.msql new file mode 100644 index 000000000..f21583867 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_parameter.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RESET application_name; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_parameter.sql new file mode 100644 index 000000000..f7624d831 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_delete_parameter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_rename.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_rename.msql new file mode 100644 index 000000000..8ddfca77b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_rename.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RENAME TO "Function3_$%{}[]()&*^!@""'`\/#"; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_rename.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_rename.sql new file mode 100644 index 000000000..7bdf81a3d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_function_rename.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_comment.sql new file mode 100644 index 000000000..86eae9aca --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_comment.sql @@ -0,0 +1,15 @@ +-- PROCEDURE: public.Proc1_$%{}[]()&*^!@"'`\/#(integer) + +-- DROP PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer); + +CREATE OR REPLACE PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"( + i1 integer) +LANGUAGE 'plpgsql' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +COMMENT ON PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer) + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_comment_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_comment_msql.sql new file mode 100644 index 000000000..d48fca1bf --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_comment_msql.sql @@ -0,0 +1,2 @@ +COMMENT ON PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer) + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_param.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_param.sql new file mode 100644 index 000000000..4a8b0b176 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_param.sql @@ -0,0 +1,16 @@ +-- PROCEDURE: public.Proc1_$%{}[]()&*^!@"'`\/#(integer) + +-- DROP PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer); + +CREATE OR REPLACE PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"( + i1 integer) +LANGUAGE 'plpgsql' + SET application_name='pgadmin' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +COMMENT ON PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer) + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_param_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_param_msql.sql new file mode 100644 index 000000000..52c0f9c51 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_proc_param_msql.sql @@ -0,0 +1,2 @@ +ALTER PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer) + SET application_name=pgadmin; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_comment.sql new file mode 100644 index 000000000..5f2e770c6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_comment.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + VOLATILE NOT LEAKPROOF +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_1.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_1.sql new file mode 100644 index 000000000..bf4885285 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_1.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + STABLE LEAKPROOF STRICT SECURITY DEFINER +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_2.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_2.sql new file mode 100644 index 000000000..c14baa20a --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_2.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 123 + IMMUTABLE LEAKPROOF STRICT SECURITY DEFINER + SET application_name='appname' + SET search_path=public, pg_temp +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_3.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_3.sql new file mode 100644 index 000000000..7caebc3b7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/alter_ptrig_set_3.sql @@ -0,0 +1,23 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 123 + IMMUTABLE LEAKPROOF STRICT SECURITY DEFINER + SET application_name='appname2' + SET search_path=public, pg_catalog + SET array_nulls='true' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_event_trigger_full.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_event_trigger_full.sql new file mode 100644 index 000000000..1bdbb6e01 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_event_trigger_full.sql @@ -0,0 +1,26 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS SETOF event_trigger + LANGUAGE 'plpgsql' + COST 1234 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + ROWS 4321 + SET application_name='appname' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +GRANT EXECUTE ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() TO postgres WITH GRANT OPTION; + +REVOKE ALL ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function.msql new file mode 100644 index 000000000..a7595a1f8 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(IN param character varying DEFAULT '1') + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function.sql new file mode 100644 index 000000000..74a4a62a0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function_for_alter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function_for_alter.msql new file mode 100644 index 000000000..a66e41b65 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function_for_alter.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function_for_alter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function_for_alter.sql new file mode 100644 index 000000000..e8db8efb0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_function_for_alter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger.sql new file mode 100644 index 000000000..191e59c8e --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger.sql @@ -0,0 +1,17 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + VOLATILE NOT LEAKPROOF +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger_full.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger_full.sql new file mode 100644 index 000000000..3a51119ea --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_plain_trigger_full.sql @@ -0,0 +1,27 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS SETOF trigger + LANGUAGE 'plpgsql' + COST 1234 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + ROWS 4321 + SET application_name='appname' + SET search_path=public, pg_temp +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +GRANT EXECUTE ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() TO postgres WITH GRANT OPTION; + +REVOKE ALL ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_procedure.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_procedure.sql new file mode 100644 index 000000000..c6b648237 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/create_procedure.sql @@ -0,0 +1,12 @@ +-- PROCEDURE: public.Proc1_$%{}[]()&*^!@"'`\/#(integer) + +-- DROP PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer); + +CREATE OR REPLACE PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"( + i1 integer) +LANGUAGE 'plpgsql' +AS $BODY$ +begin +select 1; +end; +$BODY$; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_function.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_function.json new file mode 100644 index 000000000..43c034d61 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_function.json @@ -0,0 +1,260 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create function with all options.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function1_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proretset": false, + "proisstrict": true, + "prosecdef": true, + "proiswindow": true, + "proparallel": "u", + "procost": "100", + "prorows": "0", + "proleakproof": true, + "arguments": [ + { + "argtype": "character varying", + "argmode": "IN", + "argname": "param", + "argdefval": "'1'" + } + ], + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function.sql", + "expected_msql_file": "create_function.msql" + }, + { + "type": "alter", + "name": "Alter function comment", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "description": "Some comment" + }, + "expected_sql_file": "alter_function_comment.sql", + "expected_msql_file": "alter_function_comment.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for alter.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function rename.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name":"Function3_$%{}[]()&*^!@\"'`\\/#" + }, + "expected_sql_file": "alter_function_rename.sql", + "expected_msql_file": "alter_function_rename.msql" + }, + { + "type": "alter", + "name": "Alter function code and add parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "prosrc": "begin\nselect '2';\nend\n", + "variables": { + "added": [ + { + "name": "application_name", + "value": "appname" + } + ] + } + }, + "expected_sql_file": "alter_function_add_parameter.sql", + "expected_msql_file": "alter_function_add_parameter.msql" + }, + { + "type": "alter", + "name": "Alter function delete parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "variables": { + "deleted": [ + { + "name": "application_name", + "value": true + } + ] + } + }, + "expected_sql_file": "alter_function_delete_parameter.sql", + "expected_msql_file": "alter_function_delete_parameter.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for acl.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "added": [ + { + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_add_acl.sql", + "expected_msql_file": "alter_function_add_acl.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "deleted": [ + { + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_delete_acl.sql", + "expected_msql_file": "alter_function_delete_acl.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_procedures.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_procedures.json new file mode 100644 index 000000000..dc9a44520 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_procedures.json @@ -0,0 +1,58 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create procedure", + "endpoint": "NODE-procedure.obj", + "sql_endpoint": "NODE-procedure.sql_id", + "data": { + "name": "Proc1_$%{}[]()&*^!@\"'`\\/#", + "acl": [], + "arguments": [{"argtype": "integer", "argmode": "IN", "argname": "i1", "argdefval": ""}], + "funcowner": "postgres", + "lanname": "plpgsql", + "options": [], + "pronamespace": 2200, + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [], + "schema": "public", + "provolatile": null, + "proisstrict": false, + "proparallel": null, + "procost": null, + "proleakproof": false, + "probin": "$libdir/" + }, + "expected_sql_file": "create_procedure.sql" + }, { + "type": "alter", + "name": "Alter procedure comment", + "endpoint": "NODE-procedure.obj_id", + "sql_endpoint": "NODE-procedure.sql_id", + "data": { + "description": "some comment" + }, + "expected_sql_file": "alter_proc_comment.sql", + "expected_msql_file": "alter_proc_comment_msql.sql" + }, { + "type": "alter", + "name": "Alter procedure param", + "endpoint": "NODE-procedure.obj_id", + "sql_endpoint": "NODE-procedure.sql_id", + "data": { + "variables": { + "added": [{"name": "application_name", "value": "pgadmin"}] + } + }, + "expected_sql_file": "alter_proc_param.sql", + "expected_msql_file": "alter_proc_param_msql.sql" + }, { + "type": "delete", + "name": "Drop procedure", + "endpoint": "NODE-procedure.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_trigger_functions.json new file mode 100644 index 000000000..a2e9fc70d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/12_plus/test_trigger_functions.json @@ -0,0 +1,191 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [], + "args": [], + "funcowner": "postgres", + "lanname": "plpgsql", + "options": [], + "pronamespace": 2200, + "prorettypename": "trigger", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [], + "schema": "public" + }, + "expected_sql_file": "create_plain_trigger.sql" + }, { + "type": "alter", + "name": "Alter trigger function comment", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "description": "some comment" + }, + "expected_sql_file": "alter_ptrig_comment.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 1 - Strict, Leakproof, Security of definer, Volatility", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "proisstrict": true, + "proleakproof": true, + "prosecdef": true, + "provolatile": "s" + }, + "expected_sql_file": "alter_ptrig_set_1.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 2 - Cost, Volatility, Add Param", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "procost": "123", + "provolatile": "i", + "variables": { + "added": [{ + "name": "application_name", + "value": "appname" + },{ + "name": "search_path", + "value": "public, pg_temp" + }] + } + }, + "expected_sql_file": "alter_ptrig_set_2.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 3 - Add Param, Change Param", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "variables": { + "added": [{ + "name": "application_name", + "value": "appname2" + }], + "changed": [{ + "name": "array_nulls", + "value": true + },{ + "name": "search_path", + "value": "public, pg_catalog" + }] + } + }, + "expected_sql_file": "alter_ptrig_set_3.sql" + }, { + "type": "delete", + "name": "Drop trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + }, { + "type": "create", + "name": "Create full fledged trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [{ + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege": true, + "privilege_type": "X", + "with_grant": true + } + ] + }], + "args": [], + "description": "some comment", + "funcowner": "postgres", + "lanname": "plpgsql", + "options": [], + "procost": "1234", + "proisstrict": true, + "proiswindow": true, + "proleakproof": true, + "pronamespace": 2200, + "proretset": true, + "prorettypename": "trigger", + "prorows": "4321", + "prosecdef": true, + "provolatile": "s", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [{ + "name": "application_name", + "value": "appname" + },{ + "name": "search_path", + "value": "public, pg_temp" + }], + "schema": "public" + }, + "expected_sql_file": "create_plain_trigger_full.sql" + }, { + "type": "delete", + "name": "Drop full fledged trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + }, { + "type": "create", + "name": "Create full fledged event trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [{ + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege": true, + "privilege_type": "X", + "with_grant": true + } + ] + }], + "args": [], + "description": "some comment", + "funcowner": "postgres", + "lanname": "plpgsql", + "options": [], + "procost": "1234", + "proisstrict": true, + "proiswindow": true, + "proleakproof": true, + "pronamespace": 2200, + "proretset": true, + "prorettypename": "event_trigger", + "prorows": "4321", + "prosecdef": true, + "provolatile": "s", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [{ + "name": "application_name", + "value": "appname" + }], + "schema": "public" + }, + "expected_sql_file": "create_event_trigger_full.sql" + }, { + "type": "delete", + "name": "Drop full fledged event trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_acl.msql new file mode 100644 index 000000000..82ce0c5cc --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_acl.msql @@ -0,0 +1 @@ +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_acl.sql new file mode 100644 index 000000000..6240f2d9b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_acl.sql @@ -0,0 +1,26 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE WINDOW + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO postgres; + + + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_parameter.msql new file mode 100644 index 000000000..694732c56 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_parameter.msql @@ -0,0 +1,12 @@ +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE WINDOW + COST 100 + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_parameter.sql new file mode 100644 index 000000000..5e67fccd9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_add_parameter.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE WINDOW + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_comment.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_comment.msql new file mode 100644 index 000000000..12b3a148c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_comment.msql @@ -0,0 +1,2 @@ +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_comment.sql new file mode 100644 index 000000000..4fa9638b1 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_comment.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; + +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_acl.msql new file mode 100644 index 000000000..1393bd746 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_acl.msql @@ -0,0 +1,3 @@ +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_acl.sql new file mode 100644 index 000000000..d9890c1ed --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_acl.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE WINDOW + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_parameter.msql new file mode 100644 index 000000000..f21583867 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_parameter.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RESET application_name; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_parameter.sql new file mode 100644 index 000000000..3bfdab314 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_delete_parameter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE WINDOW + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_rename.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_rename.msql new file mode 100644 index 000000000..8ddfca77b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_rename.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RENAME TO "Function3_$%{}[]()&*^!@""'`\/#"; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_rename.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_rename.sql new file mode 100644 index 000000000..320fd0a88 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_function_rename.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE WINDOW + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_comment.sql new file mode 100644 index 000000000..5f2e770c6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_comment.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + VOLATILE NOT LEAKPROOF +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_1.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_1.sql new file mode 100644 index 000000000..bf4885285 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_1.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + STABLE LEAKPROOF STRICT SECURITY DEFINER +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_2.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_2.sql new file mode 100644 index 000000000..c14baa20a --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_2.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 123 + IMMUTABLE LEAKPROOF STRICT SECURITY DEFINER + SET application_name='appname' + SET search_path=public, pg_temp +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_3.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_3.sql new file mode 100644 index 000000000..7caebc3b7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/alter_ptrig_set_3.sql @@ -0,0 +1,23 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 123 + IMMUTABLE LEAKPROOF STRICT SECURITY DEFINER + SET application_name='appname2' + SET search_path=public, pg_catalog + SET array_nulls='true' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_event_trigger_full.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_event_trigger_full.sql new file mode 100644 index 000000000..1bdbb6e01 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_event_trigger_full.sql @@ -0,0 +1,26 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS SETOF event_trigger + LANGUAGE 'plpgsql' + COST 1234 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + ROWS 4321 + SET application_name='appname' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +GRANT EXECUTE ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() TO postgres WITH GRANT OPTION; + +REVOKE ALL ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function.msql new file mode 100644 index 000000000..c10b3ac50 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(IN param character varying DEFAULT '1') + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function.sql new file mode 100644 index 000000000..eb6fdbb89 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function_for_alter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function_for_alter.msql new file mode 100644 index 000000000..d4ea23e50 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function_for_alter.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE WINDOW + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function_for_alter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function_for_alter.sql new file mode 100644 index 000000000..d9890c1ed --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_function_for_alter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE WINDOW + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_plain_trigger.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_plain_trigger.sql new file mode 100644 index 000000000..191e59c8e --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_plain_trigger.sql @@ -0,0 +1,17 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + VOLATILE NOT LEAKPROOF +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_plain_trigger_full.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_plain_trigger_full.sql new file mode 100644 index 000000000..3a51119ea --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/create_plain_trigger_full.sql @@ -0,0 +1,27 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS SETOF trigger + LANGUAGE 'plpgsql' + COST 1234 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + ROWS 4321 + SET application_name='appname' + SET search_path=public, pg_temp +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +GRANT EXECUTE ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() TO postgres WITH GRANT OPTION; + +REVOKE ALL ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_function.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_function.json new file mode 100644 index 000000000..34225e580 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_function.json @@ -0,0 +1,259 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create function with all options.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function1_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proretset": false, + "proisstrict": true, + "prosecdef": true, + "proiswindow": true, + "procost": "100", + "prorows": "0", + "proleakproof": true, + "arguments": [ + { + "argtype": "character varying", + "argmode": "IN", + "argname": "param", + "argdefval": "'1'" + } + ], + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function.sql", + "expected_msql_file": "create_function.msql" + }, + { + "type": "alter", + "name": "Alter function comment", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "description": "Some comment" + }, + "expected_sql_file": "alter_function_comment.sql", + "expected_msql_file": "alter_function_comment.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for alter.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proiswindow": true, + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function rename.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name":"Function3_$%{}[]()&*^!@\"'`\\/#" + }, + "expected_sql_file": "alter_function_rename.sql", + "expected_msql_file": "alter_function_rename.msql" + }, + { + "type": "alter", + "name": "Alter function code and add parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "prosrc": "begin\nselect '2';\nend\n", + "variables": { + "added": [ + { + "name": "application_name", + "value": "appname" + } + ] + } + }, + "expected_sql_file": "alter_function_add_parameter.sql", + "expected_msql_file": "alter_function_add_parameter.msql" + }, + { + "type": "alter", + "name": "Alter function delete parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "variables": { + "deleted": [ + { + "name": "application_name", + "value": true + } + ] + } + }, + "expected_sql_file": "alter_function_delete_parameter.sql", + "expected_msql_file": "alter_function_delete_parameter.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for acl.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proiswindow": true, + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "added": [ + { + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_add_acl.sql", + "expected_msql_file": "alter_function_add_acl.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "deleted": [ + { + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_delete_acl.sql", + "expected_msql_file": "alter_function_delete_acl.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_trigger_functions.json new file mode 100644 index 000000000..a2e9fc70d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.5_plus/test_trigger_functions.json @@ -0,0 +1,191 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [], + "args": [], + "funcowner": "postgres", + "lanname": "plpgsql", + "options": [], + "pronamespace": 2200, + "prorettypename": "trigger", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [], + "schema": "public" + }, + "expected_sql_file": "create_plain_trigger.sql" + }, { + "type": "alter", + "name": "Alter trigger function comment", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "description": "some comment" + }, + "expected_sql_file": "alter_ptrig_comment.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 1 - Strict, Leakproof, Security of definer, Volatility", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "proisstrict": true, + "proleakproof": true, + "prosecdef": true, + "provolatile": "s" + }, + "expected_sql_file": "alter_ptrig_set_1.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 2 - Cost, Volatility, Add Param", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "procost": "123", + "provolatile": "i", + "variables": { + "added": [{ + "name": "application_name", + "value": "appname" + },{ + "name": "search_path", + "value": "public, pg_temp" + }] + } + }, + "expected_sql_file": "alter_ptrig_set_2.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 3 - Add Param, Change Param", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "variables": { + "added": [{ + "name": "application_name", + "value": "appname2" + }], + "changed": [{ + "name": "array_nulls", + "value": true + },{ + "name": "search_path", + "value": "public, pg_catalog" + }] + } + }, + "expected_sql_file": "alter_ptrig_set_3.sql" + }, { + "type": "delete", + "name": "Drop trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + }, { + "type": "create", + "name": "Create full fledged trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [{ + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege": true, + "privilege_type": "X", + "with_grant": true + } + ] + }], + "args": [], + "description": "some comment", + "funcowner": "postgres", + "lanname": "plpgsql", + "options": [], + "procost": "1234", + "proisstrict": true, + "proiswindow": true, + "proleakproof": true, + "pronamespace": 2200, + "proretset": true, + "prorettypename": "trigger", + "prorows": "4321", + "prosecdef": true, + "provolatile": "s", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [{ + "name": "application_name", + "value": "appname" + },{ + "name": "search_path", + "value": "public, pg_temp" + }], + "schema": "public" + }, + "expected_sql_file": "create_plain_trigger_full.sql" + }, { + "type": "delete", + "name": "Drop full fledged trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + }, { + "type": "create", + "name": "Create full fledged event trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [{ + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege": true, + "privilege_type": "X", + "with_grant": true + } + ] + }], + "args": [], + "description": "some comment", + "funcowner": "postgres", + "lanname": "plpgsql", + "options": [], + "procost": "1234", + "proisstrict": true, + "proiswindow": true, + "proleakproof": true, + "pronamespace": 2200, + "proretset": true, + "prorettypename": "event_trigger", + "prorows": "4321", + "prosecdef": true, + "provolatile": "s", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [{ + "name": "application_name", + "value": "appname" + }], + "schema": "public" + }, + "expected_sql_file": "create_event_trigger_full.sql" + }, { + "type": "delete", + "name": "Drop full fledged event trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_acl.msql new file mode 100644 index 000000000..82ce0c5cc --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_acl.msql @@ -0,0 +1 @@ +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_acl.sql new file mode 100644 index 000000000..7509f0cd4 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_acl.sql @@ -0,0 +1,24 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO postgres; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_parameter.msql new file mode 100644 index 000000000..ae35deb48 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_parameter.msql @@ -0,0 +1,13 @@ +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE + PARALLEL UNSAFE + COST 100 + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_parameter.sql new file mode 100644 index 000000000..54fc22de6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_add_parameter.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_comment.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_comment.msql new file mode 100644 index 000000000..12b3a148c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_comment.msql @@ -0,0 +1,2 @@ +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_comment.sql new file mode 100644 index 000000000..ce622e6c0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_comment.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; + +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_acl.msql new file mode 100644 index 000000000..1393bd746 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_acl.msql @@ -0,0 +1,3 @@ +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_acl.sql new file mode 100644 index 000000000..e8db8efb0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_acl.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_parameter.msql new file mode 100644 index 000000000..f21583867 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_parameter.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RESET application_name; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_parameter.sql new file mode 100644 index 000000000..f7624d831 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_delete_parameter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_rename.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_rename.msql new file mode 100644 index 000000000..8ddfca77b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_rename.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RENAME TO "Function3_$%{}[]()&*^!@""'`\/#"; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_rename.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_rename.sql new file mode 100644 index 000000000..7bdf81a3d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_function_rename.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_comment.sql new file mode 100644 index 000000000..5f2e770c6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_comment.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + VOLATILE NOT LEAKPROOF +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_1.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_1.sql new file mode 100644 index 000000000..bf4885285 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_1.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + STABLE LEAKPROOF STRICT SECURITY DEFINER +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_2.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_2.sql new file mode 100644 index 000000000..c14baa20a --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_2.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 123 + IMMUTABLE LEAKPROOF STRICT SECURITY DEFINER + SET application_name='appname' + SET search_path=public, pg_temp +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_3.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_3.sql new file mode 100644 index 000000000..7caebc3b7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/alter_ptrig_set_3.sql @@ -0,0 +1,23 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 123 + IMMUTABLE LEAKPROOF STRICT SECURITY DEFINER + SET application_name='appname2' + SET search_path=public, pg_catalog + SET array_nulls='true' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_event_trigger_full.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_event_trigger_full.sql new file mode 100644 index 000000000..1bdbb6e01 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_event_trigger_full.sql @@ -0,0 +1,26 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS SETOF event_trigger + LANGUAGE 'plpgsql' + COST 1234 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + ROWS 4321 + SET application_name='appname' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +GRANT EXECUTE ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() TO postgres WITH GRANT OPTION; + +REVOKE ALL ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function.msql new file mode 100644 index 000000000..a7595a1f8 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(IN param character varying DEFAULT '1') + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function.sql new file mode 100644 index 000000000..74a4a62a0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO postgres; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function_for_alter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function_for_alter.msql new file mode 100644 index 000000000..a66e41b65 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function_for_alter.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function_for_alter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function_for_alter.sql new file mode 100644 index 000000000..e8db8efb0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_function_for_alter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_plain_trigger.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_plain_trigger.sql new file mode 100644 index 000000000..191e59c8e --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_plain_trigger.sql @@ -0,0 +1,17 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + VOLATILE NOT LEAKPROOF +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_plain_trigger_full.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_plain_trigger_full.sql new file mode 100644 index 000000000..3a51119ea --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/create_plain_trigger_full.sql @@ -0,0 +1,27 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS SETOF trigger + LANGUAGE 'plpgsql' + COST 1234 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + ROWS 4321 + SET application_name='appname' + SET search_path=public, pg_temp +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO postgres; + +GRANT EXECUTE ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() TO postgres WITH GRANT OPTION; + +REVOKE ALL ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_function.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_function.json new file mode 100644 index 000000000..43c034d61 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_function.json @@ -0,0 +1,260 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create function with all options.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function1_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proretset": false, + "proisstrict": true, + "prosecdef": true, + "proiswindow": true, + "proparallel": "u", + "procost": "100", + "prorows": "0", + "proleakproof": true, + "arguments": [ + { + "argtype": "character varying", + "argmode": "IN", + "argname": "param", + "argdefval": "'1'" + } + ], + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function.sql", + "expected_msql_file": "create_function.msql" + }, + { + "type": "alter", + "name": "Alter function comment", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "description": "Some comment" + }, + "expected_sql_file": "alter_function_comment.sql", + "expected_msql_file": "alter_function_comment.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for alter.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function rename.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name":"Function3_$%{}[]()&*^!@\"'`\\/#" + }, + "expected_sql_file": "alter_function_rename.sql", + "expected_msql_file": "alter_function_rename.msql" + }, + { + "type": "alter", + "name": "Alter function code and add parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "prosrc": "begin\nselect '2';\nend\n", + "variables": { + "added": [ + { + "name": "application_name", + "value": "appname" + } + ] + } + }, + "expected_sql_file": "alter_function_add_parameter.sql", + "expected_msql_file": "alter_function_add_parameter.msql" + }, + { + "type": "alter", + "name": "Alter function delete parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "variables": { + "deleted": [ + { + "name": "application_name", + "value": true + } + ] + } + }, + "expected_sql_file": "alter_function_delete_parameter.sql", + "expected_msql_file": "alter_function_delete_parameter.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for acl.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "postgres", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "added": [ + { + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_add_acl.sql", + "expected_msql_file": "alter_function_add_acl.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "deleted": [ + { + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_delete_acl.sql", + "expected_msql_file": "alter_function_delete_acl.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_trigger_functions.json new file mode 100644 index 000000000..a2e9fc70d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/pg/9.6_plus/test_trigger_functions.json @@ -0,0 +1,191 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [], + "args": [], + "funcowner": "postgres", + "lanname": "plpgsql", + "options": [], + "pronamespace": 2200, + "prorettypename": "trigger", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [], + "schema": "public" + }, + "expected_sql_file": "create_plain_trigger.sql" + }, { + "type": "alter", + "name": "Alter trigger function comment", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "description": "some comment" + }, + "expected_sql_file": "alter_ptrig_comment.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 1 - Strict, Leakproof, Security of definer, Volatility", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "proisstrict": true, + "proleakproof": true, + "prosecdef": true, + "provolatile": "s" + }, + "expected_sql_file": "alter_ptrig_set_1.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 2 - Cost, Volatility, Add Param", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "procost": "123", + "provolatile": "i", + "variables": { + "added": [{ + "name": "application_name", + "value": "appname" + },{ + "name": "search_path", + "value": "public, pg_temp" + }] + } + }, + "expected_sql_file": "alter_ptrig_set_2.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 3 - Add Param, Change Param", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "variables": { + "added": [{ + "name": "application_name", + "value": "appname2" + }], + "changed": [{ + "name": "array_nulls", + "value": true + },{ + "name": "search_path", + "value": "public, pg_catalog" + }] + } + }, + "expected_sql_file": "alter_ptrig_set_3.sql" + }, { + "type": "delete", + "name": "Drop trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + }, { + "type": "create", + "name": "Create full fledged trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [{ + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege": true, + "privilege_type": "X", + "with_grant": true + } + ] + }], + "args": [], + "description": "some comment", + "funcowner": "postgres", + "lanname": "plpgsql", + "options": [], + "procost": "1234", + "proisstrict": true, + "proiswindow": true, + "proleakproof": true, + "pronamespace": 2200, + "proretset": true, + "prorettypename": "trigger", + "prorows": "4321", + "prosecdef": true, + "provolatile": "s", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [{ + "name": "application_name", + "value": "appname" + },{ + "name": "search_path", + "value": "public, pg_temp" + }], + "schema": "public" + }, + "expected_sql_file": "create_plain_trigger_full.sql" + }, { + "type": "delete", + "name": "Drop full fledged trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + }, { + "type": "create", + "name": "Create full fledged event trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [{ + "grantee": "postgres", + "grantor": "postgres", + "privileges": [ + { + "privilege": true, + "privilege_type": "X", + "with_grant": true + } + ] + }], + "args": [], + "description": "some comment", + "funcowner": "postgres", + "lanname": "plpgsql", + "options": [], + "procost": "1234", + "proisstrict": true, + "proiswindow": true, + "proleakproof": true, + "pronamespace": 2200, + "proretset": true, + "prorettypename": "event_trigger", + "prorows": "4321", + "prosecdef": true, + "provolatile": "s", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [{ + "name": "application_name", + "value": "appname" + }], + "schema": "public" + }, + "expected_sql_file": "create_event_trigger_full.sql" + }, { + "type": "delete", + "name": "Drop full fledged event trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_acl.msql new file mode 100644 index 000000000..f5f875cd9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_acl.msql @@ -0,0 +1,3 @@ +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_acl.sql new file mode 100644 index 000000000..5c8b5c605 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_acl.sql @@ -0,0 +1,24 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO enterprisedb; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_parameter.msql new file mode 100644 index 000000000..900e3a9cd --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_parameter.msql @@ -0,0 +1,13 @@ +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE SECURITY DEFINER + + COST 100 + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_parameter.sql new file mode 100644 index 000000000..48b1c3ee5 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_add_parameter.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_comment.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_comment.msql new file mode 100644 index 000000000..12b3a148c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_comment.msql @@ -0,0 +1,2 @@ +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_comment.sql new file mode 100644 index 000000000..5070ff43d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_comment.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; + +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_acl.msql new file mode 100644 index 000000000..13bb67bf4 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_acl.msql @@ -0,0 +1,3 @@ +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_acl.sql new file mode 100644 index 000000000..f0a4af05d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_acl.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_parameter.msql new file mode 100644 index 000000000..f21583867 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_parameter.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RESET application_name; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_parameter.sql new file mode 100644 index 000000000..f0b0878a7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_delete_parameter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_rename.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_rename.msql new file mode 100644 index 000000000..8ddfca77b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_rename.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RENAME TO "Function3_$%{}[]()&*^!@""'`\/#"; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_rename.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_rename.sql new file mode 100644 index 000000000..0ca7cb0a7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/alter_function_rename.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function.msql new file mode 100644 index 000000000..220c35f65 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(IN param character varying DEFAULT '1') + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function.sql new file mode 100644 index 000000000..7bd3f4424 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function_for_alter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function_for_alter.msql new file mode 100644 index 000000000..add31f6e3 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function_for_alter.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function_for_alter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function_for_alter.sql new file mode 100644 index 000000000..f0a4af05d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/create_function_for_alter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/test_function.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/test_function.json new file mode 100644 index 000000000..bc1043b6c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/11_plus/test_function.json @@ -0,0 +1,272 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create function with all options.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function1_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proretset": false, + "proisstrict": true, + "prosecdef": true, + "proiswindow": true, + "proparallel": "u", + "procost": "100", + "prorows": "0", + "proleakproof": true, + "arguments": [ + { + "argtype": "character varying", + "argmode": "IN", + "argname": "param", + "argdefval": "'1'" + } + ], + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function.sql", + "expected_msql_file": "create_function.msql" + }, + { + "type": "alter", + "name": "Alter function comment", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "description": "Some comment" + }, + "expected_sql_file": "alter_function_comment.sql", + "expected_msql_file": "alter_function_comment.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for alter.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "prosecdef": true, + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function rename.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function3_$%{}[]()&*^!@\"'`\\/#" + }, + "expected_sql_file": "alter_function_rename.sql", + "expected_msql_file": "alter_function_rename.msql" + }, + { + "type": "alter", + "name": "Alter function code and add parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "prosrc": "begin\nselect '2';\nend\n", + "variables": { + "added": [ + { + "name": "application_name", + "value": "appname" + } + ] + } + }, + "expected_sql_file": "alter_function_add_parameter.sql" + }, + { + "type": "alter", + "name": "Alter function delete parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "variables": { + "deleted": [ + { + "name": "application_name", + "value": true + } + ] + } + }, + "expected_sql_file": "alter_function_delete_parameter.sql", + "expected_msql_file": "alter_function_delete_parameter.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for acl.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "prosecdef": true, + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "added": [ + { + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "enterprisedb", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_add_acl.sql", + "expected_msql_file": "alter_function_add_acl.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "deleted": [ + { + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "enterprisedb", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_delete_acl.sql", + "expected_msql_file": "alter_function_delete_acl.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_acl.msql new file mode 100644 index 000000000..f5f875cd9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_acl.msql @@ -0,0 +1,3 @@ +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_acl.sql new file mode 100644 index 000000000..5c8b5c605 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_acl.sql @@ -0,0 +1,24 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO enterprisedb; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_parameter.msql new file mode 100644 index 000000000..900e3a9cd --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_parameter.msql @@ -0,0 +1,13 @@ +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE SECURITY DEFINER + + COST 100 + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_parameter.sql new file mode 100644 index 000000000..48b1c3ee5 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_add_parameter.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_comment.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_comment.msql new file mode 100644 index 000000000..12b3a148c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_comment.msql @@ -0,0 +1,2 @@ +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_comment.sql new file mode 100644 index 000000000..5070ff43d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_comment.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; + +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_acl.msql new file mode 100644 index 000000000..13bb67bf4 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_acl.msql @@ -0,0 +1,3 @@ +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_acl.sql new file mode 100644 index 000000000..f0a4af05d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_acl.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_parameter.msql new file mode 100644 index 000000000..f21583867 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_parameter.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RESET application_name; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_parameter.sql new file mode 100644 index 000000000..f0b0878a7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_delete_parameter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_rename.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_rename.msql new file mode 100644 index 000000000..8ddfca77b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_rename.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RENAME TO "Function3_$%{}[]()&*^!@""'`\/#"; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_rename.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_rename.sql new file mode 100644 index 000000000..0ca7cb0a7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_function_rename.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_comment.sql new file mode 100644 index 000000000..86eae9aca --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_comment.sql @@ -0,0 +1,15 @@ +-- PROCEDURE: public.Proc1_$%{}[]()&*^!@"'`\/#(integer) + +-- DROP PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer); + +CREATE OR REPLACE PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"( + i1 integer) +LANGUAGE 'plpgsql' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +COMMENT ON PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer) + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_comment_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_comment_msql.sql new file mode 100644 index 000000000..d48fca1bf --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_comment_msql.sql @@ -0,0 +1,2 @@ +COMMENT ON PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer) + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_param.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_param.sql new file mode 100644 index 000000000..4a8b0b176 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_param.sql @@ -0,0 +1,16 @@ +-- PROCEDURE: public.Proc1_$%{}[]()&*^!@"'`\/#(integer) + +-- DROP PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer); + +CREATE OR REPLACE PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"( + i1 integer) +LANGUAGE 'plpgsql' + SET application_name='pgadmin' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +COMMENT ON PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer) + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_param_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_param_msql.sql new file mode 100644 index 000000000..52c0f9c51 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_proc_param_msql.sql @@ -0,0 +1,2 @@ +ALTER PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer) + SET application_name=pgadmin; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_comment.sql new file mode 100644 index 000000000..477d57210 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_comment.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + VOLATILE NOT LEAKPROOF +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_1.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_1.sql new file mode 100644 index 000000000..91f3b188b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_1.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + STABLE LEAKPROOF STRICT SECURITY DEFINER +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_2.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_2.sql new file mode 100644 index 000000000..7c7b337d3 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_2.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 123 + IMMUTABLE LEAKPROOF STRICT SECURITY DEFINER + SET application_name='appname' + SET search_path=public, pg_temp +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_3.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_3.sql new file mode 100644 index 000000000..f5de4196a --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/alter_ptrig_set_3.sql @@ -0,0 +1,23 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 123 + IMMUTABLE LEAKPROOF STRICT SECURITY DEFINER + SET application_name='appname2' + SET search_path=public, pg_catalog + SET array_nulls='true' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_event_trigger_full.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_event_trigger_full.sql new file mode 100644 index 000000000..c9dc3d5d6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_event_trigger_full.sql @@ -0,0 +1,26 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS SETOF event_trigger + LANGUAGE 'plpgsql' + COST 1234 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + ROWS 4321 + SET application_name='appname' +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; + +GRANT EXECUTE ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() TO enterprisedb WITH GRANT OPTION; + +REVOKE ALL ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function.msql new file mode 100644 index 000000000..220c35f65 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(IN param character varying DEFAULT '1') + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function.sql new file mode 100644 index 000000000..7bd3f4424 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function_for_alter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function_for_alter.msql new file mode 100644 index 000000000..add31f6e3 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function_for_alter.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function_for_alter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function_for_alter.sql new file mode 100644 index 000000000..f0a4af05d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_function_for_alter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_plain_trigger.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_plain_trigger.sql new file mode 100644 index 000000000..99e66f526 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_plain_trigger.sql @@ -0,0 +1,17 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + VOLATILE NOT LEAKPROOF +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_plain_trigger_full.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_plain_trigger_full.sql new file mode 100644 index 000000000..d278a4485 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_plain_trigger_full.sql @@ -0,0 +1,27 @@ +-- FUNCTION: public.Trig1_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"(); + +CREATE FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + RETURNS SETOF trigger + LANGUAGE 'plpgsql' + COST 1234 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + ROWS 4321 + SET application_name='appname' + SET search_path=public, pg_temp +AS $BODY$ +begin +select 1; +end; +$BODY$; + +ALTER FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; + +GRANT EXECUTE ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() TO enterprisedb WITH GRANT OPTION; + +REVOKE ALL ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +COMMENT ON FUNCTION public."Trig1_$%{}[]()&*^!@""'`\/#"() + IS 'some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_procedure.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_procedure.sql new file mode 100644 index 000000000..c6b648237 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/create_procedure.sql @@ -0,0 +1,12 @@ +-- PROCEDURE: public.Proc1_$%{}[]()&*^!@"'`\/#(integer) + +-- DROP PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"(integer); + +CREATE OR REPLACE PROCEDURE public."Proc1_$%{}[]()&*^!@""'`\/#"( + i1 integer) +LANGUAGE 'plpgsql' +AS $BODY$ +begin +select 1; +end; +$BODY$; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_function.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_function.json new file mode 100644 index 000000000..bc1043b6c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_function.json @@ -0,0 +1,272 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create function with all options.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function1_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proretset": false, + "proisstrict": true, + "prosecdef": true, + "proiswindow": true, + "proparallel": "u", + "procost": "100", + "prorows": "0", + "proleakproof": true, + "arguments": [ + { + "argtype": "character varying", + "argmode": "IN", + "argname": "param", + "argdefval": "'1'" + } + ], + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function.sql", + "expected_msql_file": "create_function.msql" + }, + { + "type": "alter", + "name": "Alter function comment", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "description": "Some comment" + }, + "expected_sql_file": "alter_function_comment.sql", + "expected_msql_file": "alter_function_comment.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for alter.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "prosecdef": true, + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function rename.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function3_$%{}[]()&*^!@\"'`\\/#" + }, + "expected_sql_file": "alter_function_rename.sql", + "expected_msql_file": "alter_function_rename.msql" + }, + { + "type": "alter", + "name": "Alter function code and add parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "prosrc": "begin\nselect '2';\nend\n", + "variables": { + "added": [ + { + "name": "application_name", + "value": "appname" + } + ] + } + }, + "expected_sql_file": "alter_function_add_parameter.sql" + }, + { + "type": "alter", + "name": "Alter function delete parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "variables": { + "deleted": [ + { + "name": "application_name", + "value": true + } + ] + } + }, + "expected_sql_file": "alter_function_delete_parameter.sql", + "expected_msql_file": "alter_function_delete_parameter.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for acl.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "prosecdef": true, + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "added": [ + { + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "enterprisedb", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_add_acl.sql", + "expected_msql_file": "alter_function_add_acl.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "deleted": [ + { + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "enterprisedb", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_delete_acl.sql", + "expected_msql_file": "alter_function_delete_acl.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_procedures.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_procedures.json new file mode 100644 index 000000000..870f40003 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_procedures.json @@ -0,0 +1,58 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create procedure", + "endpoint": "NODE-procedure.obj", + "sql_endpoint": "NODE-procedure.sql_id", + "data": { + "name": "Proc1_$%{}[]()&*^!@\"'`\\/#", + "acl": [], + "arguments": [{"argtype": "integer", "argmode": "IN", "argname": "i1", "argdefval": ""}], + "funcowner": "enterprisedb", + "lanname": "plpgsql", + "options": [], + "pronamespace": 2200, + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [], + "schema": "public", + "provolatile": null, + "proisstrict": false, + "proparallel": null, + "procost": null, + "proleakproof": false, + "probin": "$libdir/" + }, + "expected_sql_file": "create_procedure.sql" + }, { + "type": "alter", + "name": "Alter procedure comment", + "endpoint": "NODE-procedure.obj_id", + "sql_endpoint": "NODE-procedure.sql_id", + "data": { + "description": "some comment" + }, + "expected_sql_file": "alter_proc_comment.sql", + "expected_msql_file": "alter_proc_comment_msql.sql" + }, { + "type": "alter", + "name": "Alter procedure param", + "endpoint": "NODE-procedure.obj_id", + "sql_endpoint": "NODE-procedure.sql_id", + "data": { + "variables": { + "added": [{"name": "application_name", "value": "pgadmin"}] + } + }, + "expected_sql_file": "alter_proc_param.sql", + "expected_msql_file": "alter_proc_param_msql.sql" + }, { + "type": "delete", + "name": "Drop procedure", + "endpoint": "NODE-procedure.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_trigger_functions.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_trigger_functions.json new file mode 100644 index 000000000..cc1182082 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/12_plus/test_trigger_functions.json @@ -0,0 +1,191 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [], + "args": [], + "funcowner": "enterprisedb", + "lanname": "plpgsql", + "options": [], + "pronamespace": 2200, + "prorettypename": "trigger", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [], + "schema": "public" + }, + "expected_sql_file": "create_plain_trigger.sql" + }, { + "type": "alter", + "name": "Alter trigger function comment", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "description": "some comment" + }, + "expected_sql_file": "alter_ptrig_comment.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 1 - Strict, Leakproof, Security of definer, Volatility", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "proisstrict": true, + "proleakproof": true, + "prosecdef": true, + "provolatile": "s" + }, + "expected_sql_file": "alter_ptrig_set_1.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 2 - Cost, Volatility, Add Param", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "procost": "123", + "provolatile": "i", + "variables": { + "added": [{ + "name": "application_name", + "value": "appname" + },{ + "name": "search_path", + "value": "public, pg_temp" + }] + } + }, + "expected_sql_file": "alter_ptrig_set_2.sql" + }, { + "type": "alter", + "name": "Alter trigger function Set 3 - Add Param, Change Param", + "endpoint": "NODE-trigger_function.obj_id", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "variables": { + "added": [{ + "name": "application_name", + "value": "appname2" + }], + "changed": [{ + "name": "array_nulls", + "value": true + },{ + "name": "search_path", + "value": "public, pg_catalog" + }] + } + }, + "expected_sql_file": "alter_ptrig_set_3.sql" + }, { + "type": "delete", + "name": "Drop trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + }, { + "type": "create", + "name": "Create full fledged trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [{ + "grantee": "enterprisedb", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege": true, + "privilege_type": "X", + "with_grant": true + } + ] + }], + "args": [], + "description": "some comment", + "funcowner": "enterprisedb", + "lanname": "plpgsql", + "options": [], + "procost": "1234", + "proisstrict": true, + "proiswindow": true, + "proleakproof": true, + "pronamespace": 2200, + "proretset": true, + "prorettypename": "trigger", + "prorows": "4321", + "prosecdef": true, + "provolatile": "s", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [{ + "name": "application_name", + "value": "appname" + },{ + "name": "search_path", + "value": "public, pg_temp" + }], + "schema": "public" + }, + "expected_sql_file": "create_plain_trigger_full.sql" + }, { + "type": "delete", + "name": "Drop full fledged trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + }, { + "type": "create", + "name": "Create full fledged event trigger function", + "endpoint": "NODE-trigger_function.obj", + "sql_endpoint": "NODE-trigger_function.sql_id", + "data": { + "name": "Trig1_$%{}[]()&*^!@\"'`\\/#", + "acl": [{ + "grantee": "enterprisedb", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege": true, + "privilege_type": "X", + "with_grant": true + } + ] + }], + "args": [], + "description": "some comment", + "funcowner": "enterprisedb", + "lanname": "plpgsql", + "options": [], + "procost": "1234", + "proisstrict": true, + "proiswindow": true, + "proleakproof": true, + "pronamespace": 2200, + "proretset": true, + "prorettypename": "event_trigger", + "prorows": "4321", + "prosecdef": true, + "provolatile": "s", + "prosrc": "begin\nselect 1;\nend;", + "seclabels": [], + "variables": [{ + "name": "application_name", + "value": "appname" + }], + "schema": "public" + }, + "expected_sql_file": "create_event_trigger_full.sql" + }, { + "type": "delete", + "name": "Drop full fledged event trigger function", + "endpoint": "NODE-trigger_function.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_acl.msql new file mode 100644 index 000000000..f5f875cd9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_acl.msql @@ -0,0 +1,3 @@ +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_acl.sql new file mode 100644 index 000000000..9934b32c6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_acl.sql @@ -0,0 +1,24 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) +RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE SECURITY DEFINER WINDOW + COST 100 + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO enterprisedb; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_parameter.msql new file mode 100644 index 000000000..900e3a9cd --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_parameter.msql @@ -0,0 +1,13 @@ +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE SECURITY DEFINER + + COST 100 + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_parameter.sql new file mode 100644 index 000000000..d245db0f8 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_add_parameter.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) +RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE SECURITY DEFINER WINDOW + COST 100 + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_comment.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_comment.msql new file mode 100644 index 000000000..12b3a148c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_comment.msql @@ -0,0 +1,2 @@ +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_comment.sql new file mode 100644 index 000000000..6cdd8d66b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_comment.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) +RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + COST 100 + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; + +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_acl.msql new file mode 100644 index 000000000..13bb67bf4 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_acl.msql @@ -0,0 +1,3 @@ +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_acl.sql new file mode 100644 index 000000000..8048c4135 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_acl.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) +RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE SECURITY DEFINER WINDOW + COST 100 + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_parameter.msql new file mode 100644 index 000000000..f21583867 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_parameter.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RESET application_name; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_parameter.sql new file mode 100644 index 000000000..3d6453909 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_delete_parameter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) +RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE SECURITY DEFINER WINDOW + COST 100 + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_rename.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_rename.msql new file mode 100644 index 000000000..8ddfca77b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_rename.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RENAME TO "Function3_$%{}[]()&*^!@""'`\/#"; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_rename.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_rename.sql new file mode 100644 index 000000000..ecb75879f --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/alter_function_rename.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) +RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE SECURITY DEFINER WINDOW + COST 100 + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function.msql new file mode 100644 index 000000000..da7f8fd1f --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(IN param character varying DEFAULT '1') +RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + COST 100 + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function.sql new file mode 100644 index 000000000..c741bde16 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) +RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW + COST 100 + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function_for_alter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function_for_alter.msql new file mode 100644 index 000000000..a568fb034 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function_for_alter.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() +RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE SECURITY DEFINER WINDOW + COST 100 + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function_for_alter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function_for_alter.sql new file mode 100644 index 000000000..8048c4135 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/create_function_for_alter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) +RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE SECURITY DEFINER WINDOW + COST 100 + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/test_function.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/test_function.json new file mode 100644 index 000000000..101eb587b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.5_plus/test_function.json @@ -0,0 +1,271 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create function with all options.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function1_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proretset": false, + "proisstrict": true, + "prosecdef": true, + "proiswindow": true, + "procost": "100", + "prorows": "0", + "proleakproof": true, + "arguments": [ + { + "argtype": "character varying", + "argmode": "IN", + "argname": "param", + "argdefval": "'1'" + } + ], + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function.sql", + "expected_msql_file": "create_function.msql" + }, + { + "type": "alter", + "name": "Alter function comment", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "description": "Some comment" + }, + "expected_sql_file": "alter_function_comment.sql", + "expected_msql_file": "alter_function_comment.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for alter.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proiswindow": true, + "prosecdef": true, + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function rename.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function3_$%{}[]()&*^!@\"'`\\/#" + }, + "expected_sql_file": "alter_function_rename.sql", + "expected_msql_file": "alter_function_rename.msql" + }, + { + "type": "alter", + "name": "Alter function code and add parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "prosrc": "begin\nselect '2';\nend\n", + "variables": { + "added": [ + { + "name": "application_name", + "value": "appname" + } + ] + } + }, + "expected_sql_file": "alter_function_add_parameter.sql" + }, + { + "type": "alter", + "name": "Alter function delete parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "variables": { + "deleted": [ + { + "name": "application_name", + "value": true + } + ] + } + }, + "expected_sql_file": "alter_function_delete_parameter.sql", + "expected_msql_file": "alter_function_delete_parameter.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for acl.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proiswindow": true, + "prosecdef": true, + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "added": [ + { + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "enterprisedb", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_add_acl.sql", + "expected_msql_file": "alter_function_add_acl.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "deleted": [ + { + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "enterprisedb", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_delete_acl.sql", + "expected_msql_file": "alter_function_delete_acl.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_acl.msql new file mode 100644 index 000000000..f5f875cd9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_acl.msql @@ -0,0 +1,3 @@ +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_acl.sql new file mode 100644 index 000000000..5c8b5c605 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_acl.sql @@ -0,0 +1,24 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO PUBLIC; + +GRANT EXECUTE ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() TO enterprisedb; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_parameter.msql new file mode 100644 index 000000000..900e3a9cd --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_parameter.msql @@ -0,0 +1,13 @@ +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + VOLATILE SECURITY DEFINER + + COST 100 + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_parameter.sql new file mode 100644 index 000000000..48b1c3ee5 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_add_parameter.sql @@ -0,0 +1,20 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET application_name='appname' + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_comment.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_comment.msql new file mode 100644 index 000000000..12b3a148c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_comment.msql @@ -0,0 +1,2 @@ +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_comment.sql new file mode 100644 index 000000000..5070ff43d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_comment.sql @@ -0,0 +1,22 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; + +COMMENT ON FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + IS 'Some comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_acl.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_acl.msql new file mode 100644 index 000000000..13bb67bf4 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_acl.msql @@ -0,0 +1,3 @@ +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM PUBLIC; + +REVOKE ALL ON FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() FROM enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_acl.sql new file mode 100644 index 000000000..f0a4af05d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_acl.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_parameter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_parameter.msql new file mode 100644 index 000000000..f21583867 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_parameter.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + RESET application_name; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_parameter.sql new file mode 100644 index 000000000..f0b0878a7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_delete_parameter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '2'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_rename.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_rename.msql new file mode 100644 index 000000000..8ddfca77b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_rename.msql @@ -0,0 +1,2 @@ +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RENAME TO "Function3_$%{}[]()&*^!@""'`\/#"; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_rename.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_rename.sql new file mode 100644 index 000000000..0ca7cb0a7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/alter_function_rename.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function3_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function3_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function.msql new file mode 100644 index 000000000..220c35f65 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(IN param character varying DEFAULT '1') + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function.sql new file mode 100644 index 000000000..7bd3f4424 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function1_$%{}[]()&*^!@"'`\/#(character varying) + +-- DROP FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying); + +CREATE OR REPLACE FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"( + param character varying DEFAULT '1'::character varying) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function1_$%{}[]()&*^!@""'`\/#"(character varying) + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function_for_alter.msql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function_for_alter.msql new file mode 100644 index 000000000..add31f6e3 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function_for_alter.msql @@ -0,0 +1,14 @@ +CREATE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort=true +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function_for_alter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function_for_alter.sql new file mode 100644 index 000000000..f0a4af05d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/create_function_for_alter.sql @@ -0,0 +1,19 @@ +-- FUNCTION: public.Function2_$%{}[]()&*^!@"'`\/#() + +-- DROP FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"(); + +CREATE OR REPLACE FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"( + ) + RETURNS character varying + LANGUAGE 'plpgsql' + COST 100 + VOLATILE SECURITY DEFINER PARALLEL UNSAFE + SET enable_sort='true' +AS $BODY$ +begin +select '1'; +end +$BODY$; + +ALTER FUNCTION public."Function2_$%{}[]()&*^!@""'`\/#"() + OWNER TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_function.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_function.json new file mode 100644 index 000000000..bc1043b6c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/ppas/9.6_plus/test_function.json @@ -0,0 +1,272 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create function with all options.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function1_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proretset": false, + "proisstrict": true, + "prosecdef": true, + "proiswindow": true, + "proparallel": "u", + "procost": "100", + "prorows": "0", + "proleakproof": true, + "arguments": [ + { + "argtype": "character varying", + "argmode": "IN", + "argname": "param", + "argdefval": "'1'" + } + ], + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function.sql", + "expected_msql_file": "create_function.msql" + }, + { + "type": "alter", + "name": "Alter function comment", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "description": "Some comment" + }, + "expected_sql_file": "alter_function_comment.sql", + "expected_msql_file": "alter_function_comment.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for alter.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "prosecdef": true, + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function rename.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function3_$%{}[]()&*^!@\"'`\\/#" + }, + "expected_sql_file": "alter_function_rename.sql", + "expected_msql_file": "alter_function_rename.msql" + }, + { + "type": "alter", + "name": "Alter function code and add parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "prosrc": "begin\nselect '2';\nend\n", + "variables": { + "added": [ + { + "name": "application_name", + "value": "appname" + } + ] + } + }, + "expected_sql_file": "alter_function_add_parameter.sql" + }, + { + "type": "alter", + "name": "Alter function delete parameters.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "variables": { + "deleted": [ + { + "name": "application_name", + "value": true + } + ] + } + }, + "expected_sql_file": "alter_function_delete_parameter.sql", + "expected_msql_file": "alter_function_delete_parameter.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + }, + { + "type": "create", + "name": "Create function for acl.", + "endpoint": "NODE-function.obj", + "msql_endpoint": "NODE-function.msql", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "name": "Function2_$%{}[]()&*^!@\"'`\\/#", + "funcowner": "enterprisedb", + "pronamespace": 2200, + "prorettypename": "character varying", + "lanname": "plpgsql", + "provolatile": "v", + "proparallel": "u", + "prosecdef": true, + "arguments": [], + "procost": "100", + "prosrc": "begin\nselect '1';\nend", + "probin": "$libdir/", + "options": [], + "variables": [ + { + "name": "enable_sort", + "value": true + } + ], + "seclabels": [], + "acl": [], + "schema": "public" + }, + "expected_sql_file": "create_function_for_alter.sql", + "expected_msql_file": "create_function_for_alter.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "added": [ + { + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "enterprisedb", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_add_acl.sql", + "expected_msql_file": "alter_function_add_acl.msql" + }, + { + "type": "alter", + "name": "Alter function add acl.", + "endpoint": "NODE-function.obj_id", + "msql_endpoint": "NODE-function.msql_id", + "sql_endpoint": "NODE-function.sql_id", + "data": { + "acl": { + "deleted": [ + { + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + }, + { + "grantee": "enterprisedb", + "grantor": "enterprisedb", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ] + } + ] + } + }, + "expected_sql_file": "alter_function_delete_acl.sql", + "expected_msql_file": "alter_function_delete_acl.msql" + }, + { + "type": "delete", + "name": "Drop function", + "endpoint": "NODE-function.delete_id", + "data": { + } + } + ] +}