From 252b3685a27a0f4c31a0f91e983c6314838e89e8 Mon Sep 17 00:00:00 2001 From: Stas Kelvich Date: Fri, 10 Mar 2023 12:39:35 +0200 Subject: [PATCH] Use `unsafe-postgres` feature to build pgx extension Recently added `unsafe-postgres` feature allows to build pgx extensions against postgres forks that decided to change their ABI name (like us). With that we can build extensions without forking them and using stock pgx. As this feature is new few manual version bumps were required. --- Dockerfile.compute-node | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Dockerfile.compute-node b/Dockerfile.compute-node index 12cd4fbbd1..fc65448323 100644 --- a/Dockerfile.compute-node +++ b/Dockerfile.compute-node @@ -323,7 +323,7 @@ RUN curl -sSO https://static.rust-lang.org/rustup/dist/$(uname -m)-unknown-linux chmod +x rustup-init && \ ./rustup-init -y --no-modify-path --profile minimal --default-toolchain stable && \ rm rustup-init && \ - cargo install --git https://github.com/vadim2404/pgx --branch neon_abi_v0.6.1 --locked cargo-pgx && \ + cargo install --locked --version 0.7.3 cargo-pgx && \ /bin/bash -c 'cargo pgx init --pg${PG_VERSION:1}=/usr/local/pgsql/bin/pg_config' USER root @@ -337,11 +337,11 @@ USER root FROM rust-extensions-build AS pg-jsonschema-pg-build -RUN git clone --depth=1 --single-branch --branch neon_abi_v0.1.4 https://github.com/vadim2404/pg_jsonschema/ && \ - cd pg_jsonschema && \ +# there is no release tag yet, but we need it due to the superuser fix in the control file +RUN wget https://github.com/supabase/pg_jsonschema/archive/caeab60d70b2fd3ae421ec66466a3abbb37b7ee6.tar.gz -O pg_jsonschema.tar.gz && \ + mkdir pg_jsonschema-src && cd pg_jsonschema-src && tar xvzf ../pg_jsonschema.tar.gz --strip-components=1 -C . && \ + sed -i 's/pgx = "0.7.1"/pgx = { version = "0.7.3", features = [ "unsafe-postgres" ] }/g' Cargo.toml && \ cargo pgx install --release && \ - # it's needed to enable extension because it uses untrusted C language - sed -i 's/superuser = false/superuser = true/g' /usr/local/pgsql/share/extension/pg_jsonschema.control && \ echo "trusted = true" >> /usr/local/pgsql/share/extension/pg_jsonschema.control ######################################################################################### @@ -353,8 +353,13 @@ RUN git clone --depth=1 --single-branch --branch neon_abi_v0.1.4 https://github. FROM rust-extensions-build AS pg-graphql-pg-build -RUN git clone --depth=1 --single-branch --branch neon_abi_v1.1.0 https://github.com/vadim2404/pg_graphql && \ - cd pg_graphql && \ +# Currently pgx version bump to >= 0.7.2 causes "call to unsafe function" compliation errors in +# pgx-contrib-spiext. There is a branch that removes that dependency, so use it. It is on the +# same 1.1 version we've used before. +RUN git clone -b remove-pgx-contrib-spiext --single-branch https://github.com/yrashk/pg_graphql && \ + cd pg_graphql && \ + sed -i 's/pgx = "~0.7.1"/pgx = { version = "0.7.3", features = [ "unsafe-postgres" ] }/g' Cargo.toml && \ + sed -i 's/pgx-tests = "~0.7.1"/pgx-tests = "0.7.3"/g' Cargo.toml && \ cargo pgx install --release && \ # it's needed to enable extension because it uses untrusted C language sed -i 's/superuser = false/superuser = true/g' /usr/local/pgsql/share/extension/pg_graphql.control && \ @@ -369,7 +374,7 @@ RUN git clone --depth=1 --single-branch --branch neon_abi_v1.1.0 https://github. FROM rust-extensions-build AS pg-tiktoken-pg-build -RUN git clone --depth=1 --single-branch --branch neon_abi https://github.com/vadim2404/pg_tiktoken && \ +RUN git clone --depth=1 --single-branch https://github.com/kelvich/pg_tiktoken && \ cd pg_tiktoken && \ cargo pgx install --release && \ echo "trusted = true" >> /usr/local/pgsql/share/extension/pg_tiktoken.control