Re: I found a bug in the jdbc driver
От | Dave Cramer |
---|---|
Тема | Re: I found a bug in the jdbc driver |
Дата | |
Msg-id | 1053941824.1041.255.camel@inspiron.cramers обсуждение исходный текст |
Ответ на | Re: I found a bug in the jdbc driver (Csaba Nagy <nagy@ecircle-ag.com>) |
Список | pgsql-jdbc |
The new protocol is going to deal with some of these issues. Dave On Mon, 2003-05-26 at 04:42, Csaba Nagy wrote: > 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@libero.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 > > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faqs/FAQ.html > -- Dave Cramer <Dave@micro-automation.net>
В списке pgsql-jdbc по дате отправления: