Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
dongchenghao.hao committed May 24, 2023
1 parent 6486250 commit ee14d6b
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 24 deletions.
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"java.configuration.updateBuildConfiguration": "interactive",
"java.compile.nullAnalysis.mode": "automatic"
}
2 changes: 2 additions & 0 deletions deployer/src/main/resources/example/instance.properties
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ canal.mq.topic=example
#canal.mq.dynamicTopic=mytest1.user,mytest2\\..*,.*\\..*
canal.mq.partition=0
# hash partition config
#canal.mq.enableDynamicQueuePartition=false
#canal.mq.partitionsNum=3
#canal.mq.partitionHash=test.table:id^name,.*\\..*
#canal.mq.dynamicTopicPartitionNum=test.*:4,mycanal:6
#canal.mq.partitionHash=test.table:id^name,.*\\..*
#################################################
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,21 @@
*/
public class TableMetaCache {

public static final String COLUMN_NAME = "COLUMN_NAME";
public static final String COLUMN_TYPE = "COLUMN_TYPE";
public static final String IS_NULLABLE = "IS_NULLABLE";
public static final String COLUMN_KEY = "COLUMN_KEY";
public static final String COLUMN_DEFAULT = "COLUMN_DEFAULT";
public static final String EXTRA = "EXTRA";
private MysqlConnection connection;
private boolean isOnRDS = false;
private boolean isOnTSDB = false;

private TableMetaTSDB tableMetaTSDB;
public static final String COLUMN_NAME = "Field";
public static final String COLUMN_TYPE = "Type";
public static final String IS_NULLABLE = "Null";
public static final String COLUMN_KEY = "Key";
public static final String COLUMN_DEFAULT = "Default";
public static final String EXTRA = "Extra";
private MysqlConnection connection;
private boolean isOnRDS = false;
private boolean isOnTSDB = false;

private TableMetaTSDB tableMetaTSDB;
// 第一层tableId,第二层schema.table,解决tableId重复,对应多张表
private LoadingCache<String, TableMeta> tableMetaDB;

public TableMetaCache(MysqlConnection con, TableMetaTSDB tableMetaTSDB){
public TableMetaCache(MysqlConnection con, TableMetaTSDB tableMetaTSDB) {
this.connection = con;
this.tableMetaTSDB = tableMetaTSDB;
// 如果持久存储的表结构为空,从db里面获取下
Expand Down Expand Up @@ -116,7 +116,7 @@ public static List<FieldMeta> parseTableMetaByDesc(ResultSetPacket packet) {
Map<String, Integer> nameMaps = new HashMap<>(6, 1f);
int index = 0;
for (FieldPacket fieldPacket : packet.getFieldDescriptors()) {
nameMaps.put(fieldPacket.getOriginalName(), index++);
nameMaps.put(fieldPacket.getName(), index++);
}

int size = packet.getFieldDescriptors().size();
Expand All @@ -128,13 +128,13 @@ public static List<FieldMeta> parseTableMetaByDesc(ResultSetPacket packet) {
meta.setColumnName(packet.getFieldValues().get(nameMaps.get(COLUMN_NAME) + i * size).intern());
meta.setColumnType(packet.getFieldValues().get(nameMaps.get(COLUMN_TYPE) + i * size));
meta.setNullable(StringUtils.equalsIgnoreCase(packet.getFieldValues().get(nameMaps.get(IS_NULLABLE) + i
* size),
"YES"));
* size),
"YES"));
meta.setKey("PRI".equalsIgnoreCase(packet.getFieldValues().get(nameMaps.get(COLUMN_KEY) + i * size)));
meta.setUnique("UNI".equalsIgnoreCase(packet.getFieldValues().get(nameMaps.get(COLUMN_KEY) + i * size)));
// 特殊处理引号
meta.setDefaultValue(DruidDdlParser.unescapeQuotaName(packet.getFieldValues()
.get(nameMaps.get(COLUMN_DEFAULT) + i * size)));
.get(nameMaps.get(COLUMN_DEFAULT) + i * size)));
meta.setExtra(packet.getFieldValues().get(nameMaps.get(EXTRA) + i * size));

result.add(meta);
Expand Down Expand Up @@ -245,16 +245,15 @@ public boolean apply(EntryPosition position, String schema, String ddl, String e
private String getFullName(String schema, String table) {
StringBuilder builder = new StringBuilder();
return builder.append('`')
.append(schema)
.append('`')
.append('.')
.append('`')
.append(table)
.append('`')
.toString();
.append(schema)
.append('`')
.append('.')
.append('`')
.append(table)
.append('`')
.toString();
}


public boolean isOnTSDB() {
return isOnTSDB;
}
Expand Down

0 comments on commit ee14d6b

Please sign in to comment.