in reply to How to fetch the size of the resultset from a DBI query?

I do wish people would RTFM.

perldoc DBI explicitly states:

  `rows'
        $rv = $sth->rows;

      Returns the number of rows affected by the last row affecting command,
      or -1 if the number of rows is not known or not available.

      Generally, you can only rely on a row count after a non-`SELECT'
      `execute' (for some specific operations like `UPDATE' and `DELETE'), or
      after fetching all the rows of a `SELECT' statement.

      For `SELECT' statements, it is generally not possible to know how many
      rows will be returned except by fetching them all.  Some drivers will
      return the number of rows the application has fetched so far, but
      others may return -1 until all rows have been fetched.  So use of the
      `rows' method or `$DBI::rows' with `SELECT' statements is not
      recommended.

      One alternative method to get a row count for a `SELECT' is to execute
      a "SELECT COUNT(*) FROM ..." SQL statement with the same "..." as your
      query and then fetch the row count from that.
  • Comment on Re: RTFM (Was: How to fetch the size of the resultset from a DBI query?)