mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 23:04:20 +01:00
Start making structs for the children. Addresses #126.
git-svn-id: file:///svn/tokudb@957 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
eeb476bdc4
commit
6ac3943735
1 changed files with 27 additions and 4 deletions
|
@ -25,6 +25,22 @@ enum { BUFFER_HEADER_SIZE = (4 // height//
|
|||
+ 4 // n_children
|
||||
+ TREE_FANOUT * 8 // children
|
||||
) };
|
||||
|
||||
struct brtnode_nonleaf_pivotinfo {
|
||||
struct kv_pair *pivotkey; /* For DUPSORT keys, the keys are whole key-value pairs.
|
||||
* For nonduplicate and DUPSORT keys we have
|
||||
* Child 0's keys <= pivotkey[0] < Child 1's keys <= pivotkey[1] < ... pivotkey[N-1] < child N's keys <= pivotkey[N] ...
|
||||
*/
|
||||
unsigned char pivotflags;
|
||||
};
|
||||
struct brtnode_nonleaf_childinfo {
|
||||
u_int32_t subtree_fingerprint;
|
||||
DISKOFF diskoff;
|
||||
HASHTABLE htable;
|
||||
unsigned int n_bytes_in_hashtable; /* How many bytes are in each hashtable (including overheads for the disk-representation) */
|
||||
unsigned int n_cursors;
|
||||
};
|
||||
|
||||
typedef struct brtnode *BRTNODE;
|
||||
/* Internal nodes. */
|
||||
struct brtnode {
|
||||
|
@ -44,19 +60,26 @@ struct brtnode {
|
|||
struct nonleaf {
|
||||
// Don't actually store the subree fingerprint in the in-memory data structure.
|
||||
int n_children; /* if n_children==TREE_FANOUT+1 then the tree needs to be rebalanced. */
|
||||
unsigned int totalchildkeylens;
|
||||
unsigned int n_bytes_in_hashtables;
|
||||
|
||||
//#define CHSTRUCT
|
||||
#ifdef CHSTRUCT
|
||||
struct brtnode_nonleaf_pivotinfo pivots[TREE_FANOUT]; /* One extra one so we can grow. */
|
||||
struct brtnode_nonleaf_childinfo children[TREE_FANOUT+1]; /* One extra so we can grow */
|
||||
#else
|
||||
u_int32_t child_subtree_fingerprints[TREE_FANOUT+1];
|
||||
struct kv_pair *childkeys[TREE_FANOUT]; /* Pivot keys. Child 0's keys are <= childkeys[0]. Child 1's keys are <= childkeys[1].
|
||||
Note: It is possible that Child 1's keys are == to child 0's key's, so it is
|
||||
not necessarily true that child 1's keys are > childkeys[0].
|
||||
However, in the absense of duplicate keys, child 1's keys *are* > childkeys[0]. */
|
||||
unsigned int childkeylens[TREE_FANOUT];
|
||||
unsigned int totalchildkeylens;
|
||||
unsigned char pivotflags[TREE_FANOUT];
|
||||
unsigned char pivotflags[TREE_FANOUT];
|
||||
DISKOFF children[TREE_FANOUT+1]; /* unused if height==0 */ /* Note: The last element of these arrays is used only temporarily while splitting a node. */
|
||||
HASHTABLE htables[TREE_FANOUT+1];
|
||||
unsigned int n_bytes_in_hashtable[TREE_FANOUT+1]; /* how many bytes are in each hashtable (including overheads) */
|
||||
unsigned int n_bytes_in_hashtables;
|
||||
unsigned int n_cursors[TREE_FANOUT+1];
|
||||
unsigned int n_cursors[TREE_FANOUT+1];
|
||||
#endif
|
||||
} n;
|
||||
struct leaf {
|
||||
PMA buffer;
|
||||
|
|
Loading…
Add table
Reference in a new issue