Re: explain analyze rows=%.0f
Andrei Lepikhov <lepihov@gmail.com>
From: Andrei Lepikhov <lepihov@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>,
Ilia Evdokimov <ilya.evdokimov@tantorlabs.com>
Cc: pgsql-hackers@lists.postgresql.org, Tom Lane <tgl@sss.pgh.pa.us>,
Matheus Alcantara <matheusssilv97@gmail.com>,
Guillaume Lelarge <guillaume@lelarge.info>,
Daniel Gustafsson <daniel@yesql.se>, Ibrar Ahmed <ibrar.ahmad@gmail.com>,
"Gregory Stark (as CFM)" <stark.cfm@gmail.com>,
Amit Kapila <amit.kapila16@gmail.com>, Justin Pryzby <pryzby@telsasoft.com>,
Peter Geoghegan <pg@bowt.ie>, vignesh C <vignesh21@gmail.com>,
"David G. Johnston" <david.g.johnston@gmail.com>,
Alena Rybakina <a.rybakina@postgrespro.ru>
Date: 2025-02-18T20:55:01Z
Lists: pgsql-hackers
On 17/2/2025 15:19, Robert Haas wrote: > On Mon, Feb 17, 2025 at 3:08 AM Ilia Evdokimov > if (nloops > 1) > > Instead of: > > if (nloops > 1 && rows_is_fractonal) > > I don't think it's really safe to just cast a double back to int64. In > practice, the number of tuples should never be large enough to > overflow int64, but if it did, this result would be nonsense. Also, if > the double ever lost precision, the result would be nonsense. If we > want to have an exact count of tuples, we ought to change ntuples and > ntuples2 to be uint64. But I don't think we should do that in this > patch, because that adds a whole bunch of new problems to worry about > and might cause us to get nothing committed. Instead, I think we > should just always show two decimal digits if there's more than one > loop. > > That's simpler than what the patch currently does and avoids this > problem. Perhaps it's objectionable for some other reason, but if so, > can somebody please spell out what that reason is so we can talk about > it? I can understand two decimal places. You might be concerned about potential issues with some codes that parse PostgreSQL explains. However, I believe it would be beneficial to display fractional parts only when iterations yield different numbers of tuples. Given that I often work with enormous explains, I think this approach would enhance the readability and comprehension of the output. Frequently, I may see only part of the EXPLAIN on the screen. A floating-point row number format may immediately give an idea about parameterisation (or another reason for the subtree's variability) and trace it down to the source. -- regards, Andrei Lepikhov
Commits
-
EXPLAIN: Always use two fractional digits for row counts.
- 95dbd827f2ed 18.0 landed
-
Adjust EXPLAIN test case to filter out "Actual Rows" values.
- 44cbba9a7f51 18.0 cited
-
Allow EXPLAIN to indicate fractional rows.
- ddb17e387aa2 18.0 landed
-
Fix pgbench performance issue induced by commit af35fe501.
- fb056564ec5b 18.0 cited