Thread: PreparedStatement.executeBatch() error? 7.3

PreparedStatement.executeBatch() error? 7.3

From
Jeremiah Jahn
Date:
The following code doesn't work, but if in place of doing an addBatch
loop with an executeBatch(), I do an executeUpdate each time it does
work. I get a parse error from the db server:

ERROR:  parser: parse error at or near "'1998CF43'" at character 4202

this corresponds to the first value. I'm using the jdbc3 jar for this.

 PreparedStatement pStatement = connection.prepareStatement("insert into case_data_store values (?,?,?,?)");
        ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);

        for (int current_chunk = 0; current_chunk < chunk_count; current_chunk++){

        pStatement.setString(1,values.get("CASENUMBER").toString());
        pStatement.setString(2,values.get("NCIC").toString());
        pStatement.setInt(3,current_chunk);
        pStatement.setBytes(4,baos.toByteArray());
        pStatement.addBatch();
        //pStatement.executeUpdate();

        }

        pStatement.executeBatch();



This is the stack trace:
java.lang.ArrayIndexOutOfBoundsException: 1
        at
org.postgresql.core.QueryExecutor.sendQuery(QueryExecutor.java:143)
        at
org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:65)
        at
org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Connection.java:451)
        at
org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:281)
        at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:48)
        at
org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:179)
        at
org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:165)
        at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:80)


--
Jeremiah Jahn <jeremiah@cs.earlham.edu>


Re: PreparedStatement.executeBatch() error? 7.3

From
Kris Jurka
Date:
I've been unable to reproduce this with the current 7.3 driver and the
following code.  You will need to provide a some more detail if you're
still experiencing this problem.

Kris Jurka

import java.sql.*;

public class BatchPstmt {

        // CREATE TABLE batchstmt(a text, b varchar(50), c int, d bytea);

        public static void main(String args[]) throws Exception {
                Class.forName("org.postgresql.Driver");
                Connection conn =
DriverManager.getConnection("jdbc:postgresql://localhost:5432/jurka","jurka","");
                PreparedStatement pstmt = conn.prepareStatement("insert into batchpstmt values (?,?,?,?)");
                byte bytes[] = new byte[0];
                for (int i=0; i<5; i++) {
                        pstmt.setString(1,"CASENUMBER");
                        pstmt.setString(2,"NCIC");
                        pstmt.setInt(3,i);
                        pstmt.setBytes(4,bytes);
                        pstmt.addBatch();
                }
                pstmt.executeBatch();
                pstmt.close();
                conn.close();
        }
}

On 7 Feb 2003, Jeremiah Jahn wrote:

> The following code doesn't work, but if in place of doing an addBatch
> loop with an executeBatch(), I do an executeUpdate each time it does
> work. I get a parse error from the db server:
>
> ERROR:  parser: parse error at or near "'1998CF43'" at character 4202
>
> this corresponds to the first value. I'm using the jdbc3 jar for this.
>
>  PreparedStatement pStatement = connection.prepareStatement("insert into case_data_store values (?,?,?,?)");
>         ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
>
>         for (int current_chunk = 0; current_chunk < chunk_count; current_chunk++){
>
>         pStatement.setString(1,values.get("CASENUMBER").toString());
>         pStatement.setString(2,values.get("NCIC").toString());
>         pStatement.setInt(3,current_chunk);
>         pStatement.setBytes(4,baos.toByteArray());
>         pStatement.addBatch();
>         //pStatement.executeUpdate();
>
>         }
>
>         pStatement.executeBatch();
>
>
>
> This is the stack trace:
> java.lang.ArrayIndexOutOfBoundsException: 1
>         at
> org.postgresql.core.QueryExecutor.sendQuery(QueryExecutor.java:143)
>         at
> org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:65)
>         at
> org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Connection.java:451)
>         at
> org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:281)
>         at
> org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:48)
>         at
> org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:179)
>         at
> org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:165)
>         at
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:80)
>
>
> --
> Jeremiah Jahn <jeremiah@cs.earlham.edu>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>


Re: PreparedStatement.executeBatch() error? 7.3

From
Barry Lind
Date:
Jeremiah,

I am a bit confused.  You mention two different errors in your email the
  "ERROR:  parser:...." and the stack trace.  Do both get produced at
the same time, or are they happening at different times?

Also the parse error looks like an error coming from the database.  Can
you turn on query logging on the server to see the text of the statement
that the error is occuring in?  That should provide a clue as to why the
sql statement is invalid.

To log the sql statements on the server you want to set the parameter
log_statement=true in your postgresql.conf file.  Also it might help to
turn on debug logging in the jdbc driver.  Can you add ?loglevel=2 to
the jdbc connection url?  (both of the above suggestions are for 7.3,
the details on doing this on 7.2 are a bit different).

thanks,
--Barry


Jeremiah Jahn wrote:
> The following code doesn't work, but if in place of doing an addBatch
> loop with an executeBatch(), I do an executeUpdate each time it does
> work. I get a parse error from the db server:
>
> ERROR:  parser: parse error at or near "'1998CF43'" at character 4202
>
> this corresponds to the first value. I'm using the jdbc3 jar for this.
>
>  PreparedStatement pStatement = connection.prepareStatement("insert into case_data_store values (?,?,?,?)");
>         ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
>
>         for (int current_chunk = 0; current_chunk < chunk_count; current_chunk++){
>
>         pStatement.setString(1,values.get("CASENUMBER").toString());
>         pStatement.setString(2,values.get("NCIC").toString());
>         pStatement.setInt(3,current_chunk);
>         pStatement.setBytes(4,baos.toByteArray());
>         pStatement.addBatch();
>         //pStatement.executeUpdate();
>
>         }
>
>         pStatement.executeBatch();
>
>
>
> This is the stack trace:
> java.lang.ArrayIndexOutOfBoundsException: 1
>         at
> org.postgresql.core.QueryExecutor.sendQuery(QueryExecutor.java:143)
>         at
> org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:65)
>         at
> org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Connection.java:451)
>         at
> org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:281)
>         at
> org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:48)
>         at
> org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:179)
>         at
> org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:165)
>         at
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:80)
>
>




Re: PreparedStatement.executeBatch() error? 7.3

From
Jeremiah Jahn
Date:
Here are the results of the log level set to 2. There seems to be a
little extra data stuck on the end of the batch version.


 Establishing connection...PostgreSQL 7.3b1 JDBC3 jdbc driver build 104
LOG:  query: set datestyle to 'ISO'; select version(), case when pg_encoding_to_char(1) = 'SQL_ASCII' then 'UNKNOWN'
elsegetdatabaseencoding() end; 
getConnection returning driver[className=org.postgresql.Driver,org.postgresql.Driver@5dd582]
done
LOG:  query: begin;
LOG:  query: delete from actor where case_id = '1998CF46' and court_ori = 'IL078015J'
...
LOG:  query: insert into case_data (case_id,court_ori,extraction_datetime,update_date) values
('1998CF46','IL078015J','20030210T092429','1901/01/01')
java.lang.ArrayIndexOutOfBoundsException: 1
        at org.postgresql.core.QueryExecutor.sendQuery(QueryExecutor.java:143)
        at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:65)
        at org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Connection.java:451)
        at org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:281)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:48)
        at org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:179)
        at org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:165)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:80)
        at com.goodinassociates.judici.importer.judici.DOXImporter.importDoc(Unknown Source)
        at com.goodinassociates.judici.importer.judici.ImportServer$Client.run(ImportServer.java:482)
LOG:  query: insert into case_data_store values ('1998CF46','IL078015J',0,'\\254\\355\\000\\005t\\001\\245<?xml
version="1.0"encoding="UTF-8"?>\\015\\012<!DOCTYPE CourtDataTransferFile>\\015\\012<CourtDataTransferFile
FileCreationDateTime="20030210T092429"Version="1"><Provider ProducerID="translation" ID="GAL" /><Court
NCIC="IL078015J"><CaseNumber="1998CF46" Action="Delete" ModificationType="None" LastUpdateDate="1901/01/01" TypeCode=""
SubtypeCode=""TypeSubtypeText="" Year="" Title="" Category=""
/></Court></CourtDataTransferFile>\\015\\012')'1998CF46'Qrollback;begin; 
ERROR:  parser: parse error at or near "'1998CF46'" at character 541

the last line looks like this in the non-batch version:
LOG:  query: insert into case_data_store values ('1998CF47','IL078015J',0,'\\254\\355\\000\\005t\\001\\245<?xml
version="1.0"encoding="UTF-8"?>\\015\\012<!DOCTYPE CourtDataTransferFile>\\015\\012<CourtDataTransferFile
FileCreationDateTime="20030210T093214"Version="1"><Provider ProducerID="translation" ID="GAL" /><Court
NCIC="IL078015J"><CaseNumber="1998CF47" Action="Delete" ModificationType="None" LastUpdateDate="1901/01/01" TypeCode=""
SubtypeCode=""TypeSubtypeText="" Year="" Title="" Category="" /></Court></CourtDataTransferFile>\\015\\012') 

There is no '1998CF46' stuff tagged on the end of it.



On Fri, 2003-02-07 at 21:34, Barry Lind wrote:
> Jeremiah,
>
> I am a bit confused.  You mention two different errors in your email the
>   "ERROR:  parser:...." and the stack trace.  Do both get produced at
> the same time, or are they happening at different times?
>
> Also the parse error looks like an error coming from the database.  Can
> you turn on query logging on the server to see the text of the statement
> that the error is occuring in?  That should provide a clue as to why the
> sql statement is invalid.
>
> To log the sql statements on the server you want to set the parameter
> log_statement=true in your postgresql.conf file.  Also it might help to
> turn on debug logging in the jdbc driver.  Can you add ?loglevel=2 to
> the jdbc connection url?  (both of the above suggestions are for 7.3,
> the details on doing this on 7.2 are a bit different).
>
> thanks,
> --Barry
>
>
> Jeremiah Jahn wrote:
> > The following code doesn't work, but if in place of doing an addBatch
> > loop with an executeBatch(), I do an executeUpdate each time it does
> > work. I get a parse error from the db server:
> >
> > ERROR:  parser: parse error at or near "'1998CF43'" at character 4202
> >
> > this corresponds to the first value. I'm using the jdbc3 jar for this.
> >
> >  PreparedStatement pStatement = connection.prepareStatement("insert into case_data_store values (?,?,?,?)");
> >         ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
> >
> >         for (int current_chunk = 0; current_chunk < chunk_count; current_chunk++){
> >
> >         pStatement.setString(1,values.get("CASENUMBER").toString());
> >         pStatement.setString(2,values.get("NCIC").toString());
> >         pStatement.setInt(3,current_chunk);
> >         pStatement.setBytes(4,baos.toByteArray());
> >         pStatement.addBatch();
> >         //pStatement.executeUpdate();
> >
> >         }
> >
> >         pStatement.executeBatch();
> >
> >
> >
> > This is the stack trace:
> > java.lang.ArrayIndexOutOfBoundsException: 1
> >         at
> > org.postgresql.core.QueryExecutor.sendQuery(QueryExecutor.java:143)
> >         at
> > org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:65)
> >         at
> > org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Connection.java:451)
> >         at
> > org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:281)
> >         at
> > org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:48)
> >         at
> > org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:179)
> >         at
> > org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:165)
> >         at
> > org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:80)
> >
> >
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
--
Jeremiah Jahn <jeremiah@cs.earlham.edu>


Re: PreparedStatement.executeBatch() error? 7.3

From
Barry Lind
Date:
Jeremiah,

This shows that you are using the beta1 driver.  Can you download the
latest 7.3 driver from jdbc.postgresql.org and try it, and send it's logs?

thanks,
--Barry


Jeremiah Jahn wrote:
> Here are the results of the log level set to 2. There seems to be a
> little extra data stuck on the end of the batch version.
>
>
>  Establishing connection...PostgreSQL 7.3b1 JDBC3 jdbc driver build 104
> LOG:  query: set datestyle to 'ISO'; select version(), case when pg_encoding_to_char(1) = 'SQL_ASCII' then 'UNKNOWN'
elsegetdatabaseencoding() end; 
> getConnection returning driver[className=org.postgresql.Driver,org.postgresql.Driver@5dd582]
> done
> LOG:  query: begin;
> LOG:  query: delete from actor where case_id = '1998CF46' and court_ori = 'IL078015J'
> ...
> LOG:  query: insert into case_data (case_id,court_ori,extraction_datetime,update_date) values
('1998CF46','IL078015J','20030210T092429','1901/01/01')
> java.lang.ArrayIndexOutOfBoundsException: 1
>         at org.postgresql.core.QueryExecutor.sendQuery(QueryExecutor.java:143)
>         at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:65)
>         at org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Connection.java:451)
>         at org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:281)
>         at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:48)
>         at org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:179)
>         at org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:165)
>         at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:80)
>         at com.goodinassociates.judici.importer.judici.DOXImporter.importDoc(Unknown Source)
>         at com.goodinassociates.judici.importer.judici.ImportServer$Client.run(ImportServer.java:482)
> LOG:  query: insert into case_data_store values ('1998CF46','IL078015J',0,'\\254\\355\\000\\005t\\001\\245<?xml
version="1.0"encoding="UTF-8"?>\\015\\012<!DOCTYPE CourtDataTransferFile>\\015\\012<CourtDataTransferFile
FileCreationDateTime="20030210T092429"Version="1"><Provider ProducerID="translation" ID="GAL" /><Court
NCIC="IL078015J"><CaseNumber="1998CF46" Action="Delete" ModificationType="None" LastUpdateDate="1901/01/01" TypeCode=""
SubtypeCode=""TypeSubtypeText="" Year="" Title="" Category=""
/></Court></CourtDataTransferFile>\\015\\012')'1998CF46'Qrollback;begin; 
> ERROR:  parser: parse error at or near "'1998CF46'" at character 541
>
> the last line looks like this in the non-batch version:
> LOG:  query: insert into case_data_store values ('1998CF47','IL078015J',0,'\\254\\355\\000\\005t\\001\\245<?xml
version="1.0"encoding="UTF-8"?>\\015\\012<!DOCTYPE CourtDataTransferFile>\\015\\012<CourtDataTransferFile
FileCreationDateTime="20030210T093214"Version="1"><Provider ProducerID="translation" ID="GAL" /><Court
NCIC="IL078015J"><CaseNumber="1998CF47" Action="Delete" ModificationType="None" LastUpdateDate="1901/01/01" TypeCode=""
SubtypeCode=""TypeSubtypeText="" Year="" Title="" Category="" /></Court></CourtDataTransferFile>\\015\\012') 
>
> There is no '1998CF46' stuff tagged on the end of it.
>
>
>
> On Fri, 2003-02-07 at 21:34, Barry Lind wrote:
>
>>Jeremiah,
>>
>>I am a bit confused.  You mention two different errors in your email the
>>  "ERROR:  parser:...." and the stack trace.  Do both get produced at
>>the same time, or are they happening at different times?
>>
>>Also the parse error looks like an error coming from the database.  Can
>>you turn on query logging on the server to see the text of the statement
>>that the error is occuring in?  That should provide a clue as to why the
>>sql statement is invalid.
>>
>>To log the sql statements on the server you want to set the parameter
>>log_statement=true in your postgresql.conf file.  Also it might help to
>>turn on debug logging in the jdbc driver.  Can you add ?loglevel=2 to
>>the jdbc connection url?  (both of the above suggestions are for 7.3,
>>the details on doing this on 7.2 are a bit different).
>>
>>thanks,
>>--Barry
>>
>>
>>Jeremiah Jahn wrote:
>>
>>>The following code doesn't work, but if in place of doing an addBatch
>>>loop with an executeBatch(), I do an executeUpdate each time it does
>>>work. I get a parse error from the db server:
>>>
>>>ERROR:  parser: parse error at or near "'1998CF43'" at character 4202
>>>
>>>this corresponds to the first value. I'm using the jdbc3 jar for this.
>>>
>>> PreparedStatement pStatement = connection.prepareStatement("insert into case_data_store values (?,?,?,?)");
>>>        ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
>>>
>>>        for (int current_chunk = 0; current_chunk < chunk_count; current_chunk++){
>>>
>>>        pStatement.setString(1,values.get("CASENUMBER").toString());
>>>        pStatement.setString(2,values.get("NCIC").toString());
>>>        pStatement.setInt(3,current_chunk);
>>>        pStatement.setBytes(4,baos.toByteArray());
>>>        pStatement.addBatch();
>>>        //pStatement.executeUpdate();
>>>
>>>        }
>>>
>>>        pStatement.executeBatch();
>>>
>>>
>>>
>>>This is the stack trace:
>>>java.lang.ArrayIndexOutOfBoundsException: 1
>>>        at
>>>org.postgresql.core.QueryExecutor.sendQuery(QueryExecutor.java:143)
>>>        at
>>>org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:65)
>>>        at
>>>org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Connection.java:451)
>>>        at
>>>org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:281)
>>>        at
>>>org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:48)
>>>        at
>>>org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:179)
>>>        at
>>>org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:165)
>>>        at
>>>org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:80)
>>>
>>>
>>
>>
>>
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org




Re: PreparedStatement.executeBatch() error? 7.3

From
Jeremiah Jahn
Date:
that seems to have fixed it...the non-beta version..That's what came
down with CVS at the 7.3 release. It alos seems to have fixed the error
I was getting about not enough memory when the data was over 1meg in
size. Still takes forever to process it, but hey..

thanx,
-jj-

On Mon, 2003-02-10 at 10:53, Barry Lind wrote:
> Jeremiah,
>
> This shows that you are using the beta1 driver.  Can you download the
> latest 7.3 driver from jdbc.postgresql.org and try it, and send it's logs?
>
> thanks,
> --Barry
>
>
> Jeremiah Jahn wrote:
> > Here are the results of the log level set to 2. There seems to be a
> > little extra data stuck on the end of the batch version.
> >
> >
> >  Establishing connection...PostgreSQL 7.3b1 JDBC3 jdbc driver build 104
> > LOG:  query: set datestyle to 'ISO'; select version(), case when pg_encoding_to_char(1) = 'SQL_ASCII' then
'UNKNOWN'else getdatabaseencoding() end; 
> > getConnection returning driver[className=org.postgresql.Driver,org.postgresql.Driver@5dd582]
> > done
> > LOG:  query: begin;
> > LOG:  query: delete from actor where case_id = '1998CF46' and court_ori = 'IL078015J'
> > ...
> > LOG:  query: insert into case_data (case_id,court_ori,extraction_datetime,update_date) values
('1998CF46','IL078015J','20030210T092429','1901/01/01')
> > java.lang.ArrayIndexOutOfBoundsException: 1
> >         at org.postgresql.core.QueryExecutor.sendQuery(QueryExecutor.java:143)
> >         at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:65)
> >         at org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Connection.java:451)
> >         at org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:281)
> >         at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:48)
> >         at org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:179)
> >         at org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:165)
> >         at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:80)
> >         at com.goodinassociates.judici.importer.judici.DOXImporter.importDoc(Unknown Source)
> >         at com.goodinassociates.judici.importer.judici.ImportServer$Client.run(ImportServer.java:482)
> > LOG:  query: insert into case_data_store values ('1998CF46','IL078015J',0,'\\254\\355\\000\\005t\\001\\245<?xml
version="1.0"encoding="UTF-8"?>\\015\\012<!DOCTYPE CourtDataTransferFile>\\015\\012<CourtDataTransferFile
FileCreationDateTime="20030210T092429"Version="1"><Provider ProducerID="translation" ID="GAL" /><Court
NCIC="IL078015J"><CaseNumber="1998CF46" Action="Delete" ModificationType="None" LastUpdateDate="1901/01/01" TypeCode=""
SubtypeCode=""TypeSubtypeText="" Year="" Title="" Category=""
/></Court></CourtDataTransferFile>\\015\\012')'1998CF46'Qrollback;begin; 
> > ERROR:  parser: parse error at or near "'1998CF46'" at character 541
> >
> > the last line looks like this in the non-batch version:
> > LOG:  query: insert into case_data_store values ('1998CF47','IL078015J',0,'\\254\\355\\000\\005t\\001\\245<?xml
version="1.0"encoding="UTF-8"?>\\015\\012<!DOCTYPE CourtDataTransferFile>\\015\\012<CourtDataTransferFile
FileCreationDateTime="20030210T093214"Version="1"><Provider ProducerID="translation" ID="GAL" /><Court
NCIC="IL078015J"><CaseNumber="1998CF47" Action="Delete" ModificationType="None" LastUpdateDate="1901/01/01" TypeCode=""
SubtypeCode=""TypeSubtypeText="" Year="" Title="" Category="" /></Court></CourtDataTransferFile>\\015\\012') 
> >
> > There is no '1998CF46' stuff tagged on the end of it.
> >
> >
> >
> > On Fri, 2003-02-07 at 21:34, Barry Lind wrote:
> >
> >>Jeremiah,
> >>
> >>I am a bit confused.  You mention two different errors in your email the
> >>  "ERROR:  parser:...." and the stack trace.  Do both get produced at
> >>the same time, or are they happening at different times?
> >>
> >>Also the parse error looks like an error coming from the database.  Can
> >>you turn on query logging on the server to see the text of the statement
> >>that the error is occuring in?  That should provide a clue as to why the
> >>sql statement is invalid.
> >>
> >>To log the sql statements on the server you want to set the parameter
> >>log_statement=true in your postgresql.conf file.  Also it might help to
> >>turn on debug logging in the jdbc driver.  Can you add ?loglevel=2 to
> >>the jdbc connection url?  (both of the above suggestions are for 7.3,
> >>the details on doing this on 7.2 are a bit different).
> >>
> >>thanks,
> >>--Barry
> >>
> >>
> >>Jeremiah Jahn wrote:
> >>
> >>>The following code doesn't work, but if in place of doing an addBatch
> >>>loop with an executeBatch(), I do an executeUpdate each time it does
> >>>work. I get a parse error from the db server:
> >>>
> >>>ERROR:  parser: parse error at or near "'1998CF43'" at character 4202
> >>>
> >>>this corresponds to the first value. I'm using the jdbc3 jar for this.
> >>>
> >>> PreparedStatement pStatement = connection.prepareStatement("insert into case_data_store values (?,?,?,?)");
> >>>        ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
> >>>
> >>>        for (int current_chunk = 0; current_chunk < chunk_count; current_chunk++){
> >>>
> >>>        pStatement.setString(1,values.get("CASENUMBER").toString());
> >>>        pStatement.setString(2,values.get("NCIC").toString());
> >>>        pStatement.setInt(3,current_chunk);
> >>>        pStatement.setBytes(4,baos.toByteArray());
> >>>        pStatement.addBatch();
> >>>        //pStatement.executeUpdate();
> >>>
> >>>        }
> >>>
> >>>        pStatement.executeBatch();
> >>>
> >>>
> >>>
> >>>This is the stack trace:
> >>>java.lang.ArrayIndexOutOfBoundsException: 1
> >>>        at
> >>>org.postgresql.core.QueryExecutor.sendQuery(QueryExecutor.java:143)
> >>>        at
> >>>org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:65)
> >>>        at
> >>>org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Connection.java:451)
> >>>        at
> >>>org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:281)
> >>>        at
> >>>org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:48)
> >>>        at
> >>>org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:179)
> >>>        at
> >>>org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:165)
> >>>        at
> >>>org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:80)
> >>>
> >>>
> >>
> >>
> >>
> >>
> >>---------------------------(end of broadcast)---------------------------
> >>TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
--
Jeremiah Jahn <jeremiah@cs.earlham.edu>