Fixed an issue where difference SQL is not seen in the schema diff tool for Types. Fixes #5302

This commit is contained in:
Akshay Joshi
2020-04-13 20:24:12 +05:30
parent df11f28593
commit 781b766ac4
15 changed files with 272 additions and 1 deletions

View File

@@ -378,6 +378,16 @@ def directory_diff(source_dict, target_dict, ignore_keys=[], difference={}):
difference[key] = source
elif len(source_dict[key]) > 0:
difference[key] = source_dict[key]
elif key in target_dict and type(target_dict[key]) is list:
# If no element in source dict then check for the element
# is available in target and the type is of list.
# Added such elements as a deleted.
tmp_tar_list = list(filter(
lambda x: type(x) == list or type(x) == dict,
target_dict[key]
))
if len(tmp_tar_list):
difference[key] = {'deleted': target_dict[key]}
if type(source) is dict and tmp_target and key in tmp_target and \
tmp_target[key] and len(tmp_target[key]) > 0:

View File

@@ -588,6 +588,12 @@ GRANT USAGE ON TYPE source.typ_comp_diff TO PUBLIC;
GRANT USAGE ON TYPE source.typ_comp_diff TO pg_monitor WITH GRANT OPTION;
GRANT USAGE ON TYPE source.typ_comp_diff TO postgres;
CREATE TYPE source.typ_comp_diff_no_column AS
(
);
ALTER TYPE source.typ_comp_diff_no_column
OWNER TO postgres;
-- Type Script ENUM type
CREATE TYPE source.typ_enum_src AS ENUM
('test_enum');

View File

@@ -551,6 +551,14 @@ CREATE TYPE target.typ_comp_diff AS
ALTER TYPE target.typ_comp_diff
OWNER TO postgres;
CREATE TYPE target.typ_comp_diff_no_column AS
(
a "char",
b "char"
);
ALTER TYPE target.typ_comp_diff_no_column
OWNER TO postgres;
-- Type Script ENUM type
CREATE TYPE target.typ_enum_tar AS ENUM
('test_enum');

View File

@@ -565,6 +565,48 @@ ALTER DOMAIN source.dom_type_diff
COMMENT ON DOMAIN source.dom_type_diff
IS 'Test comment';
-- Type Script composite type
CREATE TYPE source.typ_comp_src AS
(
m1 bit(5),
m2 text COLLATE pg_catalog."POSIX"
);
ALTER TYPE source.typ_comp_src
OWNER TO postgres;
CREATE TYPE source.typ_comp_diff AS
(
m1 numeric(5,2),
m3 character varying(30) COLLATE pg_catalog."C"
);
ALTER TYPE source.typ_comp_diff
OWNER TO postgres;
COMMENT ON TYPE source.typ_comp_diff
IS 'Test Comment';
GRANT USAGE ON TYPE source.typ_comp_diff TO PUBLIC;
GRANT USAGE ON TYPE source.typ_comp_diff TO pg_monitor WITH GRANT OPTION;
GRANT USAGE ON TYPE source.typ_comp_diff TO postgres;
CREATE TYPE source.typ_comp_diff_no_column AS
(
);
ALTER TYPE source.typ_comp_diff_no_column
OWNER TO postgres;
-- Type Script ENUM type
CREATE TYPE source.typ_enum_src AS ENUM
('test_enum');
ALTER TYPE source.typ_enum_src
OWNER TO postgres;
CREATE TYPE source.typ_enum_diff AS ENUM
('test_enum', 'test_enum_1');
ALTER TYPE source.typ_enum_diff
OWNER TO postgres;
COMMENT ON TYPE source.typ_enum_diff
IS 'Test Comment';
GRANT USAGE ON TYPE source.typ_enum_src TO pg_monitor WITH GRANT OPTION;
-- Type Script RANGE type
CREATE TYPE source.typ_range_src AS RANGE
(

View File

@@ -550,6 +550,14 @@ CREATE TYPE target.typ_comp_diff AS
ALTER TYPE target.typ_comp_diff
OWNER TO postgres;
CREATE TYPE target.typ_comp_diff_no_column AS
(
a "char",
b "char"
);
ALTER TYPE target.typ_comp_diff_no_column
OWNER TO postgres;
-- Type Script ENUM type
CREATE TYPE target.typ_enum_tar AS ENUM
('test_enum');

View File

@@ -566,6 +566,48 @@ ALTER DOMAIN source.dom_type_diff
COMMENT ON DOMAIN source.dom_type_diff
IS 'Test comment';
-- Type Script composite type
CREATE TYPE source.typ_comp_src AS
(
m1 bit(5),
m2 text COLLATE pg_catalog."POSIX"
);
ALTER TYPE source.typ_comp_src
OWNER TO postgres;
CREATE TYPE source.typ_comp_diff AS
(
m1 numeric(5,2),
m3 character varying(30) COLLATE pg_catalog."C"
);
ALTER TYPE source.typ_comp_diff
OWNER TO postgres;
COMMENT ON TYPE source.typ_comp_diff
IS 'Test Comment';
GRANT USAGE ON TYPE source.typ_comp_diff TO PUBLIC;
GRANT USAGE ON TYPE source.typ_comp_diff TO pg_monitor WITH GRANT OPTION;
GRANT USAGE ON TYPE source.typ_comp_diff TO postgres;
CREATE TYPE source.typ_comp_diff_no_column AS
(
);
ALTER TYPE source.typ_comp_diff_no_column
OWNER TO postgres;
-- Type Script ENUM type
CREATE TYPE source.typ_enum_src AS ENUM
('test_enum');
ALTER TYPE source.typ_enum_src
OWNER TO postgres;
CREATE TYPE source.typ_enum_diff AS ENUM
('test_enum', 'test_enum_1');
ALTER TYPE source.typ_enum_diff
OWNER TO postgres;
COMMENT ON TYPE source.typ_enum_diff
IS 'Test Comment';
GRANT USAGE ON TYPE source.typ_enum_src TO pg_monitor WITH GRANT OPTION;
-- Type Script RANGE type
CREATE TYPE source.typ_range_src AS RANGE
(

View File

@@ -539,6 +539,14 @@ CREATE TYPE target.typ_comp_diff AS
ALTER TYPE target.typ_comp_diff
OWNER TO postgres;
CREATE TYPE target.typ_comp_diff_no_column AS
(
a "char",
b "char"
);
ALTER TYPE target.typ_comp_diff_no_column
OWNER TO postgres;
-- Type Script ENUM type
CREATE TYPE target.typ_enum_tar AS ENUM
('test_enum');

View File

@@ -435,6 +435,46 @@ ALTER DOMAIN source.dom_type_diff
COMMENT ON DOMAIN source.dom_type_diff
IS 'Test comment';
-- Type Script composite type
CREATE TYPE source.typ_comp_src AS
(
m1 bit(5),
m2 text COLLATE pg_catalog."POSIX"
);
ALTER TYPE source.typ_comp_src
OWNER TO postgres;
CREATE TYPE source.typ_comp_diff AS
(
m1 numeric(5,2),
m3 character varying(30) COLLATE pg_catalog."C"
);
ALTER TYPE source.typ_comp_diff
OWNER TO postgres;
COMMENT ON TYPE source.typ_comp_diff
IS 'Test Comment';
GRANT USAGE ON TYPE source.typ_comp_diff TO PUBLIC;
GRANT USAGE ON TYPE source.typ_comp_diff TO postgres;
CREATE TYPE source.typ_comp_diff_no_column AS
(
);
ALTER TYPE source.typ_comp_diff_no_column
OWNER TO postgres;
-- Type Script ENUM type
CREATE TYPE source.typ_enum_src AS ENUM
('test_enum');
ALTER TYPE source.typ_enum_src
OWNER TO postgres;
CREATE TYPE source.typ_enum_diff AS ENUM
('test_enum', 'test_enum_1');
ALTER TYPE source.typ_enum_diff
OWNER TO postgres;
COMMENT ON TYPE source.typ_enum_diff
IS 'Test Comment';
-- Type Script RANGE type
CREATE TYPE source.typ_range_src AS RANGE
(

View File

@@ -459,6 +459,14 @@ CREATE TYPE target.typ_comp_diff AS
ALTER TYPE target.typ_comp_diff
OWNER TO postgres;
CREATE TYPE target.typ_comp_diff_no_column AS
(
a "char",
b "char"
);
ALTER TYPE target.typ_comp_diff_no_column
OWNER TO postgres;
-- Type Script ENUM type
CREATE TYPE target.typ_enum_tar AS ENUM
('test_enum');

View File

@@ -502,6 +502,48 @@ ALTER DOMAIN source.dom_type_diff
COMMENT ON DOMAIN source.dom_type_diff
IS 'Test comment';
-- Type Script composite type
CREATE TYPE source.typ_comp_src AS
(
m1 bit(5),
m2 text COLLATE pg_catalog."POSIX"
);
ALTER TYPE source.typ_comp_src
OWNER TO enterprisedb;
CREATE TYPE source.typ_comp_diff AS
(
m1 numeric(5,2),
m3 character varying(30) COLLATE pg_catalog."C"
);
ALTER TYPE source.typ_comp_diff
OWNER TO enterprisedb;
COMMENT ON TYPE source.typ_comp_diff
IS 'Test Comment';
GRANT USAGE ON TYPE source.typ_comp_diff TO PUBLIC;
GRANT USAGE ON TYPE source.typ_comp_diff TO pg_monitor WITH GRANT OPTION;
GRANT USAGE ON TYPE source.typ_comp_diff TO enterprisedb;
CREATE TYPE source.typ_comp_diff_no_column AS
(
);
ALTER TYPE source.typ_comp_diff_no_column
OWNER TO enterprisedb;
-- Type Script ENUM type
CREATE TYPE source.typ_enum_src AS ENUM
('test_enum');
ALTER TYPE source.typ_enum_src
OWNER TO enterprisedb;
CREATE TYPE source.typ_enum_diff AS ENUM
('test_enum', 'test_enum_1');
ALTER TYPE source.typ_enum_diff
OWNER TO enterprisedb;
COMMENT ON TYPE source.typ_enum_diff
IS 'Test Comment';
GRANT USAGE ON TYPE source.typ_enum_src TO pg_monitor WITH GRANT OPTION;
-- Type Script RANGE type
CREATE TYPE source.typ_range_src AS RANGE
(

View File

@@ -486,6 +486,14 @@ CREATE TYPE target.typ_comp_diff AS
ALTER TYPE target.typ_comp_diff
OWNER TO enterprisedb;
CREATE TYPE target.typ_comp_diff_no_column AS
(
a "char",
b "char"
);
ALTER TYPE target.typ_comp_diff_no_column
OWNER TO enterprisedb;
-- Type Script ENUM type
CREATE TYPE target.typ_enum_tar AS ENUM
('test_enum');

View File

@@ -436,6 +436,46 @@ ALTER DOMAIN source.dom_type_diff
COMMENT ON DOMAIN source.dom_type_diff
IS 'Test comment';
-- Type Script composite type
CREATE TYPE source.typ_comp_src AS
(
m1 bit(5),
m2 text COLLATE pg_catalog."POSIX"
);
ALTER TYPE source.typ_comp_src
OWNER TO enterprisedb;
CREATE TYPE source.typ_comp_diff AS
(
m1 numeric(5,2),
m3 character varying(30) COLLATE pg_catalog."C"
);
ALTER TYPE source.typ_comp_diff
OWNER TO enterprisedb;
COMMENT ON TYPE source.typ_comp_diff
IS 'Test Comment';
GRANT USAGE ON TYPE source.typ_comp_diff TO PUBLIC;
GRANT USAGE ON TYPE source.typ_comp_diff TO enterprisedb;
CREATE TYPE source.typ_comp_diff_no_column AS
(
);
ALTER TYPE source.typ_comp_diff_no_column
OWNER TO enterprisedb;
-- Type Script ENUM type
CREATE TYPE source.typ_enum_src AS ENUM
('test_enum');
ALTER TYPE source.typ_enum_src
OWNER TO enterprisedb;
CREATE TYPE source.typ_enum_diff AS ENUM
('test_enum', 'test_enum_1');
ALTER TYPE source.typ_enum_diff
OWNER TO enterprisedb;
COMMENT ON TYPE source.typ_enum_diff
IS 'Test Comment';
-- Type Script RANGE type
CREATE TYPE source.typ_range_src AS RANGE
(

View File

@@ -459,6 +459,14 @@ CREATE TYPE target.typ_comp_diff AS
ALTER TYPE target.typ_comp_diff
OWNER TO enterprisedb;
CREATE TYPE target.typ_comp_diff_no_column AS
(
a "char",
b "char"
);
ALTER TYPE target.typ_comp_diff_no_column
OWNER TO enterprisedb;
-- Type Script ENUM type
CREATE TYPE target.typ_enum_tar AS ENUM
('test_enum');