content: /*
   * Copyright 1999-2017 Alibaba Group Holding Ltd.
   *
   * 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.
   */
  package com.alibaba.druid.bvt.sql.hive;
  
  import com.alibaba.druid.sql.OracleTest;
  import com.alibaba.druid.sql.SQLUtils;
  import com.alibaba.druid.sql.ast.SQLStatement;
  import com.alibaba.druid.sql.visitor.SchemaStatVisitor;
  import com.alibaba.druid.util.JdbcConstants;
  
  import java.util.List;
  
  public class HiveCreateTableTest_21 extends OracleTest {
      public void test_0() throws Exception {
          String sql = //
                  "create table if not exists aliyun_cdm.test_903_table  (\n" +
                          "col1 TINYINT,col2 SMALLINT,col3 INT,col4 BIGINT,col5 BOOLEAN\n" +
                          ",col6 FLOAT,col7 DOUBLE,col8 DOUBLE PRECISION,col9 STRING,col10 BINARY\n" +
                          ",col11 TIMESTAMP,col12 DECIMAL,col13 DECIMAL(10,2),col13 DATE,col14 VARCHAR,col15 CHAR\n" +
                          ",col16 ARRAY<STRING>,col17 MAP<STRING,INT>,col18 STRUCT<col19:STRING comment 'column19'>,col20 UNIONTYPE<STRING,INT>\n" +
                          ") clustered by (PAR1,PAR2) INTO 32 BUCKETS\n";
  
          List<SQLStatement> statementList = SQLUtils.toStatementList(sql, JdbcConstants.HIVE);
          SQLStatement stmt = statementList.get(0);
          System.out.println(stmt.toString());
  
          assertEquals(1, statementList.size());
  
          SchemaStatVisitor visitor = SQLUtils.createSchemaStatVisitor(JdbcConstants.HIVE);
          stmt.accept(visitor);
  
          {
              String text = SQLUtils.toSQLString(stmt, JdbcConstants.HIVE);
  
              assertEquals("CREATE TABLE IF NOT EXISTS aliyun_cdm.test_903_table (\n" +
                      "\tcol1 TINYINT,\n" +
                      "\tcol2 SMALLINT,\n" +
                      "\tcol3 INT,\n" +
                      "\tcol4 BIGINT,\n" +
                      "\tcol5 BOOLEAN,\n" +
                      "\tcol6 FLOAT,\n" +
                      "\tcol7 DOUBLE,\n" +
                      "\tcol8 DOUBLE PRECISION,\n" +
                      "\tcol9 STRING,\n" +
                      "\tcol10 BINARY,\n" +
                      "\tcol11 TIMESTAMP,\n" +
                      "\tcol12 DECIMAL,\n" +
                      "\tcol13 DECIMAL(10, 2),\n" +
                      "\tcol13 DATE,\n" +
                      "\tcol14 VARCHAR,\n" +
                      "\tcol15 CHAR,\n" +
                      "\tcol16 ARRAY<STRING>,\n" +
                      "\tcol17 MAP<STRING, INT>,\n" +
                      "\tcol18 STRUCT<col19:STRING>,\n" +
                      "\tcol20 UNIONTYPE<STRING, INT>\n" +
                      ")\n" +
                      "CLUSTERED BY (PAR1,PAR2)\n" +
                      "INTO 32 BUCKETS", text);
          }
  
          System.out.println("Tables : " + visitor.getTables());
          System.out.println("fields : " + visitor.getColumns());
          System.out.println("coditions : " + visitor.getConditions());
          System.out.println("relationships : " + visitor.getRelationships());
          System.out.println("orderBy : " + visitor.getOrderByColumns());
  
          assertEquals(1, visitor.getTables().size());
          assertEquals(19, visitor.getColumns().size());
          assertEquals(0, visitor.getConditions().size());
          assertEquals(0, visitor.getRelationships().size());
          assertEquals(0, visitor.getOrderByColumns().size());
  
          assertTrue(visitor.containsTable("aliyun_cdm.test_903_table"));
      }
  }
  