On Sat, 2024-09-28 at 00:04 +1200, David Rowley wrote:
> On Fri, 27 Sept 2024 at 20:42, Laurenz Albe <laurenz.albe@cybertec.at> wrote:
> > 2. The "disabled nodes" are not only shown at the nodes where nodes
> > were actually disabled, but also at every nodes above these nodes.
>
> I'm also not a fan either and I'd like to see this output improved.
>
> It seems like it's easy enough to implement some logic to detect when
> a given node is disabled just by checking if the disable_nodes count
> is higher than the sum of the disabled_node field of the node's
> children. If there are no children (a scan node) and disabed_nodes >
> 0 then it must be disabled. There's even a nice fast path where we
> don't need to check the children if disabled_nodes == 0.
>
> Here's a POC grade patch of how I'd rather see it looking.
>
> I opted to have a boolean field as I didn't see any need for an
> integer count. I also changed things around so we always display the
> boolean property in non-text EXPLAIN. Normally, we don't mind being
> more verbose there.
>
> I also fixed a bug in make_sort() where disabled_nodes isn't being set
> properly. I'll do an independent patch for that if this goes nowhere.
Thanks, and the patch looks good.
Why did you change "Disabled" from an integer to a boolean?
If you see a join where two plans were disabled, that's useful information.
I would still prefer to see the disabled nodes only in VERBOSE explain,
but I'm satisfied if the disabled nodes don't show up all over the place.
Yours,
Laurenz Albe