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.
This commit is contained in:
parent
ff0ff69315
commit
a38d0b0137
@ -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
|
||||
|
||||
|
@ -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 "'")
|
||||
'()))
|
||||
;; 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 " = " ,@values "\n")))
|
||||
(define contents
|
||||
(append-map
|
||||
(match-lambda
|
||||
((key) '())
|
||||
((key . #f) '())
|
||||
((key values ...)
|
||||
`(,key " = " ,@(append-map format-value values) "\n")))
|
||||
|
||||
`(("log_destination" ,@(single-quote log-destination))
|
||||
("hba_file" ,@(single-quote hba-file))
|
||||
("ident_file" ,@(single-quote ident-file))
|
||||
,@extra-config)))
|
||||
`(("log_destination" ,log-destination)
|
||||
("hba_file" ,hba-file)
|
||||
("ident_file" ,ident-file)
|
||||
,@extra-config)))
|
||||
|
||||
(gexp->derivation
|
||||
"postgresql.conf"
|
||||
|
@ -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."
|
||||
|
Loading…
Reference in New Issue
Block a user