Re: Improve error reporting in 027_stream_regress test

Nazir Bilal Yavuz <byavuz81@gmail.com>

From: Nazir Bilal Yavuz <byavuz81@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Andres Freund <andres@anarazel.de>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-07-24T10:34:30Z
Lists: pgsql-hackers
Hi,

On Tue, 22 Jul 2025 at 03:56, Michael Paquier <michael@paquier.xyz> wrote:
>
> On Mon, Jul 21, 2025 at 11:53:00AM +0300, Nazir Bilal Yavuz wrote:
> > I realized that we actually don't trim the file, we do the opposite;
> > read the file from both ends. Sorry for not realizing earlier. I will
> > update the remaining patches according to that but I think trim_file()
> > is helpful, too. What do you think about adding both
>
> I did not review the contents of the patch yet, as I was rather unsure
> about the right semantics here.
>
> > ```
> > trim_file() -> trims $n lines from head or tail of the file and
> > returns the remaining lines.
> > read_file_ends() -> returns $n lines from head or tail of the file.
> > ```
> >
> > although trim_file() will not be used in these particular patches?
>
> And this made me wonder over the weekend if only showing the head
> and/or tail of a file is always the best set of properties.
> Then I came up that  this could be something close to what git-grep
> -A/-B is able to do.  For example, for a crash, it would be much
> cheaper to target a log entry that matches with what we see in the
> usual crash stacks, then print the surroundings.  The "trim" behavior
> you have proposed is a subset of that, where the matching patterns are
> the end and/or the beginning of the file to show.
>
> So the API could com down to a pattern matching, with "head" and
> "tail" being the optional number of lines we'd want to print around
> the pattern we are looking for.

That makes sense and could be really useful in more general cases but
I think that discussion might be better suited for a separate thread.

For this specific case, we are dealing with regression.diffs; which
already contains the relevant diff output. We don't need to search for
patterns here; we just want to include a small portion of the file in
the error message, to spare users from having to open the file
manually.

-- 
Regards,
Nazir Bilal Yavuz
Microsoft



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Improve error reporting of recovery test 027_stream_regress

  2. Add PostgreSQL::Test::Cluster::read_head_tail() helper to PostgreSQL/Utils.pm

  3. Handle timeout in PostgreSQL::Test::Cluster::is_alive()

  4. Check status of nodes after regression test run in 027_stream_regress

  5. Add PostgreSQL::Test::Cluster::is_alive()