Die Funktion
index_read()
wird verwendet, um eine Zeile anhand eines Schlüssels
abzufragen:
int ha_foo::index_read(byte * buf, const byte * key, uint key_len, enum ha_rkey_function find_flag)
Der Parameter *buf ist ein Byte-Array, in dem
die Speicher-Engine die Zeile speichert, die zu dem
Indexschlüssel *key gehört. Der Parameter
key_len gibt bei Präfixvergleichen die
Länge des Präfixes an und find_flag ist ein
Enumerator, der das Suchverhalten bestimmt.
Der zu verwendende Index wird vorher im Aufruf von
index_init()
festgelegt und dann in der Handler-Variablen
active_index gespeichert.
Folgende Werte sind für find_flag zulässig:
HA_READ_KEY_EXACT HA_READ_KEY_OR_NEXT HA_READ_PREFIX_LAST HA_READ_PREFIX_LAST_OR_PREV HA_READ_BEFORE_KEY HA_READ_AFTER_KEY HA_READ_KEY_OR_NEXT HA_READ_KEY_OR_PREV
Speicher-Engines müssen den Parameter *key
in ihr spezifisches Format konvertieren. Danach verwenden sie
ihn, um anhand von find_flag die passende
Zeile zu finden und im internen Zeilenformat von MySQL in
*buf zu speichern. Weitere Informationen
über das interne Zeilenformat finden Sie unter
Abschnitt 15.9.6, „Implementierung der Funktion rnd_next()“.
Die Speicher-Engine muss nicht nur die passende Zeile zurückgeben, sondern auch einen Cursor setzen, um sequenzielle Index-Reads zu unterstützen.
Ist der Parameter *key null, liest die
Speicher-Engine den ersten Schlüssel im Index.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.
