 |
MySQL
8.0.23
Source Code Documentation
|
Go to the documentation of this file.
31 #include <sys/types.h>
39 #define MAX_TREE_HEIGHT 64
41 #define ELEMENT_KEY(tree, element) \
42 (tree->offset_to_key ? (void *)((uchar *)element + tree->offset_to_key) \
43 : *((void **)(element + 1)))
45 #define tree_set_pointer(element, ptr) \
46 *((uchar **)(element + 1)) = ((uchar *)(ptr))
48 #define TREE_NO_DUPS 1
64 #define ELEMENT_CHILD(element, offs) \
65 (*(TREE_ELEMENT **)((char *)element + offs))
81 void init_tree(
TREE *tree, ulong memory_limit,
int element_size,
88 #define is_tree_inited(tree) ((tree)->root != 0)
92 const void *custom_arg);
99 const void *custom_arg);
106 const void *custom_arg);
108 #define TREE_ELEMENT_EXTRA_SIZE (sizeof(TREE_ELEMENT) + sizeof(void *))
@ right_root_left
Definition: my_tree.h:50
ulong memory_limit
Definition: my_tree.h:71
TREE_ELEMENT * tree_insert(TREE *tree, void *key, uint key_size, const void *custom_arg)
Definition: tree.cc:195
void * tree_search_next(TREE *tree, TREE_ELEMENT ***last_pos, int l_offs, int r_offs)
Definition: tree.cc:414
qsort2_cmp compare
Definition: my_tree.h:72
int tree_delete(TREE *tree, void *key, uint key_size, const void *custom_arg)
Definition: tree.cc:258
uint elements_in_tree
Definition: my_tree.h:70
int(* tree_walk_action)(void *, element_count, void *)
Definition: my_tree.h:52
int(* qsort2_cmp)(const void *, const void *, const void *)
Definition: my_sys.h:469
uint32 element_count
Definition: my_tree.h:51
uint offset_to_key
Definition: my_tree.h:70
@ free_end
Definition: my_tree.h:54
void init_tree(TREE *tree, ulong memory_limit, int element_size, qsort2_cmp compare, bool with_delete, tree_element_free free_element, const void *custom_arg)
Definition: tree.cc:103
uint32 colour
Definition: my_tree.h:61
TREE_ELEMENT * left
Definition: my_tree.h:60
void * tree_search(TREE *tree, void *key, const void *custom_arg)
Definition: tree.cc:310
#define MAX_TREE_HEIGHT
Definition: my_tree.h:39
static const char * key
Definition: suite_stubs.c:14
ulong allocated
Definition: my_tree.h:71
MEM_ROOT mem_root
Definition: my_tree.h:74
TREE_ELEMENT ** parents[MAX_TREE_HEIGHT]
Definition: my_tree.h:69
uint32 count
Definition: my_tree.h:61
uint size_of_element
Definition: my_tree.h:70
uint flag
Definition: my_tree.h:77
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:77
void * tree_search_key(TREE *tree, const void *key, TREE_ELEMENT **parents, TREE_ELEMENT ***last_pos, enum ha_rkey_function flag, const void *custom_arg)
Definition: tree.cc:326
@ free_init
Definition: my_tree.h:54
TREE_WALK
Definition: my_tree.h:50
TREE_ELEMENT()
Definition: my_tree.h:58
unsigned int uint
Definition: uca-dump.cc:29
@ free_free
Definition: my_tree.h:54
const void * custom_arg
Definition: my_tree.h:73
void reset_tree(TREE *)
Definition: tree.cc:168
uint32_t uint32
Definition: my_inttypes.h:66
TREE_ELEMENT * root
Definition: my_tree.h:68
int tree_walk(TREE *tree, tree_walk_action action, void *argument, TREE_WALK visit)
Definition: tree.cc:482
ha_rows tree_record_pos(TREE *tree, const void *key, enum ha_rkey_function search_flag, const void *custom_arg)
Definition: tree.cc:440
void * tree_search_edge(TREE *tree, TREE_ELEMENT **parents, TREE_ELEMENT ***last_pos, int child_offs)
Definition: tree.cc:400
tree_element_free free
Definition: my_tree.h:76
TREE_ELEMENT null_element
Definition: my_tree.h:68
ha_rkey_function
Definition: my_base.h:77
bool with_delete
Definition: my_tree.h:75
TREE_FREE
Definition: my_tree.h:54
static int compare(size_t a, size_t b)
Function to compare two size_t integers for their relative order.
Definition: rpl_utility.cc:104
my_off_t ha_rows
Definition: my_base.h:1136
@ left_root_right
Definition: my_tree.h:50
TREE_ELEMENT * right
Definition: my_tree.h:60
void delete_tree(TREE *)
Definition: tree.cc:164
static int flag
Definition: hp_test1.cc:39
void(* tree_element_free)(void *, TREE_FREE, const void *)
Definition: my_tree.h:55