in storage-jdbc/src/main/java/org/apache/rocketmq/schema/registry/storage/jdbc/dialect/GenericDatabaseDialect.java [407:432]
private IdentifierRules identifierRules() {
if (identifierRules.get() == null) {
try (Connection connection = getConnection()) {
DatabaseMetaData metaData = connection.getMetaData();
String leadingQuoteStr = metaData.getIdentifierQuoteString();
String trailingQuoteStr = leadingQuoteStr; // JDBC does not distinguish
String separator = metaData.getCatalogSeparator();
if (StringUtils.isEmpty(leadingQuoteStr)) {
leadingQuoteStr = defaultIdentifierRules.leadingQuoteString();
trailingQuoteStr = defaultIdentifierRules.trailingQuoteString();
}
if (StringUtils.isEmpty(separator)) {
separator = defaultIdentifierRules.identifierDelimiter();
}
identifierRules.set(new IdentifierRules(separator, leadingQuoteStr, trailingQuoteStr));
} catch (SQLException e) {
if (defaultIdentifierRules != null) {
identifierRules.set(defaultIdentifierRules);
log.warn("Unable to get identifier metadata; using default rules", e);
} else {
throw new SchemaException("Unable to get identifier metadata", e);
}
}
}
return identifierRules.get();
}