Re: ALTER tbl rewrite loses CLUSTER ON index (consider moving indisclustered to pg_class)
Amit Langote <amitlangote09@gmail.com>
From: Amit Langote <amitlangote09@gmail.com>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2020-02-17T05:31:42Z
Lists: pgsql-hackers
Hi Justin, On Fri, Feb 7, 2020 at 11:39 PM Justin Pryzby <pryzby@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.. 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? 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. Thanks, Amit [1] https://postgr.es/m/CA%2BHiwqEt1HnXYckCdaO8%2BpOoFs7NNS5byoZ6Xg2B7epKbhS85w%40mail.gmail.com [2] https://postgr.es/m/10984.1581181029%40sss.pgh.pa.us
Commits
-
Refactor cluster.c to use new routine get_index_isclustered()
- 8ef9451f58ee 13.0 landed
-
Preserve clustered index after rewrites with ALTER TABLE
- 3f77a670241d 9.5.22 landed
- 61a161fe4421 9.6.18 landed
- cef2b8d52c59 10.13 landed
- 41faafbd75a5 11.8 landed
- 3e62dd3a937b 12.3 landed
- a40caf5f862c 13.0 landed
-
Preserve replica identity index across ALTER TABLE rewrite
- 1cc9c2412cc9 13.0 cited
-
Remove RangeIOData->typiofunc
- a77315fdf2a1 13.0 cited
-
Preserve pg_index.indisclustered across REINDEX CONCURRENTLY
- f087d63a45b5 12.3 landed
- d79fb88ac738 13.0 landed