MySQL 源码解读 -- Dictionary_client

结构介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Dictionary_client {
class Auto_releaser; // 子类
std::vector<Entity_object *> m_uncached_objects; // Objects to be deleted.
Object_registry m_registry_committed; // Registry of committed objects.
Object_registry m_registry_uncommitted; // Registry of uncommitted objects.
Object_registry m_registry_dropped; // Registry of dropped objects.
THD *m_thd; // Thread context, needed for cache misses.
Auto_releaser m_default_releaser; // Default auto releaser.
Auto_releaser *m_current_releaser; // Current auto releaser.
}


Auto_releaser {
Dictionary_client *m_client;
Object_registry m_release_registry;
Auto_releaser *m_prev;

void auto_release(Cache_element<T> *element) //Register an object to be auto released.
void transfer_release(const T *object); //Transfer an object from the current to the previous auto releaser.
}

Dictionary_client::Auto_releaser::Auto_releaser(Dictionary_client *client)
: m_client(client), m_prev(client->m_current_releaser) {
m_client->m_current_releaser = this;
}