std/parsesql: Add OFFSET keyword support. (#21255)

Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
This commit is contained in:
Phil Krylov
2023-01-18 19:11:15 +01:00
committed by GitHub
parent fc5b7a01ec
commit f04f3e8bf7

View File

@@ -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)