Below is the list of changes that have just been committed into a local
5.1-ndb repository of jonas. When jonas 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
1.1814 05/04/01 15:37:16 joreland@stripped +2 -0
wl1866 - ndb diskdata/varsize
abort of grow/shrink
ndb/test/tools/hugoScanUpdate.cpp
1.8 05/04/01 15:37:12 joreland@stripped +9 -7
Add abort option to scanUpdate
ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp
1.28 05/04/01 15:37:12 joreland@stripped +30 -11
Fix abort of grow/shrink
# 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: joreland
# Host: eel.hemma.oreland.se.ndb.mysql.com
# Root: /home/jonas/src/mysql-5.1-ndb-dd
--- 1.27/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp Wed Mar 30 14:46:49 2005
+++ 1.28/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp Fri Apr 1 15:37:12 2005
@@ -88,7 +88,6 @@
regTabPtr.i = regFragPtr.p->fragTableId;
ptrCheckGuard(regTabPtr, cnoOfTablerec, tablerec);
- Tuple_header* tuple_ptr= 0;
if (get_tuple_state(regOperPtr.p) == TUPLE_PREPARED)
{
ljam();
@@ -116,29 +115,49 @@
}
}
+ PagePtr page;
+ Tuple_header *tuple_ptr= (Tuple_header*)
+ get_ptr(&page, ®OperPtr.p->m_tuple_location, regTabPtr.p);
+
+ Tuple_header *copy= (Tuple_header*)
+ c_undo_buffer.get_ptr(®OperPtr.p->m_copy_tuple_location);
+
if(regOperPtr.p->op_struct.m_disk_preallocated)
{
jam();
- Tuple_header* tmp= (Tuple_header*)
- c_undo_buffer.get_ptr(®OperPtr.p->m_copy_tuple_location);
Local_key key;
- memcpy(&key, tmp->get_disk_ref_ptr(regTabPtr.p), sizeof(key));
+ memcpy(&key, copy->get_disk_ref_ptr(regTabPtr.p), sizeof(key));
disk_page_abort_prealloc(signal, regTabPtr.p, &key, key.m_page_idx);
}
- if(tuple_ptr == 0 && regOperPtr.p->is_last_operation())
- {
- PagePtr page;
- Uint32* ptr= get_ptr(&page, ®OperPtr.p->m_tuple_location, regTabPtr.p);
- tuple_ptr= (Tuple_header*)ptr;
- }
-
if(regOperPtr.p->is_first_operation() && regOperPtr.p->is_last_operation())
{
c_lgman->free_log_space(regTabPtr.p->m_logfile_group_id,
regOperPtr.p->m_undo_buffer_space);
}
+ Uint32 bits= copy->m_header_bits;
+ if(bits & Tuple_header::MM_GROWN)
+ {
+ ndbout_c("abort grow");
+ Var_page *pageP= (Var_page*)page.p;
+ Uint32 idx= regOperPtr.p->m_tuple_location.m_page_idx;
+ Uint32 len= pageP->get_entry_len(idx);
+ Uint32 fix_size= regTabPtr.p->m_offsets[MM].m_fix_header_size;
+ Uint32 mm_vars= regTabPtr.p->m_attributes[MM].m_no_of_varsize;
+
+ Uint32 *var_part= tuple_ptr->get_var_part_ptr(regTabPtr.p);
+ Uint32 sz= Tuple_header::HeaderSize + fix_size +
+ ((((mm_vars + 1) << 1) + (((Uint16*)var_part)[mm_vars]) + 3)>> 2);
+
+ ndbassert(sz < len);
+ pageP->shrink_entry(idx, sz);
+ }
+ else if(bits & Tuple_header::MM_SHRINK)
+ {
+ ndbout_c("abort shrink");
+ }
+
removeActiveOpList(regOperPtr.p, tuple_ptr);
initOpConnection(regOperPtr.p);
}
--- 1.7/ndb/test/tools/hugoScanUpdate.cpp Wed Dec 29 16:01:40 2004
+++ 1.8/ndb/test/tools/hugoScanUpdate.cpp Fri Apr 1 15:37:12 2005
@@ -35,6 +35,7 @@
int _ver2 = 0;
const char* _tabname = NULL;
int _help = 0;
+ int abort= 0;
struct getargs args[] = {
{ "loops", 'l', arg_integer, &_loops, "number of times to run this program(0=infinite loop)", "loops" },
@@ -42,6 +43,7 @@
{ "records", 'r', arg_integer, &_records, "Number of records", "recs" },
{ "ver2", '2', arg_flag, &_ver2, "Use version 2 of scanUpdateRecords", "" },
{ "ver2", '1', arg_negative_flag, &_ver2, "Use version 1 of scanUpdateRecords (default)", "" },
+ { "abort", 'a', arg_integer, &abort, "Abort probability", "" },
{ "usage", '?', arg_flag, &_help, "Print help", "" }
};
int num_args = sizeof(args) / sizeof(args[0]);
@@ -87,20 +89,20 @@
ndbout << i << ": ";
if (_ver2 == 0){
res = hugoTrans.scanUpdateRecords(&MyNdb,
- _records,
- 0,
- _parallelism);
+ _records,
+ abort % 101,
+ _parallelism);
} else{
res = hugoTrans.scanUpdateRecords2(&MyNdb,
- _records,
- 0,
- _parallelism);
+ _records,
+ abort % 101,
+ _parallelism);
}
if (res != NDBT_OK ){
return NDBT_ProgramExit(NDBT_FAILED);
}
i++;
}
-
+
return NDBT_ProgramExit(NDBT_OK);
}
| Thread |
|---|
| • bk commit into 5.1-ndb tree (joreland:1.1814) | jonas.oreland | 1 Apr |