mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 19:41:47 +01:00
Merge pnousiainen@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into mysql.com:/space/pekka/ndb/version/my50-cc
This commit is contained in:
commit
17a98e54fd
2 changed files with 199 additions and 2308 deletions
|
@ -101,7 +101,6 @@ ndbout << "Ptr: " << ptr.p->word32 << " \tIndex: " << tmp_string << " \tValue: "
|
|||
#define ZPOS_PREV_PAGE 11
|
||||
#define ZNORMAL_PAGE_TYPE 0
|
||||
#define ZOVERFLOW_PAGE_TYPE 1
|
||||
#define ZLONG_PAGE_TYPE 2
|
||||
#define ZDEFAULT_LIST 3
|
||||
#define ZWORDS_IN_PAGE 2048
|
||||
/* --------------------------------------------------------------------------------- */
|
||||
|
@ -135,16 +134,6 @@ ndbout << "Ptr: " << ptr.p->word32 << " \tIndex: " << tmp_string << " \tValue: "
|
|||
#define ZPAGEZERO_NODETYPE 33
|
||||
#define ZPAGEZERO_SLACK_CHECK 34
|
||||
/* --------------------------------------------------------------------------------- */
|
||||
/* CONSTANTS FOR THE LONG KEY PAGES */
|
||||
/* --------------------------------------------------------------------------------- */
|
||||
/* --------------------------------------------------------------------------------- */
|
||||
// Maximum number of elements in long key page = (ZWORDS_IN_PAGE - ZHEAD_SIZE) /
|
||||
// (MinKeySize + IndexSize) = (2048 - 32) / (8 + 1) = 224. MinKeySize is actually 9
|
||||
// because 8 is the largest normal key size.
|
||||
#define ZMAX_NO_OF_LONGKEYS_IN_PAGE 225
|
||||
#define ZMAX_LONG_KEY_ARRAY_INDEX 3
|
||||
#define ZACTIVE_LONG_KEY_LEN 1
|
||||
/* --------------------------------------------------------------------------------- */
|
||||
/* CONSTANTS IN ALPHABETICAL ORDER */
|
||||
/* --------------------------------------------------------------------------------- */
|
||||
#define ZADDFRAG 0
|
||||
|
@ -395,49 +384,6 @@ enum State {
|
|||
|
||||
// Records
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------
|
||||
// LONGKEY PAGE RECORD
|
||||
//
|
||||
// A long key page consist of a header part, a key data part and an index part. The
|
||||
// page starts with a header of size HEAD_SIZE. As you can see below, not every word
|
||||
// in the header is used. After the header comes the data part, where the actual
|
||||
// keys are stored. A key is always inserted after the existing keys in the data
|
||||
// part. If we have a fragmented data part and a new key doesn't fit after the
|
||||
// existing keys we reorganize the keys. The index part starts at the end of the
|
||||
// page and grows towards the end of the data part. This means that the limit
|
||||
// between the data part and the index part is floating. Each inserted key have a
|
||||
// word in the index part that describes size and position of the key in the data
|
||||
// part. The free indexes in the index part are single linked.
|
||||
//----------------------------------------------------------------------------------
|
||||
union LongKeyPage {
|
||||
struct {
|
||||
Uint32 pageId; // ZPOS_PAGE_ID 0
|
||||
Uint32 b;
|
||||
// The number of keys in page.
|
||||
Uint32 noOfElements; // ZPOS_NO_ELEM_IN_PAGE 2
|
||||
Uint32 d;
|
||||
Uint32 e;
|
||||
// The free area in the data part of page.
|
||||
Uint32 freeArea; // ZPOS_FREE_AREA_IN_PAGE 5
|
||||
// The index position, which defines the limit between the data and the index part.
|
||||
Uint32 highestIndex; // ZPOS_LAST_INDEX 6
|
||||
// The position where to insert the actual key in the data part.
|
||||
Uint32 insertPos; // ZPOS_INSERT_INDEX 7
|
||||
// Position in a page array where the pages are stored in a double linked list.
|
||||
// Based on the free area in the page. Values 0 to 3.
|
||||
Uint32 pageArrayPos; // ZPOS_ARRAY_POS 8
|
||||
// Next free position in the index part.
|
||||
Uint32 nextFreeIndex; // ZPOS_NEXT_FREE_INDEX 9
|
||||
// Next page in the double linked list.
|
||||
Uint32 nextPage; // ZPOS_NEXT_PAGE 10
|
||||
// Previous page in the double linked list.
|
||||
Uint32 prevPage; // ZPOS_PREV_PAGE 11
|
||||
} header;
|
||||
// This is kept to keep the logic and to make changes to a minimum.
|
||||
Uint32 word32[2048];
|
||||
};
|
||||
|
||||
/* --------------------------------------------------------------------------------- */
|
||||
/* UNDO HEADER RECORD */
|
||||
/* --------------------------------------------------------------------------------- */
|
||||
|
@ -447,9 +393,7 @@ enum State {
|
|||
ZPAGE_INFO = 0,
|
||||
ZOVER_PAGE_INFO = 1,
|
||||
ZOP_INFO = 2,
|
||||
ZUNDO_INSERT_LONG_KEY = 3,
|
||||
ZUNDO_DELETE_LONG_KEY = 4,
|
||||
ZNO_UNDORECORD_TYPES = 5
|
||||
ZNO_UNDORECORD_TYPES = 3
|
||||
};
|
||||
UintR tableId;
|
||||
UintR rootFragId;
|
||||
|
@ -1061,7 +1005,6 @@ private:
|
|||
void releaseScanRec(Signal* signal);
|
||||
bool searchScanContainer(Signal* signal);
|
||||
void sendNextScanConf(Signal* signal);
|
||||
void sendScaninfo(Signal* signal);
|
||||
void setlock(Signal* signal);
|
||||
void takeOutActiveScanOp(Signal* signal);
|
||||
void takeOutScanLockQueue(Uint32 scanRecIndex);
|
||||
|
@ -1073,16 +1016,8 @@ private:
|
|||
void increaselistcont(Signal* signal);
|
||||
void seizeLeftlist(Signal* signal);
|
||||
void seizeRightlist(Signal* signal);
|
||||
void allocLongOverflowPage(Signal* signal);
|
||||
void allocSpecificLongOverflowPage(Signal* signal);
|
||||
void getLongKeyPage(Signal* signal);
|
||||
void initLongOverpage(Signal* signal);
|
||||
void storeLongKeys(Signal* signal);
|
||||
void storeLongKeysAtPos(Signal* signal);
|
||||
void reorgLongPage(Signal* signal);
|
||||
void readTablePk(Uint32 localkey1);
|
||||
void getElement(Signal* signal);
|
||||
void searchLongKey(Signal* signal);
|
||||
void getdirindex(Signal* signal);
|
||||
void commitdelete(Signal* signal, bool systemRestart);
|
||||
void deleteElement(Signal* signal);
|
||||
|
@ -1090,15 +1025,6 @@ private:
|
|||
void releaseLeftlist(Signal* signal);
|
||||
void releaseRightlist(Signal* signal);
|
||||
void checkoverfreelist(Signal* signal);
|
||||
void deleteLongKey(Signal* signal);
|
||||
void removeFromPageArrayList(Signal* signal);
|
||||
void insertPageArrayList(Signal* signal);
|
||||
void checkPageArrayList(Signal* signal, const char *);
|
||||
void checkPageB4Insert(Uint32, const char *);
|
||||
void checkPageB4Remove(Uint32, const char *);
|
||||
void checkIndexInLongKeyPage(Uint32, const char *);
|
||||
void printoutInfoAndShutdown(LongKeyPage *);
|
||||
void releaseLongPage(Signal* signal);
|
||||
void abortOperation(Signal* signal);
|
||||
void accAbortReqLab(Signal* signal, bool sendConf);
|
||||
void commitOperation(Signal* signal);
|
||||
|
@ -1287,8 +1213,6 @@ private:
|
|||
/* --------------------------------------------------------------------------------- */
|
||||
Page8 *page8;
|
||||
/* 8 KB PAGE */
|
||||
Page8Ptr aslpPageptr;
|
||||
Page8Ptr alpPageptr;
|
||||
Page8Ptr ancPageptr;
|
||||
Page8Ptr colPageptr;
|
||||
Page8Ptr ccoPageptr;
|
||||
|
@ -1299,10 +1223,8 @@ private:
|
|||
Page8Ptr gdiPageptr;
|
||||
Page8Ptr gePageptr;
|
||||
Page8Ptr gflPageptr;
|
||||
Page8Ptr glkPageptr;
|
||||
Page8Ptr idrPageptr;
|
||||
Page8Ptr ilcPageptr;
|
||||
Page8Ptr iloPageptr;
|
||||
Page8Ptr inpPageptr;
|
||||
Page8Ptr iopPageptr;
|
||||
Page8Ptr lastPageptr;
|
||||
|
@ -1310,17 +1232,8 @@ private:
|
|||
Page8Ptr lcnPageptr;
|
||||
Page8Ptr lcnCopyPageptr;
|
||||
Page8Ptr lupPageptr;
|
||||
Page8Ptr dlkPageptr;
|
||||
Page8Ptr ipaPagePtr;
|
||||
Page8Ptr priPageptr;
|
||||
Page8Ptr pwiPageptr;
|
||||
Page8Ptr rfpPageptr;
|
||||
Page8Ptr relpPageptr;
|
||||
Page8Ptr rlopPageptr;
|
||||
Page8Ptr slkPageptr;
|
||||
Page8Ptr slkCopyPageptr;
|
||||
Page8Ptr slkapPageptr;
|
||||
Page8Ptr slkapCopyPageptr;
|
||||
Page8Ptr ciPageidptr;
|
||||
Page8Ptr gsePageidptr;
|
||||
Page8Ptr isoPageptr;
|
||||
|
@ -1383,7 +1296,6 @@ private:
|
|||
Uint32 tpriElementptr;
|
||||
Uint32 tgseElementptr;
|
||||
Uint32 tgseContainerptr;
|
||||
Uint32 tiloIndex;
|
||||
Uint32 trlHead;
|
||||
Uint32 trlRelCon;
|
||||
Uint32 trlNextused;
|
||||
|
@ -1392,20 +1304,12 @@ private:
|
|||
Uint32 tlupElemIndex;
|
||||
Uint32 tlupIndex;
|
||||
Uint32 tlupForward;
|
||||
Uint32 tslkPageIndex;
|
||||
Uint32 tslkKeyLen;
|
||||
Uint32 tslkapKeyLen;
|
||||
Uint32 tslkapPageIndex;
|
||||
Uint32 tipaArrayPos;
|
||||
Uint32 trfpArrayPos;
|
||||
Uint32 tdlkLogicalPageIndex;
|
||||
Uint32 tancNext;
|
||||
Uint32 tancBufType;
|
||||
Uint32 tancContainerptr;
|
||||
Uint32 tancPageindex;
|
||||
Uint32 tancPageid;
|
||||
Uint32 tidrResult;
|
||||
Uint32 tidrKeyLen;
|
||||
Uint32 tidrElemhead;
|
||||
Uint32 tidrForward;
|
||||
Uint32 tidrPageindex;
|
||||
|
@ -1428,9 +1332,6 @@ private:
|
|||
Uint32 tgeContainerptr;
|
||||
Uint32 tgeElementptr;
|
||||
Uint32 tgeForward;
|
||||
Uint32 tslcResult;
|
||||
Uint32 tslcPagedir;
|
||||
Uint32 tslcPageIndex;
|
||||
Uint32 tundoElemIndex;
|
||||
Uint32 texpReceivedBucket;
|
||||
Uint32 texpDirInd;
|
||||
|
@ -1467,7 +1368,6 @@ private:
|
|||
Uint32 tmp;
|
||||
Uint32 tmpP;
|
||||
Uint32 tmpP2;
|
||||
Uint32 taslpDirIndex;
|
||||
Uint32 tmp1;
|
||||
Uint32 tmp2;
|
||||
Uint32 tgflPageindex;
|
||||
|
@ -1549,7 +1449,7 @@ private:
|
|||
};
|
||||
|
||||
Uint32 c_errorInsert3000_TableId;
|
||||
Uint32 cSrUndoRecords[5];
|
||||
Uint32 cSrUndoRecords[UndoHeader::ZNO_UNDORECORD_TYPES];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue