diff --git a/guix-data-service/model/package-metadata.scm b/guix-data-service/model/package-metadata.scm index 496b920..e450620 100644 --- a/guix-data-service/model/package-metadata.scm +++ b/guix-data-service/model/package-metadata.scm @@ -322,7 +322,12 @@ WHERE packages.id IN ( (list->vector (map (match-lambda ((locale . description) - (list locale description))) + (list locale + ;; \u0000 has appeared in package + ;; descriptions (#71968), so strip it + ;; out here to avoid PostgreSQL throwing + ;; an error + (string-delete-null description)))) package-description-data))))) package-metadata-list)))) (with-time-logging "preparing package synopsis set ids" diff --git a/guix-data-service/model/utils.scm b/guix-data-service/model/utils.scm index acfb704..707c697 100644 --- a/guix-data-service/model/utils.scm +++ b/guix-data-service/model/utils.scm @@ -24,7 +24,8 @@ #:use-module (squee) #:use-module (guix-data-service database) #:use-module (guix-data-service utils) - #:export (quote-string + #:export (string-delete-null + quote-string value->quoted-string-or-null non-empty-string-or-false parse-postgresql-array-string @@ -39,6 +40,12 @@ insert-and-return-id prepare-insert-and-return-id)) +(define (char-null? c) + (char=? c #\null)) + +(define (string-delete-null s) + (string-delete char-null? s)) + (define (quote-string s) (string-append "$STR$" s "$STR$"))