docs: public VoltTable[] runAdHoc(SystemProcedureExecutionContext ctx, byte[] serializedBatchData) {
  
          Pair<Object[], AdHocPlannedStatement[]> data = decodeSerializedBatchData(serializedBatchData);
          Object[] userparams = data.getFirst();
          AdHocPlannedStatement[] statements = data.getSecond();
  
          if (statements.length == 0) {
              return new VoltTable[]{};
          }
  
          for (AdHocPlannedStatement statement : statements) {
              if (!statement.core.wasPlannedAgainstHash(ctx.getCatalogHash())) {
                  @SuppressWarnings("deprecation")
                  String msg = String.format("AdHoc transaction %d wasn't planned " +
                          "against the current catalog version. Statement: %s",
                          DeprecatedProcedureAPIAccess.getVoltPrivateRealTransactionId(this),
                          new String(statement.sql, Constants.UTF8ENCODING));
                  throw new VoltAbortException(msg);
              }
  
              // Don't cache the statement text, since ad hoc statements
              // that differ only by constants reuse the same plan, statement text may change.
              long aggFragId = ActivePlanRepository.loadOrAddRefPlanFragment(
                      statement.core.aggregatorHash, statement.core.aggregatorFragment, null);
              long collectorFragId = 0;
              if (statement.core.collectorFragment != null) {
                  collectorFragId = ActivePlanRepository.loadOrAddRefPlanFragment(
                          statement.core.collectorHash, statement.core.collectorFragment, null);
              }
              SQLStmt stmt = SQLStmtAdHocHelper.createWithPlan(
                      statement.sql,
                      aggFragId,
                      statement.core.aggregatorHash,
                      true,
                      collectorFragId,
                      statement.core.collectorHash,
                      true,
                      statement.core.isReplicatedTableDML,
                      statement.core.readOnly,
                      statement.core.parameterTypes,
                      m_site);
  
              Object[] params = paramsForStatement(statement, userparams);
              voltQueueSQL(stmt, params);
          }
  
          return voltExecuteSQL(true);
      }