diff --git a/TODO b/TODO index 6182eb1..950338b 100644 --- a/TODO +++ b/TODO @@ -1,7 +1,8 @@ = next release -Most important goal is to replace the fixity code and fix all the - bugs here. +Most important goal is to replace the fixity code and fix all the bugs + here. Could also review parens and fixity at query expr level, and + in tablerefs == docs @@ -23,27 +24,13 @@ review internal sql collection for more syntax/tests == features -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 -have to do fixity for this to work - -all ansi string literal syntax? - -check ansi standard for operators (keywords and symbols) +parse '?' == other -change any/some/all to be proper infix operators like in +change any/some/all to be proper infix operators like in ?? review syntax to replace maybe and bool with better ctors -maybe review some of the dodgy ast names like orderfield and inthing - = Later general tasks: @@ -86,6 +73,23 @@ ast checker: checks the ast represents valid syntax, the parser = 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 + +all ansi string literal syntax? + +check ansi standard for operators (keywords and symbols) + proper character sets for identifiers, escapes, etc. placeholder/positional arg @@ -99,6 +103,50 @@ 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 MATCH [ UNIQUE ] [ PARTIAL | + FULL ] +clob type: CLOB(4M) - M suffix on the precision +array element reference a[4] +regular expression substring function +between symmetric +match predicate +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