Re: Regression in statement locations
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Sami Imseih <samimseih@gmail.com>
Cc: David Steele <david@pgbackrest.org>, Pg Hackers <pgsql-hackers@postgresql.org>, Anthonin Bonnefoy <anthonin.bonnefoy@datadoghq.com>, jian he <jian.universality@gmail.com>
Date: 2025-05-20T03:59:13Z
Lists: pgsql-hackers
Attachments
- 0001-Fix-regression-with-statement-location-of-some-subqu.patch (text/x-diff) patch 0001
On Tue, May 20, 2025 at 08:38:47AM +0900, Michael Paquier wrote: > With the semicolon in place, stmt_len gets set for the last query of > the string. Still digging more.. And got it. The problem is that we are failing to update the statement location in a couple of cases with subqueries, and that we should handle (p_stmt_len == 0) as of using the remaining bytes in the string when a location is available, but the code was too aggressive in thinking that the length = 0 case should be always discarded. Once I have fixed that, I've been a bit puzzled by the difference in output in the tests of pg_overexplain, but I think that the new output is actually the correct one: the queries whose plan outputs have changed are passed as arguments of the explain_filter() function, hence the location of the inner queries point at the start location of the inner query instead of the start of the top-level query. Note that if you add a semicolon at the end of these three queries in the pg_overexplain tests, we finish with an end location reported. I have also played with 499edb0 reverted and noted that the results of pg_overexplain were inconsistent when the module has been originally introduced, with two queries choking a bit. -- Michael
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix regression with location calculation of nested statements
- 06450c7b8c70 18.0 landed