All,

Firebird v3 supports scrollable cursors in PSQL and I'm going to surface 
them at the DSQL level as well. However, there's a question about how 
they should be declared. In PSQL, this is done in the cursor 
declaration, as per SQL spec:

DECLARE MY_CUR [SCROLL | NO SCROLL] CURSOR FOR (<select expr>)

However, it doesn't fit DSQL queries and the SQL spec doesn't help here, 
because it expects all result sets being opened via explicit cursors.

Initially, I was going to add an optional [WITH SCROLL] clause to the 
select expression syntax for this purpose. At the conference, Mark said 
that he would hate to parse the SQL text to find whether it's scrollable 
or not, in order to use the proper API calls. So some other solution is 
needed. The one that was raised there - add statement level parameter 
blocks to the new API and use one of the tags to indicate scrollability. 
I don't have much against this idea, but I'd like to mention that SQL 
parsing can be easily avoided with the initial idea as well - just call 
isc_request_info() to ask whether the prepared query is scrollable or not.

That said, the SQL solution has one more issue, though maybe a minor one 
- it allows conflicting declarations in PSQL cursors. Possible 
workarounds are:

a) disallow WITH SCROLL in PSQL at all
b) disallow WITH SCROLL in PSQL cursors
c) throw error for NO SCROLL and WITH SCROLL used together

What are your opinions about the SQL level solution? Or do you think we 
should go the statement parameter buffer way instead? Any other idea?

Looking forward for your feedback.


Dmitry

------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to