blob: 7962d3e91c94ebceaeff54809eb15f0f5f7bb239 [file] [log] [blame]
# Copyright 2011-2015 Quickstep Technologies LLC.
# Copyright 2015 Pivotal Software, Inc.
#
# Licensed 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 AGG(*), AGG(), AGG(a, b, c) FROM test
--
SelectStatement
+-select_query=Select
+-select_clause=SelectList
| +-SelectListItem
| | +-FunctionCall[name=AGG,is_star=true]
| +-SelectListItem
| | +-FunctionCall[name=AGG]
| +-SelectListItem
| +-FunctionCall[name=AGG]
| +-AttributeReference[attribute_name=a]
| +-AttributeReference[attribute_name=b]
| +-AttributeReference[attribute_name=c]
+-from_clause=
+-TableReference[table=test]
==
SELECT AGG()+1, AGG()*2+1+AGG(a, b)/AGG(c, d) FROM test
--
SelectStatement
+-select_query=Select
+-select_clause=SelectList
| +-SelectListItem
| | +-Add
| | +-left_operand=FunctionCall[name=AGG]
| | +-right_operand=Literal
| | +-NumericLiteral[numeric_string=1,float_like=false]
| +-SelectListItem
| +-Add
| +-left_operand=Add
| | +-left_operand=Multiply
| | | +-left_operand=FunctionCall[name=AGG]
| | | +-right_operand=Literal
| | | +-NumericLiteral[numeric_string=2,float_like=false]
| | +-right_operand=Literal
| | +-NumericLiteral[numeric_string=1,float_like=false]
| +-right_operand=Divide
| +-left_operand=FunctionCall[name=AGG]
| | +-AttributeReference[attribute_name=a]
| | +-AttributeReference[attribute_name=b]
| +-right_operand=FunctionCall[name=AGG]
| +-AttributeReference[attribute_name=c]
| +-AttributeReference[attribute_name=d]
+-from_clause=
+-TableReference[table=test]
==
# Function calls as arguments of another function calls.
# This is just for testing purpose. If agg is an aggregation,
# the query is not valid. The query resolver will capture the error.
SELECT AGG(AGG(AGG()+1)*2, AGG(*)/2.0) FROM test
--
SelectStatement
+-select_query=Select
+-select_clause=SelectList
| +-SelectListItem
| +-FunctionCall[name=AGG]
| +-Multiply
| | +-left_operand=FunctionCall[name=AGG]
| | | +-Add
| | | +-left_operand=FunctionCall[name=AGG]
| | | +-right_operand=Literal
| | | +-NumericLiteral[numeric_string=1,float_like=false]
| | +-right_operand=Literal
| | +-NumericLiteral[numeric_string=2,float_like=false]
| +-Divide
| +-left_operand=FunctionCall[name=AGG,is_star=true]
| +-right_operand=Literal
| +-NumericLiteral[numeric_string=2.0,float_like=true]
+-from_clause=
+-TableReference[table=test]
==
SELECT AGG(*, a) FROM test
--
ERROR: syntax error (1 : 13)
SELECT AGG(*, a) FROM test
^
==
SELECT AGG()+1 FROM test GROUP BY a+1, AGG()+1 HAVING AGG()*2>1
--
SelectStatement
+-select_query=Select
+-select_clause=SelectList
| +-SelectListItem
| +-Add
| +-left_operand=FunctionCall[name=AGG]
| +-right_operand=Literal
| +-NumericLiteral[numeric_string=1,float_like=false]
+-group_by=GroupBy
| +-Add
| | +-left_operand=AttributeReference[attribute_name=a]
| | +-right_operand=Literal
| | +-NumericLiteral[numeric_string=1,float_like=false]
| +-Add
| +-left_operand=FunctionCall[name=AGG]
| +-right_operand=Literal
| +-NumericLiteral[numeric_string=1,float_like=false]
+-having=HAVING
| +-Greater
| +-left_operand=Multiply
| | +-left_operand=FunctionCall[name=AGG]
| | +-right_operand=Literal
| | +-NumericLiteral[numeric_string=2,float_like=false]
| +-right_operand=Literal
| +-NumericLiteral[numeric_string=1,float_like=false]
+-from_clause=
+-TableReference[table=test]
==
SELECT 1 FROM test HAVING AGG() > 1 AND 1=1
--
SelectStatement
+-select_query=Select
+-select_clause=SelectList
| +-SelectListItem
| +-Literal
| +-NumericLiteral[numeric_string=1,float_like=false]
+-having=HAVING
| +-And
| +-Greater
| | +-left_operand=FunctionCall[name=AGG]
| | +-right_operand=Literal
| | +-NumericLiteral[numeric_string=1,float_like=false]
| +-Equal
| +-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 FROM test GROUP BY AGG()+1, AGG()/AGG()
--
SelectStatement
+-select_query=Select
+-select_clause=SelectList
| +-SelectListItem
| +-Literal
| +-NumericLiteral[numeric_string=1,float_like=false]
+-group_by=GroupBy
| +-Add
| | +-left_operand=FunctionCall[name=AGG]
| | +-right_operand=Literal
| | +-NumericLiteral[numeric_string=1,float_like=false]
| +-Divide
| +-left_operand=FunctionCall[name=AGG]
| +-right_operand=FunctionCall[name=AGG]
+-from_clause=
+-TableReference[table=test]
==
SELECT AGG(DISTINCT x), AGG(y) FROM test GROUP BY z
--
SelectStatement
+-select_query=Select
+-select_clause=SelectList
| +-SelectListItem
| | +-FunctionCall[name=AGG,is_distinct=true]
| | +-AttributeReference[attribute_name=x]
| +-SelectListItem
| +-FunctionCall[name=AGG]
| +-AttributeReference[attribute_name=y]
+-group_by=GroupBy
| +-AttributeReference[attribute_name=z]
+-from_clause=
+-TableReference[table=test]
==
SELECT AGG(DISTINCT FUN(x) + y) * AGG(z)
FROM test
GROUP BY z
HAVING AGG(DISTINCT w) + AGG(s) > 1
--
SelectStatement
+-select_query=Select
+-select_clause=SelectList
| +-SelectListItem
| +-Multiply
| +-left_operand=FunctionCall[name=AGG,is_distinct=true]
| | +-Add
| | +-left_operand=FunctionCall[name=FUN]
| | | +-AttributeReference[attribute_name=x]
| | +-right_operand=AttributeReference[attribute_name=y]
| +-right_operand=FunctionCall[name=AGG]
| +-AttributeReference[attribute_name=z]
+-group_by=GroupBy
| +-AttributeReference[attribute_name=z]
+-having=HAVING
| +-Greater
| +-left_operand=Add
| | +-left_operand=FunctionCall[name=AGG,is_distinct=true]
| | | +-AttributeReference[attribute_name=w]
| | +-right_operand=FunctionCall[name=AGG]
| | +-AttributeReference[attribute_name=s]
| +-right_operand=Literal
| +-NumericLiteral[numeric_string=1,float_like=false]
+-from_clause=
+-TableReference[table=test]
==