mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug fixed for odps sql formatter
This commit is contained in:
@@ -108,10 +108,17 @@ public class OdpsCreateTableParser extends SQLCreateTableParser {
|
||||
SQLColumnDefinition column = this.exprParser.parseColumn();
|
||||
stmt.getPartitionColumns().add(column);
|
||||
|
||||
if (lexer.isKeepComments() && lexer.hasComment()) {
|
||||
column.addAfterComment(lexer.readAndResetComments());
|
||||
}
|
||||
|
||||
if (!(lexer.token() == (Token.COMMA))) {
|
||||
break;
|
||||
} else {
|
||||
lexer.nextToken();
|
||||
if (lexer.isKeepComments() && lexer.hasComment()) {
|
||||
column.addAfterComment(lexer.readAndResetComments());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLCaseExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAssignItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource.JoinType;
|
||||
@@ -93,13 +94,27 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis
|
||||
int partitionSize = x.getPartitionColumns().size();
|
||||
if (partitionSize > 0) {
|
||||
println();
|
||||
print("PARTITIONED (");
|
||||
print("PARTITIONED BY (");
|
||||
incrementIndent();
|
||||
println();
|
||||
for (int i = 0; i < partitionSize; ++i) {
|
||||
if (i != 0) {
|
||||
print(", ");
|
||||
SQLColumnDefinition column = x.getPartitionColumns().get(i);
|
||||
column.accept(this);
|
||||
|
||||
if (i != partitionSize - 1) {
|
||||
print(',');
|
||||
}
|
||||
if (this.isPrettyFormat() && column.hasAfterComment()) {
|
||||
print(' ');
|
||||
printComment(column.getAfterCommentsDirect(), "\n");
|
||||
}
|
||||
|
||||
if (i != partitionSize - 1) {
|
||||
println();
|
||||
}
|
||||
x.getPartitionColumns().get(i).accept(this);
|
||||
}
|
||||
decrementIndent();
|
||||
println();
|
||||
print(")");
|
||||
}
|
||||
|
||||
|
||||
@@ -989,7 +989,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
print(" COMMENT ");
|
||||
x.getComment().accept(this);
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,10 @@ public class OdpsCreateTableTest extends TestCase {
|
||||
+ "\n\ttotal_price DOUBLE"//
|
||||
+ "\n)"//
|
||||
+ "\nCOMMENT 'xxxx'"//
|
||||
+ "\nPARTITIONED (sale_date STRING, region STRING)"//
|
||||
+ "\nPARTITIONED BY ("
|
||||
+ "\n\tsale_date STRING,"
|
||||
+ "\n\tregion STRING"
|
||||
+ "\n)"//
|
||||
+ "\nLIFECYCLE 5", output);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.alibaba.druid.bvt.sql.odps;
|
||||
|
||||
import org.junit.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.SQLUtils;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class OdpsFormatCommentTest15 extends TestCase {
|
||||
public void test_column_comment() throws Exception {
|
||||
String sql = "create table t1 (f0 bigint) partitioned by (ds string, hh string);";
|
||||
Assert.assertEquals("CREATE TABLE t1t1 ("
|
||||
+ "\n\tf0 bigint"
|
||||
+ "\n)"
|
||||
+ "\nPARTITIONED BY ("
|
||||
+ "\n\tds string,"
|
||||
+ "\n\thh string"
|
||||
+ "\n)"
|
||||
+ "\n;", SQLUtils.formatOdps(sql));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.alibaba.druid.bvt.sql.odps;
|
||||
|
||||
import org.junit.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.SQLUtils;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class OdpsFormatCommentTest16 extends TestCase {
|
||||
public void test_column_comment() throws Exception {
|
||||
String sql = "create table t1 (f0 bigint) partitioned by ("
|
||||
+ "ds string, -- c_1"
|
||||
+ "\nhh string -- c_2"
|
||||
+ "\n);";
|
||||
Assert.assertEquals("CREATE TABLE t1t1 ("
|
||||
+ "\n\tf0 bigint"
|
||||
+ "\n)"
|
||||
+ "\nPARTITIONED BY ("
|
||||
+ "\n\tds string, -- c_1"
|
||||
+ "\n\thh string -- c_2"
|
||||
+ "\n)"
|
||||
+ "\n;", SQLUtils.formatOdps(sql));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user