in storage-jdbc/src/main/java/org/apache/rocketmq/schema/registry/storage/jdbc/dialect/GenericDatabaseDialect.java [112:147]
protected void createStorageTables() throws IOException {
InputStream inputStream = GenericDatabaseDialect.class.getResourceAsStream(String.format(DDL_FILE, dbType()));
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
List<String> ddl = Lists.newArrayList();
String line;
while ((line = reader.readLine()) != null) {
ddl.add(line);
}
String[] statements = ddl.stream()
.map(String::trim)
.filter(x -> !x.startsWith("--") && !x.isEmpty())
.map(
x -> {
final Matcher m =
COMMENT_PATTERN.matcher(x);
return m.matches() ? m.group(1) : x;
})
.collect(Collectors.joining("\n"))
.split(";");
// create db and tables
try (Statement st = getConnection().createStatement()) {
for (String statement : statements) {
if (tableId.getCatalogName() != null) {
statement = statement.replace(TableId.DB_NAME, tableId.getCatalogName().trim());
}
if (tableId.getSchemaName() != null) {
statement = statement.replace(TableId.SCHEMA_NAME, tableId.getSchemaName().trim());
}
statement = statement.replace(TableId.TABLE_NAME, tableId.getTableName().trim());
st.execute(statement.trim());
}
} catch (SQLException sqe) {
throw new SchemaException("Init database and table is failed", sqe);
}
}