# HG changeset patch # User Adam Chlipala # Date 1239135731 14400 # Node ID 1a317a707d71a045a4490106db87640f7198d0ae # Parent d8217b4cb617a9fb4cf6df63be94d74efad0c4a3 Add primary keys to demo diff -r d8217b4cb617 -r 1a317a707d71 demo/batch.ur --- a/demo/batch.ur Tue Apr 07 16:14:31 2009 -0400 +++ b/demo/batch.ur Tue Apr 07 16:22:11 2009 -0400 @@ -1,6 +1,7 @@ datatype list t = Nil | Cons of t * list t table t : {Id : int, A : string} + PRIMARY KEY Id fun allRows () = query (SELECT * FROM t) diff -r d8217b4cb617 -r 1a317a707d71 demo/batchG.ur --- a/demo/batchG.ur Tue Apr 07 16:14:31 2009 -0400 +++ b/demo/batchG.ur Tue Apr 07 16:22:11 2009 -0400 @@ -1,4 +1,5 @@ table t : {Id : int, A : string, B : float} + PRIMARY KEY Id open BatchFun.Make(struct val tab = t diff -r d8217b4cb617 -r 1a317a707d71 demo/broadcast.ur --- a/demo/broadcast.ur Tue Apr 07 16:14:31 2009 -0400 +++ b/demo/broadcast.ur Tue Apr 07 16:22:11 2009 -0400 @@ -1,6 +1,7 @@ functor Make(M : sig type t end) = struct sequence s table t : {Id : int, Client : client, Channel : channel M.t} + PRIMARY KEY Id type topic = int diff -r d8217b4cb617 -r 1a317a707d71 demo/chat.ur --- a/demo/chat.ur Tue Apr 07 16:14:31 2009 -0400 +++ b/demo/chat.ur Tue Apr 07 16:22:11 2009 -0400 @@ -4,6 +4,7 @@ sequence s table t : { Id : int, Title : string, Room : Room.topic } + PRIMARY KEY Id fun chat id = r <- oneRow (SELECT t.Title, t.Room FROM t WHERE t.Id = {[id]}); diff -r d8217b4cb617 -r 1a317a707d71 demo/crud1.ur --- a/demo/crud1.ur Tue Apr 07 16:14:31 2009 -0400 +++ b/demo/crud1.ur Tue Apr 07 16:22:11 2009 -0400 @@ -1,4 +1,5 @@ table t1 : {Id : int, A : int, B : string, C : float, D : bool} + PRIMARY KEY Id open Crud.Make(struct val tab = t1 diff -r d8217b4cb617 -r 1a317a707d71 demo/crud2.ur --- a/demo/crud2.ur Tue Apr 07 16:14:31 2009 -0400 +++ b/demo/crud2.ur Tue Apr 07 16:22:11 2009 -0400 @@ -1,4 +1,5 @@ table t : {Id : int, Nam : string, Ready : bool} + PRIMARY KEY Id open Crud.Make(struct val tab = t diff -r d8217b4cb617 -r 1a317a707d71 demo/noisy.ur --- a/demo/noisy.ur Tue Apr 07 16:14:31 2009 -0400 +++ b/demo/noisy.ur Tue Apr 07 16:22:11 2009 -0400 @@ -1,6 +1,7 @@ datatype list t = Nil | Cons of t * list t table t : { Id : int, A : string } + PRIMARY KEY Id fun add id s = dml (INSERT INTO t (Id, A) VALUES ({[id]}, {[s]})) diff -r d8217b4cb617 -r 1a317a707d71 demo/refFun.ur --- a/demo/refFun.ur Tue Apr 07 16:14:31 2009 -0400 +++ b/demo/refFun.ur Tue Apr 07 16:22:11 2009 -0400 @@ -7,6 +7,7 @@ sequence s table t : { Id : int, Data : M.data } + PRIMARY KEY Id fun new d = id <- nextval s; diff -r d8217b4cb617 -r 1a317a707d71 demo/roundTrip.ur --- a/demo/roundTrip.ur Tue Apr 07 16:14:31 2009 -0400 +++ b/demo/roundTrip.ur Tue Apr 07 16:22:11 2009 -0400 @@ -1,4 +1,5 @@ table channels : { Client : client, Channel : channel (string * int * float) } + PRIMARY KEY Client fun writeBack v = me <- self; diff -r d8217b4cb617 -r 1a317a707d71 demo/sql.ur --- a/demo/sql.ur Tue Apr 07 16:14:31 2009 -0400 +++ b/demo/sql.ur Tue Apr 07 16:22:11 2009 -0400 @@ -1,4 +1,5 @@ table t : { A : int, B : float, C : string, D : bool } + PRIMARY KEY A fun list () = rows <- queryX (SELECT * FROM t) diff -r d8217b4cb617 -r 1a317a707d71 demo/tree.ur --- a/demo/tree.ur Tue Apr 07 16:14:31 2009 -0400 +++ b/demo/tree.ur Tue Apr 07 16:22:11 2009 -0400 @@ -1,5 +1,6 @@ sequence s table t : { Id : int, Parent : option int, Nam : string } + PRIMARY KEY Id open TreeFun.Make(struct val tab = t diff -r d8217b4cb617 -r 1a317a707d71 src/elisp/urweb-mode.el --- a/src/elisp/urweb-mode.el Tue Apr 07 16:14:31 2009 -0400 +++ b/src/elisp/urweb-mode.el Tue Apr 07 16:22:11 2009 -0400 @@ -147,7 +147,8 @@ (urweb-syms-re "SELECT" "FROM" "AS" "WHERE" "SQL" "GROUP" "ORDER" "BY" "HAVING" "LIMIT" "OFFSET" "ALL" "UNION" "INTERSECT" "EXCEPT" "TRUE" "FALSE" "AND" "OR" "NOT" "COUNT" "AVG" "SUM" "MIN" "MAX" - "ASC" "DESC" "INSERT" "INTO" "VALUES" "UPDATE" "SET" "DELETE") + "ASC" "DESC" "INSERT" "INTO" "VALUES" "UPDATE" "SET" "DELETE" + "PRIMARY" "KEY" "CONSTRAINT" "UNIQUE") "A regexp that matches SQL keywords.") (defconst urweb-lident-regexp "\\<[a-z_][A-Za-z0-9_']*\\>"