diff options
-rw-r--r-- | lib/basis.urs | 2 | ||||
-rw-r--r-- | src/urweb.grm | 1 | ||||
-rw-r--r-- | tests/update.ur | 5 | ||||
-rw-r--r-- | tests/update.urp | 6 |
4 files changed, 13 insertions, 1 deletions
diff --git a/lib/basis.urs b/lib/basis.urs index 4cd2f6da..ff5c2163 100644 --- a/lib/basis.urs +++ b/lib/basis.urs @@ -209,8 +209,8 @@ val insert : fields ::: {Type} -> dml val update : changed ::: {Type} -> unchanged ::: {Type} -> changed ~ unchanged - -> sql_table (changed ++ unchanged) -> $changed + -> sql_table (changed ++ unchanged) -> sql_exp [T = changed ++ unchanged] [] [] bool -> dml diff --git a/src/urweb.grm b/src/urweb.grm index 6f355c43..27a06191 100644 --- a/src/urweb.grm +++ b/src/urweb.grm @@ -726,6 +726,7 @@ eterm : LPAREN eexp RPAREN (#1 eexp, s (LPARENleft, RPARENright)) (EPrim (Prim.String ""), s (XML_BEGINleft, XML_ENDright))), s (XML_BEGINleft, XML_ENDright)) | LPAREN query RPAREN (query) + | LPAREN CWHERE sqlexp RPAREN (sqlexp) | UNDER (EWild, s (UNDERleft, UNDERright)) idents : ident ([ident]) diff --git a/tests/update.ur b/tests/update.ur new file mode 100644 index 00000000..25efa348 --- /dev/null +++ b/tests/update.ur @@ -0,0 +1,5 @@ +table t1 : {A : int, B : string, C : float, D : bool} + +fun main () : transaction page = + () <- dml (update {B = "6", C = 7.0} t1 (WHERE T.A = 5)); + return <html><body>Updated.</body></html> diff --git a/tests/update.urp b/tests/update.urp new file mode 100644 index 00000000..7a249b88 --- /dev/null +++ b/tests/update.urp @@ -0,0 +1,6 @@ +debug +database dbname=test +exe /tmp/webapp +sql /tmp/urweb.sql + +update |