Hi! Thank you for your valuable work on this!
On 11.02.2025 22:18, Ilia Evdokimov wrote:
On 11.02.2025 20:41, Robert Haas wrote:
On Tue, Feb 11, 2025 at 12:14 PM Andrei Lepikhov <lepi...@gmail.com>
wrote:
I support the idea in general, but I believe it should be expanded to
cover all cases of parameterised plan nodes. Each rescan iteration may
produce a different number of tuples, and rounding can obscure
important
data.
For example, consider five loops of a scan node: the first loop returns
nine tuples, and each other - zero tuples. When we calculate the
average, 9 divided by 5 equals 1.8. This results in an explanation that
indicates "rows = 1," masking almost 40% of the data.
Now, if we apply the same two loops but have a total of 900,000 tuples,
then 400,000 masked tuples represent a significant portion of the data.
Moreover, switching to a floating-point type for row explanations in
each parameterised node would provide a more comprehensive view and add
valuable information about the parameterisation of the node, which may
not be immediately apparent.
I agree strongly with all of this. I believe we should just implement
what was agreed here:
https://www.postgresql.org/message-id/21013.1243618236%40sss.pgh.pa.us
Let's just display 2 fractional digits when nloops>1, else 0, and
call it good.
Thank you for your review!
With such example, it's hard to disagree with it. This would really
add valuable information. Taking all opinions into account, I have
updated the patch v8. I have also included a check for the case where
there are only zeros after the decimal point. We do not want to
clutter the rows with unnecessary zeros.
I looked at the patch and agree with them. I would suggest adding a
description of how this can help in analyzing the query plans -
I think there is a lack of a description of the reason why this is done
in the commit message.
I would also add the same to the documentation with an example.
--
Regards,
Alena Rybakina
Postgres Professional