initdb stores default client_encoding from environment-variable

Postgres Version: 8.4.3 and 8.3.6
Operating System: Sun Solaris 5.10 and SuseEnterprise 9

When a database is initialized with the initdb-command, the default
client_enconding, which will be stored in the DB, depends on the value
of the environment-variable PGCLIENTENCODING at the time of running
initdb. This behaviour is not documented.
Furthermore I didn't find a command to change this
default client_encoding in the database later.
The default client_encoding does not depend on the database encoding!

This is a small shell-script to show this behaviour.

#!/bin/bash -x
#
PGHOST="localhost"
PGPORT=7654
PGDATABASE=postgres
PGUSER=postgres
export PGHOST PGPORT PGDATABASE PGUSER
export LD_LIBRARY_PATH=/usr/local/pgsql/lib

binpath=/usr/local/pgsql/bin
dir=/data/DB-2

$binpath/pg_ctl stop -D $dir/pg-base -m fast -o '-p 7654'
#
#  remove Database
#
rm -r $dir/pg-base       2> /dev/null
sleep 1
mkdir $dir/pg-base       2> /dev/null

PGCLIENTENCODING="WIN1250"
export PGCLIENTENCODING

$binpath/initdb --encoding=UTF8 -D $dir/pg-base

$binpath/pg_ctl start -D $dir/pg-base -l $dir/pg-server.log -o '-p 7654'

sleep 5

unset PGCLIENTENCODING  #  IMPORTANT !!

$binpath/psql -c "select version();"
$binpath/psql -c "show client_encoding;"

-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to