---------- Input ----------
5 * (a and ) 1
---------- Output ---------
error: 
  --> SQL:1:3
  |
1 | 5 * (a and ) 1
  | - ^ expecting an operand
  | |  
  | while parsing expression


---------- Input ----------
a + +
---------- Output ---------
error: 
  --> SQL:1:5
  |
1 | a + +
  | -   ^ expecting an operand
  | |    
  | while parsing expression


---------- Input ----------
CAST(col1 AS foo)
---------- Output ---------
error: 
  --> SQL:1:14
  |
1 | CAST(col1 AS foo)
  | ----         ^^^ unexpected `foo`, expecting `BOOL`, `FLOAT`, `BOOLEAN`, `FLOAT32`, `FLOAT64`, `BLOB`, `JSON`, `DOUBLE`, `VECTOR`, `LONGBLOB`, `GEOMETRY`, `GEOGRAPHY`, `UINT8`, `TINYINT`, `UINT16`, `SMALLINT`, `UINT32`, `INT`, `INTEGER`, `UINT64`, `UNSIGNED`, `BIGINT`, `INT8`, `INT16`, `INT32`, `INT64`, `SIGNED`, `REAL`, `DECIMAL`, `ARRAY`, `MAP`, `BITMAP`, `TUPLE`, `DATE`, `DATETIME`, `TIMESTAMP`, `INTERVAL`, `NUMERIC`, `BINARY`, `VARBINARY`, `MEDIUMBLOB`, `TINYBLOB`, `STRING`, `VARCHAR`, `CHAR`, `CHARACTER`, `TEXT`, `VARIANT`, or `NULLABLE`
  | |             
  | while parsing `CAST(... AS ...)`
  | while parsing expression


---------- Input ----------
1 a
---------- Output ---------
error: 
  --> SQL:1:3
  |
1 | 1 a
  |   ^ unexpected `a`


---------- Input ----------
CAST(col1)
---------- Output ---------
error: 
  --> SQL:1:10
  |
1 | CAST(col1)
  | ----     ^ unexpected `)`, expecting `AS`, `,`, `(`, `IS`, `NOT`, `IN`, `LIKE`, `EXISTS`, `BETWEEN`, `+`, `-`, `*`, `/`, `//`, `DIV`, `%`, `||`, `<=>`, `<+>`, `<->`, `>`, `<`, `>=`, `<=`, `=`, `<>`, `!=`, `^`, `AND`, `OR`, `XOR`, `REGEXP`, `RLIKE`, `SOUNDS`, <BitWiseOr>, <BitWiseAnd>, <BitWiseXor>, <ShiftLeft>, <ShiftRight>, `->`, `->>`, `#>`, `#>>`, `?`, `?|`, `?&`, `@>`, `<@`, `@?`, `@@`, `#-`, <Factorial>, <SquareRoot>, <BitWiseNot>, <CubeRoot>, <Abs>, `CAST`, `TRY_CAST`, `::`, `POSITION`, or 46 more ...
  | |         
  | while parsing `CAST(... AS ...)`
  | while parsing expression


---------- Input ----------
a.add(b)
---------- Output ---------
error: 
  --> SQL:1:2
  |
1 | a.add(b)
  | -^
  | ||
  | |chain function only works in experimental dialect, try `set sql_dialect = 'experimental'`
  | |while parsing x.function(...)
  | while parsing expression


---------- Input ----------
$ abc + 3
---------- Output ---------
error: 
  --> SQL:1:1
  |
1 | $ abc + 3
  | ^
  | |
  | unexpected `$`, expecting `IS`, `IN`, `LIKE`, `EXISTS`, `BETWEEN`, `+`, `-`, `*`, `/`, `//`, `DIV`, `%`, `||`, `<=>`, `<+>`, `<->`, `>`, `<`, `>=`, `<=`, `=`, `<>`, `!=`, `^`, `AND`, `OR`, `XOR`, `NOT`, `REGEXP`, `RLIKE`, `SOUNDS`, <BitWiseOr>, <BitWiseAnd>, <BitWiseXor>, <ShiftLeft>, <ShiftRight>, `->`, `->>`, `#>`, `#>>`, `?`, `?|`, `?&`, `@>`, `<@`, `@?`, `@@`, `#-`, <Factorial>, <SquareRoot>, <BitWiseNot>, <CubeRoot>, <Abs>, `CAST`, `TRY_CAST`, `::`, `POSITION`, `IdentVariable`, `DATEADD`, `DATE_ADD`, or 44 more ...
  | while parsing expression


---------- Input ----------
[ x * 100 FOR x in [1,2,3] if x % 2 = 0 ]
---------- Output ---------
error: 
  --> SQL:1:1
  |
1 | [ x * 100 FOR x in [1,2,3] if x % 2 = 0 ]
  | ^
  | |
  | list comprehension only works in experimental dialect, try `set sql_dialect = 'experimental'`
  | while parsing expression
  | while parsing [expr for x in ... [if ...]]


---------- Input ----------
G.E.B IS NOT NULL
AND col1 NOT BETWEEN col2 AND
AND 1 + col3 DIV sum(col4)
---------- Output ---------
error: 
  --> SQL:3:1
  |
1 | G.E.B IS NOT NULL
  | - while parsing expression
2 | AND col1 NOT BETWEEN col2 AND
  |          --- while parsing `[NOT] BETWEEN ... AND ...`
3 | AND 1 + col3 DIV sum(col4)
  | ^^^ expected more tokens for expression


---------- Input ----------
CAST(1 AS STRING) ESCAPE '$'
---------- Output ---------
error: 
  --> SQL:1:19
  |
1 | CAST(1 AS STRING) ESCAPE '$'
  | ----              ^^^^^^ escape clause must be after LIKE/NOT LIKE/LIKE ANY binary expr
  | |                  
  | while parsing expression


---------- Input ----------
1 + 1 ESCAPE '$'
---------- Output ---------
error: 
  --> SQL:1:7
  |
1 | 1 + 1 ESCAPE '$'
  | -     ^^^^^^ escape clause must be after LIKE/NOT LIKE/LIKE ANY binary expr
  | |      
  | while parsing expression


