Loading BitKeeper/etc/logging_ok +1 −0 Original line number Diff line number Diff line jani@prima.mysql.com serg@serg.mysql.com myisammrg/mymrgdef.h +3 −5 Original line number Diff line number Diff line Loading @@ -30,5 +30,3 @@ extern pthread_mutex_t THR_LOCK_open; int _myrg_init_queue(MYRG_INFO *info,int inx,enum ha_rkey_function search_flag); int _myrg_finish_scan(MYRG_INFO *info, int inx, enum ha_rkey_function type); MYRG_TABLE *_myrg_find_table(MYRG_INFO *info, ulonglong pos); myisammrg/myrg_extra.c +16 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ int myrg_extra(MYRG_INFO *info,enum ha_extra_function function) { int error,save_error=0; MYRG_TABLE *file; DBUG_ENTER("myrg_extra"); DBUG_PRINT("info",("function: %d",(ulong) function)); if (function == HA_EXTRA_CACHE) info->cache_in_use=1; Loading @@ -38,9 +40,19 @@ int myrg_extra(MYRG_INFO *info,enum ha_extra_function function) info->current_table=0; info->last_used_table=info->open_tables; } info->records=info->del=info->data_file_length=0; for (file=info->open_tables ; file != info->end_table ; file++) { if ((error=mi_extra(file->table,function))) save_error=error; file->file_offset=info->data_file_length; info->data_file_length+=file->table->s->state.state.data_file_length; info->records+=file->table->s->state.state.records; info->del+=file->table->s->state.state.del; DBUG_PRINT("info2",("table: %s, offset: 0x%08lx", file->table->filename,(ulong)file->file_offset)); } } return save_error; DBUG_RETURN(save_error); } myisammrg/myrg_info.c +3 −5 Original line number Diff line number Diff line Loading @@ -35,8 +35,6 @@ int myrg_status(MYRG_INFO *info,register MYMERGE_INFO *x,int flag) MYRG_TABLE *current_table; DBUG_ENTER("myrg_status"); _myrg_find_table(info, HA_OFFSET_ERROR); if (!(current_table = info->current_table) && info->open_tables != info->end_table) current_table = info->open_tables; Loading myisammrg/myrg_rrnd.c +26 −19 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ #include "mymrgdef.h" static MYRG_TABLE *find_table(MYRG_TABLE *start,MYRG_TABLE *end,ulonglong pos); /* If filepos == HA_OFFSET_ERROR, read next Returns same as mi_rrnd: Loading @@ -33,6 +35,8 @@ int myrg_rrnd(MYRG_INFO *info,byte *buf,ulonglong filepos) { int error; MI_INFO *isam_info; DBUG_ENTER("myrg_rrnd"); DBUG_PRINT("info",("offset: 0x%016qx", (ulonglong)filepos)); if (filepos == HA_OFFSET_ERROR) { Loading @@ -40,7 +44,7 @@ int myrg_rrnd(MYRG_INFO *info,byte *buf,ulonglong filepos) { if (info->open_tables == info->end_table) { /* No tables */ return (my_errno=HA_ERR_END_OF_FILE); DBUG_RETURN(my_errno=HA_ERR_END_OF_FILE); } isam_info=(info->current_table=info->open_tables)->table; if (info->cache_in_use) Loading @@ -60,11 +64,11 @@ int myrg_rrnd(MYRG_INFO *info,byte *buf,ulonglong filepos) if ((error=(*isam_info->s->read_rnd)(isam_info,(byte*) buf, (my_off_t) filepos,1)) != HA_ERR_END_OF_FILE) return (error); DBUG_RETURN(error); if (info->cache_in_use) mi_extra(info->current_table->table,HA_EXTRA_NO_CACHE); if (info->current_table+1 == info->end_table) return(HA_ERR_END_OF_FILE); DBUG_RETURN(HA_ERR_END_OF_FILE); info->current_table++; info->last_used_table=info->current_table; if (info->cache_in_use) Loading @@ -78,10 +82,11 @@ int myrg_rrnd(MYRG_INFO *info,byte *buf,ulonglong filepos) isam_info->lastinx= (uint) -1; } } info->current_table=_myrg_find_table(info,filepos); info->current_table=find_table(info->open_tables, info->end_table-1,filepos); isam_info=info->current_table->table; isam_info->update&= HA_STATE_CHANGED; return ((*isam_info->s->read_rnd) DBUG_RETURN((*isam_info->s->read_rnd) (isam_info, (byte*) buf, (ha_rows) (filepos - info->current_table->file_offset), 0)); Loading @@ -90,19 +95,21 @@ int myrg_rrnd(MYRG_INFO *info,byte *buf,ulonglong filepos) /* Find which table to use according to file-pos */ MYRG_TABLE *_myrg_find_table(MYRG_INFO *info, ulonglong pos) static MYRG_TABLE *find_table(MYRG_TABLE *start, MYRG_TABLE *end, ulonglong pos) { MYRG_TABLE *t; info->records=info->del=info->data_file_length=0; MYRG_TABLE *mid; DBUG_ENTER("find_table"); for (t=info->open_tables ; t < info->end_table ; t++) while (start != end) { t->file_offset=info->data_file_length; if (pos < t->file_offset) return t-1; info->data_file_length+=t->table->state->data_file_length; info->records+=t->table->state->records; info->del+=t->table->state->del; mid=start+((uint) (end-start)+1)/2; if (mid->file_offset > pos) end=mid-1; else start=mid; } return t-1; DBUG_PRINT("info",("offset: 0x%016qx, table: %s", (ulonglong)pos, start->table->filename)); DBUG_RETURN(start); } Loading
BitKeeper/etc/logging_ok +1 −0 Original line number Diff line number Diff line jani@prima.mysql.com serg@serg.mysql.com
myisammrg/mymrgdef.h +3 −5 Original line number Diff line number Diff line Loading @@ -30,5 +30,3 @@ extern pthread_mutex_t THR_LOCK_open; int _myrg_init_queue(MYRG_INFO *info,int inx,enum ha_rkey_function search_flag); int _myrg_finish_scan(MYRG_INFO *info, int inx, enum ha_rkey_function type); MYRG_TABLE *_myrg_find_table(MYRG_INFO *info, ulonglong pos);
myisammrg/myrg_extra.c +16 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ int myrg_extra(MYRG_INFO *info,enum ha_extra_function function) { int error,save_error=0; MYRG_TABLE *file; DBUG_ENTER("myrg_extra"); DBUG_PRINT("info",("function: %d",(ulong) function)); if (function == HA_EXTRA_CACHE) info->cache_in_use=1; Loading @@ -38,9 +40,19 @@ int myrg_extra(MYRG_INFO *info,enum ha_extra_function function) info->current_table=0; info->last_used_table=info->open_tables; } info->records=info->del=info->data_file_length=0; for (file=info->open_tables ; file != info->end_table ; file++) { if ((error=mi_extra(file->table,function))) save_error=error; file->file_offset=info->data_file_length; info->data_file_length+=file->table->s->state.state.data_file_length; info->records+=file->table->s->state.state.records; info->del+=file->table->s->state.state.del; DBUG_PRINT("info2",("table: %s, offset: 0x%08lx", file->table->filename,(ulong)file->file_offset)); } } return save_error; DBUG_RETURN(save_error); }
myisammrg/myrg_info.c +3 −5 Original line number Diff line number Diff line Loading @@ -35,8 +35,6 @@ int myrg_status(MYRG_INFO *info,register MYMERGE_INFO *x,int flag) MYRG_TABLE *current_table; DBUG_ENTER("myrg_status"); _myrg_find_table(info, HA_OFFSET_ERROR); if (!(current_table = info->current_table) && info->open_tables != info->end_table) current_table = info->open_tables; Loading
myisammrg/myrg_rrnd.c +26 −19 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ #include "mymrgdef.h" static MYRG_TABLE *find_table(MYRG_TABLE *start,MYRG_TABLE *end,ulonglong pos); /* If filepos == HA_OFFSET_ERROR, read next Returns same as mi_rrnd: Loading @@ -33,6 +35,8 @@ int myrg_rrnd(MYRG_INFO *info,byte *buf,ulonglong filepos) { int error; MI_INFO *isam_info; DBUG_ENTER("myrg_rrnd"); DBUG_PRINT("info",("offset: 0x%016qx", (ulonglong)filepos)); if (filepos == HA_OFFSET_ERROR) { Loading @@ -40,7 +44,7 @@ int myrg_rrnd(MYRG_INFO *info,byte *buf,ulonglong filepos) { if (info->open_tables == info->end_table) { /* No tables */ return (my_errno=HA_ERR_END_OF_FILE); DBUG_RETURN(my_errno=HA_ERR_END_OF_FILE); } isam_info=(info->current_table=info->open_tables)->table; if (info->cache_in_use) Loading @@ -60,11 +64,11 @@ int myrg_rrnd(MYRG_INFO *info,byte *buf,ulonglong filepos) if ((error=(*isam_info->s->read_rnd)(isam_info,(byte*) buf, (my_off_t) filepos,1)) != HA_ERR_END_OF_FILE) return (error); DBUG_RETURN(error); if (info->cache_in_use) mi_extra(info->current_table->table,HA_EXTRA_NO_CACHE); if (info->current_table+1 == info->end_table) return(HA_ERR_END_OF_FILE); DBUG_RETURN(HA_ERR_END_OF_FILE); info->current_table++; info->last_used_table=info->current_table; if (info->cache_in_use) Loading @@ -78,10 +82,11 @@ int myrg_rrnd(MYRG_INFO *info,byte *buf,ulonglong filepos) isam_info->lastinx= (uint) -1; } } info->current_table=_myrg_find_table(info,filepos); info->current_table=find_table(info->open_tables, info->end_table-1,filepos); isam_info=info->current_table->table; isam_info->update&= HA_STATE_CHANGED; return ((*isam_info->s->read_rnd) DBUG_RETURN((*isam_info->s->read_rnd) (isam_info, (byte*) buf, (ha_rows) (filepos - info->current_table->file_offset), 0)); Loading @@ -90,19 +95,21 @@ int myrg_rrnd(MYRG_INFO *info,byte *buf,ulonglong filepos) /* Find which table to use according to file-pos */ MYRG_TABLE *_myrg_find_table(MYRG_INFO *info, ulonglong pos) static MYRG_TABLE *find_table(MYRG_TABLE *start, MYRG_TABLE *end, ulonglong pos) { MYRG_TABLE *t; info->records=info->del=info->data_file_length=0; MYRG_TABLE *mid; DBUG_ENTER("find_table"); for (t=info->open_tables ; t < info->end_table ; t++) while (start != end) { t->file_offset=info->data_file_length; if (pos < t->file_offset) return t-1; info->data_file_length+=t->table->state->data_file_length; info->records+=t->table->state->records; info->del+=t->table->state->del; mid=start+((uint) (end-start)+1)/2; if (mid->file_offset > pos) end=mid-1; else start=mid; } return t-1; DBUG_PRINT("info",("offset: 0x%016qx, table: %s", (ulonglong)pos, start->table->filename)); DBUG_RETURN(start); }