Commit 0b0de297 authored by unknown's avatar unknown
Browse files

Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-telco-gca

into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-single-user


storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp:
  Auto merged
parents ffc9fd9d ef003911
Loading
Loading
Loading
Loading
+31 −4
Original line number Diff line number Diff line
@@ -1286,7 +1286,33 @@ typedef Ptr<HostBuffer> HostBufferPtr;
   */
  struct Var_part_ref 
  {
#if NDB_SIZEOF_CHARP == 4
    Uint32 m_ref;
    STATIC_CONST( SZ32 = 1 );

    void copyout(Local_key* dst) const {
      dst->m_page_no = m_ref >> MAX_TUPLES_BITS;
      dst->m_page_idx = m_ref & MAX_TUPLES_PER_PAGE;
    }

    void assign(const Local_key* src) {
      m_ref = (src->m_page_no << MAX_TUPLES_BITS) | src->m_page_idx;
    }
#else
    Uint32 m_page_no;
    Uint32 m_page_idx;
    STATIC_CONST( SZ32 = 2 );

    void copyout(Local_key* dst) const {
      dst->m_page_no = m_page_no;
      dst->m_page_idx = m_page_idx;
    }

    void assign(const Local_key* src) {
      m_page_no = src->m_page_no;
      m_page_idx = src->m_page_idx;
    }
#endif    
  };
  
  struct Tuple_header
@@ -2928,12 +2954,13 @@ Uint32*
Dbtup::get_ptr(Ptr<Page>* pagePtr, Var_part_ref ref)
{
  PagePtr tmp;
  Uint32 page_idx= ref.m_ref & MAX_TUPLES_PER_PAGE;
  tmp.i= ref.m_ref >> MAX_TUPLES_BITS;
  Local_key key;
  ref.copyout(&key);
  tmp.i = key.m_page_no;
  
  c_page_pool.getPtr(tmp);
  memcpy(pagePtr, &tmp, sizeof(tmp));
  return ((Var_page*)tmp.p)->get_ptr(page_idx);
  return ((Var_page*)tmp.p)->get_ptr(key.m_page_idx);
}

inline
+5 −3
Original line number Diff line number Diff line
@@ -151,12 +151,14 @@ void Dbtup::do_tup_abortreq(Signal* signal, Uint32 flags)

	ndbassert(tuple_ptr->m_header_bits & Tuple_header::CHAINED_ROW);
	
	Uint32 ref= * tuple_ptr->get_var_part_ptr(regTabPtr.p);
	Var_part_ref *ref = 
	  (Var_part_ref*)tuple_ptr->get_var_part_ptr(regTabPtr.p);

	Local_key tmp; 
	tmp.assref(ref); 
	ref->copyout(&tmp);
	
	idx= tmp.m_page_idx;
	var_part= get_ptr(&vpage, *(Var_part_ref*)&ref);
	var_part= get_ptr(&vpage, *ref);
	Var_page* pageP = (Var_page*)vpage.p;
	Uint32 len= pageP->get_entry_len(idx) & ~Var_page::CHAIN;
	Uint32 sz = ((((mm_vars + 1) << 1) + (((Uint16*)var_part)[mm_vars]) + 3)>> 2);
+5 −4
Original line number Diff line number Diff line
@@ -234,13 +234,14 @@ Dbtup::commit_operation(Signal* signal,
  }
  else
  {
    Uint32 *ref= tuple_ptr->get_var_part_ptr(regTabPtr);
    Var_part_ref *ref= (Var_part_ref*)tuple_ptr->get_var_part_ptr(regTabPtr);
    memcpy(tuple_ptr, copy, 4*(Tuple_header::HeaderSize+fixsize));
    
    Local_key tmp; tmp.assref(*ref);
    Local_key tmp; 
    ref->copyout(&tmp);

    PagePtr vpagePtr;
    Uint32 *dst= get_ptr(&vpagePtr, *(Var_part_ref*)ref);
    Uint32 *dst= get_ptr(&vpagePtr, *ref);
    Var_page* vpagePtrP = (Var_page*)vpagePtr.p;
    Uint32 *src= copy->get_var_part_ptr(regTabPtr);
    Uint32 sz= ((mm_vars + 1) << 1) + (((Uint16*)src)[mm_vars]);
+6 −5
Original line number Diff line number Diff line
@@ -2855,11 +2855,11 @@ Dbtup::handle_size_change_after_update(KeyReqStruct* req_struct,
    Ptr<Page> pagePtr = req_struct->m_varpart_page_ptr;
    Var_page* pageP= (Var_page*)pagePtr.p;
    Uint32 idx, alloc, needed;
    Uint32 *refptr = org->get_var_part_ptr(regTabPtr);
    Var_part_ref *refptr = (Var_part_ref*)org->get_var_part_ptr(regTabPtr);
    ndbassert(bits & Tuple_header::CHAINED_ROW);

    Local_key ref;
    ref.assref(*refptr);
    refptr->copyout(&ref);
    idx= ref.m_page_idx;
    if (! (copy_bits & Tuple_header::CHAINED_ROW))
    {
@@ -2882,7 +2882,7 @@ Dbtup::handle_size_change_after_update(KeyReqStruct* req_struct,
    }
    copy_bits |= Tuple_header::MM_GROWN;
    if (unlikely(realloc_var_part(regFragPtr, regTabPtr, pagePtr, 
				  (Var_part_ref*)refptr, alloc, needed)))
				  refptr, alloc, needed)))
      return -1;
  }
  req_struct->m_tuple_ptr->m_header_bits = copy_bits;
@@ -2948,9 +2948,10 @@ Dbtup::nr_read_pk(Uint32 fragPtrI,
  PagePtr page_ptr;
  if (tablePtr.p->m_attributes[MM].m_no_of_varsize)
  {
    tablePtr.p->m_offsets[MM].m_fix_header_size += Tuple_header::HeaderSize+1;
    const Uint32 XXX = Tuple_header::HeaderSize+Var_part_ref::SZ32;
    tablePtr.p->m_offsets[MM].m_fix_header_size += XXX;
    ret = alloc_page(tablePtr.p, fragPtr.p, &page_ptr, tmp.m_page_no);
    tablePtr.p->m_offsets[MM].m_fix_header_size -= Tuple_header::HeaderSize+1;
    tablePtr.p->m_offsets[MM].m_fix_header_size -= XXX;
  } 
  else
  {
+1 −1
Original line number Diff line number Diff line
@@ -514,7 +514,7 @@ void Dbtup::execNDB_STTOR(Signal* signal)
/*****************************************/
    signal->theData[0] = ZREPORT_MEMORY_USAGE;
    signal->theData[1] = 0;
    sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 1000, 1);    
    sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 1000, 2);
    break;
  default:
    jam();
Loading