diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-09-28 14:42:23 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-09-28 14:42:23 +0200 |
commit | ecfffbc56def1cfc87d34a70c0fb9f9241459e54 (patch) | |
tree | de559cf9bea8ed8454cdf145bfee495eb777400c /odb/mysql/view-result.txx | |
parent | 050e97d3a7f34ce4a278e0c9788f65651bc2a34c (diff) |
Make sure size() can still be called once we reached the end of result set
Diffstat (limited to 'odb/mysql/view-result.txx')
-rw-r--r-- | odb/mysql/view-result.txx | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/odb/mysql/view-result.txx b/odb/mysql/view-result.txx index f6060ea..cc5178e 100644 --- a/odb/mysql/view-result.txx +++ b/odb/mysql/view-result.txx @@ -132,7 +132,7 @@ namespace odb void view_result_impl<T>:: cache () { - if (!statement_->cached ()) + if (!this->end_ && !statement_->cached ()) { statement_->cache (); @@ -148,10 +148,17 @@ namespace odb std::size_t view_result_impl<T>:: size () { - if (!statement_->cached ()) - throw result_not_cached (); + if (!this->end_) + { + if (!statement_->cached ()) + throw result_not_cached (); - return statement_->result_size (); + return statement_->result_size (); + } + else + // If count is not zero, then it is one past the result size. + // + return count_ == 0 ? 0 : count_ - 1; } } } |