lemmy/scripts/start_dev_db.sh

52 lines
1.5 KiB
Bash
Raw Normal View History

# This script is meant to be run with `source` so it can set environment variables.
export PGDATA="$PWD/dev_pgdata"
export PGHOST=$PWD
export LEMMY_DATABASE_URL="postgresql://lemmy:password@/lemmy?host=$PWD"
# If cluster exists, stop the server and delete the cluster
2023-12-15 20:25:38 +00:00
if [[ -d $PGDATA ]]
then
2023-12-15 20:25:38 +00:00
# Only stop server if it is running
(pg_ctl status > /dev/null) || pg_status_exit_code=$?
if [[ ${pg_status_exit_code} -ne 3 ]]
then
pg_ctl stop
fi
rm -rf $PGDATA
fi
2023-12-16 20:52:19 +00:00
config_args=(
2023-12-16 05:15:08 +00:00
# Only listen to socket in current directory
2023-12-16 20:52:19 +00:00
-c listen_addresses=
-c unix_socket_directories=$PWD
2023-12-16 05:15:08 +00:00
# Write logs to a file in $PGDATA/log
2023-12-16 20:52:19 +00:00
-c logging_collector=on
2023-12-16 05:15:08 +00:00
# Log all query plans by default
2023-12-16 20:52:19 +00:00
-c session_preload_libraries=auto_explain
-c auto_explain.log_min_duration=0
2023-12-16 05:15:08 +00:00
# Include actual row amounts and run times for query plan nodes
-c auto_explain.log_analyze=on
2023-12-16 20:52:19 +00:00
2023-12-16 05:15:08 +00:00
# Avoid sequential scans so query plans show what index scans can be done
# (index scan is normally avoided in some cases, such as the table being small enough)
-c enable_seqscan=off
2023-12-16 20:52:19 +00:00
2023-12-16 05:15:08 +00:00
# Don't log parameter values
-c auto_explain.log_parameter_max_length=0
2023-12-16 20:52:19 +00:00
)
# Create cluster
initdb --username=postgres --auth=trust --no-instructions
# Start server that only listens to socket in current directory
2023-12-16 20:52:19 +00:00
pg_ctl start --options="${config_args[*]}"
# Setup database
psql -c "CREATE USER lemmy WITH PASSWORD 'password' SUPERUSER;" -U postgres
psql -c "CREATE DATABASE lemmy WITH OWNER lemmy;" -U postgres