mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
WL#3700: Handler API change: all index search methods - that is,
index_read(), index_read_idx(), index_read_last(), and records_in_range() - instead of 'uint keylen' argument take 'ulonglong keypart_map', a bitmap showing which keyparts are present in the key value. Fallback method is provided for handlers that are lagging behind.
This commit is contained in:
@@ -226,7 +226,7 @@ ha_rows hp_rb_records_in_range(HP_INFO *info, int inx, key_range *min_key,
|
||||
key_range *max_key);
|
||||
int hp_panic(enum ha_panic_function flag);
|
||||
int heap_rkey(HP_INFO *info, byte *record, int inx, const byte *key,
|
||||
uint key_len, enum ha_rkey_function find_flag);
|
||||
ulonglong keypart_map, enum ha_rkey_function find_flag);
|
||||
extern gptr heap_find(HP_INFO *info,int inx,const byte *key);
|
||||
extern int heap_check_heap(HP_INFO *info, my_bool print_status);
|
||||
extern byte *heap_position(HP_INFO *info);
|
||||
|
||||
@@ -384,9 +384,10 @@ enum ha_base_keytype {
|
||||
#define HA_ERR_TABLE_NEEDS_UPGRADE 164 /* The table changed in storage engine */
|
||||
#define HA_ERR_TABLE_READONLY 165 /* The table is not writable */
|
||||
|
||||
#define HA_ERR_AUTOINC_READ_FAILED 166/* Failed to get the next autoinc value */
|
||||
#define HA_ERR_AUTOINC_ERANGE 167 /* Failed to set the row autoinc value */
|
||||
#define HA_ERR_LAST 167 /*Copy last error nr.*/
|
||||
#define HA_ERR_AUTOINC_READ_FAILED 166 /* Failed to get next autoinc value */
|
||||
#define HA_ERR_AUTOINC_ERANGE 167 /* Failed to set row autoinc value */
|
||||
#define HA_ERR_GENERIC 168 /* Generic error */
|
||||
#define HA_ERR_LAST 168 /*Copy last error nr.*/
|
||||
/* Add error numbers before HA_ERR_LAST and change it accordingly. */
|
||||
#define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1)
|
||||
|
||||
@@ -467,6 +468,7 @@ typedef struct st_key_range
|
||||
{
|
||||
const byte *key;
|
||||
uint length;
|
||||
ulonglong keypart_map;
|
||||
enum ha_rkey_function flag;
|
||||
} key_range;
|
||||
|
||||
|
||||
@@ -274,9 +274,8 @@ extern struct st_myisam_info *mi_open(const char *name,int mode,
|
||||
uint wait_if_locked);
|
||||
extern int mi_panic(enum ha_panic_function function);
|
||||
extern int mi_rfirst(struct st_myisam_info *file,byte *buf,int inx);
|
||||
extern int mi_rkey(struct st_myisam_info *file,byte *buf,int inx,
|
||||
const byte *key,
|
||||
uint key_len, enum ha_rkey_function search_flag);
|
||||
extern int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key,
|
||||
ulonglong keypart_map, enum ha_rkey_function search_flag);
|
||||
extern int mi_rlast(struct st_myisam_info *file,byte *buf,int inx);
|
||||
extern int mi_rnext(struct st_myisam_info *file,byte *buf,int inx);
|
||||
extern int mi_rnext_same(struct st_myisam_info *info, byte *buf);
|
||||
@@ -303,7 +302,7 @@ extern int mi_extra(struct st_myisam_info *file,
|
||||
enum ha_extra_function function,
|
||||
void *extra_arg);
|
||||
extern int mi_reset(struct st_myisam_info *file);
|
||||
extern ha_rows mi_records_in_range(struct st_myisam_info *info,int inx,
|
||||
extern ha_rows mi_records_in_range(MI_INFO *info, int inx,
|
||||
key_range *min_key, key_range *max_key);
|
||||
extern int mi_log(int activate_log);
|
||||
extern int mi_is_changed(struct st_myisam_info *info);
|
||||
|
||||
@@ -86,8 +86,8 @@ extern int myrg_rlast(MYRG_INFO *file,byte *buf,int inx);
|
||||
extern int myrg_rnext(MYRG_INFO *file,byte *buf,int inx);
|
||||
extern int myrg_rprev(MYRG_INFO *file,byte *buf,int inx);
|
||||
extern int myrg_rnext_same(MYRG_INFO *file,byte *buf);
|
||||
extern int myrg_rkey(MYRG_INFO *file,byte *buf,int inx,const byte *key,
|
||||
uint key_len, enum ha_rkey_function search_flag);
|
||||
extern int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key,
|
||||
ulonglong keypart_map, enum ha_rkey_function search_flag);
|
||||
extern int myrg_rrnd(MYRG_INFO *file,byte *buf,ulonglong pos);
|
||||
extern int myrg_rsame(MYRG_INFO *file,byte *record,int inx);
|
||||
extern int myrg_update(MYRG_INFO *file,const byte *old,byte *new_rec);
|
||||
@@ -100,7 +100,7 @@ extern int myrg_extra(MYRG_INFO *file,enum ha_extra_function function,
|
||||
void *extra_arg);
|
||||
extern int myrg_reset(MYRG_INFO *info);
|
||||
extern void myrg_extrafunc(MYRG_INFO *info,invalidator_by_filename inv);
|
||||
extern ha_rows myrg_records_in_range(MYRG_INFO *info,int inx,
|
||||
extern ha_rows myrg_records_in_range(MYRG_INFO *info, int inx,
|
||||
key_range *min_key, key_range *max_key);
|
||||
|
||||
extern ulonglong myrg_position(MYRG_INFO *info);
|
||||
|
||||
Reference in New Issue
Block a user