Re: I found a bug in the jdbc driver

From: Csaba Nagy <nagy(at)ecircle-ag(dot)com>
To: "innuendo-nh(at)libero(dot)it" <innuendo-nh(at)libero(dot)it>
Cc: pgsql-jdbc <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: I found a bug in the jdbc driver
Date: 2003-05-26 08:42:18
Message-ID: 1053938539.923.7.camel@coppola.ecircle.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hi all,

Is the semicolon legal in SQL statements passed to the JDBC API ?
I'm asking this because I've had problems with semicolons with other
drivers too (e.g. Oracle).
OTOH, for the given problem, my opinion is that the driver should use
some meta data passed back from the server after the server executes the
query to find out what tables/fields were used (makes no sense to write
a JDBC-side parser, too high risk of getting out of sync against the
server's parser). I guess this is not supported by the current
communication protocol, but my point is to push this as a real solution.

Cheers,
Csaba.

On Thu, 2003-05-22 at 15:57, innuendo-nh(at)libero(dot)it wrote:
> I have just found a bug in the latest jdbc driver.
>
> The error is in the class org.postgresql.jdbc2.AbstractJdbc2ResultSet
>
> the method parseQuery() has a bug:
>
> if you give as sql query something like "SELECT * FROM tablename;", that is a
> valid sql statement, and you try to use a resultset update method (like
> updateInt()), you receive an SQLException saying: No Primary Keys. this is
> because the method parseQuery() make a too simplified use of the
> StringTokenizer, so the variable tableName is set at something like this:
> "tablename;". So when the isUpdateable() method request for the primary keys of
> the table 'tablename;', postgres answers there are no rows (it can't fond any
> primary key for the table because it doesn't exists). The problem can be
> resolved writing the sql statement very carefully: you must insert blanks
> between any part of the sql statement (operators, keywords, ecc.). In my example
> the solution is to insert a blank before the semicolon ("SELECT * FROM tablename
> ;").
>
> I think i can resolve the problem, modifying the driver, but i wuold be glad to
> know if someone else is already working at it now.
>
> I hope this can be useful.
>
> Inny.
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2003-05-26 09:37:04 Re: I found a bug in the jdbc driver
Previous Message Kris Jurka 2003-05-26 07:40:59 Re: I found a bug in the jdbc driver