Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search archives
  Advanced Search

Re: getUdateCount() vs. RETURNING clause


  • From: Oliver Jowett <oliver(at)opencloud(dot)com>
  • To: Thomas Kellerer <spam_eater(at)gmx(dot)net>
  • Cc: pgsql-jdbc(at)postgresql(dot)org
  • Subject: Re: getUdateCount() vs. RETURNING clause
  • Date: Thu, 26 Nov 2009 00:13:40 +1300
  • Message-id: <4B0D1164.1060006@opencloud.com> <text/plain>

Thomas Kellerer wrote:

Hmm, my understand was a bit different.
The Javadocs simply say

There are no more results when the following is true:
((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))

It doesn't state that they are mutually exclusive. And for me it seemed to imply that I can call getMoreResults() and getUpdateCount() in a loop in order to process everything that is returned.

Additionally the Javadocs for getUpdateCount() says:

"Gets the *current* result as an update count" and ".. if there are no more results it returns -1"


You've done some selective editing there. The javadoc I referred to is this (from the Java 6 javadoc):

getResultSet():

Retrieves the current result as a ResultSet object. This method should be called only once per result.

Returns: the current result as a ResultSet object or null if the result is an update count or there are no more results

---

getUpdateCount():

Retrieves the current result as an update count; if the result is a ResultSet object or there are no more results, -1 is returned. This method should be called only once per result.

Returns: the current result as an update count; -1 if the current result is a ResultSet object or there are no more results

---

I think that's fairly clear: the "current result" is either a ResultSet, or an update count, but it can't be both. getUpdateCount() explicitly says that it returns "-1 [...] if the current result is a ResultSet object", and getResultSet() explicitly says that it returns "null if the [current] result is an update count."

The word "current" here also let me to believe I can call those methods multiple times.

From memory the postgresql driver doesn't care if you call them multiple times, but FWIW the javadoc says that you should only call them once per result.

-O



Home | Main Index | Thread Index

Privacy Policy | About PostgreSQL
Copyright © 1996 – 2012 PostgreSQL Global Development Group