Re: CLUSTER on partitioned index

From: Zhihong Yu <zyu(at)yugabyte(dot)com>
To: Justin Pryzby <pryzby(at)telsasoft(dot)com>
Cc: Michael Paquier <michael(at)paquier(dot)xyz>, 李杰(慎追) <adger(dot)lj(at)alibaba-inc(dot)com>, PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, 曾文旌(义从) <wenjing(dot)zwj(at)alibaba-inc(dot)com>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
Subject: Re: CLUSTER on partitioned index
Date: 2021-02-06 17:21:08
Message-ID: CALNJ-vRW-fUbgGpAWSBDR_iKbECH8Cw4quFdSq-LQXuhWkXHAg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,
For v7-0002-Implement-CLUSTER-of-partitioned-table.patch:

+ * We have to build the list in a different memory context so it
will
+ * survive the cross-transaction processing
+ */
+ old_context = MemoryContextSwitchTo(cluster_context);

cluster_context is not modified within the loop. Can the memory context
switching code be moved outside the loop ?

Cheers

On Sat, Feb 6, 2021 at 6:46 AM Justin Pryzby <pryzby(at)telsasoft(dot)com> wrote:

> On Mon, Jan 18, 2021 at 12:34:59PM -0600, Justin Pryzby wrote:
> > On Sat, Nov 28, 2020 at 08:03:02PM -0600, Justin Pryzby wrote:
> > > On Sun, Nov 15, 2020 at 07:53:35PM -0600, Justin Pryzby wrote:
> > > > On Wed, Nov 04, 2020 at 08:23:56PM -0600, Justin Pryzby wrote:
> > > > > On Tue, Oct 27, 2020 at 07:33:12PM -0500, Justin Pryzby wrote:
> > > > > > I'm attaching a counter-proposal to your catalog change, which
> preserves
> > > > > > indisclustered on children of clustered, partitioned indexes,
> and invalidates
> > > > > > indisclustered when attaching unclustered indexes.
> > > > >
> > > > > ..and now propagates CLUSTER ON to child indexes.
> > > > >
> > > > > I left this as separate patches to show what I mean and what's new
> while we
> > > > > discuss it.
> > > >
> > > > This fixes some omissions in the previous patch and error in its
> test cases.
> > > >
> > > > CLUSTER ON recurses to children, since I think a clustered parent
> index means
> > > > that all its child indexes are clustered. "SET WITHOUT CLUSTER"
> doesn't have
> > > > to recurse to children, but I did it like that for consistency and
> it avoids
> > > > the need to special case InvalidOid.
> > >
> > > The previous patch failed pg_upgrade when restoring a clustered,
> parent index,
> > > since it's marked INVALID until indexes have been built on all child
> tables, so
> > > CLUSTER ON was rejected on invalid index.
> > >
> > > So I think CLUSTER ON needs to be a separate pg_dump object, to allow
> attaching
> > > the child index (thereby making the parent "valid") to happen before
> SET
> > > CLUSTER on the parent index.
> >
> > Rebased on b5913f612 and now a3dc92600.
>
> This resolves ORDER BY test failure with COLLATE "C".
>
> --
> Justin
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2021-02-06 20:27:30 GlobalVisIsRemovableFullXid() vs GlobalVisCheckRemovableXid()
Previous Message Zhihong Yu 2021-02-06 17:10:00 Re: TRUNCATE on foreign table