docs: private void executeBatchStatements(Connection conn) throws SQLException {
          if (tc.isEntryEnabled())
              Tr.entry(tc, "executeBatchStatements", new java.lang.Object[] { conn, this });
  
          PreparedStatement insertStatement = null;
          PreparedStatement updateStatement = null;
          PreparedStatement removeStatement = null;
  
          try {
              // Prepare the statements
              if (tc.isDebugEnabled())
                  Tr.debug(tc, "Prepare the INSERT statement for " + _inserts + " inserts");
  
              if (_inserts > 0) {
                  String insertString = "INSERT INTO " + _recoveryTableName + _logIdentifierString + _recoveryTableNameSuffix +
                                        " (SERVER_NAME, SERVICE_ID, RU_ID, RUSECTION_ID, RUSECTION_DATA_INDEX, DATA)" +
                                        " VALUES (?,?,?,?,?,?)";
                  if (tc.isDebugEnabled())
                      Tr.debug(tc, "INSERT string - " + insertString);
                  insertStatement = conn.prepareStatement(insertString);
                  insertStatement.setString(1, _serverName);
                  insertStatement.setShort(2, (short) _recoveryAgent.clientIdentifier());
              }
  
              if (tc.isDebugEnabled())
                  Tr.debug(tc, "Prepare the UPDATE statement for " + _updates + " updates");
  
              if (_updates > 0) {
                  String updateString = "UPDATE " + _recoveryTableName + _logIdentifierString + _recoveryTableNameSuffix +
                                        " SET DATA = ? WHERE " +
                                        "SERVER_NAME = ? AND SERVICE_ID = ? AND RU_ID = ? AND RUSECTION_ID = ? AND RUSECTION_DATA_INDEX = 0";
                  if (tc.isDebugEnabled())
                      Tr.debug(tc, "UPDATE string - " + updateString);
                  updateStatement = conn.prepareStatement(updateString);
                  updateStatement.setString(2, _serverName);
                  updateStatement.setShort(3, (short) _recoveryAgent.clientIdentifier());
              }
  
              if (tc.isDebugEnabled())
                  Tr.debug(tc, "Prepare the DELETE statement for " + _removes + " removes");
  
              if (_removes > 0) {
                  String removeString = "DELETE FROM " + _recoveryTableName + _logIdentifierString + _recoveryTableNameSuffix + " WHERE " +
                                        "SERVER_NAME = ? AND SERVICE_ID = ? AND RU_ID = ? ";
                  if (tc.isDebugEnabled())
                      Tr.debug(tc, "DELETE string - " + removeString);
                  removeStatement = conn.prepareStatement(removeString);
                  removeStatement.setString(1, _serverName);
                  removeStatement.setShort(2, (short) _recoveryAgent.clientIdentifier());
              }
  
              // Batch the INSERT statements
              if (_inserts > 0) {
                  for (ruForReplay element : _cachedInserts) {
                      insertStatement.setLong(3, element.getRuId());
                      insertStatement.setLong(4, element.getSectionId());
                      insertStatement.setShort(5, (short) element.getIndex());
                      insertStatement.setBytes(6, element.getData());
  
                      insertStatement.addBatch();
                  }
              }
  
              // Batch the UPDATE statements
              if (_updates > 0) {
                  for (ruForReplay element : _cachedUpdates) {
                      updateStatement.setLong(4, element.getRuId());
                      updateStatement.setLong(5, element.getSectionId());
                      updateStatement.setBytes(1, element.getData());
  
                      updateStatement.addBatch();
                  }
              }
  
              // Batch the DELETE statements
              if (_removes > 0) {
                  for (ruForReplay element : _cachedRemoves) {
                      removeStatement.setLong(3, element.getRuId());
                      removeStatement.addBatch();
                  }
              }
  
              // Execute the statements
              if (_inserts > 0) {
                  int[] numUpdates = insertStatement.executeBatch();
                  if (tc.isDebugEnabled()) {
                      for (int i = 0; i < numUpdates.length; i++) {
                          if (numUpdates[i] == Statement.SUCCESS_NO_INFO)
                              Tr.debug(tc, "Execution " + i + ": unknown number of rows updated");
                          else
                              Tr.debug(tc, "Execution " + i + "successful: " + numUpdates[i] + " rows updated");
                      }
                  }
              }
              if (tc.isEventEnabled())
                  Tr.event(tc, "sql tranlog: batch inserts: " + _inserts);
  
              if (_updates > 0) {
                  int[] numUpdates = updateStatement.executeBatch();
                  if (tc.isDebugEnabled()) {
                      for (int i = 0; i < numUpdates.length; i++) {
                          if (numUpdates[i] == Statement.SUCCESS_NO_INFO)
                              Tr.debug(tc, "Execution " + i + ": unknown number of rows updated");
                          else
                              Tr.debug(tc, "Execution " + i + "successful: " + numUpdates[i] + " rows updated");
                      }
                  }
              }
              if (tc.isEventEnabled())
                  Tr.event(tc, "sql tranlog: batch updates: " + _updates);
  
              if (_removes > 0) {
                  int[] numUpdates = removeStatement.executeBatch();
                  if (tc.isDebugEnabled()) {
                      for (int i = 0; i < numUpdates.length; i++) {
                          if (numUpdates[i] == Statement.SUCCESS_NO_INFO)
                              Tr.debug(tc, "Execution " + i + ": unknown number of rows updated");
                          else
                              Tr.debug(tc, "Execution " + i + "successful: " + numUpdates[i] + " rows updated");
                      }
                  }
              }
              if (tc.isEventEnabled())
                  Tr.event(tc, "sql tranlog: batch deletes: " + _removes + ", for obj: " + this);
          } finally {
              if (insertStatement != null && !insertStatement.isClosed())
                  insertStatement.close();
              if (updateStatement != null && !updateStatement.isClosed())
                  updateStatement.close();
              if (removeStatement != null && !removeStatement.isClosed())
                  removeStatement.close();
          }
  
          if (tc.isEntryEnabled())
              Tr.exit(tc, "executeBatchStatements");
      }