>>>>>>>>>>>> Daniel John Debrunner wrote (2005-11-03 19:17:58):
> Thanks for the useful infomation, but how are you inferring those cursor
> context attributes from the JDBC ResultSet being read-only?

I consider e.g. the prepareStatement/executeQuery combination to be
the JDBC equivalent to the SQL/Language (ISO/IEC 9075-5) prepare
statement/declare cursor combination.

Thus when you in JDBC writes

PreparedStatement p = c.prepareStatement("SELECT * FROM T");
ResultSet rs = p.executeQuery();

it is equivalent to

PreparedStatement p = c.prepareStatement("SELECT * FROM T", 
                                         ResultSet.TYPE_FORWARD_ONLY,
                                         ResultSet.CONCUR_READ_ONLY);
ResultSet rs = p.executeQuery();

which again should be equivalent something like

PREPARE p FROM SELECT * FROM T FOR READ ONLY;
DECLARE rs NO SCROLL CURSOR FOR p;

BUT: Your concern about legacy is of course very important (I did not
do any JDBC work prior to 2.0, and then for a database which do not
support updatable cursors.)

Anyway, I always thought that the semantic relation between the JDBC
spec and the SQL standard were far to vague. 

> [...]
>
> The patch can probably proceed without this being resolved, 

Yes, the patch should proceed, but with a proper comment.

> but it would be good to come to clear agreement on if SELECT * FROM
> T can be updated with a positioned update/delete and a read-only
> ResultSet. (Even if Derby doesn't support it today, it would be nice
> to know or not if it is meant to be supported).

It definitely would mean lower performance due to locking issues.

-- 
Bernt Marius Johnsen, Database Technology Group, 
Sun Microsystems, Trondheim, Norway

Attachment: pgp6UhUISlEAj.pgp
Description: PGP signature

Reply via email to