Skip to content

Commit f8bada6

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 f8bada6

13 files changed

+39
-13
lines changed

10/alpine/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

10/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

11/alpine/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

11/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

12/alpine/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

12/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

13/alpine/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

13/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

9.5/alpine/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

9.5/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

9.6/alpine/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

9.6/docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

docker-entrypoint.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ 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="$(POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" --tuples-only --command 'SELECT 1 FROM pg_database WHERE datname = :"db"')"
193+
if [ -z "$dbAlreadyExists" ]; then
192194
POSTGRES_DB= docker_process_sql --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
193195
CREATE DATABASE :"db" ;
194196
EOSQL

0 commit comments

Comments
 (0)