mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-30 19:00:29 +08:00
Issue clearer notice when inherited merged columns are moved
CREATE TABLE INHERIT moves user-specified columns to the location of the inherited column. Report by Fatal Majid
This commit is contained in:
parent
c1008f0037
commit
4011f8c98b
@ -1756,12 +1756,16 @@ MergeAttributes(List *schema, List *supers, char relpersistence,
|
||||
*/
|
||||
if (inhSchema != NIL)
|
||||
{
|
||||
int schema_attno = 0;
|
||||
|
||||
foreach(entry, schema)
|
||||
{
|
||||
ColumnDef *newdef = lfirst(entry);
|
||||
char *attributeName = newdef->colname;
|
||||
int exist_attno;
|
||||
|
||||
schema_attno++;
|
||||
|
||||
/*
|
||||
* Does it conflict with some previously inherited column?
|
||||
*/
|
||||
@ -1780,9 +1784,14 @@ MergeAttributes(List *schema, List *supers, char relpersistence,
|
||||
* Yes, try to merge the two column definitions. They must
|
||||
* have the same type, typmod, and collation.
|
||||
*/
|
||||
ereport(NOTICE,
|
||||
(errmsg("merging column \"%s\" with inherited definition",
|
||||
attributeName)));
|
||||
if (exist_attno == schema_attno)
|
||||
ereport(NOTICE,
|
||||
(errmsg("merging column \"%s\" with inherited definition",
|
||||
attributeName)));
|
||||
else
|
||||
ereport(NOTICE,
|
||||
(errmsg("moving and merging column \"%s\" with inherited definition", attributeName),
|
||||
errdetail("User-specified column moved to the position of the inherited column.")));
|
||||
def = (ColumnDef *) list_nth(inhSchema, exist_attno - 1);
|
||||
typenameTypeIdAndMod(NULL, def->typeName, &defTypeId, &deftypmod);
|
||||
typenameTypeIdAndMod(NULL, newdef->typeName, &newTypeId, &newtypmod);
|
||||
|
Loading…
Reference in New Issue
Block a user