diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py index e1ec7cacf..f37e27adb 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py @@ -348,6 +348,8 @@ class PackageView(PGChildNodeView, SchemaDiffObjectCompare): priv = parse_priv_from_db(row) res['rows'][0].setdefault(row['deftype'], []).append(priv) + res['rows'][0]['schema'] = self.schema + return True, res['rows'][0] @check_precondition(action="create") @@ -593,8 +595,12 @@ class PackageView(PGChildNodeView, SchemaDiffObjectCompare): u'name' ] - if pkgid is not None and not sqltab: + if diff_schema: + data['schema'] = diff_schema + else: data['schema'] = self.schema + + if pkgid is not None and not sqltab: SQL = render_template( "/".join([self.template_path, 'properties.sql']), scid=scid, pkgid=pkgid) @@ -646,9 +652,6 @@ class PackageView(PGChildNodeView, SchemaDiffObjectCompare): if arg not in data: data[arg] = old_data[arg] - if diff_schema: - data['schema'] = diff_schema - SQL = render_template("/".join([self.template_path, 'update.sql']), data=data, o_data=old_data, conn=self.conn, is_schema_diff=diff_schema) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.1_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.1_plus/update.sql index c2786ddf3..ecef723b4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.1_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.1_plus/update.sql @@ -1,7 +1,9 @@ {% import 'macros/schemas/privilege.macros' as PRIVILEGE %} {% if data %} -{% if data.pkgheadsrc is defined and data.pkgheadsrc != o_data.pkgheadsrc and o_data.pkgbodysrc != None or (data.pkgbodysrc is defined and data.pkgbodysrc == '') %} +{% set recreate_pkg_body = false %} +{% if data.pkgbodysrc is defined and data.pkgbodysrc == '' %} +{% if is_schema_diff is defined and is_schema_diff != None %}{% set recreate_pkg_body = true %}{% endif %} DROP PACKAGE BODY {{ conn|qtIdent(data.schema,data.name) }}; {% endif %} {% if data.pkgheadsrc %} @@ -11,11 +13,13 @@ IS {{data.pkgheadsrc}} END {{ conn|qtIdent(data.name) }}; -{% if data.pkgbodysrc %} +{% endif %} +{% if data.pkgbodysrc or (o_data.pkgbodysrc and recreate_pkg_body) %} CREATE OR REPLACE PACKAGE BODY {{ conn|qtIdent(data.schema,data.name) }} IS -{{data.pkgbodysrc}} +{% if data.pkgbodysrc %}{{data.pkgbodysrc}}{% else %}{{o_data.pkgbodysrc}}{% endif %} + END {{ conn|qtIdent(data.name) }}; {% endif %} {% if data.pkgacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.2_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.2_plus/update.sql index ae117daab..ecef723b4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.2_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.2_plus/update.sql @@ -2,7 +2,7 @@ {% if data %} {% set recreate_pkg_body = false %} -{% if data.pkgheadsrc is defined and data.pkgheadsrc != o_data.pkgheadsrc and o_data.pkgbodysrc != None or (data.pkgbodysrc is defined and data.pkgbodysrc == '') %} +{% if data.pkgbodysrc is defined and data.pkgbodysrc == '' %} {% if is_schema_diff is defined and is_schema_diff != None %}{% set recreate_pkg_body = true %}{% endif %} DROP PACKAGE BODY {{ conn|qtIdent(data.schema,data.name) }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/10_plus/alter_package_headers_and_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/10_plus/alter_package_headers_and_comment.sql index ec8cdb7f4..e0772c498 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/10_plus/alter_package_headers_and_comment.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/10_plus/alter_package_headers_and_comment.sql @@ -1,21 +1,21 @@ -- Package: public.pkg_emp_$%{}[]()&*^!@"'`\/# --- DROP PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#"; +-- DROP PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#"; -CREATE OR REPLACE PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" +CREATE OR REPLACE PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS FUNCTION func1(v1 integer) RETURN integer; PROCEDURE proc1(v1 integer); END "pkg_emp_$%{}[]()&*^!@""'`\/#"; -CREATE OR REPLACE PACKAGE BODY "pkg_emp_$%{}[]()&*^!@""'`\/#" +CREATE OR REPLACE PACKAGE BODY public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS FUNCTION func1(v1 integer) RETURN integer IS BEGIN RETURN V1+10; END FUNC1; PROCEDURE proc1(v1 integer) IS BEGIN DBMS_OUTPUT.put_line(v1+50); END; END "pkg_emp_$%{}[]()&*^!@""'`\/#"; -GRANT EXECUTE ON PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" TO PUBLIC; +GRANT EXECUTE ON PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" TO PUBLIC; -COMMENT ON PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" +COMMENT ON PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS 'test comment updated'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/10_plus/create_package_with_all_options.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/10_plus/create_package_with_all_options.sql index b22e53c25..4f0e10742 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/10_plus/create_package_with_all_options.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/10_plus/create_package_with_all_options.sql @@ -1,23 +1,23 @@ -- Package: public.pkg_emp_$%{}[]()&*^!@"'`\/# --- DROP PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#"; +-- DROP PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#"; -CREATE OR REPLACE PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" +CREATE OR REPLACE PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS FUNCTION func1(v1 integer) RETURN integer; PROCEDURE proc1(v1 integer); END "pkg_emp_$%{}[]()&*^!@""'`\/#"; -CREATE OR REPLACE PACKAGE BODY "pkg_emp_$%{}[]()&*^!@""'`\/#" +CREATE OR REPLACE PACKAGE BODY public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS FUNCTION func1(v1 integer) RETURN integer IS BEGIN RETURN V1+10; END FUNC1; PROCEDURE proc1(v1 integer) IS BEGIN DBMS_OUTPUT.put_line(v1+50); END; END "pkg_emp_$%{}[]()&*^!@""'`\/#"; -GRANT EXECUTE ON PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" TO PUBLIC; +GRANT EXECUTE ON PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" TO PUBLIC; -GRANT EXECUTE ON PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" TO enterprisedb WITH GRANT OPTION; +GRANT EXECUTE ON PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" TO enterprisedb WITH GRANT OPTION; -COMMENT ON PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" +COMMENT ON PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS 'test comment'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/9.2_plus/alter_package_headers_and_comment.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/9.2_plus/alter_package_headers_and_comment.sql index d3d0ff4b0..3bcea43b4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/9.2_plus/alter_package_headers_and_comment.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/9.2_plus/alter_package_headers_and_comment.sql @@ -1,21 +1,21 @@ -- Package: public.pkg_emp_$%{}[]()&*^!@"'`\/# --- DROP PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#"; +-- DROP PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#"; -CREATE OR REPLACE PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" +CREATE OR REPLACE PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS FUNCTION func1(v1 integer) RETURN integer; PROCEDURE proc1(v1 integer); END "pkg_emp_$%{}[]()&*^!@""'`\/#"; -CREATE OR REPLACE PACKAGE BODY "pkg_emp_$%{}[]()&*^!@""'`\/#" +CREATE OR REPLACE PACKAGE BODY public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS FUNCTION func1(v1 integer) RETURN integer IS BEGIN RETURN V1+10; END; PROCEDURE proc1(v1 integer) IS BEGIN DBMS_OUTPUT.put_line(v1+50); END; END "pkg_emp_$%{}[]()&*^!@""'`\/#"; -GRANT EXECUTE ON PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" TO PUBLIC; +GRANT EXECUTE ON PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" TO PUBLIC; -COMMENT ON PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" +COMMENT ON PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS 'test comment updated'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/9.2_plus/create_package_with_all_options.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/9.2_plus/create_package_with_all_options.sql index 18c04007b..82156e332 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/9.2_plus/create_package_with_all_options.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/ppas/9.2_plus/create_package_with_all_options.sql @@ -1,23 +1,23 @@ -- Package: public.pkg_emp_$%{}[]()&*^!@"'`\/# --- DROP PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#"; +-- DROP PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#"; -CREATE OR REPLACE PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" +CREATE OR REPLACE PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS FUNCTION func1(v1 integer) RETURN integer; PROCEDURE proc1(v1 integer); END "pkg_emp_$%{}[]()&*^!@""'`\/#"; -CREATE OR REPLACE PACKAGE BODY "pkg_emp_$%{}[]()&*^!@""'`\/#" +CREATE OR REPLACE PACKAGE BODY public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS FUNCTION func1(v1 integer) RETURN integer IS BEGIN RETURN V1+10; END; PROCEDURE proc1(v1 integer) IS BEGIN DBMS_OUTPUT.put_line(v1+50); END; END "pkg_emp_$%{}[]()&*^!@""'`\/#"; -GRANT EXECUTE ON PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" TO PUBLIC; +GRANT EXECUTE ON PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" TO PUBLIC; -GRANT EXECUTE ON PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" TO enterprisedb WITH GRANT OPTION; +GRANT EXECUTE ON PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" TO enterprisedb WITH GRANT OPTION; -COMMENT ON PACKAGE "pkg_emp_$%{}[]()&*^!@""'`\/#" +COMMENT ON PACKAGE public."pkg_emp_$%{}[]()&*^!@""'`\/#" IS 'test comment';