Re: very interesting JDBC problem ... - Mailing list pgsql-jdbc
From | Hans-Jürgen Schönig |
---|---|
Subject | Re: very interesting JDBC problem ... |
Date | |
Msg-id | 406B3F19.4010000@cybertec.at Whole thread Raw |
In response to | very interesting JDBC problem ... (Hans-Jürgen Schönig <postgres@cybertec.at>) |
List | pgsql-jdbc |
Dave Cramer wrote: > What do the logs from postgres show ? > > Dave Hi Dave, In case of the old JDBC driver they show me an incomplete SQL statement followed by a syntax error. In case of build 301 it tells me "ERROR: invalid message format" I have checked the source code of PostgreSQL briefly - it seems to be a protocol problem: /* -------------------------------- * pq_getmsgend - verify message fully consumed * -------------------------------- */ void pq_getmsgend(StringInfo msg) { if (msg->cursor != msg->len) ereport(ERROR, (errcode(ERRCODE_PROTOCOL_VIOLATION), errmsg("invalid message format"))); } "backend/libpq/pqformat.c" 688L, 18526C I haven't found this message anywhere else. Regards, Hans > On Wed, 2004-03-31 at 15:31, Hans-Jürgen Schönig wrote: > >>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
pgsql-jdbc by date: