mirror of
https://github.com/MariaDB/server.git
synced 2025-06-26 17:42:13 +03:00
Fixes for OSF1
Made test more reliable on slow machines
This commit is contained in:
@ -40713,6 +40713,9 @@ not yet 100 % confident in this code.
|
||||
@appendixsubsec Changes in release 3.23.32
|
||||
@itemize @bullet
|
||||
@item
|
||||
Changed code to get around compiler bug in Compaq C++ on OSF1, that broke
|
||||
@code{BACKUP, RESTORE, CHECK, REPAIR, and ANALYZE TABLE}.
|
||||
@item
|
||||
Added option @code{FULL} to @code{SHOW COLUMNS}. Now we only show the
|
||||
privilege list for the columns if this option is given.
|
||||
@item
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include <my_pthread.h> /* because of signal() */
|
||||
#endif
|
||||
|
||||
#define ADMIN_VERSION "8.13"
|
||||
#define ADMIN_VERSION "8.14"
|
||||
#define MAX_MYSQL_VAR 64
|
||||
#define MAX_TIME_TO_WAIT 3600 /* Wait for shutdown */
|
||||
#define MAX_TRUNC_LENGTH 3
|
||||
@ -37,9 +37,9 @@ char truncated_var_names[MAX_MYSQL_VAR][MAX_TRUNC_LENGTH];
|
||||
char ex_var_names[MAX_MYSQL_VAR][FN_REFLEN];
|
||||
ulonglong last_values[MAX_MYSQL_VAR];
|
||||
static int interval=0;
|
||||
static my_bool option_force=0,interrupted=0,new_line=0,option_silent=0,
|
||||
static my_bool option_force=0,interrupted=0,new_line=0,
|
||||
opt_compress=0, opt_relative=0, opt_verbose=0, opt_vertical=0;
|
||||
static uint tcp_port = 0, option_wait = 0;
|
||||
static uint tcp_port = 0, option_wait = 0, option_silent=0;
|
||||
static ulong opt_connect_timeout;
|
||||
static my_string unix_port=0;
|
||||
|
||||
@ -201,7 +201,7 @@ int main(int argc,char *argv[])
|
||||
}
|
||||
break;
|
||||
case 's':
|
||||
option_silent = 1;
|
||||
option_silent++;
|
||||
break;
|
||||
case 'S':
|
||||
unix_port= optarg;
|
||||
@ -367,22 +367,23 @@ static my_bool sql_connect(MYSQL *mysql,const char *host, const char *user,
|
||||
fprintf(stderr,"Got error: %s\n", mysql_error(mysql));
|
||||
if (!option_force)
|
||||
return 1;
|
||||
sleep(5);
|
||||
}
|
||||
else if (!info)
|
||||
else if (!option_silent)
|
||||
{
|
||||
if (!info)
|
||||
{
|
||||
info=1;
|
||||
fputs("Waiting for MySQL server to answer",stderr);
|
||||
(void) fflush(stderr);
|
||||
sleep(5);
|
||||
}
|
||||
else
|
||||
{
|
||||
putc('.',stderr);
|
||||
(void) fflush(stderr);
|
||||
sleep(5);
|
||||
}
|
||||
}
|
||||
sleep(5);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -739,7 +740,10 @@ static my_bool execute_commands(MYSQL *mysql,int argc, char **argv)
|
||||
case ADMIN_PING:
|
||||
mysql->reconnect=0; /* We want to know of reconnects */
|
||||
if (!mysql_ping(mysql))
|
||||
{
|
||||
if (option_silent < 2)
|
||||
puts("mysqld is alive");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mysql_errno(mysql) == CR_SERVER_GONE_ERROR)
|
||||
|
@ -433,6 +433,8 @@ int safe_cond_timedwait(pthread_cond_t *cond, safe_mutex_t *mp,
|
||||
#undef pthread_mutex_wait
|
||||
#undef pthread_mutex_timedwait
|
||||
#undef pthread_mutex_t
|
||||
#undef pthread_cond_wait
|
||||
#undef pthread_cond_timedwait
|
||||
#define pthread_mutex_init(A,B) safe_mutex_init((A),(B))
|
||||
#define pthread_mutex_lock(A) safe_mutex_lock((A),__FILE__,__LINE__)
|
||||
#define pthread_mutex_unlock(A) safe_mutex_unlock((A),__FILE__,__LINE__)
|
||||
|
@ -43,8 +43,6 @@ PATH=$PATH:/usr/bsd
|
||||
hostname=`hostname` # Install this too in the user table
|
||||
hostname="$hostname%" # Fix if not fully qualified hostname
|
||||
|
||||
resolved=127.0.0.1
|
||||
|
||||
|
||||
#create the directories
|
||||
[ -d $vardir ] || mkdir $vardir
|
||||
@ -144,9 +142,7 @@ then
|
||||
|
||||
i_u="INSERT INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
|
||||
INSERT INTO user VALUES ('$hostname','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
|
||||
|
||||
REPLACE INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
|
||||
REPLACE INTO user VALUES ('$hostname','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
|
||||
REPLACE INTO user VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
|
||||
|
||||
INSERT INTO user VALUES ('localhost','','','N','N','N','N','N','N','N','N','N','N','N','N','N','N');
|
||||
INSERT INTO user VALUES ('$hostname','','','N','N','N','N','N','N','N','N','N','N','N','N','N','N');"
|
||||
|
@ -35,6 +35,7 @@ RM=rm
|
||||
TIME=time
|
||||
TR=tr
|
||||
XARGS=`which xargs | head -1`
|
||||
SED=sed
|
||||
|
||||
# Are we using a source or a binary distribution?
|
||||
|
||||
@ -72,7 +73,7 @@ BASEDIR=`pwd`
|
||||
cd $CWD
|
||||
MYSQL_TEST_DIR=$BASEDIR/mysql-test
|
||||
STD_DATA=$MYSQL_TEST_DIR/std_data
|
||||
SED=sed
|
||||
hostname=`hostname` # Installed in the mysql privilege table
|
||||
|
||||
TESTDIR="$MYSQL_TEST_DIR/t/"
|
||||
TESTSUFFIX=test
|
||||
@ -238,10 +239,9 @@ SLAVE_MYSQLD=$MYSQLD #this can be changed later if we are doing gcov
|
||||
# Function Definitions
|
||||
#--
|
||||
wait_for_server_start ()
|
||||
{
|
||||
$MYSQL --no-defaults -u $DBUSER -e "select 1" --silent -w1 --host=127.0.0.1 --port=$1 \
|
||||
>/dev/null
|
||||
}
|
||||
{
|
||||
$MYSQLADMIN --no-defaults -u $DBUSER --silent -w2 --host=$hostname --port=$1 ping >/dev/null
|
||||
}
|
||||
|
||||
prompt_user ()
|
||||
{
|
||||
|
@ -7,7 +7,7 @@ Master_Host Master_User Master_Port Connect_retry Log_File Pos Slave_Running Rep
|
||||
Master_Host Master_User Master_Port Connect_retry Log_File Pos Slave_Running Replicate_do_db Replicate_ignore_db
|
||||
127.0.0.1 root 9306 60 4 No
|
||||
Master_Host Master_User Master_Port Connect_retry Log_File Pos Slave_Running Replicate_do_db Replicate_ignore_db
|
||||
127.0.0.1 root 9306 60 4 Yes
|
||||
127.0.0.1 root 9306 60 master-bin.001 73 Yes
|
||||
n
|
||||
10
|
||||
45
|
||||
|
@ -13,6 +13,7 @@ change master to master_host='127.0.0.1',master_user='root',
|
||||
master_password='',master_port=9306;
|
||||
show slave status;
|
||||
slave start;
|
||||
sleep 3;
|
||||
show slave status;
|
||||
connection master;
|
||||
drop table if exists foo;
|
||||
|
@ -27,6 +27,7 @@ create table t2(m int);
|
||||
insert into t2 values (34),(67),(123);
|
||||
flush logs;
|
||||
show master logs;
|
||||
sleep 2; # If a slow machine
|
||||
purge master logs to 'master-bin.003';
|
||||
show master logs;
|
||||
insert into t2 values (65);
|
||||
|
@ -408,6 +408,7 @@ sweepstakes if you report the bug";
|
||||
// slave
|
||||
break;
|
||||
case LOG_READ_EOF:
|
||||
DBUG_PRINT("wait",("waiting for data on binary log"));
|
||||
pthread_cond_wait(&COND_binlog_update, log_lock);
|
||||
break;
|
||||
|
||||
|
@ -799,12 +799,13 @@ static int send_check_errmsg(THD* thd, TABLE_LIST* table,
|
||||
static int prepare_for_restore(THD* thd, TABLE_LIST* table)
|
||||
{
|
||||
String *packet = &thd->packet;
|
||||
DBUG_ENTER("prepare_for_restore");
|
||||
|
||||
if(table->table) // do not overwrite existing tables on restore
|
||||
if (table->table) // do not overwrite existing tables on restore
|
||||
{
|
||||
return send_check_errmsg(thd, table, "restore",
|
||||
DBUG_RETURN(send_check_errmsg(thd, table, "restore",
|
||||
"table exists, will not overwrite on restore"
|
||||
);
|
||||
));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -813,8 +814,8 @@ static int prepare_for_restore(THD* thd, TABLE_LIST* table)
|
||||
char* table_name = table->name;
|
||||
char* db = thd->db ? thd->db : table->db;
|
||||
|
||||
if(!fn_format(src_path, table_name, backup_dir, reg_ext, 4 + 64))
|
||||
return -1; // protect buffer overflow
|
||||
if (!fn_format(src_path, table_name, backup_dir, reg_ext, 4 + 64))
|
||||
DBUG_RETURN(-1); // protect buffer overflow
|
||||
|
||||
sprintf(dst_path, "%s/%s/%s", mysql_real_data_home, db, table_name);
|
||||
|
||||
@ -823,14 +824,14 @@ static int prepare_for_restore(THD* thd, TABLE_LIST* table)
|
||||
if((lock_retcode = lock_table_name(thd, table)) < 0)
|
||||
{
|
||||
pthread_mutex_unlock(&LOCK_open);
|
||||
return -1;
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
|
||||
if(lock_retcode && wait_for_locked_table_names(thd, table))
|
||||
{
|
||||
unlock_table_name(thd, table);
|
||||
pthread_mutex_unlock(&LOCK_open);
|
||||
return -1;
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
pthread_mutex_unlock(&LOCK_open);
|
||||
|
||||
@ -840,8 +841,8 @@ static int prepare_for_restore(THD* thd, TABLE_LIST* table)
|
||||
MYF(MY_WME)))
|
||||
{
|
||||
unlock_table_name(thd, table);
|
||||
return send_check_errmsg(thd, table, "restore",
|
||||
"Failed copying .frm file");
|
||||
DBUG_RETURN(send_check_errmsg(thd, table, "restore",
|
||||
"Failed copying .frm file"));
|
||||
}
|
||||
bool save_no_send_ok = thd->net.no_send_ok;
|
||||
thd->net.no_send_ok = 1;
|
||||
@ -852,21 +853,22 @@ static int prepare_for_restore(THD* thd, TABLE_LIST* table)
|
||||
{
|
||||
unlock_table_name(thd, table);
|
||||
thd->net.no_send_ok = save_no_send_ok;
|
||||
return send_check_errmsg(thd, table, "restore",
|
||||
"Failed generating table from .frm file");
|
||||
DBUG_RETURN(send_check_errmsg(thd, table, "restore",
|
||||
"Failed generating table from .frm file"));
|
||||
}
|
||||
|
||||
thd->net.no_send_ok = save_no_send_ok;
|
||||
}
|
||||
|
||||
return 0;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
||||
HA_CHECK_OPT* check_opt,
|
||||
thr_lock_type lock_type,
|
||||
bool open_for_modify,
|
||||
const char *operator_name,
|
||||
thr_lock_type lock_type,
|
||||
bool open_for_modify, bool restore,
|
||||
uint extra_open_options,
|
||||
int (handler::*operator_func)
|
||||
(THD *, HA_CHECK_OPT *))
|
||||
{
|
||||
@ -894,12 +896,11 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
||||
bool fatal_error=0;
|
||||
strxmov(table_name,db ? db : "",".",table->name,NullS);
|
||||
|
||||
if (operator_func == &handler::repair || operator_func == &handler::check)
|
||||
thd->open_options|= HA_OPEN_FOR_REPAIR;
|
||||
thd->open_options|= extra_open_options;
|
||||
table->table = open_ltable(thd, table, lock_type);
|
||||
thd->open_options&= ~HA_OPEN_FOR_REPAIR;
|
||||
thd->open_options&= ~extra_open_options;
|
||||
packet->length(0);
|
||||
if (operator_func == &handler::restore)
|
||||
if (restore)
|
||||
{
|
||||
switch (prepare_for_restore(thd, table)) {
|
||||
case 1: continue; // error, message written to net
|
||||
@ -1023,16 +1024,14 @@ int mysql_backup_table(THD* thd, TABLE_LIST* table_list)
|
||||
{
|
||||
DBUG_ENTER("mysql_backup_table");
|
||||
DBUG_RETURN(mysql_admin_table(thd, table_list, 0,
|
||||
TL_READ, 1,
|
||||
"backup",
|
||||
"backup", TL_READ, 1, 0, 0,
|
||||
&handler::backup));
|
||||
}
|
||||
int mysql_restore_table(THD* thd, TABLE_LIST* table_list)
|
||||
{
|
||||
DBUG_ENTER("mysql_restore_table");
|
||||
DBUG_RETURN(mysql_admin_table(thd, table_list, 0,
|
||||
TL_WRITE, 1,
|
||||
"restore",
|
||||
"restore", TL_WRITE, 1, 1,0,
|
||||
&handler::restore));
|
||||
}
|
||||
|
||||
@ -1040,8 +1039,7 @@ int mysql_repair_table(THD* thd, TABLE_LIST* tables, HA_CHECK_OPT* check_opt)
|
||||
{
|
||||
DBUG_ENTER("mysql_repair_table");
|
||||
DBUG_RETURN(mysql_admin_table(thd, tables, check_opt,
|
||||
TL_WRITE, 1,
|
||||
"repair",
|
||||
"repair", TL_WRITE, 1, 0, HA_OPEN_FOR_REPAIR,
|
||||
&handler::repair));
|
||||
}
|
||||
|
||||
@ -1049,8 +1047,7 @@ int mysql_optimize_table(THD* thd, TABLE_LIST* tables, HA_CHECK_OPT* check_opt)
|
||||
{
|
||||
DBUG_ENTER("mysql_optimize_table");
|
||||
DBUG_RETURN(mysql_admin_table(thd, tables, check_opt,
|
||||
TL_WRITE, 1,
|
||||
"optimize",
|
||||
"optimize", TL_WRITE, 1,0,0,
|
||||
&handler::optimize));
|
||||
}
|
||||
|
||||
@ -1059,8 +1056,7 @@ int mysql_analyze_table(THD* thd, TABLE_LIST* tables, HA_CHECK_OPT* check_opt)
|
||||
{
|
||||
DBUG_ENTER("mysql_analyze_table");
|
||||
DBUG_RETURN(mysql_admin_table(thd, tables, check_opt,
|
||||
TL_READ_NO_INSERT, 1,
|
||||
"analyze",
|
||||
"analyze",TL_READ_NO_INSERT, 1,0,0,
|
||||
&handler::analyze));
|
||||
}
|
||||
|
||||
@ -1069,8 +1065,8 @@ int mysql_check_table(THD* thd, TABLE_LIST* tables,HA_CHECK_OPT* check_opt)
|
||||
{
|
||||
DBUG_ENTER("mysql_check_table");
|
||||
DBUG_RETURN(mysql_admin_table(thd, tables, check_opt,
|
||||
TL_READ_NO_INSERT, 0,
|
||||
"check",
|
||||
TL_READ_NO_INSERT, 0, 0, HA_OPEN_FOR_REPAIR,
|
||||
&handler::check));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user