Hi,

On 17.11.2024 11:28, Egor Rogov wrote:
Hi everyone,

This thread doesn't seem to have attracted attention, so let me try again. Two documentation pages claim that B-tree is the only access method that supports parallel building, which is no longer true. I propose to fix it in a way like this:

diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index d54f9049569..b5b1580dee7 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -2835,7 +2835,7 @@ include_dir 'conf.d'
          Sets the maximum number of parallel workers that can be
          started by a single utility command.  Currently, the parallel
          utility commands that support the use of parallel workers are
-         <command>CREATE INDEX</command> only when building a B-tree index, +         <command>CREATE INDEX</command> when building a B-tree or BRIN index,
          and <command>VACUUM</command> without <literal>FULL</literal>
          option.  Parallel workers are taken from the pool of processes
          established by <xref linkend="guc-max-worker-processes"/>, limited diff --git a/doc/src/sgml/ref/create_index.sgml b/doc/src/sgml/ref/create_index.sgml
index 621bc0e253c..208389e8006 100644
--- a/doc/src/sgml/ref/create_index.sgml
+++ b/doc/src/sgml/ref/create_index.sgml
@@ -808,7 +808,7 @@ Indexes:
    leveraging multiple CPUs in order to process the table rows faster.
    This feature is known as <firstterm>parallel index
    build</firstterm>.  For index methods that support building indexes
-   in parallel (currently, only B-tree),
+   in parallel (currently, B-tree and BRIN),
    <varname>maintenance_work_mem</varname> specifies the maximum
    amount of memory that can be used by each index build operation as
    a whole, regardless of how many worker processes were started.


I've spotted another mention of B-tree being the only AM that supports parallel builds: comment in src/backend/catalog/index.c. As this mention is not visible to the users, I'd propose removing it altogether rather than fixing it. Updated patch is attached.



Thanks,
Egor


On 05.11.2024 12:12, Egor Rogov wrote:
Hi,

Commit b4375717 introduced parallel CREATE INDEX for BRIN. I've noticed that a couple of documentation pages need to be updated accordingly. A small patch is attached.

Thanks,
Egor
From 625fa1fbdce1746285d00dd26c632845ab775a51 Mon Sep 17 00:00:00 2001
From: Egor Rogov <e.ro...@postgrespro.ru>
Date: Sun, 8 Dec 2024 17:45:19 +0300
Subject: [PATCH] Doc and comment: parallel CREATE INDEX is allowed for BRIN

Commit b4375717 introduced parallel index build for BRIN,
but missed updating the documentation and code comment about it.
---
 doc/src/sgml/config.sgml           | 2 +-
 doc/src/sgml/ref/create_index.sgml | 2 +-
 src/backend/catalog/index.c        | 3 +--
 3 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index e0c8325a39c..24bd504c213 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -2843,7 +2843,7 @@ include_dir 'conf.d'
          Sets the maximum number of parallel workers that can be
          started by a single utility command.  Currently, the parallel
          utility commands that support the use of parallel workers are
-         <command>CREATE INDEX</command> only when building a B-tree index,
+         <command>CREATE INDEX</command> when building a B-tree or BRIN index,
          and <command>VACUUM</command> without <literal>FULL</literal>
          option.  Parallel workers are taken from the pool of processes
          established by <xref linkend="guc-max-worker-processes"/>, limited
diff --git a/doc/src/sgml/ref/create_index.sgml 
b/doc/src/sgml/ref/create_index.sgml
index 621bc0e253c..208389e8006 100644
--- a/doc/src/sgml/ref/create_index.sgml
+++ b/doc/src/sgml/ref/create_index.sgml
@@ -808,7 +808,7 @@ Indexes:
    leveraging multiple CPUs in order to process the table rows faster.
    This feature is known as <firstterm>parallel index
    build</firstterm>.  For index methods that support building indexes
-   in parallel (currently, only B-tree),
+   in parallel (currently, B-tree and BRIN),
    <varname>maintenance_work_mem</varname> specifies the maximum
    amount of memory that can be used by each index build operation as
    a whole, regardless of how many worker processes were started.
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 1c3a9e06d37..fc1c2a8d026 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -2988,8 +2988,7 @@ index_build(Relation heapRelation,
        Assert(PointerIsValid(indexRelation->rd_indam->ambuildempty));
 
        /*
-        * Determine worker process details for parallel CREATE INDEX.  
Currently,
-        * only btree has support for parallel builds.
+        * Determine worker process details for parallel CREATE INDEX.
         *
         * Note that planner considers parallel safety for us.
         */
-- 
2.37.1 (Apple Git-137.1)

Reply via email to