Обсуждение: Is user_catalog_table sensible for matviews?
The system will let you set the "user_catalog_table" reloption to "true" on a materialized view. Is this sensible, or is it a bug caused by the fact that reloptions.c fails to distinguish matviews from heaps at all? If it is sensible, then I broke it in e3e66d8a9 ... regards, tom lane
On Wed, Nov 9, 2016 at 12:17 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > The system will let you set the "user_catalog_table" reloption to "true" > on a materialized view. Is this sensible, or is it a bug caused by the > fact that reloptions.c fails to distinguish matviews from heaps at all? > > If it is sensible, then I broke it in e3e66d8a9 ... I can understand what that combination of opens would mean from a semantic point of view, so I don't think it's insensible. However, it doesn't seem like an important combination to support, and I suspect that the fact that we did was accidental. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
On 10 November 2016 at 01:55, Robert Haas <robertmhaas@gmail.com> wrote: > On Wed, Nov 9, 2016 at 12:17 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> The system will let you set the "user_catalog_table" reloption to "true" >> on a materialized view. Is this sensible, or is it a bug caused by the >> fact that reloptions.c fails to distinguish matviews from heaps at all? >> >> If it is sensible, then I broke it in e3e66d8a9 ... > > I can understand what that combination of opens would mean from a > semantic point of view, so I don't think it's insensible. However, it > doesn't seem like an important combination to support, and I suspect > that the fact that we did was accidental. I think it'll work sanely, but I don't see why it's worth having. User catalogs are for data you'll want to see consistently during logical decoding. I don't see why anyone's going to need a matview at that point. Since it's also untested, I suggest disallowing user catalog matviews. -- Craig Ringer http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training & Services
On 2016-11-09 12:55:51 -0500, Robert Haas wrote: > On Wed, Nov 9, 2016 at 12:17 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > The system will let you set the "user_catalog_table" reloption to "true" > > on a materialized view. Is this sensible, or is it a bug caused by the > > fact that reloptions.c fails to distinguish matviews from heaps at all? > > > > If it is sensible, then I broke it in e3e66d8a9 ... > > I can understand what that combination of opens would mean from a > semantic point of view, so I don't think it's insensible. However, it > doesn't seem like an important combination to support, and I suspect > that the fact that we did was accidental. I don't see it as being important either. I suspect we intentionally didn't exclude it, but less because of a use-case and more because there didn't seem to be a need to. Andres
Andres Freund <andres@anarazel.de> writes: > On 2016-11-09 12:55:51 -0500, Robert Haas wrote: >> On Wed, Nov 9, 2016 at 12:17 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >>> The system will let you set the "user_catalog_table" reloption to "true" >>> on a materialized view. Is this sensible, or is it a bug caused by the >>> fact that reloptions.c fails to distinguish matviews from heaps at all? >>> If it is sensible, then I broke it in e3e66d8a9 ... >> I can understand what that combination of opens would mean from a >> semantic point of view, so I don't think it's insensible. However, it >> doesn't seem like an important combination to support, and I suspect >> that the fact that we did was accidental. > I don't see it as being important either. I suspect we intentionally > didn't exclude it, but less because of a use-case and more because there > didn't seem to be a need to. I think it's fundamentally wrong that reloptions.c doesn't distinguish matviews from heaps. You can argue about whether this particular case is okay or not, but sooner or later there's going to be an option that only applies to one of them. So I plan to invent RELOPT_KIND_MATVIEW while I'm rejiggering things to fix the rd_options type safety issue. Having done that, we could either allow this for matviews or not. I'm agnostic. However, unless we feel like back-patching some modification of e3e66d8a9, 9.5.x and 9.6.x are effectively not going to allow it (they'd take the option but then ignore it). I guess that's arguably a bug in itself. regards, tom lane