[Mono-bugs] [Bug 76495][Nor] Changed - Mono.Data.SqliteClient.SqliteConnection.BeginTransaction( IsolationLevel ) is not implemented and returns null

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Mon Aug 7 18:19:35 EDT 2006


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by tekhedd at byteheaven.net.

http://bugzilla.ximian.com/show_bug.cgi?id=76495

--- shadow/76495	2006-08-07 14:17:01.000000000 -0400
+++ shadow/76495.tmp.17806	2006-08-07 18:19:35.000000000 -0400
@@ -90,6 +90,35 @@
 BeginTransaction just provides an entry point to setting the 
 isolation level.  I would only add transaction isolation level if it 
 existed in the database.  If you need true isolation level, consider 
 submitting patches to the author of SQL Lite.  Once added there, we 
 can consider adding support for it in SqliteClient.  However, I am 
 not the maintainer of SqliteClient so this is not my decision.
+
+------- Additional Comments From tekhedd at byteheaven.net  2006-08-07 18:19 -------
+To keep things clear: SQLite *does* have support for shared and
+exclusive locking level in transaction, as well as a deferred
+transaction type. These can be mapped to the various transaction types
+quite easily (when in doubt, use a more restrictive serialization, and
+no harm is done). 
+
+In my patch I map these to the IsolationLevels to the best of my poor
+abilities using a switch statement. It's not rocket science, but I'm
+also not an ADO god. (Who designed these different levels anyway?)
+
+SQLite's transaction levels are described in the pages
+(http://sqlite.org/lang_transaction.html,
+http://sqlite.org/lockingv3.html ), which are what I used as a
+reference in creating the aforementioned patch. I can create a new one
+against the latest code if necessary. It is a very small thing.
+
+SQLite's lock contention management is not very good; the options are
+to either return error (throwing an exception) or use sqlite's polling
+retry code. However, you'll run into this anyway if your code is
+multithreaded, because the default lock level is "deferred", not
+"exclusive".
+
+Summary: SQLite supports three kinds of transactions: exclusive,
+shared, and reserved. It looks like these map to IsolationLevels in a
+logical and reasonable way, allowing code that uses IsolationLevels to
+use the SqliteClient. Other databases map the levels in this way, so
+I'm sure it is OK for SqliteClient to do it. :}


More information about the mono-bugs mailing list