pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Grant Finnemore <gaf@ucs.co.za>
To: Christopher Farley <chris@northernbrewer.com>
Cc: pgsql-interfaces@postgresql.org
Cc: petermount@maidstone.gov.uk
Subject: Re: JDBC 'Unterminated quoted string'
Date: Thu, 09 Nov 2000 11:06:07 +0200
Message-ID: <3A0A68FF.35ACA12C@ucs.co.za> (raw)
References: <Pine.BSF.4.21.0011090039520.40209-100000@kraeusen.nbrewer.com>

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@ucs.co.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





view thread (14+ messages)  latest in thread

Message-ID: <3A0A68FF.35ACA12C@ucs.co.za>
Permalink:  ../3A0A68FF.35ACA12C@ucs.co.za/
Also on:    postgresql.org/message-id/3A0A68FF.35ACA12C@ucs.co.za

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-interfaces@postgresql.org
  Cc: gaf@ucs.co.za, chris@northernbrewer.com, petermount@maidstone.gov.uk
  Subject: Re: JDBC 'Unterminated quoted string'
  In-Reply-To: <3A0A68FF.35ACA12C@ucs.co.za>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox