mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-17 16:38:33 +00:00
fix parsesql.treeRepr when nil is in input (#18974)
* fix parsesql.treeRepr when nil is in input * return newNode(nkNone) as default value, not nil
This commit is contained in:
@@ -982,7 +982,7 @@ proc parseInsert(p: var SqlParser): SqlNode =
|
||||
parseParIdentList(p, n)
|
||||
result.add n
|
||||
else:
|
||||
result.add(nil)
|
||||
result.add(newNode(nkNone))
|
||||
if isKeyw(p, "default"):
|
||||
getTok(p)
|
||||
eat(p, "values")
|
||||
@@ -1017,7 +1017,7 @@ proc parseUpdate(p: var SqlParser): SqlNode =
|
||||
if isKeyw(p, "where"):
|
||||
result.add(parseWhere(p))
|
||||
else:
|
||||
result.add(nil)
|
||||
result.add(newNode(nkNone))
|
||||
|
||||
proc parseDelete(p: var SqlParser): SqlNode =
|
||||
getTok(p)
|
||||
@@ -1029,7 +1029,7 @@ proc parseDelete(p: var SqlParser): SqlNode =
|
||||
if isKeyw(p, "where"):
|
||||
result.add(parseWhere(p))
|
||||
else:
|
||||
result.add(nil)
|
||||
result.add(newNode(nkNone))
|
||||
|
||||
proc parseSelect(p: var SqlParser): SqlNode =
|
||||
getTok(p)
|
||||
|
||||
@@ -3,6 +3,17 @@ discard """
|
||||
"""
|
||||
import parsesql
|
||||
|
||||
doAssert treeRepr(parseSql("INSERT INTO STATS VALUES (10, 5.5); ")
|
||||
) == """
|
||||
|
||||
nkStmtList
|
||||
nkInsert
|
||||
nkIdent STATS
|
||||
nkNone
|
||||
nkValueList
|
||||
nkIntegerLit 10
|
||||
nkNumericLit 5.5"""
|
||||
|
||||
doAssert $parseSQL("SELECT foo FROM table;") == "select foo from table;"
|
||||
doAssert $parseSQL("""
|
||||
SELECT
|
||||
@@ -183,8 +194,31 @@ SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
|
||||
WHERE CustomerID = 1;
|
||||
""") == "update Customers set ContactName = 'Alfred Schmidt' , City = 'Frankfurt' where CustomerID = 1;"
|
||||
|
||||
doAssert treeRepr(parseSql("""UPDATE Customers
|
||||
SET ContactName = 'Alice', City= 'Frankfurt';""")
|
||||
) == """
|
||||
|
||||
nkStmtList
|
||||
nkUpdate
|
||||
nkIdent Customers
|
||||
nkAsgn
|
||||
nkIdent ContactName
|
||||
nkStringLit Alice
|
||||
nkAsgn
|
||||
nkIdent City
|
||||
nkStringLit Frankfurt
|
||||
nkNone"""
|
||||
|
||||
doAssert $parseSQL("DELETE FROM table_name;") == "delete from table_name;"
|
||||
|
||||
doAssert treeRepr(parseSQL("DELETE FROM table_name;")
|
||||
) == """
|
||||
|
||||
nkStmtList
|
||||
nkDelete
|
||||
nkIdent table_name
|
||||
nkNone"""
|
||||
|
||||
doAssert $parseSQL("DELETE * FROM table_name;") == "delete from table_name;"
|
||||
|
||||
doAssert $parseSQL("""
|
||||
|
||||
Reference in New Issue
Block a user