diff --git a/doc/sql/query.ebnf b/doc/sql/query.ebnf index dc35cccaf2a5667686d2b582becfdbb430ddab8d..1ea161618478553a9b30caecfb761869ede52d62 100644 --- a/doc/sql/query.ebnf +++ b/doc/sql/query.ebnf @@ -15,11 +15,11 @@ DropTable ::= 'drop table' table ('option' '(' ('timeout' '=' DOUBLE)')')? DropRole ::= 'drop role' role ('option' '(' ('timeout' '=' DOUBLE)')')? DropUser ::= 'drop user' user ('option' '(' ('timeout' '=' DOUBLE)')')? Options ::= 'option' '(' ('vtable_max_rows' '=' UNSIGNED)? (',' 'sql_vdbe_max_steps' '=' UNSIGNED)? ')' -SELECT ::= 'SELECT' ((column (',' column)*) ) 'FROM' (table ('AS' name)? | '(' (SELECT | VALUES) ')' ('AS' name)?) ( ('INNER')? 'JOIN' (table ('AS' name)? | ('(' (SELECT | VALUES) ')' ('AS' name)?)) 'ON' expression )? ( 'WHERE' expression )? ( 'GROUP BY' expression(',' expression)* )? +SELECT ::= 'SELECT' ((alias (',' alias)*) ) 'FROM' (table ('AS' name)? | '(' (SELECT | VALUES) ')' ('AS' name)?) ( ('INNER')? 'JOIN' (table ('AS' name)? | ('(' (SELECT | VALUES) ')' ('AS' name)?)) 'ON' expression )? ( 'WHERE' expression )? ( 'GROUP BY' expression(',' expression)* )? VALUES ::= 'VALUES' '(' row (',' row)* ')' SUBQUERY ::= '(' (SELECT | VALUES) ')' row ::= '(' (value (',' value)*) ')' -column ::= '*' | (table '.')? name ('AS' name)? | table '.' '*' | expression ('AS' name)? +alias ::= '*' | (table '.')? name ('AS' name)? | table '.' '*' | expression ('AS' name)? expression ::= column_name | 'CAST' '(' expression 'AS' type ')' | expression ('IS' ('NOT')? 'NULL')