Re: JDBC 'Unterminated quoted string'

From: Grant Finnemore <gaf(at)ucs(dot)co(dot)za>
To: Christopher Farley <chris(at)northernbrewer(dot)com>
Cc: pgsql-interfaces(at)postgresql(dot)org, petermount(at)maidstone(dot)gov(dot)uk
Subject: Re: JDBC 'Unterminated quoted string'
Date: 2000-11-09 09:06:07
Message-ID: 3A0A68FF.35ACA12C@ucs.co.za
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

Christopher,

A patch for the postgresql driver - class PreparedStatement.java in both jdbc1 and
jdbc2.

274,285c274
<
< /* If the string contains a null zero, when it reaches the
< * backend, the C routines to manipulate a string will
< * assume that the string is finished at this point. This
< * will result in an 'Unterminated string constant' error
< * from the backend. Hence, before inserting the character,
< * check if it is a null zero, and if so, escape it.
< */
< if (c != '\0')
< b.append(c);
< else
< b.append("\\0");
---
> b.append(c);

Regards,
Grant

Christopher Farley wrote:

> If you setString(1,null), it does work.
>
> I am actually doing a setString(1,String.valueOf('\0')), which causes the
> unterminated string error.
>
> Although this didn't fail under the previous RDBMS (PervasiveSQL), I
> have considered that setting a Java char to '\0' is just bad programming
> practice. However:
>
> - Both Postgresql and Java evaluate '\0' as ''.
>
> - You can't set a Java char to ''.
>
> - Many people have a need to map chars to a RDBMS
>
> So it seems reasonable to me that the JDBC driver should escape NULL chars
> as '\\0' rather than pass the character unparsed where it will be treated
> as a NUL terminator when it appears in a C string.
>
> Damn these primitive types in Java!
>
> ----
> Christopher Farley
> Northern Brewer / 1150 Grand Avenue / St. Paul, MN 55105
> www.northernbrewer.com
>
> On Thu, 9 Nov 2000, Grant Finnemore wrote:
>

--
> Poorly planned software requires a genius to write it
> and a hero to use it.

Grant Finnemore BSc(Eng) (mailto:gaf(at)ucs(dot)co(dot)za)
Software Engineer Universal Computer Services
Tel (+27)(11)712-1366 PO Box 31266 Braamfontein 2017, South Africa
Cell (+27)(82)604-5536 20th Floor, 209 Smit St., Braamfontein
Fax (+27)(11)339-3421 Johannesburg, South Africa

In response to

Browse pgsql-interfaces by date

  From Date Subject
Next Message Phil Davey 2000-11-09 12:15:07 Re: Access 2000 and empty fields
Previous Message wengsoon79 2000-11-09 08:09:18 installation