@SneakyThrows
    public void createOrUpdateTable(String table, List<ModelColumn> columns, boolean isAdditionalTable) {
        // Some SQL implementations don't have the syntax "alter table <table> add column if not exists",
        // we have to query the columns and filter out the existing ones.
        final var columnsToBeAdded = new ArrayList<>(columns);
        final var existingColumns = getDatabaseColumns(table);
        columnsToBeAdded.removeIf(it -> existingColumns.contains(it.getColumnName().getStorageName()));

        final var jdbcClient = (JDBCClient) client;
        if (!jdbcClient.tableExists(table)) {
            createTable(table, columnsToBeAdded, isAdditionalTable);
        } else {
            updateTable(table, columnsToBeAdded);
        }
    }
JDBC table installer, uses standard SQL to create tables, indices, and views.
oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/JDBCTableInstaller.java