docs: private VoltTable[] fastPath(List<QueuedSQL> batch, final boolean finalTask) {
          final int batchSize = batch.size();
          Object[] params = new Object[batchSize];
          long[] fragmentIds = new long[batchSize];
          String[] sqlTexts = new String[batchSize];
          boolean[] isWriteFrag = new boolean[batchSize];
          int[] sqlCRCs = new int[batchSize];
          int succeededFragmentsCount = 0;
  
          int i = 0;
          for (final QueuedSQL qs : batch) {
              assert (qs.stmt.collector == null);
              fragmentIds[i] = qs.stmt.aggregator.id;
              // use the pre-serialized params if it exists
              params[i] = qs.params;
              sqlTexts[i] = qs.stmt.getText();
              isWriteFrag[i] = !qs.stmt.isReadOnly;
              sqlCRCs[i] = SQLStmtAdHocHelper.getHash(qs.stmt);
              i++;
          }
  
          VoltTable[] results = null;
          // Before executing the fragments, tell the EE if this batch should be
          // timed.
          getExecutionEngine().setPerFragmentTimingEnabled(m_perCallStats.samplingStmts());
          try {
              FastDeserializer fragResult = m_site.executePlanFragments(batchSize, fragmentIds, null, params,
                      m_determinismHash, sqlTexts, isWriteFrag, sqlCRCs, m_txnState.txnId, m_txnState.m_spHandle,
                      m_txnState.uniqueId, m_isReadOnly, VoltTrace.log(VoltTrace.Category.EE) != null);
              final int totalSize;
              try {
                  // read the size of the DR buffer used
                  fragResult.readInt();
                  // read the complete size of the buffer used
                  totalSize = fragResult.readInt();
              } catch (final IOException ex) {
                  log.error("Failed to deserialze result table" + ex);
                  throw new EEException(ExecutionEngine.ERRORCODE_WRONG_SERIALIZED_BYTES);
              }
              final ByteBuffer rawDataBuff;
              if ((m_batchIndex == 0 && !m_site.usingFallbackBuffer()) || finalTask) {
                  // If this is the first or final batch, skip the copy of the
                  // underlying byte array
                  rawDataBuff = fragResult.buffer();
              } else {
                  rawDataBuff = fragResult.readBuffer(totalSize);
              }
              results = TableHelper.convertBackedBufferToTables(rawDataBuff, batchSize);
          } catch (Throwable ex) {
              if (!m_isReadOnly) {
                  // roll back the current batch and re-throw the EE exception
                  m_site.truncateUndoLog(true, false,
                          m_spBigBatchBeginToken >= 0 ? m_spBigBatchBeginToken : m_site.getLatestUndoToken(),
                          m_txnState.m_spHandle, null);
              }
  
              throw ex;
          } finally {
              long[] executionTimes = null;
              if (m_perCallStats.samplingStmts()) {
                  executionTimes = new long[batchSize];
              }
              succeededFragmentsCount = getExecutionEngine().extractPerFragmentStats(batchSize, executionTimes);
  
              for (i = 0; i < batchSize; i++) {
                  QueuedSQL qs = batch.get(i);
                  // No coordinator task for a single partition procedure.
                  boolean isCoordinatorTask = false;
                  // If all the fragments in this batch are executed successfully,
                  // succeededFragmentsCount == batchSize.
                  // Otherwise, the fragment whose index equals
                  // succeededFragmentsCount is the one that failed.
                  boolean failed = i == succeededFragmentsCount;
  
                  m_perCallStats.recordStatementStats(qs.stmt.getStmtName(), isCoordinatorTask, failed,
                          executionTimes == null ? 0 : executionTimes[i], results == null ? null : results[i], qs.params);
  
                  // If this fragment failed, no subsequent fragments will be
                  // executed.
                  if (failed) {
                      break;
                  }
              }
          }
          return results;
      }