[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/2] services: postgresql: Add locale to configuration
From: |
Ludovic Courtès |
Subject: |
Re: [PATCH 2/2] services: postgresql: Add locale to configuration |
Date: |
Wed, 14 Dec 2016 00:09:18 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
Christopher Baines <address@hidden> skribis:
> On 11/12/16 23:14, Ludovic Courtès wrote:
>> Hi!
>>
>> Christopher Baines <address@hidden> skribis:
>>
>>> * gnu/services/postgresql.scm (<postgresql-configuration>): Add locale
>>> field.
>>> (postgresql-shepherd-service): Pass locale to initdb.
>>> (postgresql-service): Add locale default.
>>
>> [...]
>>
>>> + (locale postgresql-configuration-locale
>>> + (default "en_US.UTF-8"))
>>
>> Note: this should use the “normalized codeset”, so “en_US.utf8”.
>>
>>> (let ((user (getpwnam "postgres"))
>>> - (initdb (string-append #$postgresql "/bin/initdb")))
>>> + (initdb (string-append #$postgresql "/bin/initdb"))
>>> + (initdb-args
>>> + (append
>>> + (if #$locale
>>> + (list (string-append "--locale=" #$locale))
>>> + '()))))
>>> ;; Create db state directory.
>>> (mkdir-p #$data-directory)
>>> (chown #$data-directory (passwd:uid user) (passwd:gid user))
>>> @@ -103,14 +110,19 @@ host all all ::1/128 trust"))
>>> (lambda ()
>>> (setgid (passwd:gid user))
>>> (setuid (passwd:uid user))
>>> - (primitive-exit (system* initdb "-D" #$data-directory)))
>>> + (primitive-exit
>>> + (apply system*
>>> + initdb
>>> + "-D"
>>> + #$data-directory
>>> + initdb-args)))
>>> (lambda ()
>>> (primitive-exit 1))))
>>> (pid (waitpid pid))))))))
>>
>> The effect of that is that ‘initdb’, but not ‘postgresql’ itself, would
>> run in a locale different from the system locale by default.
>>
>> These two inconsistencies may be quite confusing. WDYT?
>
> I believe the locale passed to initdb sets "the default locale for the
> database cluster",
Oh, so it affects the initial format of the DB, right? In that case,
you’re right of course.
> I thought about trying to get the LANG from /etc/environment, or the
> <operating-system>, but I could not see an easy and elegant way to do
> either. By default, initdb will use the environment, its just that the
> environment during service activation contains no locale information.
With 97bb1ab66519736afbdab57c230c3a9deef2fa05 there *is* locale data
available at least, right?
But yeah, there’s no easy way to retrieve the currently-configured system
locale, so let’s forget about it (maybe add an “XXX” comment next to
it.)
Could you send an updated patch with (1) the normalized codeset by
default (“en_US.utf8”), and (2) a guix.texi update mentioning the new
option?
Thanks in advance!
Ludo’.
Re: [PATCH 1/2] services: postgresql: Add port to configuration, Ludovic Courtès, 2016/12/11