Re: error when using move, any suggestions?

From: Dave Cramer <Dave(at)micro-automation(dot)net>
To: Noel <noel(dot)faux(at)med(dot)monash(dot)edu(dot)au>
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 02:11:05
Message-ID: 1040350264.29320.7.camel@inspiron.cramers
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-jdbc

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
> >>>>
> >>>>
> >>>>
> >>>>
>
--
Dave Cramer <Dave(at)micro-automation(dot)net>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Christopher Kings-Lynne 2002-12-20 02:30:15 Re: alter user problem
Previous Message postgresql 2002-12-20 02:01:58 alter user problem

Browse pgsql-jdbc by date

  From Date Subject
Next Message Noel 2002-12-20 04:35:13 Re: error when using move, any suggestions?
Previous Message Noel 2002-12-20 00:48:15 Re: error when using move, any suggestions?