improved sql parser, support translate oracle to mysql

This commit is contained in:
wenshao
2014-11-19 10:23:43 +08:00
parent 0aa403bb4e
commit baad7dc724
10 changed files with 272 additions and 8 deletions
@@ -0,0 +1,26 @@
package com.alibaba.druid.bvt.sql.oracle.tomysql;
import org.junit.Assert;
import junit.framework.TestCase;
import com.alibaba.druid.sql.SQLUtils;
public class OracleToMySql_PageTest extends TestCase {
public void test_page() throws Exception {
String sql = "SELECT XX.*, ROWNUM AS RN" + //
"\nFROM (SELECT *" + //
"\n\tFROM t" + //
"\n\tORDER BY id" + //
"\n\t) XX" + //
"\nWHERE ROWNUM <= 10";
String mysqlSql = SQLUtils.translateOracleToMySql(sql);
Assert.assertEquals("SELECT *"//
+ "\nFROM t"//
+ "\nORDER BY id"//
+ "\nLIMIT 10", mysqlSql);
System.out.println(mysqlSql);
}
}
@@ -0,0 +1,29 @@
package com.alibaba.druid.bvt.sql.oracle.tomysql;
import org.junit.Assert;
import junit.framework.TestCase;
import com.alibaba.druid.sql.SQLUtils;
public class OracleToMySql_PageTest1 extends TestCase {
public void test_page() throws Exception {
String sql = "SELECT *" + //
"\nFROM (SELECT XX.*, ROWNUM AS RN" + //
"\n\tFROM (SELECT *" + //
"\n\t\tFROM t" + //
"\n\t\tORDER BY id" + //
"\n\t\t) XX" + //
"\n\tWHERE ROWNUM <= 20" + //
"\n\t) XXX" + //
"\nWHERE RN > 10";
String mysqlSql = SQLUtils.translateOracleToMySql(sql);
Assert.assertEquals("SELECT *"//
+ "\nFROM t"//
+ "\nORDER BY id"//
+ "\nLIMIT 10, 10", mysqlSql);
System.out.println(mysqlSql);
}
}
@@ -0,0 +1,26 @@
package com.alibaba.druid.bvt.sql.oracle.tomysql;
import org.junit.Assert;
import junit.framework.TestCase;
import com.alibaba.druid.sql.SQLUtils;
public class OracleToMySql_PageTest2 extends TestCase {
public void test_page() throws Exception {
String sql = "SELECT XX.*, ROWNUM AS RN" + //
"\nFROM (SELECT *" + //
"\n\tFROM t" + //
"\n\tORDER BY id" + //
"\n\t) XX" + //
"\nWHERE ROWNUM < 10";
String mysqlSql = SQLUtils.translateOracleToMySql(sql);
Assert.assertEquals("SELECT *"//
+ "\nFROM t"//
+ "\nORDER BY id"//
+ "\nLIMIT 9", mysqlSql);
System.out.println(mysqlSql);
}
}