-
Notifications
You must be signed in to change notification settings - Fork 1.2k
chore: add postgres 18 beta1 #1344
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: add postgres 18 beta1 #1344
Conversation
Did you update this via
We've been pinned to LLVM 19 for all versions where we could for quite a while, so we just didn't change that. I went looking for a "recommended LLVM version" from upstream, and wasn't able to find one; the best I found was https://www.postgresql.org/docs/18/install-make.html#CONFIGURE-WITH-LLVM
(and that minimum is lower on other versions) My understanding of LLVM compatibility is that there are often compatibility issues when using newer versions (and that's part of why Debian's struggled so much with LLVM versions for the Trixie release, for example, and the fact that Alpine has so many versions in this latest release: https://pkgs.alpinelinux.org/packages?name=llvm%5B0-9%5D%5B0-9%5D&branch=v3.22&arch=x86_64 - all of 15-20), so I'd be hesitant to bump this without some evidence that it's probably fine to do so. |
After update/versions.sh created the 18 entry, I double-checked the repo and added s390x manually, as I wrote. |
See Lines 116 to 118 in 86e5040
s390x manually won't work (it'll fail at build time, not to mention @docker-library-bot immediately reverting that change post-merge).
|
I removed s390x. |
After some digging, the test failure is from this line: ++ echo 'SET jit = on; SELECT pg_jit_available();'
++ psql
++ docker run --rm -i --link postgres-container-2708-10581:postgres --entrypoint psql -e 'PGPASSWORD=my cool postgres password' postgres:18-test --host postgres --username 'my cool postgres user' --dbname 'my cool postgres database' --quiet --no-align --tuples-only
+ '[' f = t ']' And the "problem" is that + apt-get install -y --no-install-recommends postgresql-18=18~beta1-1.pgdg120+1
...
Recommended packages:
krb5-locales ca-certificates postgresql-18-jit sysstat So, we can either change the test to skip it for 18 or install the $ docker run -it --rm postgres:18-test bash
root@d80424019501:/# apt update
...
root@d80424019501:/# apt install postgresql-18-jit
...
The following additional packages will be installed:
libbsd0 libedit2 libllvm19 libz3-4
The following NEW packages will be installed:
libbsd0 libedit2 libllvm19 libz3-4 postgresql-18-jit
0 upgraded, 5 newly installed, 0 to remove and 2 not upgraded.
Need to get 43.2 MB of archives.
After this operation, 178 MB of additional disk space will be used. My vote is to not include |
I created a test fallback, on Alpine or if postgresql-18-jit has been installed then |
But this has to be documented, many users will expect a "full" Postgres image. |
Yeah, I'm not sure how we should handle this totally yet, but I think I'm pretty sold on the "default" variants being JIT-enabled. The appropriate question is probably whether "no-JIT" is useful enough to actually offer an alternative tag for, and what wrench the promise of future extensions also being extracted from the core throws in any tag naming convention we come up with. (All this especially when the "non-JIT" variants are very nearly the same size as the JIT-enabled Alpine variants.) For now, I think we should probably just continue to include JIT and we can consider non-JIT orthogonally. |
56b355c
to
84c8a38
Compare
I like JIT by default better too, inverted the last commit. |
84c8a38
to
08ab1eb
Compare
Rebased to update template instead of build time detection |
08ab1eb
to
d1e97f2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
I think we should probably wait to merge/publish this until we've got #1259 (or with it) so that we don't publish any versions of 18 that don't have that change. 👍
For the JIT issue, would it be possible to have an environmental variable, something like |
Build time dynamism has already been removed by reviewers and you want to introduce runtime dynamism to it? |
@reneleonhardt First of all, I have a few containers where I override the entrypoint to do some extra configurations, instead of creating a whole new image based on it, so it can be done, for what it's worth. Secondly, I too think JIT should be enabled and don't see a reason to exclude it, but you can always find someone that will think otherwise. Thirdly, I was just giving some ideas, whether it's a good one or a bad one is up to them to decide. Thirdly, |
Changes: - docker-library/postgres@6ec0e42: Merge pull request docker-library/postgres#1259 from infosiftr/pgdata-cluster - docker-library/postgres@2c6fe8d: Add logic to error out on detection of "old databases" - docker-library/postgres@b9a533c: Change `PGDATA` in 18+ to `/var/lib/postgresql/MAJOR/docker` - docker-library/postgres@c257dcc: Merge pull request docker-library/postgres#1344 from reneleonhardt/chore/add-postgres-18 - docker-library/postgres@d1e97f2: add postgres 18 beta1
Updates
Notes
Questions
It features LLVM 20, but the template downgrades to 19.