analytic clause

git-svn-id: http://code.alibabatech.com/svn/druid/trunk@974 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-10-15 08:42:58 +00:00
parent 4e2e63d397
commit f0c29c44a8
2 changed files with 40 additions and 2 deletions
@@ -133,19 +133,27 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
}
public boolean visit(OracleAnalytic x) {
boolean space = false;
if (x.getPartitionBy().size() > 0) {
print("PARTITION BY (");
printAndAccept(x.getPartitionBy(), ", ");
print(")");
space = true;
}
if (x.getOrderBy() != null) {
print(" ");
if (space) {
print(" ");
}
x.getOrderBy().accept(this);
space = true;
}
if (x.getWindowing() != null) {
print(" ");
if (space) {
print(" ");
}
x.getWindowing().accept(this);
}
@@ -0,0 +1,30 @@
package com.alibaba.druid.bvt.sql.oracle;
import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser;
import com.alibaba.druid.sql.test.TestUtils;
import junit.framework.Assert;
import junit.framework.TestCase;
public class OracleAnalyticTest extends TestCase {
public void test_isEmpty() throws Exception {
String sql = "SELECT last_name, salary, STDDEV(salary) OVER (ORDER BY hire_date) \"StdDev\" " +
"FROM employees " +
"WHERE department_id = 30;";
String expect = "SELECT last_name, salary, STDDEV(salary) OVER (ORDER BY hire_date) AS \"StdDev\"\n" +
"FROM employees\n" +
"WHERE department_id = 30;\n";
OracleStatementParser parser = new OracleStatementParser(sql);
SQLSelectStatement stmt = (SQLSelectStatement) parser
.parseStatementList().get(0);
String text = TestUtils.outputOracle(stmt);
Assert.assertEquals(expect, text);
System.out.println(text);
}
}