192 lines
4.9 KiB
Plaintext
192 lines
4.9 KiB
Plaintext
synchronize parsing and syntax design with tutorial parser?
|
|
|
|
error handling work: <?> + left factor
|
|
|
|
create list of features to add, maybe try to do up to sql 99 for the
|
|
next release?
|
|
|
|
= 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
|
|
regenerate the examples on the index.txt
|
|
|
|
= 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
|
|
|
|
add lots more tests using SQL from the xb2 manual
|
|
|
|
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?
|
|
|
|
big feature summary:
|
|
all ansi sql queries
|
|
error messages, left factor
|
|
position annotation
|
|
type checker/ etc.
|
|
lexer
|
|
dialects
|
|
dml, ddl, procedural sql
|
|
quasi quotes
|
|
typesafe sql dbms wrapper support for haskell
|
|
extensibility
|
|
better expression tree parsing
|
|
performance analysis |