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.mysql.createTable;
  
  import com.alibaba.druid.sql.MysqlTest;
  import com.alibaba.druid.sql.SQLUtils;
  import com.alibaba.druid.sql.ast.SQLStatement;
  import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
  import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor;
  import com.alibaba.druid.stat.TableStat.Column;
  import org.junit.Test;
  
  public class MySqlCreateTableTest70 extends MysqlTest {
      @Test
      public void test_one() throws Exception {
          String sql = "CREATE TABLE `app_customer_license` ("
                  + "  `id`  bigint(20) NOT NULL AUTO_INCREMENT ,"
                  + "  `created_by`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,"
                  + "  `created_date`  datetime NOT NULL ,"
                  + "  `last_modified_by`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,"
                  + "  `last_modified_date`  datetime NULL DEFAULT NULL ,"
                  + "  `version`  bigint(20) NOT NULL ,"
                  + "  `device_id`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,"
                  + "  `customer_info`  bigint(20) NULL DEFAULT NULL ,"
                  + "  PRIMARY KEY (`id`),"
                  + "  FOREIGN KEY (`customer_info`) REFERENCES `app_customer_info` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,"
                  + "  INDEX `fk_app_customer_info_id` (`customer_info`) USING BTREE,"
                  + "  UNIQUE `idx_app_customer_license_deviceId` (`device_id`) USING BTREE"
                  + ")"
                  + "ENGINE=InnoDB "
                  + "DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci "
                  + "AUTO_INCREMENT=1 "
                  + "ROW_FORMAT=DYNAMIC "
                  + ";;";
  
          MySqlStatementParser parser = new MySqlStatementParser(sql);
          SQLStatement stmt = parser.parseCreateTable();
  
          MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
          stmt.accept(visitor);
  
          Column column = visitor.getColumn("app_customer_license", "version");
          assertNotNull(column);
          assertEquals("bigint", column.getDataType());
  
          {
              String output = SQLUtils.toMySqlString(stmt);
              assertEquals("CREATE TABLE `app_customer_license` ("
                      + "\n\t`id` bigint(20) NOT NULL AUTO_INCREMENT,"
                      + "\n\t`created_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,"
                      + "\n\t`created_date` datetime NOT NULL,"
                      + "\n\t`last_modified_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,"
                      + "\n\t`last_modified_date` datetime NULL DEFAULT NULL,"
                      + "\n\t`version` bigint(20) NOT NULL,"
                      + "\n\t`device_id` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,"
                      + "\n\t`customer_info` bigint(20) NULL DEFAULT NULL,"
                      + "\n\tPRIMARY KEY (`id`),"
                      + "\n\tFOREIGN KEY (`customer_info`) REFERENCES `app_customer_info` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,"
                      + "\n\tINDEX `fk_app_customer_info_id` USING BTREE(`customer_info`),"
                      + "\n\tUNIQUE `idx_app_customer_license_deviceId` USING BTREE (`device_id`)"
                      + "\n) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci AUTO_INCREMENT = 1 ROW_FORMAT = DYNAMIC", output);
          }
  
          {
              String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
              assertEquals("create table `app_customer_license` ("
                      + "\n\t`id` bigint(20) not null auto_increment,"
                      + "\n\t`created_by` varchar(50) character set utf8 collate utf8_general_ci not null,"
                      + "\n\t`created_date` datetime not null,"
                      + "\n\t`last_modified_by` varchar(50) character set utf8 collate utf8_general_ci null default null,"
                      + "\n\t`last_modified_date` datetime null default null,"
                      + "\n\t`version` bigint(20) not null,"
                      + "\n\t`device_id` varchar(20) character set utf8 collate utf8_general_ci not null,"
                      + "\n\t`customer_info` bigint(20) null default null,"
                      + "\n\tprimary key (`id`),"
                      + "\n\tforeign key (`customer_info`) references `app_customer_info` (`id`) on delete restrict on update restrict,"
                      + "\n\tindex `fk_app_customer_info_id` using BTREE(`customer_info`),"
                      + "\n\tunique `idx_app_customer_license_deviceId` using BTREE (`device_id`)"
                      + "\n) engine = InnoDB character set = utf8 collate = utf8_general_ci auto_increment = 1 row_format = DYNAMIC", output);
          }
      }
  }
  