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

CREATE TABLE TABLE (attr int)
--
ERROR: syntax error (1 : 14)
CREATE TABLE TABLE (attr int)
             ^
==

# We do not allow an empty-column table.
CREATE TABLE test ()
--
ERROR: syntax error (1 : 20)
CREATE TABLE test ()
                   ^
==

CREATE TABLE test (attr1 INT, attr2 FLOAT, attr3 DOUBLE, attr4 CHAR(5), attr5 VARCHAR(4))
--
CreateTableStatement[relation_name=test]
+-attribute_list=
  +-AttributeDefinition[name=attr1,type=Int]
  +-AttributeDefinition[name=attr2,type=Float]
  +-AttributeDefinition[name=attr3,type=Double]
  +-AttributeDefinition[name=attr4,type=Char(5)]
  +-AttributeDefinition[name=attr5,type=VarChar(4)]
==

CREATE TABLE test (attr CHAR(-1))
--
ERROR: syntax error (1 : 30)
CREATE TABLE test (attr CHAR(-1))
                             ^
==

# Zero-length char type is not allowed.
CREATE TABLE test (attr CHAR(0))
--
ERROR: Length for CHAR type must be at least 1 (1 : 30)
CREATE TABLE test (attr CHAR(0))
                             ^
==

CREATE TABLE test(attr CHAR(1+1))
--
ERROR: syntax error (1 : 30)
CREATE TABLE test(attr CHAR(1+1))
                             ^
==

CREATE TABLE test (attr UNKNOWN_TYPE)
--
ERROR: syntax error (1 : 25)
CREATE TABLE test (attr UNKNOWN_TYPE)
                        ^
==

CREATE TABLE test (attr INT NULL, attr FLOAT NOT NULL)
--
CreateTableStatement[relation_name=test]
+-attribute_list=
  +-AttributeDefinition[name=attr,type=Int NULL]
  +-AttributeDefinition[name=attr,type=Float]
==

CREATE TABLE test (attr INT UNIQUE)
--
ERROR: Column Constraints (UNIQUE) is not supported yet (1 : 29)
CREATE TABLE test (attr INT UNIQUE)
                            ^
==

CREATE TABLE test (attr INT PRIMARY KEY)
--
ERROR: Column Constraints (PRIMARY KEY) is not supported yet (1 : 29)
CREATE TABLE test (attr INT PRIMARY KEY)
                            ^
==

CREATE TABLE test (attr INT DEFAULT 4)
--
ERROR: Column Constraints (DEFAULT) is not supported yet (1 : 29)
CREATE TABLE test (attr INT DEFAULT 4)
                            ^
==

CREATE TABLE test (attr INT CHECK(attr>5))
--
ERROR: Column Constraints (CHECK) is not supported yet (1 : 29)
CREATE TABLE test (attr INT CHECK(attr>5))
                            ^
==

CREATE TABLE test (attr INT REFERENCES test2(attr2))
--
ERROR: Foreign Keys is not supported yet (1 : 29)
CREATE TABLE test (attr INT REFERENCES test2(attr2))
                            ^
==

CREATE TABLE test (attr INT) UNIQUE(attr)
--
ERROR: Table Constraints (UNIQUE) is not supported yet (1 : 30)
CREATE TABLE test (attr INT) UNIQUE(attr)
                             ^
==

CREATE TABLE test (attr INT) PRIMARY KEY(attr)
--
ERROR: Table Constraints (PRIMARY KEY) is not supported yet (1 : 30)
CREATE TABLE test (attr INT) PRIMARY KEY(attr)
                             ^
==

CREATE TABLE test (attr INT) FOREIGN KEY(attr)
--
ERROR: syntax error (1 : 47)
... TABLE test (attr INT) FOREIGN KEY(attr)
                                           ^
==

CREATE TABLE test (attr INT) CHECK(attr>0)
--
ERROR: Table Constraints (CHECK) is not supported yet (1 : 30)
CREATE TABLE test (attr INT) CHECK(attr>0)
                             ^
==

CREATE TABLE test (attr INT) PARTITION BY HASH(attr) PARTITIONS 4
--
CreateTableStatement[relation_name=test]
+-attribute_list=
| +-AttributeDefinition[name=attr,type=Int]
+-partition_clause=
  +-PartitionClause[partition_type=hash]
    +-Number of Partitions=NumericLiteral[numeric_string=4,float_like=false]
    +-attribute_name_list=
      +-String[value=attr]
==

# Empty partitioning attribute is not allowed
CREATE TABLE test (attr INT) PARTITION BY HASH() PARTITIONS 4
--
ERROR: syntax error (1 : 48)
...TABLE test (attr INT) PARTITION BY HASH() PARTITIONS 4
                                           ^
==

# Zero partitions not allowed
CREATE TABLE test (attr INT) PARTITION BY HASH(attr) PARTITIONS 0
--
ERROR: NUMBER OF PARITIONS must be between 1 and 64 (1 : 65)
...INT) PARTITION BY HASH(attr) PARTITIONS 0
                                           ^
==

# Missing number of partitions not allowed
CREATE TABLE test (attr INT) PARTITION BY HASH(attr) PARTITIONS
--
ERROR: syntax error (1 : 64)
... INT) PARTITION BY HASH(attr) PARTITIONS
                                           ^
==

# Missing PARTITIONS attribute not allowed
CREATE TABLE test (attr INT) PARTITION BY HASH(attr)
--
ERROR: syntax error (1 : 53)
... test (attr INT) PARTITION BY HASH(attr)
                                           ^
==

# Missing partitioning type not allowed
CREATE TABLE test (attr INT) PARTITION BY (attr) PARTITIONS 4
--
ERROR: syntax error (1 : 43)
CREATE TABLE test (attr INT) PARTITION BY (attr) PARTITIONS 4
                                          ^
==

# Number of partitions greater than 64 not allowed
CREATE TABLE test (attr INT) PARTITION BY HASH(attr) PARTITIONS 65
--
ERROR: NUMBER OF PARITIONS must be between 1 and 64 (1 : 65)
...INT) PARTITION BY HASH(attr) PARTITIONS 65
                                           ^
==

# Missing PARTITION BY clause not allowed
CREATE TABLE test (attr INT) PARTITIONS 4
--
ERROR: syntax error (1 : 30)
CREATE TABLE test (attr INT) PARTITIONS 4
                             ^
==

# Duplicate partition attributes.
CREATE TABLE test (attr INT) PARTITION BY HASH(attr, attr) PARTITIONS 4
--
CreateTableStatement[relation_name=test]
+-attribute_list=
| +-AttributeDefinition[name=attr,type=Int]
+-partition_clause=
  +-PartitionClause[partition_type=hash]
    +-Number of Partitions=NumericLiteral[numeric_string=4,float_like=false]
    +-attribute_name_list=
      +-String[value=attr]
      +-String[value=attr]
==

# Multiple partition attributes.
CREATE TABLE test (attr1 INT, attr2 LONG, attr3 FLOAT, attr4 DOUBLE, attr5 CHAR(5), attr6 VARCHAR(4))
PARTITION BY HASH(attr1, attr2, attr3, attr4, attr5, attr6) PARTITIONS 4
--
CreateTableStatement[relation_name=test]
+-attribute_list=
| +-AttributeDefinition[name=attr1,type=Int]
| +-AttributeDefinition[name=attr2,type=Long]
| +-AttributeDefinition[name=attr3,type=Float]
| +-AttributeDefinition[name=attr4,type=Double]
| +-AttributeDefinition[name=attr5,type=Char(5)]
| +-AttributeDefinition[name=attr6,type=VarChar(4)]
+-partition_clause=
  +-PartitionClause[partition_type=hash]
    +-Number of Partitions=NumericLiteral[numeric_string=4,float_like=false]
    +-attribute_name_list=
      +-String[value=attr1]
      +-String[value=attr2]
      +-String[value=attr3]
      +-String[value=attr4]
      +-String[value=attr5]
      +-String[value=attr6]
==

CREATE TABLE test (attr INT) WITH BLOCKPROPERTIES
(TYPE rowstore)
--
CreateTableStatement[relation_name=test]
+-attribute_list=
| +-AttributeDefinition[name=attr,type=Int]
+-block_properties=
  +-BlockProperties
    +-block_property=KeyStringValue[key=TYPE]
      +-value=String[value=rowstore]
==

CREATE TABLE test (attr INT, attr2 INT) WITH BLOCKPROPERTIES
(TYPE columnstore)
--
CreateTableStatement[relation_name=test]
+-attribute_list=
| +-AttributeDefinition[name=attr,type=Int]
| +-AttributeDefinition[name=attr2,type=Int]
+-block_properties=
  +-BlockProperties
    +-block_property=KeyStringValue[key=TYPE]
      +-value=String[value=columnstore]
==

CREATE TABLE test (attr INT, attr2 INT) WITH BLOCKPROPERTIES
(TYPE columnstore, SORT attr)
--
CreateTableStatement[relation_name=test]
+-attribute_list=
| +-AttributeDefinition[name=attr,type=Int]
| +-AttributeDefinition[name=attr2,type=Int]
+-block_properties=
  +-BlockProperties
    +-block_property=KeyStringValue[key=TYPE]
    | +-value=String[value=columnstore]
    +-block_property=KeyStringValue[key=SORT]
      +-value=String[value=attr]
==

CREATE TABLE test (attr INT, attr2 INT) WITH BLOCKPROPERTIES
(TYPE columnstore, SORT (attr, attr2))
--
CreateTableStatement[relation_name=test]
+-attribute_list=
| +-AttributeDefinition[name=attr,type=Int]
| +-AttributeDefinition[name=attr2,type=Int]
+-block_properties=
  +-BlockProperties
    +-block_property=KeyStringValue[key=TYPE]
    | +-value=String[value=columnstore]
    +-block_property=KeyStringList[key=SORT]
      +-value_list=
        +-String[value=attr]
        +-String[value=attr2]
==

CREATE TABLE test (attr INT) WITH BLOCKPROPERTIES
(TYPE compressed_columnstore, SORT attr, COMPRESS ALL)
--
CreateTableStatement[relation_name=test]
+-attribute_list=
| +-AttributeDefinition[name=attr,type=Int]
+-block_properties=
  +-BlockProperties
    +-block_property=KeyStringValue[key=TYPE]
    | +-value=String[value=compressed_columnstore]
    +-block_property=KeyStringValue[key=SORT]
    | +-value=String[value=attr]
    +-block_property=KeyStringValue[key=COMPRESS]
      +-value=String[value=ALL]
==

CREATE TABLE test (attr1 INT, attr2 INT) WITH BLOCKPROPERTIES
(TYPE compressed_columnstore, SORT attr1, COMPRESS (attr1, attr2))
--
CreateTableStatement[relation_name=test]
+-attribute_list=
| +-AttributeDefinition[name=attr1,type=Int]
| +-AttributeDefinition[name=attr2,type=Int]
+-block_properties=
  +-BlockProperties
    +-block_property=KeyStringValue[key=TYPE]
    | +-value=String[value=compressed_columnstore]
    +-block_property=KeyStringValue[key=SORT]
    | +-value=String[value=attr1]
    +-block_property=KeyStringList[key=COMPRESS]
      +-value_list=
        +-String[value=attr1]
        +-String[value=attr2]
==

CREATE TABLE test (attr INT) WITH BLOCKPROPERTIES
(TYPE rowstore, BLOCKSIZEMB 10);
--
CreateTableStatement[relation_name=test]
+-attribute_list=
| +-AttributeDefinition[name=attr,type=Int]
+-block_properties=
  +-BlockProperties
    +-block_property=KeyStringValue[key=TYPE]
    | +-value=String[value=rowstore]
    +-block_property=KeyIntegerValue[key=BLOCKSIZEMB]
      +-value=NumericLiteral[numeric_string=10,float_like=false]
