[Checkins] SVN: relstorage/trunk/relstorage/ Added code that
detects a MySQL 5.1.23 bug before it propagates
Shane Hathaway
shane at hathawaymix.org
Fri Apr 18 18:56:53 EDT 2008
Log message for revision 85480:
Added code that detects a MySQL 5.1.23 bug before it propagates
Changed:
U relstorage/trunk/relstorage/adapters/common.py
U relstorage/trunk/relstorage/tests/testmysql.py
-=-
Modified: relstorage/trunk/relstorage/adapters/common.py
===================================================================
--- relstorage/trunk/relstorage/adapters/common.py 2008-04-18 22:30:04 UTC (rev 85479)
+++ relstorage/trunk/relstorage/adapters/common.py 2008-04-18 22:56:53 UTC (rev 85480)
@@ -20,7 +20,9 @@
log = logging.getLogger("relstorage.adapters.common")
+verify_sane_database = False
+
# Notes about adapters:
#
# An adapter must not hold a connection, cursor, or database state, because
@@ -512,12 +514,25 @@
AND keep_tid IS NULL;
UPDATE pack_object SET keep_tid = (""" + subselect + """)
- WHERE keep = %(TRUE)s AND keep_tid IS NULL;
-
- SELECT COUNT(1) FROM temp_pack_visit
+ WHERE keep = %(TRUE)s
+ AND keep_tid IS NULL
"""
self._run_script(cursor, stmt, {'pack_tid': pack_tid})
- visit_count = cursor.fetchone()[0]
+ visit_count = cursor.rowcount
+
+ if verify_sane_database:
+ # Verify the update actually worked.
+ # MySQL 5.1.23 fails this test; 5.1.24 passes.
+ stmt = """
+ SELECT 1
+ FROM pack_object
+ WHERE keep = %(TRUE)s AND keep_tid IS NULL
+ """
+ self._run_script_stmt(cursor, stmt)
+ if list(cursor):
+ raise AssertionError(
+ "database failed to update pack_object")
+
log.debug("pre_pack: checking references from %d object(s)",
visit_count)
Modified: relstorage/trunk/relstorage/tests/testmysql.py
===================================================================
--- relstorage/trunk/relstorage/tests/testmysql.py 2008-04-18 22:30:04 UTC (rev 85479)
+++ relstorage/trunk/relstorage/tests/testmysql.py 2008-04-18 22:56:53 UTC (rev 85480)
@@ -42,5 +42,5 @@
if __name__=='__main__':
logging.basicConfig()
+ #logging.getLogger().setLevel(logging.DEBUG)
unittest.main(defaultTest="test_suite")
-
More information about the Checkins
mailing list