Re: EXPLAIN IndexOnlyScan shows disabled when enable_indexonlyscan=on - Mailing list pgsql-hackers

From David G. Johnston
Subject Re: EXPLAIN IndexOnlyScan shows disabled when enable_indexonlyscan=on
Date
Msg-id CAKFQuwa1+UNWDYRv=wTywjPJ=5E-U83yyiZokug0HQRncGHzQA@mail.gmail.com
Whole thread Raw
In response to EXPLAIN IndexOnlyScan shows disabled when enable_indexonlyscan=on  (Melanie Plageman <melanieplageman@gmail.com>)
Responses Re: EXPLAIN IndexOnlyScan shows disabled when enable_indexonlyscan=on
List pgsql-hackers
On Mon, Oct 28, 2024 at 3:54 PM David Rowley <dgrowleyml@gmail.com> wrote:
On Wed, 23 Oct 2024 at 13:51, David G. Johnston
<david.g.johnston@gmail.com> wrote:
> Went with a slightly different wording that seems to flow better with the xrefs I added between the two options.

-        Enables or disables the query planner's use of index-scan plan
-        types. The default is <literal>on</literal>.
+        Enables or disables the query planner's use of all index-scan
related plan

I'm concerned about the wording "all index-scan related".  It's not
that clear if that would include Bitmap Index Scans or not.

That was partially the point of writing "all" there - absent other information, and seeing how index-only scans were treated, I presumed it was indeed actually or effectively a switch for all.  If it is not it should be made clear which node types with the word index in them are not affected.

I think
it's better to explicitly mention index-only-scans to make it clear
which nodes are affected.

I hadn't considered Bitmap Index Scans but I would expect if you do not use index scans then the ability to produce bitmaps from them would be precluded.

I could see pointing out, in enable_bitmapscan, that enable_bitmapscan is effectively disabled (for index inputs) when enable_indexscan is set to off.  Then, in enable_indexscan, add a "see also" to enable_bitmapscan with a brief reason as well.

Is there a listing of all node types produced by PostgreSQL (with the explain output naming) along with which ones are affected by which enable_* knobs (possibly multiple for something like Bitmap Index Scan)?


+        types. The default is <literal>on</literal>. The
index-only-scan plan types
+        can be independently disabled by setting <xref
linkend="guc-enable-indexonlyscan"/>
+        to <literal>off</literal>.

I wondered if it's better to reference the enable_indexonlyscan GUC
here rather than document what enable_indexonlyscan does from the
enable_indexscan docs. Maybe just a "Also see enable_indexonlyscans."
could be added?

I prefer to briefly explain why we advise the reader to go "see also" here.


-        The default is <literal>on</literal>.
+        The default is <literal>on</literal>. However, this setting
has no effect if
+        <xref linkend="guc-enable-indexscan"/> is set to
<literal>off</literal>.

Could we just add "The <xref linkend="guc-enable-indexscan"/> setting
must also be enabled to have the query planner consider
index-only-scans"?

I'd like to stick with a conjunction there but agree the "must be enabled" wording is preferrable, avoiding the double-negative.

"The default is on, but the <xref> setting must also be enabled."

The 'to have the...' part seems to just be redundant.

David J.

pgsql-hackers by date:

Previous
From: KAZAR Ayoub
Date:
Subject: Questions About TODO: Issuing NOTICEs for row count differences in EXPLAIN ANALYZE
Next
From: David Rowley
Date:
Subject: Re: Questions About TODO: Issuing NOTICEs for row count differences in EXPLAIN ANALYZE