1
Fork 0
simple-sql-parser/TODO
Jake Wheat 9e75fa9365 hlint
2013-12-31 11:44:10 +02:00

169 lines
4.4 KiB
Plaintext

= next release
try and use the proper css theme
create a header like in the haddock with simple-sql-parser +
contents link
change the toc gen so that it works the same as in haddock (same
div, no links on the actual titles
fix the page margins, and the table stuff: patches to the css?
release checklist:
hlint
haddock review
spell check
update changelog
update website text
= Later general tasks:
docs
add to website: pretty printed tpch, maybe other queries as
demonstration
add preamble to the rendered test page
add links from the supported sql page to the rendered test page for
each section -> have to section up the tests some more
testing
review tests to copy from hssqlppp
much more table reference tests, for joins and aliases etc.?
review internal sql collection for more syntax/tests
other
change any/some/all to be proper infix operators like in ??
review syntax to replace maybe and bool with better ctors
----
demo program: convert tpch to sql server syntax exe processor
dialect framework
try to implement fixity without the hse hack
source position annotation?
review abstract syntax (e.g. combine App with SpecialOp?)
more operators
sql server top syntax
named windows
extended string literals, escapes and other flavours (like pg and
oracle custom delimiters)
run through other manuals for example queries and features: sql in a
nutshell, sql guide, sql reference guide, sql standard, sql server
manual, oracle manual, teradata manual + re-through postgresql
manual and make notes in each case of all syntax and which isn't
currently supported also.
check the order of exports, imports and functions/cases in the files
fix up the import namespaces/explicit names nicely
do some tests for parse errors?
left factor parsing code in remaining places
quasi quotes?
ast checker: checks the ast represents valid syntax, the parser
doesn't check as much as it could, and this can also be used to
check generated trees. Maybe this doesn't belong in this package
though?
= sql support
collate? -> postfix operator which binds very tightly:
a < 'foo' collate 'C'
->
Op "<" [Iden "a", SpecialOp "collate" [StringLit 'foo', StringLit
'C']]
also postfix in order by:
select a from t order by a collate 'C': add to order by syntax, one
collation per column
and on group by
a collation in ansi sql is a optional qualifier plus identifier, not a
string
have to do fixity for this to work
see what schema.fun(a) parses to and decide if this is correct
all ansi string literal syntax?
check ansi standard for operators (keywords and symbols)
proper character sets for identifiers, escapes, etc.
placeholder/positional arg
full number literals -> other bases?
apply, pivot
within group aggregate syntax
try to do full review of sql2003 query syntax
make ansi dialect which only supports ansi sql. Maybe there is a use
for a separate SQL 92, 99 and 2003 dialects?
string literals:
N'
B'
X'
U&' ?
looks like two string literals separated by any whitespace are
merged, which isn't what the postgres manual claims is the standard
plus something introducer, character set thing
union join?
corresponding by
from in substring is not optional in ansi
the keyword from is optional in trim iff there is neither
leading,etc. and explicit char
extract can accept 'timezone hour' and 'timezone minute' for the
extraction field. Could hardcode the complete allowed list in the
parser?
bunch of timezone keyword stuff
interval a to b
array specification int array or int array[5] - type name
typenames: scope, multiset,row type, ref type
unique subquery -> returns true if all the rows in the subquery are
distinct
match predicate <row value constructor> MATCH [ UNIQUE ] [ PARTIAL |
FULL ] <table subquery>
clob type: CLOB(4M) - M suffix on the precision
array element reference a[4]
regular expression substring function
between symmetric
unicode delimited identifier
character set postfix type op for string types + collate on string types
next value for
treat as
generalized invocation?
position using
multiset stuff
table sample
unnest
only
window frame exclusion: complete window support?
select t.* as (a,b,c) from t
search or cycle clause for ctes
normalized
other dialect targets:
postgres
oracle
teradata
ms sql server
mysql?
db2?
maybe later: other dml
insert, update, delete, truncate, merge + set, show?
copy, execute?, explain?, begin/end/rollback?