0.67.375
by Bernt M. Johnsen
Fixed some copyright headers |
1 |
# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
2 |
# Use is subject to license terms.
|
3 |
#
|
|
4 |
# This program is free software; you can redistribute it and/or modify
|
|
5 |
# it under the terms of the GNU General Public License as published by
|
|
6 |
# the Free Software Foundation; version 2 of the License.
|
|
7 |
#
|
|
8 |
# This program is distributed in the hope that it will be useful, but
|
|
9 |
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
11 |
# General Public License for more details.
|
|
12 |
#
|
|
13 |
# You should have received a copy of the GNU General Public License
|
|
14 |
# along with this program; if not, write to the Free Software
|
|
15 |
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
|
|
16 |
# USA
|
|
17 |
||
0.67.404
by Bernt M. Johnsen
Moved server handling to lib/DBServer |
18 |
package DBServer::MySQL::MySQLd; |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
19 |
|
0.67.404
by Bernt M. Johnsen
Moved server handling to lib/DBServer |
20 |
@ISA = qw(DBServer::DBServer); |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
21 |
|
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
22 |
use DBI; |
0.67.404
by Bernt M. Johnsen
Moved server handling to lib/DBServer |
23 |
use DBServer::DBServer; |
0.67.381
by Bernt M. Johnsen
Adjustments after merge |
24 |
use if osWindows(), Win32::Process; |
0.67.329
by Bernt M. Johnsen
More server stuff |
25 |
use Time::HiRes; |
0.67.310
by Bernt Johnsen
First windows adaptions for Server |
26 |
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
27 |
use strict; |
28 |
||
29 |
use Carp; |
|
30 |
use Data::Dumper; |
|
0.107.6
by John H. Embretsen
MySQLd.pm: Revert to File::Path's mkpath instead of the newer make_path. Older Perl (e.g. v5.8.8) does not have make_path. |
31 |
use File::Path qw(mkpath); |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
32 |
|
33 |
use constant MYSQLD_BASEDIR => 0; |
|
0.67.329
by Bernt M. Johnsen
More server stuff |
34 |
use constant MYSQLD_VARDIR => 1; |
35 |
use constant MYSQLD_DATADIR => 2; |
|
36 |
use constant MYSQLD_PORT => 3; |
|
37 |
use constant MYSQLD_MYSQLD => 4; |
|
38 |
use constant MYSQLD_LIBMYSQL => 5; |
|
39 |
use constant MYSQLD_BOOT_SQL => 6; |
|
40 |
use constant MYSQLD_STDOPTS => 7; |
|
41 |
use constant MYSQLD_MESSAGES => 8; |
|
0.67.429
by Bernt M. Johnsen
Added --character-set-dir |
42 |
use constant MYSQLD_CHARSETS => 9; |
43 |
use constant MYSQLD_SERVER_OPTIONS => 10; |
|
44 |
use constant MYSQLD_AUXPID => 11; |
|
45 |
use constant MYSQLD_SERVERPID => 12; |
|
46 |
use constant MYSQLD_WINDOWS_PROCESS => 13; |
|
47 |
use constant MYSQLD_DBH => 14; |
|
48 |
use constant MYSQLD_START_DIRTY => 15; |
|
49 |
use constant MYSQLD_VALGRIND => 16; |
|
50 |
use constant MYSQLD_VALGRIND_OPTIONS => 17; |
|
51 |
use constant MYSQLD_VERSION => 18; |
|
0.104.2
by Bernt M. Johnsen
Moved call to mysqldump into DBServer/MySQLd |
52 |
use constant MYSQLD_DUMPER => 19; |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
53 |
|
54 |
use constant MYSQLD_PID_FILE => "mysql.pid"; |
|
0.67.314
by Bernt Johnsen
Server: Windows process start |
55 |
use constant MYSQLD_LOG_FILE => "mysql.err"; |
0.67.329
by Bernt M. Johnsen
More server stuff |
56 |
use constant MYSQLD_DEFAULT_PORT => 19300; |
0.67.319
by Bernt M. Johnsen
Server dsn and test of dsn/Executor |
57 |
use constant MYSQLD_DEFAULT_DATABASE => "test"; |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
58 |
|
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
59 |
|
60 |
||
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
61 |
sub new { |
62 |
my $class = shift; |
|
0.67.339
by Bernt M. Johnsen
Added replicating server (actually a master/slave pair) + unit test |
63 |
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
64 |
my $self = $class->SUPER::new({'basedir' => MYSQLD_BASEDIR, |
0.67.329
by Bernt M. Johnsen
More server stuff |
65 |
'vardir' => MYSQLD_VARDIR, |
66 |
'port' => MYSQLD_PORT, |
|
0.67.337
by Bernt M. Johnsen
Add start dirty to Server::MySQLd.pm |
67 |
'server_options' => MYSQLD_SERVER_OPTIONS, |
0.99.14
by Bernt M. Johnsen
valgrind support added to server |
68 |
'start_dirty' => MYSQLD_START_DIRTY, |
69 |
'valgrind' => MYSQLD_VALGRIND, |
|
70 |
'valgrind_options' => MYSQLD_VALGRIND_OPTIONS},@_); |
|
0.67.339
by Bernt M. Johnsen
Added replicating server (actually a master/slave pair) + unit test |
71 |
|
0.67.381
by Bernt M. Johnsen
Adjustments after merge |
72 |
croak "No valgrind support on windows" if osWindows() and $self->[MYSQLD_VALGRIND]; |
0.67.339
by Bernt M. Johnsen
Added replicating server (actually a master/slave pair) + unit test |
73 |
|
0.67.329
by Bernt M. Johnsen
More server stuff |
74 |
if (not defined $self->[MYSQLD_VARDIR]) { |
75 |
$self->[MYSQLD_VARDIR] = "mysql-test/var"; |
|
76 |
}
|
|
0.67.339
by Bernt M. Johnsen
Added replicating server (actually a master/slave pair) + unit test |
77 |
|
0.67.381
by Bernt M. Johnsen
Adjustments after merge |
78 |
if (osWindows()) { |
0.67.329
by Bernt M. Johnsen
More server stuff |
79 |
## Use unix-style path's since that's what Perl expects...
|
80 |
$self->[MYSQLD_BASEDIR] =~ s/\\/\//g; |
|
81 |
$self->[MYSQLD_VARDIR] =~ s/\\/\//g; |
|
82 |
$self->[MYSQLD_DATADIR] =~ s/\\/\//g; |
|
0.67.310
by Bernt Johnsen
First windows adaptions for Server |
83 |
}
|
84 |
||
0.67.335
by Bernt Johnsen
Windows adaptions |
85 |
if (not $self->_absPath($self->vardir)) { |
0.67.336
by Bernt M. Johnsen
more mysql.sock problems |
86 |
$self->[MYSQLD_VARDIR] = $self->basedir."/".$self->vardir; |
0.67.335
by Bernt Johnsen
Windows adaptions |
87 |
}
|
0.67.336
by Bernt M. Johnsen
more mysql.sock problems |
88 |
|
0.67.335
by Bernt Johnsen
Windows adaptions |
89 |
$self->[MYSQLD_DATADIR] = $self->[MYSQLD_VARDIR]."/data"; |
90 |
||
0.99.6
by Bernt M. Johnsen
Cmake out-of-source build adaptions |
91 |
$self->[MYSQLD_MYSQLD] = $self->_find([$self->basedir], |
0.108.1
by John H. Embretsen
DBServer: Correct directory name for RelWithDebInfo builds on Windows. Was RelWithDebugInfo, should be RelWithDebInfo. Thanks to wlad for pointing this out. |
92 |
osWindows()?["sql/Debug","sql/RelWithDebInfo","sql/Release","bin"]:["sql","libexec","bin","sbin"], |
0.67.381
by Bernt M. Johnsen
Adjustments after merge |
93 |
osWindows()?"mysqld.exe":"mysqld"); |
0.67.313
by Bernt M. Johnsen
Server: server options, better testing, some improvements |
94 |
$self->[MYSQLD_BOOT_SQL] = []; |
0.99.6
by Bernt M. Johnsen
Cmake out-of-source build adaptions |
95 |
|
0.104.2
by Bernt M. Johnsen
Moved call to mysqldump into DBServer/MySQLd |
96 |
$self->[MYSQLD_DUMPER] = $self->_find([$self->basedir], |
0.108.1
by John H. Embretsen
DBServer: Correct directory name for RelWithDebInfo builds on Windows. Was RelWithDebugInfo, should be RelWithDebInfo. Thanks to wlad for pointing this out. |
97 |
osWindows()?["client/Debug","client/RelWithDebInfo","client/Release","bin"]:["client","bin"], |
0.104.2
by Bernt M. Johnsen
Moved call to mysqldump into DBServer/MySQLd |
98 |
osWindows()?"mysqldump.exe":"mysqldump"); |
99 |
||
0.99.6
by Bernt M. Johnsen
Cmake out-of-source build adaptions |
100 |
|
101 |
## Check for CMakestuff to get hold of source dir:
|
|
102 |
||
103 |
my $source; |
|
0.99.7
by Bernt M. Johnsen
More Cmake out-of-source stuff |
104 |
if (-e $self->basedir."/CMakeCache.txt") { |
0.99.6
by Bernt M. Johnsen
Cmake out-of-source build adaptions |
105 |
open CACHE, $self->basedir."/CMakeCache.txt"; |
106 |
while (<CACHE>){ |
|
107 |
if (m/^MySQL_SOURCE_DIR:STATIC=(.*)$/) { |
|
108 |
$source = $1; |
|
0.99.7
by Bernt M. Johnsen
More Cmake out-of-source stuff |
109 |
say("Found source directory at $source"); |
0.99.6
by Bernt M. Johnsen
Cmake out-of-source build adaptions |
110 |
last; |
111 |
}
|
|
112 |
}
|
|
113 |
}
|
|
114 |
||
0.67.313
by Bernt M. Johnsen
Server: server options, better testing, some improvements |
115 |
foreach my $file ("mysql_system_tables.sql", |
0.67.329
by Bernt M. Johnsen
More server stuff |
116 |
"mysql_system_tables_data.sql", |
117 |
"mysql_test_data_timezone.sql", |
|
118 |
"fill_help_tables.sql") { |
|
0.67.336
by Bernt M. Johnsen
more mysql.sock problems |
119 |
push(@{$self->[MYSQLD_BOOT_SQL]}, |
0.99.6
by Bernt M. Johnsen
Cmake out-of-source build adaptions |
120 |
$self->_find(defined $source?[$self->basedir,$source]:[$self->basedir], |
0.67.449
by Bernt M. Johnsen
Look for file more places for installed mysql |
121 |
["scripts","share/mysql","share"], $file)); |
0.67.313
by Bernt M. Johnsen
Server: server options, better testing, some improvements |
122 |
}
|
123 |
||
0.99.7
by Bernt M. Johnsen
More Cmake out-of-source stuff |
124 |
$self->[MYSQLD_MESSAGES] = |
125 |
$self->_findDir(defined $source?[$self->basedir,$source]:[$self->basedir], |
|
0.67.449
by Bernt M. Johnsen
Look for file more places for installed mysql |
126 |
["sql/share","share/mysql","share"], "english/errmsg.sys"); |
0.67.429
by Bernt M. Johnsen
Added --character-set-dir |
127 |
|
128 |
$self->[MYSQLD_CHARSETS] = |
|
129 |
$self->_findDir(defined $source?[$self->basedir,$source]:[$self->basedir], |
|
0.67.449
by Bernt M. Johnsen
Look for file more places for installed mysql |
130 |
["sql/share/charsets","share/mysql/charsets","share/charsets"], "Index.xml"); |
0.67.429
by Bernt M. Johnsen
Added --character-set-dir |
131 |
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
132 |
|
0.99.7
by Bernt M. Johnsen
More Cmake out-of-source stuff |
133 |
$self->[MYSQLD_LIBMYSQL] = |
134 |
$self->_findDir([$self->basedir], |
|
0.108.1
by John H. Embretsen
DBServer: Correct directory name for RelWithDebInfo builds on Windows. Was RelWithDebugInfo, should be RelWithDebInfo. Thanks to wlad for pointing this out. |
135 |
osWindows()?["libmysql/Debug","libmysql/RelWithDebInfo","libmysql/Release","lib","lib/debug","lib/opt","bin"]:["libmysql","libmysql/.libs","lib/mysql","lib"], |
0.108.2
by John H. Embretsen
DBServer: Add basic support for Mac OS X by having utility functions to check for darwin, and looking for libmysqlclient.dylib instead of .so. |
136 |
osWindows()?"libmysql.dll":osMac()?"libmysqlclient.dylib":"libmysqlclient.so"); |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
137 |
|
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
138 |
$self->[MYSQLD_STDOPTS] = ["--basedir=".$self->basedir, |
139 |
"--datadir=".$self->datadir, |
|
0.67.429
by Bernt M. Johnsen
Added --character-set-dir |
140 |
$self->_messages, |
141 |
"--character-sets-dir=".$self->[MYSQLD_CHARSETS], |
|
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
142 |
"--default-storage-engine=myisam", |
0.67.357
by Bernt M. Johnsen
Better version checking |
143 |
"--log-warnings=0"]; |
0.67.359
by Bernt M. Johnsen
Use GenTest module in runall-new.pl |
144 |
|
0.67.337
by Bernt M. Johnsen
Add start dirty to Server::MySQLd.pm |
145 |
if ($self->[MYSQLD_START_DIRTY]) { |
0.67.452
by Bernt M. Johnsen
Corefile stuff. Version nmbers on Windows |
146 |
say("Using existing data for MySQL " .$self->version ." at ".$self->datadir) |
0.67.337
by Bernt M. Johnsen
Add start dirty to Server::MySQLd.pm |
147 |
} else { |
0.67.452
by Bernt M. Johnsen
Corefile stuff. Version nmbers on Windows |
148 |
say("Creating MySQL " . $self->version . " database at ".$self->datadir); |
0.67.337
by Bernt M. Johnsen
Add start dirty to Server::MySQLd.pm |
149 |
$self->createMysqlBase; |
0.67.339
by Bernt M. Johnsen
Added replicating server (actually a master/slave pair) + unit test |
150 |
}
|
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
151 |
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
152 |
return $self; |
153 |
}
|
|
154 |
||
155 |
sub basedir { |
|
156 |
return $_[0]->[MYSQLD_BASEDIR]; |
|
157 |
}
|
|
158 |
||
159 |
sub datadir { |
|
160 |
return $_[0]->[MYSQLD_DATADIR]; |
|
161 |
}
|
|
162 |
||
0.67.329
by Bernt M. Johnsen
More server stuff |
163 |
sub vardir { |
164 |
return $_[0]->[MYSQLD_VARDIR]; |
|
165 |
}
|
|
166 |
||
167 |
sub port { |
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
168 |
my ($self) = @_; |
169 |
||
0.67.329
by Bernt M. Johnsen
More server stuff |
170 |
if (defined $self->[MYSQLD_PORT]) { |
171 |
return $self->[MYSQLD_PORT]; |
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
172 |
} else { |
0.67.329
by Bernt M. Johnsen
More server stuff |
173 |
return MYSQLD_DEFAULT_PORT; |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
174 |
}
|
175 |
}
|
|
176 |
||
177 |
sub serverpid { |
|
0.67.314
by Bernt Johnsen
Server: Windows process start |
178 |
return $_[0]->[MYSQLD_SERVERPID]; |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
179 |
}
|
180 |
||
181 |
sub forkpid { |
|
0.67.314
by Bernt Johnsen
Server: Windows process start |
182 |
return $_[0]->[MYSQLD_AUXPID]; |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
183 |
}
|
184 |
||
185 |
sub socketfile { |
|
0.67.342
by Bernt M. Johnsen
Enable runall-new test. Start replication properly and test that replication is working |
186 |
my ($self) = @_; |
187 |
||
188 |
return "/tmp/RQGmysql.".$self->port.".sock"; |
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
189 |
}
|
190 |
||
191 |
sub pidfile { |
|
0.67.329
by Bernt M. Johnsen
More server stuff |
192 |
return $_[0]->vardir."/".MYSQLD_PID_FILE; |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
193 |
}
|
194 |
||
195 |
sub logfile { |
|
0.67.329
by Bernt M. Johnsen
More server stuff |
196 |
return $_[0]->vardir."/".MYSQLD_LOG_FILE; |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
197 |
}
|
198 |
||
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
199 |
sub libmysqldir { |
200 |
return $_[0]->[MYSQLD_LIBMYSQL]; |
|
201 |
}
|
|
202 |
||
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
203 |
|
204 |
sub generateCommand { |
|
205 |
my ($self, @opts) = @_; |
|
206 |
||
0.67.452
by Bernt M. Johnsen
Corefile stuff. Version nmbers on Windows |
207 |
my $command = '"'.$self->binary.'"'; |
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
208 |
foreach my $opt (@opts) { |
209 |
$command .= ' '.join(' ',map{'"'.$_.'"'} @$opt); |
|
210 |
}
|
|
0.67.381
by Bernt M. Johnsen
Adjustments after merge |
211 |
$command =~ s/\//\\/g if osWindows(); |
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
212 |
return $command; |
213 |
}
|
|
214 |
||
0.67.383
by Bernt M. Johnsen
Possibility to create a replicating server pair from two pre-exisiting server objects |
215 |
sub addServerOptions { |
216 |
my ($self,$opts) = @_; |
|
217 |
||
218 |
push(@{$self->[MYSQLD_SERVER_OPTIONS]}, @$opts); |
|
219 |
}
|
|
220 |
||
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
221 |
sub createMysqlBase { |
222 |
my ($self) = @_; |
|
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
223 |
|
0.67.311
by Bernt Johnsen
Server db create on windows |
224 |
## 1. Clean old db if any
|
0.67.329
by Bernt M. Johnsen
More server stuff |
225 |
if (-d $self->vardir) { |
0.67.381
by Bernt M. Johnsen
Adjustments after merge |
226 |
if (osWindows()) { |
0.67.329
by Bernt M. Johnsen
More server stuff |
227 |
my $vardir = $self->vardir; |
228 |
$vardir =~ s/\//\\/g; |
|
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
229 |
system('rmdir /s /q "'.$vardir.'"'); |
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
230 |
} else { |
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
231 |
system('rm -rf "'.$self->vardir.'"'); |
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
232 |
}
|
0.67.312
by Bernt Johnsen
Removed the dependncy to File::path since just one routine was needed |
233 |
}
|
0.67.335
by Bernt Johnsen
Windows adaptions |
234 |
|
0.67.311
by Bernt Johnsen
Server db create on windows |
235 |
## 2. Create database directory structure
|
0.107.6
by John H. Embretsen
MySQLd.pm: Revert to File::Path's mkpath instead of the newer make_path. Older Perl (e.g. v5.8.8) does not have make_path. |
236 |
mkpath($self->vardir); |
237 |
mkpath($self->datadir); |
|
238 |
mkpath($self->datadir."/mysql"); |
|
239 |
mkpath($self->datadir."/test"); |
|
0.67.336
by Bernt M. Johnsen
more mysql.sock problems |
240 |
|
0.67.311
by Bernt Johnsen
Server db create on windows |
241 |
## 3. Create boot file
|
0.67.329
by Bernt M. Johnsen
More server stuff |
242 |
my $boot = $self->vardir."/boot.sql"; |
0.67.311
by Bernt Johnsen
Server db create on windows |
243 |
open BOOT,">$boot"; |
244 |
||
245 |
## Set curren database
|
|
246 |
print BOOT "use mysql;\n"; |
|
247 |
foreach my $b (@{$self->[MYSQLD_BOOT_SQL]}) { |
|
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
248 |
open B,$b; |
249 |
while (<B>) { print BOOT $_;} |
|
250 |
close B; |
|
0.67.311
by Bernt Johnsen
Server db create on windows |
251 |
}
|
252 |
## Don't want empty users
|
|
253 |
print BOOT "DELETE FROM user WHERE `User` = '';\n"; |
|
254 |
close BOOT; |
|
255 |
||
256 |
## 4. Boot database
|
|
0.67.381
by Bernt M. Johnsen
Adjustments after merge |
257 |
if (osWindows()) { |
0.67.359
by Bernt M. Johnsen
Use GenTest module in runall-new.pl |
258 |
my $command = $self->generateCommand(["--no-defaults","--bootstrap"], |
259 |
$self->[MYSQLD_STDOPTS]); |
|
260 |
||
0.67.329
by Bernt M. Johnsen
More server stuff |
261 |
my $bootlog = $self->vardir."/boot.log"; |
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
262 |
system("$command < \"$boot\" > \"$bootlog\""); |
0.67.310
by Bernt Johnsen
First windows adaptions for Server |
263 |
} else { |
0.67.359
by Bernt M. Johnsen
Use GenTest module in runall-new.pl |
264 |
my $command = $self->generateCommand(["--no-defaults","--bootstrap","--loose-skip-innodb"], |
265 |
$self->[MYSQLD_STDOPTS]); |
|
0.67.329
by Bernt M. Johnsen
More server stuff |
266 |
my $bootlog = $self->vardir."/boot.log"; |
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
267 |
system("cat \"$boot\" | $command > \"$bootlog\" 2>&1 "); |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
268 |
}
|
269 |
}
|
|
270 |
||
0.67.314
by Bernt Johnsen
Server: Windows process start |
271 |
sub _reportError { |
0.67.335
by Bernt Johnsen
Windows adaptions |
272 |
say(Win32::FormatMessage(Win32::GetLastError())); |
0.67.314
by Bernt Johnsen
Server: Windows process start |
273 |
}
|
274 |
||
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
275 |
sub startServer { |
276 |
my ($self) = @_; |
|
0.99.14
by Bernt M. Johnsen
valgrind support added to server |
277 |
|
0.67.353
by Bernt M. Johnsen
5.1 and 5.0 adaptions |
278 |
my ($v1,$v2,@rest) = $self->versionNumbers; |
279 |
my $v = $v1*1000+$v2; |
|
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
280 |
my $command = $self->generateCommand(["--no-defaults"], |
281 |
$self->[MYSQLD_STDOPTS], |
|
282 |
["--core-file", |
|
0.67.333
by Bernt M. Johnsen
removed option |
283 |
#"--skip-ndbcluster",
|
0.99.30
by Bernt M. Johnsen
Added benchmarking and profiling |
284 |
#"--skip-grant",
|
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
285 |
"--loose-new", |
286 |
"--relay-log=slave-relay-bin", |
|
287 |
"--loose-innodb", |
|
288 |
"--max-allowed-packet=16Mb", # Allow loading bigger blobs |
|
289 |
"--loose-innodb-status-file=1", |
|
290 |
"--master-retry-count=65535", |
|
291 |
"--port=".$self->port, |
|
0.67.336
by Bernt M. Johnsen
more mysql.sock problems |
292 |
"--socket=".$self->socketfile, |
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
293 |
"--pid-file=".$self->pidfile, |
0.67.357
by Bernt M. Johnsen
Better version checking |
294 |
$self->_logOption]); |
0.67.313
by Bernt M. Johnsen
Server: server options, better testing, some improvements |
295 |
if (defined $self->[MYSQLD_SERVER_OPTIONS]) { |
0.67.339
by Bernt M. Johnsen
Added replicating server (actually a master/slave pair) + unit test |
296 |
$command = $command." ".join(' ',@{$self->[MYSQLD_SERVER_OPTIONS]}); |
0.67.313
by Bernt M. Johnsen
Server: server options, better testing, some improvements |
297 |
}
|
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
298 |
|
0.67.329
by Bernt M. Johnsen
More server stuff |
299 |
my $serverlog = $self->vardir."/".MYSQLD_LOG_FILE; |
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
300 |
|
0.67.381
by Bernt M. Johnsen
Adjustments after merge |
301 |
if (osWindows) { |
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
302 |
my $proc; |
0.67.452
by Bernt M. Johnsen
Corefile stuff. Version nmbers on Windows |
303 |
my $exe = $self->binary; |
0.67.329
by Bernt M. Johnsen
More server stuff |
304 |
my $vardir = $self->[MYSQLD_VARDIR]; |
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
305 |
$exe =~ s/\//\\/g; |
0.67.329
by Bernt M. Johnsen
More server stuff |
306 |
$vardir =~ s/\//\\/g; |
0.67.452
by Bernt M. Johnsen
Corefile stuff. Version nmbers on Windows |
307 |
say("Starting MySQL ".$self->version.": $exe as $command on $vardir"); |
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
308 |
Win32::Process::Create($proc, |
309 |
$exe, |
|
310 |
$command, |
|
311 |
0, |
|
312 |
NORMAL_PRIORITY_CLASS(), |
|
313 |
".") || die _reportError(); |
|
314 |
$self->[MYSQLD_WINDOWS_PROCESS]=$proc; |
|
315 |
$self->[MYSQLD_SERVERPID]=$proc->GetProcessID(); |
|
316 |
} else { |
|
0.99.14
by Bernt M. Johnsen
valgrind support added to server |
317 |
if ($self->[MYSQLD_VALGRIND]) { |
318 |
my $val_opt =""; |
|
319 |
if (defined $self->[MYSQLD_VALGRIND_OPTIONS]) { |
|
320 |
$val_opt = join(' ',@{$self->[MYSQLD_VALGRIND_OPTIONS]}); |
|
321 |
}
|
|
0.99.21
by Bernt M. Johnsen
Fix referneces to error_log, time-stamp on valgrind and some more |
322 |
$command = "valgrind --time-stamp=yes ".$val_opt." ".$command; |
0.99.14
by Bernt M. Johnsen
valgrind support added to server |
323 |
}
|
0.67.452
by Bernt M. Johnsen
Corefile stuff. Version nmbers on Windows |
324 |
say("Starting MySQL ".$self->version.": $command"); |
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
325 |
$self->[MYSQLD_AUXPID] = fork(); |
326 |
if ($self->[MYSQLD_AUXPID]) { |
|
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
327 |
## Wait for the pid file to have been created
|
0.67.329
by Bernt M. Johnsen
More server stuff |
328 |
my $waits = 0; |
329 |
while (!-f $self->pidfile && $waits < 100) { |
|
330 |
Time::HiRes::sleep(0.2); |
|
331 |
$waits++; |
|
332 |
}
|
|
0.99.14
by Bernt M. Johnsen
valgrind support added to server |
333 |
if (!-f $self->pidfile) { |
334 |
sayFile($self->logfile); |
|
335 |
croak("Could not start mysql server"); |
|
336 |
}
|
|
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
337 |
my $pidfile = $self->pidfile; |
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
338 |
my $pid = `cat \"$pidfile\"`; |
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
339 |
$pid =~ m/([0-9]+)/; |
340 |
$self->[MYSQLD_SERVERPID] = int($1); |
|
341 |
} else { |
|
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
342 |
exec("$command > \"$serverlog\" 2>&1") || croak("Could not start mysql server"); |
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
343 |
}
|
344 |
}
|
|
345 |
||
0.67.404
by Bernt M. Johnsen
Moved server handling to lib/DBServer |
346 |
return $self->dbh ? DBSTATUS_OK : DBSTATUS_FAILURE; |
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
347 |
}
|
348 |
||
349 |
sub kill { |
|
350 |
my ($self) = @_; |
|
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
351 |
|
0.67.381
by Bernt M. Johnsen
Adjustments after merge |
352 |
if (osWindows()) { |
0.67.329
by Bernt M. Johnsen
More server stuff |
353 |
if (defined $self->[MYSQLD_WINDOWS_PROCESS]) { |
354 |
$self->[MYSQLD_WINDOWS_PROCESS]->Kill(0); |
|
0.67.445
by Bernt M. Johnsen
Fixed typo in Windows mode |
355 |
say("Killed process ".$self->[MYSQLD_WINDOWS_PROCESS]->GetProcessID()); |
0.67.329
by Bernt M. Johnsen
More server stuff |
356 |
}
|
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
357 |
} else { |
0.67.329
by Bernt M. Johnsen
More server stuff |
358 |
if (defined $self->serverpid) { |
359 |
kill KILL => $self->serverpid; |
|
360 |
say("Killed process ".$self->serverpid); |
|
361 |
}
|
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
362 |
}
|
0.67.448
by Bernt M. Johnsen
Delete socket file on server stop, look for boot-sql more places |
363 |
if (-e $self->socketfile) { |
364 |
unlink $self->socketfile; |
|
365 |
}
|
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
366 |
}
|
367 |
||
0.99.28
by Bernt M. Johnsen
Server crash function and unit test of Backtrace reporter |
368 |
sub crash { |
369 |
my ($self) = @_; |
|
370 |
||
0.67.381
by Bernt M. Johnsen
Adjustments after merge |
371 |
if (osWindows()) { |
0.99.28
by Bernt M. Johnsen
Server crash function and unit test of Backtrace reporter |
372 |
## How do i do this?????
|
373 |
$self->kill; ## Temporary |
|
374 |
} else { |
|
375 |
if (defined $self->serverpid) { |
|
376 |
kill SEGV => $self->serverpid; |
|
377 |
say("Crashed process ".$self->serverpid); |
|
378 |
}
|
|
379 |
}
|
|
0.67.450
by Bernt M. Johnsen
Delete sock file after call to server->crash |
380 |
if (-e $self->socketfile) { |
381 |
unlink $self->socketfile; |
|
382 |
}
|
|
0.99.28
by Bernt M. Johnsen
Server crash function and unit test of Backtrace reporter |
383 |
}
|
384 |
||
385 |
sub corefile { |
|
386 |
my ($self) = @_; |
|
387 |
||
0.67.452
by Bernt M. Johnsen
Corefile stuff. Version nmbers on Windows |
388 |
## Unix variant
|
389 |
return $self->datadir."/core.".$self->serverpid; |
|
390 |
}
|
|
391 |
||
392 |
sub dumper { |
|
393 |
return $_[0]->[MYSQLD_DUMPER]; |
|
394 |
}
|
|
395 |
||
396 |
sub dumpdb { |
|
397 |
my ($self,$database, $file) = @_; |
|
398 |
say("Dumping MySQL server ".$self->version." on port ".$self->port); |
|
0.107.3
by John H. Embretsen
Fix for bug#55689 (mysqldump fails with new server module against old MySQL due to --no-tablespaces). |
399 |
my $dump_command = '"'.$self->dumper. |
400 |
"\" --hex-blob --skip-triggers --compact ". |
|
401 |
"--order-by-primary --skip-extended-insert ". |
|
402 |
"--no-create-info --host=127.0.0.1 ". |
|
403 |
"--port=".$self->port; |
|
404 |
# --no-tablespaces option was introduced in version 5.1.14.
|
|
405 |
if ($self->_newerThan(5,1,13)) { |
|
406 |
$dump_command = $dump_command . " --no-tablespaces"; |
|
407 |
}
|
|
408 |
my $dump_result = system("$dump_command | sort > $file"); |
|
0.67.452
by Bernt M. Johnsen
Corefile stuff. Version nmbers on Windows |
409 |
return $dump_result; |
410 |
}
|
|
411 |
||
412 |
sub binary { |
|
413 |
return $_[0]->[MYSQLD_MYSQLD]; |
|
0.99.28
by Bernt M. Johnsen
Server crash function and unit test of Backtrace reporter |
414 |
}
|
415 |
||
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
416 |
sub stopServer { |
417 |
my ($self) = @_; |
|
0.67.332
by Bernt M. Johnsen
Handle spaces in files |
418 |
|
0.67.329
by Bernt M. Johnsen
More server stuff |
419 |
if (defined $self->[MYSQLD_DBH]) { |
420 |
say("Stopping server on port ".$self->port); |
|
0.67.382
by Bernt M. Johnsen
Fixed problem with stale dbh handlerwhich caused problem for replication |
421 |
my $r = $self->dbh->func('shutdown','127.0.0.1','root','admin'); |
0.67.338
by Bernt M. Johnsen
Do not return from stopServer util the server is properly stopped + test of start dirty |
422 |
my $waits = 0; |
423 |
if ($r) { |
|
424 |
while (-f $self->pidfile && $waits < 100) { |
|
425 |
Time::HiRes::sleep(0.2); |
|
426 |
$waits++; |
|
427 |
}
|
|
428 |
}
|
|
429 |
if (!$r or $waits >= 100) { |
|
0.67.329
by Bernt M. Johnsen
More server stuff |
430 |
say("Server would not shut down properly"); |
431 |
$self->kill; |
|
0.67.448
by Bernt M. Johnsen
Delete socket file on server stop, look for boot-sql more places |
432 |
} else { |
433 |
unlink $self->socketfile; |
|
0.67.329
by Bernt M. Johnsen
More server stuff |
434 |
}
|
435 |
} else { |
|
0.67.320
by Bernt M. Johnsen
Prpoer server shutdown |
436 |
$self->kill; |
0.67.314
by Bernt Johnsen
Server: Windows process start |
437 |
}
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
438 |
}
|
439 |
||
440 |
sub _find { |
|
0.99.6
by Bernt M. Johnsen
Cmake out-of-source build adaptions |
441 |
my($self, $bases, $subdir, $name) = @_; |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
442 |
|
0.99.6
by Bernt M. Johnsen
Cmake out-of-source build adaptions |
443 |
foreach my $base (@$bases) { |
444 |
foreach my $s (@$subdir) { |
|
445 |
my $path = $base."/".$s."/".$name; |
|
446 |
return $path if -f $path; |
|
447 |
}
|
|
448 |
}
|
|
449 |
my $paths = ""; |
|
450 |
foreach my $base (@$bases) { |
|
451 |
$paths .= join(",",map {"'".$base."/".$_."'"} @$subdir).","; |
|
452 |
}
|
|
453 |
croak "Cannot find '$name' in $paths"; |
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
454 |
}
|
455 |
||
0.67.319
by Bernt M. Johnsen
Server dsn and test of dsn/Executor |
456 |
sub dsn { |
457 |
my ($self,$database) = @_; |
|
458 |
$database = "test" if not defined MYSQLD_DEFAULT_DATABASE; |
|
459 |
return "dbi:mysql:host=127.0.0.1:port=". |
|
0.67.329
by Bernt M. Johnsen
More server stuff |
460 |
$self->[MYSQLD_PORT]. |
0.67.319
by Bernt M. Johnsen
Server dsn and test of dsn/Executor |
461 |
":user=root:database=".$database; |
462 |
}
|
|
463 |
||
0.67.339
by Bernt M. Johnsen
Added replicating server (actually a master/slave pair) + unit test |
464 |
sub dbh { |
0.67.382
by Bernt M. Johnsen
Fixed problem with stale dbh handlerwhich caused problem for replication |
465 |
my ($self) = @_; |
466 |
if (defined $self->[MYSQLD_DBH]) { |
|
467 |
if (!$self->[MYSQLD_DBH]->ping) { |
|
468 |
$self->[MYSQLD_DBH] = DBI->connect($self->dsn("mysql"), |
|
469 |
undef, |
|
470 |
undef, |
|
471 |
{PrintError => 1, |
|
472 |
RaiseError => 0, |
|
473 |
AutoCommit => 1}); |
|
474 |
}
|
|
475 |
} else { |
|
476 |
$self->[MYSQLD_DBH] = DBI->connect($self->dsn("mysql"), |
|
477 |
undef, |
|
478 |
undef, |
|
479 |
{PrintError => 1, |
|
480 |
RaiseError => 0, |
|
481 |
AutoCommit => 1}); |
|
482 |
}
|
|
483 |
return $self->[MYSQLD_DBH]; |
|
0.67.339
by Bernt M. Johnsen
Added replicating server (actually a master/slave pair) + unit test |
484 |
}
|
485 |
||
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
486 |
sub _findDir { |
0.99.6
by Bernt M. Johnsen
Cmake out-of-source build adaptions |
487 |
my($self, $bases, $subdir, $name) = @_; |
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
488 |
|
0.99.6
by Bernt M. Johnsen
Cmake out-of-source build adaptions |
489 |
foreach my $base (@$bases) { |
490 |
foreach my $s (@$subdir) { |
|
491 |
my $path = $base."/".$s."/".$name; |
|
492 |
return $base."/".$s if -f $path; |
|
493 |
}
|
|
494 |
}
|
|
495 |
my $paths = ""; |
|
496 |
foreach my $base (@$bases) { |
|
497 |
$paths .= join(",",map {"'".$base."/".$_."'"} @$subdir).","; |
|
498 |
}
|
|
499 |
croak "Cannot find '$name' in $paths"; |
|
0.98.3
by Bernt M. Johnsen
MySQL server added (not used yet) |
500 |
}
|
501 |
||
0.67.335
by Bernt Johnsen
Windows adaptions |
502 |
sub _absPath { |
503 |
my ($self, $path) = @_; |
|
0.67.336
by Bernt M. Johnsen
more mysql.sock problems |
504 |
|
0.67.381
by Bernt M. Johnsen
Adjustments after merge |
505 |
if (osWindows()) { |
0.67.336
by Bernt M. Johnsen
more mysql.sock problems |
506 |
return
|
507 |
$path =~ m/^[A-Z]:[\/\\]/i; |
|
0.67.335
by Bernt Johnsen
Windows adaptions |
508 |
} else { |
0.67.336
by Bernt M. Johnsen
more mysql.sock problems |
509 |
return $path =~ m/^\//; |
0.67.335
by Bernt Johnsen
Windows adaptions |
510 |
}
|
511 |
}
|
|
0.67.351
by Bernt M. Johnsen
Figuring out the mysql version for Linux |
512 |
|
513 |
sub version { |
|
514 |
my($self) = @_; |
|
515 |
||
516 |
if (not defined $self->[MYSQLD_VERSION]) { |
|
0.67.452
by Bernt M. Johnsen
Corefile stuff. Version nmbers on Windows |
517 |
my $ver; |
518 |
if (osWindows) { |
|
519 |
my $conf = $self->_find([$self->basedir], |
|
520 |
['scripts', |
|
521 |
'bin', |
|
522 |
'sbin'], |
|
523 |
'mysql_config.pl'); |
|
524 |
## This will not work if there is no perl installation,
|
|
525 |
## but without perl, RQG won't work either :-)
|
|
526 |
$ver = `perl $conf --version`; |
|
527 |
} else { |
|
528 |
my $conf = $self->_find([$self->basedir], |
|
529 |
['scripts', |
|
530 |
'bin', |
|
531 |
'sbin'], |
|
532 |
'mysql_config'); |
|
533 |
||
534 |
$ver = `sh "$conf" --version`; |
|
535 |
}
|
|
536 |
chop($ver); |
|
537 |
$self->[MYSQLD_VERSION] = $ver; |
|
0.67.351
by Bernt M. Johnsen
Figuring out the mysql version for Linux |
538 |
}
|
539 |
return $self->[MYSQLD_VERSION]; |
|
540 |
}
|
|
0.67.352
by Bernt M. Johnsen
Version numbers as ints |
541 |
|
0.67.452
by Bernt M. Johnsen
Corefile stuff. Version nmbers on Windows |
542 |
sub printInfo { |
543 |
my($self) = @_; |
|
544 |
||
545 |
say("MySQL ". $self->version); |
|
546 |
say("Binary: ". $self->binary); |
|
547 |
say("Datadir: ". $self->datadir); |
|
548 |
say("Corefile: " . $self->corefile); |
|
549 |
}
|
|
550 |
||
0.67.352
by Bernt M. Johnsen
Version numbers as ints |
551 |
sub versionNumbers { |
552 |
my($self) = @_; |
|
553 |
||
554 |
$self->version =~ m/([0-9]+)\.([0-9]+)\.([0-9]+)/; |
|
555 |
||
556 |
return (int($1),int($2),int($3)); |
|
557 |
}
|
|
558 |
||
0.67.357
by Bernt M. Johnsen
Better version checking |
559 |
############# Version specific stuff
|
560 |
||
561 |
sub _messages { |
|
562 |
my ($self) = @_; |
|
563 |
||
564 |
if ($self->_olderThan(5,5,0)) { |
|
0.67.365
by Bernt M. Johnsen
Fixed version check |
565 |
return "--language=".$self->[MYSQLD_MESSAGES]."/english"; |
0.67.357
by Bernt M. Johnsen
Better version checking |
566 |
} else { |
0.67.365
by Bernt M. Johnsen
Fixed version check |
567 |
return "--lc-messages-dir=".$self->[MYSQLD_MESSAGES]; |
0.67.357
by Bernt M. Johnsen
Better version checking |
568 |
}
|
569 |
}
|
|
570 |
||
571 |
sub _logOption { |
|
572 |
my ($self) = @_; |
|
573 |
||
574 |
if ($self->_olderThan(5,1,29)) { |
|
0.67.365
by Bernt M. Johnsen
Fixed version check |
575 |
return "--log=".$self->logfile; |
0.67.357
by Bernt M. Johnsen
Better version checking |
576 |
} else { |
0.67.365
by Bernt M. Johnsen
Fixed version check |
577 |
return "--general-log-file=".$self->logfile; |
0.67.357
by Bernt M. Johnsen
Better version checking |
578 |
}
|
579 |
}
|
|
580 |
||
581 |
sub _olderThan { |
|
582 |
my ($self,$b1,$b2,$b3) = @_; |
|
583 |
||
584 |
my ($v1, $v2, $v3) = $self->versionNumbers; |
|
585 |
||
0.67.366
by Bernt M. Johnsen
Fixed version check |
586 |
my $b = $b1*1000 + $b2 * 100 + $b3; |
587 |
my $v = $v1*1000 + $v2 * 100 + $v3; |
|
0.67.365
by Bernt M. Johnsen
Fixed version check |
588 |
|
0.67.366
by Bernt M. Johnsen
Fixed version check |
589 |
return $v < $b; |
0.67.357
by Bernt M. Johnsen
Better version checking |
590 |
}
|
0.104.2
by Bernt M. Johnsen
Moved call to mysqldump into DBServer/MySQLd |
591 |
|
0.107.3
by John H. Embretsen
Fix for bug#55689 (mysqldump fails with new server module against old MySQL due to --no-tablespaces). |
592 |
sub _newerThan { |
593 |
my ($self,$b1,$b2,$b3) = @_; |
|
594 |
||
595 |
my ($v1, $v2, $v3) = $self->versionNumbers; |
|
596 |
||
597 |
my $b = $b1*1000 + $b2 * 100 + $b3; |
|
598 |
my $v = $v1*1000 + $v2 * 100 + $v3; |
|
599 |
||
600 |
return $v > $b; |
|
601 |
}
|
|
602 |
||
0.104.2
by Bernt M. Johnsen
Moved call to mysqldump into DBServer/MySQLd |
603 |