From: | "EBIHARA, Yuichiro" <ebihara(at)iplocks(dot)co(dot)jp> |
---|---|
To: | <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | how to handle data containing '\0' |
Date: | 2006-05-17 12:01:30 |
Message-ID: | 001f01c679a9$a3627350$360aa8c0@ipljp.local |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
Hi experts,
I need to handle String data containing '\0' in my Java + JDBC program. Such data can happen at other systems and be sent to
PostgreSQL. Here is a sample to simulate it in Java code.
char c = '\0';
String val = "abc" + c + "def";
Now I have to support two versions of drivers, 7.4 and 8.1, but the behavior of driver depends on versions when I insert this String
value.
=== pg74.216.jdbc3.jar ===
java.lang.IllegalArgumentException: \0 not allowed
at org.postgresql.jdbc1.AbstractJdbc1Statement.escapeString(AbstractJdbc1Statement.java:1152)
at org.postgresql.jdbc1.AbstractJdbc1Statement.setString(AbstractJdbc1Statement.java:1133)
at org.postgresql.jdbc1.AbstractJdbc1Statement.setString(AbstractJdbc1Statement.java:1116)
at Bug5391.main(Bug5391.java:24)
=== postgresql-8.1-405.jdbc3.jar ===
Successfully finished without exception but the string is truncated at '\0' and only the first three characters, "abc", is inserted.
(I verified this with psql on the server side)
I understand the current protocol does not allow '\0' in String and basically I should remove '\0' before I try to insert but I and
team members may forget it somewhere. I'm feeling the 8.1 behavior is worse than 7.4 because user data is truncated without notice.
For the sample above, I expect "abcdef" rather than "abc".
What do you think about this?
My idea is to introduce new connection parameter to determine how to behave against '\0'.
Options may be
- throws an exception
- truncates at '\0'
- removes '\0'
Thanks,
ebi
From | Date | Subject | |
---|---|---|---|
Next Message | Marc Herbert | 2006-05-17 13:13:03 | Re: how to handle data containing '\0' |
Previous Message | Oliver Jowett | 2006-05-17 10:06:30 | Re: jdbc driver problem? |