From: | Mankirat Singh <mankiratsingh1315(at)gmail(dot)com> |
---|---|
To: | pgsql-hackers(at)lists(dot)postgresql(dot)org |
Cc: | "David E(dot) Wheeler" <david(at)justatheory(dot)com> |
Subject: | Re: ABI Compliance Checker GSoC Project |
Date: | 2025-08-26 21:43:45 |
Message-ID: | CAOtk82SA4b7+yu54d3rtMD9uO6xU=P7XsySi20DGREeSB_d7DQ@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hello Hackers Again!
It's been a long time since we last had a talk and I have a good update on
this project.
If someone is new to this thread so for your context, initially I worked on
checking ABI breakages in PostgreSQL by comparing every two commits on the
stable branches using BuildFarm. But that turned out to be redundant since
finding the exact commit isn’t too hard. Based on community feedback, I
then shifted to a simpler approach by checking ABI breakages between the
latest commit of a stable branch and its latest tag.
A big thanks to my mentor, David Wheeler, who set up the BuildFarm animal
Baza on one of his servers to make the results for the ABICompCheck module
live.
Baza runs every 24 hours providing ABI Comparison results on all the STABLE
branches. You may check it out here[1]
The new ABICompCheck module for BuildFarm animals:
- Compares the latest commit on a stable branch with the latest tag (by
default).
- Also allows setting a specific baseline tag to compare against on a
particular branch.
- Lets the animal owner decide which binaries to compare (default:
libpq.so, postgres, and ecpg).
One of the sample outputs on REL_17_STABLE branch with the default binaries
mentioned above and REL_17_1 as the baseline tag[2] result the following
output:
Branch: REL_17_STABLE
Git HEAD: 49a09c6c51c0d642e87086bbc7eb748c200d3f43
Changes since: REL_17_1
latest_tag updated from REL_17_6 to REL_17_1
log files for step abi-compliance-check:
Leaf changes summary: 9 artifacts changed (1 filtered out)
Changed leaf types summary: 7 (1 filtered out) leaf types changed
Removed/Changed/Added functions summary: 1 Removed, 1 Changed, 0 Added
function (16 filtered out)
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added
variable
1 Removed function:
[D] 'function bool check_max_slot_wal_keep_size(int*, void**, GucSource)'
{check_max_slot_wal_keep_size}
1 function with some sub-type change:
[C] 'function void mdtruncate(SMgrRelation, ForkNumber, BlockNumber)' has
some sub-type changes:
parameter 4 of type 'typedef BlockNumber' was added
'struct IndexOptInfo' changed:
type size hasn't changed
there are data member changes:
type 'void (variadic parameter type)*' of
'IndexOptInfo::amcostestimate' changed:
pointer type changed from: 'void (variadic parameter type)*' to:
'void (PlannerInfo*, IndexPath*, double, Cost*, Cost*, Selectivity*,
double*, double*)*'
...list of all the other ABI changes and build logs for REL_17_1
The output starts with the branch name, latest commit SHA, and the tag used
for comparison.
If a different baseline tag is used, you’ll also see the log entry about
the tag change (and extra build logs for that tag).
If ABI differences are found, you’ll see "log files for step
abi-compliance-check:"; if not, you’ll see "no abi diffs found in this run"
(example [3]).
I do have some questions related to the module, that, should we include any
other binaries (besides postgres, ecpg, and libpq.so) in the default list?
Any suggestions or improvements for the module are also welcome. You can
check out the source and docs in the pull request [4].
I plan to work on false positives by adding abidiff suppression files per
branch (possibly managed in a community repo). I’d love to hear ideas on
this.
Although this is my last week under the official google summer of code
project timeline, I do plan to stay involved in the Postgres community and
work towards core database development in the future.
Regards,
Mankirat
[1] -
https://buildfarm.postgresql.org/cgi-bin/show_history.pl?nm=baza&br=REL_17_STABLE
[2] -
https://buildfarm.postgresql.org/cgi-bin/show_stage_log.pl?nm=baza&dt=2025-08-26%2000%3A12%3A11&stg=abi-compliance-check
[3] -
https://buildfarm.postgresql.org/cgi-bin/show_stage_log.pl?nm=baza&dt=2025-08-22%2012%3A59%3A39&stg=abi-compliance-check
[4] - https://github.com/PGBuildFarm/client-code/pull/38
From | Date | Subject | |
---|---|---|---|
Next Message | Jacob Champion | 2025-08-26 21:44:25 | Re: pgsql: oauth: Add unit tests for multiplexer handling |
Previous Message | Jacob Champion | 2025-08-26 21:18:05 | Re: pgsql: oauth: Add unit tests for multiplexer handling |