> I think Peter's got the error and the detail backwards. It should be > more like > > ERROR: "someview" cannot have constraints > DETAIL: "someview" is a view. > > If we do it like that, we need one ERROR message per error reason, > and one DETAIL per relkind, which should be manageable.
I support this idea. Here's a proof-of-concept patch that corresponds to one of the cases that Ashutosh was on about (specifically, the one that uses the RELKIND_CAN_HAVE_STORAGE macro I just added). If there are no objections to this approach, I'm going to complete it along these lines.
I put the new function at the bottom of heapam.c but I think it probably needs a better place.
BTW are there other opinions on the RELKIND_HAS_STORAGE vs. RELKIND_CAN_HAVE_STORAGE debate? I'm inclined to change it to the former.