mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improved sql parser support CreateView
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
package com.alibaba.druid.bvt.sql.odps;
|
||||
|
||||
import org.junit.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.SQLUtils;
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.dialect.odps.parser.OdpsStatementParser;
|
||||
import com.alibaba.druid.sql.parser.Token;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class OdpsCreateViewTest extends TestCase {
|
||||
|
||||
public void test_create() throws Exception {
|
||||
String sql = "CREATE view sale_detail as select * from dual;";
|
||||
OdpsStatementParser parser = new OdpsStatementParser(sql);
|
||||
SQLStatement stmt = parser.parseStatementList().get(0);
|
||||
parser.match(Token.EOF);
|
||||
String output = SQLUtils.toOdpsString(stmt);
|
||||
Assert.assertEquals("CREATE VIEW sale_detail" //
|
||||
+ "\nAS" //
|
||||
+ "\nSELECT *" //
|
||||
+ "\nFROM dual", output);
|
||||
}
|
||||
|
||||
public void test_create_or_replace() throws Exception {
|
||||
String sql = "CREATE or replace view sale_detail as select * from dual;";
|
||||
OdpsStatementParser parser = new OdpsStatementParser(sql);
|
||||
SQLStatement stmt = parser.parseStatementList().get(0);
|
||||
parser.match(Token.EOF);
|
||||
String output = SQLUtils.toOdpsString(stmt);
|
||||
Assert.assertEquals("CREATE OR REPLACE VIEW sale_detail" //
|
||||
+ "\nAS" //
|
||||
+ "\nSELECT *" //
|
||||
+ "\nFROM dual", output);
|
||||
}
|
||||
|
||||
|
||||
public void test_create_if_not_exists() throws Exception {
|
||||
String sql = "CREATE view if not exists sale_detail as select * from dual;";
|
||||
OdpsStatementParser parser = new OdpsStatementParser(sql);
|
||||
SQLStatement stmt = parser.parseStatementList().get(0);
|
||||
parser.match(Token.EOF);
|
||||
String output = SQLUtils.toOdpsString(stmt);
|
||||
Assert.assertEquals("CREATE VIEW IF NOT EXISTS sale_detail" //
|
||||
+ "\nAS" //
|
||||
+ "\nSELECT *" //
|
||||
+ "\nFROM dual", output);
|
||||
}
|
||||
|
||||
public void test_create_comments() throws Exception {
|
||||
String sql = "CREATE view if not exists sale_detail comment 'aaaa' as select * from dual;";
|
||||
OdpsStatementParser parser = new OdpsStatementParser(sql);
|
||||
SQLStatement stmt = parser.parseStatementList().get(0);
|
||||
parser.match(Token.EOF);
|
||||
String output = SQLUtils.toOdpsString(stmt);
|
||||
Assert.assertEquals("CREATE VIEW IF NOT EXISTS sale_detail" //
|
||||
+ "\nCOMMENT 'aaaa'" //
|
||||
+ "\nAS" //
|
||||
+ "\nSELECT *" //
|
||||
+ "\nFROM dual", output);
|
||||
}
|
||||
|
||||
public void test_create_column_comments() throws Exception {
|
||||
String sql = "CREATE view if not exists sale_detail (f1 comment 'aaaa', f2 comment 'bbb') as select * from dual;";
|
||||
OdpsStatementParser parser = new OdpsStatementParser(sql);
|
||||
SQLStatement stmt = parser.parseStatementList().get(0);
|
||||
parser.match(Token.EOF);
|
||||
String output = SQLUtils.toOdpsString(stmt);
|
||||
Assert.assertEquals("CREATE VIEW IF NOT EXISTS sale_detail" //
|
||||
+ "\n(" //
|
||||
+ "\n\tf1 COMMENT 'aaaa', " //
|
||||
+ "\n\tf2 COMMENT 'bbb'" //
|
||||
+ "\n)" //
|
||||
+ "\nAS" //
|
||||
+ "\nSELECT *" //
|
||||
+ "\nFROM dual", output);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user