mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
fix #893 index name contains "on" keyword
This commit is contained in:
@@ -44,8 +44,8 @@ public class SimpleDdlParser {
|
|||||||
* http://dev.mysql.com/doc/refman/5.6/en/create-index.html
|
* http://dev.mysql.com/doc/refman/5.6/en/create-index.html
|
||||||
* </pre>
|
* </pre>
|
||||||
*/
|
*/
|
||||||
public static final String CREATE_INDEX_PATTERN = "^\\s*CREATE\\s*(UNIQUE)?(FULLTEXT)?(SPATIAL)?\\s*INDEX\\s*(.*?)\\s*ON\\s*(.*?)$";
|
public static final String CREATE_INDEX_PATTERN = "^\\s*CREATE\\s*(UNIQUE)?(FULLTEXT)?(SPATIAL)?\\s*INDEX\\s*(.*?)\\s+ON\\s+(.*?)$";
|
||||||
public static final String DROP_INDEX_PATTERN = "^\\s*DROP\\s*INDEX\\s*(.*?)\\s*ON\\s*(.*?)$";
|
public static final String DROP_INDEX_PATTERN = "^\\s*DROP\\s*INDEX\\s*(.*?)\\s+ON\\s+(.*?)$";
|
||||||
|
|
||||||
public static DdlResult parse(String queryString, String schmeaName) {
|
public static DdlResult parse(String queryString, String schmeaName) {
|
||||||
queryString = removeComment(queryString); // 去除/* */的sql注释内容
|
queryString = removeComment(queryString); // 去除/* */的sql注释内容
|
||||||
|
|||||||
@@ -225,5 +225,19 @@ public class SimpleDdlParserTest {
|
|||||||
Assert.assertNotNull(result);
|
Assert.assertNotNull(result);
|
||||||
Assert.assertEquals("retl", result.getSchemaName());
|
Assert.assertEquals("retl", result.getSchemaName());
|
||||||
Assert.assertEquals("retl_mark", result.getTableName());
|
Assert.assertEquals("retl_mark", result.getTableName());
|
||||||
|
|
||||||
|
//test index name contains 'on' -- version
|
||||||
|
queryString = "create index schema_new_index_version_s_idx on q_contract_account (contract_id,main_contract_id)";
|
||||||
|
result = SimpleDdlParser.parse(queryString, "retl");
|
||||||
|
Assert.assertNotNull(result);
|
||||||
|
Assert.assertEquals("retl", result.getSchemaName());
|
||||||
|
Assert.assertEquals("q_contract_account", result.getTableName());
|
||||||
|
|
||||||
|
queryString = "drop index schema_new_index_version_s_idx on q_contract_account";
|
||||||
|
result = SimpleDdlParser.parse(queryString, "retl");
|
||||||
|
Assert.assertNotNull(result);
|
||||||
|
Assert.assertEquals("retl", result.getSchemaName());
|
||||||
|
Assert.assertEquals("q_contract_account", result.getTableName());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user