summaryrefslogtreecommitdiff
path: root/storage/maria/ma_check.c
diff options
context:
space:
mode:
Diffstat (limited to 'storage/maria/ma_check.c')
-rw-r--r--storage/maria/ma_check.c40
1 files changed, 25 insertions, 15 deletions
diff --git a/storage/maria/ma_check.c b/storage/maria/ma_check.c
index a87de2bf9ed..05f85eab96b 100644
--- a/storage/maria/ma_check.c
+++ b/storage/maria/ma_check.c
@@ -941,7 +941,7 @@ static void record_pos_to_txt(MARIA_HA *info, my_off_t recpos,
else
{
my_off_t page= ma_recordpos_to_page(recpos);
- uint row= ma_recordpos_to_offset(recpos);
+ uint row= ma_recordpos_to_dir_entry(recpos);
char *end= longlong10_to_str(page, buff, 10);
*(end++)= ':';
longlong10_to_str(row, end, 10);
@@ -1370,6 +1370,9 @@ end:
/*
Check if layout on a page is ok
+
+ NOTES
+ This is for rows-in-block format.
*/
static int check_page_layout(HA_CHECK *param, MARIA_HA *info,
@@ -1442,6 +1445,8 @@ static int check_page_layout(HA_CHECK *param, MARIA_HA *info,
Check all rows on head page
NOTES
+ This is for rows-in-block format.
+
Before this, we have already called check_page_layout(), so
we know the block is logicaly correct (even if the rows may not be that)
@@ -1548,6 +1553,9 @@ static my_bool check_head_page(HA_CHECK *param, MARIA_HA *info, byte *record,
}
+/*
+ Check if rows-in-block data file is consistent
+*/
static int check_block_record(HA_CHECK *param, MARIA_HA *info, int extend,
byte *record)
@@ -1638,7 +1646,7 @@ static int check_block_record(HA_CHECK *param, MARIA_HA *info, int extend,
DBUG_ASSERT(0);
break;
case HEAD_PAGE:
- row_count= ((uchar*) page_buff)[DIR_ENTRY_OFFSET];
+ row_count= ((uchar*) page_buff)[DIR_COUNT_OFFSET];
empty_space= uint2korr(page_buff + EMPTY_SPACE_OFFSET);
param->used+= (PAGE_HEADER_SIZE + PAGE_SUFFIX_SIZE +
row_count * DIR_ENTRY_SIZE);
@@ -1647,7 +1655,7 @@ static int check_block_record(HA_CHECK *param, MARIA_HA *info, int extend,
full_dir= row_count == MAX_ROWS_PER_PAGE;
break;
case TAIL_PAGE:
- row_count= ((uchar*) page_buff)[DIR_ENTRY_OFFSET];
+ row_count= ((uchar*) page_buff)[DIR_COUNT_OFFSET];
empty_space= uint2korr(page_buff + EMPTY_SPACE_OFFSET);
param->used+= (PAGE_HEADER_SIZE + PAGE_SUFFIX_SIZE +
row_count * DIR_ENTRY_SIZE);
@@ -1712,7 +1720,7 @@ err:
}
- /* Check that record-link is ok */
+/* Check that record-link is ok */
int maria_chk_data_link(HA_CHECK *param, MARIA_HA *info,int extend)
{
@@ -4581,7 +4589,7 @@ int maria_recreate_table(HA_CHECK *param, MARIA_HA **org_info, char *filename)
MARIA_SHARE share;
MARIA_KEYDEF *keyinfo,*key,*key_end;
HA_KEYSEG *keysegs,*keyseg;
- MARIA_COLUMNDEF *recdef,*rec,*end;
+ MARIA_COLUMNDEF *columndef,*column,*end;
MARIA_UNIQUEDEF *uniquedef,*u_ptr,*u_end;
MARIA_STATUS_INFO status_info;
uint unpack,key_parts;
@@ -4610,7 +4618,7 @@ int maria_recreate_table(HA_CHECK *param, MARIA_HA **org_info, char *filename)
my_afree((gptr) keyinfo);
DBUG_RETURN(1);
}
- if (!(recdef=(MARIA_COLUMNDEF*)
+ if (!(columndef=(MARIA_COLUMNDEF*)
my_alloca(sizeof(MARIA_COLUMNDEF)*(share.base.fields+1))))
{
my_afree((gptr) keyinfo);
@@ -4620,22 +4628,24 @@ int maria_recreate_table(HA_CHECK *param, MARIA_HA **org_info, char *filename)
if (!(uniquedef=(MARIA_UNIQUEDEF*)
my_alloca(sizeof(MARIA_UNIQUEDEF)*(share.state.header.uniques+1))))
{
- my_afree((gptr) recdef);
+ my_afree((gptr) columndef);
my_afree((gptr) keyinfo);
my_afree((gptr) keysegs);
DBUG_RETURN(1);
}
/* Copy the column definitions */
- memcpy((byte*) recdef,(byte*) share.rec,
+ memcpy((byte*) columndef,(byte*) share.columndef,
(size_t) (sizeof(MARIA_COLUMNDEF)*(share.base.fields+1)));
- for (rec=recdef,end=recdef+share.base.fields; rec != end ; rec++)
+ for (column=columndef, end= columndef+share.base.fields;
+ column != end ;
+ column++)
{
if (unpack && !(share.options & HA_OPTION_PACK_RECORD) &&
- rec->type != FIELD_BLOB &&
- rec->type != FIELD_VARCHAR &&
- rec->type != FIELD_CHECK)
- rec->type=(int) FIELD_NORMAL;
+ column->type != FIELD_BLOB &&
+ column->type != FIELD_VARCHAR &&
+ column->type != FIELD_CHECK)
+ column->type=(int) FIELD_NORMAL;
}
/* Change the new key to point at the saved key segments */
@@ -4710,7 +4720,7 @@ int maria_recreate_table(HA_CHECK *param, MARIA_HA **org_info, char *filename)
*/
if (maria_create(filename, share.data_file_type,
share.base.keys - share.state.header.uniques,
- keyinfo, share.base.fields, recdef,
+ keyinfo, share.base.fields, columndef,
share.state.header.uniques, uniquedef,
&create_info,
HA_DONT_TOUCH_DATA))
@@ -4751,7 +4761,7 @@ int maria_recreate_table(HA_CHECK *param, MARIA_HA **org_info, char *filename)
end:
my_afree((gptr) uniquedef);
my_afree((gptr) keyinfo);
- my_afree((gptr) recdef);
+ my_afree((gptr) columndef);
my_afree((gptr) keysegs);
DBUG_RETURN(error);
}