Commit 05aba79e authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-4447 MariaDB sources should have unix-style line endings everywhere

parent 98c06591
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Add executable plus some additional MySQL specific stuff
# Usage (same as for standard CMake's ADD_EXECUTABLE)
#
# MYSQL_ADD_EXECUTABLE(target source1...sourceN)
#
# MySQL specifics:
# - instruct CPack to install executable under ${CMAKE_INSTALL_PREFIX}/bin directory
# On Windows :
# - add version resource
# - instruct CPack to do autenticode signing if SIGNCODE is set
INCLUDE(cmake_parse_arguments)
FUNCTION (MYSQL_ADD_EXECUTABLE)
# Pass-through arguments for ADD_EXECUTABLE
MYSQL_PARSE_ARGUMENTS(ARG
"WIN32;MACOSX_BUNDLE;EXCLUDE_FROM_ALL;DESTINATION;COMPONENT"
""
${ARGN}
)
LIST(GET ARG_DEFAULT_ARGS 0 target)
LIST(REMOVE_AT ARG_DEFAULT_ARGS 0)
SET(sources ${ARG_DEFAULT_ARGS})
ADD_VERSION_INFO(${target} EXECUTABLE sources)
ADD_EXECUTABLE(${target} ${ARG_WIN32} ${ARG_MACOSX_BUNDLE} ${ARG_EXCLUDE_FROM_ALL} ${sources})
# tell CPack where to install
IF(NOT ARG_EXCLUDE_FROM_ALL)
IF(NOT ARG_DESTINATION)
SET(ARG_DESTINATION ${INSTALL_BINDIR})
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Add executable plus some additional MySQL specific stuff
# Usage (same as for standard CMake's ADD_EXECUTABLE)
#
# MYSQL_ADD_EXECUTABLE(target source1...sourceN)
#
# MySQL specifics:
# - instruct CPack to install executable under ${CMAKE_INSTALL_PREFIX}/bin directory
# On Windows :
# - add version resource
# - instruct CPack to do autenticode signing if SIGNCODE is set
INCLUDE(cmake_parse_arguments)
FUNCTION (MYSQL_ADD_EXECUTABLE)
# Pass-through arguments for ADD_EXECUTABLE
MYSQL_PARSE_ARGUMENTS(ARG
"WIN32;MACOSX_BUNDLE;EXCLUDE_FROM_ALL;DESTINATION;COMPONENT"
""
${ARGN}
)
LIST(GET ARG_DEFAULT_ARGS 0 target)
LIST(REMOVE_AT ARG_DEFAULT_ARGS 0)
SET(sources ${ARG_DEFAULT_ARGS})
ADD_VERSION_INFO(${target} EXECUTABLE sources)
ADD_EXECUTABLE(${target} ${ARG_WIN32} ${ARG_MACOSX_BUNDLE} ${ARG_EXCLUDE_FROM_ALL} ${sources})
# tell CPack where to install
IF(NOT ARG_EXCLUDE_FROM_ALL)
IF(NOT ARG_DESTINATION)
SET(ARG_DESTINATION ${INSTALL_BINDIR})
ENDIF()
IF(ARG_COMPONENT)
SET(COMP COMPONENT ${ARG_COMPONENT})
......@@ -50,7 +50,7 @@ FUNCTION (MYSQL_ADD_EXECUTABLE)
SET(COMP COMPONENT ${MYSQL_INSTALL_COMPONENT})
ELSE()
SET(COMP COMPONENT Client)
ENDIF()
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION} ${COMP})
ENDIF()
ENDIF()
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION} ${COMP})
ENDIF()
ENDFUNCTION()
// Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include <windows.h>
VS_VERSION_INFO VERSIONINFO
FILEVERSION @MAJOR_VERSION@,@MINOR_VERSION@,@PATCH_VERSION@,@TINY_VERSION@
PRODUCTVERSION @MAJOR_VERSION@,@MINOR_VERSION@,@PATCH_VERSION@,@TINY_VERSION@
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0
FILEOS VOS__WINDOWS32
FILETYPE @FILETYPE@
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "FileVersion", "@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@.@TINY_VERSION@\0"
VALUE "ProductVersion", "@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@.@TINY_VERSION@\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END
// Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include <windows.h>
VS_VERSION_INFO VERSIONINFO
FILEVERSION @MAJOR_VERSION@,@MINOR_VERSION@,@PATCH_VERSION@,@TINY_VERSION@
PRODUCTVERSION @MAJOR_VERSION@,@MINOR_VERSION@,@PATCH_VERSION@,@TINY_VERSION@
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0
FILEOS VOS__WINDOWS32
FILETYPE @FILETYPE@
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "FileVersion", "@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@.@TINY_VERSION@\0"
VALUE "ProductVersion", "@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@.@TINY_VERSION@\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END
# Italian (it) translation of debconf templates for mysql-dfsg-5.1
# Copyright (C) 2009 Software in the Public Interest
# This file is distributed under the same license as the mysql-dfsg-5.1 package.
# Luca Monducci <luca.mo@tiscali.it>, 2006 - 2009.
#
# Italian (it) translation of debconf templates for mysql-dfsg-5.1
# Copyright (C) 2009 Software in the Public Interest
# This file is distributed under the same license as the mysql-dfsg-5.1 package.
# Luca Monducci <luca.mo@tiscali.it>, 2006 - 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: mysql-dfsg-5.1 5.1.37 italian debconf templates\n"
......
# Translation of mysql-dfsg-5.1 debconf template to Swedish
# Copyright (C) 2009 Martin Bagge <brother@bsnet.se>
# This file is distributed under the same license as the mysql-dfsg-5.1 package.
#
# Andreas Henriksson <andreas@fatal.se>, 2007
# Martin Bagge <brother@bsnet.se>, 2009
# Translation of mysql-dfsg-5.1 debconf template to Swedish
# Copyright (C) 2009 Martin Bagge <brother@bsnet.se>
# This file is distributed under the same license as the mysql-dfsg-5.1 package.
#
# Andreas Henriksson <andreas@fatal.se>, 2007
# Martin Bagge <brother@bsnet.se>, 2009
msgid ""
msgstr ""
"Project-Id-Version: mysql-dfsg-5.1 5.0.21-3\n"
......
......@@ -45,8 +45,8 @@ INSERT INTO t3 VALUES (1),(2);
INSERT INTO test1.t1 VALUES (3,3);
USE test1;
LOAD DATA INFILE '../../std_data/loaddata7.dat' INTO TABLE t1
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
LOAD DATA INFILE '../../std_data/loaddata7.dat' INTO TABLE t1
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
DELETE FROM test3.t3 WHERE a=1;
flush logs;
......
--lower-case-table-names=2
--lower-case-table-names=2
This source diff could not be displayed because it is too large. You can view the blob instead.
# Test case for MDEV-246, lp:992983
# Check that ordinary connect/disconnect does not increase aborted_clients
# status variable, but KILL connection does
-- source include/not_embedded.inc
-- source include/count_sessions.inc
FLUSH STATUS;
# Connect/Disconnect look that aborted_clients stays 0
connect (con1,localhost,root,,);
disconnect con1;
connection default;
-- source include/wait_until_count_sessions.inc
# Check that there is 0 aborted clients so far
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='aborted_clients';
# Kill a connection, check that aborted_clients is incremented
connect(con2,localhost,root,,);
--disable_reconnect
--error ER_CONNECTION_KILLED
KILL CONNECTION_ID();
disconnect con2;
connection default;
-- source include/wait_until_count_sessions.inc
# aborted clients must be 1 now
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='aborted_clients';
FLUSH STATUS;
# Test case for MDEV-246, lp:992983
# Check that ordinary connect/disconnect does not increase aborted_clients
# status variable, but KILL connection does
-- source include/not_embedded.inc
-- source include/count_sessions.inc
FLUSH STATUS;
# Connect/Disconnect look that aborted_clients stays 0
connect (con1,localhost,root,,);
disconnect con1;
connection default;
-- source include/wait_until_count_sessions.inc
# Check that there is 0 aborted clients so far
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='aborted_clients';
# Kill a connection, check that aborted_clients is incremented
connect(con2,localhost,root,,);
--disable_reconnect
--error ER_CONNECTION_KILLED
KILL CONNECTION_ID();
disconnect con2;
connection default;
-- source include/wait_until_count_sessions.inc
# aborted clients must be 1 now
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='aborted_clients';
FLUSH STATUS;
--source include/have_plugin_auth.inc
--source include/not_embedded.inc
--source include/master-slave.inc
#
# Check that replication slave can connect to master using an account
# which authenticates with an external authentication plugin (bug#12897501).
#
# First stop the slave to guarantee that nothing is replicated.
#
--connection slave
--echo [connection slave]
--source include/stop_slave.inc
#
# Create an replication account on the master.
#
--connection master
--echo [connection master]
CREATE USER 'plug_user' IDENTIFIED WITH 'test_plugin_server' AS 'plug_user';
GRANT REPLICATION SLAVE ON *.* TO plug_user;
FLUSH PRIVILEGES;
#
# Now go to slave and change the replication user.
#
--connection slave
--echo [connection slave]
--let $master_user= query_get_value(SHOW SLAVE STATUS, Master_User, 1)
CHANGE MASTER TO
MASTER_USER= 'plug_user',
MASTER_PASSWORD= 'plug_user';
#
# Start slave with new replication account - this should trigger connection
# to the master server.
#
--source include/start_slave.inc
# Replicate all statements executed on master, in this case,
# (creation of the plug_user account).
#
--connection master
--sync_slave_with_master
--echo # Slave in-sync with master now.
SELECT user, plugin, authentication_string FROM mysql.user WHERE user LIKE 'plug_user';
#
# Now we can stop the slave and clean up.
#
# Note: it is important that slave is stopped at this
# moment - otherwise master's cleanup statements
# would be replicated on slave!
#
--echo # Cleanup (on slave).
--source include/stop_slave.inc
eval CHANGE MASTER TO MASTER_USER='$master_user';
DROP USER 'plug_user';
--echo # Cleanup (on master).
--connection master
DROP USER 'plug_user';
--let $rpl_only_running_threads= 1
--source include/rpl_end.inc
--source include/have_plugin_auth.inc
--source include/not_embedded.inc
--source include/master-slave.inc
#
# Check that replication slave can connect to master using an account
# which authenticates with an external authentication plugin (bug#12897501).
#
# First stop the slave to guarantee that nothing is replicated.
#
--connection slave
--echo [connection slave]
--source include/stop_slave.inc
#
# Create an replication account on the master.
#
--connection master
--echo [connection master]
CREATE USER 'plug_user' IDENTIFIED WITH 'test_plugin_server' AS 'plug_user';
GRANT REPLICATION SLAVE ON *.* TO plug_user;
FLUSH PRIVILEGES;
#
# Now go to slave and change the replication user.
#
--connection slave
--echo [connection slave]
--let $master_user= query_get_value(SHOW SLAVE STATUS, Master_User, 1)
CHANGE MASTER TO
MASTER_USER= 'plug_user',
MASTER_PASSWORD= 'plug_user';
#
# Start slave with new replication account - this should trigger connection
# to the master server.
#
--source include/start_slave.inc
# Replicate all statements executed on master, in this case,
# (creation of the plug_user account).
#
--connection master
--sync_slave_with_master
--echo # Slave in-sync with master now.
SELECT user, plugin, authentication_string FROM mysql.user WHERE user LIKE 'plug_user';
#
# Now we can stop the slave and clean up.
#
# Note: it is important that slave is stopped at this
# moment - otherwise master's cleanup statements
# would be replicated on slave!
#
--echo # Cleanup (on slave).
--source include/stop_slave.inc
eval CHANGE MASTER TO MASTER_USER='$master_user';
DROP USER 'plug_user';
--echo # Cleanup (on master).
--connection master
DROP USER 'plug_user';
--let $rpl_only_running_threads= 1
--source include/rpl_end.inc
......@@ -49,9 +49,9 @@ select grp,group_concat(c order by grp desc) from t1 group by grp order by grp;
# Test transfer to real values
select grp, group_concat(a separator "")+0 from t1 group by grp;
select grp, group_concat(a separator "")+0.0 from t1 group by grp;
select grp, ROUND(group_concat(a separator "")) from t1 group by grp;
select grp, group_concat(a separator "")+0 from t1 group by grp;
select grp, group_concat(a separator "")+0.0 from t1 group by grp;
select grp, ROUND(group_concat(a separator "")) from t1 group by grp;
drop table t1;
# Test NULL values
......
--lower-case-table-names=2
--lower-case-table-names=2
--source include/have_case_insensitive_file_system.inc
--source include/have_innodb.inc
--echo #
--echo # Bug#46941 crash with lower_case_table_names=2 and
--echo # foreign data dictionary confusion
--echo #
CREATE DATABASE XY;
USE XY;
#
# Logs are disabled, since the number of creates tables
# and subsequent select statements may vary between
# versions
#
--disable_query_log
--disable_result_log
let $tcs = `SELECT @@table_open_cache + 1`;
let $i = $tcs;
while ($i)
{
eval CREATE TABLE XY.T_$i (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL, d INT,
primary key(a, b), unique(b)) ENGINE=InnoDB;
dec $i;
}
eval ALTER TABLE XY.T_$tcs ADD INDEX I1 (c, b),
ADD CONSTRAINT C1 FOREIGN KEY (c, b) REFERENCES XY.T_1 (a, b);
eval ALTER TABLE XY.T_$tcs ADD INDEX I2 (b),
ADD CONSTRAINT C2 FOREIGN KEY (b) REFERENCES XY.T_1(a);
let $i = $tcs;
while ($i)
{
eval SELECT * FROM XY.T_$i LIMIT 1;
dec $i;
}
DROP DATABASE XY;
CREATE DATABASE XY;
USE XY;
eval CREATE TABLE XY.T_$tcs (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL, d INT,
PRIMARY KEY(a, b), UNIQUE(b)) ENGINE=InnoDB;
#
# The bug causes this SELECT to err
eval SELECT * FROM XY.T_$tcs LIMIT 1;
--enable_query_log
--enable_result_log
DROP DATABASE XY;
USE TEST;
--echo #
--echo # Bug55222 Mysqldump table names case bug in REFERENCES clause
--echo # InnoDB did not handle lower_case_table_names=2 for
--echo # foreign_table_names and referenced_table_names.
--echo #
SHOW VARIABLES LIKE 'lower_case_table_names';
--disable_warnings
DROP TABLE IF EXISTS `Table2`;
DROP TABLE IF EXISTS `Table1`;
--disable_warnings
CREATE TABLE `Table1`(c1 INT PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE `Table2`(c1 INT PRIMARY KEY, c2 INT) ENGINE=InnoDB;
ALTER TABLE `Table2` ADD CONSTRAINT fk1 FOREIGN KEY(c2) REFERENCES `Table1`(c1);
query_vertical SHOW CREATE TABLE `Table2`;
query_vertical SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA='test';
DROP TABLE `Table2`;
DROP TABLE `Table1`;
--disable_warnings
DROP TABLE IF EXISTS Product_Order;
DROP TABLE IF EXISTS Product;
DROP TABLE IF EXISTS Customer;
--enable_warnings
CREATE TABLE Product (Category INT NOT NULL, Id INT NOT NULL,
Price DECIMAL, PRIMARY KEY(Category, Id)) ENGINE=InnoDB;
CREATE TABLE Customer (Id INT NOT NULL, PRIMARY KEY (Id)) ENGINE=InnoDB;
CREATE TABLE Product_Order (No INT NOT NULL AUTO_INCREMENT,
Product_Category INT NOT NULL,
Product_Id INT NOT NULL,
Customer_Id INT NOT NULL,
PRIMARY KEY(No),
INDEX (Product_Category, Product_Id),
FOREIGN KEY (Product_Category, Product_Id)
REFERENCES Product(Category, Id) ON UPDATE CASCADE ON DELETE RESTRICT,
INDEX (Customer_Id),
FOREIGN KEY (Customer_Id)
REFERENCES Customer(Id)
) ENGINE=INNODB;
query_vertical SHOW CREATE TABLE Product_Order;
query_vertical SHOW CREATE TABLE Product;
query_vertical SHOW CREATE TABLE Customer;
query_vertical SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA='test';
DROP TABLE Product_Order;
DROP TABLE Product;
DROP TABLE Customer;
--source include/have_case_insensitive_file_system.inc
--source include/have_innodb.inc
--echo #
--echo # Bug#46941 crash with lower_case_table_names=2 and
--echo # foreign data dictionary confusion
--echo #
CREATE DATABASE XY;
USE XY;
#
# Logs are disabled, since the number of creates tables
# and subsequent select statements may vary between
# versions
#
--disable_query_log
--disable_result_log
let $tcs = `SELECT @@table_open_cache + 1`;
let $i = $tcs;
while ($i)
{
eval CREATE TABLE XY.T_$i (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL, d INT,
primary key(a, b), unique(b)) ENGINE=InnoDB;
dec $i;
}
eval ALTER TABLE XY.T_$tcs ADD INDEX I1 (c, b),
ADD CONSTRAINT C1 FOREIGN KEY (c, b) REFERENCES XY.T_1 (a, b);
eval ALTER TABLE XY.T_$tcs ADD INDEX I2 (b),
ADD CONSTRAINT C2 FOREIGN KEY (b) REFERENCES XY.T_1(a);
let $i = $tcs;
while ($i)
{
eval SELECT * FROM XY.T_$i LIMIT 1;
dec $i;
}
DROP DATABASE XY;
CREATE DATABASE XY;
USE XY;
eval CREATE TABLE XY.T_$tcs (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL, d INT,
PRIMARY KEY(a, b), UNIQUE(b)) ENGINE=InnoDB;
#
# The bug causes this SELECT to err
eval SELECT * FROM XY.T_$tcs LIMIT 1;
--enable_query_log
--enable_result_log
DROP DATABASE XY;
USE TEST;
--echo #
--echo # Bug55222 Mysqldump table names case bug in REFERENCES clause
--echo # InnoDB did not handle lower_case_table_names=2 for
--echo # foreign_table_names and referenced_table_names.
--echo #
SHOW VARIABLES LIKE 'lower_case_table_names';
--disable_warnings
DROP TABLE IF EXISTS `Table2`;
DROP TABLE IF EXISTS `Table1`;
--disable_warnings
CREATE TABLE `Table1`(c1 INT PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE `Table2`(c1 INT PRIMARY KEY, c2 INT) ENGINE=InnoDB;
ALTER TABLE `Table2` ADD CONSTRAINT fk1 FOREIGN KEY(c2) REFERENCES `Table1`(c1);
query_vertical SHOW CREATE TABLE `Table2`;
query_vertical SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA='test';
DROP TABLE `Table2`;
DROP TABLE `Table1`;
--disable_warnings
DROP TABLE IF EXISTS Product_Order;
DROP TABLE IF EXISTS Product;
DROP TABLE IF EXISTS Customer;
--enable_warnings
CREATE TABLE Product (Category INT NOT NULL, Id INT NOT NULL,
Price DECIMAL, PRIMARY KEY(Category, Id)) ENGINE=InnoDB;
CREATE TABLE Customer (Id INT NOT NULL, PRIMARY KEY (Id)) ENGINE=InnoDB;
CREATE TABLE Product_Order (No INT NOT NULL AUTO_INCREMENT,
Product_Category INT NOT NULL,
Product_Id INT NOT NULL,
Customer_Id INT NOT NULL,
PRIMARY KEY(No),
INDEX (Product_Category, Product_Id),
FOREIGN KEY (Product_Category, Product_Id)
REFERENCES Product(Category, Id) ON UPDATE CASCADE ON DELETE RESTRICT,
INDEX (Customer_Id),
FOREIGN KEY (Customer_Id)
REFERENCES Customer(Id)
) ENGINE=INNODB;
query_vertical SHOW CREATE TABLE Product_Order;
query_vertical SHOW CREATE TABLE Product;
query_vertical SHOW CREATE TABLE Customer;
query_vertical SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA='test';
DROP TABLE Product_Order;
DROP TABLE Product;
DROP TABLE Customer;
......@@ -134,7 +134,7 @@ my_bool my_gethwaddr(uchar *to)
#elif defined(_WIN32)
#include <winsock2.h>
#include <iphlpapi.h>
#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "iphlpapi.lib")
#define ETHER_ADDR_LEN 6
......
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/InnoDB combined database
# (c) 2002 Innobase Oy & MySQL AB
#
############################################################################
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/InnoDB combined database
# (c) 2002 Innobase Oy & MySQL AB
#
############################################################################
use Cwd;
use DBI;
use Benchmark;
$opt_loop_count = 100000;
use DBI;
use Benchmark;
$opt_loop_count = 100000;
$pwd = cwd(); $pwd = "." if ($pwd eq '');
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest1: MySQL/InnoDB stress test in Perl\n";
print "-------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on table innotest1 in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest1 > out1\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 63857) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "kh";
}}}
for ($j = 0; $j < (($i * 764877) % 20); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect()
|| die $dbh->errstr;
$dbh->do("set autocommit = 0");
$n = 0;
for ($i = 0; $i < 1; $i++) {
print "Dropping table innotest1\n";
$dbh->do("drop table innotest1");
print "Creating table innotest1\n";
$dbh->do(
"create table innotest1 (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), E TIMESTAMP, F TIMESTAMP, G DATETIME, PRIMARY KEY (A, D), INDEX
(B, C), INDEX (C), INDEX (D), INDEX(E), INDEX(G)) TYPE = INNODB")
|| die $dbh->errstr;
for ($j = 2; $j < $opt_loop_count - 10; $j = $j + 2) {
if ($j % 10 == 0) {
$dbh->do(
"insert into innotest1 (D, B, C, F, G) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."', NULL, NULL)");
} else {
$dbh->do(
"insert into innotest1 (D, B, C, F, G) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."', NOW(), NOW())");
}
$dbh->do("update innotest1 set B = '".$rnd_str[$j + 7]."' where A = ".$random[$j + 5]);
$dbh->do("update innotest1 SET D = D + 1 where A =".($j / 2 - 500));
$dbh->do("update innotest1 set B = '".$rnd_str[$j + 1]."' where A =".($j / 2 - 505));
$dbh->do("delete from innotest1 where A = ".$random[$random[$j]]);
fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
if (0 == ($j % 10)) {
$dbh->do("commit");
}
if (0 == ($j % 97)) {
fetch_all_rows($dbh, "select c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
fetch_all_rows($dbh, "select b, e, f, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
fetch_all_rows($dbh, "select b, c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
fetch_all_rows($dbh, "select b, c, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
fetch_all_rows($dbh, "select a, b, c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
fetch_all_rows($dbh, "select a, b, c, e, f, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
fetch_all_rows($dbh, "select d, b, c, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
$dbh->do("rollback");
}
for ($k = 1; $k < 10; $k++) {
$n += fetch_all_rows($dbh,
"SELECT a, d from innotest1 where a = ".(($k * 1764767) % $j));
$n += fetch_all_rows($dbh,
"SELECT * from innotest1 where a = ".(($k * 187567) % $j));
}
if (0 == ($j % 1000)) {
print "round $j, $n rows fetched\n";
}
if (0 == ($j % 20000)) {
print "Checking table innotest1...\n";
$dbh->do("check table innotest1");
print "Table checked.\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest1: MySQL/InnoDB stress test in Perl\n";
print "-------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on table innotest1 in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest1 > out1\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 63857) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "kh";
}}}
for ($j = 0; $j < (($i * 764877) % 20); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect()
|| die $dbh->errstr;
$dbh->do("set autocommit = 0");
$n = 0;
for ($i = 0; $i < 1; $i++) {
print "Dropping table innotest1\n";
$dbh->do("drop table innotest1");
print "Creating table innotest1\n";
$dbh->do(
"create table innotest1 (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), E TIMESTAMP, F TIMESTAMP, G DATETIME, PRIMARY KEY (A, D), INDEX
(B, C), INDEX (C), INDEX (D), INDEX(E), INDEX(G)) TYPE = INNODB")
|| die $dbh->errstr;
for ($j = 2; $j < $opt_loop_count - 10; $j = $j + 2) {
if ($j % 10 == 0) {
$dbh->do(
"insert into innotest1 (D, B, C, F, G) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."', NULL, NULL)");
} else {
$dbh->do(
"insert into innotest1 (D, B, C, F, G) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."', NOW(), NOW())");
}
$dbh->do("update innotest1 set B = '".$rnd_str[$j + 7]."' where A = ".$random[$j + 5]);
$dbh->do("update innotest1 SET D = D + 1 where A =".($j / 2 - 500));
$dbh->do("update innotest1 set B = '".$rnd_str[$j + 1]."' where A =".($j / 2 - 505));
$dbh->do("delete from innotest1 where A = ".$random[$random[$j]]);
fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
if (0 == ($j % 10)) {
$dbh->do("commit");
}
if (0 == ($j % 97)) {
fetch_all_rows($dbh, "select c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
fetch_all_rows($dbh, "select b, e, f, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
fetch_all_rows($dbh, "select b, c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
fetch_all_rows($dbh, "select b, c, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
fetch_all_rows($dbh, "select a, b, c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
fetch_all_rows($dbh, "select a, b, c, e, f, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
fetch_all_rows($dbh, "select d, b, c, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
$dbh->do("rollback");
}
for ($k = 1; $k < 10; $k++) {
$n += fetch_all_rows($dbh,
"SELECT a, d from innotest1 where a = ".(($k * 1764767) % $j));
$n += fetch_all_rows($dbh,
"SELECT * from innotest1 where a = ".(($k * 187567) % $j));
}
if (0 == ($j % 1000)) {
print "round $j, $n rows fetched\n";
}
if (0 == ($j % 20000)) {
print "Checking table innotest1...\n";
$dbh->do("check table innotest1");
print "Table checked.\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/InnoDB combined database
# (c) 2002 Innobase Oy & MySQL AB
#
############################################################################
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/InnoDB combined database
# (c) 2002 Innobase Oy & MySQL AB
#
############################################################################
use Cwd;
use DBI;
use Benchmark;
$opt_loop_count = 200000;
use DBI;
use Benchmark;
$opt_loop_count = 200000;
$pwd = cwd(); $pwd = "." if ($pwd eq '');
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest1a: MySQL/InnoDB stress test in Perl\n";
print "-------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on table innotest1 in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest1 > out1\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 63857) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "kh";
}}}
for ($j = 0; $j < (($i * 764877) % 20); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect()
|| die $dbh->errstr;
$dbh->do("set autocommit = 0");
for ($i = 0; $i < 1; $i++) {
print "loop $i\n";
for ($j = 1; $j < $opt_loop_count - 10; $j = $j + 2) {
$dbh->do(
"insert into innotest1 (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')");
$dbh->do("update innotest1 set B = '".$rnd_str[$j + 2]."' where A = ".$random[$j + 5]);
$dbh->do("update innotest1 SET D = D + 1 where A =".(($j - 1) / 2 - 777));
$dbh->do("update innotest1 set B = '".$rnd_str[$j + 8]."' where A =".(($j - 1) / 2 - 770));
$dbh->do("delete from innotest1 where A = ".$random[$random[$j]]);
fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
if (0 == ($j % 37)) {
$dbh->do("commit");
}
if (0 == ($j % 533)) {
$dbh->do("rollback");
}
if (0 == ($j % 537)) {
print fetch_all_rows($dbh, "select c from innotest1 where c = '".$rnd_str[$j - 67]."'");
print fetch_all_rows($dbh, "select b from innotest1 where b = '".$rnd_str[$j - 688]."'");
print fetch_all_rows($dbh, "select b, c from innotest1 where c = '".$rnd_str[$j - 67]."'");
print fetch_all_rows($dbh, "select b, c from innotest1 where b = '".$rnd_str[$j - 622]."'");
print fetch_all_rows($dbh, "select a, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
print fetch_all_rows($dbh, "select a, b, c from innotest1 where b = '".$rnd_str[$j - 644]."'");
print fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
print fetch_all_rows($dbh, "select d, b, c from innotest1 where b = '".$rnd_str[$j - 677]."'");
print "\n";
}
if (0 == (($j - 1) % 1000)) {
print "round $j\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest1a: MySQL/InnoDB stress test in Perl\n";
print "-------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on table innotest1 in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest1 > out1\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 63857) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "kh";
}}}
for ($j = 0; $j < (($i * 764877) % 20); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect()
|| die $dbh->errstr;
$dbh->do("set autocommit = 0");
for ($i = 0; $i < 1; $i++) {
print "loop $i\n";
for ($j = 1; $j < $opt_loop_count - 10; $j = $j + 2) {
$dbh->do(
"insert into innotest1 (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')");
$dbh->do("update innotest1 set B = '".$rnd_str[$j + 2]."' where A = ".$random[$j + 5]);
$dbh->do("update innotest1 SET D = D + 1 where A =".(($j - 1) / 2 - 777));
$dbh->do("update innotest1 set B = '".$rnd_str[$j + 8]."' where A =".(($j - 1) / 2 - 770));
$dbh->do("delete from innotest1 where A = ".$random[$random[$j]]);
fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
if (0 == ($j % 37)) {
$dbh->do("commit");
}
if (0 == ($j % 533)) {
$dbh->do("rollback");
}
if (0 == ($j % 537)) {
print fetch_all_rows($dbh, "select c from innotest1 where c = '".$rnd_str[$j - 67]."'");
print fetch_all_rows($dbh, "select b from innotest1 where b = '".$rnd_str[$j - 688]."'");
print fetch_all_rows($dbh, "select b, c from innotest1 where c = '".$rnd_str[$j - 67]."'");
print fetch_all_rows($dbh, "select b, c from innotest1 where b = '".$rnd_str[$j - 622]."'");
print fetch_all_rows($dbh, "select a, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
print fetch_all_rows($dbh, "select a, b, c from innotest1 where b = '".$rnd_str[$j - 644]."'");
print fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
print fetch_all_rows($dbh, "select d, b, c from innotest1 where b = '".$rnd_str[$j - 677]."'");
print "\n";
}
if (0 == (($j - 1) % 1000)) {
print "round $j\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/InnoDB combined database
# (c) 2002 Innobase Oy & MySQL AB
#
############################################################################
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/InnoDB combined database
# (c) 2002 Innobase Oy & MySQL AB
#
############################################################################
use Cwd;
use DBI;
use Benchmark;
$opt_loop_count = 200000;
use DBI;
use Benchmark;
$opt_loop_count = 200000;
$pwd = cwd(); $pwd = "." if ($pwd eq '');
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest1b: MySQL/InnoDB stress test in Perl\n";
print "-------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on table innotest1 in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest1 > out1\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 63857) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "kh";
}}}
for ($j = 0; $j < (($i * 764877) % 20); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect()
|| die $dbh->errstr;
$dbh->do("set autocommit = 0");
for ($i = 0; $i < 5; $i++) {
print "loop $i\n";
for ($j = 1; $j < $opt_loop_count - 10; $j = $j + 2) {
fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
if (0 == ($j % 37)) {
$dbh->do("commit");
}
if (0 == ($j % 533)) {
$dbh->do("rollback");
}
if (0 == ($j % 537)) {
print fetch_all_rows($dbh, "select c from innotest1 where c = '".$rnd_str[$j - 67]."'");
print fetch_all_rows($dbh, "select b from innotest1 where b = '".$rnd_str[$j - 688]."'");
print fetch_all_rows($dbh, "select b, c from innotest1 where c = '".$rnd_str[$j - 67]."'");
print fetch_all_rows($dbh, "select b, c from innotest1 where b = '".$rnd_str[$j - 622]."'");
print fetch_all_rows($dbh, "select a, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
print fetch_all_rows($dbh, "select a, b, c from innotest1 where b = '".$rnd_str[$j - 644]."'");
print fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
print fetch_all_rows($dbh, "select d, b, c from innotest1 where b = '".$rnd_str[$j - 677]."'");
print "\n";
}
if (0 == (($j - 1) % 1000)) {
print "round $j\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest1b: MySQL/InnoDB stress test in Perl\n";
print "-------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on table innotest1 in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest1 > out1\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 63857) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "kh";
}}}
for ($j = 0; $j < (($i * 764877) % 20); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect()
|| die $dbh->errstr;
$dbh->do("set autocommit = 0");
for ($i = 0; $i < 5; $i++) {
print "loop $i\n";
for ($j = 1; $j < $opt_loop_count - 10; $j = $j + 2) {
fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
if (0 == ($j % 37)) {
$dbh->do("commit");
}
if (0 == ($j % 533)) {
$dbh->do("rollback");
}
if (0 == ($j % 537)) {
print fetch_all_rows($dbh, "select c from innotest1 where c = '".$rnd_str[$j - 67]."'");
print fetch_all_rows($dbh, "select b from innotest1 where b = '".$rnd_str[$j - 688]."'");
print fetch_all_rows($dbh, "select b, c from innotest1 where c = '".$rnd_str[$j - 67]."'");
print fetch_all_rows($dbh, "select b, c from innotest1 where b = '".$rnd_str[$j - 622]."'");
print fetch_all_rows($dbh, "select a, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
print fetch_all_rows($dbh, "select a, b, c from innotest1 where b = '".$rnd_str[$j - 644]."'");
print fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
print fetch_all_rows($dbh, "select d, b, c from innotest1 where b = '".$rnd_str[$j - 677]."'");
print "\n";
}
if (0 == (($j - 1) % 1000)) {
print "round $j\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/InnoDB combined database
# (c) 2002 Innobase Oy & MySQL AB
#
############################################################################
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/InnoDB combined database
# (c) 2002 Innobase Oy & MySQL AB
#
############################################################################
use Cwd;
use DBI;
use Benchmark;
$opt_loop_count = 100000;
use DBI;
use Benchmark;
$opt_loop_count = 100000;
$pwd = cwd(); $pwd = "." if ($pwd eq '');
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest2: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
print "------------------------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks with foreign keys with\n";
print "the ON DELETE ... clause. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest2 > out2\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 63857) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "khD";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "kHd";
}}}
for ($j = 0; $j < (($i * 764877) % 10); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect()
|| die $dbh->errstr;
$dbh->do("set autocommit = 0");
for ($i = 0; $i < 1; $i++) {
print "loop $i\n";
print "dropping table innotest2a\n";
$dbh->do("drop table innotest2a");
print "dropping table innotest2b\n";
$dbh->do("drop table innotest2b");
print "dropping table innotest2c\n";
$dbh->do("drop table innotest2c");
print "dropping table innotest2d\n";
$dbh->do("drop table innotest2d");
print "creating table innotest2b\n";
$dbh->do(
"create table innotest2b (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C)) TYPE = INNODB")
|| die $dbh->errstr;
print "creating table innotest2a\n";
$dbh->do(
"create table innotest2a (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (A, D) REFERENCES innotest2b (A, D) ON DELETE CASCADE) TYPE = INNODB")
|| die $dbh->errstr;
print "creating table innotest2c\n";
$dbh->do(
"create table innotest2c (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (A, D) REFERENCES innotest2a (A, D) ON DELETE CASCADE, FOREIGN KEY (B, C) REFERENCES innotest2a (B, C) ON DELETE CASCADE) TYPE = INNODB")
|| die $dbh->errstr;
print "creating table innotest2d\n";
$dbh->do(
"create table innotest2d (A INT AUTO_INCREMENT, D INT, B VARCHAR(200), C VARCHAR(175), UNIQUE KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (C) REFERENCES innotest2c (C) ON DELETE SET NULL, FOREIGN KEY (B, C) REFERENCES innotest2c (B, C) ON DELETE SET NULL) TYPE = INNODB")
|| die $dbh->errstr;
print "created\n";
for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 2) {
$dbh->do(
"insert into innotest2b (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do(
"insert into innotest2a (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do(
"insert into innotest2c (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do(
"insert into innotest2d (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do("delete from innotest2b where A = ".$random[$random[$j]])
|| print $dbh->errstr;
if (0 == ($j % 10)) {
$dbh->do("commit");
}
if (0 == ($j % 39)) {
$dbh->do("rollback");
}
if (0 == ($j % 1000)) {
print "round $j\n";
}
if (0 == ($j % 20000)) {
print "Checking tables...\n";
$dbh->do("check table innotest2a");
$dbh->do("check table innotest2b");
$dbh->do("check table innotest2c");
$dbh->do("check table innotest2d");
print "Tables checked.\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest2: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
print "------------------------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks with foreign keys with\n";
print "the ON DELETE ... clause. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest2 > out2\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 63857) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "khD";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "kHd";
}}}
for ($j = 0; $j < (($i * 764877) % 10); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect()
|| die $dbh->errstr;
$dbh->do("set autocommit = 0");
for ($i = 0; $i < 1; $i++) {
print "loop $i\n";
print "dropping table innotest2a\n";
$dbh->do("drop table innotest2a");
print "dropping table innotest2b\n";
$dbh->do("drop table innotest2b");
print "dropping table innotest2c\n";
$dbh->do("drop table innotest2c");
print "dropping table innotest2d\n";
$dbh->do("drop table innotest2d");
print "creating table innotest2b\n";
$dbh->do(
"create table innotest2b (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C)) TYPE = INNODB")
|| die $dbh->errstr;
print "creating table innotest2a\n";
$dbh->do(
"create table innotest2a (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (A, D) REFERENCES innotest2b (A, D) ON DELETE CASCADE) TYPE = INNODB")
|| die $dbh->errstr;
print "creating table innotest2c\n";
$dbh->do(
"create table innotest2c (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (A, D) REFERENCES innotest2a (A, D) ON DELETE CASCADE, FOREIGN KEY (B, C) REFERENCES innotest2a (B, C) ON DELETE CASCADE) TYPE = INNODB")
|| die $dbh->errstr;
print "creating table innotest2d\n";
$dbh->do(
"create table innotest2d (A INT AUTO_INCREMENT, D INT, B VARCHAR(200), C VARCHAR(175), UNIQUE KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (C) REFERENCES innotest2c (C) ON DELETE SET NULL, FOREIGN KEY (B, C) REFERENCES innotest2c (B, C) ON DELETE SET NULL) TYPE = INNODB")
|| die $dbh->errstr;
print "created\n";
for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 2) {
$dbh->do(
"insert into innotest2b (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do(
"insert into innotest2a (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do(
"insert into innotest2c (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do(
"insert into innotest2d (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do("delete from innotest2b where A = ".$random[$random[$j]])
|| print $dbh->errstr;
if (0 == ($j % 10)) {
$dbh->do("commit");
}
if (0 == ($j % 39)) {
$dbh->do("rollback");
}
if (0 == ($j % 1000)) {
print "round $j\n";
}
if (0 == ($j % 20000)) {
print "Checking tables...\n";
$dbh->do("check table innotest2a");
$dbh->do("check table innotest2b");
$dbh->do("check table innotest2c");
$dbh->do("check table innotest2d");
print "Tables checked.\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/Innobase combined database
# (c) 2000 Innobase Oy & MySQL AB
#
############################################################################
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/Innobase combined database
# (c) 2000 Innobase Oy & MySQL AB
#
############################################################################
use Cwd;
use DBI;
use Benchmark;
$opt_loop_count = 100000;
use DBI;
use Benchmark;
$opt_loop_count = 100000;
$pwd = cwd(); $pwd = "." if ($pwd eq '');
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest2a: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
print "------------------------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks with foreign keys with\n";
print "the ON DELETE ... clause. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest2 > out2\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 63857) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "khD";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "kHd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
}}}
for ($j = 0; $j < (($i * 764877) % 20); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect()
|| die $dbh->errstr;
$dbh->do("set autocommit = 0");
for ($i = 0; $i < 5; $i++) {
print "loop $i\n";
for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 1) {
$dbh->do("update innotest2a set B = '".$rnd_str[$j + 1]."' where A = ".$random[$j + 5])
|| print $dbh->errstr;
$dbh->do("delete from innotest2a where A = ".$random[$random[$j]])
|| print $dbh->errstr;
if (0 == ($j % 10)) {
$dbh->do("commit");
}
if (0 == ($j % 39)) {
$dbh->do("rollback");
}
if (0 == ($j % 1000)) {
print "round $j\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest2a: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
print "------------------------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks with foreign keys with\n";
print "the ON DELETE ... clause. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest2 > out2\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 63857) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "khD";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "kHd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
}}}
for ($j = 0; $j < (($i * 764877) % 20); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect()
|| die $dbh->errstr;
$dbh->do("set autocommit = 0");
for ($i = 0; $i < 5; $i++) {
print "loop $i\n";
for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 1) {
$dbh->do("update innotest2a set B = '".$rnd_str[$j + 1]."' where A = ".$random[$j + 5])
|| print $dbh->errstr;
$dbh->do("delete from innotest2a where A = ".$random[$random[$j]])
|| print $dbh->errstr;
if (0 == ($j % 10)) {
$dbh->do("commit");
}
if (0 == ($j % 39)) {
$dbh->do("rollback");
}
if (0 == ($j % 1000)) {
print "round $j\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/Innobase combined database
# (c) 2000 Innobase Oy & MySQL AB
#
############################################################################
#!/usr/bin/perl
############################################################################
# Stress test for MySQL/Innobase combined database
# (c) 2000 Innobase Oy & MySQL AB
#
############################################################################
use Cwd;
use DBI;
use Benchmark;
$opt_loop_count = 100000;
use DBI;
use Benchmark;
$opt_loop_count = 100000;
$pwd = cwd(); $pwd = "." if ($pwd eq '');
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest2b: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
print "------------------------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks with foreign keys with\n";
print "the ON DELETE ... clause. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest2 > out2\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 98641) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "khD";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "kHd";
}}}
for ($j = 0; $j < (($i * 764877) % 10); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect();
$dbh->do("set autocommit = 0");
for ($i = 0; $i < 1; $i++) {
print "loop $i\n";
for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 2) {
$dbh->do(
"insert into innotest2b (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do(
"insert into innotest2a (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do(
"insert into innotest2c (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do("delete from innotest2b where A = ".$random[$random[$j]])
|| print $dbh->errstr;
$dbh->do("update innotest2b set A = A + 1 where A = ".$random[$j])
|| print $dbh->errstr;
if (0 == ($j % 10)) {
$dbh->do("commit");
}
if (0 == ($j % 39)) {
$dbh->do("rollback");
}
if (0 == ($j % 1000)) {
print "round $j\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
print "Innotest2b: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
print "------------------------------------------------------------\n";
print "This is a randomized stress test for concurrent inserts,\n";
print "updates, deletes, commits and rollbacks with foreign keys with\n";
print "the ON DELETE ... clause. The test will generate\n";
print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
print "\n";
print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
print "The thing to watch is that the server does not crash or does not\n";
print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
print "warnings about MySQL lock reservations can appear in the .err log.\n";
print "The test will run very long, even several hours. You can kill\n";
print "the perl processes running this test at any time and do CHECK\n";
print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
print "\n";
print "Some of these stress tests will print a lot of SQL errors\n";
print "to the standard output. That is not to be worried about.\n";
print "You can direct the output to a file like this:\n";
print "perl innotest2 > out2\n\n";
print "Generating random keys\n";
$random[$opt_loop_count] = 0;
$rnd_str[$opt_loop_count] = "a";
for ($i = 0; $i < $opt_loop_count; $i++) {
$random[$i] = ($i * 98641) % $opt_loop_count;
if (0 == ($random[$i] % 3)) {
$rnd_str[$i] = "khD";
} else { if (1 == ($random[$i] % 3)) {
$rnd_str[$i] = "khd";
} else { if (2 == ($random[$i] % 3)) {
$rnd_str[$i] = "kHd";
}}}
for ($j = 0; $j < (($i * 764877) % 10); $j++) {
$rnd_str[$i] = $rnd_str[$i]."k";
}
}
####
#### Connect
####
$dbh = $server->connect();
$dbh->do("set autocommit = 0");
for ($i = 0; $i < 1; $i++) {
print "loop $i\n";
for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 2) {
$dbh->do(
"insert into innotest2b (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do(
"insert into innotest2a (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do(
"insert into innotest2c (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
|| print $dbh->errstr;
$dbh->do("delete from innotest2b where A = ".$random[$random[$j]])
|| print $dbh->errstr;
$dbh->do("update innotest2b set A = A + 1 where A = ".$random[$j])
|| print $dbh->errstr;
if (0 == ($j % 10)) {
$dbh->do("commit");
}
if (0 == ($j % 39)) {
$dbh->do("rollback");
}
if (0 == ($j % 1000)) {
print "round $j\n";
}
}
$dbh->do("commit");
}
$dbh->disconnect; # close connection
#This file is automaticly generated by crash-me 1.37
NEG=yes # update of column= -column
alter_add_col=yes # Alter table add column
alter_add_multi_col=without add # Alter table add many columns
alter_alter_col=no # Alter table alter column
alter_change_col=no # Alter table change column
alter_drop_col=yes # Alter table drop column
alter_modify_col=no # Alter table modify column
alter_rename_table=no # Alter table rename table
atomic_updates=no # atomic updates
binary_items=yes # binary items (0x41)
case_insensitive_strings=yes # case insensitive compare
char_is_space_filled=no # char are space filled
column_alias=yes # Column alias
columns_in_group_by=11 # number of columns in group by
columns_in_order_by=11 # number of columns in order by
comment_#=no # # as comment
comment_--=no # -- as comment
comment_/**/=no # /* */ as comment
comment_//=no # // as comment
compute=no # Compute
connections=64 # Simultaneous connections
constraint_check=no # CHECK constraint
constraint_null=yes # NULL constraint (SyBase style)
crash_me_safe=no # crash me safe
crash_me_version=1.37 # crash me version
create_default=no # default value for column
create_default_func=no # default value function for column
create_if_not_exists=no # create table if not exists
create_index=yes # create index
create_table_select=no # create table from select
cross_join=no # cross join (same as from a,b)
date_as_string=error # String functions on date columns
date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
date_zero=no # Supports 0000-00-00 dates
double_quotes=yes # Double '' as ' in strings
drop_if_exists=no # drop table if exists
drop_index=with 'ON' # drop index
end_colon=yes # allows end ';'
except=no # except
except_all=no # except all
float_int_expr=yes # mixing of integer and float in expression
foreign_key_syntax=no # foreign key syntax
full_outer_join=no # full outer join
func_extra_!=no # Function NOT as '!' in SELECT
func_extra_%=no # Function MOD as %
func_extra_&=error # Function & (bitwise and)
func_extra_&&=no # Function AND as '&&'
func_extra_<>=yes # Function <> in SELECT
func_extra_==yes # Function =
func_extra_add_months=no # Function ADD_MONTHS
func_extra_and_or=yes # Function AND and OR in SELECT
func_extra_atn2=no # Function ATN2
func_extra_auto_num2string=no # Function automatic num->string convert
func_extra_auto_string2num=yes # Function automatic string->num convert
func_extra_between=yes # Function BETWEEN in SELECT
func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
func_extra_bit_count=no # Function BIT_COUNT
func_extra_ceil=no # Function CEIL
func_extra_charindex=no # Function CHARINDEX
func_extra_chr=yes # Function CHR
func_extra_coalesce=no # Function COALESCE
func_extra_concat_as_+=yes # Function concatenation with +
func_extra_concat_list=no # Function CONCAT(list)
func_extra_convert=no # Function CONVERT
func_extra_cosh=no # Function COSH
func_extra_date_format=no # Function DATE_FORMAT
func_extra_dateadd=no # Function DATEADD
func_extra_datediff=no # Function DATEDIFF
func_extra_datename=no # Function DATENAME
func_extra_datepart=no # Function DATEPART
func_extra_elt=no # Function ELT
func_extra_encrypt=no # Function ENCRYPT
func_extra_field=no # Function FIELD
func_extra_format=error # Function FORMAT
func_extra_from_days=no # Function FROM_DAYS
func_extra_from_unixtime=no # Function FROM_UNIXTIME
func_extra_getdate=no # Function GETDATE
func_extra_greatest=no # Function GREATEST
func_extra_if=no # Function IF
func_extra_in_num=yes # Function IN on numbers in SELECT
func_extra_in_str=yes # Function IN on strings in SELECT
func_extra_initcap=no # Function INITCAP
func_extra_instr=yes # Function LOCATE as INSTR
func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
func_extra_instrb=no # Function INSTRB
func_extra_interval=no # Function INTERVAL
func_extra_last_day=no # Function LAST_DAY
func_extra_last_insert_id=no # Function LAST_INSERT_ID
func_extra_least=no # Function LEAST
func_extra_lengthb=no # Function LENGTHB
func_extra_like=yes # Function LIKE in SELECT
func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
func_extra_ln=no # Function LN
func_extra_log(m_n)=no # Function LOG(m,n)
func_extra_logn=no # Function LOGN
func_extra_lpad=no # Function LPAD
func_extra_mdy=no # Function MDY
func_extra_mid=yes # Function SUBSTRING as MID
func_extra_months_between=no # Function MONTHS_BETWEEN
func_extra_not=yes # Function NOT in SELECT
func_extra_not_between=yes # Function NOT BETWEEN in SELECT
func_extra_not_like=yes # Function NOT LIKE in SELECT
func_extra_odbc_convert=no # Function ODBC CONVERT
func_extra_password=no # Function PASSWORD
func_extra_patindex=no # Function PATINDEX
func_extra_period_add=no # Function PERIOD_ADD
func_extra_period_diff=no # Function PERIOD_DIFF
func_extra_pow=no # Function POW
func_extra_range=no # Function RANGE
func_extra_regexp=no # Function REGEXP in SELECT
func_extra_replicate=no # Function REPLICATE
func_extra_reverse=no # Function REVERSE
func_extra_root=no # Function ROOT
func_extra_round1=yes # Function ROUND(1 arg)
func_extra_rpad=no # Function RPAD
func_extra_sec_to_time=no # Function SEC_TO_TIME
func_extra_sinh=no # Function SINH
func_extra_str=no # Function STR
func_extra_strcmp=no # Function STRCMP
func_extra_stuff=no # Function STUFF
func_extra_substrb=no # Function SUBSTRB
func_extra_substring_index=no # Function SUBSTRING_INDEX
func_extra_sysdate=no # Function SYSDATE
func_extra_tanh=no # Function TANH
func_extra_time_to_sec=no # Function TIME_TO_SEC
func_extra_to_days=no # Function TO_DAYS
func_extra_translate=no # Function TRANSLATE
func_extra_trim_many_char=no # Function TRIM; Many char extension
func_extra_trim_substring=no # Function TRIM; Substring extension
func_extra_trunc=no # Function TRUNC
func_extra_uid=no # Function UID
func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
func_extra_userenv=no # Function USERENV
func_extra_version=no # Function VERSION
func_extra_weekday=error # Function WEEKDAY
func_extra_|=no # Function | (bitwise or)
func_extra_||=no # Function OR as '||'
func_odbc_abs=yes # Function ABS
func_odbc_acos=no # Function ACOS
func_odbc_ascii=no # Function ASCII
func_odbc_asin=no # Function ASIN
func_odbc_atan=no # Function ATAN
func_odbc_atan2=no # Function ATAN2
func_odbc_ceiling=no # Function CEILING
func_odbc_char=no # Function CHAR
func_odbc_concat=no # Function CONCAT(2 arg)
func_odbc_cos=yes # Function COS
func_odbc_cot=no # Function COT
func_odbc_curdate=no # Function CURDATE
func_odbc_curtime=no # Function CURTIME
func_odbc_database=no # Function DATABASE
func_odbc_dayname=no # Function DAYNAME
func_odbc_dayofmonth=no # Function DAYOFMONTH
func_odbc_dayofweek=no # Function DAYOFWEEK
func_odbc_dayofyear=no # Function DAYOFYEAR
func_odbc_degrees=no # Function DEGREES
func_odbc_difference=no # Function DIFFERENCE()
func_odbc_exp=yes # Function EXP
func_odbc_extract=no # Function EXTRACT
func_odbc_floor=no # Function FLOOR
func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
func_odbc_hour=yes # Function HOUR
func_odbc_hour_time=no # Function ANSI HOUR
func_odbc_ifnull=no # Function IFNULL
func_odbc_insert=no # Function INSERT
func_odbc_lcase=yes # Function LCASE
func_odbc_left=yes # Function LEFT
func_odbc_length=no # Function REAL LENGTH
func_odbc_length_without_space=no # Function ODBC LENGTH
func_odbc_locate_2=no # Function LOCATE(2 arg)
func_odbc_locate_3=no # Function LOCATE(3 arg)
func_odbc_log=yes # Function LOG
func_odbc_log10=no # Function LOG10
func_odbc_ltrim=yes # Function LTRIM
func_odbc_minute=yes # Function MINUTE
func_odbc_mod=no # Function MOD
func_odbc_month=yes # Function MONTH
func_odbc_monthname=no # Function MONTHNAME
func_odbc_now=yes # Function NOW
func_odbc_pi=no # Function PI
func_odbc_power=no # Function POWER
func_odbc_quarter=no # Function QUARTER
func_odbc_radians=no # Function RADIANS
func_odbc_rand=no # Function RAND
func_odbc_repeat=no # Function REPEAT
func_odbc_replace=no # Function REPLACE
func_odbc_right=yes # Function RIGHT
func_odbc_round=yes # Function ROUND(2 arg)
func_odbc_rtrim=yes # Function RTRIM
func_odbc_second=yes # Function SECOND
func_odbc_sign=no # Function SIGN
func_odbc_sin=yes # Function SIN
func_odbc_soundex=no # Function SOUNDEX
func_odbc_space=yes # Function SPACE
func_odbc_sqrt=no # Function SQRT
func_odbc_substring=no # Function ODBC SUBSTRING
func_odbc_tan=yes # Function TAN
func_odbc_timestampadd=no # Function TIMESTAMPADD
func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
func_odbc_truncate=no # Function TRUNCATE
func_odbc_ucase=yes # Function UCASE
func_odbc_user()=no # Function USER()
func_odbc_week=no # Function WEEK
func_odbc_year=yes # Function YEAR
func_sql_+=yes # Function +, -, * and /
func_sql_bit_length=no # Function BIT_LENGTH
func_sql_case=no # Function CASE
func_sql_cast=no # Function CAST
func_sql_char_length=no # Function CHAR_LENGTH
func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
func_sql_character_length=no # Function CHARACTER_LENGTH
func_sql_concat_as_||=no # Function concatenation with ||
func_sql_current_date=no # Function CURRENT_DATE
func_sql_current_time=no # Function CURRENT_TIME
func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
func_sql_current_user=no # Function CURRENT_USER
func_sql_lower=no # Function LOWER
func_sql_octet_length=no # Function OCTET_LENGTH
func_sql_position=no # Function POSITION
func_sql_session_user=no # Function SESSION_USER
func_sql_substring=no # Function ANSI SQL SUBSTRING
func_sql_system_user=no # Function SYSTEM_USER
func_sql_trim=no # Function TRIM
func_sql_upper=no # Function UPPER
func_sql_user=no # Function USER
func_where_between=yes # Function BETWEEN
func_where_eq_all=yes # Function = ALL
func_where_eq_any=yes # Function = ANY
func_where_eq_some=yes # Function = SOME
func_where_exists=yes # Function EXISTS
func_where_in_num=yes # Function IN on numbers
func_where_like=yes # Function LIKE
func_where_like_escape=no # Function LIKE ESCAPE
func_where_match=no # Function MATCH
func_where_match_unique=no # Function MATCH UNIQUE
func_where_matches=no # Function MATCHES
func_where_not_between=yes # Function NOT BETWEEN
func_where_not_exists=yes # Function NOT EXISTS
func_where_not_like=yes # Function NOT LIKE
func_where_not_unique=no # Function NOT UNIQUE
func_where_unique=no # Function UNIQUE
functions=yes # Functions
group_by=yes # Group by
group_by_alias=no # Group by alias
group_by_null=yes # group on column with null values
group_by_position=no # Group by position
group_distinct_functions=no # Group functions with distinct
group_func_extra_bit_and=no # Group function BIT_AND
group_func_extra_bit_or=no # Group function BIT_OR
group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
group_func_extra_std=no # Group function STD
group_func_extra_stddev=no # Group function STDDEV
group_func_extra_variance=no # Group function VARIANCE
group_func_sql_avg=yes # Group function AVG
group_func_sql_count_*=yes # Group function COUNT (*)
group_func_sql_count_column=yes # Group function COUNT column name
group_func_sql_count_distinct=no # Group function COUNT(DISTINCT expr)
group_func_sql_max=yes # Group function MAX on numbers
group_func_sql_max_str=yes # Group function MAX on strings
group_func_sql_min=yes # Group function MIN on numbers
group_func_sql_min_str=yes # Group function MIN on strings
group_func_sql_sum=yes # Group function SUM
group_functions=yes # Group functions
having=yes # Having
having_with_alias=no # Having on alias
having_with_group=yes # Having with group function
ignore_end_space=yes # ignore end space in compare
index_in_create=no # index in create table
index_namespace=yes # different namespace for index
index_parts=no # index on column part (extension)
insert_empty_string=yes # insert empty string
insert_select=no # insert INTO ... SELECT ...
insert_with_set=no # INSERT with set syntax
intersect=no # intersect
intersect_all=no # intersect all
join_tables=32 # tables in join
left_outer_join=yes # left outer join
left_outer_join_using=no # left outer join using
like_with_column=yes # column LIKE column
like_with_number=yes # LIKE on numbers
lock_tables=no # lock table
logical_value=-1 # Value of logical operation (1=1)
max_big_expressions=1 # big expressions
max_char_size=255 # max char() size
max_column_name=59 # column name length
max_columns=255 # Columns in table
max_conditions=97 # OR and AND in WHERE
max_expressions=+10000 # simple expressions
max_index=32 # max index
max_index_length=2026 # index length
max_index_name=64 # index name length
max_index_part_length=255 # max index part length
max_index_parts=10 # index parts
max_index_varchar_part_length=85 # index varchar part length
max_row_length=2025 # max table row length (without blobs)
max_row_length_with_null=2025 # table row length with nulls (without blobs)
max_select_alias_name=64 # select alias name length
max_stack_expression=14 # stacked expressions
max_table_alias_name=253 # table alias name length
max_table_name=64 # table name length
max_text_size=17 # max text or blob size
max_unique_index=32 # unique indexes
max_varchar_size=85 # max varchar() size
minus=no # minus
minus_neg=yes # Calculate 1--1
multi_drop=yes # many tables to drop table
multi_strings=no # Multiple line strings
multi_table_delete=yes # DELETE FROM table1,table2...
multi_table_update=yes # Update with many tables
#This file is automaticly generated by crash-me 1.37
NEG=yes # update of column= -column
alter_add_col=yes # Alter table add column
alter_add_multi_col=without add # Alter table add many columns
alter_alter_col=no # Alter table alter column
alter_change_col=no # Alter table change column
alter_drop_col=yes # Alter table drop column
alter_modify_col=no # Alter table modify column
alter_rename_table=no # Alter table rename table
atomic_updates=no # atomic updates
binary_items=yes # binary items (0x41)
case_insensitive_strings=yes # case insensitive compare
char_is_space_filled=no # char are space filled
column_alias=yes # Column alias
columns_in_group_by=11 # number of columns in group by
columns_in_order_by=11 # number of columns in order by
comment_#=no # # as comment
comment_--=no # -- as comment
comment_/**/=no # /* */ as comment
comment_//=no # // as comment
compute=no # Compute
connections=64 # Simultaneous connections
constraint_check=no # CHECK constraint
constraint_null=yes # NULL constraint (SyBase style)
crash_me_safe=no # crash me safe
crash_me_version=1.37 # crash me version
create_default=no # default value for column
create_default_func=no # default value function for column
create_if_not_exists=no # create table if not exists
create_index=yes # create index
create_table_select=no # create table from select
cross_join=no # cross join (same as from a,b)
date_as_string=error # String functions on date columns
date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
date_zero=no # Supports 0000-00-00 dates
double_quotes=yes # Double '' as ' in strings
drop_if_exists=no # drop table if exists
drop_index=with 'ON' # drop index
end_colon=yes # allows end ';'
except=no # except
except_all=no # except all
float_int_expr=yes # mixing of integer and float in expression
foreign_key_syntax=no # foreign key syntax
full_outer_join=no # full outer join
func_extra_!=no # Function NOT as '!' in SELECT
func_extra_%=no # Function MOD as %
func_extra_&=error # Function & (bitwise and)
func_extra_&&=no # Function AND as '&&'
func_extra_<>=yes # Function <> in SELECT
func_extra_==yes # Function =
func_extra_add_months=no # Function ADD_MONTHS
func_extra_and_or=yes # Function AND and OR in SELECT
func_extra_atn2=no # Function ATN2
func_extra_auto_num2string=no # Function automatic num->string convert
func_extra_auto_string2num=yes # Function automatic string->num convert
func_extra_between=yes # Function BETWEEN in SELECT
func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
func_extra_bit_count=no # Function BIT_COUNT
func_extra_ceil=no # Function CEIL
func_extra_charindex=no # Function CHARINDEX
func_extra_chr=yes # Function CHR
func_extra_coalesce=no # Function COALESCE
func_extra_concat_as_+=yes # Function concatenation with +
func_extra_concat_list=no # Function CONCAT(list)
func_extra_convert=no # Function CONVERT
func_extra_cosh=no # Function COSH
func_extra_date_format=no # Function DATE_FORMAT
func_extra_dateadd=no # Function DATEADD
func_extra_datediff=no # Function DATEDIFF
func_extra_datename=no # Function DATENAME
func_extra_datepart=no # Function DATEPART
func_extra_elt=no # Function ELT
func_extra_encrypt=no # Function ENCRYPT
func_extra_field=no # Function FIELD
func_extra_format=error # Function FORMAT
func_extra_from_days=no # Function FROM_DAYS
func_extra_from_unixtime=no # Function FROM_UNIXTIME
func_extra_getdate=no # Function GETDATE
func_extra_greatest=no # Function GREATEST
func_extra_if=no # Function IF
func_extra_in_num=yes # Function IN on numbers in SELECT
func_extra_in_str=yes # Function IN on strings in SELECT
func_extra_initcap=no # Function INITCAP
func_extra_instr=yes # Function LOCATE as INSTR
func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
func_extra_instrb=no # Function INSTRB
func_extra_interval=no # Function INTERVAL
func_extra_last_day=no # Function LAST_DAY
func_extra_last_insert_id=no # Function LAST_INSERT_ID
func_extra_least=no # Function LEAST
func_extra_lengthb=no # Function LENGTHB
func_extra_like=yes # Function LIKE in SELECT
func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
func_extra_ln=no # Function LN
func_extra_log(m_n)=no # Function LOG(m,n)
func_extra_logn=no # Function LOGN
func_extra_lpad=no # Function LPAD
func_extra_mdy=no # Function MDY
func_extra_mid=yes # Function SUBSTRING as MID
func_extra_months_between=no # Function MONTHS_BETWEEN
func_extra_not=yes # Function NOT in SELECT
func_extra_not_between=yes # Function NOT BETWEEN in SELECT
func_extra_not_like=yes # Function NOT LIKE in SELECT
func_extra_odbc_convert=no # Function ODBC CONVERT
func_extra_password=no # Function PASSWORD
func_extra_patindex=no # Function PATINDEX
func_extra_period_add=no # Function PERIOD_ADD
func_extra_period_diff=no # Function PERIOD_DIFF
func_extra_pow=no # Function POW
func_extra_range=no # Function RANGE
func_extra_regexp=no # Function REGEXP in SELECT
func_extra_replicate=no # Function REPLICATE
func_extra_reverse=no # Function REVERSE
func_extra_root=no # Function ROOT
func_extra_round1=yes # Function ROUND(1 arg)
func_extra_rpad=no # Function RPAD
func_extra_sec_to_time=no # Function SEC_TO_TIME
func_extra_sinh=no # Function SINH
func_extra_str=no # Function STR
func_extra_strcmp=no # Function STRCMP
func_extra_stuff=no # Function STUFF
func_extra_substrb=no # Function SUBSTRB
func_extra_substring_index=no # Function SUBSTRING_INDEX
func_extra_sysdate=no # Function SYSDATE
func_extra_tanh=no # Function TANH
func_extra_time_to_sec=no # Function TIME_TO_SEC
func_extra_to_days=no # Function TO_DAYS
func_extra_translate=no # Function TRANSLATE
func_extra_trim_many_char=no # Function TRIM; Many char extension
func_extra_trim_substring=no # Function TRIM; Substring extension
func_extra_trunc=no # Function TRUNC
func_extra_uid=no # Function UID
func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
func_extra_userenv=no # Function USERENV
func_extra_version=no # Function VERSION
func_extra_weekday=error # Function WEEKDAY
func_extra_|=no # Function | (bitwise or)
func_extra_||=no # Function OR as '||'
func_odbc_abs=yes # Function ABS
func_odbc_acos=no # Function ACOS
func_odbc_ascii=no # Function ASCII
func_odbc_asin=no # Function ASIN
func_odbc_atan=no # Function ATAN
func_odbc_atan2=no # Function ATAN2
func_odbc_ceiling=no # Function CEILING
func_odbc_char=no # Function CHAR
func_odbc_concat=no # Function CONCAT(2 arg)
func_odbc_cos=yes # Function COS
func_odbc_cot=no # Function COT
func_odbc_curdate=no # Function CURDATE
func_odbc_curtime=no # Function CURTIME
func_odbc_database=no # Function DATABASE
func_odbc_dayname=no # Function DAYNAME
func_odbc_dayofmonth=no # Function DAYOFMONTH
func_odbc_dayofweek=no # Function DAYOFWEEK
func_odbc_dayofyear=no # Function DAYOFYEAR
func_odbc_degrees=no # Function DEGREES
func_odbc_difference=no # Function DIFFERENCE()
func_odbc_exp=yes # Function EXP
func_odbc_extract=no # Function EXTRACT
func_odbc_floor=no # Function FLOOR
func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
func_odbc_hour=yes # Function HOUR
func_odbc_hour_time=no # Function ANSI HOUR
func_odbc_ifnull=no # Function IFNULL
func_odbc_insert=no # Function INSERT
func_odbc_lcase=yes # Function LCASE
func_odbc_left=yes # Function LEFT
func_odbc_length=no # Function REAL LENGTH
func_odbc_length_without_space=no # Function ODBC LENGTH
func_odbc_locate_2=no # Function LOCATE(2 arg)
func_odbc_locate_3=no # Function LOCATE(3 arg)
func_odbc_log=yes # Function LOG
func_odbc_log10=no # Function LOG10
func_odbc_ltrim=yes # Function LTRIM
func_odbc_minute=yes # Function MINUTE
func_odbc_mod=no # Function MOD
func_odbc_month=yes # Function MONTH
func_odbc_monthname=no # Function MONTHNAME
func_odbc_now=yes # Function NOW
func_odbc_pi=no # Function PI
func_odbc_power=no # Function POWER
func_odbc_quarter=no # Function QUARTER
func_odbc_radians=no # Function RADIANS
func_odbc_rand=no # Function RAND
func_odbc_repeat=no # Function REPEAT
func_odbc_replace=no # Function REPLACE
func_odbc_right=yes # Function RIGHT
func_odbc_round=yes # Function ROUND(2 arg)
func_odbc_rtrim=yes # Function RTRIM
func_odbc_second=yes # Function SECOND
func_odbc_sign=no # Function SIGN
func_odbc_sin=yes # Function SIN
func_odbc_soundex=no # Function SOUNDEX
func_odbc_space=yes # Function SPACE
func_odbc_sqrt=no # Function SQRT
func_odbc_substring=no # Function ODBC SUBSTRING
func_odbc_tan=yes # Function TAN
func_odbc_timestampadd=no # Function TIMESTAMPADD
func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
func_odbc_truncate=no # Function TRUNCATE
func_odbc_ucase=yes # Function UCASE
func_odbc_user()=no # Function USER()
func_odbc_week=no # Function WEEK
func_odbc_year=yes # Function YEAR
func_sql_+=yes # Function +, -, * and /
func_sql_bit_length=no # Function BIT_LENGTH
func_sql_case=no # Function CASE
func_sql_cast=no # Function CAST
func_sql_char_length=no # Function CHAR_LENGTH
func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
func_sql_character_length=no # Function CHARACTER_LENGTH
func_sql_concat_as_||=no # Function concatenation with ||
func_sql_current_date=no # Function CURRENT_DATE
func_sql_current_time=no # Function CURRENT_TIME
func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
func_sql_current_user=no # Function CURRENT_USER
func_sql_lower=no # Function LOWER
func_sql_octet_length=no # Function OCTET_LENGTH
func_sql_position=no # Function POSITION
func_sql_session_user=no # Function SESSION_USER
func_sql_substring=no # Function ANSI SQL SUBSTRING
func_sql_system_user=no # Function SYSTEM_USER
func_sql_trim=no # Function TRIM
func_sql_upper=no # Function UPPER
func_sql_user=no # Function USER
func_where_between=yes # Function BETWEEN
func_where_eq_all=yes # Function = ALL
func_where_eq_any=yes # Function = ANY
func_where_eq_some=yes # Function = SOME
func_where_exists=yes # Function EXISTS
func_where_in_num=yes # Function IN on numbers
func_where_like=yes # Function LIKE
func_where_like_escape=no # Function LIKE ESCAPE
func_where_match=no # Function MATCH
func_where_match_unique=no # Function MATCH UNIQUE
func_where_matches=no # Function MATCHES
func_where_not_between=yes # Function NOT BETWEEN
func_where_not_exists=yes # Function NOT EXISTS
func_where_not_like=yes # Function NOT LIKE
func_where_not_unique=no # Function NOT UNIQUE
func_where_unique=no # Function UNIQUE
functions=yes # Functions
group_by=yes # Group by
group_by_alias=no # Group by alias
group_by_null=yes # group on column with null values
group_by_position=no # Group by position
group_distinct_functions=no # Group functions with distinct
group_func_extra_bit_and=no # Group function BIT_AND
group_func_extra_bit_or=no # Group function BIT_OR
group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
group_func_extra_std=no # Group function STD
group_func_extra_stddev=no # Group function STDDEV
group_func_extra_variance=no # Group function VARIANCE
group_func_sql_avg=yes # Group function AVG
group_func_sql_count_*=yes # Group function COUNT (*)
group_func_sql_count_column=yes # Group function COUNT column name
group_func_sql_count_distinct=no # Group function COUNT(DISTINCT expr)
group_func_sql_max=yes # Group function MAX on numbers
group_func_sql_max_str=yes # Group function MAX on strings
group_func_sql_min=yes # Group function MIN on numbers
group_func_sql_min_str=yes # Group function MIN on strings
group_func_sql_sum=yes # Group function SUM
group_functions=yes # Group functions
having=yes # Having
having_with_alias=no # Having on alias
having_with_group=yes # Having with group function
ignore_end_space=yes # ignore end space in compare
index_in_create=no # index in create table
index_namespace=yes # different namespace for index
index_parts=no # index on column part (extension)
insert_empty_string=yes # insert empty string
insert_select=no # insert INTO ... SELECT ...
insert_with_set=no # INSERT with set syntax
intersect=no # intersect
intersect_all=no # intersect all
join_tables=32 # tables in join
left_outer_join=yes # left outer join
left_outer_join_using=no # left outer join using
like_with_column=yes # column LIKE column
like_with_number=yes # LIKE on numbers
lock_tables=no # lock table
logical_value=-1 # Value of logical operation (1=1)
max_big_expressions=1 # big expressions
max_char_size=255 # max char() size
max_column_name=59 # column name length
max_columns=255 # Columns in table
max_conditions=97 # OR and AND in WHERE
max_expressions=+10000 # simple expressions
max_index=32 # max index
max_index_length=2026 # index length
max_index_name=64 # index name length
max_index_part_length=255 # max index part length
max_index_parts=10 # index parts
max_index_varchar_part_length=85 # index varchar part length
max_row_length=2025 # max table row length (without blobs)
max_row_length_with_null=2025 # table row length with nulls (without blobs)
max_select_alias_name=64 # select alias name length
max_stack_expression=14 # stacked expressions
max_table_alias_name=253 # table alias name length
max_table_name=64 # table name length
max_text_size=17 # max text or blob size
max_unique_index=32 # unique indexes
max_varchar_size=85 # max varchar() size
minus=no # minus
minus_neg=yes # Calculate 1--1
multi_drop=yes # many tables to drop table
multi_strings=no # Multiple line strings
multi_table_delete=yes # DELETE FROM table1,table2...
multi_table_update=yes # Update with many tables
insert_multi_value=no # Value lists in INSERT
natural_join=no # natural join
natural_left_outer_join=no # natural left outer join
no_primary_key=yes # Tables without primary key
null_in_index=yes # null in index
null_in_unique=yes # null in unique
odbc_left_outer_join=yes # left outer join odbc style
operating_system=Windows 98 [Version 4.10.1998] # crash-me tested on
order_by=yes # Order by
order_by_alias=no # Order by alias
order_by_function=yes # Order by function
order_by_position=yes # Order by position
order_by_remember_desc=no # Order by DESC is remembered
primary_key_in_create=yes # primary key in create table
query_size=16777216 # query size
quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
quote_ident_with_[=yes # [] as identifier quote
quote_ident_with_`=yes # ` as identifier quote
quote_with_"=no # Allows ' and " as string markers
recursive_subqueries=49 # recursive subqueries
remember_end_space=no # Remembers end space in char()
remember_end_space_varchar=yes # Remembers end space in varchar()
right_outer_join=yes # right outer join
rowid=no # Type for row id
select_constants=yes # Select constants
select_limit=no # SELECT with LIMIT
select_limit2=no # SELECT with LIMIT #,#
select_string_size=516076 # constant string size in SELECT
select_table_update=no # Update with sub select
select_without_from=yes # SELECT without FROM
server_version=Access 2000 # server version
simple_joins=yes # ANSI SQL simple joins
subqueries=yes # subqueries
table_alias=yes # Table alias
table_name_case=yes # case independent table names
table_wildcard=yes # Select table_name.*
tempoary_table=no # temporary tables
transactions=yes # transactions
type_extra_abstime=no # Type abstime
type_extra_bfile=no # Type bfile
type_extra_blob=no # Type blob
type_extra_bool=no # Type bool
type_extra_box=no # Type box
type_extra_byte=yes # Type byte
type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
type_extra_circle=no # Type circle
type_extra_clob=no # Type clob
type_extra_datetime=yes # Type datetime
type_extra_double=yes # Type double
type_extra_enum(1_arg)=no # Type enum(1 arg)
type_extra_float(2_arg)=no # Type float(2 arg)
type_extra_float4=yes # Type float4
type_extra_float8=yes # Type float8
type_extra_image=yes # Type image
type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
type_extra_int1=no # Type int1
type_extra_int2=no # Type int2
type_extra_int3=no # Type int3
type_extra_int4=no # Type int4
type_extra_int8=no # Type int8
type_extra_int_auto_increment=no # Type int not null auto_increment
type_extra_int_unsigned=no # Type int unsigned
type_extra_interval=no # Type interval
type_extra_line=no # Type line
type_extra_long=yes # Type long
type_extra_long_raw=no # Type long raw
type_extra_long_varbinary=no # Type long varbinary
type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
type_extra_lseg=no # Type lseg
type_extra_mediumint=no # Type mediumint
type_extra_mediumtext=no # Type mediumtext
type_extra_middleint=no # Type middleint
type_extra_mlslabel=no # Type mlslabel
type_extra_money=yes # Type money
type_extra_nclob=no # Type nclob
type_extra_number=yes # Type number
type_extra_number(1_arg)=no # Type number(1 arg)
type_extra_number(2_arg)=no # Type number(2 arg)
type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
type_extra_path=no # Type path
type_extra_point=no # Type point
type_extra_polygon=no # Type polygon
type_extra_raw(1_arg)=no # Type raw(1 arg)
type_extra_reltime=no # Type reltime
type_extra_rowid=no # Type rowid
type_extra_serial=no # Type serial
type_extra_set(1_arg)=no # Type set(1 arg)
type_extra_smalldatetime=no # Type smalldatetime
type_extra_smallfloat=no # Type smallfloat
type_extra_smallmoney=no # Type smallmoney
type_extra_text=yes # Type text
type_extra_text(1_arg)=yes # Type text(1 arg)
type_extra_timespan=no # Type timespan
type_extra_uint=no # Type uint
type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
type_extra_year=no # Type year
type_odbc_bigint=no # Type bigint
type_odbc_binary(1_arg)=yes # Type binary(1 arg)
type_odbc_datetime=yes # Type datetime
type_odbc_tinyint=no # Type tinyint
type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
type_sql_bit=yes # Type bit
type_sql_bit(1_arg)=no # Type bit(1 arg)
type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
type_sql_char(1_arg)=yes # Type char(1 arg)
type_sql_char_varying(1_arg)=no # Type char varying(1 arg)
type_sql_character(1_arg)=no # Type character(1 arg)
type_sql_character_varying(1_arg)=no # Type character varying(1 arg)
type_sql_date=yes # Type date
type_sql_dec(2_arg)=no # Type dec(2 arg)
type_sql_decimal(2_arg)=no # Type decimal(2 arg)
type_sql_double_precision=no # Type double precision
type_sql_float=yes # Type float
type_sql_float(1_arg)=no # Type float(1 arg)
type_sql_int=yes # Type int
type_sql_integer=yes # Type integer
type_sql_interval_day_to_second=no # Type interval day to second
type_sql_interval_year=no # Type interval year
type_sql_interval_year_to_month=no # Type interval year to month
type_sql_national_char_varying(1_arg)=no # Type national char varying(1 arg)
type_sql_national_character(1_arg)=no # Type national character(1 arg)
type_sql_national_character_varying(1_arg)=no # Type national character varying(1 arg)
type_sql_nchar(1_arg)=no # Type nchar(1 arg)
type_sql_nchar_varying(1_arg)=no # Type nchar varying(1 arg)
type_sql_numeric(2_arg)=no # Type numeric(2 arg)
type_sql_real=yes # Type real
type_sql_smallint=yes # Type smallint
type_sql_time=yes # Type time
type_sql_timestamp=yes # Type timestamp
type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
union=yes # union
union_all=yes # union all
unique_in_create=yes # unique in create table
unique_null_in_create=yes # unique null in create
views=no # views
where_string_size=258035 # constant string size in where
natural_join=no # natural join
natural_left_outer_join=no # natural left outer join
no_primary_key=yes # Tables without primary key
null_in_index=yes # null in index
null_in_unique=yes # null in unique
odbc_left_outer_join=yes # left outer join odbc style
operating_system=Windows 98 [Version 4.10.1998] # crash-me tested on
order_by=yes # Order by
order_by_alias=no # Order by alias
order_by_function=yes # Order by function
order_by_position=yes # Order by position
order_by_remember_desc=no # Order by DESC is remembered
primary_key_in_create=yes # primary key in create table
query_size=16777216 # query size
quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
quote_ident_with_[=yes # [] as identifier quote
quote_ident_with_`=yes # ` as identifier quote
quote_with_"=no # Allows ' and " as string markers
recursive_subqueries=49 # recursive subqueries
remember_end_space=no # Remembers end space in char()
remember_end_space_varchar=yes # Remembers end space in varchar()
right_outer_join=yes # right outer join
rowid=no # Type for row id
select_constants=yes # Select constants
select_limit=no # SELECT with LIMIT
select_limit2=no # SELECT with LIMIT #,#
select_string_size=516076 # constant string size in SELECT
select_table_update=no # Update with sub select
select_without_from=yes # SELECT without FROM
server_version=Access 2000 # server version
simple_joins=yes # ANSI SQL simple joins
subqueries=yes # subqueries
table_alias=yes # Table alias
table_name_case=yes # case independent table names
table_wildcard=yes # Select table_name.*
tempoary_table=no # temporary tables
transactions=yes # transactions
type_extra_abstime=no # Type abstime
type_extra_bfile=no # Type bfile
type_extra_blob=no # Type blob
type_extra_bool=no # Type bool
type_extra_box=no # Type box
type_extra_byte=yes # Type byte
type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
type_extra_circle=no # Type circle
type_extra_clob=no # Type clob
type_extra_datetime=yes # Type datetime
type_extra_double=yes # Type double
type_extra_enum(1_arg)=no # Type enum(1 arg)
type_extra_float(2_arg)=no # Type float(2 arg)
type_extra_float4=yes # Type float4
type_extra_float8=yes # Type float8
type_extra_image=yes # Type image
type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
type_extra_int1=no # Type int1
type_extra_int2=no # Type int2
type_extra_int3=no # Type int3
type_extra_int4=no # Type int4
type_extra_int8=no # Type int8
type_extra_int_auto_increment=no # Type int not null auto_increment
type_extra_int_unsigned=no # Type int unsigned
type_extra_interval=no # Type interval
type_extra_line=no # Type line
type_extra_long=yes # Type long
type_extra_long_raw=no # Type long raw
type_extra_long_varbinary=no # Type long varbinary
type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
type_extra_lseg=no # Type lseg
type_extra_mediumint=no # Type mediumint
type_extra_mediumtext=no # Type mediumtext
type_extra_middleint=no # Type middleint
type_extra_mlslabel=no # Type mlslabel
type_extra_money=yes # Type money
type_extra_nclob=no # Type nclob
type_extra_number=yes # Type number
type_extra_number(1_arg)=no # Type number(1 arg)
type_extra_number(2_arg)=no # Type number(2 arg)
type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
type_extra_path=no # Type path
type_extra_point=no # Type point
type_extra_polygon=no # Type polygon
type_extra_raw(1_arg)=no # Type raw(1 arg)
type_extra_reltime=no # Type reltime
type_extra_rowid=no # Type rowid
type_extra_serial=no # Type serial
type_extra_set(1_arg)=no # Type set(1 arg)
type_extra_smalldatetime=no # Type smalldatetime
type_extra_smallfloat=no # Type smallfloat
type_extra_smallmoney=no # Type smallmoney
type_extra_text=yes # Type text
type_extra_text(1_arg)=yes # Type text(1 arg)
type_extra_timespan=no # Type timespan
type_extra_uint=no # Type uint
type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
type_extra_year=no # Type year
type_odbc_bigint=no # Type bigint
type_odbc_binary(1_arg)=yes # Type binary(1 arg)
type_odbc_datetime=yes # Type datetime
type_odbc_tinyint=no # Type tinyint
type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
type_sql_bit=yes # Type bit
type_sql_bit(1_arg)=no # Type bit(1 arg)
type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
type_sql_char(1_arg)=yes # Type char(1 arg)
type_sql_char_varying(1_arg)=no # Type char varying(1 arg)
type_sql_character(1_arg)=no # Type character(1 arg)
type_sql_character_varying(1_arg)=no # Type character varying(1 arg)
type_sql_date=yes # Type date
type_sql_dec(2_arg)=no # Type dec(2 arg)
type_sql_decimal(2_arg)=no # Type decimal(2 arg)
type_sql_double_precision=no # Type double precision
type_sql_float=yes # Type float
type_sql_float(1_arg)=no # Type float(1 arg)
type_sql_int=yes # Type int
type_sql_integer=yes # Type integer
type_sql_interval_day_to_second=no # Type interval day to second
type_sql_interval_year=no # Type interval year
type_sql_interval_year_to_month=no # Type interval year to month
type_sql_national_char_varying(1_arg)=no # Type national char varying(1 arg)
type_sql_national_character(1_arg)=no # Type national character(1 arg)
type_sql_national_character_varying(1_arg)=no # Type national character varying(1 arg)
type_sql_nchar(1_arg)=no # Type nchar(1 arg)
type_sql_nchar_varying(1_arg)=no # Type nchar varying(1 arg)
type_sql_numeric(2_arg)=no # Type numeric(2 arg)
type_sql_real=yes # Type real
type_sql_smallint=yes # Type smallint
type_sql_time=yes # Type time
type_sql_timestamp=yes # Type timestamp
type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
union=yes # union
union_all=yes # union all
unique_in_create=yes # unique in create table
unique_null_in_create=yes # unique null in create
views=no # views
where_string_size=258035 # constant string size in where
#ifndef MESSAGE_INCLUDED
#define MESSAGE_INCLUDED
/* Copyright (c) 2008, 2009 Sun Microsystems, Inc.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/*
To change or add messages mysqld writes to the Windows error log, run
mc.exe message.mc
and checkin generated messages.h, messages.rc and msg000001.bin under the
source control.
mc.exe can be installed with Windows SDK, some Visual Studio distributions
do not include it.
*/
//
// Values are 32 bit values layed out as follows:
//
// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
// +---+-+-+-----------------------+-------------------------------+
// |Sev|C|R| Facility | Code |
// +---+-+-+-----------------------+-------------------------------+
//
// where
//
// Sev - is the severity code
//
// 00 - Success
// 01 - Informational
// 10 - Warning
// 11 - Error
//
// C - is the Customer code flag
//
// R - is a reserved bit
//
// Facility - is the facility code
//
// Code - is the facility's status code
//
//
// Define the facility codes
//
//
// Define the severity codes
//
//
// MessageId: MSG_DEFAULT
//
// MessageText:
//
// %1For more information, see Help and Support Center at http://www.mysql.com.
//
//
//
#define MSG_DEFAULT 0xC0000064L
#endif /* MESSAGE_INCLUDED */
#ifndef MESSAGE_INCLUDED
#define MESSAGE_INCLUDED
/* Copyright (c) 2008, 2009 Sun Microsystems, Inc.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/*
To change or add messages mysqld writes to the Windows error log, run
mc.exe message.mc
and checkin generated messages.h, messages.rc and msg000001.bin under the
source control.
mc.exe can be installed with Windows SDK, some Visual Studio distributions
do not include it.
*/
//
// Values are 32 bit values layed out as follows:
//
// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
// +---+-+-+-----------------------+-------------------------------+
// |Sev|C|R| Facility | Code |
// +---+-+-+-----------------------+-------------------------------+
//
// where
//
// Sev - is the severity code
//
// 00 - Success
// 01 - Informational
// 10 - Warning
// 11 - Error
//
// C - is the Customer code flag
//
// R - is a reserved bit
//
// Facility - is the facility code
//
// Code - is the facility's status code
//
//
// Define the facility codes
//
//
// Define the severity codes
//
//
// MessageId: MSG_DEFAULT
//
// MessageText:
//
// %1For more information, see Help and Support Center at http://www.mysql.com.
//
//
//
#define MSG_DEFAULT 0xC0000064L
#endif /* MESSAGE_INCLUDED */
......@@ -5762,8 +5762,8 @@ static int connect_to_master(THD* thd, MYSQL* mysql, Master_info* mi,
mysql_options(mysql, MYSQL_SET_CHARSET_DIR, (char *) charsets_dir);
/* Set MYSQL_PLUGIN_DIR in case master asks for an external authentication plugin */
if (opt_plugin_dir_ptr && *opt_plugin_dir_ptr)
mysql_options(mysql, MYSQL_PLUGIN_DIR, opt_plugin_dir_ptr);
if (opt_plugin_dir_ptr && *opt_plugin_dir_ptr)
mysql_options(mysql, MYSQL_PLUGIN_DIR, opt_plugin_dir_ptr);
/* we disallow empty users */
if (mi->user == NULL || mi->user[0] == 0)
......
SET(FEDERATEDX_PLUGIN_STATIC "federatedx")
SET(FEDERATEDX_PLUGIN_DYNAMIC "ha_federatedx")
SET(FEDERATEDX_SOURCES ha_federatedx.cc federatedx_txn.cc federatedx_io.cc federatedx_io_null.cc federatedx_io_mysql.cc)
MYSQL_ADD_PLUGIN(federatedx ${FEDERATEDX_SOURCES} STORAGE_ENGINE)
SET(FEDERATEDX_PLUGIN_STATIC "federatedx")
SET(FEDERATEDX_PLUGIN_DYNAMIC "ha_federatedx")
SET(FEDERATEDX_SOURCES ha_federatedx.cc federatedx_txn.cc federatedx_io.cc federatedx_io_null.cc federatedx_io_mysql.cc)
MYSQL_ADD_PLUGIN(federatedx ${FEDERATEDX_SOURCES} STORAGE_ENGINE)
......@@ -43,7 +43,7 @@ my $error_log_name= "./var/log/master.err";
my @cmd_output;
my $whatever; # garbage data
$ENV{MTR_VERSION} = 1; # MTR2 does not have --start-and-exit
my $base_server_cmd= "perl mysql-test-run.pl --mysqld=--aria-force-start-after-recovery-failures=$force_after --suite=maria maria.maria-recover ";
my $base_server_cmd= "perl mysql-test-run.pl --mysqld=--aria-force-start-after-recovery-failures=$force_after --suite=maria maria.maria-recover ";
if ($^O =~ /^mswin/i)
{
print <<EOF;
......
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