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