docs: public PrepareResult executeBatch() throws SQLException {
      int paramCount = getParamCount();
      if (binaryProtocol) {
        if (readPrepareStmtResult) {
          parameterTypeHeader = new ColumnType[paramCount];
          if (prepareResult == null
              && protocol.getOptions().cachePrepStmts
              && protocol.getOptions().useServerPrepStmts) {
            String key = protocol.getDatabase() + "-" + sql;
            prepareResult = protocol.prepareStatementCache().get(key);
            if (prepareResult != null && !((ServerPrepareResult) prepareResult)
                .incrementShareCounter()) {
              //in cache but been de-allocated
              prepareResult = null;
            }
          }
          statementId =
              (prepareResult == null) ? -1 : ((ServerPrepareResult) prepareResult).getStatementId();
        } else if (prepareResult != null) {
          statementId = ((ServerPrepareResult) prepareResult).getStatementId();
        }
      }
      return executeBatchStandard(paramCount);
    }