package org.opencloudb.parser.druid;

import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.parser.Lexer;
import com.alibaba.druid.sql.parser.SQLSelectParser;
import com.alibaba.druid.sql.parser.Token;
import com.alibaba.druid.util.JdbcConstants;

/**
 * Created by nange on 2015/3/13.
 */
public class MycatStatementParser extends MySqlStatementParser
{
    public MycatStatementParser(String sql)
    {
        super(sql);
        exprParser = new MycatExprParser(sql);
    }

    public MycatStatementParser(Lexer lexer)
    {
        super(lexer);
        exprParser = new MycatExprParser(lexer);
    }

    @Override
    public SQLSelectStatement parseSelect()
    {

        MycatSelectParser selectParser = new MycatSelectParser(this.exprParser);
        return new SQLSelectStatement(selectParser.select(), JdbcConstants.MYSQL);
    }

    public SQLSelectParser createSQLSelectParser()
    {
        return new MycatSelectParser(this.exprParser);
    }

    @Override
    public void accept(Token token)
    {

        super.accept(token);
    }


}

@@ -205,24 +205,75 @@
 rser.Lexer;%0A
+import com.alibaba.druid.sql.parser.SQLExprParser;%0A
 import com.a
@@ -509,16 +509,17 @@
 arser%0A%7B%0A
+%0A
     publ
@@ -580,33 +580,39 @@
 r(sql);%0A        
-e
+selectE
 xprParser = new 
@@ -721,17 +721,23 @@
         
-e
+selectE
 xprParse
@@ -767,32 +767,78 @@
 (lexer);%0A    %7D%0A%0A
+    protected SQLExprParser selectExprParser;%0A
     @Override%0A  
@@ -946,33 +946,39 @@
 lectParser(this.
-e
+selectE
 xprParser);%0A    
@@ -1162,17 +1162,23 @@
 er(this.
-e
+selectE
 xprParse
@@ -1192,100 +1192,8 @@
  %7D%0A%0A
-    @Override%0A    public void accept(Token token)%0A    %7B%0A%0A        super.accept(token);%0A    %7D%0A
 %0A%0A%7D%0A

修复其他数据库解析insert、update的bug