in adb3client/src/main/java/com/alibaba/cloud/analyticdb/adb3client/model/TableName.java [140:176]
public static TableName valueOf(String name) throws InvalidIdentifierException {
TableName tableName = tableCache2.get(name);
if (tableName == null) {
synchronized (LOCK) {
tableName = tableCache2.get(name);
if (tableName == null) {
List<String> schemaAndTableName = parseMultiIdentifier(name);
String parsedSchemaName;
String parsedTableName;
if (schemaAndTableName.size() == 1) {
parsedSchemaName = "";
parsedTableName = schemaAndTableName.get(0);
} else if (schemaAndTableName.size() == 2) {
parsedSchemaName = schemaAndTableName.get(0);
parsedTableName = schemaAndTableName.get(1);
} else {
throw new InvalidIdentifierException(name);
}
StringBuilder sb = new StringBuilder();
if (parsedSchemaName != null && !parsedSchemaName.isEmpty()) {
sb.append("`").append(parsedSchemaName).append("`.");
}
sb.append("`").append(parsedTableName).append("`");
String parsedFullName = sb.toString();
Map<String, TableName> temp = new HashMap<>(tableCache2);
tableName = tableCache2.get(parsedFullName);
if (tableName == null) {
tableName = new TableName(parsedSchemaName, parsedTableName, parsedFullName);
temp.put(parsedFullName, tableName);
}
temp.put(name, tableName);
tableCache2 = temp;
}
}
}
return tableName;
}