On Mon, Feb 17, 2020 at 02:31:42PM +0900, Amit Langote wrote: > Hi Justin, > > On Fri, Feb 7, 2020 at 11:39 PM Justin Pryzby <pry...@telsasoft.com> wrote: > > On Thu, Feb 06, 2020 at 02:24:47PM -0300, Alvaro Herrera wrote: > > > On 2020-Feb-06, Justin Pryzby wrote: > > > > > > > I wondered if it wouldn't be better if CLUSTER ON was stored in > > > > pg_class as the > > > > Oid of a clustered index, rather than a boolean in pg_index. > > > > > > Maybe. Do you want to try a patch? > > > > I think the attached is 80% complete (I didn't touch pg_dump). > > > > One objection to this change would be that all relations (including indices) > > end up with relclustered fields, and pg_index already has a number of > > bools, so > > it's not like this one bool is wasting a byte. > > > > I think relisclustered was a's clever way of avoiding that overhead > > (c0ad5953). > > So I would be -0.5 on moving it to pg_class..
In case there's any confusion: "a's" was probably me halfway changing "someone's" to "a". > Are you still for fixing ALTER TABLE losing relisclustered with the > patch we were working on earlier [1], if not for moving relisclustered > to pg_class anymore? Thanks for remembering this one. I think your patch is the correct fix. I forgot to say it, but moving relisclustered to pg_class doesn't help to avoid losting indisclustered: it still needs a fix just like this. Anyway, I withdrew my suggestion for moving to pg_class, since it has more overhead, even for pg_class rows for relations which can't have indexes. > I have read elsewhere [2] that forcing ALTER TABLE to rewrite in > clustered order might not be a good option, but maybe that one is a > more radical proposal than this. Right; your fix seems uncontroversial. I ran into this (indisclustered) bug while starting to write that patch for "ALTER rewrite in clustered order". -- Justin