!6059 处理issue:【pg兼容性】给表创建视图,并给表增加一列,对表备份后用gs_restore恢复时报错
Merge pull request !6059 from lukeman/delete_issue
This commit is contained in:
@ -13280,6 +13280,8 @@ static ObjectAddress ATExecAddColumn(List** wqueue, AlteredTableInfo* tab, Relat
|
||||
query_str = CheckPgRewriteFirstAfter(rel);
|
||||
tab->rewrite |= AT_REWRITE_ALTER_PERSISTENCE;
|
||||
tab->is_first_after = true;
|
||||
} else if (rel->rd_rel->relkind == RELKIND_RELATION) {
|
||||
query_str = CheckPgRewriteFirstAfter(rel);
|
||||
}
|
||||
|
||||
InsertPgAttributeTuple(attrdesc, &attribute, NULL);
|
||||
@ -13322,6 +13324,19 @@ static ObjectAddress ATExecAddColumn(List** wqueue, AlteredTableInfo* tab, Relat
|
||||
|
||||
/* create or replace view */
|
||||
ReplaceViewQueryFirstAfter(query_str);
|
||||
} else if (rel->rd_rel->relkind == RELKIND_RELATION && query_str != NIL) {
|
||||
ListCell* viewinfo = NULL;
|
||||
bool isViewValid = true;
|
||||
foreach (viewinfo, query_str) {
|
||||
ViewInfoForAdd *info = (ViewInfoForAdd *)lfirst(viewinfo);
|
||||
isViewValid &= GetPgObjectValid(info->ev_class, OBJECT_TYPE_VIEW);
|
||||
if (!isViewValid) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isViewValid) {
|
||||
ReplaceViewQueryFirstAfter(query_str);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@ -3183,9 +3183,9 @@ ALTER TABLE test_at_modify_view_column MODIFY column f1 varchar(20), ADD COLUMN
|
||||
ERROR: cannot change data type of view column "f1" from integer to character varying(20)
|
||||
ALTER TABLE test_at_modify_view_column MODIFY column f1 int, ADD COLUMN f0 int;
|
||||
SELECT pg_get_viewdef('test_modify_view_star'::regclass);
|
||||
pg_get_viewdef
|
||||
--------------------------------------------
|
||||
SELECT * FROM test_at_modify_view_column;
|
||||
pg_get_viewdef
|
||||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
SELECT test_at_modify_view_column.f4, test_at_modify_view_column.f3, test_at_modify_view_column.f2, test_at_modify_view_column.f1 FROM test_at_modify_view_column;
|
||||
(1 row)
|
||||
|
||||
SELECT * FROM test_modify_view_star;
|
||||
@ -3388,9 +3388,9 @@ ALTER TABLE test_at_modify_view_column CHANGE column f1 c1 varchar(20), ADD COL
|
||||
ERROR: cannot change data type of view column "f1" from integer to character varying(20)
|
||||
ALTER TABLE test_at_modify_view_column CHANGE column f1 c1 int, ADD COLUMN f0 int;
|
||||
SELECT pg_get_viewdef('test_modify_view_star'::regclass);
|
||||
pg_get_viewdef
|
||||
--------------------------------------------
|
||||
SELECT * FROM test_at_modify_view_column;
|
||||
pg_get_viewdef
|
||||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
SELECT test_at_modify_view_column.f4, test_at_modify_view_column.f3, test_at_modify_view_column.f2, test_at_modify_view_column.c1 AS f1 FROM test_at_modify_view_column;
|
||||
(1 row)
|
||||
|
||||
SELECT * FROM test_modify_view_star;
|
||||
|
||||
@ -2787,9 +2787,9 @@ ALTER TABLE test_at_modify_view_column MODIFY column f1 varchar(20), ADD COLUMN
|
||||
ERROR: cannot change data type of view column "f1" from integer to character varying(20)
|
||||
ALTER TABLE test_at_modify_view_column MODIFY column f1 int, ADD COLUMN f0 int;
|
||||
SELECT pg_get_viewdef('test_modify_view_star'::regclass);
|
||||
pg_get_viewdef
|
||||
--------------------------------------------
|
||||
SELECT * FROM test_at_modify_view_column;
|
||||
pg_get_viewdef
|
||||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
SELECT test_at_modify_view_column.f4, test_at_modify_view_column.f3, test_at_modify_view_column.f2, test_at_modify_view_column.f1 FROM test_at_modify_view_column;
|
||||
(1 row)
|
||||
|
||||
SELECT * FROM test_modify_view_star;
|
||||
@ -2992,9 +2992,9 @@ ALTER TABLE test_at_modify_view_column CHANGE column f1 c1 varchar(20), ADD COL
|
||||
ERROR: cannot change data type of view column "f1" from integer to character varying(20)
|
||||
ALTER TABLE test_at_modify_view_column CHANGE column f1 c1 int, ADD COLUMN f0 int;
|
||||
SELECT pg_get_viewdef('test_modify_view_star'::regclass);
|
||||
pg_get_viewdef
|
||||
--------------------------------------------
|
||||
SELECT * FROM test_at_modify_view_column;
|
||||
pg_get_viewdef
|
||||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
SELECT test_at_modify_view_column.f4, test_at_modify_view_column.f3, test_at_modify_view_column.f2, test_at_modify_view_column.c1 AS f1 FROM test_at_modify_view_column;
|
||||
(1 row)
|
||||
|
||||
SELECT * FROM test_modify_view_star;
|
||||
|
||||
Reference in New Issue
Block a user