Example (you need up-to-the-minute HEAD for this particular test case, but anything that runs a little while before failing will do):
regression=# \timing Timing is on. regression=# select * from generate_series('2022-01-01 00:00'::timestamptz, 'infinity'::timestamptz, '1 month'::interval) limit 10; ERROR: timestamp out of range Time: 0.000 ms
That timing is wrong. It visibly takes more-or-less half a second on my machine, and v14 psql reports that accurately:
regression=# \timing Timing is on. regression=# select * from generate_series('2022-01-01 00:00'::timestamptz, 'infinity'::timestamptz, '1 month'::interval) limit 10; ERROR: timestamp out of range Time: 662.107 ms
While I've not bisected, I think it's a dead cinch that 7844c9918 is what broke this.
That's true. It happens in ExecQueryAndProcessResults(), when we try to show all query results. If some error occured for a certain result, we failed to check whether this is the last result and if so get timing measure before printing that result.