Re: " for read only" clause appended for safety when UseDeclareFetch=1 breaks some sql statements with trailing semicolons
Hi Jack,
Jack Wilson wrote:
I've found the change made in version psqlodbc 8.2.0501 and later
(reference:
http://archives.postgresql.org/pgsql-committers/2007-10/msg00420.php)
4. Be more careful about <for locking clause> in UseDeclareFetch mode.
Add missing? "for read only" clause for read only queries for 8.3
or later servers for safety.
Here is a cvs link to the actual code change:
http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/psqlodbc/psqlodbc/convert.c.diff?r1=1.163&r2=1.164
This change breaks existing code that sends a single sql statement with
a trailing semicolon. What happens is the odbc driver sees
UseDeclareFetch=1 and for sql statements appends " for read only" at the
end of the statement. This is fine except for the situation where the
statement has a trailing semicolon. In that case the statement ends up
being (say) "select blah blah; for read only", which gives a syntax
error like:
ERROR: syntax error at or near "for"
SQL state: 42601
Setting UseDeclareFetch=0 fixes the problem, or using psqlodbc 8.2.0500
or earlier, or using PostgreSQL 8.2.6--any one of these prevents the "
for read only" from being appended to the end of the sql statement.
Oops my fault.
Unfortunately I'm very busy and please wait for a while.
regards,
Hiroshi Inoue
Home |
Main Index |
Thread Index