Re: [HACKERS] WITH clause in CREATE STATISTICS
От | Alvaro Herrera |
---|---|
Тема | Re: [HACKERS] WITH clause in CREATE STATISTICS |
Дата | |
Msg-id | 20170512204800.iqt2uwyx3c32j45r@alvherre.pgsql обсуждение исходный текст |
Ответ на | Re: [HACKERS] WITH clause in CREATE STATISTICS (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: [HACKERS] WITH clause in CREATE STATISTICS
|
Список | pgsql-hackers |
Tom Lane wrote: > Although I've not done anything about it here, I'm not happy about the > handling of dependencies for stats objects. I do not think that cloning > RemoveStatistics as RemoveStatisticsExt is sane at all. The former is > meant to deal with cleaning up pg_statistic rows that we know will be > there, so there's no real need to expend pg_depend overhead to track them. > For objects that are only loosely connected, the right thing is to use > the dependency system; in particular, this design has no real chance of > working well with cross-table stats. Also, it's really silly to have > *both* this hard-wired mechanism and a pg_depend entry; the latter is > surely redundant if you have the former. IMO we should revert > RemoveStatisticsExt and instead handle things by making stats objects > auto-dependent on the individual column(s) they reference (not the whole > table). > > I'm also of the opinion that having an AUTO dependency, rather than > a NORMAL dependency, on the stats object's schema is the wrong semantics. > There isn't any other case where you can drop a non-empty schema without > saying CASCADE, and I'm mystified why this case should act that way. Here are two patches regarding handling of dependencies. The first one implements your first suggestion: add a NORMAL dependency on each column, and do away with RemoveStatisticsExt. This works well and should uncontroversial. If we only do this, then DROP TABLE needs to say CASCADE if there's a statistics object in the table. This seems pointless to me, so the second patch throws in an additional dependency on the table as a whole, AUTO this time, so that if the table is dropped, the statistics goes away without requiring cascade. There is no point in forcing CASCADE for this case, ISTM. This works well too, but I admit there might be resistance to doing it. OTOH this is how CREATE INDEX works. (I considered what would happen with a stats object covering multiple tables. I think it's reasonable to drop the stats too in that case, under the rationale that the object is no longer useful. Not really sure about this.) -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Вложения
В списке pgsql-hackers по дате отправления: