diff options
author | unknown <monty@mashka.mysql.fi> | 2003-01-05 20:18:49 +0200 |
---|---|---|
committer | unknown <monty@mashka.mysql.fi> | 2003-01-05 20:18:49 +0200 |
commit | e3c7f4d85ec4caf59fc408cf5643e5dc64e9a3d4 (patch) | |
tree | ce42417ba1ab6dac8c367a9ae180ea377956e95a /sql | |
parent | 79fba6da8f099566bbf711b592aab60909b1f66d (diff) | |
download | mariadb-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.cc | 24 | ||||
-rw-r--r-- | sql/ha_berkeley.h | 1 | ||||
-rw-r--r-- | sql/mini_client.cc | 11 | ||||
-rw-r--r-- | sql/sql_parse.cc | 11 | ||||
-rw-r--r-- | sql/sql_union.cc | 2 | ||||
-rw-r--r-- | sql/table.cc | 2 |
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; |