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