Subject: [bug#74058] [PATCH v2 1/2] gnu: postgresql-configuration: Set default postgresql to *no*.

From: Ludovic Courtès <[email-masked]>
Date: Tue, 12 Nov 2024 10:03:08 +0100

Hi,

Nicolas Graves <[email-masked]> skribis:

> * gnu/services/databases.scm (postgresql-configuration)[postgresql]:
> Set default to *no*.
> (postgresql-service): Revert default to postgresql-10 (rationale: We
> can remove this service at the same time than postgresql-10, in
> something like 6 months to a year).
> ---
>  gnu/services/databases.scm | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
> index 0933eb5e79..05e2c5f996 100644
> --- a/gnu/services/databases.scm
> +++ b/gnu/services/databases.scm
> @@ -167,8 +167,12 @@ (define contents
>  (define-record-type* <postgresql-configuration>
>    postgresql-configuration make-postgresql-configuration
>    postgresql-configuration?
> +  ;; Setting it to *no* ensures that the user sets its current postgresql
> +  ;; explicitely.  Since major upgrades currently require a manual migration
> +  ;; of the database, this way the user is responsible for upgrading properly.
> +  ;; MAYBE TODO: Write an action to automatically upgrade in Guix.
>    (postgresql         postgresql-configuration-postgresql ;file-like
> -                      (default postgresql))
> +                      (default *no*))

I think we misunderstood each other; when I wrote:

> How about having *no* default value in that case?

I suggested removing the (default …) bit altogether, as in:

  (define-record-type* <postgresql-configuration>
    postgresql-configuration make-postgresql-configuration
    postgresql-configuration?
    (postgresql postgresql-configuration-postgresql)  ;no default value
    …)

That way, users get a syntax error (at macro-expansion time) if they
omit the ‘postgresql’ field.

Does that make sense?

Ludo’.