summaryrefslogtreecommitdiff
path: root/storage/maria
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2012-11-22 10:19:31 +0100
committerSergei Golubchik <sergii@pisem.net>2012-11-22 10:19:31 +0100
commita48a91d90f07798deebe514d9d827fb719da7294 (patch)
treec438c045be1f3d8167b3746aa3ac87f848902aeb /storage/maria
parent3a1fdc9e7fc65e29320b988f9a69c8acab168ff9 (diff)
parent13ba0dd286f3296bfbbd202fa76d47770734b472 (diff)
downloadmariadb-git-a48a91d90f07798deebe514d9d827fb719da7294.tar.gz
5.3->5.5 merge
Diffstat (limited to 'storage/maria')
-rw-r--r--storage/maria/ha_maria.cc7
-rw-r--r--storage/maria/ma_blockrec.c8
-rw-r--r--storage/maria/ma_rrnd.c4
-rw-r--r--storage/maria/ma_test2.c65
4 files changed, 44 insertions, 40 deletions
diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc
index 785fe5d8226..1278d951a16 100644
--- a/storage/maria/ha_maria.cc
+++ b/storage/maria/ha_maria.cc
@@ -2484,9 +2484,10 @@ int ha_maria::info(uint flag)
errkey= maria_info.errkey;
my_store_ptr(dup_ref, ref_length, maria_info.dup_key_pos);
}
- /* Faster to always update, than to do it based on flag */
- stats.update_time= maria_info.update_time;
- stats.auto_increment_value= maria_info.auto_increment;
+ if (flag & HA_STATUS_TIME)
+ stats.update_time= maria_info.update_time;
+ if (flag & HA_STATUS_AUTO)
+ stats.auto_increment_value= maria_info.auto_increment;
return 0;
}
diff --git a/storage/maria/ma_blockrec.c b/storage/maria/ma_blockrec.c
index 8e0407c9d7a..71faa11fd2b 100644
--- a/storage/maria/ma_blockrec.c
+++ b/storage/maria/ma_blockrec.c
@@ -4669,7 +4669,7 @@ int _ma_read_block_record2(MARIA_HA *info, uchar *record,
uchar *data, uchar *end_of_data)
{
MARIA_SHARE *share= info->s;
- uchar *UNINIT_VAR(field_length_data), *blob_buffer, *start_of_data;
+ uchar *UNINIT_VAR(field_length_data), *UNINIT_VAR(blob_buffer), *start_of_data;
uint flag, null_bytes, cur_null_bytes, row_extents, field_lengths;
my_bool found_blob= 0;
MARIA_EXTENT_CURSOR extent;
@@ -4677,8 +4677,6 @@ int _ma_read_block_record2(MARIA_HA *info, uchar *record,
MARIA_ROW *cur_row= &info->cur_row;
DBUG_ENTER("_ma_read_block_record2");
- LINT_INIT(blob_buffer);
-
start_of_data= data;
flag= (uint) (uchar) data[0];
cur_null_bytes= share->base.original_null_bytes;
@@ -5106,6 +5104,7 @@ int _ma_read_block_record(MARIA_HA *info, uchar *record,
uchar *data, *end_of_data, *buff;
uint offset;
uint block_size= share->block_size;
+ int ret;
DBUG_ENTER("_ma_read_block_record");
DBUG_PRINT("enter", ("rowid: %lu page: %lu rownr: %u",
(ulong) record_pos,
@@ -5127,7 +5126,8 @@ int _ma_read_block_record(MARIA_HA *info, uchar *record,
my_errno= HA_ERR_RECORD_DELETED; /* File crashed */
DBUG_RETURN(HA_ERR_RECORD_DELETED);
}
- DBUG_RETURN(_ma_read_block_record2(info, record, data, end_of_data));
+ ret= _ma_read_block_record2(info, record, data, end_of_data);
+ DBUG_RETURN(ret);
}
diff --git a/storage/maria/ma_rrnd.c b/storage/maria/ma_rrnd.c
index 24c4bfdd467..8c35c71c95e 100644
--- a/storage/maria/ma_rrnd.c
+++ b/storage/maria/ma_rrnd.c
@@ -30,6 +30,7 @@
int maria_rrnd(MARIA_HA *info, uchar *buf, MARIA_RECORD_POS filepos)
{
+ int ret;
DBUG_ENTER("maria_rrnd");
DBUG_ASSERT(filepos != HA_OFFSET_ERROR);
@@ -40,5 +41,6 @@ int maria_rrnd(MARIA_HA *info, uchar *buf, MARIA_RECORD_POS filepos)
DBUG_RETURN(my_errno);
info->cur_row.lastpos= filepos; /* Remember for update */
- DBUG_RETURN((*info->s->read_record)(info, buf, filepos));
+ ret= (*info->s->read_record)(info, buf, filepos);
+ DBUG_RETURN(ret);
}
diff --git a/storage/maria/ma_test2.c b/storage/maria/ma_test2.c
index 5d0882f3fcb..ea1978b4ee5 100644
--- a/storage/maria/ma_test2.c
+++ b/storage/maria/ma_test2.c
@@ -50,7 +50,7 @@ static ulong pagecache_size=8192*32;
static enum data_file_type record_type= DYNAMIC_RECORD;
static uint keys=MARIA_KEYS,recant=1000;
-static uint16 key1[1001],key3[5000];
+static uint16 key1[1001],key3[5001];
static uchar record[300],record2[300],key[100],key2[100];
static uchar read_record[300],read_record2[300],read_record3[300];
static HA_KEYSEG glob_keyseg[MARIA_KEYS][MAX_PARTS];
@@ -222,7 +222,7 @@ int main(int argc, char *argv[])
blob_buffer=0;
for (i=1000 ; i>0 ; i--) key1[i]=0;
- for (i=4999 ; i>0 ; i--) key3[i]=0;
+ for (i=5000 ; i>0 ; i--) key3[i]=0;
if (!silent)
printf("- Creating maria-file\n");
@@ -280,7 +280,7 @@ int main(int argc, char *argv[])
if (key3[n3] == 1 && first_key <3 && first_key+keys >= 3)
{
printf("Error: Didn't get error when writing second key: '%8d'\n",n3);
- goto err;
+ goto err2;
}
write_count++; key1[n1]++; key3[n3]=1;
}
@@ -341,7 +341,7 @@ int main(int argc, char *argv[])
key, keyinfo[0].seg[0].length))
{
printf("Found wrong record when searching for key: \"%s\"\n",key);
- goto err;
+ goto err2;
}
if (opt_delete == (uint) remove_count) /* While testing */
goto end;
@@ -394,7 +394,7 @@ int main(int argc, char *argv[])
printf("Found wrong record when searching for key: \"%s\"; Found \"%.*s\"\n",
key, keyinfo[0].seg[0].length,
read_record+keyinfo[0].seg[0].start);
- goto err;
+ goto err2;
}
if (use_blob)
{
@@ -455,7 +455,7 @@ int main(int argc, char *argv[])
if (memcmp(read_record,read_record2,reclength) != 0)
{
printf("maria_rsame didn't find same record\n");
- goto err;
+ goto err2;
}
info.recpos=maria_position(file);
if (maria_rfirst(file,read_record2,0) ||
@@ -463,7 +463,7 @@ int main(int argc, char *argv[])
memcmp(read_record,read_record2,reclength) != 0)
{
printf("maria_rsame_with_pos didn't find same record\n");
- goto err;
+ goto err2;
}
{
int skr;
@@ -484,7 +484,7 @@ int main(int argc, char *argv[])
if (ant != dupp_keys)
{
printf("next: Found: %d keys of %d\n",ant,dupp_keys);
- goto err;
+ goto err2;
}
ant=0;
while (maria_rprev(file,read_record3,0) == 0 &&
@@ -492,7 +492,7 @@ int main(int argc, char *argv[])
if (ant != dupp_keys)
{
printf("prev: Found: %d records of %d\n",ant,dupp_keys);
- goto err;
+ goto err2;
}
/* Check of maria_rnext_same */
@@ -504,7 +504,7 @@ int main(int argc, char *argv[])
if (ant != dupp_keys || my_errno != HA_ERR_END_OF_FILE)
{
printf("maria_rnext_same: Found: %d records of %d\n",ant,dupp_keys);
- goto err;
+ goto err2;
}
}
@@ -531,7 +531,7 @@ int main(int argc, char *argv[])
printf("Can't find last record\n");
DBUG_DUMP("record2", read_record2, reclength);
DBUG_DUMP("record3", read_record3, reclength);
- goto err;
+ goto err2;
}
ant=1;
while (maria_rprev(file,read_record3,0) == 0 && ant < write_count+10)
@@ -539,12 +539,12 @@ int main(int argc, char *argv[])
if (ant != write_count - opt_delete)
{
printf("prev: I found: %d records of %d\n",ant,write_count);
- goto err;
+ goto err2;
}
if (bcmp(read_record,read_record3,reclength))
{
printf("Can't find first record\n");
- goto err;
+ goto err2;
}
if (!silent)
@@ -585,7 +585,7 @@ int main(int argc, char *argv[])
if (bcmp(read_record+start,key,(uint) i))
{
puts("Didn't find right record");
- goto err;
+ goto err2;
}
}
#endif
@@ -605,7 +605,7 @@ int main(int argc, char *argv[])
if (ant != dupp_keys-1)
{
printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-1);
- goto err;
+ goto err2;
}
}
if (dupp_keys>4)
@@ -623,7 +623,7 @@ int main(int argc, char *argv[])
if (ant != dupp_keys-2)
{
printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-2);
- goto err;
+ goto err2;
}
}
if (dupp_keys > 6)
@@ -643,7 +643,7 @@ int main(int argc, char *argv[])
if (ant != dupp_keys-3)
{
printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-3);
- goto err;
+ goto err2;
}
if (!silent)
@@ -658,7 +658,7 @@ int main(int argc, char *argv[])
if (ant != dupp_keys-4)
{
printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-4);
- goto err;
+ goto err2;
}
}
@@ -687,7 +687,7 @@ int main(int argc, char *argv[])
if (i != write_count && i != write_count - opt_delete)
{
printf("Found wrong number of rows while scanning table\n");
- goto err;
+ goto err2;
}
if (maria_rsame_with_pos(file,read_record,0,info.recpos))
@@ -695,7 +695,7 @@ int main(int argc, char *argv[])
if (bcmp(read_record,read_record2,reclength) != 0)
{
printf("maria_rsame_with_pos didn't find same record\n");
- goto err;
+ goto err2;
}
for (i=min(2,keys) ; i-- > 0 ;)
@@ -704,7 +704,7 @@ int main(int argc, char *argv[])
if (bcmp(read_record,read_record2,reclength) != 0)
{
printf("maria_rsame didn't find same record\n");
- goto err;
+ goto err2;
}
}
if (!silent)
@@ -731,7 +731,7 @@ int main(int argc, char *argv[])
{
printf("maria_records_range returned %ld; Should be about %ld\n",
(long) range_records,(long) info.records);
- goto err;
+ goto err2;
}
if (verbose)
{
@@ -768,7 +768,7 @@ int main(int argc, char *argv[])
{
printf("maria_records_range for key: %d returned %lu; Should be about %lu\n",
i, (ulong) range_records, (ulong) records);
- goto err;
+ goto err2;
}
if (verbose && records)
{
@@ -783,13 +783,13 @@ int main(int argc, char *argv[])
if (!silent)
printf("- maria_info\n");
maria_status(file,&info,HA_STATUS_VARIABLE | HA_STATUS_CONST);
- if (info.records != write_count-opt_delete || info.deleted > opt_delete + update
- || info.keys != keys)
+ if (info.records != write_count-opt_delete ||
+ info.deleted > opt_delete + update || info.keys != keys)
{
puts("Wrong info from maria_info");
printf("Got: records: %lu delete: %lu i_keys: %d\n",
(ulong) info.records, (ulong) info.deleted, info.keys);
- goto err;
+ goto err2;
}
if (verbose)
{
@@ -828,7 +828,7 @@ int main(int argc, char *argv[])
printf("scan with cache: I can only find: %d records of %d\n",
ant,write_count-opt_delete);
maria_scan_end(file);
- goto err;
+ goto err2;
}
if (maria_extra(file,HA_EXTRA_NO_CACHE,0))
{
@@ -848,7 +848,7 @@ int main(int argc, char *argv[])
printf("scan with cache: I can only find: %d records of %d\n",
ant,write_count-opt_delete);
maria_scan_end(file);
- goto err;
+ goto err2;
}
maria_scan_end(file);
@@ -872,7 +872,7 @@ int main(int argc, char *argv[])
{
printf("maria_rrnd didn't advance filepointer; old: %ld, new: %ld\n",
(long) lastpos, (long) info.recpos);
- goto err;
+ goto err2;
}
lastpos=info.recpos;
if (error == 0)
@@ -897,7 +897,7 @@ int main(int argc, char *argv[])
printf("Found blob with wrong info at %ld\n",(long) lastpos);
maria_scan_end(file);
my_errno= 0;
- goto err;
+ goto err2;
}
}
}
@@ -920,7 +920,7 @@ int main(int argc, char *argv[])
printf("Deleted only %d of %d records (%d parts)\n",opt_delete,write_count,
found_parts);
maria_scan_end(file);
- goto err;
+ goto err2;
}
if (testflag == 6)
goto end;
@@ -1021,10 +1021,11 @@ reads: %10lu\n",
return(0);
err:
printf("got error: %d when using MARIA-database\n",my_errno);
+err2:
if (file)
{
if (maria_commit(file))
- goto err;
+ printf("got error: %d when using MARIA-database\n",my_errno);
maria_close(file);
}
maria_end();