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)
|
if (inhSchema != NIL)
|
||||||
{
|
{
|
||||||
|
int schema_attno = 0;
|
||||||
|
|
||||||
foreach(entry, schema)
|
foreach(entry, schema)
|
||||||
{
|
{
|
||||||
ColumnDef *newdef = lfirst(entry);
|
ColumnDef *newdef = lfirst(entry);
|
||||||
char *attributeName = newdef->colname;
|
char *attributeName = newdef->colname;
|
||||||
int exist_attno;
|
int exist_attno;
|
||||||
|
|
||||||
|
schema_attno++;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Does it conflict with some previously inherited column?
|
* 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
|
* Yes, try to merge the two column definitions. They must
|
||||||
* have the same type, typmod, and collation.
|
* have the same type, typmod, and collation.
|
||||||
*/
|
*/
|
||||||
ereport(NOTICE,
|
if (exist_attno == schema_attno)
|
||||||
(errmsg("merging column \"%s\" with inherited definition",
|
ereport(NOTICE,
|
||||||
attributeName)));
|
(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);
|
def = (ColumnDef *) list_nth(inhSchema, exist_attno - 1);
|
||||||
typenameTypeIdAndMod(NULL, def->typeName, &defTypeId, &deftypmod);
|
typenameTypeIdAndMod(NULL, def->typeName, &defTypeId, &deftypmod);
|
||||||
typenameTypeIdAndMod(NULL, newdef->typeName, &newTypeId, &newtypmod);
|
typenameTypeIdAndMod(NULL, newdef->typeName, &newTypeId, &newtypmod);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user