diff --git a/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/ddl/DruidDdlParser.java b/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/ddl/DruidDdlParser.java index eda66921..efb3870a 100644 --- a/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/ddl/DruidDdlParser.java +++ b/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/ddl/DruidDdlParser.java @@ -9,31 +9,13 @@ import com.alibaba.fastsql.sql.ast.SQLExpr; import com.alibaba.fastsql.sql.ast.SQLStatement; import com.alibaba.fastsql.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.fastsql.sql.ast.expr.SQLPropertyExpr; -import com.alibaba.fastsql.sql.ast.statement.SQLAlterTableAddConstraint; -import com.alibaba.fastsql.sql.ast.statement.SQLAlterTableAddIndex; -import com.alibaba.fastsql.sql.ast.statement.SQLAlterTableDropConstraint; -import com.alibaba.fastsql.sql.ast.statement.SQLAlterTableDropIndex; -import com.alibaba.fastsql.sql.ast.statement.SQLAlterTableDropKey; -import com.alibaba.fastsql.sql.ast.statement.SQLAlterTableItem; -import com.alibaba.fastsql.sql.ast.statement.SQLAlterTableRename; -import com.alibaba.fastsql.sql.ast.statement.SQLAlterTableStatement; -import com.alibaba.fastsql.sql.ast.statement.SQLConstraint; -import com.alibaba.fastsql.sql.ast.statement.SQLCreateIndexStatement; -import com.alibaba.fastsql.sql.ast.statement.SQLCreateTableStatement; -import com.alibaba.fastsql.sql.ast.statement.SQLDeleteStatement; -import com.alibaba.fastsql.sql.ast.statement.SQLDropIndexStatement; -import com.alibaba.fastsql.sql.ast.statement.SQLDropTableStatement; -import com.alibaba.fastsql.sql.ast.statement.SQLExprTableSource; -import com.alibaba.fastsql.sql.ast.statement.SQLInsertStatement; -import com.alibaba.fastsql.sql.ast.statement.SQLTableSource; -import com.alibaba.fastsql.sql.ast.statement.SQLTruncateStatement; -import com.alibaba.fastsql.sql.ast.statement.SQLUnique; -import com.alibaba.fastsql.sql.ast.statement.SQLUpdateStatement; +import com.alibaba.fastsql.sql.ast.statement.*; import com.alibaba.fastsql.sql.dialect.mysql.ast.statement.MySqlRenameTableStatement; import com.alibaba.fastsql.sql.dialect.mysql.ast.statement.MySqlRenameTableStatement.Item; import com.alibaba.fastsql.sql.parser.ParserException; import com.alibaba.fastsql.util.JdbcConstants; import com.alibaba.otter.canal.protocol.CanalEntry.EventType; +import org.apache.commons.lang.StringUtils; /** * @author agapple 2017年7月27日 下午4:05:34 @@ -157,6 +139,17 @@ public class DruidDdlParser { processName(ddlResult, schmeaName, delete.getTableName(), false); ddlResult.setType(EventType.DELETE); ddlResults.add(ddlResult); + } else if (statement instanceof SQLCreateDatabaseStatement){ + DdlResult ddlResult = new DdlResult(); + ddlResult.setType(EventType.QUERY); + //只设置schema + processName(ddlResult,schmeaName,null,false); + ddlResults.add(ddlResult); + } else if(statement instanceof SQLDropDatabaseStatement){ + DdlResult ddlResult = new DdlResult(); + ddlResult.setType(EventType.QUERY); + //只设置schema + processName(ddlResult,schmeaName,null,false); } } @@ -165,6 +158,9 @@ public class DruidDdlParser { private static void processName(DdlResult ddlResult, String schema, SQLExpr sqlName, boolean isOri) { if (sqlName == null) { + if (StringUtils.isNotBlank(schema)){ + ddlResult.setSchemaName(schema); + } return; }