Can not use DBD::Oracle's prepare_cached for arbitrary SQL. #6

Closed
wants to merge 1 commit into
from

Conversation

Projects
None yet
3 participants
Contributor

usualoma commented Nov 9, 2012

In DBD::Oracle, since a cursor created by the prepare_cached is not
released by the "$statement->finish" (but released by "$statement->DESTROY"),
cursor leak occurs if prepare_cached is applied to all SQL.

Reference

https://github.com/yanick/DBD-Oracle/blob/master/dbdimp.c#L4018

@usualoma usualoma Can not use DBD::Oracle's prepare_cached for arbitrary SQL.
In DBD::Oracle, since a cursor created by the prepare_cached is not
released by the "$statement->finish" (but released by "$statement->DESTROY"),
cursor leak occurs if prepare_cached is applied to all SQL.
15fc90e

lajandy commented Jan 14, 2015

Having run into this at a client site, this is most likely due to an Oracle bind parameter mismatch bug present in certain versions of Oracle 11g. I would strongly urge AGAINST accepting this pull request into the main Data::ObjectDriver distribution as this could very likely negatively impact Data::ObjectDriver performance with Oracle versions not affected by the bind parameter mismatch bug. The bug is present in Oracle 11g R1, and is supposedly fixed in 11g R2 and 12c.

Contributor

ziguzagu commented Jan 22, 2015

@lajandy Thank you for your clarification of versions.
@usualoma So, I'm going to close this for now. Please reopen and tell us Oracle version if you encounter that problem in the future.

Thanks

ziguzagu closed this Jan 22, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment