diff --git a/src/Database/Esqueleto/Internal/Sql.hs b/src/Database/Esqueleto/Internal/Sql.hs index 63c801c..e13877a 100644 --- a/src/Database/Esqueleto/Internal/Sql.hs +++ b/src/Database/Esqueleto/Internal/Sql.hs @@ -102,6 +102,7 @@ data CompositeKeyError = | FoldHelpError | SqlCaseError | SqlBinOpError + | SqlCastAsError | MakeOnClauseError | MakeExcError | MakeSetError @@ -766,13 +767,14 @@ unsafeSqlFunctionParens name arg = uncommas' $ map (\(ERaw p f) -> first (parensM p) (f info)) $ toArgList arg in (name <> parens argsTLB, argsVals) - --- | explicit cast using CAST(value as type) +-- | (Internal) An explicit SQL type cast using CAST(value as type). +-- See 'unsafeSqlBinOp' for warnings. unsafeSqlCastAs :: T.Text -> SqlExpr (Value a) -> SqlExpr (Value b) unsafeSqlCastAs t (ERaw p f) = ERaw Never $ \info -> let (b, v) = f info in ("CAST" <> parens ( parensM p b <> " AS " <> TLB.fromText t), v ) +unsafeSqlCastAs _ (ECompositeKey _) = throw (CompositeKeyErr SqlCastAsError) class UnsafeSqlFunctionArgument a where toArgList :: a -> [SqlExpr (Value ())]