Re: error when using move, any suggestions?

From: Noel <noel(dot)faux(at)med(dot)monash(dot)edu(dot)au>
To: Dave Cramer <Dave(at)micro-automation(dot)net>
Cc: "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: error when using move, any suggestions?
Date: 2002-12-20 04:35:13
Message-ID: 3E029E01.3090400@med.monash.edu.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-jdbc

Dave,

Many thanks for your time. Unfortunalty, I'm still getting the same
error, even with the code you send, modified to use my database.

import blastDb.*;
import java.sql.*;
import java.io.*;
import java.util.*;
import java.lang.*;

public class TestFetchSize{
public static void main(String[] args){
Connection connection = null;
ResultSet rs;
try{
connection = new BlastDB().connection;
connection.setAutoCommit(false);
Statement stmt = connection.createStatement();
int counte = 0;
int result = stmt.executeUpdate("declare test cursor for
select id from region " +
"where protein_database = 1");
System.out.println("Cursor created, result is: " + result);
result = stmt.executeUpdate("move forward 99 in test");
System.out.println("Moved 99, result is: " + result);
while(true){
rs = stmt.executeQuery("fetch forward 2 in test");
if (rs.next()){
++counte;
while (rs.next()){
++counte;
System.out.println("Id --> " +
rs.getObject(1).toString());
}
}
else
break;
}
System.out.println(counte);
rs.close();
connection.commit();
connection.close();
}
catch (Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
finally{
try{
if(null != connection)
connection.close();
}
catch(Exception e) {}
}
}
}

With the move statement commented out it works fine.
The database is running on an IBM server with 4 Intel(R) Xeon(TM) CPU
1.40GHz.
The programe is running on a 1.2Ghz Athon machine with debin linux and
1Gig Ram.
I don't know if this helps at all.
Is there anyother info which may help you??
Once again many thanks for your help.
Noel

>Noel,
>
>Ok, I have some test code that works
>
> public CursorTest()
> {
> Connection con = null;
> ResultSet rs;
> try{
> con = getConnection();
> con.setAutoCommit( false );
> Statement stmt = con.createStatement();
>
> int result = stmt.executeUpdate( "declare test cursor for select *
>from orders" );
> System.out.println( "Created cursor, result is " + result );
> result = stmt.executeUpdate( "move 5 in test");
> System.out.println( "Moved " + result );
> for(;;)
> {
> rs = stmt.executeQuery("fetch forward 5 in test");
> if ( !rs.next() )
> break;
> }
>
> while(rs.next()){
> System.out.println("Id -->" + rs.getObject(1).toString());
> }
> rs.close();
> con.commit();
> con.close();
> }catch (Exception ex){
> ex.printStackTrace();
> }finally{
> try{
> if (null != con) con.close();
> }catch(Exception ex){}
> }
> }
>
>note the fetch is actually going to return the result set, so you have
>to do rs=executeQuery( "fetch ..." )
>
>Dave
>On Thu, 2002-12-19 at 19:48, Noel wrote:
>
>
>>Dave,
>>Thanks for taking the time to look at the problem. I tried the
>>stmt.executeUpdate. It also gave the same error.
>>
>>Once again, thanks
>>Noel
>>
>>
>>
>>>Noel,
>>>
>>>Ok, sorry, jdbc is getting in the way here. I haven't got time right
>>>now, so if you can't wait try changing the stmt.execute to
>>>stmt.executeUpdate, and see what happens. I will try to figure it out
>>>later though.
>>>
>>>Dave
>>>On Wed, 2002-12-18 at 23:51, Noel wrote:
>>>
>>>
>>>
>>>
>>>>Hi Dave,
>>>>
>>>>I modified the small program to reflect the statement I performed in psql:
>>>>
>>>>import blastDb.*;
>>>>import java.sql.*;
>>>>import java.io.*;
>>>>import java.util.*;
>>>>import java.lang.*;
>>>>
>>>>public class TestFetchSize
>>>>{
>>>> public static void main(String[] args)
>>>> {
>>>> try
>>>> {
>>>> BlastDB db = new BlastDB();
>>>>
>>>> Statement stmt = db.connection.createStatement();
>>>> int counte = 0;
>>>> stmt.execute("begin work");
>>>> stmt.execute("declare test cursor for select id from region
>>>>where protein_database = 1");
>>>> ResultSet rs;
>>>> System.out.println("here1");
>>>> stmt.execute("move forward 99 in test");
>>>> System.out.println("here2");
>>>> while(stmt.execute("fetch forward 2 in test"))
>>>> {
>>>> rs = stmt.getResultSet();
>>>> if (rs.next())
>>>> {
>>>> ++counte;
>>>> while (rs.next())
>>>> {
>>>> ++counte;
>>>> }
>>>> }
>>>> else
>>>> break;
>>>>
>>>> }
>>>>
>>>> rs = stmt.getResultSet();
>>>> if (rs.next())
>>>> System.out.println("ok");
>>>> else
>>>> System.out.println("NO");
>>>> System.out.println(counte);
>>>> stmt.execute("end work");
>>>> }
>>>> catch (Exception e)
>>>> {
>>>> e.printStackTrace();
>>>> System.out.println(e.getMessage());
>>>> }
>>>> }
>>>>}
>>>>
>>>>This is the out put, the same error as before :(
>>>>here1
>>>>Unable to fathom update count MOVE
>>>> at
>>>>org.postgresql.core.QueryExecutor.receiveCommandStatus(QueryExecutor.java:182)
>>>> at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:80)
>>>> at org.postgresql.Connection.ExecSQL(Connection.java:398)
>>>> at org.postgresql.jdbc2.Statement.execute(Statement.java:130)
>>>> at TestFetchSize.main(TestFetchSize.java:21)
>>>>Unable to fathom update count MOVE
>>>>
>>>>So the programe is not moving beyound the move statement.
>>>>
>>>>Many thanks
>>>>Noel
>>>>
>>>>P.S. Is this sim to the INSERT problem with the sim error message?
>>>>
>>>>
>>>>Dave Cramer wrote:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>Noel,
>>>>>
>>>>>Well, your sql in the driver was fetch forward 2000 in test, does that
>>>>>work?
>>>>>
>>>>>It shouldn't be a driver error, the driver just passes sql through.
>>>>>
>>>>>Dave
>>>>>On Wed, 2002-12-18 at 20:51, Noel Faux wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>Hi Dave,
>>>>>>
>>>>>>It works fine in psql:
>>>>>>blast=# begin;
>>>>>>BEGIN
>>>>>>blast=# declare test cursor for select id from region where
>>>>>>protein_database = 1;
>>>>>>SELECT
>>>>>>blast=# move forward 99 in test;
>>>>>>MOVE
>>>>>>blast=# fetch forward 2 in test;
>>>>>> id
>>>>>>--------
>>>>>>486175
>>>>>>481881
>>>>>>(2 rows)
>>>>>>
>>>>>>Is this a driver error?
>>>>>>Thanks for your reply
>>>>>>Cheers
>>>>>>Noel
>>>>>>
>>>>>>Noel Faux
>>>>>>Department of Biochemistry and Molecluar Biology
>>>>>>Monash University
>>>>>>Clayton 3168
>>>>>>Victoria
>>>>>>Australia
>>>>>>
>>>>>>----- Original Message -----
>>>>>>From: Dave Cramer <Dave(at)micro-automation(dot)net>
>>>>>>Date: Wednesday, December 18, 2002 9:43 pm
>>>>>>Subject: Re: [JDBC] error when using move, any suggestions?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>Noel,
>>>>>>>
>>>>>>>What do you get from the server when you try the same commands in
>>>>>>>psql?
>>>>>>>I just tried it and it works fine?
>>>>>>>
>>>>>>>test=# begin;
>>>>>>>BEGIN
>>>>>>>test=# declare test cursor for select id from address ;
>>>>>>>DECLARE CURSOR
>>>>>>>test=# move forward 99 in test;
>>>>>>>MOVE 1
>>>>>>>test=# fetch forward 2000 in test;
>>>>>>>id
>>>>>>>----
>>>>>>>(0 rows)
>>>>>>>
>>>>>>>Dave
>>>>>>>
>>>>>>>On Wed, 2002-12-18 at 00:30, Noel wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>Hi all,
>>>>>>>>I'm new to postgreSQL.
>>>>>>>>I wrote a little test program to learn how to use fetch and move
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>in
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>postgreSQL.
>>>>>>>>
>>>>>>>>import blastDb.*;
>>>>>>>>import java.sql.*;
>>>>>>>>import java.io.*;
>>>>>>>>import java.util.*;
>>>>>>>>import java.lang.*;
>>>>>>>>
>>>>>>>>public class TestFetchSize
>>>>>>>>{
>>>>>>>> public static void main(String[] args)
>>>>>>>> {
>>>>>>>> try
>>>>>>>> {
>>>>>>>> BlastDB db = new BlastDB();
>>>>>>>>
>>>>>>>> Statement stmt =db.connection.createStatement();
>>>>>>>> int counte = 0;
>>>>>>>> stmt.execute("begin work");
>>>>>>>> stmt.execute("declare test cursor for select id
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>from region where
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>protein_database = 1");
>>>>>>>> ResultSet rs;
>>>>>>>> stmt.execute("move forward 99 in test");
>>>>>>>> while(stmt.execute("fetch forward 2000 in test"))
>>>>>>>> {
>>>>>>>> rs = stmt.getResultSet();
>>>>>>>> if (rs.next())
>>>>>>>> {
>>>>>>>> ++counte;
>>>>>>>> while (rs.next())
>>>>>>>> {
>>>>>>>> ++counte;
>>>>>>>> }
>>>>>>>> }
>>>>>>>> else
>>>>>>>> break;
>>>>>>>>
>>>>>>>> }
>>>>>>>> System.out.println(counte);
>>>>>>>> stmt.execute("end work");
>>>>>>>> }
>>>>>>>> catch (Exception e)
>>>>>>>> {
>>>>>>>> e.printStackTrace();
>>>>>>>> System.out.println(e.getMessage());
>>>>>>>> }
>>>>>>>> }
>>>>>>>>}
>>>>>>>>
>>>>>>>>It compiles ok, however when run i get this message:
>>>>>>>>Unable to fathom update count MOVE
>>>>>>>>at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>org.postgresql.core.QueryExecutor.receiveCommandStatus(QueryExecutor.java:182)>
>>>>>>at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:80)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>>at org.postgresql.Connection.ExecSQL(Connection.java:398)
>>>>>>>>at org.postgresql.jdbc2.Statement.execute(Statement.java:130)
>>>>>>>>at TestFetchSize.main(TestFetchSize.java:25)
>>>>>>>>Unable to fathom update count MOVE
>>>>>>>>
>>>>>>>>I've search the web and the archives, and the only thing close
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>is the
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>thread about a sim problem with INSERT:
>>>>>>>>"Basically the driver was storing the oid in an int. The value
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>you have
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>is overflowing the value allowed for a signed int.
>>>>>>>>
>>>>>>>>thanks,
>>>>>>>>--Barry "
>>>>>>>>
>>>>>>>>Is this the same problem ?
>>>>>>>>Using 7.4 divers with JDBC3 support.
>>>>>>>>
>>>>>>>>Cheers
>>>>>>>>Noel
>>>>>>>>
>>>>>>>>
>>>>>>>>---------------------------(end of broadcast)--------------------
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>-------
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>TIP 4: Don't 'kill -9' the postmaster
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>--
>>>>>>>Dave Cramer <Dave(at)micro-automation(dot)net>
>>>>>>>
>>>>>>>
>>>>>>>---------------------------(end of broadcast)----------------------
>>>>>>>-----
>>>>>>>TIP 2: you can get off all lists at once with the unregister command
>>>>>>> (send "unregister YourEmailAddressHere" to
>>>>>>>majordomo(at)postgresql(dot)org)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>---------------------------(end of broadcast)---------------------------
>>>>>>TIP 6: Have you searched our list archives?
>>>>>>
>>>>>>http://archives.postgresql.org
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2002-12-20 14:36:55 EXECUTE status (was Re: [ODBC] About server side prepare)
Previous Message Hiroshi Inoue 2002-12-20 04:21:59 Re: About server side prepare

Browse pgsql-jdbc by date

  From Date Subject
Next Message J M Okomba 2002-12-20 08:23:49 java.lang.ArrayIndexOutOfBoundsException
Previous Message Dave Cramer 2002-12-20 02:11:05 Re: error when using move, any suggestions?