[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/08: services: postgresql: Use Guile datatypes.
From: |
guix-commits |
Subject: |
01/08: services: postgresql: Use Guile datatypes. |
Date: |
Thu, 28 Jan 2021 07:00:03 -0500 (EST) |
mothacehe pushed a commit to branch master
in repository guix.
commit a38d0b0137400b4d54bab5181538fd7eeeefa49a
Author: Mathieu Othacehe <othacehe@gnu.org>
AuthorDate: Mon Jan 18 10:25:18 2021 +0100
services: postgresql: Use Guile datatypes.
* gnu/services/databases.scm (postgresql-config-file-compiler): Support
Guile
datatypes in the "extra-config" field.
* gnu/tests/databases.scm (%postgresql-os): Test it.
* doc/guix.texi (Database Services): Document it.
---
doc/guix.texi | 18 ++++++++++++------
gnu/services/databases.scm | 38 ++++++++++++++++++++++----------------
gnu/tests/databases.scm | 10 +++++++++-
3 files changed, 43 insertions(+), 23 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 7e7c432..3c607b3 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -19410,12 +19410,12 @@ local all all trust
host all all 127.0.0.1/32 md5
host all all ::1/128 md5"))
(extra-config
- '(("session_preload_libraries" "'auto_explain'")
- ("random_page_cost" "2")
- ("auto_explain.log_min_duration" "'100ms'")
- ("work_mem" "'500MB'")
- ("logging_collector" "on")
- ("log_directory" "'/var/log/postgresql'")))))))
+ '(("session_preload_libraries" "auto_explain")
+ ("random_page_cost" 2)
+ ("auto_explain.log_min_duration" "100 ms")
+ ("work_mem" "500 MB")
+ ("logging_collector" #t)
+ ("log_directory" "/var/log/postgresql")))))))
@end lisp
@table @asis
@@ -19435,6 +19435,12 @@ List of additional keys and values to include in the
PostgreSQL config
file. Each entry in the list should be a list where the first element
is the key, and the remaining elements are the values.
+The values can be numbers, booleans or strings and will be mapped to
+PostgreSQL parameters types @code{Boolean}, @code{String},
+@code{Numeric}, @code{Numeric with Unit} and @code{Enumerated} described
+@uref{https://www.postgresql.org/docs/current/config-setting.html,
+here}.
+
@end table
@end deftp
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index d2dc5f0..bb0e406 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -115,22 +115,28 @@ host all all ::1/128 md5"))
(match file
(($ <postgresql-config-file> log-destination hba-file
ident-file extra-config)
- (define (single-quote string)
- (if string
- (list "'" string "'")
- '()))
-
- (define contents
- (append-map
- (match-lambda
- ((key) '())
- ((key . #f) '())
- ((key values ...) `(,key " = " ,@values "\n")))
-
- `(("log_destination" ,@(single-quote log-destination))
- ("hba_file" ,@(single-quote hba-file))
- ("ident_file" ,@(single-quote ident-file))
- ,@extra-config)))
+ ;; See: https://www.postgresql.org/docs/current/config-setting.html.
+ (define (format-value value)
+ (cond
+ ((boolean? value)
+ (list (if value "on" "off")))
+ ((number? value)
+ (list (number->string value)))
+ (else
+ (list "'" value "'"))))
+
+ (define contents
+ (append-map
+ (match-lambda
+ ((key) '())
+ ((key . #f) '())
+ ((key values ...)
+ `(,key " = " ,@(append-map format-value values) "\n")))
+
+ `(("log_destination" ,log-destination)
+ ("hba_file" ,hba-file)
+ ("ident_file" ,ident-file)
+ ,@extra-config)))
(gexp->derivation
"postgresql.conf"
diff --git a/gnu/tests/databases.scm b/gnu/tests/databases.scm
index 31d5ae4..7338007 100644
--- a/gnu/tests/databases.scm
+++ b/gnu/tests/databases.scm
@@ -218,7 +218,15 @@
(simple-operating-system
(service postgresql-service-type
(postgresql-configuration
- (postgresql postgresql-10)))))
+ (postgresql postgresql-10)
+ (config-file
+ (postgresql-config-file
+ (extra-config
+ '(("session_preload_libraries" "auto_explain")
+ ("random_page_cost" 2)
+ ("auto_explain.log_min_duration" "100 ms")
+ ("work_mem" "500 MB")
+ ("debug_print_plan" #t)))))))))
(define (run-postgresql-test)
"Run tests in %POSTGRESQL-OS."
- branch master updated (ff0ff69 -> f58d071), guix-commits, 2021/01/28
- 02/08: services: postgresql: Add socket directory support., guix-commits, 2021/01/28
- 03/08: services: postgresql: Add log directory support., guix-commits, 2021/01/28
- 06/08: service: cuirass: Update it., guix-commits, 2021/01/28
- 04/08: services: postgresql: Wrap long lines., guix-commits, 2021/01/28
- 08/08: tests: Add cuirass test., guix-commits, 2021/01/28
- 01/08: services: postgresql: Use Guile datatypes.,
guix-commits <=
- 05/08: services: postgresql: Add postgresql-role-service-type., guix-commits, 2021/01/28
- 07/08: services: cuirass: Add remote build support., guix-commits, 2021/01/28