summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <monty@mashka.mysql.fi>2003-01-05 20:18:49 +0200
committerunknown <monty@mashka.mysql.fi>2003-01-05 20:18:49 +0200
commite3c7f4d85ec4caf59fc408cf5643e5dc64e9a3d4 (patch)
treece42417ba1ab6dac8c367a9ae180ea377956e95a /sql
parent79fba6da8f099566bbf711b592aab60909b1f66d (diff)
downloadmariadb-git-e3c7f4d85ec4caf59fc408cf5643e5dc64e9a3d4.tar.gz
A lot of portability fixes.
Added rename table for BDB. This fixes a bug in ALTER TABLE with BDB tables. BUILD/SETUP.sh: Enabled uninitalized warnings for debug builds. Build-tools/Do-compile: Added options --no-mysqltest and --no-benchmarks Log time before each stage Removed warnings on some OS (at least hpux11) acinclude.m4: Fixed call to wrong function configure.in: Don't use -O3 as compiler option with aCC innobase/include/univ.i: Removed compiler warning (on Hpux11) innobase/os/os0file.c: Removed compiler warning (on Hpux11) innobase/trx/trx0sys.c: Removed compiler warning (on Hpux11) innobase/trx/trx0trx.c: Removed compiler warning (on Hpux11) innobase/ut/ut0ut.c: Removed compiler warning (with gcc) myisam/mi_check.c: Added missing 'static' myisam/mi_test1.c: Added missing 'static' mysys/my_getopt.c: Added missing 'static' sql/ha_berkeley.cc: Added rename table. This fixes a bug in ALTER TABLE with BDB tables. Fixed compilation problem on OSF1 sql/ha_berkeley.h: Added rename table. This fixes a bug in ALTER TABLE with BDB tables. sql/mini_client.cc: Added reinterpret cast to avoid some warnings. sql/sql_parse.cc: Added reinterpret cast to avoid some warnings. Removed usage of strnlen() as this gave portability problems. sql/sql_union.cc: Added reinterpret cast to avoid some warnings. sql/table.cc: Added reinterpret cast to avoid some warnings. tools/mysqlmanager.c: Added missing 'static'
Diffstat (limited to 'sql')
-rw-r--r--sql/ha_berkeley.cc24
-rw-r--r--sql/ha_berkeley.h1
-rw-r--r--sql/mini_client.cc11
-rw-r--r--sql/sql_parse.cc11
-rw-r--r--sql/sql_union.cc2
-rw-r--r--sql/table.cc2
6 files changed, 40 insertions, 11 deletions
diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc
index 06acf4fa2e3..2154fbd7a32 100644
--- a/sql/ha_berkeley.cc
+++ b/sql/ha_berkeley.cc
@@ -1921,6 +1921,26 @@ int ha_berkeley::delete_table(const char *name)
DBUG_RETURN(error);
}
+int ha_berkeley::rename_table(const char * from, const char * to)
+{
+ int error;
+ char from_buff[FN_REFLEN];
+ char to_buff[FN_REFLEN];
+
+ if ((error= db_create(&file, db_env, 0)))
+ my_errno= error;
+ else
+ {
+ /* On should not do a file->close() after rename returns */
+ error= file->rename(file,
+ fn_format(from_buff, from, "", ha_berkeley_ext, 2 | 4),
+ NULL, fn_format(to_buff, to, "", ha_berkeley_ext,
+ 2 | 4), 0);
+ }
+ return error;
+}
+
+
/*
How many seeks it will take to read through the table
This is to be comparable to the number returned by records_in_range so
@@ -2080,7 +2100,7 @@ int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt)
free(stat);
stat=0;
}
- if (key_file[i]->stat(key_file[i], (void*) &stat, 0, 0))
+ if ((key_file[i]->stat)(key_file[i], (void*) &stat, 0, 0))
goto err; /* purecov: inspected */
share->rec_per_key[i]= (stat->bt_ndata /
(stat->bt_nkeys ? stat->bt_nkeys : 1));
@@ -2093,7 +2113,7 @@ int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt)
free(stat);
stat=0;
}
- if (file->stat(file, (void*) &stat, 0, 0))
+ if ((file->stat)(file, (void*) &stat, 0, 0))
goto err; /* purecov: inspected */
}
pthread_mutex_lock(&share->mutex);
diff --git a/sql/ha_berkeley.h b/sql/ha_berkeley.h
index f2a81d123f1..d2dc5e3216d 100644
--- a/sql/ha_berkeley.h
+++ b/sql/ha_berkeley.h
@@ -152,6 +152,7 @@ class ha_berkeley: public handler
int create(const char *name, register TABLE *form,
HA_CREATE_INFO *create_info);
int delete_table(const char *name);
+ int rename_table(const char* from, const char* to);
THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to,
enum thr_lock_type lock_type);
diff --git a/sql/mini_client.cc b/sql/mini_client.cc
index 5600983817b..38b3c22b91b 100644
--- a/sql/mini_client.cc
+++ b/sql/mini_client.cc
@@ -542,10 +542,13 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user,
bzero((char*) &UNIXaddr,sizeof(UNIXaddr));
UNIXaddr.sun_family = AF_UNIX;
strmov(UNIXaddr.sun_path, unix_socket);
- if (mc_sock_connect(sock,(struct sockaddr *) &UNIXaddr, sizeof(UNIXaddr),
+ if (mc_sock_connect(sock,
+ my_reinterpret_cast(struct sockaddr *) (&UNIXaddr),
+ sizeof(UNIXaddr),
mysql->options.connect_timeout) <0)
{
- DBUG_PRINT("error",("Got error %d on connect to local server",socket_errno));
+ DBUG_PRINT("error",("Got error %d on connect to local server",
+ socket_errno));
net->last_errno=CR_CONNECTION_ERROR;
sprintf(net->last_error,ER(net->last_errno),unix_socket,socket_errno);
goto error;
@@ -632,7 +635,9 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user,
my_gethostbyname_r_free();
}
sock_addr.sin_port = (ushort) htons((ushort) port);
- if (mc_sock_connect(sock,(struct sockaddr *) &sock_addr, sizeof(sock_addr),
+ if (mc_sock_connect(sock,
+ my_reinterpret_cast(struct sockaddr *) (&sock_addr),
+ sizeof(sock_addr),
mysql->options.connect_timeout) <0)
{
DBUG_PRINT("error",("Got error %d on connect to '%s'",
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 599c31d43ca..a0336d0b50b 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -497,7 +497,8 @@ check_connections(THD *thd)
{
vio_in_addr(net->vio,&thd->remote.sin_addr);
thd->host=ip_to_hostname(&thd->remote.sin_addr,&connect_errors);
- thd->host[strnlen(thd->host, HOSTNAME_LENGTH)]= 0;
+ /* Cut very long hostnames to avoid possible overflows */
+ thd->host[min(strlen(thd->host), HOSTNAME_LENGTH)]= 0;
if (connect_errors > max_connect_errors)
return(ER_HOST_IS_BLOCKED);
}
@@ -2012,7 +2013,8 @@ mysql_execute_command(void)
goto error;
}
walk->lock_type= auxi->lock_type;
- auxi->table= (TABLE *) walk; // Remember corresponding table
+ // Store address to table as we need it later
+ auxi->table= my_reinterpret_cast(TABLE *) (walk);
}
if (add_item_to_list(new Item_null()))
{
@@ -2025,7 +2027,8 @@ mysql_execute_command(void)
break;
/* Fix tables-to-be-deleted-from list to point at opened tables */
for (auxi=(TABLE_LIST*) aux_tables ; auxi ; auxi=auxi->next)
- auxi->table= ((TABLE_LIST*) auxi->table)->table;
+ auxi->table= (my_reinterpret_cast(TABLE_LIST*) (auxi->table))->table;
+
if (!thd->fatal_error && (result= new multi_delete(thd,aux_tables,
table_count)))
{
@@ -3321,7 +3324,7 @@ static bool create_total_list(THD *thd, LEX *lex, TABLE_LIST **result)
}
else
aux->shared=1; // Mark that it's used twice
- aux->table=(TABLE *) cursor;
+ aux->table= my_reinterpret_cast(TABLE *) (cursor);
}
}
}
diff --git a/sql/sql_union.cc b/sql/sql_union.cc
index 8cead6596b4..4e36ccafefc 100644
--- a/sql/sql_union.cc
+++ b/sql/sql_union.cc
@@ -52,7 +52,7 @@ int mysql_union(THD *thd, LEX *lex,select_result *result)
{
if (cursor->do_redirect) // False if CUBE/ROLLUP
{
- cursor->table= ((TABLE_LIST*) cursor->table)->table;
+ cursor->table= (my_reinterpret_cast(TABLE_LIST*) (cursor->table))->table;
cursor->do_redirect= 0;
}
}
diff --git a/sql/table.cc b/sql/table.cc
index 62163819599..7e284c89871 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -144,7 +144,7 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
bzero((char*) keyinfo,n_length);
outparam->key_info=keyinfo;
outparam->max_key_length= outparam->total_key_length= 0;
- key_part= (KEY_PART_INFO*) (keyinfo+keys);
+ key_part= my_reinterpret_cast(KEY_PART_INFO*) (keyinfo+keys);
strpos=disk_buff+6;
ulong *rec_per_key;