GNU bug report logs - #62495
[PATCH] services: postgresql: Add more role fields.

Previous Next

Package: guix-patches;

Reported by: Miguel Moreno <mmoreno <at> mmoreno.eu>

Date: Tue, 28 Mar 2023 07:17:02 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Miguel Moreno <mmoreno <at> mmoreno.eu>
Subject: bug#62495: closed (Re: bug#62495: [PATCH] services: postgresql:
 Add more role fields.)
Date: Thu, 10 Aug 2023 22:29:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#62495: [PATCH] services: postgresql: Add more role fields.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 62495 <at> debbugs.gnu.org.

-- 
62495: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=62495
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Ludovic Courtès <ludo <at> gnu.org>
To: Miguel Moreno <mmoreno <at> mmoreno.eu>
Cc: 62495-done <at> debbugs.gnu.org
Subject: Re: bug#62495: [PATCH] services: postgresql: Add more role fields.
Date: Fri, 11 Aug 2023 00:28:14 +0200
Hi,

Miguel Moreno <mmoreno <at> mmoreno.eu> skribis:

> * gnu/services/databases.scm (postgresql-role): Add more role fields.
> (postgresql-create-roles): Honor it.
> * doc/guix.texi (Database Services): Document it.

Finally applied, thanks!

Ludo’.

[Message part 3 (message/rfc822, inline)]
From: Miguel Moreno <mmoreno <at> mmoreno.eu>
To: guix-patches <at> gnu.org
Subject: [PATCH] services: postgresql: Add more role fields.
Date: Mon, 27 Mar 2023 19:30:45 +0200
* gnu/services/databases.scm (postgresql-role): Add more role fields.
(postgresql-create-roles): Honor it.
* doc/guix.texi (Database Services): Document it.
---
 doc/guix.texi              | 16 +++++++++++++++-
 gnu/services/databases.scm | 19 ++++++++++++++++---
 2 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index c49e51b72e..79d6f78e02 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -24635,7 +24635,21 @@ Database Services
 @code{superuser}.
 
 @item @code{create-database?} (default: @code{#f})
-Whether to create a database with the same name as the role.
+whether to create a database with the same name as the role.
+
+@item @code{encoding} (default: @code{"UTF8"})
+The character set to use for storing text in the database.
+
+@item @code{collation} (default: @code{"en_US.utf8"})
+The string sort order locale setting.
+
+@item @code{ctype} (default: @code{"en_US.utf8"})
+The character classification locale setting.
+
+@item @code{template} (default: @code{"template1"})
+The default template to copy the new database from when creating it.
+Use @code{"template0"} for a pristine database with no system-local
+modifications.
 
 @end table
 @end deftp
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index b7bd1e587e..9867e4db0c 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -362,7 +362,15 @@ (define-record-type* <postgresql-role>
   (permissions      postgresql-role-permissions
                     (default '(createdb login))) ;list
   (create-database? postgresql-role-create-database?  ;boolean
-                    (default #f)))
+                    (default #f))
+  (encoding postgresql-role-encoding ;string
+            (default "UTF8"))
+  (collation postgresql-role-collation ;string
+             (default "en_US.utf8"))
+  (ctype postgresql-role-ctype ;string
+         (default "en_US.utf8"))
+  (template postgresql-role-template ;string
+            (default "template1")))
 
 (define-record-type* <postgresql-role-configuration>
   postgresql-role-configuration make-postgresql-role-configuration
@@ -391,7 +399,8 @@ (define (postgresql-create-roles config)
            (append-map
             (lambda (role)
               (match-record role <postgresql-role>
-                (name permissions create-database?)
+                (name permissions create-database? encoding collation ctype
+                      template)
                 `("SELECT NOT(EXISTS(SELECT 1 FROM pg_catalog.pg_roles WHERE \
 rolname = '" ,name "')) as not_exists;\n"
 "\\gset\n"
@@ -401,7 +410,11 @@ (define (postgresql-create-roles config)
 ";\n"
 ,@(if create-database?
       `("CREATE DATABASE \"" ,name "\""
-        " OWNER \"" ,name "\";\n")
+        " OWNER \"" ,name "\"\n"
+        " ENCODING '" ,encoding "'\n"
+        " LC_COLLATE '" ,collation "'\n"
+        " LC_CTYPE '" ,ctype "'\n"
+        " TEMPLATE " ,template ";")
       '())
 "\\endif\n")))
             roles)))
-- 
2.39.2


-- 
Best regards,
Miguel Moreno



This bug report was last modified 1 year and 284 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.