List:Commits« Previous MessageNext Message »
From:U-ROWVWADEjas Date:January 22 2008 8:04pm
Subject:bk commit into 6.0 tree (jas:1.2779)
View as plain text  
Below is the list of changes that have just been committed into a local
6.0 repository of . When  does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2008-01-22 15:04:10-05:00, jas@rowvwade. +2 -0
  Don't validate a row update on a table undergoing
  truncation.  It is a trivial optimization, but more
  importantly, avoid a deadlock.

  storage/falcon/Table.cpp@stripped, 2008-01-22 15:04:02-05:00, jas@rowvwade. +7 -0
    Don't validate a row update on a table undergoing
    truncation.  It is a trivial optimization, but more
    importantly, avoid a deadlock.

  storage/falcon/Table.h@stripped, 2008-01-22 15:04:02-05:00, jas@rowvwade. +1 -0
    Don't validate a row update on a table undergoing
    truncation.  It is a trivial optimization, but more
    importantly, avoid a deadlock.

diff -Nrup a/storage/falcon/Table.cpp b/storage/falcon/Table.cpp
--- a/storage/falcon/Table.cpp	2008-01-22 12:29:35 -05:00
+++ b/storage/falcon/Table.cpp	2008-01-22 15:04:02 -05:00
@@ -809,6 +809,7 @@ void Table::init(int id, const char *sch
 	formatVersion = 0;
 	format = NULL;
 	changed = false;
+	deleting = false;
 	foreignKeys = NULL;
 	records = NULL;
 	highWater = 0;
@@ -1463,6 +1464,8 @@ void Table::drop(Transaction *transactio
 
 void Table::truncate(Transaction *transaction)
 {
+	deleting = true;
+	
 	// Delete data and blob sections
 	
 	expunge(transaction);
@@ -1503,6 +1506,7 @@ void Table::truncate(Transaction *transa
 	debugThawedRecords = 0;
 	debugThawedBytes = 0;
 	alterIsActive = false;
+	deleting = false;
 }
 
 void Table::checkNullable(Record * record)
@@ -3514,6 +3518,9 @@ void Table::findSections(void)
 
 bool Table::validateUpdate(int32 recordNumber, TransId transactionId)
 {
+	if (deleting)
+		return false;
+
 	Record *record = fetch(recordNumber);
 	
 	while (record)
diff -Nrup a/storage/falcon/Table.h b/storage/falcon/Table.h
--- a/storage/falcon/Table.h	2008-01-19 12:59:12 -05:00
+++ b/storage/falcon/Table.h	2008-01-22 15:04:02 -05:00
@@ -249,6 +249,7 @@ public:
 	bool			markedForDelete;
 	bool			activeVersions;
 	bool			alterIsActive;
+	bool			deleting;					// dropping or truncating.
 	int32			highWater;
 	int32			ageGroup;
 	uint32			debugThawedRecords;
Thread
bk commit into 6.0 tree (jas:1.2779)U-ROWVWADEjas22 Jan