From 37fb0170b74a0a4e1ebf19c7228330d941202841 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 12 Nov 2011 18:49:15 -0500 Subject: [PATCH] In plpgsql, allow foreign tables to define row types. This seems to have been just an oversight in previous foreign-table work. A quick grep didn't turn up any other places where RELKIND_FOREIGN_TABLE was obviously omitted. One change noted by Alexander Soudakov, the other by me. Back-patch to 9.1. --- src/pl/plpgsql/src/pl_comp.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c index 75098ec6de..79ff6f5766 100644 --- a/src/pl/plpgsql/src/pl_comp.c +++ b/src/pl/plpgsql/src/pl_comp.c @@ -1721,12 +1721,13 @@ plpgsql_parse_cwordtype(List *idents) classStruct = (Form_pg_class) GETSTRUCT(classtup); /* - * It must be a relation, sequence, view, or type + * It must be a relation, sequence, view, composite type, or foreign table */ if (classStruct->relkind != RELKIND_RELATION && classStruct->relkind != RELKIND_SEQUENCE && classStruct->relkind != RELKIND_VIEW && - classStruct->relkind != RELKIND_COMPOSITE_TYPE) + classStruct->relkind != RELKIND_COMPOSITE_TYPE && + classStruct->relkind != RELKIND_FOREIGN_TABLE) goto done; /* @@ -1947,11 +1948,12 @@ build_row_from_class(Oid classOid) classStruct = RelationGetForm(rel); relname = RelationGetRelationName(rel); - /* accept relation, sequence, view, or composite type entries */ + /* accept relation, sequence, view, composite type, or foreign table */ if (classStruct->relkind != RELKIND_RELATION && classStruct->relkind != RELKIND_SEQUENCE && classStruct->relkind != RELKIND_VIEW && - classStruct->relkind != RELKIND_COMPOSITE_TYPE) + classStruct->relkind != RELKIND_COMPOSITE_TYPE && + classStruct->relkind != RELKIND_FOREIGN_TABLE) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("relation \"%s\" is not a table", relname))); -- 2.40.0