Repository navigation
Release global interpreter lock during SQLExecute/SQLExecDirect
Wed Jan 16 2014 version 0.99996.cv released
* Added call to rb_thread_blocking_region to release the global
interpreter lock during SQLExecute and SQLExecDirect and require it
afterwards.
This improves performance by not blocking all Ruby threads during long
running queries. This also fixes a deadlock which can occur in SQLExecute and
SQLExecDirect which can happen when trying to read (if isolation level is
"read committed", "repeatable read", "serializable", etc.) or when trying to
modify a dirty row that has been modified by an uncommitted transaction. If this
transaction was initiated by a ruby thread in the same process, all ruby threads
will hang and the ruby process will become unresponsive.