From c1dcf61ca29ea40ebd5092936f21b38ae2d5bf3b Mon Sep 17 00:00:00 2001 From: Vadim Kharitonov Date: Mon, 2 Oct 2023 16:52:45 +0200 Subject: [PATCH] Update pgx-ulid extension (#5382) - Update `pgx-ulid` from 0.1.0 to 0.1.3, and add it to Postgres 16 - Add `pg_tiktoken` to Postgres 16 image Closes #5374 --------- Co-authored-by: Alexander Bayandin --- Dockerfile.compute-node | 84 ++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/Dockerfile.compute-node b/Dockerfile.compute-node index 55eb9b7411..10bf550b50 100644 --- a/Dockerfile.compute-node +++ b/Dockerfile.compute-node @@ -614,15 +614,11 @@ RUN wget https://gitlab.com/dalibo/postgresql_anonymizer/-/archive/1.1.0/postgre ######################################################################################### # -# Layer "rust extensions" +# Layer "rust extensions" for older extension which hasn't been updated to `pgrx` yet # This layer is used to build `pgx` deps # -# FIXME: This needs to be updated to latest version of 'pgrx' (it was renamed from -# 'pgx' to 'pgrx') for PostgreSQL 16. And that in turn requires bumping the pgx -# dependency on all the rust extension that depend on it, too. -# ######################################################################################### -FROM build-deps AS rust-extensions-build +FROM build-deps AS rust-extensions-build-pgx COPY --from=pg-build /usr/local/pgsql/ /usr/local/pgsql/ RUN apt-get update && \ @@ -654,6 +650,34 @@ RUN case "${PG_VERSION}" in \ USER root +######################################################################################### +# +# Layer "rust extensions" +# This layer is used to build `pgrx` deps +# +######################################################################################### +FROM build-deps AS rust-extensions-build-pgrx +COPY --from=pg-build /usr/local/pgsql/ /usr/local/pgsql/ + +RUN apt-get update && \ + apt-get install -y curl libclang-dev cmake && \ + useradd -ms /bin/bash nonroot -b /home + +ENV HOME=/home/nonroot +ENV PATH="/home/nonroot/.cargo/bin:/usr/local/pgsql/bin/:$PATH" +USER nonroot +WORKDIR /home/nonroot +ARG PG_VERSION + +RUN curl -sSO https://static.rust-lang.org/rustup/dist/$(uname -m)-unknown-linux-gnu/rustup-init && \ + chmod +x rustup-init && \ + ./rustup-init -y --no-modify-path --profile minimal --default-toolchain stable && \ + rm rustup-init && \ + cargo install --locked --version 0.10.2 cargo-pgrx && \ + /bin/bash -c 'cargo pgrx init --pg${PG_VERSION:1}=/usr/local/pgsql/bin/pg_config' + +USER root + ######################################################################################### # # Layer "pg-jsonschema-pg-build" @@ -661,7 +685,7 @@ USER root # ######################################################################################### -FROM rust-extensions-build AS pg-jsonschema-pg-build +FROM rust-extensions-build-pgx AS pg-jsonschema-pg-build ARG PG_VERSION # caeab60d70b2fd3ae421ec66466a3abbb37b7ee6 made on 06/03/2023 @@ -690,7 +714,7 @@ RUN case "${PG_VERSION}" in \ # ######################################################################################### -FROM rust-extensions-build AS pg-graphql-pg-build +FROM rust-extensions-build-pgx AS pg-graphql-pg-build ARG PG_VERSION # b4988843647450a153439be367168ed09971af85 made on 22/02/2023 (from remove-pgx-contrib-spiext branch) @@ -724,24 +748,14 @@ RUN case "${PG_VERSION}" in \ # ######################################################################################### -FROM rust-extensions-build AS pg-tiktoken-pg-build +FROM rust-extensions-build-pgrx AS pg-tiktoken-pg-build ARG PG_VERSION -# 801f84f08c6881c8aa30f405fafbf00eec386a72 made on 10/03/2023 -RUN case "${PG_VERSION}" in \ - "v14" | "v15") \ - ;; \ - "v16") \ - echo "TODO: Not yet supported for PostgreSQL 16. Need to update pgrx dependencies" && exit 0 \ - ;; \ - *) \ - echo "unexpected PostgreSQL version" && exit 1 \ - ;; \ - esac && \ - wget https://github.com/kelvich/pg_tiktoken/archive/801f84f08c6881c8aa30f405fafbf00eec386a72.tar.gz -O pg_tiktoken.tar.gz && \ - echo "52f60ac800993a49aa8c609961842b611b6b1949717b69ce2ec9117117e16e4a pg_tiktoken.tar.gz" | sha256sum --check && \ +# 26806147b17b60763039c6a6878884c41a262318 made on 26/09/2023 +RUN wget https://github.com/kelvich/pg_tiktoken/archive/26806147b17b60763039c6a6878884c41a262318.tar.gz -O pg_tiktoken.tar.gz && \ + echo "e64e55aaa38c259512d3e27c572da22c4637418cf124caba904cd50944e5004e pg_tiktoken.tar.gz" | sha256sum --check && \ mkdir pg_tiktoken-src && cd pg_tiktoken-src && tar xvzf ../pg_tiktoken.tar.gz --strip-components=1 -C . && \ - cargo pgx install --release && \ + cargo pgrx install --release && \ echo "trusted = true" >> /usr/local/pgsql/share/extension/pg_tiktoken.control ######################################################################################### @@ -751,24 +765,18 @@ RUN case "${PG_VERSION}" in \ # ######################################################################################### -FROM rust-extensions-build AS pg-pgx-ulid-build +FROM rust-extensions-build-pgrx AS pg-pgx-ulid-build ARG PG_VERSION -RUN case "${PG_VERSION}" in \ - "v14" | "v15") \ - ;; \ - "v16") \ - echo "TODO: Not yet supported for PostgreSQL 16. Need to update pgrx dependencies" && exit 0 \ - ;; \ - *) \ - echo "unexpected PostgreSQL version" && exit 1 \ - ;; \ - esac && \ - wget https://github.com/pksunkara/pgx_ulid/archive/refs/tags/v0.1.0.tar.gz -O pgx_ulid.tar.gz && \ - echo "908b7358e6f846e87db508ae5349fb56a88ee6305519074b12f3d5b0ff09f791 pgx_ulid.tar.gz" | sha256sum --check && \ +RUN wget https://github.com/pksunkara/pgx_ulid/archive/refs/tags/v0.1.3.tar.gz -O pgx_ulid.tar.gz && \ + echo "ee5db82945d2d9f2d15597a80cf32de9dca67b897f605beb830561705f12683c pgx_ulid.tar.gz" | sha256sum --check && \ mkdir pgx_ulid-src && cd pgx_ulid-src && tar xvzf ../pgx_ulid.tar.gz --strip-components=1 -C . && \ - sed -i 's/pgx = "=0.7.3"/pgx = { version = "0.7.3", features = [ "unsafe-postgres" ] }/g' Cargo.toml && \ - cargo pgx install --release && \ + echo "******************* Apply a patch for Postgres 16 support; delete in the next release ******************" && \ + wget https://github.com/pksunkara/pgx_ulid/commit/f84954cf63fc8c80d964ac970d9eceed3c791196.patch && \ + patch -p1 < f84954cf63fc8c80d964ac970d9eceed3c791196.patch && \ + echo "********************************************************************************************************" && \ + sed -i 's/pgrx = "=0.10.2"/pgrx = { version = "=0.10.2", features = [ "unsafe-postgres" ] }/g' Cargo.toml && \ + cargo pgrx install --release && \ echo "trusted = true" >> /usr/local/pgsql/share/extension/ulid.control #########################################################################################