On Fri, Mar 8, 2013 at 12:32 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Craig Ringer <craig@2ndquadrant.com> writes: > On 03/08/2013 10:55 AM, Michael Paquier wrote: >> Also, as it is not mandatory for a unique index to be a constraint, I >> think that we should block the creation of unique indexes too to avoid >> any problems. Any suggestions?
> How much does the planner benefit from the implied constraint of a > unique index? I almost wonder if it should be allowed at the cost of > making the refresh of a matview that fails to comply an error.
A unique constraint can allow join elimination, so I'm thinking that disallowing them is a bad idea (not to mention that it'd be a considerable wart in the code to block them for matviews only).
Fair argument.
The error message at refresh step should be more explicit though. I still have the feeling that users might be lost if a constraint introduced on matviews is failing during refresh with the current error message.