1
Fork 0
simple-sql-parser/TODO

98 lines
3.3 KiB
Plaintext
Raw Normal View History

Some random notes on what could be done with the package in the
future. None of this is scheduled.
2019-08-31 10:13:09 +02:00
2024-01-12 20:25:13 +01:00
Infrastructure
--------------
2019-08-31 10:13:09 +02:00
2024-01-12 20:25:13 +01:00
write a CI script
2019-08-31 10:13:09 +02:00
2024-01-12 20:25:13 +01:00
decide if to use a code formatter - pro: it will preserve git blame stuff better
2019-08-31 10:13:09 +02:00
2024-01-12 20:25:13 +01:00
switch the website to use markdown
2019-08-31 10:13:09 +02:00
2024-01-12 20:25:13 +01:00
try to improve the usability of the rendered test cases
2019-08-31 10:13:09 +02:00
2024-01-12 20:25:13 +01:00
add automated tests for the examples on the website
2016-02-22 22:24:25 +01:00
2024-01-12 20:25:13 +01:00
add a few more examples to the website:
parse some sql and detect if it has a particular feature
do a transformation on some sql
idea: convert tpch to sql server syntax
generate some sql
format some sql
check if some sql parses
trivial documentation generation for ddl
trivial lint checker
demos:
crunch sql: this takes sql and tries to make it as small as possible
(combining nested selects where possible and inlining
ctes)
expand sql:
breaks apart complex sql using nested queries and ctes, try to make
queries easier to understand in stages
2016-02-22 22:24:25 +01:00
2024-01-12 20:25:13 +01:00
write a beginners tutorial for how to add support for some new sql syntax
show how to develop parsers interactively, then tidy them up for merging
to the main branch
2016-02-22 22:28:59 +01:00
2024-01-12 20:25:13 +01:00
review code coverage and see if there are any important gaps to fill in
set up hlint to run easily
2016-02-22 22:16:15 +01:00
2024-01-12 20:25:13 +01:00
Code
----
2016-02-22 22:16:15 +01:00
2024-01-12 20:25:13 +01:00
There could be more negative tests for lexing and dialect options.
2024-01-12 20:25:13 +01:00
Check the fixity in the tableref parsing, see if there is anywhere else that needs tweaking.
2014-06-20 11:27:23 +02:00
2024-01-12 20:25:13 +01:00
Do all sql dialects have compatible fixities? If not, want to add dialect control over the fixity.
2014-06-20 11:27:23 +02:00
2024-01-12 20:25:13 +01:00
add parse error recovery
2024-01-12 20:25:13 +01:00
add ability to type check:
uuagc still seems like the nicest option?
uuagc has an option to attach to an external ast now, so could
put the type checker in a separate package
2024-01-12 20:25:13 +01:00
figure out how to support parsing some sql, transforming it, pretty printing it
while perserving as much of the original formatting as possible, and all the comments
an intermediate step is to minimise the difference in non whitespace/comment tokens
when you parse then pretty print any supported sql
2024-01-12 20:25:13 +01:00
add an annotation field to the syntax to make it more useful
add source positions to this annotation when parsing
2024-01-12 20:25:13 +01:00
can you make it properly extensible? the goal is for users to work with asts that
represent only the dialect they are working in
review names in the syntax for correspondence with sql standard, avoid
2024-01-12 20:25:13 +01:00
gratuitous differences
2013-12-17 19:27:11 +01:00
2024-01-12 20:25:13 +01:00
reduce use of booleans in the syntax
2024-01-12 20:25:13 +01:00
quasi quotation support
2013-12-19 09:27:44 +01:00
2024-01-12 20:25:13 +01:00
use this lib to build a typesafe sql wrapper for haskell
2024-01-12 20:25:13 +01:00
optimise the lexer:
add some benchmarks
do some experiments with left factoring
try to use the match approach with megaparsec
see if it's work using something other than megaparsec for the lexer
or// maybe it's no longer worth having a separate lexer?
2024-01-12 20:25:13 +01:00
rewrite bits of the parser, lots of it is a bit questionable
- an expert with megaparsec would write something simpler
I think it's not worth doing for the sake of it, but if a bit
is too difficult to add new features to, or to improve
the error messages, then it might be worth it
2024-01-12 20:25:13 +01:00
work on error messages
2015-08-08 19:07:44 +02:00
2024-01-12 20:25:13 +01:00
review the crazy over the top lexer testing
maybe it's enough to document an easy way to skip these tests
2015-08-08 19:07:44 +02:00
2024-01-12 20:25:13 +01:00
check more of the formatting of the pretty printing and add regression tests for this
2015-08-08 19:07:44 +02:00
2024-01-12 20:25:13 +01:00
is there a way to get incremental parsing like attoparsec?