From 535d72045b35d01cf4513af273262c3c50c219fe Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Thu, 21 Aug 2008 16:00:01 -0400 Subject: LIMIT --- src/lacweb.grm | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/lacweb.grm') diff --git a/src/lacweb.grm b/src/lacweb.grm index b4256f30..0809842d 100644 --- a/src/lacweb.grm +++ b/src/lacweb.grm @@ -164,6 +164,7 @@ fun sql_relop (oper, sqlexp1, sqlexp2, loc) = | SELECT | FROM | AS | CWHERE | GROUP | ORDER | BY | HAVING | UNION | INTERSECT | EXCEPT + | LIMIT | OFFSET | TRUE | FALSE | CAND | OR | NOT | NE | LT | LE | GT | GE @@ -245,6 +246,8 @@ fun sql_relop (oper, sqlexp1, sqlexp2, loc) = | hopt of exp | obopt of exp | obexps of exp + | lopt of exp + | sqlint of exp %verbose (* print summary of errors *) @@ -658,13 +661,15 @@ attrv : INT (EPrim (Prim.Int INT), s (INTleft, INTri | STRING (EPrim (Prim.String STRING), s (STRINGleft, STRINGright)) | LBRACE eexp RBRACE (eexp) -query : query1 obopt (let +query : query1 obopt lopt (let val loc = s (query1left, query1right) val re = (ERecord [((CName "Rows", loc), query1), ((CName "OrderBy", loc), - obopt)], loc) + obopt), + ((CName "Limit", loc), + lopt)], loc) in (EApp ((EVar (["Basis"], "sql_query"), loc), re), loc) end) @@ -844,3 +849,13 @@ obexps : sqlexp (let in (EApp (e, obexps), loc) end) + +lopt : (EVar (["Basis"], "sql_no_limit"), dummy) + | LIMIT sqlint (let + val loc = s (LIMITleft, sqlintright) + in + (EApp ((EVar (["Basis"], "sql_limit"), loc), sqlint), loc) + end) + +sqlint : INT (EPrim (Prim.Int INT), s (INTleft, INTright)) + | LBRACE eexp RBRACE (eexp) -- cgit v1.2.3