New features

  • PGXSExtension module — a single config-driven module for testing
    out-of-tree PGXS extensions, keyed by a pgxs_extensions hash in the
    config (one entry per extension). New test extensions no longer need
    their own bespoke .pm file. The existing BlackholeFDW, FileTextArrayFDW
    and RedisFDW modules remain for now so existing configs keep working.
  • New branches-to-build tags UNRELEASED and HEAD_PLUS_UNRELEASED,
    covering branches between the time the tree is forked and a release is
    tagged.
  • CheckIndent can now run on any branch that loads it, not just HEAD.
  • locales entries can now be a hashref naming both the locale and the
    encoding, e.g. { locale => 'C', encoding => 'UTF8' }. Encodings are
    compared canonically.
  • Build result submission is retried (up to 5 times, 60 seconds apart) when
    the server answers with HTTP 503 "Backend Fetch Failed".
  • The client version number is now included in the user agent string.

PatchStack improvements

  • Apply the patch series with the patches repository's own
    import-series.pl driver when present, so the farm tests exactly what a
    release wrap produces. Otherwise apply with git apply rather than
    git quiltimport, at full context.
  • Decide whether a rebuild is needed from the net result of applying the
    series, so a branch is rebuilt when a patch it shares from another
    branch's directory (e.g. ../master/foo.patch) changes.
  • Resolve symlinked and shared patches via git plumbing.
  • New PGBuild::PatchSeries module for shared series reading, and a new
    check_patch_stack.pl script to check a patch stack.
  • Write a patch_stack.log for distinct display on the server.
  • Optional diagnostic snapshot of repository git state (diagnose => 1).
  • Clear stale git am state left behind by a failed or killed run, which
    previously caused every later run to fail on the first patch.
  • Don't send the previous run's stage logs when reporting a checkout
    failure.
  • Handle a series file with no entries.
  • Automatic git maintenance is forced off under git_use_workdirs, and the
    sample config now recommends turning git_use_workdirs off for
    PatchStack animals.

Log collection

  • Don't attach server and node logs to passing make/MSVC stages (only TAP
    regress_log_* files), matching the meson behaviour. On valgrind
    animals, logs reporting valgrind errors are still kept, and installcheck
    server logs are now checked for valgrind errors.
  • Don't resend the failure log when it is already in a stage log. (This
    needs a server that understands failed_stage_log.)

Cross-version upgrade

  • Pin the dump session time zone to UTC, so comparisons don't fail
    spuriously when saved data directories come from a machine in a
    different time zone.
  • Stop the server before bailing out on error.

Bug fixes

  • Fix use_vpath/using_meson handling for MSVC animals that prefer meson
    but fall back to the legacy MSVC build on branches without meson.build.
  • In PGXS TAP test directories, run only the TAP tests (from release 12,
    make check also ran the REGRESS and ISOLATION suites, which are run
    elsewhere).
  • Fixes for Windows with TAP and Unix sockets, and a backslash issue.
  • Remove a robocopy flag (/sec) that upset Windows 11.
  • Remove an unwanted system call in Dist.pm.

Housekeeping

  • Make LF the canonical line ending for text files.
  • perlcritic and perltidy cleanups.

 

The release is available at <https://github.com/PGBuildFarm/client-code/releases> or <https://buildfarm.postgresql.org/downloads/latest-client.tgz>