MDEV-4447 MariaDB sources should have unix-style line endings everywhere
This commit is contained in:
parent
98c0659150
commit
05aba79e98
@ -1,48 +1,48 @@
|
||||
# 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()
|
||||
|
@ -1,38 +1,38 @@
|
||||
// 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
|
||||
|
10
debian/po/it.po
vendored
10
debian/po/it.po
vendored
@ -1,8 +1,8 @@
|
||||
# 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"
|
||||
|
12
debian/po/sv.po
vendored
12
debian/po/sv.po
vendored
@ -1,9 +1,9 @@
|
||||
# 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;
|
||||
|
@ -1 +1 @@
|
||||
--lower-case-table-names=2
|
||||
--lower-case-table-names=2
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,28 +1,28 @@
|
||||
# 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;
|
||||
|
@ -1,66 +1,66 @@
|
||||
--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
|
||||
|
@ -1 +1 @@
|
||||
--lower-case-table-names=2
|
||||
--lower-case-table-names=2
|
||||
|
@ -1,108 +1,108 @@
|
||||
--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 @@ err:
|
||||
#elif defined(_WIN32)
|
||||
#include <winsock2.h>
|
||||
#include <iphlpapi.h>
|
||||
#pragma comment(lib, "iphlpapi.lib")
|
||||
#pragma comment(lib, "iphlpapi.lib")
|
||||
|
||||
#define ETHER_ADDR_LEN 6
|
||||
|
||||
|
@ -1,142 +1,142 @@
|
||||
#!/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
|
||||
|
@ -1,108 +1,108 @@
|
||||
#!/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
|
||||
|
@ -1,101 +1,101 @@
|
||||
#!/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
|
||||
|
@ -1,150 +1,150 @@
|
||||
#!/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
|
||||
|
@ -1,94 +1,94 @@
|
||||
#!/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
|
||||
|
@ -1,104 +1,104 @@
|
||||
#!/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
|
||||
|
@ -1,448 +1,448 @@
|
||||
#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
|
||||
|
154
sql/message.h
154
sql/message.h
@ -1,77 +1,77 @@
|
||||
#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)
|
||||
|
@ -1,4 +1,4 @@
|
||||
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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user