summaryrefslogtreecommitdiff
path: root/storage/maria/ma_check.c
diff options
context:
space:
mode:
authorunknown <guilhem@gbichot4.local>2008-04-03 15:40:25 +0200
committerunknown <guilhem@gbichot4.local>2008-04-03 15:40:25 +0200
commitf094eff1d9d0c3cc101c6506b710a054228c8691 (patch)
treebe93a10c6b779c7ccf85949a660b4c8aa236cf57 /storage/maria/ma_check.c
parent50808b211527a165386b771c6f13d3ca7ba29f1a (diff)
downloadmariadb-git-f094eff1d9d0c3cc101c6506b710a054228c8691.tar.gz
Injecting more "const" declarations into code which does not change
pointed data. I ran gcc -Wcast-qual on storage/maria, this identified un-needed casts, a couple of functions which said they had a const parameter though they changed the pointed content! This is fixed here. Some suspicious places receive a comment. The original intention of running -Wcast-qual was to find what code changes R-tree keys: I added const words, but hidden casts like those of int2store (casts target to (uint16*)) removed const checking; -Wcast-qual helped find those hidden casts. Log handler does not change the content pointed by LEX_STRING::str it receives, so we now use a struct which has a const inside, to emphasize this and be able to pass "const uchar*" buffers to log handler without fear of their content being changed by it. One-line fix for a merge glitch (when merging from MyISAM). include/m_string.h: As Maria's log handler uses LEX_STRING but never changes the content pointed by LEX_STRING::str, and assigns uchar* into this member most of the time, we introduce a new struct LEX_CUSTRING (C const U unsigned) for the log handler. include/my_global.h: In macros which read pointed content: use const pointers so that gcc -Wcast-qual does not warn about casting a const pointer to non-const. include/my_handler.h: In macros which read pointed content: use const pointers so that gcc -Wcast-qual does not warn about casting a const pointer to non-const. ha_find_null() does not change *a. include/my_sys.h: insert_dynamic() does not change *element. include/myisampack.h: In macros which read pointed content: use const pointers so that gcc -Wcast-qual does not warn about casting a const pointer to non-const. mysys/array.c: insert_dynamic() does not change *element mysys/my_handler.c: ha_find_null() does not change *a storage/maria/ma_bitmap.c: Log handler receives const strings now storage/maria/ma_blockrec.c: Log handler receives const strings now. _ma_apply_undo_row_delete/update() do change *header. storage/maria/ma_blockrec.h: correct prototype storage/maria/ma_check.c: Log handler receives const strings now. Un-needed casts storage/maria/ma_checkpoint.c: Log handler receives const strings now storage/maria/ma_checksum.c: unneeded cast storage/maria/ma_commit.c: Log handler receives const strings now storage/maria/ma_create.c: Log handler receives const strings now storage/maria/ma_dbug.c: fixing warning of gcc -Wcast-qual storage/maria/ma_delete.c: Log handler receives const strings now storage/maria/ma_delete_all.c: Log handler receives const strings now storage/maria/ma_delete_table.c: Log handler receives const strings now storage/maria/ma_dynrec.c: fixing some warnings of gcc -Wcast-qual. Unneeded casts removed. Comment about function which lies. storage/maria/ma_ft_parser.c: fix for warnings of gcc -Wcast-qual, removing unneeded casts storage/maria/ma_ft_update.c: less casts, comment storage/maria/ma_key.c: less casts, stay const (warnings of gcc -Wcast-qual) storage/maria/ma_key_recover.c: Log handler receives const strings now storage/maria/ma_loghandler.c: Log handler receives const strings now storage/maria/ma_loghandler.h: Log handler receives const strings now storage/maria/ma_loghandler_lsn.h: In macros which read pointed content: use const pointers so that gcc -Wcast-qual does not warn about casting a const pointer to non-const. storage/maria/ma_page.c: Log handler receives const strings now; more const storage/maria/ma_recovery.c: Log handler receives const strings now storage/maria/ma_rename.c: Log handler receives const strings now storage/maria/ma_rt_index.c: more const, to emphasize that functions don't change pointed content. best_key= NULL was forgotten during merge from MyISAM a few days ago, was causing a Valgrind warning storage/maria/ma_rt_index.h: new proto storage/maria/ma_rt_key.c: more const storage/maria/ma_rt_key.h: new proto storage/maria/ma_rt_mbr.c: more const for functions which deserve it storage/maria/ma_rt_mbr.h: new prototype storage/maria/ma_rt_split.c: make const what is not changed. storage/maria/ma_search.c: un-needed casts, more const storage/maria/ma_sp_key.c: more const storage/maria/ma_unique.c: un-needed casts. storage/maria/ma_write.c: Log handler receives const strings now storage/maria/maria_def.h: some more const storage/maria/unittest/ma_test_loghandler-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_first_lsn-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_max_lsn-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_multigroup-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_multithread-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_noflush-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_nologs-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_pagecache-t.c: Log handler receives const strings now storage/maria/unittest/ma_test_loghandler_purge-t.c: Log handler receives const strings now
Diffstat (limited to 'storage/maria/ma_check.c')
-rw-r--r--storage/maria/ma_check.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/storage/maria/ma_check.c b/storage/maria/ma_check.c
index 9a7d189d291..69fede7b91a 100644
--- a/storage/maria/ma_check.c
+++ b/storage/maria/ma_check.c
@@ -703,7 +703,7 @@ void maria_collect_stats_nonulls_first(HA_KEYSEG *keyseg, ulonglong *notnull,
const uchar *key)
{
uint first_null, kp;
- first_null= ha_find_null(keyseg, (uchar*) key) - keyseg;
+ first_null= ha_find_null(keyseg, key) - keyseg;
/*
All prefix tuples that don't include keypart_{first_null} are not-null
tuples (and all others aren't), increment counters for them.
@@ -755,12 +755,12 @@ int maria_collect_stats_nonulls_next(HA_KEYSEG *keyseg, ulonglong *notnull,
last_key that is NULL or different from corresponding
value in prev_key.
*/
- ha_key_cmp(keyseg, (uchar*) prev_key, (uchar*) last_key, USE_WHOLE_KEY,
+ ha_key_cmp(keyseg, prev_key, last_key, USE_WHOLE_KEY,
SEARCH_FIND | SEARCH_NULL_ARE_NOT_EQUAL, diffs);
seg= keyseg + diffs[0] - 1;
/* Find first NULL in last_key */
- first_null_seg= ha_find_null(seg, (uchar*) last_key + diffs[1]) - keyseg;
+ first_null_seg= ha_find_null(seg, last_key + diffs[1]) - keyseg;
for (kp= 0; kp < first_null_seg; kp++)
notnull[kp]++;
@@ -5051,7 +5051,8 @@ static int sort_key_cmp(MARIA_SORT_PARAM *sort_param, const void *a,
const void *b)
{
uint not_used[2];
- return (ha_key_cmp(sort_param->seg, *((uchar**) a), *((uchar**) b),
+ return (ha_key_cmp(sort_param->seg, *((uchar* const *) a),
+ *((uchar* const *) b),
USE_WHOLE_KEY, SEARCH_SAME, not_used));
} /* sort_key_cmp */
@@ -5067,11 +5068,11 @@ static int sort_key_write(MARIA_SORT_PARAM *sort_param, const uchar *a)
if (sort_info->key_block->inited)
{
cmp=ha_key_cmp(sort_param->seg, (uchar*) sort_info->key_block->lastkey,
- (uchar*) a, USE_WHOLE_KEY,SEARCH_FIND | SEARCH_UPDATE,
+ a, USE_WHOLE_KEY,SEARCH_FIND | SEARCH_UPDATE,
diff_pos);
if (param->stats_method == MI_STATS_METHOD_NULLS_NOT_EQUAL)
ha_key_cmp(sort_param->seg, (uchar*) sort_info->key_block->lastkey,
- (uchar*) a, USE_WHOLE_KEY,
+ a, USE_WHOLE_KEY,
SEARCH_FIND | SEARCH_NULL_ARE_NOT_EQUAL, diff_pos);
else if (param->stats_method == MI_STATS_METHOD_IGNORE_NULLS)
{
@@ -5178,7 +5179,7 @@ static int sort_maria_ft_key_write(MARIA_SORT_PARAM *sort_param,
MARIA_SHARE *share= sort_info->info->s;
val_len=HA_FT_WLEN+share->base.rec_reflength;
- get_key_full_length_rdonly(a_len, (uchar *)a);
+ get_key_full_length_rdonly(a_len, a);
if (!ft_buf)
{
@@ -5204,7 +5205,7 @@ static int sort_maria_ft_key_write(MARIA_SORT_PARAM *sort_param,
get_key_full_length_rdonly(val_off, ft_buf->lastkey);
if (ha_compare_text(sort_param->seg->charset,
- ((uchar *)a)+1,a_len-1,
+ a+1,a_len-1,
(uchar*) ft_buf->lastkey+1,val_off-1, 0, 0)==0)
{
uchar *p;
@@ -5216,7 +5217,7 @@ static int sort_maria_ft_key_write(MARIA_SORT_PARAM *sort_param,
}
/* storing the key in the buffer. */
- memcpy (ft_buf->buf, (char *)a+a_len, val_len);
+ memcpy (ft_buf->buf, (const char *)a+a_len, val_len);
ft_buf->buf+=val_len;
if (ft_buf->buf < ft_buf->end)
return 0;
@@ -5971,7 +5972,7 @@ static ha_checksum maria_byte_checksum(const uchar *buf, uint length)
ha_checksum crc;
const uchar *end=buf+length;
for (crc=0; buf != end; buf++)
- crc=((crc << 1) + *((uchar*) buf)) +
+ crc=((crc << 1) + *buf) +
test(crc & (((ha_checksum) 1) << (8*sizeof(ha_checksum)-1)));
return crc;
}
@@ -6355,7 +6356,7 @@ my_bool write_log_record_for_repair(const HA_CHECK *param, MARIA_HA *info)
was it was at the start of the original repair (should be stored in log
record).
*/
- LEX_STRING log_array[TRANSLOG_INTERNAL_PARTS + 1];
+ LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 1];
uchar log_data[FILEID_STORE_SIZE + 8 + 8];
LSN lsn;
@@ -6367,7 +6368,7 @@ my_bool write_log_record_for_repair(const HA_CHECK *param, MARIA_HA *info)
/* org_key_map is used when recreating index after a load data infile */
int8store(log_data + FILEID_STORE_SIZE + 8, param->org_key_map);
- log_array[TRANSLOG_INTERNAL_PARTS + 0].str= (char*) log_data;
+ log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data;
log_array[TRANSLOG_INTERNAL_PARTS + 0].length= sizeof(log_data);
share->now_transactional= 1;
@@ -6408,11 +6409,11 @@ my_bool write_log_record_for_repair(const HA_CHECK *param, MARIA_HA *info)
*/
my_bool write_log_record_for_bulk_insert(MARIA_HA *info)
{
- LEX_STRING log_array[TRANSLOG_INTERNAL_PARTS + 1];
+ LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 1];
uchar log_data[LSN_STORE_SIZE + FILEID_STORE_SIZE];
LSN lsn;
lsn_store(log_data, info->trn->undo_lsn);
- log_array[TRANSLOG_INTERNAL_PARTS + 0].str= (char*) log_data;
+ log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data;
log_array[TRANSLOG_INTERNAL_PARTS + 0].length= sizeof(log_data);
return translog_write_record(&lsn, LOGREC_UNDO_BULK_INSERT,
info->trn, info,