Skip to content
This repository was archived by the owner on Jul 15, 2021. It is now read-only.
This repository was archived by the owner on Jul 15, 2021. It is now read-only.

Create first public release of sqlite-parser (v0.10.0) #2

@nwronski

Description

@nwronski

Milestones for sqlite-parser

[0.10.0] Finished

  • Set proper rules for identifier names, e.g.: [a-z0-9\_\-]+

  • Interactive demo editor showing SQL and corresponding AST

  • Missing specs

    • Basic Drop Table
    • Basic Drop Trigger
    • Basic Function
    • Basic Subquery
    • Basic Union
    • Create Check 1
    • Create Check 2
    • Create Foreign Key 1
    • Create Foreign Key 2
    • Create Primary Key 1
    • Create Table Alt Syntax
    • Expression Like
    • Expression Table 1
    • Expression Unary 1
    • Function Mixed Args
    • Insert Into Default
    • Join Types 1
    • Join Types 2
    • Select Parts 1
    • Select Qualified Table 1
    • Transaction Rollback
  • Expression grouping issues

    • Grouping with unary and binary expressions

      `anger` != null AND NOT `happiness`
      `happiness` NOT NULL AND `anger` > 0
      `happiness` IS NOT NULL AND `anger` > 0
      `happiness` ISNULL AND `anger` >
      `anger` > 0 AND `happiness` IS NOT NULL
      NOT `happiness` AND `anger` > 0
      NOT `happiness` OR ~`ANGER` AND `anger` IS NOT 0
    • Grouping with parenthesis

      SELECT *
      FROM hats
      WHERE
        (1 != 2 OR 3 != 4) AND ( 3 == 3 )
      SELECT *
      FROM hats
      WHERE
        hat OR (shirt AND (shoes OR wig) AND pants)
  • Remove modifier key from all parts of AST and standardize as conditions

  • Create INDEX

    • Has spec
  • Create TRIGGER

    • Has spec
  • Create VIEW

    • Has spec
  • Create VIRTUAL table

    • Has spec
    • This currently only works with expression arguments and does not support passing column definitions and/or table constraint definitions as is allowed in the SQLite spec for virtual table module arguments.
      • FIXED: fixed by checking for a column name followed by a type definition or column constraint before assuming the type is an expression list, if these things are found, then treat the arguments as a set of source definitions as in a creation statement for a table
      • See: Virtual Tables
  • Need to display correct error location when there are multiple statements in the input SQL

  • comment rules should not use sym_* rules since you should not be able to put a space between the two symbols at the start and/or end of a comment.

    SELECT * - - not valid but is being accepted
    

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions