diff options
author | unknown <guilhem@gbichot4.local> | 2008-04-03 15:40:25 +0200 |
---|---|---|
committer | unknown <guilhem@gbichot4.local> | 2008-04-03 15:40:25 +0200 |
commit | f094eff1d9d0c3cc101c6506b710a054228c8691 (patch) | |
tree | be93a10c6b779c7ccf85949a660b4c8aa236cf57 /storage/maria/ma_rt_index.c | |
parent | 50808b211527a165386b771c6f13d3ca7ba29f1a (diff) | |
download | mariadb-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_rt_index.c')
-rw-r--r-- | storage/maria/ma_rt_index.c | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/storage/maria/ma_rt_index.c b/storage/maria/ma_rt_index.c index fea8b7c2d29..1608900d8f3 100644 --- a/storage/maria/ma_rt_index.c +++ b/storage/maria/ma_rt_index.c @@ -455,10 +455,11 @@ int maria_rtree_get_next(MARIA_HA *info, uint keynr, uint key_length) */ #ifdef PICK_BY_PERIMETER -static uchar *maria_rtree_pick_key(MARIA_HA *info, MARIA_KEYDEF *keyinfo, - uchar *key, - uint key_length, uchar *page_buf, - uint nod_flag) +static const uchar *maria_rtree_pick_key(const MARIA_HA *info, + const MARIA_KEYDEF *keyinfo, + const uchar *key, + uint key_length, const uchar *page_buf, + uint nod_flag) { double increase; double best_incr; @@ -491,22 +492,22 @@ static uchar *maria_rtree_pick_key(MARIA_HA *info, MARIA_KEYDEF *keyinfo, #endif /*PICK_BY_PERIMETER*/ #ifdef PICK_BY_AREA -static uchar *maria_rtree_pick_key(MARIA_HA *info, MARIA_KEYDEF *keyinfo, - uchar *key, - uint key_length, uchar *page_buf, - uint nod_flag) +static const uchar *maria_rtree_pick_key(const MARIA_HA *info, + const MARIA_KEYDEF *keyinfo, + const uchar *key, + uint key_length, const uchar *page_buf, + uint nod_flag) { MARIA_SHARE *share= info->s; double increase; double best_incr= DBL_MAX; double area; double best_area; - uchar *best_key; - uchar *k= rt_PAGE_FIRST_KEY(share, page_buf, nod_flag); - uchar *last= rt_PAGE_END(share, page_buf); + const uchar *best_key= NULL; + const uchar *k= rt_PAGE_FIRST_KEY(share, page_buf, nod_flag); + const uchar *last= rt_PAGE_END(share, page_buf); LINT_INIT(best_area); - LINT_INIT(best_key); for (; k < last; k= rt_PAGE_NEXT_KEY(share, k, key_length, nod_flag)) { @@ -537,8 +538,9 @@ static uchar *maria_rtree_pick_key(MARIA_HA *info, MARIA_KEYDEF *keyinfo, 1 Child was split */ -static int maria_rtree_insert_req(MARIA_HA *info, MARIA_KEYDEF *keyinfo, - uchar *key, +static int maria_rtree_insert_req(MARIA_HA *info, + const MARIA_KEYDEF *keyinfo, + const uchar *key, uint key_length, my_off_t page, my_off_t *new_page, int ins_level, int level) @@ -565,9 +567,10 @@ static int maria_rtree_insert_req(MARIA_HA *info, MARIA_KEYDEF *keyinfo, if ((ins_level == -1 && nod_flag) || /* key: go down to leaf */ (ins_level > -1 && ins_level > level)) /* branch: go down to ins_level */ { - if ((k= maria_rtree_pick_key(info, keyinfo, key, key_length, page_buf, - nod_flag)) == NULL) + if ((k= (uchar *)maria_rtree_pick_key(info, keyinfo, key, key_length, + page_buf, nod_flag)) == NULL) goto err1; + /* k is now a pointer inside the page_buf buffer */ switch ((res= maria_rtree_insert_req(info, keyinfo, key, key_length, _ma_kpos(nod_flag, k), new_page, ins_level, level + 1))) @@ -639,8 +642,9 @@ err1: 1 Root was split */ -static int maria_rtree_insert_level(MARIA_HA *info, uint keynr, uchar *key, - uint key_length, int ins_level) +int maria_rtree_insert_level(MARIA_HA *info, uint keynr, + const uchar *key, + uint key_length, int ins_level) { my_off_t old_root; MARIA_SHARE *share= info->s; @@ -754,7 +758,8 @@ err1: 0 OK */ -int maria_rtree_insert(MARIA_HA *info, uint keynr, uchar *key, uint key_length) +int maria_rtree_insert(MARIA_HA *info, uint keynr, + uchar *key, uint key_length) { int res; DBUG_ENTER("maria_rtree_insert"); @@ -809,7 +814,7 @@ err1: */ static int maria_rtree_delete_req(MARIA_HA *info, MARIA_KEYDEF *keyinfo, - uchar *key, + const uchar *key, uint key_length, my_off_t page, uint *page_size, stPageList *ReinsertList, int level) @@ -970,7 +975,8 @@ err1: 0 Deleted */ -int maria_rtree_delete(MARIA_HA *info, uint keynr, uchar *key, uint key_length) +int maria_rtree_delete(MARIA_HA *info, uint keynr, + uchar *key, uint key_length) { MARIA_SHARE *share= info->s; uint page_size; |