package com.alipay.zdal.parser.druid.bvt.sql.oracle; import java.util.List; import junit.framework.Assert; import com.alipay.zdal.parser.druid.sql.OracleTest; import com.alipay.zdal.parser.sql.ast.SQLStatement; import com.alipay.zdal.parser.sql.dialect.oracle.parser.OracleStatementParser; import com.alipay.zdal.parser.sql.dialect.oracle.visitor.OracleSchemaStatVisitor; /** * * @author xiaoqing.zhouxq * @version $Id: OracleExplainTest3.java, v 0.1 2012-5-17 ����10:16:43 xiaoqing.zhouxq Exp $ */ public class OracleExplainTest3 extends OracleTest { public void test_0() throws Exception { String sql = // "explain plan for select 'enaliint'||m.login_id from vaccount v, company c, member m where m.company_id = c.id and v.id = c.id and v.status = 'enabled' and (v.service_type = 'cgs' or v.service_type = 'tp' or v.service_type = 'hkgs' or v.service_type = 'twgs') and m.company_id > 0 and m.status = 'enabled' and m.gmt_create > c.gmt_modified"; OracleStatementParser parser = new OracleStatementParser(sql); List<SQLStatement> statementList = parser.parseStatementList(); SQLStatement statemen = statementList.get(0); print(statementList); Assert.assertEquals(1, statementList.size()); OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); statemen.accept(visitor); System.out.println("Tables : " + visitor.getTables()); System.out.println("fields : " + visitor.getColumns()); System.out.println("coditions : " + visitor.getConditions()); System.out.println("relationships : " + visitor.getRelationships()); System.out.println("orderBy : " + visitor.getOrderByColumns()); Assert.assertEquals(0, visitor.getTables().size()); // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("\"DUAL\""))); Assert.assertEquals(0, visitor.getColumns().size()); // Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "*"))); // Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "YEAR"))); // Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "order_mode"))); } }