mirror of
https://github.com/postgres/postgres.git
synced 2025-05-01 01:04:50 +03:00
Update some more ObjectType switch statements to not have default
This allows the compiler to complain if a case has been missed. In these instances, the tradeoff of having to list a few unneeded cases to silence the compiler seems better than the risk of actually missing one. Discussion: https://www.postgresql.org/message-id/flat/fce5c98a-45da-19e7-dad0-21096bccd66e%40enterprisedb.com
This commit is contained in:
parent
adaf34241a
commit
aca9920409
@ -960,7 +960,7 @@ ObjectAddress
|
|||||||
get_object_address(ObjectType objtype, Node *object,
|
get_object_address(ObjectType objtype, Node *object,
|
||||||
Relation *relp, LOCKMODE lockmode, bool missing_ok)
|
Relation *relp, LOCKMODE lockmode, bool missing_ok)
|
||||||
{
|
{
|
||||||
ObjectAddress address;
|
ObjectAddress address = {InvalidOid, InvalidOid, 0};
|
||||||
ObjectAddress old_address = {InvalidOid, InvalidOid, 0};
|
ObjectAddress old_address = {InvalidOid, InvalidOid, 0};
|
||||||
Relation relation = NULL;
|
Relation relation = NULL;
|
||||||
uint64 inval_count;
|
uint64 inval_count;
|
||||||
@ -991,6 +991,7 @@ get_object_address(ObjectType objtype, Node *object,
|
|||||||
&relation, lockmode,
|
&relation, lockmode,
|
||||||
missing_ok);
|
missing_ok);
|
||||||
break;
|
break;
|
||||||
|
case OBJECT_ATTRIBUTE:
|
||||||
case OBJECT_COLUMN:
|
case OBJECT_COLUMN:
|
||||||
address =
|
address =
|
||||||
get_object_address_attribute(objtype, castNode(List, object),
|
get_object_address_attribute(objtype, castNode(List, object),
|
||||||
@ -1163,14 +1164,12 @@ get_object_address(ObjectType objtype, Node *object,
|
|||||||
missing_ok);
|
missing_ok);
|
||||||
address.objectSubId = 0;
|
address.objectSubId = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
/* no default, to let compiler warn about missing case */
|
||||||
elog(ERROR, "unrecognized object type: %d", (int) objtype);
|
|
||||||
/* placate compiler, in case it thinks elog might return */
|
|
||||||
address.classId = InvalidOid;
|
|
||||||
address.objectId = InvalidOid;
|
|
||||||
address.objectSubId = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!address.classId)
|
||||||
|
elog(ERROR, "unrecognized object type: %d", (int) objtype);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we could not find the supplied object, return without locking.
|
* If we could not find the supplied object, return without locking.
|
||||||
*/
|
*/
|
||||||
@ -2571,9 +2570,16 @@ check_object_ownership(Oid roleid, ObjectType objtype, ObjectAddress address,
|
|||||||
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
|
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
|
||||||
errmsg("must be superuser")));
|
errmsg("must be superuser")));
|
||||||
break;
|
break;
|
||||||
default:
|
case OBJECT_AMOP:
|
||||||
elog(ERROR, "unrecognized object type: %d",
|
case OBJECT_AMPROC:
|
||||||
(int) objtype);
|
case OBJECT_DEFAULT:
|
||||||
|
case OBJECT_DEFACL:
|
||||||
|
case OBJECT_PUBLICATION_NAMESPACE:
|
||||||
|
case OBJECT_PUBLICATION_REL:
|
||||||
|
case OBJECT_USER_MAPPING:
|
||||||
|
/* These are currently not supported or don't make sense here. */
|
||||||
|
elog(ERROR, "unsupported object type: %d", (int) objtype);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,10 +481,45 @@ does_not_exist_skipping(ObjectType objtype, Node *object)
|
|||||||
msg = gettext_noop("publication \"%s\" does not exist, skipping");
|
msg = gettext_noop("publication \"%s\" does not exist, skipping");
|
||||||
name = strVal(object);
|
name = strVal(object);
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
elog(ERROR, "unrecognized object type: %d", (int) objtype);
|
case OBJECT_COLUMN:
|
||||||
|
case OBJECT_DATABASE:
|
||||||
|
case OBJECT_FOREIGN_TABLE:
|
||||||
|
case OBJECT_INDEX:
|
||||||
|
case OBJECT_MATVIEW:
|
||||||
|
case OBJECT_ROLE:
|
||||||
|
case OBJECT_SEQUENCE:
|
||||||
|
case OBJECT_SUBSCRIPTION:
|
||||||
|
case OBJECT_TABLE:
|
||||||
|
case OBJECT_TABLESPACE:
|
||||||
|
case OBJECT_VIEW:
|
||||||
|
/*
|
||||||
|
* These are handled elsewhere, so if someone gets here the code
|
||||||
|
* is probably wrong or should be revisited.
|
||||||
|
*/
|
||||||
|
elog(ERROR, "unsupported object type: %d", (int) objtype);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OBJECT_AMOP:
|
||||||
|
case OBJECT_AMPROC:
|
||||||
|
case OBJECT_ATTRIBUTE:
|
||||||
|
case OBJECT_DEFAULT:
|
||||||
|
case OBJECT_DEFACL:
|
||||||
|
case OBJECT_DOMCONSTRAINT:
|
||||||
|
case OBJECT_LARGEOBJECT:
|
||||||
|
case OBJECT_PARAMETER_ACL:
|
||||||
|
case OBJECT_PUBLICATION_NAMESPACE:
|
||||||
|
case OBJECT_PUBLICATION_REL:
|
||||||
|
case OBJECT_TABCONSTRAINT:
|
||||||
|
case OBJECT_USER_MAPPING:
|
||||||
|
/* These are currently not used or needed. */
|
||||||
|
elog(ERROR, "unsupported object type: %d", (int) objtype);
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* no default, to let compiler warn about missing case */
|
||||||
}
|
}
|
||||||
|
if (!msg)
|
||||||
|
elog(ERROR, "unrecognized object type: %d", (int) objtype);
|
||||||
|
|
||||||
if (!args)
|
if (!args)
|
||||||
ereport(NOTICE, (errmsg(msg, name)));
|
ereport(NOTICE, (errmsg(msg, name)));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user