#!/bin/sh set -eu role_status="$( psql \ --no-psqlrc \ --set ON_ERROR_STOP=1 \ --tuples-only \ --no-align \ --username "$POSTGRES_USER" \ --dbname "$POSTGRES_DB" <<'SQL' \getenv app_user APP_DB_USER SELECT CASE WHEN :'app_user' <> current_user AND EXISTS ( SELECT 1 FROM pg_catalog.pg_roles WHERE rolname = :'app_user' AND rolcanlogin AND NOT rolsuper AND NOT rolcreatedb AND NOT rolcreaterole AND rolinherit AND NOT rolreplication AND NOT rolbypassrls ) AND pg_catalog.pg_get_userbyid(( SELECT datdba FROM pg_catalog.pg_database WHERE datname = current_database() )) = :'app_user' AND NOT EXISTS ( SELECT 1 FROM pg_catalog.pg_auth_members AS membership JOIN pg_catalog.pg_roles AS member_role ON member_role.oid = membership.member WHERE member_role.rolname = :'app_user' ) THEN 1 ELSE 0 END; SQL )" test "$role_status" = "1"