You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by sp...@apache.org on 2016/12/11 17:45:45 UTC

[22/51] [abbrv] [partial] incubator-quickstep git commit: remove c++ files

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/tests/Select.test
----------------------------------------------------------------------
diff --git a/parser/tests/Select.test b/parser/tests/Select.test
deleted file mode 100644
index 8e47519..0000000
--- a/parser/tests/Select.test
+++ /dev/null
@@ -1,1874 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-SELECT * FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectStar
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-# If the error location is beyond the end of the SQL,
-# we point the error to the place next to the last character.
-SELECT *
---
-ERROR: syntax error (1 : 9)
-SELECT *
-        ^
-==
-
-SELECT *;
---
-ERROR: syntax error (1 : 9)
-SELECT *;
-        ^
-==
-
-SELECT $attr FROM test
---
-ERROR: illegal character (1 : 9)
-SELECT $attr FROM test
-        ^
-==
-
-SELECT 1 "" FROM test
---
-ERROR: Zero-length identifier (1 : 11)
-SELECT 1 "" FROM test
-          ^
-==
-
-SELECT 1 FROM test AS ""
---
-ERROR: Zero-length identifier (1 : 24)
-SELECT 1 FROM test AS ""
-                       ^
-==
-
-SELECT attr FROM $test
---
-ERROR: illegal character (1 : 19)
-SELECT attr FROM $test
-                  ^
-==
-
-SELECT FROM test
---
-ERROR: syntax error (1 : 8)
-SELECT FROM test
-       ^
-==
-
-SELECT attr1
---
-ERROR: syntax error (1 : 13)
-SELECT attr1
-            ^
-==
-
-SELECT 1, 2, 3, 4
---
-ERROR: syntax error (1 : 18)
-SELECT 1, 2, 3, 4
-                 ^
-==
-
-SELECT 1, 2, 1+1, 1-1, 1-1.2+1-2.3, attr1, attr2, attr1+1, attr1+1*2+attr2, attr1+1*(2+attr2) FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=2,float_like=false]
-  | +-SelectListItem
-  | | +-Add
-  | |   +-left_operand=Literal
-  | |   | +-NumericLiteral[numeric_string=1,float_like=false]
-  | |   +-right_operand=Literal
-  | |     +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-SelectListItem
-  | | +-Subtract
-  | |   +-left_operand=Literal
-  | |   | +-NumericLiteral[numeric_string=1,float_like=false]
-  | |   +-right_operand=Literal
-  | |     +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-SelectListItem
-  | | +-Subtract
-  | |   +-left_operand=Add
-  | |   | +-left_operand=Subtract
-  | |   | | +-left_operand=Literal
-  | |   | | | +-NumericLiteral[numeric_string=1,float_like=false]
-  | |   | | +-right_operand=Literal
-  | |   | |   +-NumericLiteral[numeric_string=1.2,float_like=true]
-  | |   | +-right_operand=Literal
-  | |   |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | |   +-right_operand=Literal
-  | |     +-NumericLiteral[numeric_string=2.3,float_like=true]
-  | +-SelectListItem
-  | | +-AttributeReference[attribute_name=attr1]
-  | +-SelectListItem
-  | | +-AttributeReference[attribute_name=attr2]
-  | +-SelectListItem
-  | | +-Add
-  | |   +-left_operand=AttributeReference[attribute_name=attr1]
-  | |   +-right_operand=Literal
-  | |     +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-SelectListItem
-  | | +-Add
-  | |   +-left_operand=Add
-  | |   | +-left_operand=AttributeReference[attribute_name=attr1]
-  | |   | +-right_operand=Multiply
-  | |   |   +-left_operand=Literal
-  | |   |   | +-NumericLiteral[numeric_string=1,float_like=false]
-  | |   |   +-right_operand=Literal
-  | |   |     +-NumericLiteral[numeric_string=2,float_like=false]
-  | |   +-right_operand=AttributeReference[attribute_name=attr2]
-  | +-SelectListItem
-  |   +-Add
-  |     +-left_operand=AttributeReference[attribute_name=attr1]
-  |     +-right_operand=Multiply
-  |       +-left_operand=Literal
-  |       | +-NumericLiteral[numeric_string=1,float_like=false]
-  |       +-right_operand=Add
-  |         +-left_operand=Literal
-  |         | +-NumericLiteral[numeric_string=2,float_like=false]
-  |         +-right_operand=AttributeReference[attribute_name=attr2]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT * FROM 123
---
-ERROR: syntax error (1 : 15)
-SELECT * FROM 123
-              ^
-==
-
-# Alias
-SELECT 1 AS a, 2+1 AS b, 3 a, 4 b FROM test AS a, test a
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem[alias=a]
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-SelectListItem[alias=b]
-  | | +-Add
-  | |   +-left_operand=Literal
-  | |   | +-NumericLiteral[numeric_string=2,float_like=false]
-  | |   +-right_operand=Literal
-  | |     +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-SelectListItem[alias=a]
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=3,float_like=false]
-  | +-SelectListItem[alias=b]
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=4,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-    | +-table_signature=TableSignature[table_alias=a]
-    +-TableReference[table=test]
-      +-table_signature=TableSignature[table_alias=a]
-==
-
-# Column list aliases in FROM.
-SELECT 1 FROM test test_alias(attr, attr1, attr2, attr3), (SELECT * FROM test) AS subquery(attr1, attr1, attr4)
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-    | +-table_signature=TableSignature[table_alias=test_alias,
-    |   columns=(attr, attr1, attr2, attr3)]
-    +-SubqueryTable
-      +-table_signature=TableSignature[table_alias=subquery,
-      | columns=(attr1, attr1, attr4)]
-      +-SubqueryExpression
-        +-Select
-          +-select_clause=SelectStar
-          +-from_clause=
-            +-TableReference[table=test]
-==
-
-# Table subquery must be named.
-SELECT 1 FROM (select * FROM test)
---
-ERROR: syntax error (1 : 35)
-SELECT 1 FROM (select * FROM test)
-                                  ^
-==
-
-SELECT 1 FROM test test_alias(attr+1)
---
-ERROR: syntax error (1 : 35)
-SELECT 1 FROM test test_alias(attr+1)
-                                  ^
-==
-
-SELECT 1 FROM test AS
---
-ERROR: syntax error (1 : 22)
-SELECT 1 FROM test AS
-                     ^
-==
-
-SELECT 1 AS a+1 FROM test
---
-ERROR: syntax error (1 : 14)
-SELECT 1 AS a+1 FROM test
-             ^
-==
-
-SELECT 1 FROM test AS a+1
---
-ERROR: syntax error (1 : 24)
-SELECT 1 FROM test AS a+1
-                       ^
-==
-
-SELECT 1 FROM test WHERE 1=1 AND attr1=1 AND attr+1>=1 AND attr-1<=1 AND attr+1>1 AND attr-1<1
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-where_clause=And
-  | +-Equal
-  | | +-left_operand=Literal
-  | | | +-NumericLiteral[numeric_string=1,float_like=false]
-  | | +-right_operand=Literal
-  | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-Equal
-  | | +-left_operand=AttributeReference[attribute_name=attr1]
-  | | +-right_operand=Literal
-  | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-GreaterOrEqual
-  | | +-left_operand=Add
-  | | | +-left_operand=AttributeReference[attribute_name=attr]
-  | | | +-right_operand=Literal
-  | | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | | +-right_operand=Literal
-  | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-LessOrEqual
-  | | +-left_operand=Subtract
-  | | | +-left_operand=AttributeReference[attribute_name=attr]
-  | | | +-right_operand=Literal
-  | | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | | +-right_operand=Literal
-  | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-Greater
-  | | +-left_operand=Add
-  | | | +-left_operand=AttributeReference[attribute_name=attr]
-  | | | +-right_operand=Literal
-  | | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | | +-right_operand=Literal
-  | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-Less
-  |   +-left_operand=Subtract
-  |   | +-left_operand=AttributeReference[attribute_name=attr]
-  |   | +-right_operand=Literal
-  |   |   +-NumericLiteral[numeric_string=1,float_like=false]
-  |   +-right_operand=Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT 1 FROM test WHERE attr BETWEEN 1 AND 2 AND attr BETWEEN 2 AND 1
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-where_clause=And
-  | +-Between
-  | | +-check_operand=AttributeReference[attribute_name=attr]
-  | | +-lower_bound_operand=Literal
-  | | | +-NumericLiteral[numeric_string=1,float_like=false]
-  | | +-upper_bound_operand=Literal
-  | |   +-NumericLiteral[numeric_string=2,float_like=false]
-  | +-Between
-  |   +-check_operand=AttributeReference[attribute_name=attr]
-  |   +-lower_bound_operand=Literal
-  |   | +-NumericLiteral[numeric_string=2,float_like=false]
-  |   +-upper_bound_operand=Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT 1 FROM test WHERE attr NOT BETWEEN 1 AND 2
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-where_clause=Not
-  | +-Between
-  |   +-check_operand=AttributeReference[attribute_name=attr]
-  |   +-lower_bound_operand=Literal
-  |   | +-NumericLiteral[numeric_string=1,float_like=false]
-  |   +-upper_bound_operand=Literal
-  |     +-NumericLiteral[numeric_string=2,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT 1 FROM test ORDER BY attr, 1
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-order_by=OrderBy
-  | +-OrderByItem[is_asc=true,nulls_first=false]
-  | | +-AttributeReference[attribute_name=attr]
-  | +-OrderByItem[is_asc=true,nulls_first=false]
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT fun(attr)+1 FROM test GROUP BY fun()+fun(attr), attr1+attr2 HAVING attr1>1 AND fun(*)>1
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Add
-  |     +-left_operand=FunctionCall[name=fun]
-  |     | +-AttributeReference[attribute_name=attr]
-  |     +-right_operand=Literal
-  |       +-NumericLiteral[numeric_string=1,float_like=false]
-  +-group_by=GroupBy
-  | +-Add
-  | | +-left_operand=FunctionCall[name=fun]
-  | | +-right_operand=FunctionCall[name=fun]
-  | |   +-AttributeReference[attribute_name=attr]
-  | +-Add
-  |   +-left_operand=AttributeReference[attribute_name=attr1]
-  |   +-right_operand=AttributeReference[attribute_name=attr2]
-  +-having=HAVING
-  | +-And
-  |   +-Greater
-  |   | +-left_operand=AttributeReference[attribute_name=attr1]
-  |   | +-right_operand=Literal
-  |   |   +-NumericLiteral[numeric_string=1,float_like=false]
-  |   +-Greater
-  |     +-left_operand=FunctionCall[name=fun,is_star=true]
-  |     +-right_operand=Literal
-  |       +-NumericLiteral[numeric_string=1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-# ORDER BY
-SELECT 1 FROM test ORDER BY 1 ASC,
-                            2 DESC,
-                            3 ASC NULLS FIRST,
-                            attr1 DESC NULLS LAST,
-                            attr1+1 NULLS FIRST,
-                            fun(attr)/2
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-order_by=OrderBy
-  | +-OrderByItem[is_asc=true,nulls_first=false]
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-OrderByItem[is_asc=false,nulls_first=true]
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=2,float_like=false]
-  | +-OrderByItem[is_asc=true,nulls_first=true]
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=3,float_like=false]
-  | +-OrderByItem[is_asc=false,nulls_first=false]
-  | | +-AttributeReference[attribute_name=attr1]
-  | +-OrderByItem[is_asc=true,nulls_first=true]
-  | | +-Add
-  | |   +-left_operand=AttributeReference[attribute_name=attr1]
-  | |   +-right_operand=Literal
-  | |     +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-OrderByItem[is_asc=true,nulls_first=false]
-  |   +-Divide
-  |     +-left_operand=FunctionCall[name=fun]
-  |     | +-AttributeReference[attribute_name=attr]
-  |     +-right_operand=Literal
-  |       +-NumericLiteral[numeric_string=2,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-# Limit
-SELECT 1 FROM test LIMIT 1
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-limit=LIMIT
-  | +-NumericLiteral[numeric_string=1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT 1 FROM test LIMIT 1.1
---
-ERROR: LIMIT value must be an integer (1 : 26)
-SELECT 1 FROM test LIMIT 1.1
-                         ^
-==
-
-SELECT 1 FROM test LIMIT 0
---
-ERROR: LIMIT value must be positive (1 : 26)
-SELECT 1 FROM test LIMIT 0
-                         ^
-==
-
-SELECT 1 FROM test LIMIT -1
---
-ERROR: syntax error (1 : 26)
-SELECT 1 FROM test LIMIT -1
-                         ^
-==
-
-SELECT 1 FROM test LIMIT abc
---
-ERROR: syntax error (1 : 26)
-SELECT 1 FROM test LIMIT abc
-                         ^
-==
-
-# Priority
-SELECT 1 FROM test WITH PRIORITY 1
---
-SelectStatement
-+-select_query=Select
-| +-select_clause=SelectList
-| | +-SelectListItem
-| |   +-Literal
-| |     +-NumericLiteral[numeric_string=1,float_like=false]
-| +-from_clause=
-|   +-TableReference[table=test]
-+-priority=PRIORITY
-  +-NumericLiteral[numeric_string=1,float_like=false]
-==
-
-SELECT 1 FROM test WITH PRIORITY 1.1
---
-ERROR: PRIORITY value must be an integer (1 : 34)
-SELECT 1 FROM test WITH PRIORITY 1.1
-                                 ^
-==
-
-SELECT 1 FROM test WITH PRIORITY 0
---
-ERROR: PRIORITY value must be positive (1 : 34)
-SELECT 1 FROM test WITH PRIORITY 0
-                                 ^
-==
-
-SELECT 1 FROM test WITH PRIORITY -1
---
-ERROR: syntax error (1 : 34)
-SELECT 1 FROM test WITH PRIORITY -1
-                                 ^
-==
-
-SELECT 1 FROM test WITH PRIORITY abc
---
-ERROR: syntax error (1 : 34)
-SELECT 1 FROM test WITH PRIORITY abc
-                                 ^
-==
-
-#
-# Subqueries
-#
-
-# Subqueries in the FROM clause.
-SELECT * FROM test, (select * FROM test) AS a, (select * FROM test) a
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectStar
-  +-from_clause=
-    +-TableReference[table=test]
-    +-SubqueryTable
-    | +-table_signature=TableSignature[table_alias=a]
-    | +-SubqueryExpression
-    |   +-Select
-    |     +-select_clause=SelectStar
-    |     +-from_clause=
-    |       +-TableReference[table=test]
-    +-SubqueryTable
-      +-table_signature=TableSignature[table_alias=a]
-      +-SubqueryExpression
-        +-Select
-          +-select_clause=SelectStar
-          +-from_clause=
-            +-TableReference[table=test]
-==
-
-SELECT * FROM test, SELECT * FROM test
---
-ERROR: syntax error (1 : 21)
-SELECT * FROM test, SELECT * FROM test
-                    ^
-==
-
-SELECT * FROM (select * FROM (select * FROM (select * FROM test) a ) a ) a
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectStar
-  +-from_clause=
-    +-SubqueryTable
-      +-table_signature=TableSignature[table_alias=a]
-      +-SubqueryExpression
-        +-Select
-          +-select_clause=SelectStar
-          +-from_clause=
-            +-SubqueryTable
-              +-table_signature=TableSignature[table_alias=a]
-              +-SubqueryExpression
-                +-Select
-                  +-select_clause=SelectStar
-                  +-from_clause=
-                    +-SubqueryTable
-                      +-table_signature=TableSignature[table_alias=a]
-                      +-SubqueryExpression
-                        +-Select
-                          +-select_clause=SelectStar
-                          +-from_clause=
-                            +-TableReference[table=test]
-==
-
-# Subqueries are not supported yet in clauses other than the FROM clause.
-SELECT (select * FROM test) FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-SubqueryExpression
-  |     +-Select
-  |       +-select_clause=SelectStar
-  |       +-from_clause=
-  |         +-TableReference[table=test]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT 1 FROM test WHERE 1 > (select 1 FROM test)
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-where_clause=Greater
-  | +-left_operand=Literal
-  | | +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-right_operand=SubqueryExpression
-  |   +-Select
-  |     +-select_clause=SelectList
-  |     | +-SelectListItem
-  |     |   +-Literal
-  |     |     +-NumericLiteral[numeric_string=1,float_like=false]
-  |     +-from_clause=
-  |       +-TableReference[table=test]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-#
-# WITH clause
-#
-WITH a (col) AS (SELECT 1 FROM test GROUP BY a ORDER BY b LIMIT 1),
-     b (col1, col2, col3) AS (SELECT * FROM (SELECT * FROM test) a),
-     c AS (SELECT 1 FROM test)
-SELECT 1 FROM a, b, c, d
---
-SelectStatement
-+-select_query=Select
-| +-select_clause=SelectList
-| | +-SelectListItem
-| |   +-Literal
-| |     +-NumericLiteral[numeric_string=1,float_like=false]
-| +-from_clause=
-|   +-TableReference[table=a]
-|   +-TableReference[table=b]
-|   +-TableReference[table=c]
-|   +-TableReference[table=d]
-+-with_clause=
-  +-SubqueryTable
-  | +-table_signature=TableSignature[table_alias=a,columns=(col)]
-  | +-SubqueryExpression
-  |   +-Select
-  |     +-select_clause=SelectList
-  |     | +-SelectListItem
-  |     |   +-Literal
-  |     |     +-NumericLiteral[numeric_string=1,float_like=false]
-  |     +-group_by=GroupBy
-  |     | +-AttributeReference[attribute_name=a]
-  |     +-order_by=OrderBy
-  |     | +-OrderByItem[is_asc=true,nulls_first=false]
-  |     |   +-AttributeReference[attribute_name=b]
-  |     +-limit=LIMIT
-  |     | +-NumericLiteral[numeric_string=1,float_like=false]
-  |     +-from_clause=
-  |       +-TableReference[table=test]
-  +-SubqueryTable
-  | +-table_signature=TableSignature[table_alias=b,columns=(col1, col2, col3)]
-  | +-SubqueryExpression
-  |   +-Select
-  |     +-select_clause=SelectStar
-  |     +-from_clause=
-  |       +-SubqueryTable
-  |         +-table_signature=TableSignature[table_alias=a]
-  |         +-SubqueryExpression
-  |           +-Select
-  |             +-select_clause=SelectStar
-  |             +-from_clause=
-  |               +-TableReference[table=test]
-  +-SubqueryTable
-    +-table_signature=TableSignature[table_alias=c]
-    +-SubqueryExpression
-      +-Select
-        +-select_clause=SelectList
-        | +-SelectListItem
-        |   +-Literal
-        |     +-NumericLiteral[numeric_string=1,float_like=false]
-        +-from_clause=
-          +-TableReference[table=test]
-==
-
-WITH a AS (SELECT 1 FROM test)
-SELECT 1 FROM a
---
-SelectStatement
-+-select_query=Select
-| +-select_clause=SelectList
-| | +-SelectListItem
-| |   +-Literal
-| |     +-NumericLiteral[numeric_string=1,float_like=false]
-| +-from_clause=
-|   +-TableReference[table=a]
-+-with_clause=
-  +-SubqueryTable
-    +-table_signature=TableSignature[table_alias=a]
-    +-SubqueryExpression
-      +-Select
-        +-select_clause=SelectList
-        | +-SelectListItem
-        |   +-Literal
-        |     +-NumericLiteral[numeric_string=1,float_like=false]
-        +-from_clause=
-          +-TableReference[table=test]
-==
-
-# AS cannot be omitted.
-WITH a (SELECT 1 FROM test)
-SELECT 1 FROM a
---
-ERROR: syntax error (1 : 9)
-WITH a (SELECT 1 FROM test)
-        ^
-==
-
-WITH a AS (SELECT 1 FROM test)
---
-ERROR: syntax error (1 : 31)
-WITH a AS (SELECT 1 FROM test)
-                              ^
-==
-
-# The WITH query cannot have WITH.
-WITH a AS (with c SELECT 1 FROM test)
-SELECT 1 FROM test
---
-ERROR: syntax error (1 : 12)
-WITH a AS (with c SELECT 1 FROM test)
-           ^
-==
-
-WITH a AS (select 1 FROM test) b
-SELECT 1 FROM test
---
-ERROR: syntax error (1 : 32)
-WITH a AS (select 1 FROM test) b
-                               ^
-==
-
-# Missing comma.
-SELECT a AS (select 1 FROM test) b AS (SELECT 1 FROM test)
-SELECT 1 FROM test
---
-ERROR: syntax error (1 : 13)
-SELECT a AS (select 1 FROM test) b AS (SELEC...
-            ^
-==
-
-#
-# Literal values and types.
-#
-
-# Bool literal value is not supported yet.
-SELECT 1 FROM test WHERE TRUE
---
-ERROR: syntax error (1 : 26)
-SELECT 1 FROM test WHERE TRUE
-                         ^
-==
-
-SELECT 1 FROM test WHERE tb1 = TRUE
---
-ERROR: syntax error (1 : 32)
-SELECT 1 FROM test WHERE tb1 = TRUE
-                               ^
-==
-
-# FIXME(chasseur, qzeng): The result is wrong. Add support for hexadecimal literals.
-SELECT 0xfff FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem[alias=xfff]
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=0,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT x'fff' FROM test
---
-ERROR: syntax error (1 : 13)
-SELECT x'fff' FROM test
-            ^
-==
-
-SELECT 123e23, 123e-123, 123e-2+1, 123e-2*2, 123e-123,
-       1e100000000
-FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=123e23,float_like=true]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=123e-123,float_like=true]
-  | +-SelectListItem
-  | | +-Add
-  | |   +-left_operand=Literal
-  | |   | +-NumericLiteral[numeric_string=123e-2,float_like=true]
-  | |   +-right_operand=Literal
-  | |     +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-SelectListItem
-  | | +-Multiply
-  | |   +-left_operand=Literal
-  | |   | +-NumericLiteral[numeric_string=123e-2,float_like=true]
-  | |   +-right_operand=Literal
-  | |     +-NumericLiteral[numeric_string=2,float_like=false]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=123e-123,float_like=true]
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1e100000000,float_like=true]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT 9223372036854775805, 9223372036854775807, 9223372036854775809, -9223372036854775805,
-       -9223372036854775807, -9223372036854775809, 9223372036854775800.8, 1.123456789012345678901234567890,
-       -9223372036854775800.8, -1.123456789012345678901234567890
-FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=9223372036854775805,float_like=false]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=9223372036854775807,float_like=false]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=9223372036854775809,float_like=false]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=-9223372036854775805,float_like=false]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=-9223372036854775807,float_like=false]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=-9223372036854775809,float_like=false]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=9223372036854775800.8,float_like=true]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=1.123456789012345678901234567890,
-  | |     float_like=true]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=-9223372036854775800.8,float_like=true]
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=-1.123456789012345678901234567890,
-  |       float_like=true]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-# Escape characters.
-SELECT 1, e'$asdfg\'\'\"\"\t\r\n' FROM test WHERE char_col = e'\'asdfg\''
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-SelectListItem
-  |   +-Literal
-  |     +-StringLiteral[value=$asdfg''""	
-]
-  +-where_clause=Equal
-  | +-left_operand=AttributeReference[attribute_name=char_col]
-  | +-right_operand=Literal
-  |   +-StringLiteral[value='asdfg']
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-# Double-quoted strings are identifiers, which do not need to be escaped.
-SELECT 1 "abc\n" FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem[alias=abc\n]
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT 1 "abc
-
-def
-" FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem[alias=abc
-
-def
-]
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-# Currently predicate is not treated as a regular scalar expression.
-SELECT 1 FROM test WHERE (1>1)=(1<1)
---
-ERROR: syntax error (1 : 31)
-SELECT 1 FROM test WHERE (1>1)=(1<1)
-                              ^
-==
-
-SELECT 1 """this IS a double-quoted string""", 2 "this IS NOT a double-quoted string" FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem[alias="this IS a double-quoted string"]
-  | | +-Literal
-  | |   +-NumericLiteral[numeric_string=1,float_like=false]
-  | +-SelectListItem[alias=this IS NOT a double-quoted string]
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=2,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-#
-# DateTime and Interval
-#
-
-SELECT '1998-12-01',
-       DATE '1998-12-01'
-FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1998-12-01]
-  | +-SelectListItem
-  |   +-Literal
-  |     +-StringLiteral[value=1998-12-01,explicit_type=Date]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-# Year before 1970.
-SELECT DATE '1960-12-12',
-       DATE '1901-12-14' FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1960-12-12,explicit_type=Date]
-  | +-SelectListItem
-  |   +-Literal
-  |     +-StringLiteral[value=1901-12-14,explicit_type=Date]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT DATE '1998-2-12', DATE '1998-12-2' FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1998-2-12,explicit_type=Date]
-  | +-SelectListItem
-  |   +-Literal
-  |     +-StringLiteral[value=1998-12-2,explicit_type=Date]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT DATE '+1921-12-12',
-       DATE '+10001-12-12'
-FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=+1921-12-12,explicit_type=Date]
-  | +-SelectListItem
-  |   +-Literal
-  |     +-StringLiteral[value=+10001-12-12,explicit_type=Date]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT DATE 'a1998-12-12' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 25)
-SELECT DATE 'a1998-12-12' FROM test
-                        ^
-==
-
-SELECT DATE '1998-a12-b12' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 26)
-SELECT DATE '1998-a12-b12' FROM test
-                         ^
-==
-
-SELECT DATE '1998-+12-12' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 25)
-SELECT DATE '1998-+12-12' FROM test
-                        ^
-==
-
-SELECT DATE '1998-12-12abc' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 27)
-SELECT DATE '1998-12-12abc' FROM test
-                          ^
-==
-
-SELECT DATE '1998/12/12' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 24)
-SELECT DATE '1998/12/12' FROM test
-                       ^
-==
-
-SELECT DATE '1996-02-29',
-       DATE '1997-03-31',
-       DATE '1998-04-30' FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1996-02-29,explicit_type=Date]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1997-03-31,explicit_type=Date]
-  | +-SelectListItem
-  |   +-Literal
-  |     +-StringLiteral[value=1998-04-30,explicit_type=Date]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT DATE '1999-02-29' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 24)
-SELECT DATE '1999-02-29' FROM test
-                       ^
-==
-
-# Quickstep accepts time in the DATETIME type.
-SELECT DATETIME '2007-05-08 12:35:29',
-       DATETIME '2007-05-08 12:35:29.010'
-FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=2007-05-08 12:35:29,explicit_type=Datetime]
-  | +-SelectListItem
-  |   +-Literal
-  |     +-StringLiteral[value=2007-05-08 12:35:29.010,explicit_type=Datetime]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT DATE '1999-04-31' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 24)
-SELECT DATE '1999-04-31' FROM test
-                       ^
-==
-
-SELECT 1 FROM test WHERE attr_date <= DATE '1998-12-01' - INTERVAL '96 day'
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1,float_like=false]
-  +-where_clause=LessOrEqual
-  | +-left_operand=AttributeReference[attribute_name=attr_date]
-  | +-right_operand=Subtract
-  |   +-left_operand=Literal
-  |   | +-StringLiteral[value=1998-12-01,explicit_type=Date]
-  |   +-right_operand=Literal
-  |     +-StringLiteral[value=96 day,explicit_type=DatetimeInterval]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT INTERVAL '1 us', INTERVAL '1 ms', INTERVAL '1 s', INTERVAL '1 minute',
-           INTERVAL '1 h', INTERVAL '1 day', INTERVAL '1 week',
-           INTERVAL '1 month', INTERVAL '1 year', INTERVAL '1 decade',
-           INTERVAL '1 century', INTERVAL '1 millennium',
-       DATETIME INTERVAL '1 us', DATETIME INTERVAL '1 ms',
-           DATETIME INTERVAL '1 s', DATETIME INTERVAL '1 minute',
-           DATETIME INTERVAL '1 h', DATETIME INTERVAL '1 day',
-           DATETIME INTERVAL '1 week', YEARMONTH INTERVAL '1 month',
-           YEARMONTH INTERVAL '1 year', YEARMONTH INTERVAL '1 decade',
-           YEARMONTH INTERVAL '1 century', YEARMONTH INTERVAL '1 millennium'
-FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 us,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 ms,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 s,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 minute,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 h,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 day,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 week,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 month,explicit_type=YearMonthInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 year,explicit_type=YearMonthInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 decade,explicit_type=YearMonthInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 century,explicit_type=YearMonthInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 millennium,explicit_type=YearMonthInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 us,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 ms,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 s,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 minute,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 h,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 day,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 week,explicit_type=DatetimeInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 month,explicit_type=YearMonthInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 year,explicit_type=YearMonthInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 decade,explicit_type=YearMonthInterval]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1 century,explicit_type=YearMonthInterval]
-  | +-SelectListItem
-  |   +-Literal
-  |     +-StringLiteral[value=1 millennium,explicit_type=YearMonthInterval]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT INTERVAL '4 day' (1)
-FROM test
---
-ERROR: syntax error (1 : 25)
-SELECT INTERVAL '4 day' (1)
-                        ^
-==
-
-SELECT INTERVAL '2 moth' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 24)
-SELECT INTERVAL '2 moth' FROM test
-                       ^
-==
-
-SELECT INTERVAL '-3 year' FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-StringLiteral[value=-3 year,explicit_type=YearMonthInterval]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT INTERVAL 'a 3 year' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 26)
-SELECT INTERVAL 'a 3 year' FROM test
-                         ^
-==
-
-SELECT INTERVAL '5-3 year to month' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 35)
-SELECT INTERVAL '5-3 year to month' FROM test
-                                  ^
-==
-
-SELECT INTERVAL '5-3 day to second' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 35)
-SELECT INTERVAL '5-3 day to second' FROM test
-                                  ^
-==
-
-#
-# Minus sign in arithmetic expressions is parsed as the subtraction
-# or negation operation, not as the notation of a negative value.
-#
-
-SELECT 1-1 FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Subtract
-  |     +-left_operand=Literal
-  |     | +-NumericLiteral[numeric_string=1,float_like=false]
-  |     +-right_operand=Literal
-  |       +-NumericLiteral[numeric_string=1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT 1 - 1 FROM test
---
-[same as above]
-==
-
-SELECT 1--1 FROM test
---
-ERROR: syntax error (1 : 22)
-SELECT 1--1 FROM test
-                     ^
-==
-
-SELECT 1+-1 FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Add
-  |     +-left_operand=Literal
-  |     | +-NumericLiteral[numeric_string=1,float_like=false]
-  |     +-right_operand=Literal
-  |       +-NumericLiteral[numeric_string=-1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT 1-1+-1 FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Add
-  |     +-left_operand=Subtract
-  |     | +-left_operand=Literal
-  |     | | +-NumericLiteral[numeric_string=1,float_like=false]
-  |     | +-right_operand=Literal
-  |     |   +-NumericLiteral[numeric_string=1,float_like=false]
-  |     +-right_operand=Literal
-  |       +-NumericLiteral[numeric_string=-1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT 1+(-1) FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Add
-  |     +-left_operand=Literal
-  |     | +-NumericLiteral[numeric_string=1,float_like=false]
-  |     +-right_operand=Literal
-  |       +-NumericLiteral[numeric_string=-1,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-# Quit statement
-QUIT
---
-QuitStatement
-==
-
-# Literals with various explicit types.
-SELECT INT '1', LONG '1', FLOAT '1', DOUBLE '1', char(42) 'foo', varchar(42) 'bar' FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1,explicit_type=Int]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1,explicit_type=Long]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1,explicit_type=Float]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=1,explicit_type=Double]
-  | +-SelectListItem
-  | | +-Literal
-  | |   +-StringLiteral[value=foo,explicit_type=Char(42)]
-  | +-SelectListItem
-  |   +-Literal
-  |     +-StringLiteral[value=bar,explicit_type=VarChar(42)]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-# Value needs to be quoted when giving an explicit type.
-SELECT INT 1 FROM test
---
-ERROR: syntax error (1 : 12)
-SELECT INT 1 FROM test
-           ^
-==
-
-# Explicit type that can't parse the supplied string.
-SELECT INT 'foo' FROM test
---
-ERROR: Failed to parse literal as specified type (1 : 16)
-SELECT INT 'foo' FROM test
-               ^
-==
-
-# Various floats that, while not in the canonical print format, are still
-# acceptable according to the SQL standard.
-SELECT 1. FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1.,float_like=true]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT .1 FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=.1,float_like=true]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT 1.e1 FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=1.e1,float_like=true]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT .1e1 FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=.1e1,float_like=true]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-# EXISTS subquery
-SELECT i
-FROM generate_series(0, 100, 3) AS gs1(i)
-WHERE
-  EXISTS (
-    SELECT *
-    FROM generate_series(0, 100, 5) AS gs2(i)
-    WHERE gs1.i = gs2.i
-  )
-  AND NOT EXISTS (
-    SELECT *
-    FROM generate_series(0, 100, 10) AS gs3(i)
-    WHERE gs1.i = gs3.i
-  );
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-AttributeReference[attribute_name=i]
-  +-where_clause=And
-  | +-Exists
-  | | +-subquery=SubqueryExpression
-  | |   +-Select
-  | |     +-select_clause=SelectStar
-  | |     +-where_clause=Equal
-  | |     | +-left_operand=AttributeReference[attribute_name=i,relation_name=gs1]
-  | |     | +-right_operand=AttributeReference[attribute_name=i,
-  | |     |   relation_name=gs2]
-  | |     +-from_clause=
-  | |       +-TableGenerator
-  | |         +-FunctionCall[name=generate_series]
-  | |           +-Literal
-  | |           | +-NumericLiteral[numeric_string=0,float_like=false]
-  | |           +-Literal
-  | |           | +-NumericLiteral[numeric_string=100,float_like=false]
-  | |           +-Literal
-  | |             +-NumericLiteral[numeric_string=5,float_like=false]
-  | +-Not
-  |   +-Exists
-  |     +-subquery=SubqueryExpression
-  |       +-Select
-  |         +-select_clause=SelectStar
-  |         +-where_clause=Equal
-  |         | +-left_operand=AttributeReference[attribute_name=i,
-  |         | | relation_name=gs1]
-  |         | +-right_operand=AttributeReference[attribute_name=i,
-  |         |   relation_name=gs3]
-  |         +-from_clause=
-  |           +-TableGenerator
-  |             +-FunctionCall[name=generate_series]
-  |               +-Literal
-  |               | +-NumericLiteral[numeric_string=0,float_like=false]
-  |               +-Literal
-  |               | +-NumericLiteral[numeric_string=100,float_like=false]
-  |               +-Literal
-  |                 +-NumericLiteral[numeric_string=10,float_like=false]
-  +-from_clause=
-    +-TableGenerator
-      +-FunctionCall[name=generate_series]
-        +-Literal
-        | +-NumericLiteral[numeric_string=0,float_like=false]
-        +-Literal
-        | +-NumericLiteral[numeric_string=100,float_like=false]
-        +-Literal
-          +-NumericLiteral[numeric_string=3,float_like=false]
-==
-
-# CASE expressions.
-SELECT CASE col1%2
-           WHEN 1 THEN 'odd'
-           ELSE 'even'
-       END
-FROM test;
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-SimpleCaseExpression
-  |     +-case_operand=Modulo
-  |     | +-left_operand=AttributeReference[attribute_name=col1]
-  |     | +-right_operand=Literal
-  |     |   +-NumericLiteral[numeric_string=2,float_like=false]
-  |     +-else_result_expression=Literal
-  |     | +-StringLiteral[value=even]
-  |     +-when_clauses=
-  |       +-SimpleWhenClause
-  |         +-condition_operand=Literal
-  |         | +-NumericLiteral[numeric_string=1,float_like=false]
-  |         +-result_expression=Literal
-  |           +-StringLiteral[value=odd]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT *
-FROM test
-WHERE CASE WHEN col1 > col2 THEN col3
-           ELSE col4
-      END > 0;
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectStar
-  +-where_clause=Greater
-  | +-left_operand=SearchedCaseExpression
-  | | +-else_result_expression=AttributeReference[attribute_name=col4]
-  | | +-when_clauses=
-  | |   +-SearchedWhenClause
-  | |     +-condition_predicate=Greater
-  | |     | +-left_operand=AttributeReference[attribute_name=col1]
-  | |     | +-right_operand=AttributeReference[attribute_name=col2]
-  | |     +-result_expression=AttributeReference[attribute_name=col3]
-  | +-right_operand=Literal
-  |   +-NumericLiteral[numeric_string=0,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT
-  FUN(CASE col1
-        WHEN col2 + FUN(
-               CASE WHEN col1 < col2 THEN 0
-                    ELSE 1
-               END +
-               CASE WHEN col1 < col3 THEN 0
-                    ELSE 1
-               END
-             ) THEN 1
-        WHEN col3 THEN 2
-        ELSE 0
-      END + col4)
-FROM test;
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-FunctionCall[name=FUN]
-  |     +-Add
-  |       +-left_operand=SimpleCaseExpression
-  |       | +-case_operand=AttributeReference[attribute_name=col1]
-  |       | +-else_result_expression=Literal
-  |       | | +-NumericLiteral[numeric_string=0,float_like=false]
-  |       | +-when_clauses=
-  |       |   +-SimpleWhenClause
-  |       |   | +-condition_operand=Add
-  |       |   | | +-left_operand=AttributeReference[attribute_name=col2]
-  |       |   | | +-right_operand=FunctionCall[name=FUN]
-  |       |   | |   +-Add
-  |       |   | |     +-left_operand=SearchedCaseExpression
-  |       |   | |     | +-else_result_expression=Literal
-  |       |   | |     | | +-NumericLiteral[numeric_string=1,float_like=false]
-  |       |   | |     | +-when_clauses=
-  |       |   | |     |   +-SearchedWhenClause
-  |       |   | |     |     +-condition_predicate=Less
-  |       |   | |     |     | +-left_operand=AttributeReference[
-  |       |   | |     |     | | attribute_name=col1]
-  |       |   | |     |     | +-right_operand=AttributeReference[
-  |       |   | |     |     |   attribute_name=col2]
-  |       |   | |     |     +-result_expression=Literal
-  |       |   | |     |       +-NumericLiteral[numeric_string=0,float_like=false]
-  |       |   | |     +-right_operand=SearchedCaseExpression
-  |       |   | |       +-else_result_expression=Literal
-  |       |   | |       | +-NumericLiteral[numeric_string=1,float_like=false]
-  |       |   | |       +-when_clauses=
-  |       |   | |         +-SearchedWhenClause
-  |       |   | |           +-condition_predicate=Less
-  |       |   | |           | +-left_operand=AttributeReference[
-  |       |   | |           | | attribute_name=col1]
-  |       |   | |           | +-right_operand=AttributeReference[
-  |       |   | |           |   attribute_name=col3]
-  |       |   | |           +-result_expression=Literal
-  |       |   | |             +-NumericLiteral[numeric_string=0,float_like=false]
-  |       |   | +-result_expression=Literal
-  |       |   |   +-NumericLiteral[numeric_string=1,float_like=false]
-  |       |   +-SimpleWhenClause
-  |       |     +-condition_operand=AttributeReference[attribute_name=col3]
-  |       |     +-result_expression=Literal
-  |       |       +-NumericLiteral[numeric_string=2,float_like=false]
-  |       +-right_operand=AttributeReference[attribute_name=col4]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-# IN predicate
-SELECT *
-FROM test
-WHERE col1 IN (1, 3, 5);
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectStar
-  +-where_clause=InValueList
-  | +-test_expression=AttributeReference[attribute_name=col1]
-  | +-value_list=
-  |   +-Literal
-  |   | +-NumericLiteral[numeric_string=1,float_like=false]
-  |   +-Literal
-  |   | +-NumericLiteral[numeric_string=3,float_like=false]
-  |   +-Literal
-  |     +-NumericLiteral[numeric_string=5,float_like=false]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT *
-FROM test
-WHERE col1 IN (FUN(1),
-               col2+col3,
-               CASE WHEN col4 > 0 THEN col5 ELSE col6 END);
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectStar
-  +-where_clause=InValueList
-  | +-test_expression=AttributeReference[attribute_name=col1]
-  | +-value_list=
-  |   +-FunctionCall[name=FUN]
-  |   | +-Literal
-  |   |   +-NumericLiteral[numeric_string=1,float_like=false]
-  |   +-Add
-  |   | +-left_operand=AttributeReference[attribute_name=col2]
-  |   | +-right_operand=AttributeReference[attribute_name=col3]
-  |   +-SearchedCaseExpression
-  |     +-else_result_expression=AttributeReference[attribute_name=col6]
-  |     +-when_clauses=
-  |       +-SearchedWhenClause
-  |         +-condition_predicate=Greater
-  |         | +-left_operand=AttributeReference[attribute_name=col4]
-  |         | +-right_operand=Literal
-  |         |   +-NumericLiteral[numeric_string=0,float_like=false]
-  |         +-result_expression=AttributeReference[attribute_name=col5]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT *
-FROM test
-WHERE col1 NOT IN (col1, col2 + col3);
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectStar
-  +-where_clause=Not
-  | +-InValueList
-  |   +-test_expression=AttributeReference[attribute_name=col1]
-  |   +-value_list=
-  |     +-AttributeReference[attribute_name=col1]
-  |     +-Add
-  |       +-left_operand=AttributeReference[attribute_name=col2]
-  |       +-right_operand=AttributeReference[attribute_name=col3]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT *
-FROM test
-WHERE col1 IN (
-  SELECT SUM(col2+col3)
-  FROM bar
-  GROUP BY col4
-);
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectStar
-  +-where_clause=InTableQuery
-  | +-test_expression=AttributeReference[attribute_name=col1]
-  | +-table_query=SubqueryExpression
-  |   +-Select
-  |     +-select_clause=SelectList
-  |     | +-SelectListItem
-  |     |   +-FunctionCall[name=SUM]
-  |     |     +-Add
-  |     |       +-left_operand=AttributeReference[attribute_name=col2]
-  |     |       +-right_operand=AttributeReference[attribute_name=col3]
-  |     +-group_by=GroupBy
-  |     | +-AttributeReference[attribute_name=col4]
-  |     +-from_clause=
-  |       +-TableReference[table=bar]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT *
-FROM test
-WHERE col1 NOT IN (
-  SELECT col2
-  FROM bar
-  WHERE col3 IN (col4, col5)
-);
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectStar
-  +-where_clause=Not
-  | +-InTableQuery
-  |   +-test_expression=AttributeReference[attribute_name=col1]
-  |   +-table_query=SubqueryExpression
-  |     +-Select
-  |       +-select_clause=SelectList
-  |       | +-SelectListItem
-  |       |   +-AttributeReference[attribute_name=col2]
-  |       +-where_clause=InValueList
-  |       | +-test_expression=AttributeReference[attribute_name=col3]
-  |       | +-value_list=
-  |       |   +-AttributeReference[attribute_name=col4]
-  |       |   +-AttributeReference[attribute_name=col5]
-  |       +-from_clause=
-  |         +-TableReference[table=bar]
-  +-from_clause=
-    +-TableReference[table=test]
-==
-
-SELECT avg(attr1) OVER w FROM test
-WINDOW w AS
-(PARTITION BY attr2, attr3
- ORDER BY attr4
- ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING)
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-FunctionCall[name=avg,window_name=w]
-  |     +-AttributeReference[attribute_name=attr1]
-  +-from_clause=
-  | +-TableReference[table=test]
-  +-window_list=
-    +-window[window_name=w]
-      +-frame_info=FrameInfo[frame_mode=row,num_preceding=3,num_following=3]
-      +-partition_by=
-      | +-AttributeReference[attribute_name=attr2]
-      | +-AttributeReference[attribute_name=attr3]
-      +-order_by=
-        +-OrderByItem[is_asc=true,nulls_first=false]
-          +-AttributeReference[attribute_name=attr4]
-==
-
-SELECT avg(attr1) OVER w FROM test
-WINDOW w AS
-(PARTITION BY attr2, attr3
- ORDER BY attr4 DESC NULLS FIRST, attr5 ASC NULLS LAST
- RANGE BETWEEN 3 PRECEDING AND CURRENT ROW)
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-FunctionCall[name=avg,window_name=w]
-  |     +-AttributeReference[attribute_name=attr1]
-  +-from_clause=
-  | +-TableReference[table=test]
-  +-window_list=
-    +-window[window_name=w]
-      +-frame_info=FrameInfo[frame_mode=range,num_preceding=3,num_following=0]
-      +-partition_by=
-      | +-AttributeReference[attribute_name=attr2]
-      | +-AttributeReference[attribute_name=attr3]
-      +-order_by=
-        +-OrderByItem[is_asc=false,nulls_first=true]
-        | +-AttributeReference[attribute_name=attr4]
-        +-OrderByItem[is_asc=true,nulls_first=false]
-          +-AttributeReference[attribute_name=attr5]
-==
-
-SELECT avg(attr1) OVER w1 AS avg1, sum(attr5) OVER w2 AS sum5 FROM test
-WINDOW w1 AS
-(PARTITION BY attr2, attr3
- ORDER BY attr4
- ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING)
-WINDOW w2 AS
-(PARTITION BY attr1
- ORDER BY attr6
- RANGE BETWEEN 2 PRECEDING AND CURRENT ROW)
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem[alias=avg1]
-  | | +-FunctionCall[name=avg,window_name=w1]
-  | |   +-AttributeReference[attribute_name=attr1]
-  | +-SelectListItem[alias=sum5]
-  |   +-FunctionCall[name=sum,window_name=w2]
-  |     +-AttributeReference[attribute_name=attr5]
-  +-from_clause=
-  | +-TableReference[table=test]
-  +-window_list=
-    +-window[window_name=w1]
-    | +-frame_info=FrameInfo[frame_mode=row,num_preceding=3,num_following=3]
-    | +-partition_by=
-    | | +-AttributeReference[attribute_name=attr2]
-    | | +-AttributeReference[attribute_name=attr3]
-    | +-order_by=
-    |   +-OrderByItem[is_asc=true,nulls_first=false]
-    |     +-AttributeReference[attribute_name=attr4]
-    +-window[window_name=w2]
-      +-frame_info=FrameInfo[frame_mode=range,num_preceding=2,num_following=0]
-      +-partition_by=
-      | +-AttributeReference[attribute_name=attr1]
-      +-order_by=
-        +-OrderByItem[is_asc=true,nulls_first=false]
-          +-AttributeReference[attribute_name=attr6]
-==
-
-SELECT avg(attr1) OVER
-(PARTITION BY attr2, attr3
- ORDER BY attr4 DESC NULLS FIRST, attr5 ASC NULLS LAST
- RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
-FROM test
---
-SelectStatement
-+-select_query=Select
-  +-select_clause=SelectList
-  | +-SelectListItem
-  |   +-FunctionCall[name=avg]
-  |     +-AttributeReference[attribute_name=attr1]
-  |     +-window=window
-  |       +-frame_info=FrameInfo[frame_mode=range,num_preceding=-1,
-  |       | num_following=0]
-  |       +-partition_by=
-  |       | +-AttributeReference[attribute_name=attr2]
-  |       | +-AttributeReference[attribute_name=attr3]
-  |       +-order_by=
-  |         +-OrderByItem[is_asc=false,nulls_first=true]
-  |         | +-AttributeReference[attribute_name=attr4]
-  |         +-OrderByItem[is_asc=true,nulls_first=false]
-  |           +-AttributeReference[attribute_name=attr5]
-  +-from_clause=
-    +-TableReference[table=test]