# 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 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]
==
