Обсуждение: BUG #2636: JDBC error behaviour incorrect

Поиск
Список
Период
Сортировка

BUG #2636: JDBC error behaviour incorrect

От
"Kiren Pillay"
Дата:
The following bug has been logged online:

Bug reference:      2636
Logged by:          Kiren Pillay
Email address:      kiren.pillay@standardbank.co.za
PostgreSQL version: 8.1.4
Operating system:   Windows
Description:        JDBC error behaviour incorrect
Details:

Hi

Here is my code snippet:
 <--

      public Hashtable retrieveApplicationParameters() {
            PreparedStatement ps = null;
            ResultSet rs = null;

            String loadApplicationParameters = " SELECT key_id, key_value FROM
application_parameters WHERE is_active = 1";

            Hashtable values = new Hashtable();
            try {
                DBActions db=DBActions.getInstance();


              rs = db.getConnection().prepareCall(loadApplicationParameters
).executeQuery();
              while (rs.next()) {
                  // Testing
                values.put(rs.getString(1), rs.getString(2));
                System.out.println(rs.getString(1)+","+ rs.getString(2));
              }
            } catch (SQLException sqle) {
              logger.error("Could not load application parameters ", sqle);
            }
            catch (Exception e){
            e.printStackTrace();
            }
            catch (Throwable e){
                e.printStackTrace();
                }
                /*finally {

              DBConnection.close(rs, ps);
            }*/
            return values;
          }

-->

In this code, the program gets to the executeQuery part with no exception.
When it gets to the rs.next() part, the code jumps to the finally block.
This is non-deterministic behaviour as the code seems to have thrown an
exception, but even the catch Throwable part does not catch the error.

The database being connected to is a restore from another database. The fact
is this database restore could be incorrect, but how can I find the actual
error
cause of the problem. Is there a way to increase the logging so that I can
figure out the problem here.

Sorry I can't give more info than this until i can learn how to turn the
debugging for the jdbc driver and so on.

Re: BUG #2636: JDBC error behaviour incorrect

От
Kris Jurka
Дата:
On Mon, 18 Sep 2006, Kiren Pillay wrote:

> The following bug has been logged online:
>
> Bug reference:      2636
> PostgreSQL version: 8.1.4
> Operating system:   Windows
> Description:        JDBC error behaviour incorrect
> Details:
>
>             try {
>                 DBActions db=DBActions.getInstance();
>
>
>               rs = db.getConnection().prepareCall(loadApplicationParameters
> ).executeQuery();
>               while (rs.next()) {
>                   // Testing
>                 values.put(rs.getString(1), rs.getString(2));
>                 System.out.println(rs.getString(1)+","+ rs.getString(2));
>               }
>             } catch (SQLException sqle) {
>               logger.error("Could not load application parameters ", sqle);
>             }
>             catch (Exception e){
>             e.printStackTrace();
>             }
>             catch (Throwable e){
>                 e.printStackTrace();
>                 }
>                 /*finally {
>
>               DBConnection.close(rs, ps);
>             }*/
>
>
> In this code, the program gets to the executeQuery part with no exception.
> When it gets to the rs.next() part, the code jumps to the finally block.
> This is non-deterministic behaviour as the code seems to have thrown an
> exception, but even the catch Throwable part does not catch the error.

Isn't it just likely that rs.next() returned false?

> The database being connected to is a restore from another database. The fact
> is this database restore could be incorrect, but how can I find the actual
> error
> cause of the problem. Is there a way to increase the logging so that I can
> figure out the problem here.

The driver can be started given a URL connection parameter ?loglevel=2
that will print out a fair amount of protocol information.