public inbox for [email protected]
help / color / mirror / Atom feedFrom: 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