docs: private void executeBatchMulti(Results results, final ClientPrepareResult clientPrepareResult,
        final List<ParameterHolder[]> parametersList) throws SQLException {
  
      cmdPrologue();
      initializeBatchReader();
      new AbstractMultiSend(this, writer, results, clientPrepareResult, parametersList) {
  
        @Override
        public void sendCmd(PacketOutputStream writer, Results results,
            List<ParameterHolder[]> parametersList, List<String> queries, int paramCount,
            BulkStatus status,
            PrepareResult prepareResult)
            throws IOException {
  
          ParameterHolder[] parameters = parametersList.get(status.sendCmdCounter);
          writer.startPacket(0);
          ComQuery.sendSubCmd(writer, clientPrepareResult, parameters, -1);
          writer.flush();
        }
  
  
        @Override
        public SQLException handleResultException(SQLException qex, Results results,
            List<ParameterHolder[]> parametersList, List<String> queries, int currentCounter,
            int sendCmdCounter, int paramCount, PrepareResult prepareResult) {
  
          int counter = results.getCurrentStatNumber() - 1;
          ParameterHolder[] parameters = parametersList.get(counter);
          List<byte[]> queryParts = clientPrepareResult.getQueryParts();
          StringBuilder sql = new StringBuilder(new String(queryParts.get(0)));
  
          for (int i = 0; i < paramCount; i++) {
            sql.append(parameters[i].toString()).append(new String(queryParts.get(i + 1)));
          }
  
          return logQuery.exceptionWithQuery(sql.toString(), qex, explicitClosed);
        }
  
  
        @Override
        public int getParamCount() {
          return clientPrepareResult.getQueryParts().size() - 1;
        }
  
  
        @Override
        public int getTotalExecutionNumber() {
          return parametersList.size();
        }
  
      }.executeBatch();
  
    }