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:
Andrey Makarov
2021-10-17 06:38:07 +03:00
committed by GitHub
parent 3b1a601fe1
commit 162b07d72c
2 changed files with 37 additions and 3 deletions

View File

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

View File

@@ -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("""