diff options
author | unknown <ingo@mysql.com> | 2005-09-25 15:51:28 +0200 |
---|---|---|
committer | unknown <ingo@mysql.com> | 2005-09-25 15:51:28 +0200 |
commit | 03fd2da4fe464b3a8b0dada5f2b2b3496ed32434 (patch) | |
tree | 7c24403794f351be1472b93d6836bf5a341524af /myisam/mi_search.c | |
parent | bd8b5dc8457ebed6489eeaa07c0beafd068d0dad (diff) | |
parent | 944db06bbb328288d5e9cfc85de86876895b8b62 (diff) | |
download | mariadb-git-03fd2da4fe464b3a8b0dada5f2b2b3496ed32434.tar.gz |
Merge mysql.com:/home/mydev/mysql-5.0
into mysql.com:/home/mydev/mysql-5.0-5000
Diffstat (limited to 'myisam/mi_search.c')
-rw-r--r-- | myisam/mi_search.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/myisam/mi_search.c b/myisam/mi_search.c index b7360dba7f3..185f196a814 100644 --- a/myisam/mi_search.c +++ b/myisam/mi_search.c @@ -915,11 +915,21 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag, reg1 HA_KEYSEG *keyseg; uchar *start_key,*page,*page_end,*from,*from_end; uint length,tmp; + DBUG_ENTER("_mi_get_binary_pack_key"); page= *page_pos; page_end=page+MI_MAX_KEY_BUFF+1; start_key=key; + /* + Keys are compressed the following way: + + prefix length Packed length of prefix for the prev key. (1 or 3 bytes) + for each key segment: + [is null] Null indicator if can be null (1 byte, zero means null) + [length] Packed length if varlength (1 or 3 bytes) + pointer Reference to the data file (last_keyseg->length). + */ get_key_length(length,page); if (length) { @@ -930,7 +940,7 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag, DBUG_DUMP("key",(char*) *page_pos,16); mi_print_error(keyinfo->share, HA_ERR_CRASHED); my_errno=HA_ERR_CRASHED; - return 0; /* Wrong key */ + DBUG_RETURN(0); /* Wrong key */ } from=key; from_end=key+length; } @@ -992,12 +1002,12 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag, DBUG_PRINT("error",("Error when unpacking key")); mi_print_error(keyinfo->share, HA_ERR_CRASHED); my_errno=HA_ERR_CRASHED; - return 0; /* Error */ + DBUG_RETURN(0); /* Error */ } memcpy((byte*) key,(byte*) from,(size_t) length); *page_pos= from+length; } - return((uint) (key-start_key)+keyseg->length); + DBUG_RETURN((uint) (key-start_key)+keyseg->length); } |