mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +03:00
Clarify error message and documentation related to typed tables.
We restrict typed tables (those declared as "OF composite_type") to be based on stand-alone composite types, not composite types that are the implicitly-created rowtypes of other tables. But if you tried to do that, you got the very confusing error message "type foo is not a composite type". Provide a more specific message for that case. Also clarify related documentation in the CREATE TABLE man page. Erik Wienhold and David G. Johnston, per complaint from Hannu Krosing. Discussion: https://postgr.es/m/CAMT0RQRysCb_Amy5CTENSc5GfsvXL1a4qX3mv_hx31_v74P==g@mail.gmail.com
This commit is contained in:
@ -6962,8 +6962,15 @@ check_of_type(HeapTuple typetuple)
|
||||
* the type before the typed table creation/conversion commits.
|
||||
*/
|
||||
relation_close(typeRelation, NoLock);
|
||||
|
||||
if (!typeOk)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
||||
errmsg("type %s is the row type of another table",
|
||||
format_type_be(typ->oid)),
|
||||
errdetail("A typed table must use a stand-alone composite type created with CREATE TYPE.")));
|
||||
}
|
||||
if (!typeOk)
|
||||
else
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
||||
errmsg("type %s is not a composite type",
|
||||
|
Reference in New Issue
Block a user