taozhi8833998 / node-sql-parser

Parse simple SQL statements into an abstract syntax tree (AST) with the visited tableList and convert it back to SQL
https://taozhi8833998.github.io/node-sql-parser/
Apache License 2.0
780 stars 174 forks source link

Errors occur when using 'map[]' and 'json_object'. #1872

Closed wushuwu closed 4 months ago

wushuwu commented 4 months ago

Describe the bug

{"message":"Expected \"!=\", \"#-\", \"#>\", \"#>>\", \"%\", \"&&\", \"(\", \")\", \"*\", \"+\", \",\", \"-\", \"--\", \"->\", \"->>\", \".\", \"/\", \"/*\", \"::\", \"<\", \"<=\", \"<>\", \"<@\", \"=\", \">\", \">=\", \"?\", \"?&\", \"?|\", \"@>\", \"AND\", \"AS\", \"BETWEEN\", \"EXISTS\", \"IN\", \"IS\", \"LIKE\", \"NOT\", \"OR\", \"SIMILAR\", \"||\", [ \\t\\n\\r], [A-Za-z0-9_\\-], or [A-Za-z0-9_] but \"[\" found.","expected":[{"type":"class","parts":[["A","Z"],["a","z"],["0","9"],"_","-"],"inverted":false,"ignoreCase":false},{"type":"class","parts":[" ","\t","\n","\r"],"inverted":false,"ignoreCase":false},{"type":"literal","text":"/*","ignoreCase":false},{"type":"literal","text":"--","ignoreCase":false},{"type":"literal","text":".","ignoreCase":false},{"type":"class","parts":[" ","\t","\n","\r"],"inverted":false,"ignoreCase":false},{"type":"literal","text":"/*","ignoreCase":false},{"type":"literal","text":"--","ignoreCase":false},{"type":"literal","text":"(","ignoreCase":false},{"type":"class","parts":[["A","Z"],["a","z"],["0","9"],"_","-"],"inverted":false,"ignoreCase":false},{"type":"class","parts":[" ","\t","\n","\r"],"inverted":false,"ignoreCase":false},{"type":"literal","text":"/*","ignoreCase":false},{"type":"literal","text":"--","ignoreCase":false},{"type":"literal","text":".","ignoreCase":false},{"type":"class","parts":[["A","Z"],["a","z"],["0","9"],"_","-"],"inverted":false,"ignoreCase":false},{"type":"class","parts":[" ","\t","\n","\r"],"inverted":false,"ignoreCase":false},{"type":"literal","text":"/*","ignoreCase":false},{"type":"literal","text":"--","ignoreCase":false},{"type":"literal","text":".","ignoreCase":false},{"type":"class","parts":[["A","Z"],["a","z"],{"type":"literal","text":")","ignoreCase":false}],"found":"[","location":{"start":{"offset":61,"line":6,"column":9},"end":{"offset":62,"line":6,"column":10}},"name":"SyntaxError"}

Database Engine flinksql

To Reproduce -the SQL that be parsed

insert into sink_soc_10086_node_11(
pk
, f1
)
select
CAST(map[uri,uri] as VARCHAR) 
, uri
from view_soc_10086_node_8
;
select name, eventTime, eventDetail
  from (
      select
      concat('AK泄露告警') as name,
      cast(event_time as varchar) as eventTime,
      json_object(
          'risk-tag' value risk_tag,
          'user-agent' value user_agent,
      ) as eventDetail
  from check_risk
  )
  ;

-the node-sql-parser version 5.0.0 -the node version 18.16.1