summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorPhil Krylov <phil@krylov.eu>2023-01-18 19:11:15 +0100
committerGitHub <noreply@github.com>2023-01-18 13:11:15 -0500
commitf04f3e8bf78ab4187a395a024c94cd545c275720 (patch)
treedad014bf2226196a53d4675bf2c6db8f1195f0ac /lib
parentfc5b7a01eccfbfeba6ded8765ca956eab0952db5 (diff)
downloadNim-f04f3e8bf78ab4187a395a024c94cd545c275720.tar.gz
std/parsesql: Add OFFSET keyword support. (#21255)
Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/pure/parsesql.nim11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/pure/parsesql.nim b/lib/pure/parsesql.nim
index 3af840e29..074faf64c 100644
--- a/lib/pure/parsesql.nim
+++ b/lib/pure/parsesql.nim
@@ -60,7 +60,7 @@ const
 
   reservedKeywords = @[
     # statements
-    "select", "from", "where", "group", "limit", "having",
+    "select", "from", "where", "group", "limit", "offset", "having",
     # functions
     "count",
   ]
@@ -509,6 +509,7 @@ type
     nkFromItemPair,
     nkGroup,
     nkLimit,
+    nkOffset,
     nkHaving,
     nkOrder,
     nkJoin,
@@ -1126,6 +1127,11 @@ proc parseSelect(p: var SqlParser): SqlNode =
     var l = newNode(nkLimit)
     l.add(parseExpr(p))
     result.add(l)
+  if isKeyw(p, "offset"):
+    getTok(p)
+    var o = newNode(nkOffset)
+    o.add(parseExpr(p))
+    result.add(o)
 
 proc parseStmt(p: var SqlParser; parent: SqlNode) =
   if isKeyw(p, "create"):
@@ -1388,6 +1394,9 @@ proc ra(n: SqlNode, s: var SqlWriter) =
   of nkLimit:
     s.addKeyw("limit")
     s.addMulti(n)
+  of nkOffset:
+    s.addKeyw("offset")
+    s.addMulti(n)
   of nkHaving:
     s.addKeyw("having")
     s.addMulti(n)