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:
parent
3b1a601fe1
commit
162b07d72c
2 changed files with 37 additions and 3 deletions
|
|
@ -982,7 +982,7 @@ proc parseInsert(p: var SqlParser): SqlNode =
|
||||||
parseParIdentList(p, n)
|
parseParIdentList(p, n)
|
||||||
result.add n
|
result.add n
|
||||||
else:
|
else:
|
||||||
result.add(nil)
|
result.add(newNode(nkNone))
|
||||||
if isKeyw(p, "default"):
|
if isKeyw(p, "default"):
|
||||||
getTok(p)
|
getTok(p)
|
||||||
eat(p, "values")
|
eat(p, "values")
|
||||||
|
|
@ -1017,7 +1017,7 @@ proc parseUpdate(p: var SqlParser): SqlNode =
|
||||||
if isKeyw(p, "where"):
|
if isKeyw(p, "where"):
|
||||||
result.add(parseWhere(p))
|
result.add(parseWhere(p))
|
||||||
else:
|
else:
|
||||||
result.add(nil)
|
result.add(newNode(nkNone))
|
||||||
|
|
||||||
proc parseDelete(p: var SqlParser): SqlNode =
|
proc parseDelete(p: var SqlParser): SqlNode =
|
||||||
getTok(p)
|
getTok(p)
|
||||||
|
|
@ -1029,7 +1029,7 @@ proc parseDelete(p: var SqlParser): SqlNode =
|
||||||
if isKeyw(p, "where"):
|
if isKeyw(p, "where"):
|
||||||
result.add(parseWhere(p))
|
result.add(parseWhere(p))
|
||||||
else:
|
else:
|
||||||
result.add(nil)
|
result.add(newNode(nkNone))
|
||||||
|
|
||||||
proc parseSelect(p: var SqlParser): SqlNode =
|
proc parseSelect(p: var SqlParser): SqlNode =
|
||||||
getTok(p)
|
getTok(p)
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,17 @@ discard """
|
||||||
"""
|
"""
|
||||||
import parsesql
|
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 foo FROM table;") == "select foo from table;"
|
||||||
doAssert $parseSQL("""
|
doAssert $parseSQL("""
|
||||||
SELECT
|
SELECT
|
||||||
|
|
@ -183,8 +194,31 @@ SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
|
||||||
WHERE CustomerID = 1;
|
WHERE CustomerID = 1;
|
||||||
""") == "update Customers 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 $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("DELETE * FROM table_name;") == "delete from table_name;"
|
||||||
|
|
||||||
doAssert $parseSQL("""
|
doAssert $parseSQL("""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue