public inbox for [email protected]  
help / color / mirror / Atom feed
From: Alexander Pyhalov <[email protected]>
To: Pgsql Hackers <[email protected]>
Cc: Justin Pryzby <[email protected]>
Subject: CREATE INDEX CONCURRENTLY on partitioned index
Date: Wed, 09 Feb 2022 15:20:54 +0300
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>

Alexander Pyhalov писал 2022-02-09 15:18:
> Hi.
> 
> I've looked at patches, introducing CREATE INDEX CONCURRENTLY for
> partitioned tables -
> https://www.postgresql.org/message-id/flat/20210226182019.GU20769%40telsasoft.com#da169a0a518bf81216...
> .
> The thread didn't have any activity for a year.
> 
> I've rebased patches and tried to fix issues I've seen. I've fixed
> reference after table_close() in the first patch (can be seen while
> building with CPPFLAGS='-DRELCACHE_FORCE_RELEASE'). Also merged old
> 0002-f-progress-reporting.patch and
> 0003-WIP-Add-SKIPVALID-flag-for-more-integration.patch. It seems the
> first one didn't really fixed issue with progress report (as
> ReindexRelationConcurrently() uses pgstat_progress_start_command(),
> which seems to mess up the effect of this command in DefineIndex()).
> Also third patch completely removes attempts to report create index
> progress correctly (reindex reports about individual commands, not the
> whole CREATE INDEX).
> 
> So I've added 0003-Try-to-fix-create-index-progress-report.patch,
> which tries to fix the mess with create index progress report. It
> introduces new flag REINDEXOPT_REPORT_PART to ReindexParams->options.
> Given this flag, ReindexRelationConcurrently() will not report about
> individual operations, but ReindexMultipleInternal() will report about
> reindexed partitions. To make the issue worse, some partitions can be
> handled in ReindexPartitions() and ReindexMultipleInternal() should
> know how many to correctly update PROGRESS_CREATEIDX_PARTITIONS_DONE
> counter, so we pass the number of handled partitions to it.
> 
> I also have question if in src/backend/commands/indexcmds.c:1239
> 1240                 oldcontext = MemoryContextSwitchTo(ind_context);
> 1239                 childidxs = RelationGetIndexList(childrel);
> 1241                 attmap =
> 1242                     
> build_attrmap_by_name(RelationGetDescr(childrel),
> 1243                                           parentDesc);
> 1244                 MemoryContextSwitchTo(oldcontext);
> 
> should live in ind_context, given that we iterate over this list of
> oids and immediately free it, but at least it shouldn't do much harm.

Sorry, messed the topic.
-- 
Best regards,
Alexander Pyhalov,
Postgres Professional






view thread (2+ messages)

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: CREATE INDEX CONCURRENTLY on partitioned index
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox