From 3e4b614cc1050e1634a3b03f785685e4b501a99a Mon Sep 17 00:00:00 2001 From: Florian Kamella Date: Mon, 18 Sep 2023 15:13:38 +0200 Subject: [PATCH] [bitnami/postgresql] Introduces environment variable POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION to change the global default transaction isolation level (#47819) * Introduce environment variable POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION (#25013) Signed-off-by: Florian Kamella * fixup: add new environment variable to postgresql-env.sh Signed-off-by: Florian Kamella --------- Signed-off-by: Florian Kamella Co-authored-by: Florian Kamella --- .../rootfs/opt/bitnami/scripts/postgresql-env.sh | 2 ++ .../rootfs/opt/bitnami/scripts/postgresql/run.sh | 4 ++++ .../rootfs/opt/bitnami/scripts/postgresql-env.sh | 2 ++ .../rootfs/opt/bitnami/scripts/postgresql/run.sh | 4 ++++ .../rootfs/opt/bitnami/scripts/postgresql-env.sh | 2 ++ .../rootfs/opt/bitnami/scripts/postgresql/run.sh | 4 ++++ .../rootfs/opt/bitnami/scripts/postgresql-env.sh | 2 ++ .../rootfs/opt/bitnami/scripts/postgresql/run.sh | 4 ++++ .../rootfs/opt/bitnami/scripts/postgresql-env.sh | 2 ++ .../rootfs/opt/bitnami/scripts/postgresql/run.sh | 4 ++++ bitnami/postgresql/README.md | 8 ++++++++ 11 files changed, 38 insertions(+) diff --git a/bitnami/postgresql/11/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh b/bitnami/postgresql/11/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh index d35ec5a62e51..e4fa8f525534 100644 --- a/bitnami/postgresql/11/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh +++ b/bitnami/postgresql/11/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh @@ -92,6 +92,7 @@ postgresql_env_vars=( POSTGRESQL_WAL_LEVEL POSTGRESQL_DEFAULT_TOAST_COMPRESSION POSTGRESQL_PASSWORD_ENCRYPTION + POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION POSTGRESQL_AUTOCTL_CONF_DIR POSTGRESQL_AUTOCTL_MODE POSTGRESQL_AUTOCTL_MONITOR_HOST @@ -327,6 +328,7 @@ export POSTGRESQL_POSTGRES_CONNECTION_LIMIT="${POSTGRESQL_POSTGRES_CONNECTION_LI export POSTGRESQL_WAL_LEVEL="${POSTGRESQL_WAL_LEVEL:-replica}" export POSTGRESQL_DEFAULT_TOAST_COMPRESSION="${POSTGRESQL_DEFAULT_TOAST_COMPRESSION:-}" export POSTGRESQL_PASSWORD_ENCRYPTION="${POSTGRESQL_PASSWORD_ENCRYPTION:-}" +export POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION="${POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION:-}" # pgAutoFailover settings export POSTGRESQL_AUTOCTL_VOLUME_DIR="${POSTGRESQL_VOLUME_DIR}/pgautoctl" diff --git a/bitnami/postgresql/11/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh b/bitnami/postgresql/11/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh index 249e9082e538..3273b4adf388 100755 --- a/bitnami/postgresql/11/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh +++ b/bitnami/postgresql/11/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh @@ -23,6 +23,10 @@ if [[ -n "${POSTGRESQL_EXTRA_FLAGS:-}" ]]; then flags+=("${extra_flags[@]}") fi +if [[ -n "${POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION:-}" ]]; then + flags+=("-c" "default_transaction_isolation=$POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION") +fi + flags+=("$@") cmd=$(command -v postgres) diff --git a/bitnami/postgresql/12/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh b/bitnami/postgresql/12/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh index d35ec5a62e51..e4fa8f525534 100644 --- a/bitnami/postgresql/12/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh +++ b/bitnami/postgresql/12/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh @@ -92,6 +92,7 @@ postgresql_env_vars=( POSTGRESQL_WAL_LEVEL POSTGRESQL_DEFAULT_TOAST_COMPRESSION POSTGRESQL_PASSWORD_ENCRYPTION + POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION POSTGRESQL_AUTOCTL_CONF_DIR POSTGRESQL_AUTOCTL_MODE POSTGRESQL_AUTOCTL_MONITOR_HOST @@ -327,6 +328,7 @@ export POSTGRESQL_POSTGRES_CONNECTION_LIMIT="${POSTGRESQL_POSTGRES_CONNECTION_LI export POSTGRESQL_WAL_LEVEL="${POSTGRESQL_WAL_LEVEL:-replica}" export POSTGRESQL_DEFAULT_TOAST_COMPRESSION="${POSTGRESQL_DEFAULT_TOAST_COMPRESSION:-}" export POSTGRESQL_PASSWORD_ENCRYPTION="${POSTGRESQL_PASSWORD_ENCRYPTION:-}" +export POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION="${POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION:-}" # pgAutoFailover settings export POSTGRESQL_AUTOCTL_VOLUME_DIR="${POSTGRESQL_VOLUME_DIR}/pgautoctl" diff --git a/bitnami/postgresql/12/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh b/bitnami/postgresql/12/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh index 249e9082e538..3273b4adf388 100755 --- a/bitnami/postgresql/12/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh +++ b/bitnami/postgresql/12/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh @@ -23,6 +23,10 @@ if [[ -n "${POSTGRESQL_EXTRA_FLAGS:-}" ]]; then flags+=("${extra_flags[@]}") fi +if [[ -n "${POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION:-}" ]]; then + flags+=("-c" "default_transaction_isolation=$POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION") +fi + flags+=("$@") cmd=$(command -v postgres) diff --git a/bitnami/postgresql/13/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh b/bitnami/postgresql/13/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh index d35ec5a62e51..e4fa8f525534 100644 --- a/bitnami/postgresql/13/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh +++ b/bitnami/postgresql/13/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh @@ -92,6 +92,7 @@ postgresql_env_vars=( POSTGRESQL_WAL_LEVEL POSTGRESQL_DEFAULT_TOAST_COMPRESSION POSTGRESQL_PASSWORD_ENCRYPTION + POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION POSTGRESQL_AUTOCTL_CONF_DIR POSTGRESQL_AUTOCTL_MODE POSTGRESQL_AUTOCTL_MONITOR_HOST @@ -327,6 +328,7 @@ export POSTGRESQL_POSTGRES_CONNECTION_LIMIT="${POSTGRESQL_POSTGRES_CONNECTION_LI export POSTGRESQL_WAL_LEVEL="${POSTGRESQL_WAL_LEVEL:-replica}" export POSTGRESQL_DEFAULT_TOAST_COMPRESSION="${POSTGRESQL_DEFAULT_TOAST_COMPRESSION:-}" export POSTGRESQL_PASSWORD_ENCRYPTION="${POSTGRESQL_PASSWORD_ENCRYPTION:-}" +export POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION="${POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION:-}" # pgAutoFailover settings export POSTGRESQL_AUTOCTL_VOLUME_DIR="${POSTGRESQL_VOLUME_DIR}/pgautoctl" diff --git a/bitnami/postgresql/13/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh b/bitnami/postgresql/13/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh index 249e9082e538..3273b4adf388 100755 --- a/bitnami/postgresql/13/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh +++ b/bitnami/postgresql/13/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh @@ -23,6 +23,10 @@ if [[ -n "${POSTGRESQL_EXTRA_FLAGS:-}" ]]; then flags+=("${extra_flags[@]}") fi +if [[ -n "${POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION:-}" ]]; then + flags+=("-c" "default_transaction_isolation=$POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION") +fi + flags+=("$@") cmd=$(command -v postgres) diff --git a/bitnami/postgresql/14/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh b/bitnami/postgresql/14/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh index d35ec5a62e51..e4fa8f525534 100644 --- a/bitnami/postgresql/14/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh +++ b/bitnami/postgresql/14/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh @@ -92,6 +92,7 @@ postgresql_env_vars=( POSTGRESQL_WAL_LEVEL POSTGRESQL_DEFAULT_TOAST_COMPRESSION POSTGRESQL_PASSWORD_ENCRYPTION + POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION POSTGRESQL_AUTOCTL_CONF_DIR POSTGRESQL_AUTOCTL_MODE POSTGRESQL_AUTOCTL_MONITOR_HOST @@ -327,6 +328,7 @@ export POSTGRESQL_POSTGRES_CONNECTION_LIMIT="${POSTGRESQL_POSTGRES_CONNECTION_LI export POSTGRESQL_WAL_LEVEL="${POSTGRESQL_WAL_LEVEL:-replica}" export POSTGRESQL_DEFAULT_TOAST_COMPRESSION="${POSTGRESQL_DEFAULT_TOAST_COMPRESSION:-}" export POSTGRESQL_PASSWORD_ENCRYPTION="${POSTGRESQL_PASSWORD_ENCRYPTION:-}" +export POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION="${POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION:-}" # pgAutoFailover settings export POSTGRESQL_AUTOCTL_VOLUME_DIR="${POSTGRESQL_VOLUME_DIR}/pgautoctl" diff --git a/bitnami/postgresql/14/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh b/bitnami/postgresql/14/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh index 249e9082e538..3273b4adf388 100755 --- a/bitnami/postgresql/14/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh +++ b/bitnami/postgresql/14/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh @@ -23,6 +23,10 @@ if [[ -n "${POSTGRESQL_EXTRA_FLAGS:-}" ]]; then flags+=("${extra_flags[@]}") fi +if [[ -n "${POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION:-}" ]]; then + flags+=("-c" "default_transaction_isolation=$POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION") +fi + flags+=("$@") cmd=$(command -v postgres) diff --git a/bitnami/postgresql/15/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh b/bitnami/postgresql/15/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh index d35ec5a62e51..e4fa8f525534 100644 --- a/bitnami/postgresql/15/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh +++ b/bitnami/postgresql/15/debian-11/rootfs/opt/bitnami/scripts/postgresql-env.sh @@ -92,6 +92,7 @@ postgresql_env_vars=( POSTGRESQL_WAL_LEVEL POSTGRESQL_DEFAULT_TOAST_COMPRESSION POSTGRESQL_PASSWORD_ENCRYPTION + POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION POSTGRESQL_AUTOCTL_CONF_DIR POSTGRESQL_AUTOCTL_MODE POSTGRESQL_AUTOCTL_MONITOR_HOST @@ -327,6 +328,7 @@ export POSTGRESQL_POSTGRES_CONNECTION_LIMIT="${POSTGRESQL_POSTGRES_CONNECTION_LI export POSTGRESQL_WAL_LEVEL="${POSTGRESQL_WAL_LEVEL:-replica}" export POSTGRESQL_DEFAULT_TOAST_COMPRESSION="${POSTGRESQL_DEFAULT_TOAST_COMPRESSION:-}" export POSTGRESQL_PASSWORD_ENCRYPTION="${POSTGRESQL_PASSWORD_ENCRYPTION:-}" +export POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION="${POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION:-}" # pgAutoFailover settings export POSTGRESQL_AUTOCTL_VOLUME_DIR="${POSTGRESQL_VOLUME_DIR}/pgautoctl" diff --git a/bitnami/postgresql/15/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh b/bitnami/postgresql/15/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh index 249e9082e538..3273b4adf388 100755 --- a/bitnami/postgresql/15/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh +++ b/bitnami/postgresql/15/debian-11/rootfs/opt/bitnami/scripts/postgresql/run.sh @@ -23,6 +23,10 @@ if [[ -n "${POSTGRESQL_EXTRA_FLAGS:-}" ]]; then flags+=("${extra_flags[@]}") fi +if [[ -n "${POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION:-}" ]]; then + flags+=("-c" "default_transaction_isolation=$POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION") +fi + flags+=("$@") cmd=$(command -v postgres) diff --git a/bitnami/postgresql/README.md b/bitnami/postgresql/README.md index 51184dbfb487..d53b6ab8b99c 100644 --- a/bitnami/postgresql/README.md +++ b/bitnami/postgresql/README.md @@ -181,6 +181,14 @@ Passing extra command-line flags to the postgresql service command is possible t * `POSTGRESQL_EXTRA_FLAGS`: Flags to be appended to the `postgres` startup command. No defaults +#### Adjusting the default transaction isolation level + +The default transaction isolation level in postgresql is `read committed`, the global default transaction isolation level can be changed using the environment variable `POSTGRESQL_DEFAULT_TRANSACTION_ISOLATION`. + +Possible values are: `read uncommitted`, `read committed`, `repeatable read` or `serializable`. For more details consult the documentation for `default_transaction_isolation` in + +*Note: Setting `default_transaction_isolation` via `POSTGRESQL_EXTRA_FLAGS` is currently only possible for transaction levels without white spaces in its name.* + ### Initializing a new instance When the container is executed for the first time, it will execute the files with extensions `.sh`, `.sql` and `.sql.gz` located at `/docker-entrypoint-initdb.d`.