From cb95314be360173d305b9a20b2da3ee252fafca4 Mon Sep 17 00:00:00 2001 From: Pavel Borisov <63344111+pashkinelfe@users.noreply.github.com> Date: Thu, 8 Aug 2024 13:20:14 +0400 Subject: [PATCH] feat: add our updated fork of pg_backtrace (#1098) * feat: add our updated fork of pg_backtrace * Fix nix tests + use version 1.1 * test: use postgres release version for docker tag (#1099) * test: use postgres release version for docker tag * fix: ref the var correct * fix: use correct Dockerfile --------- Co-authored-by: Sam Rose --- .github/workflows/test.yml | 16 +++++---- .../postgresql_config/postgresql.conf.j2 | 2 +- common-nix.vars.pkr.hcl | 2 +- common.vars.pkr.hcl | 2 +- flake.nix | 1 + nix/ext/pg_backtrace.nix | 33 +++++++++++++++++++ .../expected/extensions_sql_interface.out | 6 ++-- nix/tests/postgresql.conf.in | 2 +- nix/tests/prime.sql | 1 + 9 files changed, 53 insertions(+), 12 deletions(-) create mode 100644 nix/ext/pg_backtrace.nix diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f2de89a82..be9c9a72d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,6 +23,10 @@ jobs: POSTGRES_PASSWORD: password steps: - uses: actions/checkout@v3 + - id: settings + # Remove spaces and quotes to get the raw version string + run: sed -r 's/(\s|\")+//g' common-nix.vars.pkr.hcl >> $GITHUB_OUTPUT + - id: args uses: mikefarah/yq@master with: @@ -36,14 +40,15 @@ jobs: with: load: true context: . + file: "Dockerfile-156" target: production build-args: | ${{ steps.args.outputs.result }} - tags: supabase/postgres:latest + tags: supabase/postgres:${{ steps.settings.outputs.postgres-version }} cache-from: | - type=gha,scope=${{ github.ref_name }}-latest-${{ matrix.arch }} - type=gha,scope=${{ github.base_ref }}-latest-${{ matrix.arch }} - cache-to: type=gha,mode=max,scope=${{ github.ref_name }}-latest-${{ matrix.arch }} + type=gha,scope=${{ github.ref_name }}-${{ steps.settings.outputs.postgres-version }}-${{ matrix.arch }} + type=gha,scope=${{ github.base_ref }}-${{ steps.settings.outputs.postgres-version }}-${{ matrix.arch }} + cache-to: type=gha,mode=max,scope=${{ github.ref_name }}-${{ steps.settings.outputs.postgres-version }}-${{ matrix.arch }} - name: Start Postgres run: | @@ -51,8 +56,7 @@ jobs: -e POSTGRES_PASSWORD=${{ env.POSTGRES_PASSWORD }} \ -p ${{ env.POSTGRES_PORT }}:5432 \ --name supabase_postgres \ - -d supabase/postgres:latest - + -d supabase/postgres:${{ steps.settings.outputs.postgres-version }} - name: Install psql run: | sudo apt update diff --git a/ansible/files/postgresql_config/postgresql.conf.j2 b/ansible/files/postgresql_config/postgresql.conf.j2 index ee16715a6..a9aa4daa1 100644 --- a/ansible/files/postgresql_config/postgresql.conf.j2 +++ b/ansible/files/postgresql_config/postgresql.conf.j2 @@ -688,7 +688,7 @@ default_text_search_config = 'pg_catalog.english' #local_preload_libraries = '' #session_preload_libraries = '' -shared_preload_libraries = 'pg_stat_statements, pg_stat_monitor, pgaudit, plpgsql, plpgsql_check, pg_cron, pg_net, pgsodium, timescaledb, auto_explain, pg_tle, plan_filter' # (change requires restart) +shared_preload_libraries = 'pg_stat_statements, pg_stat_monitor, pgaudit, plpgsql, plpgsql_check, pg_cron, pg_net, pgsodium, timescaledb, auto_explain, pg_tle, plan_filter, pg_backtrace' # (change requires restart) jit_provider = 'llvmjit' # JIT library to use # - Other Defaults - diff --git a/common-nix.vars.pkr.hcl b/common-nix.vars.pkr.hcl index 04eb9d52f..a08f56a2b 100644 --- a/common-nix.vars.pkr.hcl +++ b/common-nix.vars.pkr.hcl @@ -1 +1 @@ -postgres-version = "15.6.1.104" +postgres-version = "15.6.1.106" diff --git a/common.vars.pkr.hcl b/common.vars.pkr.hcl index 93db8ecd9..9246d05ae 100644 --- a/common.vars.pkr.hcl +++ b/common.vars.pkr.hcl @@ -1 +1 @@ -postgres-version = "15.1.1.86" +postgres-version = "15.1.1.88" diff --git a/flake.nix b/flake.nix index 5fb3dc0c9..4cd1992f2 100644 --- a/flake.nix +++ b/flake.nix @@ -102,6 +102,7 @@ ./nix/ext/postgis.nix ./nix/ext/pgrouting.nix ./nix/ext/pgtap.nix + ./nix/ext/pg_backtrace.nix ./nix/ext/pg_cron.nix ./nix/ext/pgsql-http.nix ./nix/ext/pg_plan_filter.nix diff --git a/nix/ext/pg_backtrace.nix b/nix/ext/pg_backtrace.nix new file mode 100644 index 000000000..b0169124c --- /dev/null +++ b/nix/ext/pg_backtrace.nix @@ -0,0 +1,33 @@ +{ lib, stdenv, fetchFromGitHub, postgresql }: + +stdenv.mkDerivation rec { + pname = "pg_backtrace"; + version = "1.1"; + + buildInputs = [ postgresql ]; + + src = fetchFromGitHub { + owner = "pashkinelfe"; + repo = pname; + rev = "d100bac815a7365e199263f5b3741baf71b14c70"; + hash = "sha256-IVCL4r4oj1Ams03D8y+XCFkckPFER/W9tQ68GkWQQMY="; + }; + + makeFlags = [ "USE_PGXS=1" ]; + + installPhase = '' + mkdir -p $out/{lib,share/postgresql/extension} + + cp *.so $out/lib + cp *.sql $out/share/postgresql/extension + cp *.control $out/share/postgresql/extension + ''; + + meta = with lib; { + description = "Updated fork of pg_backtrace"; + homepage = "https://github.com/pashkinelfe/pg_backtrace"; + maintainers = with maintainers; [ samrose ]; + platforms = postgresql.meta.platforms; + license = licenses.postgresql; + }; +} diff --git a/nix/tests/expected/extensions_sql_interface.out b/nix/tests/expected/extensions_sql_interface.out index 43ec69966..2f4c8385e 100644 --- a/nix/tests/expected/extensions_sql_interface.out +++ b/nix/tests/expected/extensions_sql_interface.out @@ -72,6 +72,7 @@ order by moddatetime | t old_snapshot | t pageinspect | t + pg_backtrace | t pg_buffercache | t pg_freespacemap | t pg_graphql | f @@ -120,7 +121,7 @@ order by vector | t wrappers | f xml2 | f -(77 rows) +(78 rows) /* @@ -1100,6 +1101,7 @@ order by pageinspect | public | page_header | page bytea, OUT lsn pg_lsn, OUT checksum smallint, OUT flags smallint, OUT lower integer, OUT upper integer, OUT special integer, OUT pagesize integer, OUT version smallint, OUT prune_xid xid | record pageinspect | public | tuple_data_split | rel_oid oid, t_data bytea, t_infomask integer, t_infomask2 integer, t_bits text | bytea[] pageinspect | public | tuple_data_split | rel_oid oid, t_data bytea, t_infomask integer, t_infomask2 integer, t_bits text, do_detoast boolean | bytea[] + pg_backtrace | public | pg_backtrace_init | | void pg_buffercache | public | pg_buffercache_pages | | SETOF record pg_freespacemap | public | pg_freespace | regclass, bigint | smallint pg_freespacemap | public | pg_freespace | rel regclass, OUT blkno bigint, OUT avail smallint | SETOF record @@ -5090,7 +5092,7 @@ order by xml2 | public | xpath_table | text, text, text, text, text | SETOF record xml2 | public | xslt_process | text, text | text xml2 | public | xslt_process | text, text, text | text -(4940 rows) +(4941 rows) /* diff --git a/nix/tests/postgresql.conf.in b/nix/tests/postgresql.conf.in index 7f4b51022..d2d667b9a 100644 --- a/nix/tests/postgresql.conf.in +++ b/nix/tests/postgresql.conf.in @@ -718,7 +718,7 @@ default_text_search_config = 'pg_catalog.english' #local_preload_libraries = '' #session_preload_libraries = '' -shared_preload_libraries = 'pg_stat_statements, pg_stat_monitor, pgaudit, plpgsql, plpgsql_check, pg_cron, pg_net, pgsodium, timescaledb, auto_explain, pg_tle, plan_filter' # (change requires restart) +shared_preload_libraries = 'pg_stat_statements, pg_stat_monitor, pgaudit, plpgsql, plpgsql_check, pg_cron, pg_net, pgsodium, timescaledb, auto_explain, pg_tle, plan_filter, pg_backtrace' # (change requires restart) jit_provider = 'llvmjit' # JIT library to use diff --git a/nix/tests/prime.sql b/nix/tests/prime.sql index a7c6d9e2f..23101262b 100644 --- a/nix/tests/prime.sql +++ b/nix/tests/prime.sql @@ -99,3 +99,4 @@ create extension xml2; +CREATE EXTENSION IF NOT EXISTS pg_backtrace;