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.