Searching in the index
index_read()
is, perhaps, the most complex function in our engine. Not because it is difficult to look up a key in the B+tree, but because there are too many "search modes" in MySQL. But let's get started:
int ha_tocab::index_read(uchar *buf, const uchar *key, uint key_len, enum ha_rkey_function find_flag) {
Just like rnd_next(),
from the previous chapter this method takes a pointer to a row buffer as an argument. The row that we will find should be written there. Not surprisingly, two other arguments of this method are key and key length—it is what we will need to search for. But the last argument—what is it? It is this very "search mode" that makes our lives complicated. It can take one of the following values:
Value |
Description |
---|---|
|
In this mode, |
|
In this mode, |