summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2005-04-06 17:22:21 +0300
committerunknown <monty@mysql.com>2005-04-06 17:22:21 +0300
commit080c8ab39bb110370b64837613e8453702b353c1 (patch)
treee94c78c8db8d7f6ca96a83d37f1af529688c9a72
parentf3aa7770b647a9256b3c93f0ef4823b4cb73af55 (diff)
downloadmariadb-git-080c8ab39bb110370b64837613e8453702b353c1.tar.gz
Fixed errors descovered by valgrind 2.4
Added suppression file for some valgrind warnings that are not real errors mysql-test/mysql-test-run.sh: Added suppression of some valgrind warnings that are not real errors mysql-test/r/heap.result: Cleanup old tests and added new tests mysql-test/t/heap.test: Cleanup old tests and added new tests mysys/default.c: Removed duplicate fn_format() scripts/make_binary_distribution.sh: Added valgrind suppress file sql/ha_federated.cc: Ensure that 'socket' is initialized properly sql/ha_heap.cc: Ensure that with_auto_increment is initialized properly sql/mysqld.cc: Ensure that create_time is initialized for cached threads sql/sql_parse.cc: Indentation fix strings/decimal.c: Fixed wrong tests
-rw-r--r--mysql-test/mysql-test-run.sh2
-rw-r--r--mysql-test/r/heap.result21
-rw-r--r--mysql-test/t/heap.test27
-rw-r--r--mysql-test/valgrind.supp94
-rw-r--r--mysys/default.c4
-rw-r--r--scripts/make_binary_distribution.sh1
-rw-r--r--sql/ha_federated.cc6
-rw-r--r--sql/ha_heap.cc1
-rw-r--r--sql/mysqld.cc3
-rw-r--r--sql/sql_parse.cc3
-rw-r--r--strings/decimal.c2
11 files changed, 121 insertions, 43 deletions
diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh
index ac1755cab9c..d294ef50421 100644
--- a/mysql-test/mysql-test-run.sh
+++ b/mysql-test/mysql-test-run.sh
@@ -418,7 +418,7 @@ while test $# -gt 0; do
fi
# >=2.1.2 requires the --tool option, some versions write to stdout, some to stderr
valgrind --help 2>&1 | grep "\-\-tool" > /dev/null && VALGRIND="$VALGRIND --tool=memcheck"
- VALGRIND="$VALGRIND --alignment=8 --leak-check=yes --num-callers=16"
+ VALGRIND="$VALGRIND --alignment=8 --leak-check=yes --num-callers=16 --suppressions=$CWD/valgrind.supp"
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-safemalloc --skip-bdb"
EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-safemalloc --skip-bdb"
SLEEP_TIME_AFTER_RESTART=10
diff --git a/mysql-test/r/heap.result b/mysql-test/r/heap.result
index db20b242962..631bd8c713c 100644
--- a/mysql-test/r/heap.result
+++ b/mysql-test/r/heap.result
@@ -667,14 +667,7 @@ drop table t1;
set storage_engine=MyISAM;
create table t1 (a bigint unsigned auto_increment primary key, b int,
key (b, a)) engine=heap;
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
+insert t1 (b) values (1),(1),(1),(1),(1),(1),(1),(1);
select * from t1;
a b
1 1
@@ -688,14 +681,7 @@ a b
drop table t1;
create table t1 (a int not null, b int not null auto_increment,
primary key(a, b), key(b)) engine=heap;
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
+insert t1 (a) values (1),(1),(1),(1),(1),(1),(1),(1);
select * from t1;
a b
1 1
@@ -707,3 +693,6 @@ a b
1 7
1 8
drop table t1;
+create table t1 (a int not null, b int not null auto_increment,
+primary key(a, b)) engine=heap;
+ERROR 42000: Incorrect table definition; there can be only one auto column and it must be defined as a key
diff --git a/mysql-test/t/heap.test b/mysql-test/t/heap.test
index b69649585ff..c36474bda30 100644
--- a/mysql-test/t/heap.test
+++ b/mysql-test/t/heap.test
@@ -413,25 +413,16 @@ eval set storage_engine=$default;
create table t1 (a bigint unsigned auto_increment primary key, b int,
key (b, a)) engine=heap;
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-insert t1 (b) values (1);
-select * from t1;
+insert t1 (b) values (1),(1),(1),(1),(1),(1),(1),(1);
+select * from t1;
drop table t1;
+
create table t1 (a int not null, b int not null auto_increment,
primary key(a, b), key(b)) engine=heap;
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-insert t1 (a) values (1);
-select * from t1;
+insert t1 (a) values (1),(1),(1),(1),(1),(1),(1),(1);
+select * from t1;
drop table t1;
+
+--error 1075
+create table t1 (a int not null, b int not null auto_increment,
+ primary key(a, b)) engine=heap;
diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp
new file mode 100644
index 00000000000..d8a13ca9dfd
--- /dev/null
+++ b/mysql-test/valgrind.supp
@@ -0,0 +1,94 @@
+#
+# Suppress some common (not fatal) errors in system libraries found by valgrind
+#
+
+#
+# Pthread doesn't free all thread specific memory before program exists
+#
+{
+ pthread allocate_tls memory loss
+ Memcheck:Leak
+ fun:calloc
+ fun:_dl_allocate_tls
+ fun:allocate_stack
+ fun:pthread_create@@GLIBC_2.1
+}
+
+{
+ pthread allocate_dtv memory loss
+ Memcheck:Leak
+ fun:calloc
+ fun:allocate_dtv
+ fun:_dl_allocate_tls_storage
+ fun:__GI__dl_allocate_tls
+ fun:pthread_create
+}
+
+{
+ pthread memalign memory loss
+ Memcheck:Leak
+ fun:memalign
+ fun:_dl_allocate_tls_storage
+ fun:__GI__dl_allocate_tls
+ fun:pthread_create
+}
+
+{
+ pthread errno
+ Memcheck:Leak
+ fun:calloc
+ fun:_dlerror_run
+ fun:dlsym
+ fun:__errno_location
+}
+
+
+#
+# Warnings in libz becasue it works with aligned memory(?)
+#
+
+{
+ libz tr_flush_block
+ Memcheck:Cond
+ fun:_tr_flush_block
+ fun:deflate_slow
+ fun:deflate
+ fun:do_flush
+ fun:gzclose
+}
+
+{
+ libz tr_flush_block2
+ Memcheck:Cond
+ fun:_tr_flush_block
+ fun:deflate_slow
+ fun:deflate
+ fun:compress2
+}
+
+{
+ libz longest_match
+ Memcheck:Cond
+ fun:longest_match
+ fun:deflate_slow
+ fun:deflate
+ fun:do_flush
+}
+
+{
+ libz longest_match2
+ Memcheck:Cond
+ fun:longest_match
+ fun:deflate_slow
+ fun:deflate
+ fun:compress2
+}
+
+{
+ libz deflate
+ Memcheck:Cond
+ obj:/usr/lib/libz.so.*
+ obj:/usr/lib/libz.so.*
+ fun:deflate
+ fun:compress2
+}
diff --git a/mysys/default.c b/mysys/default.c
index ddff4e26be5..6352cc18d56 100644
--- a/mysys/default.c
+++ b/mysys/default.c
@@ -477,13 +477,13 @@ static int search_default_file_with_ext(Process_option_func opt_handler,
if ((stat_info.st_mode & S_IWOTH) &&
(stat_info.st_mode & S_IFMT) == S_IFREG)
{
- fprintf(stderr, "warning: World-writable config file %s is ignored\n",
+ fprintf(stderr, "Warning: World-writable config file '%s' is ignored\n",
name);
return 0;
}
}
#endif
- if (!(fp= my_fopen(fn_format(name, name, "", "", 4), O_RDONLY, MYF(0))))
+ if (!(fp= my_fopen(name, O_RDONLY, MYF(0))))
return 0; /* Ignore wrong files */
while (fgets(buff, sizeof(buff) - 1, fp))
diff --git a/scripts/make_binary_distribution.sh b/scripts/make_binary_distribution.sh
index ddce55c063d..22bf13d8bef 100644
--- a/scripts/make_binary_distribution.sh
+++ b/scripts/make_binary_distribution.sh
@@ -207,6 +207,7 @@ rm -f $MYSQL_SHARE/Makefile* $MYSQL_SHARE/*/*.OLD
for i in mysql-test/mysql-test-run mysql-test/install_test_db \
mysql-test/mysql-test-run.pl mysql-test/README \
+ mysql-test/valgrind.supp \
netware/mysql_test_run.nlm netware/install_test_db.ncf
do
if [ -f $i ]
diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc
index 8000aae180d..33acc9cad0b 100644
--- a/sql/ha_federated.cc
+++ b/sql/ha_federated.cc
@@ -548,12 +548,12 @@ error:
static int parse_url(FEDERATED_SHARE *share, TABLE *table,
uint table_create_flag)
{
- DBUG_ENTER("ha_federated::parse_url");
-
- share->port= 0;
uint error_num= (table_create_flag ? ER_CANT_CREATE_TABLE :
ER_CONNECT_TO_MASTER);
+ DBUG_ENTER("ha_federated::parse_url");
+ share->port= 0;
+ share->socket= 0;
share->scheme= my_strdup(table->s->comment, MYF(0));
if ((share->username= strstr(share->scheme, "://")))
diff --git a/sql/ha_heap.cc b/sql/ha_heap.cc
index de51fad4365..0d700f6c9a5 100644
--- a/sql/ha_heap.cc
+++ b/sql/ha_heap.cc
@@ -548,6 +548,7 @@ int ha_heap::create(const char *name, TABLE *table_arg,
hp_create_info.auto_increment= (create_info->auto_increment_value ?
create_info->auto_increment_value - 1 : 0);
hp_create_info.max_table_size=current_thd->variables.max_heap_table_size;
+ hp_create_info.with_auto_increment= found_real_auto_increment;
max_rows = (ha_rows) (hp_create_info.max_table_size / mem_per_row);
error= heap_create(fn_format(buff,name,"","",4+2),
keys, keydef, share->reclength,
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index e1303585114..7611270fc42 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -1519,6 +1519,7 @@ void end_thread(THD *thd, bool put_in_cache)
thd=thread_cache.get();
thd->real_id=pthread_self();
(void) thd->store_globals();
+ thd->thr_create_time= time(NULL);
threads.append(thd);
pthread_mutex_unlock(&LOCK_thread_count);
DBUG_VOID_RETURN;
@@ -5180,7 +5181,7 @@ log and this option does nothing anymore.",
(gptr*) &dflt_key_cache_var.param_buff_size,
(gptr*) 0,
0, (GET_ULL | GET_ASK_ADDR),
- REQUIRED_ARG, KEY_CACHE_SIZE, MALLOC_OVERHEAD, UINT_MAX32, MALLOC_OVERHEAD,
+ REQUIRED_ARG, KEY_CACHE_SIZE, MALLOC_OVERHEAD, ~(ulong) 0, MALLOC_OVERHEAD,
IO_SIZE, 0},
{"key_cache_age_threshold", OPT_KEY_CACHE_AGE_THRESHOLD,
"This characterizes the number of hits a hot block has to be untouched until it is considered aged enough to be downgraded to a warm block. This specifies the percentage ratio of that number of hits to the total number of blocks in key cache",
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 1d7eba4ce43..9e7cf81de3c 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -1103,7 +1103,8 @@ pthread_handler_decl(handle_one_connection,arg)
thd->proc_info=0;
thd->set_time();
thd->init_for_queries();
- while (!net->error && net->vio != 0 && !(thd->killed == THD::KILL_CONNECTION))
+ while (!net->error && net->vio != 0 &&
+ !(thd->killed == THD::KILL_CONNECTION))
{
net->no_send_error= 0;
if (do_command(thd))
diff --git a/strings/decimal.c b/strings/decimal.c
index 56dba61d887..9af95511f6d 100644
--- a/strings/decimal.c
+++ b/strings/decimal.c
@@ -806,7 +806,7 @@ internal_str2dec(const char *from, decimal_t *to, char **end, my_bool fixed)
if (s < end_of_string && *s=='.')
{
endp= s+1;
- while (s < end_of_string && my_isdigit(&my_charset_latin1, *endp))
+ while (endp < end_of_string && my_isdigit(&my_charset_latin1, *endp))
endp++;
frac= endp - s - 1;
}