mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
fixed quota ddl
This commit is contained in:
@@ -14,6 +14,7 @@ import com.alibaba.otter.canal.parse.exception.CanalParseException;
|
|||||||
import com.alibaba.otter.canal.parse.inbound.TableMeta;
|
import com.alibaba.otter.canal.parse.inbound.TableMeta;
|
||||||
import com.alibaba.otter.canal.parse.inbound.TableMeta.FieldMeta;
|
import com.alibaba.otter.canal.parse.inbound.TableMeta.FieldMeta;
|
||||||
import com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection;
|
import com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection;
|
||||||
|
import com.alibaba.otter.canal.parse.inbound.mysql.ddl.DruidDdlParser;
|
||||||
import com.alibaba.otter.canal.parse.inbound.mysql.tsdb.TableMetaTSDB;
|
import com.alibaba.otter.canal.parse.inbound.mysql.tsdb.TableMetaTSDB;
|
||||||
import com.alibaba.otter.canal.protocol.position.EntryPosition;
|
import com.alibaba.otter.canal.protocol.position.EntryPosition;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
@@ -103,7 +104,9 @@ public class TableMetaCache {
|
|||||||
* size),
|
* size),
|
||||||
"YES"));
|
"YES"));
|
||||||
meta.setKey("PRI".equalsIgnoreCase(packet.getFieldValues().get(nameMaps.get(COLUMN_KEY) + i * size)));
|
meta.setKey("PRI".equalsIgnoreCase(packet.getFieldValues().get(nameMaps.get(COLUMN_KEY) + i * size)));
|
||||||
meta.setDefaultValue(packet.getFieldValues().get(nameMaps.get(COLUMN_DEFAULT) + i * size));
|
// 特殊处理引号
|
||||||
|
meta.setDefaultValue(DruidDdlParser.unescapeQuotaName(packet.getFieldValues()
|
||||||
|
.get(nameMaps.get(COLUMN_DEFAULT) + i * size)));
|
||||||
meta.setExtra(packet.getFieldValues().get(nameMaps.get(EXTRA) + i * size));
|
meta.setExtra(packet.getFieldValues().get(nameMaps.get(EXTRA) + i * size));
|
||||||
|
|
||||||
result.add(meta);
|
result.add(meta);
|
||||||
|
|||||||
@@ -198,4 +198,16 @@ public class DruidDdlParser {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String unescapeQuotaName(String name) {
|
||||||
|
if (name.length() > 2) {
|
||||||
|
char c0 = name.charAt(0);
|
||||||
|
char x0 = name.charAt(name.length() - 1);
|
||||||
|
if (c0 == '\'' && x0 == '\'') {
|
||||||
|
return name.substring(1, name.length() - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ public class MemoryTableMeta implements TableMetaTSDB {
|
|||||||
if (column.getDefaultExpr() == null || column.getDefaultExpr() instanceof SQLNullExpr) {
|
if (column.getDefaultExpr() == null || column.getDefaultExpr() instanceof SQLNullExpr) {
|
||||||
fieldMeta.setDefaultValue(null);
|
fieldMeta.setDefaultValue(null);
|
||||||
} else {
|
} else {
|
||||||
fieldMeta.setDefaultValue(getSqlName(column.getDefaultExpr()));
|
fieldMeta.setDefaultValue(DruidDdlParser.unescapeQuotaName(getSqlName(column.getDefaultExpr())));
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldMeta.setColumnName(name);
|
fieldMeta.setColumnName(name);
|
||||||
@@ -233,6 +233,7 @@ public class MemoryTableMeta implements TableMetaTSDB {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public SchemaRepository getRepository() {
|
public SchemaRepository getRepository() {
|
||||||
return repository;
|
return repository;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user