From 5303dd088f25ecbd5cf2b3bd423f977874223fae Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 28 Sep 2012 14:42:23 +0200 Subject: Make sure size() can still be called once we reached the end of result set --- odb/pgsql/no-id-object-result.txx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'odb/pgsql/no-id-object-result.txx') diff --git a/odb/pgsql/no-id-object-result.txx b/odb/pgsql/no-id-object-result.txx index 98e1b48..6b1e921 100644 --- a/odb/pgsql/no-id-object-result.txx +++ b/odb/pgsql/no-id-object-result.txx @@ -25,7 +25,8 @@ namespace odb statements_type& statements) : base_type (statements.connection ().database ()), statement_ (statement), - statements_ (statements) + statements_ (statements), + count_ (0) { } @@ -76,7 +77,9 @@ namespace odb { this->current (pointer_type ()); - if (!statement_->next ()) + if (statement_->next ()) + count_++; + else { statement_->free_result (); this->end_ = true; @@ -93,7 +96,7 @@ namespace odb std::size_t no_id_object_result_impl:: size () { - return statement_->result_size (); + return this->end_ ? count_ : statement_->result_size (); } } } -- cgit v1.1