Fixed following issues for packages:

1) Removing the package header removes the body as well.
  2) Schema is not visible on the properties dialog.
  3) Reverse engineering SQL and Create script not showing schema-qualified packages.

Fixes #5410
This commit is contained in:
Akshay Joshi 2020-04-21 16:49:23 +05:30
parent 8d4f3c07c7
commit f289dfb762
7 changed files with 37 additions and 30 deletions

View File

@ -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)

View File

@ -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 %}

View File

@ -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 %}

View File

@ -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';

View File

@ -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';

View File

@ -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';

View File

@ -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';