#   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.

UPDATE TABLE test SET attr = 1
--
ERROR: syntax error (1 : 8)
UPDATE TABLE test SET attr = 1
       ^
==

UPDATE TABLE SET attr = 1
--
ERROR: syntax error (1 : 8)
UPDATE TABLE SET attr = 1
       ^
==

UPDATE test SET attr1 = 1, attr2=5, attr3 = 4 WHERE attr2 < 1 AND attr1 > 5 AND attr1+1<2*attr2
--
UpdateStatement[relation_name=test]
+-where_predicate=And
| +-Less
| | +-left_operand=AttributeReference[attribute_name=attr2]
| | +-right_operand=Literal
| |   +-NumericLiteral[numeric_string=1,float_like=false]
| +-Greater
| | +-left_operand=AttributeReference[attribute_name=attr1]
| | +-right_operand=Literal
| |   +-NumericLiteral[numeric_string=5,float_like=false]
| +-Less
|   +-left_operand=Add
|   | +-left_operand=AttributeReference[attribute_name=attr1]
|   | +-right_operand=Literal
|   |   +-NumericLiteral[numeric_string=1,float_like=false]
|   +-right_operand=Multiply
|     +-left_operand=Literal
|     | +-NumericLiteral[numeric_string=2,float_like=false]
|     +-right_operand=AttributeReference[attribute_name=attr2]
+-assignment=
  +-AttributeAssignment[attribute_name=attr1]
  | +-value=Literal
  |   +-NumericLiteral[numeric_string=1,float_like=false]
  +-AttributeAssignment[attribute_name=attr2]
  | +-value=Literal
  |   +-NumericLiteral[numeric_string=5,float_like=false]
  +-AttributeAssignment[attribute_name=attr3]
    +-value=Literal
      +-NumericLiteral[numeric_string=4,float_like=false]
==

UPDATE test SET attr = 4+1
--
UpdateStatement[relation_name=test]
+-assignment=
  +-AttributeAssignment[attribute_name=attr]
    +-value=Add
      +-left_operand=Literal
      | +-NumericLiteral[numeric_string=4,float_like=false]
      +-right_operand=Literal
        +-NumericLiteral[numeric_string=1,float_like=false]
==

UPDATE test WHERE attr2=1
--
ERROR: syntax error (1 : 13)
UPDATE test WHERE attr2=1
            ^
