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

very interesting JDBC problem ...

From: Hans-Jürgen Schönig <postgres(at)cybertec(dot)at>
To: "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: very interesting JDBC problem ...
Date: 2004-03-31 20:31:02
Message-ID: 406B2A86.7000401@cybertec.at (view raw or flat)
Thread:
Lists: pgsql-jdbc
Hi everybody,

I am facing an interesting problem with some JDBC drivers. I am doi9ng 
some fairly simple SQL:


microtec=# UPDATE t_consoleserver SET data = data || '021011014504' 
WHERE procid = '47';
UPDATE 1


My program gives me the following logging information:


[Mar 31, 2004 10:16:01 PM] - 0 - NOTICE: old data in db:
[Mar 31, 2004 10:16:01 PM] - 0 - NOTICE: adding data to buffer: 
(021011014504)
[Mar 31, 2004 10:16:01 PM] - 0 - NOTICE: DSQL: UPDATE t_consoleserver 
SET data = data || '021011014504' WHERE procid = '57'
[Mar 31, 2004 10:16:01 PM] - 0 - NOTICE: cannot update data in database: 
ERROR: invalid message format

The code is fairly simple:


                 Elog.Elog("old data in db: " + this.readOnly());
                 Elog.Elog("adding data to buffer: (" + newdata + ")");

                 try
                 {
                         String dsql = "UPDATE t_consoleserver "
                                 + "SET data = data || '" + newdata
                                 + "' WHERE procid = '" + procid + "' ";
                         Elog.Elog("DSQL: " + dsql);

                         stmt.executeUpdate(dsql);
                 }
                 catch (Exception e)
                 {
                         Elog.Elog("cannot update data in database: "
				+ e.getMessage());
                 }

                 curpos += newdata.length();


The interesting thing here is that I have used the same code with the 
JDBC driver which is included in 7.3. It did not work as well but the 
error message was different. "tail -f postgres_log" told me that only 
half of the query has been transmitted to the server:

UPDATE t_consoleserver SET data = data || '021011014504

The rest has been discarded silently. PostgreSQL complains that there is 
a syntax error or course.
Removing "|| '021011014504' " solved the problem and the entire query 
was transmitted as well.

By the way: "invalid message format" is sent by build 301.
Did anybody encounter similar problem?
I coded SQL statement number 1.0000000000000....000000 in this 
application but the only statement making use of || seems to cause problems.

Did anybody encounter similar problems?

	Regards,

		Hans


-- 
Cybertec Geschwinde u Schoenig
Schoengrabern 134, A-2020 Hollabrunn, Austria
Tel: +43/2952/30706 or +43/664/233 90 75
www.cybertec.at, www.postgresql.at, kernel.cybertec.at


Responses

pgsql-jdbc by date

Next:From: Dave CramerDate: 2004-03-31 21:29:51
Subject: Re: very interesting JDBC problem ...
Previous:From: Jeff AmielDate: 2004-03-31 10:08:39
Subject: Re: what is lslowing me down? JDBC or Postgresql itself?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group