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

[default optimized_logical_plan physical_plan]
insert into test values (1, 2, 1.1, 1.3, 'foo', 'foo')
--
[Optimized Logical Plan]
TopLevelPlan
+-plan=InsertTuple
| +-input=TableReference[relation_name=Test,relation_alias=test]
| | +-AttributeReference[id=0,name=int_col,relation=test,type=Int NULL]
| | +-AttributeReference[id=1,name=long_col,relation=test,type=Long]
| | +-AttributeReference[id=2,name=float_col,relation=test,type=Float]
| | +-AttributeReference[id=3,name=double_col,relation=test,type=Double NULL]
| | +-AttributeReference[id=4,name=char_col,relation=test,type=Char(20)]
| | +-AttributeReference[id=5,name=vchar_col,relation=test,type=VarChar(20) NULL]
| +-column_values=
|   +-Literal[value=1,type=Int NULL]
|   +-Literal[value=2,type=Long]
|   +-Literal[value=1.10000002,type=Float]
|   +-Literal[value=1.3,type=Double NULL]
|   +-Literal[value=foo,type=Char(20)]
|   +-Literal[value=foo,type=VarChar(20) NULL]
+-output_attributes=
  +-[]
[Physical Plan]
TopLevelPlan
+-plan=InsertTuple
| +-input=TableReference[relation=Test,alias=test]
| | +-AttributeReference[id=0,name=int_col,relation=test,type=Int NULL]
| | +-AttributeReference[id=1,name=long_col,relation=test,type=Long]
| | +-AttributeReference[id=2,name=float_col,relation=test,type=Float]
| | +-AttributeReference[id=3,name=double_col,relation=test,type=Double NULL]
| | +-AttributeReference[id=4,name=char_col,relation=test,type=Char(20)]
| | +-AttributeReference[id=5,name=vchar_col,relation=test,type=VarChar(20) NULL]
| +-column_values=
|   +-Literal[value=1,type=Int NULL]
|   +-Literal[value=2,type=Long]
|   +-Literal[value=1.10000002,type=Float]
|   +-Literal[value=1.3,type=Double NULL]
|   +-Literal[value=foo,type=Char(20)]
|   +-Literal[value=foo,type=VarChar(20) NULL]
+-output_attributes=
  +-[]
