Commit 7957ec7e authored by unknown's avatar unknown

Fixed wrong option in mysql_install_db

Added delayed_user for delayed_threads
Don't use record cache when doing deletes


Docs/manual.texi:
  Added link to activestate perl
mysql-test/t/delayed.test:
  Added sleep for slow machines
scripts/mysql_install_db.sh:
  Fixed wrong option
sql-bench/crash-me.sh:
  Intialize some variables
sql/mysql_priv.h:
  Added delayed_user for delayed_threads
sql/mysqld.cc:
  Added delayed_user for delayed_threads
sql/sql_class.cc:
  Added delayed_user for delayed_threads
sql/sql_delete.cc:
  Don't use record cache when doing deletes
sql/sql_insert.cc:
  Added delayed_user for delayed_threads
tests/fork3_test.pl:
  Added periodic check/repair of table
parent f34ebbd0
......@@ -6618,6 +6618,7 @@ To install the @strong{MySQL} @code{DBD} module with ActiveState Perl on
Windows, you should do the following:
@itemize @bullet
@item Get activestate perl from @uref{http://www.activestate.com/Products/ActivePerl/index.html} and install it.
@item Open a DOS shell.
@item If required, set the HTTP_proxy variable. For example, you might try:
@code{set HTTP_proxy=my.proxy.com:3128}
......@@ -33693,7 +33694,7 @@ If you find out something is wrong, please only send the relevant rows
send the whole MyODBC or ODBC log file!
If you are unable to find out what's wrong, the last option is to
make an archive (tar or zip) that contains a MyODBC log file, the ODBC
make an archive (tar or zip) that contains a MyODBC trace file, the ODBC
log file, and a README file that explains the problem. You can send this
to @uref{ftp://support.mysql.com/pub/mysql/secret}. Only we at MySQL AB
will have access to the files you upload, and we will be very discrete
......@@ -11,6 +11,7 @@ insert delayed into t1 set a = 4;
insert delayed into t1 set a = 5, tmsp = 19711006010203;
insert delayed into t1 (a, tmsp) values (6, 19711006010203);
insert delayed into t1 (a, tmsp) values (7, NULL);
--sleep 1
insert into t1 set a = 8,tmsp=19711006010203;
select * from t1 where tmsp=0;
select * from t1 where tmsp=19711006010203;
......@@ -27,5 +28,6 @@ insert delayed into t1 values (null,"c");
insert delayed into t1 values (3,"d"),(null,"e");
--error 1136
insert delayed into t1 values (3,"this will give an","error");
--sleep 2
select * from t1;
drop table t1;
......@@ -282,7 +282,7 @@ fi
echo "Installing all prepared tables"
if eval "$execdir/mysqld $defaults --bootstrap --skip-grant-tables \
--basedir=$basedir --datadir=$ldata --skip-innobase --skip-gemeni --skip-bdb $args" << END_OF_DATA
--basedir=$basedir --datadir=$ldata --skip-innobase --skip-gemini --skip-bdb $args" << END_OF_DATA
use mysql;
$c_d
$i_d
......
......@@ -47,6 +47,7 @@ require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n";
$opt_server="mysql"; $opt_host="localhost"; $opt_database="test";
$opt_dir="limits";
$opt_user=$opt_password="";
$opt_debug=$opt_help=$opt_Information=$opt_restart=$opt_force=$opt_quick=0;
$opt_log_all_queries=$opt_fix_limit_file=$opt_batch_mode=0;
$opt_db_start_cmd=""; # the db server start command
......
......@@ -477,7 +477,7 @@ extern uint32 server_id;
extern char mysql_data_home[2],server_version[SERVER_VERSION_LENGTH],
max_sort_char, mysql_real_data_home[];
extern my_string mysql_unix_port,mysql_tmpdir;
extern const char *first_keyword, *localhost;
extern const char *first_keyword, *localhost, *delayed_user;
extern ulong refresh_version,flush_version, thread_id,query_id,opened_tables,
created_tmp_tables, created_tmp_disk_tables,
aborted_threads,aborted_connects,
......
......@@ -243,6 +243,7 @@ volatile ulong cached_thread_count=0;
my_string master_user = (char*) "test", master_password = 0, master_host=0,
master_info_file = (char*) "master.info";
const char *localhost=LOCAL_HOST;
const char *delayed_user="DELAYED";
uint master_port = MYSQL_PORT, master_connect_retry = 60;
ulong max_tmp_tables,max_heap_table_size;
......@@ -2364,7 +2365,7 @@ pthread_handler_decl(handle_connections_namedpipes,arg)
continue;
}
/* host name is unknown */
thd->host = my_strdup("localhost",MYF(0)); /* Host is unknown */
thd->host = my_strdup(localhost,MYF(0)); /* Host is unknown */
create_new_thread(thd);
}
......
......@@ -176,7 +176,8 @@ THD::~THD()
if (host != localhost) // If not pointer to constant
safeFree(host);
safeFree(user);
if (user != delayed_user)
safeFree(user);
safeFree(db);
safeFree(ip);
free_root(&mem_root,MYF(0));
......
......@@ -192,7 +192,7 @@ int mysql_delete(THD *thd,TABLE_LIST *table_list,COND *conds,ha_rows limit,
(void) table->file->extra(HA_EXTRA_NO_READCHECK);
if (options & OPTION_QUICK)
(void) table->file->extra(HA_EXTRA_QUICK);
init_read_record(&info,thd,table,select,1,1);
init_read_record(&info,thd,table,select,0,1);
ulong deleted=0L;
thd->proc_info="updating";
while (!(error=info.read_record(&info)) && !thd->killed)
......
......@@ -489,7 +489,8 @@ class delayed_insert :public ilink {
table(0),tables_in_use(0),stacked_inserts(0), status(0), dead(0),
group_count(0)
{
thd.user=0; thd.host=(char*) localhost;
thd.user=thd.priv_user=(char*) delayed_user;
thd.host=(char*) localhost;
thd.current_tablenr=0;
thd.version=refresh_version;
thd.command=COM_DELAYED_INSERT;
......
#!/usr/bin/perl -w
#
# This is a test with uses 3 processes to insert, delete and select
# This is a test with uses 4 processes to insert, delete , check and select
#
$opt_loop_count=100000; # Change this to make test harder/easier
$opt_loop_count=200000; # Change this to make test harder/easier
##################### Standard benchmark inits ##############################
......@@ -21,8 +21,8 @@ GetOptions("host=s","db=s","loop-count=i","skip-create","skip-in","skip-delete",
"verbose","fast-insert","lock-tables","debug","fast","force") || die "Aborted";
$opt_verbose=$opt_debug=$opt_lock_tables=$opt_fast_insert=$opt_fast=$opt_skip_in=$opt_force=undef; # Ignore warnings from these
print "Testing 3 multiple connections to a server with 1 insert, 1 delete\n";
print "and 1 select connections.\n";
print "Testing 4 multiple connections to a server with 1 insert, 1 delete\n";
print "1 select and one repair/check connection.\n";
$firsttable = "bench_f1";
......@@ -51,6 +51,7 @@ $|= 1; # Autoflush
test_insert() if (($pid=fork()) == 0); $work{$pid}="insert";
test_delete() if (($pid=fork()) == 0); $work{$pid}="delete";
test_select() if (($pid=fork()) == 0); $work{$pid}="select1";
repair_and_check() if (($pid=fork()) == 0); $work{$pid}="repair/check";
$errors=0;
while (($pid=wait()) != -1)
......@@ -148,3 +149,40 @@ sub test_select
print "Test_select: ok\n";
exit(0);
}
sub repair_and_check
{
my ($dbh,$row,$found1,$last_found1,$i,$type, $table);
$found1=0; $last_found1= -1;
$dbh = DBI->connect("DBI:mysql:$opt_db:$opt_host",
$opt_user, $opt_password,
{ PrintError => 0}) || die $DBI::errstr;
for ($i=0; $found1 != $last_found1 ; $i++)
{
$type=($i & 2) ? "repair" : "check";
$table=$firsttable;
$last_found1=$found1;
$sth=$dbh->prepare("$type table $table") || die "Got error on prepare: $dbh->errstr\n";
$sth->execute || die $dbh->errstr;
while (($row=$sth->fetchrow_arrayref))
{
if ($row->[3] ne "OK")
{
print "Got error " . $row->[3] . " when doing $type on $table\n";
exit(1);
}
}
$sth=$dbh->prepare("select count(*) from $table") || die "Got error on prepare: $dbh->errstr\n";
$sth->execute || die $dbh->errstr;
@row = $sth->fetchrow_array();
$found1= $row[0];
$sth->finish;
sleep(3);
}
$dbh->disconnect; $dbh=0;
print "check/repair: Did $i repair/checks\n";
exit(0);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment