add sql testcases

This commit is contained in:
高铁
2016-03-12 14:43:29 +08:00
parent d9a6fde5d6
commit 491752c4dd
49 changed files with 920 additions and 378 deletions
@@ -56,11 +56,13 @@ public class MySqlMatchAgainstExpr extends SQLExprImpl implements MySqlExpr {
}
public static enum SearchModifier {
IN_BOOLEAN_MODE("IN BOOLEAN MODE"), IN_NATURAL_LANGUAGE_MODE("IN NATURAL LANGUAGE MODE"),
IN_BOOLEAN_MODE("IN BOOLEAN MODE"), //
IN_NATURAL_LANGUAGE_MODE("IN NATURAL LANGUAGE MODE"), //
IN_NATURAL_LANGUAGE_MODE_WITH_QUERY_EXPANSION("IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION"),
WITH_QUERY_EXPANSION("WITH QUERY EXPANSION"), ;
WITH_QUERY_EXPANSION("WITH QUERY EXPANSION");
public final String name;
public final String name_lcase;
SearchModifier(){
this(null);
@@ -68,6 +70,7 @@ public class MySqlMatchAgainstExpr extends SQLExprImpl implements MySqlExpr {
SearchModifier(String name){
this.name = name;
this.name_lcase = name.toLowerCase();
}
}
@@ -500,7 +500,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
String key = option.getKey();
print(' ');
print0(key);
print0(ucase ? key : key.toLowerCase());
if ("TABLESPACE".equals(key)) {
print(' ');
@@ -812,7 +812,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
x.getAgainst().accept(this);
if (x.getSearchModifier() != null) {
print(' ');
print0(x.getSearchModifier().name);
print0(ucase ? x.getSearchModifier().name : x.getSearchModifier().name_lcase);
}
print(')');
@@ -2999,7 +2999,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
x.getExpr().accept(this);
if (x.getType() != null) {
print(' ');
print0(x.getType().name());
print0(ucase ? x.getType().name : x.getType().name_lcase);
}
return false;
@@ -2989,56 +2989,65 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
@Override
public boolean visit(SQLAlterTableTruncatePartition x) {
print0(ucase ? "TRUNCATE PARTITION " : "truncate partition ");
printlnAndAccept(x.getPartitions(), ",");
printPartitions(x.getPartitions());
return false;
}
@Override
public boolean visit(SQLAlterTableDiscardPartition x) {
print0(ucase ? "DISCARD PARTITION " : "discard partition ");
printlnAndAccept(x.getPartitions(), ",");
printPartitions(x.getPartitions());
return false;
}
@Override
public boolean visit(SQLAlterTableImportPartition x) {
print0(ucase ? "IMPORT PARTITION " : "import partition ");
printlnAndAccept(x.getPartitions(), ",");
printPartitions(x.getPartitions());
return false;
}
@Override
public boolean visit(SQLAlterTableAnalyzePartition x) {
print0(ucase ? "ANALYZE PARTITION " : "analyze partition ");
printlnAndAccept(x.getPartitions(), ",");
printPartitions(x.getPartitions());
return false;
}
protected void printPartitions(List<SQLName> partitions) {
if (partitions.size() == 1 && "ALL".equalsIgnoreCase(partitions.get(0).getSimpleName())) {
print0(ucase ? "ALL" : "all");
} else {
printAndAccept(partitions, ", ");
}
}
@Override
public boolean visit(SQLAlterTableCheckPartition x) {
print0(ucase ? "CHECK PARTITION " : "check partition ");
printlnAndAccept(x.getPartitions(), ",");
printPartitions(x.getPartitions());
return false;
}
@Override
public boolean visit(SQLAlterTableOptimizePartition x) {
print0(ucase ? "OPTIMIZE PARTITION " : "optimize partition ");
printlnAndAccept(x.getPartitions(), ",");
printPartitions(x.getPartitions());
return false;
}
@Override
public boolean visit(SQLAlterTableRebuildPartition x) {
print0(ucase ? "REBUILD PARTITION " : "rebuild partition ");
printlnAndAccept(x.getPartitions(), ",");
printPartitions(x.getPartitions());
return false;
}
@Override
public boolean visit(SQLAlterTableRepairPartition x) {
print0(ucase ? "REPAIR PARTITION " : "repair partition ");
printlnAndAccept(x.getPartitions(), ",");
printPartitions(x.getPartitions());
return false;
}
}
@@ -18,13 +18,14 @@ package com.alibaba.druid.bvt.sql.mysql;
import java.util.List;
import org.junit.Assert;
import junit.framework.TestCase;
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.MySqlOutputVisitor;
import com.alibaba.druid.sql.parser.SQLStatementParser;
import junit.framework.TestCase;
public class FullTextSearchesWithQueryExpansionTest extends TestCase {
public void test_0() throws Exception {
@@ -32,21 +33,24 @@ public class FullTextSearchesWithQueryExpansionTest extends TestCase {
SQLStatementParser parser = new MySqlStatementParser(sql);
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String text = output(stmtList);
Assert.assertEquals("SELECT *\nFROM articles\nWHERE MATCH (title, body) AGAINST ('database' IN NATURAL LANGUAGE MODE);",
text);
}
private String output(List<SQLStatement> stmtList) {
StringBuilder out = new StringBuilder();
for (SQLStatement stmt : stmtList) {
stmt.accept(new MySqlOutputVisitor(out));
out.append(";");
{
String text = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("SELECT *" //
+ "\nFROM articles" //
+ "\nWHERE MATCH (title, body) AGAINST ('database' IN NATURAL LANGUAGE MODE)",
text);
}
{
String text = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("select *" //
+ "\nfrom articles" //
+ "\nwhere match (title, body) against ('database' in natural language mode)",
text);
}
return out.toString();
}
}
@@ -44,11 +44,19 @@ public class MySqlCreateTableTest56 extends MysqlTest {
Assert.assertEquals(1, visitor.getColumns().size());
Assert.assertEquals(0, visitor.getConditions().size());
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE tableA (" //
+ "\n\tdatasn varchar(100) NOT NULL, " //
+ "\n\tPRIMARY KEY (datasn)" //
+ "\n) ENGINE = MRG_MyISAM CHARSET = utf8 UNION = (tableB, tableC)", output);
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE tableA (" //
+ "\n\tdatasn varchar(100) NOT NULL, " //
+ "\n\tPRIMARY KEY (datasn)" //
+ "\n) ENGINE = MRG_MyISAM CHARSET = utf8 UNION = (tableB, tableC)", output);
}
{
String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table tableA (" //
+ "\n\tdatasn varchar(100) not null, " //
+ "\n\tprimary key (datasn)" //
+ "\n) engine = MRG_MyISAM charset = utf8 union = (tableB, tableC)", output);
}
}
}
@@ -46,18 +46,61 @@ public class MySqlCreateTableTest58 extends MysqlTest {
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE `appservice_account` (" + "\n\t`id` integer NOT NULL PRIMARY KEY AUTO_INCREMENT, "
+ "\n\t`password` varchar(128) NOT NULL, " + "\n\t`last_login` datetime NOT NULL, "
+ "\n\t`username` varchar(40) NOT NULL UNIQUE, " + "\n\t`date_of_birth` date NOT NULL, "
+ "\n\t`head` varchar(100) NOT NULL, " + "\n\t`headThumb` varchar(100) NOT NULL, "
+ "\n\t`name` varchar(50) NOT NULL, " + "\n\t`gender` integer, " + "\n\t`uploadVideoCount` integer NOT NULL, "
+ "\n\t`fansCount` integer NOT NULL, " + "\n\t`balance` numeric(19, 2) NOT NULL, "
+ "\n\t`brick` integer NOT NULL, " + "\n\t`reward` integer NOT NULL, " + "\n\t`token` varchar(500) NOT NULL, "
+ "\n\t`weiboUserid` varchar(50) NOT NULL, " + "\n\t`weiboAccesstoken` varchar(500) NOT NULL, "
+ "\n\t`qqUserid` varchar(50) NOT NULL, " + "\n\t`qqAccesstoken` varchar(500) NOT NULL, "
+ "\n\t`wechatUserid` varchar(50) NOT NULL, " + "\n\t`wechatAccesstoken` varchar(500) NOT NULL, "
+ "\n\t`is_active` bool NOT NULL, " + "\n\t`is_admin` bool NOT NULL" + "\n)",output);
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE `appservice_account` (" + //
"\n\t`id` integer NOT NULL PRIMARY KEY AUTO_INCREMENT, " + //
"\n\t`password` varchar(128) NOT NULL, " + //
"\n\t`last_login` datetime NOT NULL, " + //
"\n\t`username` varchar(40) NOT NULL UNIQUE, " + //
"\n\t`date_of_birth` date NOT NULL, " + //
"\n\t`head` varchar(100) NOT NULL, " + //
"\n\t`headThumb` varchar(100) NOT NULL, " + //
"\n\t`name` varchar(50) NOT NULL, " + //
"\n\t`gender` integer, " + //
"\n\t`uploadVideoCount` integer NOT NULL, " + //
"\n\t`fansCount` integer NOT NULL, " + //
"\n\t`balance` numeric(19, 2) NOT NULL, " + //
"\n\t`brick` integer NOT NULL, " + //
"\n\t`reward` integer NOT NULL, " + //
"\n\t`token` varchar(500) NOT NULL, " + //
"\n\t`weiboUserid` varchar(50) NOT NULL, " + //
"\n\t`weiboAccesstoken` varchar(500) NOT NULL, " + //
"\n\t`qqUserid` varchar(50) NOT NULL, " + //
"\n\t`qqAccesstoken` varchar(500) NOT NULL, " + //
"\n\t`wechatUserid` varchar(50) NOT NULL, " + //
"\n\t`wechatAccesstoken` varchar(500) NOT NULL, " + //
"\n\t`is_active` bool NOT NULL, " + //
"\n\t`is_admin` bool NOT NULL" + //
"\n)", output);
}
{
String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table `appservice_account` (" + //
"\n\t`id` integer not null primary key auto_increment, " + //
"\n\t`password` varchar(128) not null, " + //
"\n\t`last_login` datetime not null, " + //
"\n\t`username` varchar(40) not null unique, " + //
"\n\t`date_of_birth` date not null, " + //
"\n\t`head` varchar(100) not null, " + //
"\n\t`headThumb` varchar(100) not null, " + //
"\n\t`name` varchar(50) not null, " + //
"\n\t`gender` integer, " + //
"\n\t`uploadVideoCount` integer not null, " + //
"\n\t`fansCount` integer not null, " + //
"\n\t`balance` numeric(19, 2) not null, " + //
"\n\t`brick` integer not null, " + //
"\n\t`reward` integer not null, " + //
"\n\t`token` varchar(500) not null, " + //
"\n\t`weiboUserid` varchar(50) not null, " + //
"\n\t`weiboAccesstoken` varchar(500) not null, " + //
"\n\t`qqUserid` varchar(50) not null, " + //
"\n\t`qqAccesstoken` varchar(500) not null, " + //
"\n\t`wechatUserid` varchar(50) not null, " + //
"\n\t`wechatAccesstoken` varchar(500) not null, " + //
"\n\t`is_active` bool not null, " + //
"\n\t`is_admin` bool not null" + //
"\n)", output);
}
}
}
@@ -36,11 +36,19 @@ public class MySqlCreateTableTest60 extends MysqlTest {
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t10 ("
+ "\n\tpk int PRIMARY KEY AUTO_INCREMENT, "
+ "\n\tf1 varchar(65500) CHARSET latin1 "
+ "\n)", output);
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t10 ("
+ "\n\tpk int PRIMARY KEY AUTO_INCREMENT, "
+ "\n\tf1 varchar(65500) CHARSET latin1 "
+ "\n)", output);
}
{
String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table t10 ("
+ "\n\tpk int primary key auto_increment, "
+ "\n\tf1 varchar(65500) charset latin1 "
+ "\n)", output);
}
}
}
@@ -36,12 +36,21 @@ public class MySqlCreateTableTest61 extends MysqlTest {
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t ("
+ "\n\tpk int PRIMARY KEY AUTO_INCREMENT, "
+ "\n\ta timestamp DEFAULT current_timestamp ON UPDATE current_timestamp, "
+ "\n\tb timestamp NULL"
+ "\n)", output);
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t ("
+ "\n\tpk int PRIMARY KEY AUTO_INCREMENT, "
+ "\n\ta timestamp DEFAULT current_timestamp ON UPDATE current_timestamp, "
+ "\n\tb timestamp NULL"
+ "\n)", output);
}
{
String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table t ("
+ "\n\tpk int primary key auto_increment, "
+ "\n\ta timestamp default current_timestamp on update current_timestamp, "
+ "\n\tb timestamp null"
+ "\n)", output);
}
}
}
@@ -36,10 +36,17 @@ public class MySqlCreateTableTest62 extends MysqlTest {
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE a ("
+ "\n\tb varchar(15) CHARACTER SET latin1 NULL"
+ "\n)", output);
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE a ("
+ "\n\tb varchar(15) CHARACTER SET latin1 NULL"
+ "\n)", output);
}
{
String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table a ("
+ "\n\tb varchar(15) character set latin1 null"
+ "\n)", output);
}
}
}
@@ -36,12 +36,21 @@ public class MySqlCreateTableTest63 extends MysqlTest {
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t ("
+ "\n\tpk int PRIMARY KEY AUTO_INCREMENT, "
+ "\n\ta TIMESTAMP, "
+ "\n\tKEY (a DESC)"
+ "\n)", output);
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t ("
+ "\n\tpk int PRIMARY KEY AUTO_INCREMENT, "
+ "\n\ta TIMESTAMP, "
+ "\n\tKEY (a DESC)"
+ "\n)", output);
}
{
String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table t ("
+ "\n\tpk int primary key auto_increment, "
+ "\n\ta TIMESTAMP, "
+ "\n\tkey (a desc)"
+ "\n)", output);
}
}
}
@@ -36,11 +36,19 @@ public class MySqlCreateTableTest64 extends MysqlTest {
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t ("
+ "\n\tc char(10), "
+ "\n\tUNIQUE a USING hash (c(1))"
+ "\n) CHARSET = utf8mb4 ENGINE = heap", output);
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t ("
+ "\n\tc char(10), "
+ "\n\tUNIQUE a USING hash (c(1))"
+ "\n) CHARSET = utf8mb4 ENGINE = heap", output);
}
{
String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table t ("
+ "\n\tc char(10), "
+ "\n\tunique a using hash (c(1))"
+ "\n) charset = utf8mb4 engine = heap", output);
}
}
}
@@ -36,11 +36,19 @@ public class MySqlCreateTableTest65 extends MysqlTest {
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t ("
+ "\n\tc char(10), "
+ "\n\tUNIQUE a USING btree (c(1))"
+ "\n) CHARSET = utf8mb4 ENGINE = heap", output);
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t ("
+ "\n\tc char(10), "
+ "\n\tUNIQUE a USING btree (c(1))"
+ "\n) CHARSET = utf8mb4 ENGINE = heap", output);
}
{
String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table t ("
+ "\n\tc char(10), "
+ "\n\tunique a using btree (c(1))"
+ "\n) charset = utf8mb4 engine = heap", output);
}
}
}
@@ -45,17 +45,31 @@ public class MySqlCreateTableTest66 extends MysqlTest {
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE hp_db.g20_relationship_communication_daily ("
+ "\n\ta_iden_string varchar, "
+ "\n\tb_iden_string varchar, "
+ "\n\tcounter bigint, "
+ "\n\tdurationtime bigint"
+ "\n)"
+ "\nPARTITION BY HASH KEY(a_iden_string) PARTITION NUM 100"
+ "\nSUBPARTITION BY LIST (bdt bigint)"
+ "\nSUBPARTITION OPTIONS (available_Partition_Num = 90)"
+ "\nTABLEGROUP g20_test_group", output);
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE hp_db.g20_relationship_communication_daily ("
+ "\n\ta_iden_string varchar, "
+ "\n\tb_iden_string varchar, "
+ "\n\tcounter bigint, "
+ "\n\tdurationtime bigint"
+ "\n)"
+ "\nPARTITION BY HASH KEY(a_iden_string) PARTITION NUM 100"
+ "\nSUBPARTITION BY LIST (bdt bigint)"
+ "\nSUBPARTITION OPTIONS (available_Partition_Num = 90)"
+ "\nTABLEGROUP g20_test_group", output);
}
{
String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table hp_db.g20_relationship_communication_daily ("
+ "\n\ta_iden_string varchar, "
+ "\n\tb_iden_string varchar, "
+ "\n\tcounter bigint, "
+ "\n\tdurationtime bigint"
+ "\n)"
+ "\npartition by hash key(a_iden_string) partition num 100"
+ "\nsubpartition by list (bdt bigint)"
+ "\nsubpartition options (available_Partition_Num = 90)"
+ "\ntablegroup g20_test_group", output);
}
}
}
@@ -41,17 +41,31 @@ public class MySqlCreateTableTest67 extends MysqlTest {
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t1 ("
+ "\n\ta INT NOT NULL, "
+ "\n\tPRIMARY KEY (a)"
+ "\n) ENGINE = InnoDB TABLESPACE ts1"
+ "\nPARTITION BY RANGE (a) PARTITIONS 3"
+ "\n("
+ "\n\tPARTITION P1 VALUES LESS THAN (2),"
+ "\n\tPARTITION P2 VALUES LESS THAN (4) TABLESPACE ts2,"
+ "\n\tPARTITION P3 VALUES LESS THAN (6) TABLESPACE ts3"
+ "\n)", output);
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t1 ("
+ "\n\ta INT NOT NULL, "
+ "\n\tPRIMARY KEY (a)"
+ "\n) ENGINE = InnoDB TABLESPACE ts1"
+ "\nPARTITION BY RANGE (a) PARTITIONS 3"
+ "\n("
+ "\n\tPARTITION P1 VALUES LESS THAN (2),"
+ "\n\tPARTITION P2 VALUES LESS THAN (4) TABLESPACE ts2,"
+ "\n\tPARTITION P3 VALUES LESS THAN (6) TABLESPACE ts3"
+ "\n)", output);
}
{
String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table t1 ("
+ "\n\ta INT not null, "
+ "\n\tprimary key (a)"
+ "\n) engine = InnoDB tablespace ts1"
+ "\npartition by range (a) partitions 3"
+ "\n("
+ "\n\tpartition P1 values less than (2),"
+ "\n\tpartition P2 values less than (4) tablespace ts2,"
+ "\n\tpartition P3 values less than (6) tablespace ts3"
+ "\n)", output);
}
}
}
@@ -47,20 +47,38 @@ public class MySqlCreateTableTest68 extends MysqlTest {
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t1 ("
+ "\n\tyear_col INT, "
+ "\n\tsome_data INT"
+ "\n)"
+ "\nPARTITION BY RANGE (year_col)"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (1991),"
+ "\n\tPARTITION p1 VALUES LESS THAN (1995),"
+ "\n\tPARTITION p2 VALUES LESS THAN (1999),"
+ "\n\tPARTITION p3 VALUES LESS THAN (2002),"
+ "\n\tPARTITION p4 VALUES LESS THAN (2006),"
+ "\n\tPARTITION p5 VALUES LESS THAN MAXVALUE"
+ "\n)", output);
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE t1 ("
+ "\n\tyear_col INT, "
+ "\n\tsome_data INT"
+ "\n)"
+ "\nPARTITION BY RANGE (year_col)"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (1991),"
+ "\n\tPARTITION p1 VALUES LESS THAN (1995),"
+ "\n\tPARTITION p2 VALUES LESS THAN (1999),"
+ "\n\tPARTITION p3 VALUES LESS THAN (2002),"
+ "\n\tPARTITION p4 VALUES LESS THAN (2006),"
+ "\n\tPARTITION p5 VALUES LESS THAN MAXVALUE"
+ "\n)", output);
}
{
String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table t1 ("
+ "\n\tyear_col INT, "
+ "\n\tsome_data INT"
+ "\n)"
+ "\npartition by range (year_col)"
+ "\n("
+ "\n\tpartition p0 values less than (1991),"
+ "\n\tpartition p1 values less than (1995),"
+ "\n\tpartition p2 values less than (1999),"
+ "\n\tpartition p3 values less than (2002),"
+ "\n\tpartition p4 values less than (2006),"
+ "\n\tpartition p5 values less than maxvalue"
+ "\n)", output);
}
}
}
@@ -34,10 +34,18 @@ public class OceanbaseAlterTableAddPartitionTest extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE members"
+ "\n\tADD PARTITION (PARTITION p3 VALUES LESS THAN (2000))",
result);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE members"
+ "\n\tADD PARTITION (PARTITION p3 VALUES LESS THAN (2000))",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table members"
+ "\n\tadd partition (partition p3 values less than (2000))",
result);
}
print(stmtList);
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableAddPartitionTest2 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE clients"
+ "\n\tADD PARTITION PARTITIONS 18",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE clients"
+ "\n\tADD PARTITION PARTITIONS 18",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table clients"
+ "\n\tadd partition partitions 18",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -33,12 +33,18 @@ public class OceanbaseAlterTableAnalyzePartitionTest extends MysqlTest {
MySqlStatementParser parser = new MySqlStatementParser(sql);
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tANALYZE PARTITION p1",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tANALYZE PARTITION p1",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\tanalyze partition p1",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableAnalyzePartitionTest2 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tANALYZE PARTITION ALL",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tANALYZE PARTITION ALL",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\tanalyze partition all",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -0,0 +1,66 @@
/*
* Copyright 1999-2101 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.oceanbase;
import java.util.List;
import org.junit.Assert;
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;
public class OceanbaseAlterTableAnalyzePartitionTest3 extends MysqlTest {
public void test_0() throws Exception {
String sql = "ALTER TABLE tnrange ANALYZE PARTITION p1, p2;"; //
MySqlStatementParser parser = new MySqlStatementParser(sql);
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tANALYZE PARTITION p1, p2",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\tanalyze partition p1, p2",
result);
}
Assert.assertEquals(1, stmtList.size());
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
System.out.println("Tables : " + visitor.getTables());
System.out.println("fields : " + visitor.getColumns());
System.out.println("coditions : " + visitor.getConditions());
System.out.println("orderBy : " + visitor.getOrderByColumns());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getColumns().size());
Assert.assertEquals(0, visitor.getConditions().size());
// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store")));
}
}
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableCheckPartitionTest extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tCHECK PARTITION p1",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tCHECK PARTITION p1",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\tcheck partition p1",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -33,12 +33,18 @@ public class OceanbaseAlterTableCheckPartitionTest2 extends MysqlTest {
MySqlStatementParser parser = new MySqlStatementParser(sql);
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tCHECK PARTITION ALL",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tCHECK PARTITION ALL",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\tcheck partition all",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableCoalescePartitionTest extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE clients"
+ "\n\tCOALESCE PARTITION 6",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE clients"
+ "\n\tCOALESCE PARTITION 6",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table clients"
+ "\n\tcoalesce partition 6",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableDiscardPartitionTest extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tDISCARD PARTITION p1",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tDISCARD PARTITION p1",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\tdiscard partition p1",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableDiscardPartitionTest2 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tDISCARD PARTITION ALL",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tDISCARD PARTITION ALL",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\tdiscard partition all",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableImportPartitionTest extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tIMPORT PARTITION p1",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tIMPORT PARTITION p1",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\timport partition p1",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableImportPartitionTest2 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tIMPORT PARTITION ALL",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tIMPORT PARTITION ALL",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\timport partition all",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableOptimizePartitionTest extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tOPTIMIZE PARTITION p1",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tOPTIMIZE PARTITION p1",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\toptimize partition p1",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableOptimizePartitionTest2 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tOPTIMIZE PARTITION ALL",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tOPTIMIZE PARTITION ALL",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\toptimize partition all",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,12 +34,18 @@ public class OceanbaseAlterTableReOrganizePartitionTest extends MysqlTest {
MySqlStatementParser parser = new MySqlStatementParser(sql);
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE members"
+ "\n\tREORGANIZE p0 INTO (PARTITION s0 VALUES LESS THAN (1960), PARTITION s1 VALUES LESS THAN (1970))",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE members" //
+ "\n\tREORGANIZE p0 INTO (PARTITION s0 VALUES LESS THAN (1960), PARTITION s1 VALUES LESS THAN (1970))",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table members" //
+ "\n\treorganize p0 into (partition s0 values less than (1960), partition s1 values less than (1970))",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -38,11 +38,18 @@ public class OceanbaseAlterTableReOrganizePartitionTest2 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE members"
+ "\n\tREORGANIZE s0, s1, p1, p2, p3 INTO (PARTITION m0 VALUES LESS THAN (1980), PARTITION m1 VALUES LESS THAN (2000))",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE members"
+ "\n\tREORGANIZE s0, s1, p1, p2, p3 INTO (PARTITION m0 VALUES LESS THAN (1980), PARTITION m1 VALUES LESS THAN (2000))",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table members"
+ "\n\treorganize s0, s1, p1, p2, p3 into (partition m0 values less than (1980), partition m1 values less than (2000))",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableRebuildPartitionTest extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tREBUILD PARTITION p1",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tREBUILD PARTITION p1",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\trebuild partition p1",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,12 +34,19 @@ public class OceanbaseAlterTableRebuildPartitionTest2 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tREBUILD PARTITION ALL",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tREBUILD PARTITION ALL",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\trebuild partition all",
result);
}
Assert.assertEquals(1, stmtList.size());
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableRemovePartitioningTest extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tREMOVE PARTITIONING",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tREMOVE PARTITIONING",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\tremove partitioning",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableRepairPartitionTest extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tREPAIR PARTITION p1",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tREPAIR PARTITION p1",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\trepair partition p1",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableRepairPartitionTest2 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tREPAIR PARTITION ALL",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tREPAIR PARTITION ALL",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\trepair partition all",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableTruncatePartitionTest extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tTRUNCATE PARTITION p1",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tTRUNCATE PARTITION p1",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\ttruncate partition p1",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableTruncatePartitionTest2 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tTRUNCATE PARTITION ALL",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tTRUNCATE PARTITION ALL",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\ttruncate partition all",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseAlterTableUpgradePartitioningTest extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tUPGRADE PARTITIONING",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("ALTER TABLE tnrange"
+ "\n\tUPGRADE PARTITIONING",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("alter table tnrange"
+ "\n\tupgrade partitioning",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,15 +34,25 @@ public class OceanbaseCreateTableTest_partitionByHash extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE tnhash ("
+ "\n\tid INT, "
+ "\n\tname VARCHAR(5)"
+ "\n)"
+ "\nPARTITION BY HASH (id) PARTITIONS 2",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE tnhash ("
+ "\n\tid INT, "
+ "\n\tname VARCHAR(5)"
+ "\n)"
+ "\nPARTITION BY HASH (id) PARTITIONS 2",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table tnhash ("
+ "\n\tid INT, "
+ "\n\tname VARCHAR(5)"
+ "\n)"
+ "\npartition by hash (id) partitions 2",
result);
}
Assert.assertEquals(1, stmtList.size());
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
@@ -41,19 +41,34 @@ public class OceanbaseCreateTableTest_partitionByHash2 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE employees ("
+ "\n\tid INT NOT NULL, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE NOT NULL DEFAULT '1970-01-01', "
+ "\n\tseparated DATE NOT NULL DEFAULT '9999-12-31', "
+ "\n\tjob_code INT, "
+ "\n\tstore_id INT"
+ "\n)"
+ "\nPARTITION BY HASH (YEAR(hired)) PARTITIONS 4",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE employees ("
+ "\n\tid INT NOT NULL, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE NOT NULL DEFAULT '1970-01-01', "
+ "\n\tseparated DATE NOT NULL DEFAULT '9999-12-31', "
+ "\n\tjob_code INT, "
+ "\n\tstore_id INT"
+ "\n)"
+ "\nPARTITION BY HASH (YEAR(hired)) PARTITIONS 4",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table employees ("
+ "\n\tid INT not null, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE not null default '1970-01-01', "
+ "\n\tseparated DATE not null default '9999-12-31', "
+ "\n\tjob_code INT, "
+ "\n\tstore_id INT"
+ "\n)"
+ "\npartition by hash (YEAR(hired)) partitions 4",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,14 +34,24 @@ public class OceanbaseCreateTableTest_partitionByKey extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE k2 ("
+ "\n\tid int PRIMARY KEY, "
+ "\n\tname varchar(20)"
+ "\n)"
+ "\nPARTITION BY KEY () PARTITIONS 2",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE k2 ("
+ "\n\tid int PRIMARY KEY, "
+ "\n\tname varchar(20)"
+ "\n)"
+ "\nPARTITION BY KEY () PARTITIONS 2",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table k2 ("
+ "\n\tid int primary key, "
+ "\n\tname varchar(20)"
+ "\n)"
+ "\npartition by key () partitions 2",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -43,25 +43,46 @@ public class OceanbaseCreateTableTest_rangePartition extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE employees ("
+ "\n\tid INT NOT NULL, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE NOT NULL DEFAULT '1970-01-01', "
+ "\n\tseparated DATE NOT NULL DEFAULT '9999-12-31', "
+ "\n\tjob_code INT NOT NULL, "
+ "\n\tstore_id INT NOT NULL"
+ "\n)"
+ "\nPARTITION BY RANGE (store_id)"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (6),"
+ "\n\tPARTITION p1 VALUES LESS THAN (11),"
+ "\n\tPARTITION p2 VALUES LESS THAN (16),"
+ "\n\tPARTITION p3 VALUES LESS THAN (21)"
+ "\n)",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE employees ("
+ "\n\tid INT NOT NULL, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE NOT NULL DEFAULT '1970-01-01', "
+ "\n\tseparated DATE NOT NULL DEFAULT '9999-12-31', "
+ "\n\tjob_code INT NOT NULL, "
+ "\n\tstore_id INT NOT NULL"
+ "\n)"
+ "\nPARTITION BY RANGE (store_id)"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (6),"
+ "\n\tPARTITION p1 VALUES LESS THAN (11),"
+ "\n\tPARTITION p2 VALUES LESS THAN (16),"
+ "\n\tPARTITION p3 VALUES LESS THAN (21)"
+ "\n)",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table employees ("
+ "\n\tid INT not null, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE not null default '1970-01-01', "
+ "\n\tseparated DATE not null default '9999-12-31', "
+ "\n\tjob_code INT not null, "
+ "\n\tstore_id INT not null"
+ "\n)"
+ "\npartition by range (store_id)"
+ "\n("
+ "\n\tpartition p0 values less than (6),"
+ "\n\tpartition p1 values less than (11),"
+ "\n\tpartition p2 values less than (16),"
+ "\n\tpartition p3 values less than (21)"
+ "\n)",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -46,25 +46,46 @@ public class OceanbaseCreateTableTest_rangePartition2 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE employees ("
+ "\n\tid INT NOT NULL, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE NOT NULL DEFAULT '1970-01-01', "
+ "\n\tseparated DATE NOT NULL DEFAULT '9999-12-31', "
+ "\n\tjob_code INT NOT NULL, "
+ "\n\tstore_id INT NOT NULL"
+ "\n)"
+ "\nPARTITION BY RANGE (store_id)"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (6),"
+ "\n\tPARTITION p1 VALUES LESS THAN (11),"
+ "\n\tPARTITION p2 VALUES LESS THAN (16),"
+ "\n\tPARTITION p3 VALUES LESS THAN MAXVALUE"
+ "\n)",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE employees ("
+ "\n\tid INT NOT NULL, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE NOT NULL DEFAULT '1970-01-01', "
+ "\n\tseparated DATE NOT NULL DEFAULT '9999-12-31', "
+ "\n\tjob_code INT NOT NULL, "
+ "\n\tstore_id INT NOT NULL"
+ "\n)"
+ "\nPARTITION BY RANGE (store_id)"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (6),"
+ "\n\tPARTITION p1 VALUES LESS THAN (11),"
+ "\n\tPARTITION p2 VALUES LESS THAN (16),"
+ "\n\tPARTITION p3 VALUES LESS THAN MAXVALUE"
+ "\n)",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table employees ("
+ "\n\tid INT not null, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE not null default '1970-01-01', "
+ "\n\tseparated DATE not null default '9999-12-31', "
+ "\n\tjob_code INT not null, "
+ "\n\tstore_id INT not null"
+ "\n)"
+ "\npartition by range (store_id)"
+ "\n("
+ "\n\tpartition p0 values less than (6),"
+ "\n\tpartition p1 values less than (11),"
+ "\n\tpartition p2 values less than (16),"
+ "\n\tpartition p3 values less than maxvalue"
+ "\n)",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -45,24 +45,44 @@ public class OceanbaseCreateTableTest_rangePartition3 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE employees ("
+ "\n\tid INT NOT NULL, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE NOT NULL DEFAULT '1970-01-01', "
+ "\n\tseparated DATE NOT NULL DEFAULT '9999-12-31', "
+ "\n\tjob_code INT NOT NULL, "
+ "\n\tstore_id INT NOT NULL"
+ "\n)"
+ "\nPARTITION BY RANGE (job_code)"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (100),"
+ "\n\tPARTITION p1 VALUES LESS THAN (1000),"
+ "\n\tPARTITION p2 VALUES LESS THAN (10000)"
+ "\n)",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE employees ("
+ "\n\tid INT NOT NULL, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE NOT NULL DEFAULT '1970-01-01', "
+ "\n\tseparated DATE NOT NULL DEFAULT '9999-12-31', "
+ "\n\tjob_code INT NOT NULL, "
+ "\n\tstore_id INT NOT NULL"
+ "\n)"
+ "\nPARTITION BY RANGE (job_code)"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (100),"
+ "\n\tPARTITION p1 VALUES LESS THAN (1000),"
+ "\n\tPARTITION p2 VALUES LESS THAN (10000)"
+ "\n)",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table employees ("
+ "\n\tid INT not null, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE not null default '1970-01-01', "
+ "\n\tseparated DATE not null default '9999-12-31', "
+ "\n\tjob_code INT not null, "
+ "\n\tstore_id INT not null"
+ "\n)"
+ "\npartition by range (job_code)"
+ "\n("
+ "\n\tpartition p0 values less than (100),"
+ "\n\tpartition p1 values less than (1000),"
+ "\n\tpartition p2 values less than (10000)"
+ "\n)",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -45,25 +45,46 @@ public class OceanbaseCreateTableTest_rangePartition4 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE employees ("
+ "\n\tid INT NOT NULL, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE NOT NULL DEFAULT '1970-01-01', "
+ "\n\tseparated DATE NOT NULL DEFAULT '9999-12-31', "
+ "\n\tjob_code INT, "
+ "\n\tstore_id INT"
+ "\n)"
+ "\nPARTITION BY RANGE (YEAR(separated))"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (1991),"
+ "\n\tPARTITION p1 VALUES LESS THAN (1996),"
+ "\n\tPARTITION p2 VALUES LESS THAN (2001),"
+ "\n\tPARTITION p3 VALUES LESS THAN MAXVALUE"
+ "\n)",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE employees ("
+ "\n\tid INT NOT NULL, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE NOT NULL DEFAULT '1970-01-01', "
+ "\n\tseparated DATE NOT NULL DEFAULT '9999-12-31', "
+ "\n\tjob_code INT, "
+ "\n\tstore_id INT"
+ "\n)"
+ "\nPARTITION BY RANGE (YEAR(separated))"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (1991),"
+ "\n\tPARTITION p1 VALUES LESS THAN (1996),"
+ "\n\tPARTITION p2 VALUES LESS THAN (2001),"
+ "\n\tPARTITION p3 VALUES LESS THAN MAXVALUE"
+ "\n)",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table employees ("
+ "\n\tid INT not null, "
+ "\n\tfname VARCHAR(30), "
+ "\n\tlname VARCHAR(30), "
+ "\n\thired DATE not null default '1970-01-01', "
+ "\n\tseparated DATE not null default '9999-12-31', "
+ "\n\tjob_code INT, "
+ "\n\tstore_id INT"
+ "\n)"
+ "\npartition by range (YEAR(separated))"
+ "\n("
+ "\n\tpartition p0 values less than (1991),"
+ "\n\tpartition p1 values less than (1996),"
+ "\n\tpartition p2 values less than (2001),"
+ "\n\tpartition p3 values less than maxvalue"
+ "\n)",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -38,18 +38,32 @@ public class OceanbaseCreateTableTest_rangePartition5 extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE tnrange ("
+ "\n\tid INT, "
+ "\n\tname VARCHAR(5)"
+ "\n)"
+ "\nPARTITION BY RANGE (id)"
+ "\n("
+ "\n\tPARTITION p1 VALUES LESS THAN (1),"
+ "\n\tPARTITION p2 VALUES LESS THAN MAXVALUE"
+ "\n)",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE tnrange ("
+ "\n\tid INT, "
+ "\n\tname VARCHAR(5)"
+ "\n)"
+ "\nPARTITION BY RANGE (id)"
+ "\n("
+ "\n\tPARTITION p1 VALUES LESS THAN (1),"
+ "\n\tPARTITION p2 VALUES LESS THAN MAXVALUE"
+ "\n)",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table tnrange ("
+ "\n\tid INT, "
+ "\n\tname VARCHAR(5)"
+ "\n)"
+ "\npartition by range (id)"
+ "\n("
+ "\n\tpartition p1 values less than (1),"
+ "\n\tpartition p2 values less than maxvalue"
+ "\n)",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -40,20 +40,36 @@ public class OceanbaseCreateTableTest_subPartition extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE ts ("
+ "\n\tid INT, "
+ "\n\tpurchased DATE"
+ "\n)"
+ "\nPARTITION BY RANGE (YEAR(purchased))"
+ "\nSUBPARTITION BY HASH (TO_DAYS(purchased)) SUBPARTITIONS 2"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (1990),"
+ "\n\tPARTITION p1 VALUES LESS THAN (2000),"
+ "\n\tPARTITION p2 VALUES LESS THAN MAXVALUE"
+ "\n)",
result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("CREATE TABLE ts ("
+ "\n\tid INT, "
+ "\n\tpurchased DATE"
+ "\n)"
+ "\nPARTITION BY RANGE (YEAR(purchased))"
+ "\nSUBPARTITION BY HASH (TO_DAYS(purchased)) SUBPARTITIONS 2"
+ "\n("
+ "\n\tPARTITION p0 VALUES LESS THAN (1990),"
+ "\n\tPARTITION p1 VALUES LESS THAN (2000),"
+ "\n\tPARTITION p2 VALUES LESS THAN MAXVALUE"
+ "\n)",
result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("create table ts ("
+ "\n\tid INT, "
+ "\n\tpurchased DATE"
+ "\n)"
+ "\npartition by range (YEAR(purchased))"
+ "\nsubpartition by hash (TO_DAYS(purchased)) subpartitions 2"
+ "\n("
+ "\n\tpartition p0 values less than (1990),"
+ "\n\tpartition p1 values less than (2000),"
+ "\n\tpartition p2 values less than maxvalue"
+ "\n)",
result);
}
Assert.assertEquals(1, stmtList.size());
@@ -34,11 +34,18 @@ public class OceanbaseHintTest_Index extends MysqlTest {
List<SQLStatement> stmtList = parser.parseStatementList();
SQLStatement stmt = stmtList.get(0);
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("SELECT /*+ INDEX(t1 i1) , INDEX(t2 i2)*/ *"
+ "\nFROM t1, t2"
+ "\nWHERE t1.c1 = t2.c1", result);
print(stmtList);
{
String result = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("SELECT /*+ INDEX(t1 i1) , INDEX(t2 i2)*/ *"
+ "\nFROM t1, t2"
+ "\nWHERE t1.c1 = t2.c1", result);
}
{
String result = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
Assert.assertEquals("select /*+ INDEX(t1 i1) , INDEX(t2 i2)*/ *"
+ "\nfrom t1, t2"
+ "\nwhere t1.c1 = t2.c1", result);
}
Assert.assertEquals(1, stmtList.size());