[DB-SIG] SQL statement parse for Oracle

Anthony Tuininga anthony@computronix.com
Fri, 14 Dec 2001 10:19:55 -0700


I have done something similar with cx_Oracle, my own Oracle Python 
module. But I have simply stated that if the statement passed to execute 
is None, do not do the parse, simply the bind. The method described here 
is a little more obvious but I chose the first to avoid muddying the 
waters with respect to the Python DB API. I would support such a change 
to the API (as an option, since calling execute will still work).

Anthony

Jekabs Andrushaitis wrote:

>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
>
>
>_______________________________________________
>DB-SIG maillist  -  DB-SIG@python.org
>http://mail.python.org/mailman/listinfo/db-sig
>