mirror of
https://github.com/postgres/postgres.git
synced 2025-06-14 18:42:34 +03:00
Cause ALTER INDEX OWNER to generate a warning and do nothing, rather than
erroring out as it has done for the last couple weeks. Document that this form is now ignored because indexes can't usefully have different owners from their parent tables. Fix pg_dump to not generate ALTER OWNER commands for indexes.
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.167 2005/08/22 17:38:20 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.168 2005/08/22 19:40:09 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -5279,6 +5279,25 @@ ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing)
|
||||
/* ok to change owner */
|
||||
break;
|
||||
case RELKIND_INDEX:
|
||||
if (!recursing)
|
||||
{
|
||||
/*
|
||||
* Because ALTER INDEX OWNER used to be allowed, and in fact
|
||||
* is generated by old versions of pg_dump, we give a warning
|
||||
* and do nothing rather than erroring out. Also, to avoid
|
||||
* unnecessary chatter while restoring those old dumps, say
|
||||
* nothing at all if the command would be a no-op anyway.
|
||||
*/
|
||||
if (tuple_class->relowner != newOwnerId)
|
||||
ereport(WARNING,
|
||||
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
||||
errmsg("cannot change owner of index \"%s\"",
|
||||
NameStr(tuple_class->relname)),
|
||||
errhint("Change the ownership of the index's table, instead.")));
|
||||
/* quick hack to exit via the no-op path */
|
||||
newOwnerId = tuple_class->relowner;
|
||||
}
|
||||
break;
|
||||
case RELKIND_TOASTVALUE:
|
||||
if (recursing)
|
||||
break;
|
||||
|
Reference in New Issue
Block a user