Обсуждение: Is user_catalog_table sensible for matviews?

Поиск
Список
Период
Сортировка

Is user_catalog_table sensible for matviews?

От
Tom Lane
Дата:
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



Re: Is user_catalog_table sensible for matviews?

От
Robert Haas
Дата:
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



Re: Is user_catalog_table sensible for matviews?

От
Craig Ringer
Дата:
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



Re: Is user_catalog_table sensible for matviews?

От
Andres Freund
Дата:
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



Re: Is user_catalog_table sensible for matviews?

От
Tom Lane
Дата:
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