mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
refactor sql parser group by
This commit is contained in:
@@ -4,13 +4,13 @@ import junit.framework.TestCase;
|
||||
|
||||
import org.junit.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.clause.GroupingSetExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLGroupingSetExpr;
|
||||
|
||||
public class EqualTest_groupSet extends TestCase {
|
||||
|
||||
public void test_eq() throws Exception {
|
||||
GroupingSetExpr exprA = new GroupingSetExpr();
|
||||
GroupingSetExpr exprB = new GroupingSetExpr();
|
||||
SQLGroupingSetExpr exprA = new SQLGroupingSetExpr();
|
||||
SQLGroupingSetExpr exprB = new SQLGroupingSetExpr();
|
||||
Assert.assertEquals(exprA.hashCode(), exprB.hashCode());
|
||||
Assert.assertEquals(exprA, exprB);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package com.alibaba.druid.bvt.sql.mysql;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBooleanExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlForceIndexHint;
|
||||
@@ -44,7 +42,6 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRenameTableStateme
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlReplaceStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlResetStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRollbackStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectGroupBy;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock.Limit;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSetCharSetStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSetNamesStatement;
|
||||
@@ -97,6 +94,8 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUnlockTablesStatem
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUpdateStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitorAdapter;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class MySqlASTVisitorAdapterTest extends TestCase {
|
||||
|
||||
public void test_adapter() throws Exception {
|
||||
@@ -114,7 +113,6 @@ public class MySqlASTVisitorAdapterTest extends TestCase {
|
||||
new MySqlInsertStatement().accept(adapter);
|
||||
new MySqlLoadXmlStatement().accept(adapter);
|
||||
new MySqlReplaceStatement().accept(adapter);
|
||||
new MySqlSelectGroupBy().accept(adapter);
|
||||
new MySqlStartTransactionStatement().accept(adapter);
|
||||
new MySqlRollbackStatement().accept(adapter);
|
||||
new MySqlShowColumnsStatement().accept(adapter);
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
import com.alibaba.druid.sql.SQLUtils;
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser;
|
||||
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor;
|
||||
import com.alibaba.druid.util.JdbcConstants;
|
||||
|
||||
public class OracleGroupingSetsTest extends OracleTest {
|
||||
|
||||
public void test_grouping_sets() throws Exception {
|
||||
String sql = //
|
||||
"select department_id,job_id,avg(salary) from hr.employees group by grouping sets ((department_id,job_id));";
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement stmt = statementList.get(0);
|
||||
print(statementList);
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
Assert.assertEquals("SELECT department_id, job_id, AVG(salary)"
|
||||
+ "\nFROM hr.employees"
|
||||
+ "\nGROUP BY GROUPING SETS ((department_id, job_id))", SQLUtils.toSQLString(stmt, JdbcConstants.ORACLE));
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
stmt.accept(visitor);
|
||||
|
||||
Assert.assertEquals(1, visitor.getTables().size());
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -2,6 +2,7 @@ package com.alibaba.druid.bvt.sql.oracle.visitor;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import com.alibaba.druid.sql.ast.expr.SQLGroupingSetExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLTimestampExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLFetchStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename;
|
||||
@@ -13,7 +14,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.clause.CycleClause;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.clause.FlashbackQueryClause.AsOfFlashbackQueryClause;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.clause.FlashbackQueryClause.AsOfSnapshotClause;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.clause.FlashbackQueryClause.VersionsFlashbackQueryClause;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.clause.GroupingSetExpr;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.CellAssignment;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.CellAssignmentItem;
|
||||
@@ -130,7 +130,7 @@ public class OracleASTVisitorAdapterTest extends TestCase {
|
||||
new VersionsFlashbackQueryClause().accept(adapter);
|
||||
new VersionsFlashbackQueryClause().accept(adapter);
|
||||
new AsOfFlashbackQueryClause().accept(adapter);
|
||||
new GroupingSetExpr().accept(adapter);
|
||||
new SQLGroupingSetExpr().accept(adapter);
|
||||
new OracleWithSubqueryEntry().accept(adapter);
|
||||
new OracleFileSpecification().accept(adapter);
|
||||
new OracleAlterTablespaceAddDataFile().accept(adapter);
|
||||
|
||||
Reference in New Issue
Block a user