[DB-SIG] SQL statement parse for Oracle

Jekabs Andrushaitis j.andrusaitis@konts.lv
Fri, 14 Dec 2001 09:28:24 +0200


In the Oracle world SQL statement parsing can take considerable CPU/Block IO
for complex statements. Well, I am using pre-historic Oracle DB module
(looks like
some OLD DCOracle to me:), however I did not see anything related to this in
DBAPI too.
What I am talking about is API to allow to parse statement for a cursor (for
Oracle
OCI it is done by 'oparse' calls) without executing it. It could be used to
speed
up things in situation where same statement has to be executed several times
with different bind variables for example. Or when you want application uses
persistand DB connection and you can create several cursors for each
operation
you need to perform thus eliminating cost of parsing each statement over and
over
again...

>From DB-API's point of view it could be Python methods for cursor object:
	dbc.parse('some statement here')
	dbc.executeparsed([some bind variables here])

This can be a very useful feature for DBAPI to have, since in case of Oracle
and
complex statements executed many times it can make the difference visible.

I have made made these patches for my OLD OLD Oracle module (sadly I have
to stick with it for now cause of other patches weve made in it - Python DB
connection
object creation from embedded SQL connections, various memory leak fixes
which
were critical in the environment I am using this module etc:)...

Maybe I am totally missing something about DBAPI spec, and if above
described
features do exist in the spec, then ignore this silly mail :)

Also, I am not aware of RDBMS supporting parsing without executing, but
Oracle
certainly is one of those :)

Jekabs