FAST PostgreSQL wrote: > In CVS HEAD > > workspace=# begin; > BEGIN > workspace=# declare cu cursor for select * from t1 for read only; > DECLARE CURSOR > workspace=# fetch cu; > a > --- > 1 > (1 row) > > workspace=# delete from t1 where current of cu; > DELETE 1 > workspace=# commit; > COMMIT > > Is this the intended behaviour? If so should we remove the 'READ ONLY' > clause from the allowable syntax? > > The documentation does not have 'READ ONLY' as part of the cursor syntax > anymore.
FOR READ ONLY is actually part of the SELECT syntax. It's been accepted for at least down to version 7.4, probably even longer than that, but it hasn't been documented. It's accepted for the sake of compatibility with other DBMSs (and SQL standard?), it doesn't do anything in PostgreSQL. Now, whether we should make an effort to not allow updating a cursor on a query with FOR READ ONLY, that's another question. I don't think it's worth the effort, and it wouldn't really gain us anything. We probably should mention it in the manual, in the Compatibility section of SELECT reference page. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com ---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org