"default" expressions in persistentmodels files no longer parse as before
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 42/100
Línea de trabajo
Empieza con el reproductor persistent-default-bug.hs y ejecútalo con ghc --make y la biblioteca persistent adecuada instalada. Rastrea la cuasiquotation persistLowerCase y cómo gestiona las expresiones predeterminadas. Se considera terminado cuando el valor predeterminado to_jsonb('{"!v":0}'::json) se analiza correctamente y el reproductor compila sin requerir el workaround.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Something changed between persistent-2.15.1.0 & persistent-2.16.0.0 (and later); "default" expressions that used to parse now fail to compile.
The quasiquoter does not like the expression default=to_jsonb('{"!v":0}'::json) under 2.18; fortunately there is a workaround in this case (default='{"!v":0}'::jsonb) but that might also trigger an unnecessary migration.
I've tested with GHC 9.10.3 and 9.12.2, with the same results.
This program demonstrates the bug with ghc --make (and the appropriate persistent library installed):
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
module Main where
import Data.Text (Text)
import Database.Persist.TH (mkPersist, persistLowerCase, share, sqlSettings)
share
[mkPersist sqlSettings]
[persistLowerCase|
DBThing
name Text
metadata1 Text default=to_jsonb('{"!v":0}'::json)
metadata2 Text default='{"!v":0}'::jsonb
deriving Show Eq
|]
main :: IO ()
main = pure ()
Compiled as above, GHC will report:
persistent-default-bug.hs:15:21: error: [GHC-39584]
• persistent-default-bug.hs:4:36:
|
4 | metadata1 Text default=to_jsonb('{"!v":0}'::json)
| ^
unexpected '{'
expecting '!', '"', ''', '(', ')', ',', '-', '.', ':', '[', '\', ']', '_', '~', alphanumeric character, assignment expression, end of input, newline, parenthetical, or plain attribute
• In the quasi-quotation:
[persistLowerCase|
DBThing
name Text
metadata1 Text default=to_jsonb('{"!v":0}'::json)
metadata2 Text default='{"!v":0}'::jsonb
deriving Show Eq
|]
|
15 | [persistLowerCase|
| ^...
If metadata1 is commented out, the program compiles as expected.
- Lenguaje dominante
- Haskell
- Estrellas
- 486
- Forks
- 307
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de yesodweb/persistent
-
use aeson >= 2.3.0.0 to avoid HSEC-2026-0007Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
yesodweb/persistent#1635 · 1 comentario · 1 reacción ·
-
Typos in Documentation for Database.Persist.QuasiPosiblemente ocupada @000wahab000 la tomó hace 61 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
yesodweb/persistent#1634 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
yesodweb/persistent#1643 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 70/100
yesodweb/persistent#1642 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
yesodweb/persistent#1641 ·
Todos los issues de yesodweb/persistent
Issues similares
-
enhancement triage
Dificultad 1/5 1-3 horas Aptitud para principiantes 66/100
simplex-chat/simplex-chat#8043 ·
Los mantenedores suelen responder en 1 día
-
area:zones rules-correctness
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
needs triage type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
haskell/cabal#12525 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
validateXmirOptions error message is missing the word 'option'Posiblemente ocupada @opusstudiohq-max la tomó hace 1 día. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
objectionary/phino#2256 ·
Los mantenedores suelen responder en 1 día
-
30-minutes algorithm any-language codewars dart easy elixir hackerrank hacktoberfest haskell help wanted interview-prep julia leetcode lua open-source r scala students zig
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Huerte/algo-solutions-python#163 ·
Los mantenedores suelen responder en 1 día