From 5e7d9bac10f4d332e5a37a20371c38f3fd27e42b Mon Sep 17 00:00:00 2001 From: Chris Gwilliams <517923+encima@users.noreply.github.com> Date: Sun, 27 Sep 2026 21:26:15 +0300 Subject: [PATCH 1/5] feat: enable summarize_wal for all 17 and up servers --- ansible/files/postgresql_config/postgresql.conf.j2 | 6 ++++++ ansible/tasks/setup-postgres.yml | 7 +++++++ nix/tests/expected/z_17_wal_summarize.out | 5 +++++ nix/tests/sql/z_17_wal_summarize.sql | 1 + nix/tools/run-server.sh.in | 5 +++++ 5 files changed, 24 insertions(+) create mode 100644 nix/tests/expected/z_17_wal_summarize.out create mode 100644 nix/tests/sql/z_17_wal_summarize.sql diff --git a/ansible/files/postgresql_config/postgresql.conf.j2 b/ansible/files/postgresql_config/postgresql.conf.j2 index 154ec13416..8e1981b38e 100644 --- a/ansible/files/postgresql_config/postgresql.conf.j2 +++ b/ansible/files/postgresql_config/postgresql.conf.j2 @@ -250,6 +250,12 @@ checkpoint_flush_after = 256kB # measured in pages, 0 disables #archive_timeout = 0 # force a logfile segment switch after this # number of seconds; 0 disables +# - WAL Summarization - + +# PostgreSQL 17+ +summarize_wal = on # run WAL summarizer process? +#wal_summary_keep_time = '10d' # when to remove old summary files; 0 = never + # - Archive Recovery - # These are only used in recovery mode. diff --git a/ansible/tasks/setup-postgres.yml b/ansible/tasks/setup-postgres.yml index 1bcc0420e4..a630159672 100644 --- a/ansible/tasks/setup-postgres.yml +++ b/ansible/tasks/setup-postgres.yml @@ -94,6 +94,13 @@ loop_control: loop_var: 'pg_config_item' + - name: Disable summarize_wal on PG15 (GUC only exists from PG17) + when: psql_version == 'psql_15' + ansible.builtin.replace: + path: '/etc/postgresql/postgresql.conf' + regexp: '^summarize_wal = on' + replace: '#summarize_wal = on' + - name: Set data_directory to canonical path on data volume ansible.builtin.lineinfile: path: '/etc/postgresql/postgresql.conf' diff --git a/nix/tests/expected/z_17_wal_summarize.out b/nix/tests/expected/z_17_wal_summarize.out new file mode 100644 index 0000000000..6c60eef360 --- /dev/null +++ b/nix/tests/expected/z_17_wal_summarize.out @@ -0,0 +1,5 @@ +SELECT setting FROM pg_settings WHERE name = 'summarize_wal') = 'on' AS summarize_wal_default_ok; + summarize_wal_default_ok +-------------------------- + t +(1 row) diff --git a/nix/tests/sql/z_17_wal_summarize.sql b/nix/tests/sql/z_17_wal_summarize.sql new file mode 100644 index 0000000000..25507250d4 --- /dev/null +++ b/nix/tests/sql/z_17_wal_summarize.sql @@ -0,0 +1 @@ +SELECT setting FROM pg_settings WHERE name = 'summarize_wal') = 'on' AS summarize_wal_default_ok; diff --git a/nix/tools/run-server.sh.in b/nix/tools/run-server.sh.in index 6090cab8f0..bc1ca6900c 100644 --- a/nix/tools/run-server.sh.in +++ b/nix/tools/run-server.sh.in @@ -246,6 +246,11 @@ session_preload_libraries = 'supautils'" \ -e "s|include_dir = '/etc/postgresql-custom/conf.d'|include_dir = '$DATDIR/conf.d'|" \ "$PSQL_CONF_FILE" > "$DATDIR/postgresql.conf" +# summarize_wal is PostgreSQL 17+; PG15 refuses to start on an unknown GUC +if [ "$VERSION" == "15" ]; then + perl -pi -e 's/^summarize_wal = on/#$&/' "$DATDIR/postgresql.conf" +fi + # Function to configure OrioleDB specific settings orioledb_config_items() { if [[ "$1" = "orioledb-17" && "$CURRENT_SYSTEM" != "aarch64-darwin" ]]; then From 89e8b21362912da753b1416cfde5488437efdedb Mon Sep 17 00:00:00 2001 From: Chris Gwilliams <517923+encima@users.noreply.github.com> Date: Sun, 27 Sep 2026 21:27:13 +0300 Subject: [PATCH 2/5] feat: add tests on 17 to ensure it is enabled --- ansible/files/postgresql_config/postgresql.conf.j2 | 9 ++------- nix/checks.nix | 1 + nix/tests/expected/z_17_wal_summarize.out | 5 +++-- nix/tests/sql/z_17_wal_summarize.sql | 2 +- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/ansible/files/postgresql_config/postgresql.conf.j2 b/ansible/files/postgresql_config/postgresql.conf.j2 index 8e1981b38e..9219c14fd0 100644 --- a/ansible/files/postgresql_config/postgresql.conf.j2 +++ b/ansible/files/postgresql_config/postgresql.conf.j2 @@ -227,7 +227,8 @@ wal_level = logical # minimal, replica, or logical #wal_writer_delay = 200ms # 1-10000 milliseconds #wal_writer_flush_after = 1MB # measured in pages, 0 disables #wal_skip_threshold = 2MB - +summarize_wal = on # run WAL summarizer for 17 and up +#wal_summary_keep_time = '10d' # when to remove old summary files; 0 = never #commit_delay = 0 # range 0-100000, in microseconds #commit_siblings = 5 # range 1-1000 @@ -250,12 +251,6 @@ checkpoint_flush_after = 256kB # measured in pages, 0 disables #archive_timeout = 0 # force a logfile segment switch after this # number of seconds; 0 disables -# - WAL Summarization - - -# PostgreSQL 17+ -summarize_wal = on # run WAL summarizer process? -#wal_summary_keep_time = '10d' # when to remove old summary files; 0 = never - # - Archive Recovery - # These are only used in recovery mode. diff --git a/nix/checks.nix b/nix/checks.nix index 518aac5690..818342e19e 100644 --- a/nix/checks.nix +++ b/nix/checks.nix @@ -368,6 +368,7 @@ echo "port = ${pgPort}" echo "session_preload_libraries = 'supautils'" echo "dynamic_library_path = '${supautils}/lib:\$libdir'" + ${lib.optionalString (pgpkg.version != "15") ''echo "summarize_wal = on"''} } >> "$PGTAP_CLUSTER"/postgresql.conf echo "host all all 127.0.0.1/32 trust" >> "$PGTAP_CLUSTER/pg_hba.conf" log info "Checking shared_preload_libraries setting:" diff --git a/nix/tests/expected/z_17_wal_summarize.out b/nix/tests/expected/z_17_wal_summarize.out index 6c60eef360..80faf63270 100644 --- a/nix/tests/expected/z_17_wal_summarize.out +++ b/nix/tests/expected/z_17_wal_summarize.out @@ -1,5 +1,6 @@ -SELECT setting FROM pg_settings WHERE name = 'summarize_wal') = 'on' AS summarize_wal_default_ok; - summarize_wal_default_ok +SELECT (SELECT setting FROM pg_settings WHERE name = 'summarize_wal') = 'on' AS summarize_wal_default_ok; + summarize_wal_default_ok -------------------------- t (1 row) + diff --git a/nix/tests/sql/z_17_wal_summarize.sql b/nix/tests/sql/z_17_wal_summarize.sql index 25507250d4..eec068e11e 100644 --- a/nix/tests/sql/z_17_wal_summarize.sql +++ b/nix/tests/sql/z_17_wal_summarize.sql @@ -1 +1 @@ -SELECT setting FROM pg_settings WHERE name = 'summarize_wal') = 'on' AS summarize_wal_default_ok; +SELECT (SELECT setting FROM pg_settings WHERE name = 'summarize_wal') = 'on' AS summarize_wal_default_ok; From e34d6067161daa7df96d14e16b166fbee237baa3 Mon Sep 17 00:00:00 2001 From: Chris Gwilliams <517923+encima@users.noreply.github.com> Date: Sun, 27 Sep 2026 21:29:58 +0300 Subject: [PATCH 3/5] remove summarize_wal from 15 config --- Dockerfile-15 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile-15 b/Dockerfile-15 index 2bd2038fe5..6e0e08993f 100644 --- a/Dockerfile-15 +++ b/Dockerfile-15 @@ -144,7 +144,8 @@ RUN sed -i \ -e "s|#unix_socket_directories = '/tmp'|unix_socket_directories = '/var/run/postgresql'|g" \ -e "s|#session_preload_libraries = ''|session_preload_libraries = 'supautils'|g" \ -e "s|#include = '/etc/postgresql-custom/supautils.conf'|include = '/etc/postgresql-custom/supautils.conf'|g" \ - -e "s|#include = '/etc/postgresql-custom/wal-g.conf'|include = '/etc/postgresql-custom/wal-g.conf'|g" /etc/postgresql/postgresql.conf && \ + -e "s|#include = '/etc/postgresql-custom/wal-g.conf'|include = '/etc/postgresql-custom/wal-g.conf'|g" \ + -e "s|^summarize_wal = on|#&|g" /etc/postgresql/postgresql.conf && \ echo "pgsodium.getkey_script= '/usr/lib/postgresql/bin/pgsodium_getkey.sh'" >> /etc/postgresql/postgresql.conf && \ echo "vault.getkey_script= '/usr/lib/postgresql/bin/pgsodium_getkey.sh'" >> /etc/postgresql/postgresql.conf && \ chown -R postgres:postgres /etc/postgresql-custom From faed29b6fb2cea51db8ff9b551c0a1cf1bd316ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Boros?= Date: Sat, 10 Oct 2026 01:22:12 +0300 Subject: [PATCH 4/5] chore(ansible): restore blank line before commit_delay Co-Authored-By: Claude Sonnet 5.5 --- ansible/files/postgresql_config/postgresql.conf.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/files/postgresql_config/postgresql.conf.j2 b/ansible/files/postgresql_config/postgresql.conf.j2 index 5b255b9167..456a9a0320 100644 --- a/ansible/files/postgresql_config/postgresql.conf.j2 +++ b/ansible/files/postgresql_config/postgresql.conf.j2 @@ -232,6 +232,7 @@ output_plugin_libraries = 'pgoutput, test_decoding, wal2json' # allowlist of log #wal_skip_threshold = 2MB summarize_wal = on # run WAL summarizer for 17 and up #wal_summary_keep_time = '10d' # when to remove old summary files; 0 = never + #commit_delay = 0 # range 0-100000, in microseconds #commit_siblings = 5 # range 1-1000 From f162251aaae773fded56839c5c9709a4595f9d31 Mon Sep 17 00:00:00 2001 From: Chris Gwilliams <517923+encima@users.noreply.github.com> Date: Thu, 15 Oct 2026 17:58:58 +0300 Subject: [PATCH 5/5] fix: address comments --- Dockerfile-15 | 3 +- Dockerfile-17 | 1 + Dockerfile-orioledb-17 | 1 + .../postgresql_config/postgresql.conf.j2 | 2 +- ansible/tasks/setup-postgres.yml | 7 -- ansible/tasks/stage2-setup-postgres.yml | 6 ++ nix/checks.nix | 72 ++++++++----------- .../expected/z_orioledb-17_wal_summarize.out | 6 ++ nix/tests/sql/z_orioledb-17_wal_summarize.sql | 1 + nix/tools/run-server.sh.in | 4 +- 10 files changed, 50 insertions(+), 53 deletions(-) create mode 100644 nix/tests/expected/z_orioledb-17_wal_summarize.out create mode 100644 nix/tests/sql/z_orioledb-17_wal_summarize.sql diff --git a/Dockerfile-15 b/Dockerfile-15 index 6e0e08993f..2bd2038fe5 100644 --- a/Dockerfile-15 +++ b/Dockerfile-15 @@ -144,8 +144,7 @@ RUN sed -i \ -e "s|#unix_socket_directories = '/tmp'|unix_socket_directories = '/var/run/postgresql'|g" \ -e "s|#session_preload_libraries = ''|session_preload_libraries = 'supautils'|g" \ -e "s|#include = '/etc/postgresql-custom/supautils.conf'|include = '/etc/postgresql-custom/supautils.conf'|g" \ - -e "s|#include = '/etc/postgresql-custom/wal-g.conf'|include = '/etc/postgresql-custom/wal-g.conf'|g" \ - -e "s|^summarize_wal = on|#&|g" /etc/postgresql/postgresql.conf && \ + -e "s|#include = '/etc/postgresql-custom/wal-g.conf'|include = '/etc/postgresql-custom/wal-g.conf'|g" /etc/postgresql/postgresql.conf && \ echo "pgsodium.getkey_script= '/usr/lib/postgresql/bin/pgsodium_getkey.sh'" >> /etc/postgresql/postgresql.conf && \ echo "vault.getkey_script= '/usr/lib/postgresql/bin/pgsodium_getkey.sh'" >> /etc/postgresql/postgresql.conf && \ chown -R postgres:postgres /etc/postgresql-custom diff --git a/Dockerfile-17 b/Dockerfile-17 index b79dd3787c..755d9e4bea 100644 --- a/Dockerfile-17 +++ b/Dockerfile-17 @@ -152,6 +152,7 @@ RUN sed -i \ # Remove timescaledb and plv8 references (not in pg17) RUN sed -i 's/ timescaledb,//g;' "/etc/postgresql/postgresql.conf" && \ sed -i 's/db_user_namespace = off/#db_user_namespace = off/g;' "/etc/postgresql/postgresql.conf" && \ + sed -i 's/^#summarize_wal = off/summarize_wal = on/' "/etc/postgresql/postgresql.conf" && \ sed -i 's/ timescaledb,//g; s/ plv8,//g' "/etc/postgresql-custom/supautils.conf" # Include schema migrations diff --git a/Dockerfile-orioledb-17 b/Dockerfile-orioledb-17 index baf24e0ed3..407470816a 100644 --- a/Dockerfile-orioledb-17 +++ b/Dockerfile-orioledb-17 @@ -152,6 +152,7 @@ RUN sed -i \ # Remove timescaledb, plv8, postgis, pgrouting references (not available in orioledb build) RUN sed -i 's/ timescaledb,//g;' "/etc/postgresql/postgresql.conf" && \ sed -i 's/db_user_namespace = off/#db_user_namespace = off/g;' "/etc/postgresql/postgresql.conf" && \ + sed -i 's/^#summarize_wal = off/summarize_wal = on/' "/etc/postgresql/postgresql.conf" && \ sed -i 's/ timescaledb,//g; s/ plv8,//g; s/ postgis,//g; s/ pgrouting,//g' "/etc/postgresql-custom/supautils.conf" # OrioleDB configuration diff --git a/ansible/files/postgresql_config/postgresql.conf.j2 b/ansible/files/postgresql_config/postgresql.conf.j2 index 456a9a0320..ce37c8d9e7 100644 --- a/ansible/files/postgresql_config/postgresql.conf.j2 +++ b/ansible/files/postgresql_config/postgresql.conf.j2 @@ -230,7 +230,7 @@ output_plugin_libraries = 'pgoutput, test_decoding, wal2json' # allowlist of log #wal_writer_delay = 200ms # 1-10000 milliseconds #wal_writer_flush_after = 1MB # measured in pages, 0 disables #wal_skip_threshold = 2MB -summarize_wal = on # run WAL summarizer for 17 and up +#summarize_wal = off # PG17+ only; enabled at build time for 17 and up #wal_summary_keep_time = '10d' # when to remove old summary files; 0 = never #commit_delay = 0 # range 0-100000, in microseconds diff --git a/ansible/tasks/setup-postgres.yml b/ansible/tasks/setup-postgres.yml index c7e19eb0dd..9dd0ddcd9c 100644 --- a/ansible/tasks/setup-postgres.yml +++ b/ansible/tasks/setup-postgres.yml @@ -93,13 +93,6 @@ loop_control: loop_var: 'pg_config_item' - - name: Disable summarize_wal on PG15 (GUC only exists from PG17) - when: psql_version == 'psql_15' - ansible.builtin.replace: - path: '/etc/postgresql/postgresql.conf' - regexp: '^summarize_wal = on' - replace: '#summarize_wal = on' - - name: Set data_directory to canonical path on data volume ansible.builtin.lineinfile: path: '/etc/postgresql/postgresql.conf' diff --git a/ansible/tasks/stage2-setup-postgres.yml b/ansible/tasks/stage2-setup-postgres.yml index d4823238a7..704074f7fc 100644 --- a/ansible/tasks/stage2-setup-postgres.yml +++ b/ansible/tasks/stage2-setup-postgres.yml @@ -32,6 +32,12 @@ regexp: 'db_user_namespace\ =\ off' replace: '#db_user_namespace\ =\ off' + - name: Enable summarize_wal in postgresql.conf if orioledb-17 or 17 build + ansible.builtin.replace: + path: '/etc/postgresql/postgresql.conf' + regexp: '^#summarize_wal = off' + replace: 'summarize_wal = on' + - name: Execute things when is_psql_oriole and stage2 when: stage2 and is_psql_oriole become: true diff --git a/nix/checks.nix b/nix/checks.nix index 1a4b21a212..56031da80d 100644 --- a/nix/checks.nix +++ b/nix/checks.nix @@ -204,7 +204,6 @@ "pg_partman" "pg_repack" "pg_tle" - "pg_tle_dependencies" "pgtap" "pgmq" "pgroonga" @@ -221,10 +220,6 @@ "pg_cron_trigger_privileges" # needs pg_cron + the postgres role and cron-schema grants from the full migrations, not in the CLI prime file "supautils_restrict_versions" # needs the postgres role + primed hstore from the full migrations/prime, not present in the CLI variant "amcheck" # needs the postgres/anon/authenticated/service_role roles and the default privileges from the full migrations, plus amcheck primed by prime.sql - "output_plugin_libraries" # needs wal_level=logical + logical-decoding infra, not exercised in the CLI variant - "btree_gist_nan" # needs btree_gist, not in the CLI prime file - "hstore_copy_binary" # needs hstore - "pgrst_watch_triggers" # needs dblink, not in the CLI prime file # Version-specific extension tests "z_17_ext_interface" "z_17_pg_stat_monitor" @@ -261,23 +256,24 @@ "pipefail" ]; runtimeInputs = with pkgs; [ - bash coreutils - getkey-script - netcat + bash perl - pg_isolation_regress + pgpkg pg_prove pg_regress - pgpkg + pg_isolation_regress procps - python3 start-postgres-server-bin - supabase-groonga which + getkey-script + supabase-groonga + python3 + netcat ]; text = '' + #shellcheck disable=SC1091 source ${bashlog} #shellcheck disable=SC1091 @@ -369,48 +365,44 @@ substitute ${./tests/postgresql.conf.in} "$PGTAP_CLUSTER"/postgresql.conf \ --subst-var-by PGSODIUM_GETKEY_SCRIPT "${getkey-script}/bin/pgsodium-getkey" \ --subst-var-by PRELOAD_LIBRARIES "$PRELOAD_LIBRARIES" - - # Check if postgresql.conf exists - if [ ! -f "$PGTAP_CLUSTER/postgresql.conf" ]; then - log error "postgresql.conf is missing!" - exit 1 - fi - { echo "listen_addresses = '127.0.0.1'" echo "port = ${pgPort}" - - echo "dynamic_library_path = '${supautils}/lib:\$libdir'" - echo "output_plugin_libraries = 'pgoutput, test_decoding, wal2json'" echo "session_preload_libraries = 'supautils'" + echo "dynamic_library_path = '${supautils}/lib:\$libdir'" } >> "$PGTAP_CLUSTER"/postgresql.conf + echo "host all all 127.0.0.1/32 trust" >> "$PGTAP_CLUSTER/pg_hba.conf" + log info "Checking shared_preload_libraries setting:" + log info "$(grep -rn "shared_preload_libraries" "$PGTAP_CLUSTER"/postgresql.conf)" # Configure OrioleDB if running orioledb-17 check if ${lib.boolToString isOrioleDB}; then log info "Configuring OrioleDB..." - # Add orioledb to shared_preload_libraries perl -pi -e "s/(shared_preload_libraries = ')/\$1orioledb, /" "$PGTAP_CLUSTER/postgresql.conf" log info "OrioleDB added to shared_preload_libraries" + # orioledb-17 is pinned to 17.11+, which added output_plugin_libraries + # as an allow-list for logical decoding output plugins. + echo "output_plugin_libraries = 'pgoutput, test_decoding, wal2json'" >> "$PGTAP_CLUSTER/postgresql.conf" fi - log info "Checking shared_preload_libraries setting:" - log info "$(grep -rn "shared_preload_libraries" "$PGTAP_CLUSTER"/postgresql.conf)" - - log info "Configuring local auth" - echo "host all all 127.0.0.1/32 trust" >> "$PGTAP_CLUSTER/pg_hba.conf" + # Check if postgresql.conf exists + if [ ! -f "$PGTAP_CLUSTER/postgresql.conf" ]; then + log error "postgresql.conf is missing!" + exit 1 + fi # PostgreSQL startup if [[ "$(uname)" == "Darwin" ]]; then - log_cmd pg_ctl -D "$PGTAP_CLUSTER" -l "$PGTAP_CLUSTER/postgresql.log" -o "-k $PGTAP_CLUSTER -p ${pgPort} -d 5" start + log_cmd pg_ctl -D "$PGTAP_CLUSTER" -l "$PGTAP_CLUSTER/postgresql.log" -o "-k $PGTAP_CLUSTER -p ${pgPort} -d 5" start else - mkdir -p "$PGTAP_CLUSTER/sockets" - log_cmd pg_ctl -D "$PGTAP_CLUSTER" -l "$PGTAP_CLUSTER/postgresql.log" -o "-k $PGTAP_CLUSTER/sockets -p ${pgPort} -d 5" start + mkdir -p "$PGTAP_CLUSTER/sockets" + log_cmd pg_ctl -D "$PGTAP_CLUSTER" -l "$PGTAP_CLUSTER/postgresql.log" -o "-k $PGTAP_CLUSTER/sockets -p ${pgPort} -d 5" start fi || { - log error "pg_ctl failed to start PostgreSQL" - log error "Contents of postgresql.log:" - cat "$PGTAP_CLUSTER"/postgresql.log - exit 1 + log error "pg_ctl failed to start PostgreSQL" + log error "Contents of postgresql.log:" + cat "$PGTAP_CLUSTER"/postgresql.log + exit 1 } log info "Waiting for PostgreSQL to be ready..." @@ -911,12 +903,10 @@ ; devShell = self'.devShells.default; } - // pkgs.lib.optionalAttrs pkgs.stdenv.isLinux ( - import ./ext/tests { - inherit self; - inherit pkgs; - } - ) + // (import ./ext/tests { + inherit self; + inherit pkgs; + }) // pkgs.lib.optionalAttrs (pkgs.stdenv.isLinux) { inherit (self'.packages) postgresql_15_debug diff --git a/nix/tests/expected/z_orioledb-17_wal_summarize.out b/nix/tests/expected/z_orioledb-17_wal_summarize.out new file mode 100644 index 0000000000..80faf63270 --- /dev/null +++ b/nix/tests/expected/z_orioledb-17_wal_summarize.out @@ -0,0 +1,6 @@ +SELECT (SELECT setting FROM pg_settings WHERE name = 'summarize_wal') = 'on' AS summarize_wal_default_ok; + summarize_wal_default_ok +-------------------------- + t +(1 row) + diff --git a/nix/tests/sql/z_orioledb-17_wal_summarize.sql b/nix/tests/sql/z_orioledb-17_wal_summarize.sql new file mode 100644 index 0000000000..eec068e11e --- /dev/null +++ b/nix/tests/sql/z_orioledb-17_wal_summarize.sql @@ -0,0 +1 @@ +SELECT (SELECT setting FROM pg_settings WHERE name = 'summarize_wal') = 'on' AS summarize_wal_default_ok; diff --git a/nix/tools/run-server.sh.in b/nix/tools/run-server.sh.in index a75f892a6e..a38565d295 100644 --- a/nix/tools/run-server.sh.in +++ b/nix/tools/run-server.sh.in @@ -248,8 +248,8 @@ session_preload_libraries = 'supautils'" \ "$PSQL_CONF_FILE" > "$DATDIR/postgresql.conf" # summarize_wal is PostgreSQL 17+; PG15 refuses to start on an unknown GUC -if [ "$VERSION" == "15" ]; then - perl -pi -e 's/^summarize_wal = on/#$&/' "$DATDIR/postgresql.conf" +if [ "$VERSION" != "15" ]; then + perl -pi -e 's/^#summarize_wal = off/summarize_wal = on/' "$DATDIR/postgresql.conf" fi # Function to configure OrioleDB specific settings