-
Notifications
You must be signed in to change notification settings - Fork 171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RUNTIME error: DEFAULT not allowed in this context #744
Comments
I don't see an easy way to enforce not allowing default_ in there, but I don't know about the internal of beam either. Not a critical thing, but I just thought you liked to know! |
Thanks for the bug report! I will check it out as soon as I can.
The SQL AST is defined with a myriad of types and type classes, one of which might allow something it shouldn't. It might be as simple as tweaking one of those. |
Reading a little bit more about |
I thought about this a little more. It looks like |
I'm using PostgresSQL and I wanted to update a column to the default value if it was NULL.
Beam happily accepts both
(\r -> coalesce_ [just_ $current_ r.column] default_)
and
(\r -> if_ [isNothing_ (current_ r.column)
then_default_] (else_ $ current_ r.column))
But
coalesce(r.column,DEFAULT)
is not valid sql.I need to supply the default manually.
I didn't find the proper way for this in beam, as the default is
current_timestamp
but the column istimstamptz
in postgres corresponding toUTCTime
in Haskell, butnow_
in Beam only works forLocalTime
.I got around it with using
coerce_ now_
instead,but this doesn't feel right as it seems that GHC will happily coerce ANY beam type to one another...
(I have also used this coerce trick to get out of Maybe/Nullable when selecting only not null rows, haven't found a good way for this either.)
The text was updated successfully, but these errors were encountered: