Index number argument

Fix in test results
parent b8a12a8c
...@@ -18,10 +18,10 @@ ...@@ -18,10 +18,10 @@
/* Read first record with the current key */ /* Read first record with the current key */
int heap_rfirst(HP_INFO *info, byte *record) int heap_rfirst(HP_INFO *info, byte *record, int inx)
{ {
HP_SHARE *share = info->s; HP_SHARE *share = info->s;
HP_KEYDEF *keyinfo = share->keydef + info->lastinx; HP_KEYDEF *keyinfo = share->keydef + inx;
DBUG_ENTER("heap_rfirst"); DBUG_ENTER("heap_rfirst");
if (keyinfo->algorithm == HA_KEY_ALG_BTREE) if (keyinfo->algorithm == HA_KEY_ALG_BTREE)
......
...@@ -19,15 +19,12 @@ ...@@ -19,15 +19,12 @@
/* Read first record with the current key */ /* Read first record with the current key */
int heap_rlast(HP_INFO *info, byte *record) int heap_rlast(HP_INFO *info, byte *record, int inx)
{ {
HP_SHARE *share = info->s; HP_SHARE *share= info->s;
HP_KEYDEF *keyinfo; HP_KEYDEF *keyinfo= share->keydef + inx;
DBUG_ENTER("heap_rlast"); DBUG_ENTER("heap_rlast");
if (info->lastinx < 0)
DBUG_RETURN(my_errno = HA_ERR_WRONG_INDEX);
keyinfo = share->keydef + info->lastinx;
if (keyinfo->algorithm == HA_KEY_ALG_BTREE) if (keyinfo->algorithm == HA_KEY_ALG_BTREE)
{ {
byte *pos; byte *pos;
......
...@@ -306,7 +306,7 @@ int main(int argc, char *argv[]) ...@@ -306,7 +306,7 @@ int main(int argc, char *argv[])
if (!silent) if (!silent)
printf("- Read last key - delete - prev - prev - opt_delete - prev -> first\n"); printf("- Read last key - delete - prev - prev - opt_delete - prev -> first\n");
if (heap_rlast(file,record3)) goto err; if (heap_rlast(file,record3,0)) goto err;
if (heap_delete(file,record3)) goto err; if (heap_delete(file,record3)) goto err;
key_check-=atoi(record3); key_check-=atoi(record3);
key1[atoi(record+keyinfo[0].seg[0].start)]--; key1[atoi(record+keyinfo[0].seg[0].start)]--;
...@@ -513,7 +513,7 @@ int main(int argc, char *argv[]) ...@@ -513,7 +513,7 @@ int main(int argc, char *argv[])
} }
ant=0; ant=0;
for (error=heap_rlast(file,record) ; for (error=heap_rlast(file,record,0) ;
! error ; ! error ;
error=heap_rprev(file,record)) error=heap_rprev(file,record))
{ {
......
...@@ -161,8 +161,8 @@ extern int heap_panic(enum ha_panic_function flag); ...@@ -161,8 +161,8 @@ extern int heap_panic(enum ha_panic_function flag);
extern int heap_rsame(HP_INFO *info,byte *record,int inx); extern int heap_rsame(HP_INFO *info,byte *record,int inx);
extern int heap_rnext(HP_INFO *info,byte *record); extern int heap_rnext(HP_INFO *info,byte *record);
extern int heap_rprev(HP_INFO *info,byte *record); extern int heap_rprev(HP_INFO *info,byte *record);
extern int heap_rfirst(HP_INFO *info,byte *record); extern int heap_rfirst(HP_INFO *info,byte *record,int inx);
extern int heap_rlast(HP_INFO *info,byte *record); extern int heap_rlast(HP_INFO *info,byte *record,int inx);
extern void heap_clear(HP_INFO *info); extern void heap_clear(HP_INFO *info);
ha_rows hp_rb_records_in_range(HP_INFO *info, int inx, const byte *start_key, ha_rows hp_rb_records_in_range(HP_INFO *info, int inx, const byte *start_key,
......
...@@ -124,11 +124,11 @@ create table t1 (id int unsigned not null, primary key using BTREE (id)) type=H ...@@ -124,11 +124,11 @@ create table t1 (id int unsigned not null, primary key using BTREE (id)) type=H
insert into t1 values(1); insert into t1 values(1);
select max(id) from t1; select max(id) from t1;
max(id) max(id)
NULL 1
insert into t1 values(2); insert into t1 values(2);
select max(id) from t1; select max(id) from t1;
max(id) max(id)
NULL 2
replace into t1 values(1); replace into t1 values(1);
drop table t1; drop table t1;
create table t1 (n int) type=heap; create table t1 (n int) type=heap;
......
...@@ -189,7 +189,7 @@ int ha_heap::index_prev(byte * buf) ...@@ -189,7 +189,7 @@ int ha_heap::index_prev(byte * buf)
int ha_heap::index_first(byte * buf) int ha_heap::index_first(byte * buf)
{ {
statistic_increment(ha_read_first_count,&LOCK_status); statistic_increment(ha_read_first_count,&LOCK_status);
int error=heap_rfirst(file, buf); int error=heap_rfirst(file, buf, active_index);
table->status=error ? STATUS_NOT_FOUND: 0; table->status=error ? STATUS_NOT_FOUND: 0;
return error; return error;
} }
...@@ -197,7 +197,7 @@ int ha_heap::index_first(byte * buf) ...@@ -197,7 +197,7 @@ int ha_heap::index_first(byte * buf)
int ha_heap::index_last(byte * buf) int ha_heap::index_last(byte * buf)
{ {
statistic_increment(ha_read_last_count,&LOCK_status); statistic_increment(ha_read_last_count,&LOCK_status);
int error=heap_rlast(file, buf); int error=heap_rlast(file, buf, active_index);
table->status=error ? STATUS_NOT_FOUND: 0; table->status=error ? STATUS_NOT_FOUND: 0;
return error; return error;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment