Below is the list of changes that have just been committed into a local
5.1 repository of pekka. When pekka 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, 2006-07-19 14:49:58+02:00, pekka@stripped +5 -0
ndb - bug#14935 fix
storage/ndb/src/kernel/blocks/ERROR_codes.txt@stripped, 2006-07-19 14:48:48+02:00,
pekka@stripped +4 -1
if TUX update fails, need to abort op on tuple (5.1 specific)
storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp@stripped, 2006-07-19 14:48:48+02:00,
pekka@stripped +3 -0
if TUX update fails, need to abort op on tuple (5.1 specific)
storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp@stripped, 2006-07-19 14:48:48+02:00,
pekka@stripped +9 -2
if TUX update fails, need to abort op on tuple (5.1 specific)
storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp@stripped, 2006-07-19 14:48:48+02:00,
pekka@stripped +11 -0
if TUX update fails, need to abort op on tuple (5.1 specific)
storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp@stripped, 2006-07-19 14:48:48+02:00,
pekka@stripped +14 -0
if TUX update fails, need to abort op on tuple (5.1 specific)
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: pekka
# Host: orca.ndb.mysql.com
# Root: /space_old/pekka/ndb/version/my51-bug14935
--- 1.22/storage/ndb/src/kernel/blocks/ERROR_codes.txt 2006-07-19 14:50:17 +02:00
+++ 1.23/storage/ndb/src/kernel/blocks/ERROR_codes.txt 2006-07-19 14:50:17 +02:00
@@ -2,7 +2,7 @@
Next NDBCNTR 1000
Next NDBFS 2000
Next DBACC 3002
-Next DBTUP 4013
+Next DBTUP 4024
Next DBLQH 5043
Next DBDICT 6007
Next DBDIH 7177
@@ -484,3 +484,6 @@
4019 - handleInsert - Alloc rowid error
4020 - handleInsert - Size change error
4021 - handleInsert - Out of disk space
+
+4022 - addTuxEntries - fail before add of first entry
+4023 - addTuxEntries - fail add of last entry (the entry for last index)
--- 1.47/storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp 2006-07-19 14:50:17 +02:00
+++ 1.48/storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp 2006-07-19 14:50:17 +02:00
@@ -2156,6 +2156,9 @@
//------------------------------------------------------------------
void tupkeyErrorLab(Signal* signal);
+ // need flag to skip TUX indexes
+ void do_tup_abortreq(Signal*, Uint32 flags);
+
//------------------------------------------------------------------
//------------------------------------------------------------------
// Methods to handle execution of TUP_COMMITREQ + TUP_ABORTREQ.
--- 1.9/storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp 2006-07-19 14:50:18 +02:00
+++ 1.10/storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp 2006-07-19 14:50:18 +02:00
@@ -63,6 +63,11 @@
*/
void Dbtup::execTUP_ABORTREQ(Signal* signal)
{
+ do_tup_abortreq(signal, 0);
+}
+
+void Dbtup::do_tup_abortreq(Signal* signal, Uint32 flags)
+{
OperationrecPtr regOperPtr;
FragrecordPtr regFragPtr;
TablerecPtr regTabPtr;
@@ -91,7 +96,8 @@
if (get_tuple_state(regOperPtr.p) == TUPLE_PREPARED)
{
ljam();
- if (!regTabPtr.p->tuxCustomTriggers.isEmpty())
+ if (!regTabPtr.p->tuxCustomTriggers.isEmpty() &&
+ (flags & 0x1) == 0)
executeTuxAbortTriggers(signal,
regOperPtr.p,
regFragPtr.p,
@@ -103,7 +109,8 @@
ljam();
c_operation_pool.getPtr(loopOpPtr);
if (get_tuple_state(loopOpPtr.p) != TUPLE_ALREADY_ABORTED &&
- !regTabPtr.p->tuxCustomTriggers.isEmpty()) {
+ !regTabPtr.p->tuxCustomTriggers.isEmpty() &&
+ (flags & 0x1) == 0) {
ljam();
executeTuxAbortTriggers(signal,
loopOpPtr.p,
--- 1.39/storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp 2006-07-19 14:50:18 +02:00
+++ 1.40/storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp 2006-07-19 14:50:18 +02:00
@@ -747,6 +747,12 @@
regFragPtr,
regTabPtr) != 0) {
jam();
+ /*
+ * undo the change before tupkeyErrorLab resets the op
+ * assume no timeslicing can occur even with diskdata
+ */
+ signal->theData[0] = operPtr.i;
+ do_tup_abortreq(signal, 0x1);
tupkeyErrorLab(signal);
return;
}
@@ -775,6 +781,11 @@
regFragPtr,
regTabPtr) != 0) {
jam();
+ /*
+ * see insert case
+ */
+ signal->theData[0] = operPtr.i;
+ do_tup_abortreq(signal, 0x1);
tupkeyErrorLab(signal);
return;
}
--- 1.24/storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp 2006-07-19 14:50:18 +02:00
+++ 1.25/storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp 2006-07-19 14:50:18 +02:00
@@ -1111,6 +1111,12 @@
Operationrec* regOperPtr,
Tablerec* regTabPtr)
{
+ if (ERROR_INSERTED(4022)) {
+ ljam();
+ CLEAR_ERROR_INSERT_VALUE;
+ terrorCode = 9999;
+ return -1;
+ }
TuxMaintReq* const req = (TuxMaintReq*)signal->getDataPtrSend();
const DLList<TupTriggerData>& triggerList = regTabPtr->tuxCustomTriggers;
TriggerPtr triggerPtr;
@@ -1120,6 +1126,14 @@
ljam();
req->indexId = triggerPtr.p->indexId;
req->errorCode = RNIL;
+ if (ERROR_INSERTED(4023) &&
+ ! triggerList.hasNext(triggerPtr)) {
+ ljam();
+ CLEAR_ERROR_INSERT_VALUE;
+ terrorCode = 9999;
+ failPtrI = triggerPtr.i;
+ goto fail;
+ }
EXECUTE_DIRECT(DBTUX, GSN_TUX_MAINT_REQ,
signal, TuxMaintReq::SignalLength);
ljamEntry();
| Thread |
|---|
| • bk commit into 5.1 tree (pekka:1.2257) BUG#14935 | pekka | 19 Jul |