v0.10.2
Added
- rules and AST for missing transaction-related statement types:
RELEASEandSAVEPOINT - rules and AST for missing SQLite-specific statement types:
PRAGMA,DETACH,VACUUM,ANALYZE, andREINDEX - new specs for SQLite-specific statement types
- new specs for missing transaction-related statement types
- new specs for
WITHclause with recursive table expressions - added new methods in
parser-util.jsto reduce repeated code:keyify(),textMerge(), andlistify()
Changed
-
removing Tracer class from sqlite-parser until a faster solution is developed
- Tracer is causing a 14x performance hit to the sqlite-parser specs when it is enabled
- might consider having two different builds: one smart error build with Tracer and another performance build for speed
-
fixed rules for
WITHclause prepended to CRUD-type statements to make sure thewithproperty is added to the correct nodes -
changed the AST for
WITHclause to no longer have a node oftype"with""with": [ { "type": "expression", "format": "table", "name": "bees", "expression": { "type": "statement", "variant": "select", "from": [], "where": null, "group": null, "result": [], "distinct": false, "all": false, "order": null, "limit": null }, "columns": null, "recursive": false } ]
-
DROPstatement now gives correctvariantto thetype:'identifier'node in thetargetproperty -
now, in a
ROLLBACKstatement, the savepoint exists on thetoproperty -
fixed bind parameter rules and AST so that a named tcl parameter can still have an alias
-
changed the format for
INSERT,WITH, andFOREIGN KEYwhen using a table name versus a table expression name with a column list. for example,INSERT INTO cats (a, b, c)versusINSERT INTO catsnow have the following differences in formats{ "into": { "type": "identifier", "variant": "expression", "format": "table", "name": "cats", "columns": [ { "type": "identifier", "variant": "column", "name": "a" }, { "type": "identifier", "variant": "column", "name": "b" }, { "type": "identifier", "variant": "column", "name": "c" } ] } }{ "into": { "type": "identifier", "variant": "table", "name": "cats", } } -
JOINrules so thatUSINGclause can be followed by column names enclosed in parenthesis as the previous rule was not the correct behavior -
JOINAST modified to have aconstraintproperty, instead ofonandusing, as a join can only have one of these constraints at a time. -
many places in the AST that previously had a string value in the
nameproperty, such as theintoproperty of anINSERTstatement, now instead have a node oftype'identifier' -
FOREIGN KEYconstraints now have areferencesproperty that contains an'expression'identifier or a'table'identifier depending on the query instead of thetarget,columns, andnameproperties. -
several property values are now being normalized to lowercased strings instead of being passed unmodified to the AST. for example, the
actionproperty ofactionnode now contains a lowercased value. -
removed redundant rules that pointed to
namerule, such asname_function,name_view, andname_trigger. -
unquoted identifiers are now normalized to lowercased strings as per the SQL-92 standard. quoted identifiers are not normalized.
-
SQLite functions are now normalized to lowercase strings in the output AST.
-
now preventing FOUC when first loading the demo page. also allowing cursor focus on "Syntax Tree" editor so that the contents can be selected and copied to the clipboard.
-
the following things no longer have an
identifiernode in thenameproperty, as it is too redundant: column constraints, table constrains, column definitions. the parent node provides plenty of context itself for what you will find in itsnameproperty. -
lots of clean up to organize tests by category, split out tests to different files and directories by type, and created
mocha.optsto run tests directory recursively. -
force update README for npm website