This is a multipart message in MIME format.
--=_alternative 005F978985257403_=
Content-Type: text/plain; charset="US-ASCII"
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.
The quick fix was to remove the trailing semicolons in my code, but a
better fix would be to make the parser smart enough to put the " for read
only" clause in front of an existing semicolon, not after it.
Thanks...jack
--
********************************************
Who: L Jack Wilson
Where: ljwilson@[EMAIL PROTECTED]
Remove Capital Letters from above for a valid email address
Why: Standard Disclaimer fits nicely here.
--=_alternative 005F978985257403_=
Content-Type: text/html; charset="US-ASCII"
<br><font size=2 face="sans-serif">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)<br>
</font>
<br><font size=2 face="sans-serif">4. Be more careful about <for
locking
clause> in UseDeclareFetch mode.<br>
Add missing? "for read only" clause for read only
queries
for 8.3<br>
or later servers for safety.</font>
<br>
<br><font size=2 face="sans-serif">Here is a cvs link to the actual code
change:</font>
<br><font size=2
face="sans-serif">http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/psqlodbc/psqlodbc/convert.c.diff?r1=1.163&r2=1.164</font>
<br>
<br><font size=2 face="sans-serif">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:</font>
<br>
<br><font size=2 face="sans-serif">ERROR: syntax error at or near
"for"</font>
<br><font size=2 face="sans-serif">SQL state: 42601</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">The quick fix was to remove the
trailing
semicolons in my code, but a better fix would be to make the parser smart
enough to put the " for read only" clause in front of an
existing
semicolon, not after it.</font>
<br>
<br><font size=2 face="sans-serif">Thanks...jack</font>
<br><font size=2 face="sans-serif">-- </font>
<br><font size=2
face="sans-serif">********************************************</font>
<br><font size=2 face="sans-serif">Who: L Jack Wilson</font>
<br><font size=2 face="sans-serif">Where:
ljwilson@[EMAIL PROTECTED]
>
<br><font size=2 face="sans-serif">How: Remove Capital
Letters
from above for a valid email address</font>
<br><font size=2 face="sans-serif">Why: Standard Disclaimer
fits nicely here.</font>
--=_alternative 005F978985257403_=--


|