Skip to content

Commit 11e397d

Browse files
committed
Do not try to create databases that already exist
We were already checking for whether `POSTGRES_DB` was set to `postgres`, but this was the underlying motivation for that check (and it turns out that this applies for values of at least `template0` and `template1` as well).
1 parent 3690694 commit 11e397d

13 files changed

+91
-13
lines changed

10/alpine/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

10/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

11/alpine/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

11/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

12/alpine/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

12/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

13/alpine/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

13/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

9.5/alpine/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

9.5/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

9.6/alpine/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

9.6/docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

docker-entrypoint.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,13 @@ docker_process_sql() {
188188
# create initial database
189189
# uses environment variables for input: POSTGRES_DB
190190
docker_setup_db() {
191-
if [ "$POSTGRES_DB" != 'postgres' ]; then
191+
local dbAlreadyExists
192+
dbAlreadyExists="$(
193+
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only <<-'EOSQL'
194+
SELECT 1 FROM pg_database WHERE datname = :'db' ;
195+
EOSQL
196+
)"
197+
if [ -z "$dbAlreadyExists" ]; then
192198
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193199
CREATE DATABASE :"db" ;
194200
EOSQL

0 commit comments

Comments
 (0)