diff options
author | Sergei Golubchik <sergii@pisem.net> | 2014-02-27 12:00:16 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2014-02-27 12:00:16 +0100 |
commit | 05aba79e981cfeb7e7b68bb31739ab8d443c4aea (patch) | |
tree | 049beb1e97a6aaa3c755bb2f9f0bf155a1fb4642 /sql-bench | |
parent | 98c0659150e8d0bc17cfe05361d3c03c64f181c4 (diff) | |
download | mariadb-git-05aba79e981cfeb7e7b68bb31739ab8d443c4aea.tar.gz |
MDEV-4447 MariaDB sources should have unix-style line endings everywhere
Diffstat (limited to 'sql-bench')
-rw-r--r-- | sql-bench/innotest1.sh | 280 | ||||
-rw-r--r-- | sql-bench/innotest1a.sh | 212 | ||||
-rw-r--r-- | sql-bench/innotest1b.sh | 198 | ||||
-rw-r--r-- | sql-bench/innotest2.sh | 296 | ||||
-rw-r--r-- | sql-bench/innotest2a.sh | 184 | ||||
-rw-r--r-- | sql-bench/innotest2b.sh | 204 | ||||
-rw-r--r-- | sql-bench/limits/access_odbc.cfg | 894 |
7 files changed, 1134 insertions, 1134 deletions
diff --git a/sql-bench/innotest1.sh b/sql-bench/innotest1.sh index 1c5450a1d9e..9e1ed32c273 100644 --- a/sql-bench/innotest1.sh +++ b/sql-bench/innotest1.sh @@ -1,142 +1,142 @@ -#!/usr/bin/perl
-############################################################################
-# Stress test for MySQL/InnoDB combined database
-# (c) 2002 Innobase Oy & MySQL AB
-#
-############################################################################
-
+#!/usr/bin/perl +############################################################################ +# Stress test for MySQL/InnoDB combined database +# (c) 2002 Innobase Oy & MySQL AB +# +############################################################################ + use Cwd; -use DBI;
-use Benchmark;
-
-$opt_loop_count = 100000;
-
+use DBI; +use Benchmark; + +$opt_loop_count = 100000; + $pwd = cwd(); $pwd = "." if ($pwd eq ''); -require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
-
-print "Innotest1: MySQL/InnoDB stress test in Perl\n";
-print "-------------------------------------------\n";
-print "This is a randomized stress test for concurrent inserts,\n";
-print "updates, deletes, commits and rollbacks. The test will generate\n";
-print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
-print "\n";
-print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
-print "The thing to watch is that the server does not crash or does not\n";
-print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
-print "warnings about MySQL lock reservations can appear in the .err log.\n";
-print "The test will run very long, even several hours. You can kill\n";
-print "the perl processes running this test at any time and do CHECK\n";
-print "TABLE on table innotest1 in the 'test' database.\n";
-print "\n";
-print "Some of these stress tests will print a lot of SQL errors\n";
-print "to the standard output. That is not to be worried about.\n";
-print "You can direct the output to a file like this:\n";
-print "perl innotest1 > out1\n\n";
-
-print "Generating random keys\n";
-$random[$opt_loop_count] = 0;
-$rnd_str[$opt_loop_count] = "a";
-
-for ($i = 0; $i < $opt_loop_count; $i++) {
-
- $random[$i] = ($i * 63857) % $opt_loop_count;
-
- if (0 == ($random[$i] % 3)) {
- $rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
- } else { if (1 == ($random[$i] % 3)) {
- $rnd_str[$i] = "khd";
- } else { if (2 == ($random[$i] % 3)) {
- $rnd_str[$i] = "kh";
- }}}
-
- for ($j = 0; $j < (($i * 764877) % 20); $j++) {
- $rnd_str[$i] = $rnd_str[$i]."k";
- }
-}
-
-####
-#### Connect
-####
-
-$dbh = $server->connect()
-|| die $dbh->errstr;
-
-$dbh->do("set autocommit = 0");
-
-$n = 0;
-
-for ($i = 0; $i < 1; $i++) {
-
- print "Dropping table innotest1\n";
-
- $dbh->do("drop table innotest1");
-
- print "Creating table innotest1\n";
-
- $dbh->do(
- "create table innotest1 (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), E TIMESTAMP, F TIMESTAMP, G DATETIME, PRIMARY KEY (A, D), INDEX
-(B, C), INDEX (C), INDEX (D), INDEX(E), INDEX(G)) TYPE = INNODB")
- || die $dbh->errstr;
-
- for ($j = 2; $j < $opt_loop_count - 10; $j = $j + 2) {
-
- if ($j % 10 == 0) {
- $dbh->do(
- "insert into innotest1 (D, B, C, F, G) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."', NULL, NULL)");
- } else {
- $dbh->do(
- "insert into innotest1 (D, B, C, F, G) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."', NOW(), NOW())");
- }
-
- $dbh->do("update innotest1 set B = '".$rnd_str[$j + 7]."' where A = ".$random[$j + 5]);
-
- $dbh->do("update innotest1 SET D = D + 1 where A =".($j / 2 - 500));
-
- $dbh->do("update innotest1 set B = '".$rnd_str[$j + 1]."' where A =".($j / 2 - 505));
-
- $dbh->do("delete from innotest1 where A = ".$random[$random[$j]]);
-
- fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
-
- if (0 == ($j % 10)) {
- $dbh->do("commit");
- }
-
- if (0 == ($j % 97)) {
- fetch_all_rows($dbh, "select c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
- fetch_all_rows($dbh, "select b, e, f, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
- fetch_all_rows($dbh, "select b, c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
- fetch_all_rows($dbh, "select b, c, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
- fetch_all_rows($dbh, "select a, b, c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
- fetch_all_rows($dbh, "select a, b, c, e, f, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
- fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
- fetch_all_rows($dbh, "select d, b, c, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
-
- $dbh->do("rollback");
- }
-
- for ($k = 1; $k < 10; $k++) {
-
- $n += fetch_all_rows($dbh,
-"SELECT a, d from innotest1 where a = ".(($k * 1764767) % $j));
-
- $n += fetch_all_rows($dbh,
-"SELECT * from innotest1 where a = ".(($k * 187567) % $j));
-
- }
-
- if (0 == ($j % 1000)) {
- print "round $j, $n rows fetched\n";
- }
-
- if (0 == ($j % 20000)) {
- print "Checking table innotest1...\n";
- $dbh->do("check table innotest1");
- print "Table checked.\n";
- }
- }
-
- $dbh->do("commit");
-}
-
-$dbh->disconnect; # close connection
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; + +print "Innotest1: MySQL/InnoDB stress test in Perl\n"; +print "-------------------------------------------\n"; +print "This is a randomized stress test for concurrent inserts,\n"; +print "updates, deletes, commits and rollbacks. The test will generate\n"; +print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n"; +print "\n"; +print "You should run innotest1, innotest1a, and innotest1b concurrently.\n"; +print "The thing to watch is that the server does not crash or does not\n"; +print "print to the .err log anything. Currently, due to a buglet in MySQL,\n"; +print "warnings about MySQL lock reservations can appear in the .err log.\n"; +print "The test will run very long, even several hours. You can kill\n"; +print "the perl processes running this test at any time and do CHECK\n"; +print "TABLE on table innotest1 in the 'test' database.\n"; +print "\n"; +print "Some of these stress tests will print a lot of SQL errors\n"; +print "to the standard output. That is not to be worried about.\n"; +print "You can direct the output to a file like this:\n"; +print "perl innotest1 > out1\n\n"; + +print "Generating random keys\n"; +$random[$opt_loop_count] = 0; +$rnd_str[$opt_loop_count] = "a"; + +for ($i = 0; $i < $opt_loop_count; $i++) { + + $random[$i] = ($i * 63857) % $opt_loop_count; + + if (0 == ($random[$i] % 3)) { + $rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd"; + } else { if (1 == ($random[$i] % 3)) { + $rnd_str[$i] = "khd"; + } else { if (2 == ($random[$i] % 3)) { + $rnd_str[$i] = "kh"; + }}} + + for ($j = 0; $j < (($i * 764877) % 20); $j++) { + $rnd_str[$i] = $rnd_str[$i]."k"; + } +} + +#### +#### Connect +#### + +$dbh = $server->connect() +|| die $dbh->errstr; + +$dbh->do("set autocommit = 0"); + +$n = 0; + +for ($i = 0; $i < 1; $i++) { + + print "Dropping table innotest1\n"; + + $dbh->do("drop table innotest1"); + + print "Creating table innotest1\n"; + + $dbh->do( + "create table innotest1 (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), E TIMESTAMP, F TIMESTAMP, G DATETIME, PRIMARY KEY (A, D), INDEX +(B, C), INDEX (C), INDEX (D), INDEX(E), INDEX(G)) TYPE = INNODB") + || die $dbh->errstr; + + for ($j = 2; $j < $opt_loop_count - 10; $j = $j + 2) { + + if ($j % 10 == 0) { + $dbh->do( + "insert into innotest1 (D, B, C, F, G) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."', NULL, NULL)"); + } else { + $dbh->do( + "insert into innotest1 (D, B, C, F, G) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."', NOW(), NOW())"); + } + + $dbh->do("update innotest1 set B = '".$rnd_str[$j + 7]."' where A = ".$random[$j + 5]); + + $dbh->do("update innotest1 SET D = D + 1 where A =".($j / 2 - 500)); + + $dbh->do("update innotest1 set B = '".$rnd_str[$j + 1]."' where A =".($j / 2 - 505)); + + $dbh->do("delete from innotest1 where A = ".$random[$random[$j]]); + + fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7)); + + if (0 == ($j % 10)) { + $dbh->do("commit"); + } + + if (0 == ($j % 97)) { + fetch_all_rows($dbh, "select c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'"); + fetch_all_rows($dbh, "select b, e, f, g from innotest1 where b = '".$rnd_str[$j - 677]."'"); + fetch_all_rows($dbh, "select b, c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'"); + fetch_all_rows($dbh, "select b, c, g from innotest1 where b = '".$rnd_str[$j - 677]."'"); + fetch_all_rows($dbh, "select a, b, c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'"); + fetch_all_rows($dbh, "select a, b, c, e, f, g from innotest1 where b = '".$rnd_str[$j - 677]."'"); + fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'"); + fetch_all_rows($dbh, "select d, b, c, g from innotest1 where b = '".$rnd_str[$j - 677]."'"); + + $dbh->do("rollback"); + } + + for ($k = 1; $k < 10; $k++) { + + $n += fetch_all_rows($dbh, +"SELECT a, d from innotest1 where a = ".(($k * 1764767) % $j)); + + $n += fetch_all_rows($dbh, +"SELECT * from innotest1 where a = ".(($k * 187567) % $j)); + + } + + if (0 == ($j % 1000)) { + print "round $j, $n rows fetched\n"; + } + + if (0 == ($j % 20000)) { + print "Checking table innotest1...\n"; + $dbh->do("check table innotest1"); + print "Table checked.\n"; + } + } + + $dbh->do("commit"); +} + +$dbh->disconnect; # close connection diff --git a/sql-bench/innotest1a.sh b/sql-bench/innotest1a.sh index 876100e5de4..1e428e33dcf 100644 --- a/sql-bench/innotest1a.sh +++ b/sql-bench/innotest1a.sh @@ -1,108 +1,108 @@ -#!/usr/bin/perl
-############################################################################
-# Stress test for MySQL/InnoDB combined database
-# (c) 2002 Innobase Oy & MySQL AB
-#
-############################################################################
-
+#!/usr/bin/perl +############################################################################ +# Stress test for MySQL/InnoDB combined database +# (c) 2002 Innobase Oy & MySQL AB +# +############################################################################ + use Cwd; -use DBI;
-use Benchmark;
-
-$opt_loop_count = 200000;
-
+use DBI; +use Benchmark; + +$opt_loop_count = 200000; + $pwd = cwd(); $pwd = "." if ($pwd eq ''); -require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
-
-print "Innotest1a: MySQL/InnoDB stress test in Perl\n";
-print "-------------------------------------------\n";
-print "This is a randomized stress test for concurrent inserts,\n";
-print "updates, deletes, commits and rollbacks. The test will generate\n";
-print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
-print "\n";
-print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
-print "The thing to watch is that the server does not crash or does not\n";
-print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
-print "warnings about MySQL lock reservations can appear in the .err log.\n";
-print "The test will run very long, even several hours. You can kill\n";
-print "the perl processes running this test at any time and do CHECK\n";
-print "TABLE on table innotest1 in the 'test' database.\n";
-print "\n";
-print "Some of these stress tests will print a lot of SQL errors\n";
-print "to the standard output. That is not to be worried about.\n";
-print "You can direct the output to a file like this:\n";
-print "perl innotest1 > out1\n\n";
-
-print "Generating random keys\n";
-$random[$opt_loop_count] = 0;
-$rnd_str[$opt_loop_count] = "a";
-
-for ($i = 0; $i < $opt_loop_count; $i++) {
-
- $random[$i] = ($i * 63857) % $opt_loop_count;
-
- if (0 == ($random[$i] % 3)) {
- $rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
- } else { if (1 == ($random[$i] % 3)) {
- $rnd_str[$i] = "khd";
- } else { if (2 == ($random[$i] % 3)) {
- $rnd_str[$i] = "kh";
- }}}
-
- for ($j = 0; $j < (($i * 764877) % 20); $j++) {
- $rnd_str[$i] = $rnd_str[$i]."k";
- }
-}
-
-####
-#### Connect
-####
-
-$dbh = $server->connect()
-|| die $dbh->errstr;
-
-
-$dbh->do("set autocommit = 0");
-
-for ($i = 0; $i < 1; $i++) {
- print "loop $i\n";
-
- for ($j = 1; $j < $opt_loop_count - 10; $j = $j + 2) {
- $dbh->do(
- "insert into innotest1 (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')");
- $dbh->do("update innotest1 set B = '".$rnd_str[$j + 2]."' where A = ".$random[$j + 5]);
- $dbh->do("update innotest1 SET D = D + 1 where A =".(($j - 1) / 2 - 777));
- $dbh->do("update innotest1 set B = '".$rnd_str[$j + 8]."' where A =".(($j - 1) / 2 - 770));
- $dbh->do("delete from innotest1 where A = ".$random[$random[$j]]);
-
- fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
-
- if (0 == ($j % 37)) {
- $dbh->do("commit");
- }
-
- if (0 == ($j % 533)) {
- $dbh->do("rollback");
- }
-
- if (0 == ($j % 537)) {
- print fetch_all_rows($dbh, "select c from innotest1 where c = '".$rnd_str[$j - 67]."'");
- print fetch_all_rows($dbh, "select b from innotest1 where b = '".$rnd_str[$j - 688]."'");
- print fetch_all_rows($dbh, "select b, c from innotest1 where c = '".$rnd_str[$j - 67]."'");
- print fetch_all_rows($dbh, "select b, c from innotest1 where b = '".$rnd_str[$j - 622]."'");
- print fetch_all_rows($dbh, "select a, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
- print fetch_all_rows($dbh, "select a, b, c from innotest1 where b = '".$rnd_str[$j - 644]."'");
- print fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
- print fetch_all_rows($dbh, "select d, b, c from innotest1 where b = '".$rnd_str[$j - 677]."'");
- print "\n";
- }
-
- if (0 == (($j - 1) % 1000)) {
- print "round $j\n";
- }
- }
-
- $dbh->do("commit");
-}
-
-$dbh->disconnect; # close connection
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; + +print "Innotest1a: MySQL/InnoDB stress test in Perl\n"; +print "-------------------------------------------\n"; +print "This is a randomized stress test for concurrent inserts,\n"; +print "updates, deletes, commits and rollbacks. The test will generate\n"; +print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n"; +print "\n"; +print "You should run innotest1, innotest1a, and innotest1b concurrently.\n"; +print "The thing to watch is that the server does not crash or does not\n"; +print "print to the .err log anything. Currently, due to a buglet in MySQL,\n"; +print "warnings about MySQL lock reservations can appear in the .err log.\n"; +print "The test will run very long, even several hours. You can kill\n"; +print "the perl processes running this test at any time and do CHECK\n"; +print "TABLE on table innotest1 in the 'test' database.\n"; +print "\n"; +print "Some of these stress tests will print a lot of SQL errors\n"; +print "to the standard output. That is not to be worried about.\n"; +print "You can direct the output to a file like this:\n"; +print "perl innotest1 > out1\n\n"; + +print "Generating random keys\n"; +$random[$opt_loop_count] = 0; +$rnd_str[$opt_loop_count] = "a"; + +for ($i = 0; $i < $opt_loop_count; $i++) { + + $random[$i] = ($i * 63857) % $opt_loop_count; + + if (0 == ($random[$i] % 3)) { + $rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd"; + } else { if (1 == ($random[$i] % 3)) { + $rnd_str[$i] = "khd"; + } else { if (2 == ($random[$i] % 3)) { + $rnd_str[$i] = "kh"; + }}} + + for ($j = 0; $j < (($i * 764877) % 20); $j++) { + $rnd_str[$i] = $rnd_str[$i]."k"; + } +} + +#### +#### Connect +#### + +$dbh = $server->connect() +|| die $dbh->errstr; + + +$dbh->do("set autocommit = 0"); + +for ($i = 0; $i < 1; $i++) { + print "loop $i\n"; + + for ($j = 1; $j < $opt_loop_count - 10; $j = $j + 2) { + $dbh->do( + "insert into innotest1 (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')"); + $dbh->do("update innotest1 set B = '".$rnd_str[$j + 2]."' where A = ".$random[$j + 5]); + $dbh->do("update innotest1 SET D = D + 1 where A =".(($j - 1) / 2 - 777)); + $dbh->do("update innotest1 set B = '".$rnd_str[$j + 8]."' where A =".(($j - 1) / 2 - 770)); + $dbh->do("delete from innotest1 where A = ".$random[$random[$j]]); + + fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7)); + + if (0 == ($j % 37)) { + $dbh->do("commit"); + } + + if (0 == ($j % 533)) { + $dbh->do("rollback"); + } + + if (0 == ($j % 537)) { + print fetch_all_rows($dbh, "select c from innotest1 where c = '".$rnd_str[$j - 67]."'"); + print fetch_all_rows($dbh, "select b from innotest1 where b = '".$rnd_str[$j - 688]."'"); + print fetch_all_rows($dbh, "select b, c from innotest1 where c = '".$rnd_str[$j - 67]."'"); + print fetch_all_rows($dbh, "select b, c from innotest1 where b = '".$rnd_str[$j - 622]."'"); + print fetch_all_rows($dbh, "select a, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'"); + print fetch_all_rows($dbh, "select a, b, c from innotest1 where b = '".$rnd_str[$j - 644]."'"); + print fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'"); + print fetch_all_rows($dbh, "select d, b, c from innotest1 where b = '".$rnd_str[$j - 677]."'"); + print "\n"; + } + + if (0 == (($j - 1) % 1000)) { + print "round $j\n"; + } + } + + $dbh->do("commit"); +} + +$dbh->disconnect; # close connection diff --git a/sql-bench/innotest1b.sh b/sql-bench/innotest1b.sh index 3f6c9f5bd5f..524a6e0e145 100644 --- a/sql-bench/innotest1b.sh +++ b/sql-bench/innotest1b.sh @@ -1,101 +1,101 @@ -#!/usr/bin/perl
-############################################################################
-# Stress test for MySQL/InnoDB combined database
-# (c) 2002 Innobase Oy & MySQL AB
-#
-############################################################################
-
+#!/usr/bin/perl +############################################################################ +# Stress test for MySQL/InnoDB combined database +# (c) 2002 Innobase Oy & MySQL AB +# +############################################################################ + use Cwd; -use DBI;
-use Benchmark;
-
-$opt_loop_count = 200000;
-
+use DBI; +use Benchmark; + +$opt_loop_count = 200000; + $pwd = cwd(); $pwd = "." if ($pwd eq ''); -require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
-
-print "Innotest1b: MySQL/InnoDB stress test in Perl\n";
-print "-------------------------------------------\n";
-print "This is a randomized stress test for concurrent inserts,\n";
-print "updates, deletes, commits and rollbacks. The test will generate\n";
-print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
-print "\n";
-print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
-print "The thing to watch is that the server does not crash or does not\n";
-print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
-print "warnings about MySQL lock reservations can appear in the .err log.\n";
-print "The test will run very long, even several hours. You can kill\n";
-print "the perl processes running this test at any time and do CHECK\n";
-print "TABLE on table innotest1 in the 'test' database.\n";
-print "\n";
-print "Some of these stress tests will print a lot of SQL errors\n";
-print "to the standard output. That is not to be worried about.\n";
-print "You can direct the output to a file like this:\n";
-print "perl innotest1 > out1\n\n";
-
-print "Generating random keys\n";
-$random[$opt_loop_count] = 0;
-$rnd_str[$opt_loop_count] = "a";
-
-for ($i = 0; $i < $opt_loop_count; $i++) {
-
- $random[$i] = ($i * 63857) % $opt_loop_count;
-
- if (0 == ($random[$i] % 3)) {
- $rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
- } else { if (1 == ($random[$i] % 3)) {
- $rnd_str[$i] = "khd";
- } else { if (2 == ($random[$i] % 3)) {
- $rnd_str[$i] = "kh";
- }}}
-
- for ($j = 0; $j < (($i * 764877) % 20); $j++) {
- $rnd_str[$i] = $rnd_str[$i]."k";
- }
-}
-
-####
-#### Connect
-####
-
-$dbh = $server->connect()
-|| die $dbh->errstr;
-
-$dbh->do("set autocommit = 0");
-
-for ($i = 0; $i < 5; $i++) {
- print "loop $i\n";
-
- for ($j = 1; $j < $opt_loop_count - 10; $j = $j + 2) {
-
- fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
-
- if (0 == ($j % 37)) {
- $dbh->do("commit");
- }
-
- if (0 == ($j % 533)) {
- $dbh->do("rollback");
- }
-
- if (0 == ($j % 537)) {
- print fetch_all_rows($dbh, "select c from innotest1 where c = '".$rnd_str[$j - 67]."'");
- print fetch_all_rows($dbh, "select b from innotest1 where b = '".$rnd_str[$j - 688]."'");
- print fetch_all_rows($dbh, "select b, c from innotest1 where c = '".$rnd_str[$j - 67]."'");
- print fetch_all_rows($dbh, "select b, c from innotest1 where b = '".$rnd_str[$j - 622]."'");
- print fetch_all_rows($dbh, "select a, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
- print fetch_all_rows($dbh, "select a, b, c from innotest1 where b = '".$rnd_str[$j - 644]."'");
- print fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
- print fetch_all_rows($dbh, "select d, b, c from innotest1 where b = '".$rnd_str[$j - 677]."'");
- print "\n";
- }
-
- if (0 == (($j - 1) % 1000)) {
- print "round $j\n";
- }
- }
-
- $dbh->do("commit");
-}
-
-$dbh->disconnect; # close connection
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; + +print "Innotest1b: MySQL/InnoDB stress test in Perl\n"; +print "-------------------------------------------\n"; +print "This is a randomized stress test for concurrent inserts,\n"; +print "updates, deletes, commits and rollbacks. The test will generate\n"; +print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n"; +print "\n"; +print "You should run innotest1, innotest1a, and innotest1b concurrently.\n"; +print "The thing to watch is that the server does not crash or does not\n"; +print "print to the .err log anything. Currently, due to a buglet in MySQL,\n"; +print "warnings about MySQL lock reservations can appear in the .err log.\n"; +print "The test will run very long, even several hours. You can kill\n"; +print "the perl processes running this test at any time and do CHECK\n"; +print "TABLE on table innotest1 in the 'test' database.\n"; +print "\n"; +print "Some of these stress tests will print a lot of SQL errors\n"; +print "to the standard output. That is not to be worried about.\n"; +print "You can direct the output to a file like this:\n"; +print "perl innotest1 > out1\n\n"; + +print "Generating random keys\n"; +$random[$opt_loop_count] = 0; +$rnd_str[$opt_loop_count] = "a"; + +for ($i = 0; $i < $opt_loop_count; $i++) { + + $random[$i] = ($i * 63857) % $opt_loop_count; + + if (0 == ($random[$i] % 3)) { + $rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd"; + } else { if (1 == ($random[$i] % 3)) { + $rnd_str[$i] = "khd"; + } else { if (2 == ($random[$i] % 3)) { + $rnd_str[$i] = "kh"; + }}} + + for ($j = 0; $j < (($i * 764877) % 20); $j++) { + $rnd_str[$i] = $rnd_str[$i]."k"; + } +} + +#### +#### Connect +#### + +$dbh = $server->connect() +|| die $dbh->errstr; + +$dbh->do("set autocommit = 0"); + +for ($i = 0; $i < 5; $i++) { + print "loop $i\n"; + + for ($j = 1; $j < $opt_loop_count - 10; $j = $j + 2) { + + fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7)); + + if (0 == ($j % 37)) { + $dbh->do("commit"); + } + + if (0 == ($j % 533)) { + $dbh->do("rollback"); + } + + if (0 == ($j % 537)) { + print fetch_all_rows($dbh, "select c from innotest1 where c = '".$rnd_str[$j - 67]."'"); + print fetch_all_rows($dbh, "select b from innotest1 where b = '".$rnd_str[$j - 688]."'"); + print fetch_all_rows($dbh, "select b, c from innotest1 where c = '".$rnd_str[$j - 67]."'"); + print fetch_all_rows($dbh, "select b, c from innotest1 where b = '".$rnd_str[$j - 622]."'"); + print fetch_all_rows($dbh, "select a, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'"); + print fetch_all_rows($dbh, "select a, b, c from innotest1 where b = '".$rnd_str[$j - 644]."'"); + print fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'"); + print fetch_all_rows($dbh, "select d, b, c from innotest1 where b = '".$rnd_str[$j - 677]."'"); + print "\n"; + } + + if (0 == (($j - 1) % 1000)) { + print "round $j\n"; + } + } + + $dbh->do("commit"); +} + +$dbh->disconnect; # close connection diff --git a/sql-bench/innotest2.sh b/sql-bench/innotest2.sh index cfeb0527970..fa0fd418968 100644 --- a/sql-bench/innotest2.sh +++ b/sql-bench/innotest2.sh @@ -1,150 +1,150 @@ -#!/usr/bin/perl
-############################################################################
-# Stress test for MySQL/InnoDB combined database
-# (c) 2002 Innobase Oy & MySQL AB
-#
-############################################################################
-
+#!/usr/bin/perl +############################################################################ +# Stress test for MySQL/InnoDB combined database +# (c) 2002 Innobase Oy & MySQL AB +# +############################################################################ + use Cwd; -use DBI;
-use Benchmark;
-
-$opt_loop_count = 100000;
-
+use DBI; +use Benchmark; + +$opt_loop_count = 100000; + $pwd = cwd(); $pwd = "." if ($pwd eq ''); -require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
-
-print "Innotest2: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
-print "------------------------------------------------------------\n";
-print "This is a randomized stress test for concurrent inserts,\n";
-print "updates, deletes, commits and rollbacks with foreign keys with\n";
-print "the ON DELETE ... clause. The test will generate\n";
-print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
-print "\n";
-print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
-print "The thing to watch is that the server does not crash or does not\n";
-print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
-print "warnings about MySQL lock reservations can appear in the .err log.\n";
-print "The test will run very long, even several hours. You can kill\n";
-print "the perl processes running this test at any time and do CHECK\n";
-print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
-print "\n";
-print "Some of these stress tests will print a lot of SQL errors\n";
-print "to the standard output. That is not to be worried about.\n";
-print "You can direct the output to a file like this:\n";
-print "perl innotest2 > out2\n\n";
-
-print "Generating random keys\n";
-$random[$opt_loop_count] = 0;
-$rnd_str[$opt_loop_count] = "a";
-
-for ($i = 0; $i < $opt_loop_count; $i++) {
-
- $random[$i] = ($i * 63857) % $opt_loop_count;
-
- if (0 == ($random[$i] % 3)) {
- $rnd_str[$i] = "khD";
- } else { if (1 == ($random[$i] % 3)) {
- $rnd_str[$i] = "khd";
- } else { if (2 == ($random[$i] % 3)) {
- $rnd_str[$i] = "kHd";
- }}}
-
- for ($j = 0; $j < (($i * 764877) % 10); $j++) {
- $rnd_str[$i] = $rnd_str[$i]."k";
- }
-}
-
-####
-#### Connect
-####
-
-$dbh = $server->connect()
-|| die $dbh->errstr;
-
-$dbh->do("set autocommit = 0");
-
-for ($i = 0; $i < 1; $i++) {
- print "loop $i\n";
-
- print "dropping table innotest2a\n";
- $dbh->do("drop table innotest2a");
-
- print "dropping table innotest2b\n";
- $dbh->do("drop table innotest2b");
-
- print "dropping table innotest2c\n";
- $dbh->do("drop table innotest2c");
-
- print "dropping table innotest2d\n";
- $dbh->do("drop table innotest2d");
-
- print "creating table innotest2b\n";
- $dbh->do(
- "create table innotest2b (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C)) TYPE = INNODB")
- || die $dbh->errstr;
-
- print "creating table innotest2a\n";
-
- $dbh->do(
- "create table innotest2a (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (A, D) REFERENCES innotest2b (A, D) ON DELETE CASCADE) TYPE = INNODB")
- || die $dbh->errstr;
-
- print "creating table innotest2c\n";
-
- $dbh->do(
- "create table innotest2c (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (A, D) REFERENCES innotest2a (A, D) ON DELETE CASCADE, FOREIGN KEY (B, C) REFERENCES innotest2a (B, C) ON DELETE CASCADE) TYPE = INNODB")
- || die $dbh->errstr;
-
- print "creating table innotest2d\n";
-
- $dbh->do(
- "create table innotest2d (A INT AUTO_INCREMENT, D INT, B VARCHAR(200), C VARCHAR(175), UNIQUE KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (C) REFERENCES innotest2c (C) ON DELETE SET NULL, FOREIGN KEY (B, C) REFERENCES innotest2c (B, C) ON DELETE SET NULL) TYPE = INNODB")
- || die $dbh->errstr;
- print "created\n";
-
- for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 2) {
- $dbh->do(
- "insert into innotest2b (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
- || print $dbh->errstr;
-
- $dbh->do(
- "insert into innotest2a (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
- || print $dbh->errstr;
-
- $dbh->do(
- "insert into innotest2c (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
- || print $dbh->errstr;
-
- $dbh->do(
- "insert into innotest2d (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
- || print $dbh->errstr;
-
- $dbh->do("delete from innotest2b where A = ".$random[$random[$j]])
- || print $dbh->errstr;
-
- if (0 == ($j % 10)) {
- $dbh->do("commit");
- }
-
- if (0 == ($j % 39)) {
- $dbh->do("rollback");
- }
-
- if (0 == ($j % 1000)) {
- print "round $j\n";
- }
- if (0 == ($j % 20000)) {
- print "Checking tables...\n";
- $dbh->do("check table innotest2a");
- $dbh->do("check table innotest2b");
- $dbh->do("check table innotest2c");
- $dbh->do("check table innotest2d");
- print "Tables checked.\n";
- }
- }
-
- $dbh->do("commit");
-}
-
-$dbh->disconnect; # close connection
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; + +print "Innotest2: MySQL/InnoDB stress test in Perl for FOREIGN keys\n"; +print "------------------------------------------------------------\n"; +print "This is a randomized stress test for concurrent inserts,\n"; +print "updates, deletes, commits and rollbacks with foreign keys with\n"; +print "the ON DELETE ... clause. The test will generate\n"; +print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n"; +print "\n"; +print "You should run innotest2, innotest2a, and innotest2b concurrently.\n"; +print "The thing to watch is that the server does not crash or does not\n"; +print "print to the .err log anything. Currently, due to a buglet in MySQL,\n"; +print "warnings about MySQL lock reservations can appear in the .err log.\n"; +print "The test will run very long, even several hours. You can kill\n"; +print "the perl processes running this test at any time and do CHECK\n"; +print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n"; +print "\n"; +print "Some of these stress tests will print a lot of SQL errors\n"; +print "to the standard output. That is not to be worried about.\n"; +print "You can direct the output to a file like this:\n"; +print "perl innotest2 > out2\n\n"; + +print "Generating random keys\n"; +$random[$opt_loop_count] = 0; +$rnd_str[$opt_loop_count] = "a"; + +for ($i = 0; $i < $opt_loop_count; $i++) { + + $random[$i] = ($i * 63857) % $opt_loop_count; + + if (0 == ($random[$i] % 3)) { + $rnd_str[$i] = "khD"; + } else { if (1 == ($random[$i] % 3)) { + $rnd_str[$i] = "khd"; + } else { if (2 == ($random[$i] % 3)) { + $rnd_str[$i] = "kHd"; + }}} + + for ($j = 0; $j < (($i * 764877) % 10); $j++) { + $rnd_str[$i] = $rnd_str[$i]."k"; + } +} + +#### +#### Connect +#### + +$dbh = $server->connect() +|| die $dbh->errstr; + +$dbh->do("set autocommit = 0"); + +for ($i = 0; $i < 1; $i++) { + print "loop $i\n"; + + print "dropping table innotest2a\n"; + $dbh->do("drop table innotest2a"); + + print "dropping table innotest2b\n"; + $dbh->do("drop table innotest2b"); + + print "dropping table innotest2c\n"; + $dbh->do("drop table innotest2c"); + + print "dropping table innotest2d\n"; + $dbh->do("drop table innotest2d"); + + print "creating table innotest2b\n"; + $dbh->do( + "create table innotest2b (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C)) TYPE = INNODB") + || die $dbh->errstr; + + print "creating table innotest2a\n"; + + $dbh->do( + "create table innotest2a (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (A, D) REFERENCES innotest2b (A, D) ON DELETE CASCADE) TYPE = INNODB") + || die $dbh->errstr; + + print "creating table innotest2c\n"; + + $dbh->do( + "create table innotest2c (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (A, D) REFERENCES innotest2a (A, D) ON DELETE CASCADE, FOREIGN KEY (B, C) REFERENCES innotest2a (B, C) ON DELETE CASCADE) TYPE = INNODB") + || die $dbh->errstr; + + print "creating table innotest2d\n"; + + $dbh->do( + "create table innotest2d (A INT AUTO_INCREMENT, D INT, B VARCHAR(200), C VARCHAR(175), UNIQUE KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (C) REFERENCES innotest2c (C) ON DELETE SET NULL, FOREIGN KEY (B, C) REFERENCES innotest2c (B, C) ON DELETE SET NULL) TYPE = INNODB") + || die $dbh->errstr; + print "created\n"; + + for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 2) { + $dbh->do( + "insert into innotest2b (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')") + || print $dbh->errstr; + + $dbh->do( + "insert into innotest2a (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')") + || print $dbh->errstr; + + $dbh->do( + "insert into innotest2c (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')") + || print $dbh->errstr; + + $dbh->do( + "insert into innotest2d (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')") + || print $dbh->errstr; + + $dbh->do("delete from innotest2b where A = ".$random[$random[$j]]) + || print $dbh->errstr; + + if (0 == ($j % 10)) { + $dbh->do("commit"); + } + + if (0 == ($j % 39)) { + $dbh->do("rollback"); + } + + if (0 == ($j % 1000)) { + print "round $j\n"; + } + if (0 == ($j % 20000)) { + print "Checking tables...\n"; + $dbh->do("check table innotest2a"); + $dbh->do("check table innotest2b"); + $dbh->do("check table innotest2c"); + $dbh->do("check table innotest2d"); + print "Tables checked.\n"; + } + } + + $dbh->do("commit"); +} + +$dbh->disconnect; # close connection diff --git a/sql-bench/innotest2a.sh b/sql-bench/innotest2a.sh index f77ed3ddadd..4a6e4b20a9a 100644 --- a/sql-bench/innotest2a.sh +++ b/sql-bench/innotest2a.sh @@ -1,94 +1,94 @@ -#!/usr/bin/perl
-############################################################################
-# Stress test for MySQL/Innobase combined database
-# (c) 2000 Innobase Oy & MySQL AB
-#
-############################################################################
-
+#!/usr/bin/perl +############################################################################ +# Stress test for MySQL/Innobase combined database +# (c) 2000 Innobase Oy & MySQL AB +# +############################################################################ + use Cwd; -use DBI;
-use Benchmark;
-
-$opt_loop_count = 100000;
-
+use DBI; +use Benchmark; + +$opt_loop_count = 100000; + $pwd = cwd(); $pwd = "." if ($pwd eq ''); -require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
-
-print "Innotest2a: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
-print "------------------------------------------------------------\n";
-print "This is a randomized stress test for concurrent inserts,\n";
-print "updates, deletes, commits and rollbacks with foreign keys with\n";
-print "the ON DELETE ... clause. The test will generate\n";
-print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
-print "\n";
-print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
-print "The thing to watch is that the server does not crash or does not\n";
-print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
-print "warnings about MySQL lock reservations can appear in the .err log.\n";
-print "The test will run very long, even several hours. You can kill\n";
-print "the perl processes running this test at any time and do CHECK\n";
-print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
-print "\n";
-print "Some of these stress tests will print a lot of SQL errors\n";
-print "to the standard output. That is not to be worried about.\n";
-print "You can direct the output to a file like this:\n";
-print "perl innotest2 > out2\n\n";
-
-print "Generating random keys\n";
-$random[$opt_loop_count] = 0;
-$rnd_str[$opt_loop_count] = "a";
-
-for ($i = 0; $i < $opt_loop_count; $i++) {
-
- $random[$i] = ($i * 63857) % $opt_loop_count;
-
- if (0 == ($random[$i] % 3)) {
- $rnd_str[$i] = "khD";
- } else { if (1 == ($random[$i] % 3)) {
- $rnd_str[$i] = "kHd";
- } else { if (2 == ($random[$i] % 3)) {
- $rnd_str[$i] = "khd";
- }}}
-
- for ($j = 0; $j < (($i * 764877) % 20); $j++) {
- $rnd_str[$i] = $rnd_str[$i]."k";
- }
-}
-
-####
-#### Connect
-####
-
-$dbh = $server->connect()
-|| die $dbh->errstr;
-
-$dbh->do("set autocommit = 0");
-
-for ($i = 0; $i < 5; $i++) {
- print "loop $i\n";
-
- for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 1) {
-
- $dbh->do("update innotest2a set B = '".$rnd_str[$j + 1]."' where A = ".$random[$j + 5])
- || print $dbh->errstr;
-
- $dbh->do("delete from innotest2a where A = ".$random[$random[$j]])
- || print $dbh->errstr;
-
- if (0 == ($j % 10)) {
- $dbh->do("commit");
- }
-
- if (0 == ($j % 39)) {
- $dbh->do("rollback");
- }
-
- if (0 == ($j % 1000)) {
- print "round $j\n";
- }
- }
-
- $dbh->do("commit");
-}
-
-$dbh->disconnect; # close connection
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; + +print "Innotest2a: MySQL/InnoDB stress test in Perl for FOREIGN keys\n"; +print "------------------------------------------------------------\n"; +print "This is a randomized stress test for concurrent inserts,\n"; +print "updates, deletes, commits and rollbacks with foreign keys with\n"; +print "the ON DELETE ... clause. The test will generate\n"; +print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n"; +print "\n"; +print "You should run innotest2, innotest2a, and innotest2b concurrently.\n"; +print "The thing to watch is that the server does not crash or does not\n"; +print "print to the .err log anything. Currently, due to a buglet in MySQL,\n"; +print "warnings about MySQL lock reservations can appear in the .err log.\n"; +print "The test will run very long, even several hours. You can kill\n"; +print "the perl processes running this test at any time and do CHECK\n"; +print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n"; +print "\n"; +print "Some of these stress tests will print a lot of SQL errors\n"; +print "to the standard output. That is not to be worried about.\n"; +print "You can direct the output to a file like this:\n"; +print "perl innotest2 > out2\n\n"; + +print "Generating random keys\n"; +$random[$opt_loop_count] = 0; +$rnd_str[$opt_loop_count] = "a"; + +for ($i = 0; $i < $opt_loop_count; $i++) { + + $random[$i] = ($i * 63857) % $opt_loop_count; + + if (0 == ($random[$i] % 3)) { + $rnd_str[$i] = "khD"; + } else { if (1 == ($random[$i] % 3)) { + $rnd_str[$i] = "kHd"; + } else { if (2 == ($random[$i] % 3)) { + $rnd_str[$i] = "khd"; + }}} + + for ($j = 0; $j < (($i * 764877) % 20); $j++) { + $rnd_str[$i] = $rnd_str[$i]."k"; + } +} + +#### +#### Connect +#### + +$dbh = $server->connect() +|| die $dbh->errstr; + +$dbh->do("set autocommit = 0"); + +for ($i = 0; $i < 5; $i++) { + print "loop $i\n"; + + for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 1) { + + $dbh->do("update innotest2a set B = '".$rnd_str[$j + 1]."' where A = ".$random[$j + 5]) + || print $dbh->errstr; + + $dbh->do("delete from innotest2a where A = ".$random[$random[$j]]) + || print $dbh->errstr; + + if (0 == ($j % 10)) { + $dbh->do("commit"); + } + + if (0 == ($j % 39)) { + $dbh->do("rollback"); + } + + if (0 == ($j % 1000)) { + print "round $j\n"; + } + } + + $dbh->do("commit"); +} + +$dbh->disconnect; # close connection diff --git a/sql-bench/innotest2b.sh b/sql-bench/innotest2b.sh index 72a71d06c73..b94325ff39e 100644 --- a/sql-bench/innotest2b.sh +++ b/sql-bench/innotest2b.sh @@ -1,104 +1,104 @@ -#!/usr/bin/perl
-############################################################################
-# Stress test for MySQL/Innobase combined database
-# (c) 2000 Innobase Oy & MySQL AB
-#
-############################################################################
-
+#!/usr/bin/perl +############################################################################ +# Stress test for MySQL/Innobase combined database +# (c) 2000 Innobase Oy & MySQL AB +# +############################################################################ + use Cwd; -use DBI;
-use Benchmark;
-
-$opt_loop_count = 100000;
-
+use DBI; +use Benchmark; + +$opt_loop_count = 100000; + $pwd = cwd(); $pwd = "." if ($pwd eq ''); -require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
-
-print "Innotest2b: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
-print "------------------------------------------------------------\n";
-print "This is a randomized stress test for concurrent inserts,\n";
-print "updates, deletes, commits and rollbacks with foreign keys with\n";
-print "the ON DELETE ... clause. The test will generate\n";
-print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
-print "\n";
-print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
-print "The thing to watch is that the server does not crash or does not\n";
-print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
-print "warnings about MySQL lock reservations can appear in the .err log.\n";
-print "The test will run very long, even several hours. You can kill\n";
-print "the perl processes running this test at any time and do CHECK\n";
-print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
-print "\n";
-print "Some of these stress tests will print a lot of SQL errors\n";
-print "to the standard output. That is not to be worried about.\n";
-print "You can direct the output to a file like this:\n";
-print "perl innotest2 > out2\n\n";
-
-print "Generating random keys\n";
-$random[$opt_loop_count] = 0;
-$rnd_str[$opt_loop_count] = "a";
-
-for ($i = 0; $i < $opt_loop_count; $i++) {
-
- $random[$i] = ($i * 98641) % $opt_loop_count;
-
- if (0 == ($random[$i] % 3)) {
- $rnd_str[$i] = "khD";
- } else { if (1 == ($random[$i] % 3)) {
- $rnd_str[$i] = "khd";
- } else { if (2 == ($random[$i] % 3)) {
- $rnd_str[$i] = "kHd";
- }}}
-
- for ($j = 0; $j < (($i * 764877) % 10); $j++) {
- $rnd_str[$i] = $rnd_str[$i]."k";
- }
-}
-
-####
-#### Connect
-####
-
-$dbh = $server->connect();
-
-$dbh->do("set autocommit = 0");
-
-for ($i = 0; $i < 1; $i++) {
- print "loop $i\n";
-
- for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 2) {
- $dbh->do(
- "insert into innotest2b (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
- || print $dbh->errstr;
-
- $dbh->do(
- "insert into innotest2a (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
- || print $dbh->errstr;
-
- $dbh->do(
- "insert into innotest2c (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
- || print $dbh->errstr;
-
- $dbh->do("delete from innotest2b where A = ".$random[$random[$j]])
- || print $dbh->errstr;
-
- $dbh->do("update innotest2b set A = A + 1 where A = ".$random[$j])
- || print $dbh->errstr;
-
- if (0 == ($j % 10)) {
- $dbh->do("commit");
- }
-
- if (0 == ($j % 39)) {
- $dbh->do("rollback");
- }
-
- if (0 == ($j % 1000)) {
- print "round $j\n";
- }
- }
-
- $dbh->do("commit");
-}
-
-$dbh->disconnect; # close connection
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; + +print "Innotest2b: MySQL/InnoDB stress test in Perl for FOREIGN keys\n"; +print "------------------------------------------------------------\n"; +print "This is a randomized stress test for concurrent inserts,\n"; +print "updates, deletes, commits and rollbacks with foreign keys with\n"; +print "the ON DELETE ... clause. The test will generate\n"; +print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n"; +print "\n"; +print "You should run innotest2, innotest2a, and innotest2b concurrently.\n"; +print "The thing to watch is that the server does not crash or does not\n"; +print "print to the .err log anything. Currently, due to a buglet in MySQL,\n"; +print "warnings about MySQL lock reservations can appear in the .err log.\n"; +print "The test will run very long, even several hours. You can kill\n"; +print "the perl processes running this test at any time and do CHECK\n"; +print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n"; +print "\n"; +print "Some of these stress tests will print a lot of SQL errors\n"; +print "to the standard output. That is not to be worried about.\n"; +print "You can direct the output to a file like this:\n"; +print "perl innotest2 > out2\n\n"; + +print "Generating random keys\n"; +$random[$opt_loop_count] = 0; +$rnd_str[$opt_loop_count] = "a"; + +for ($i = 0; $i < $opt_loop_count; $i++) { + + $random[$i] = ($i * 98641) % $opt_loop_count; + + if (0 == ($random[$i] % 3)) { + $rnd_str[$i] = "khD"; + } else { if (1 == ($random[$i] % 3)) { + $rnd_str[$i] = "khd"; + } else { if (2 == ($random[$i] % 3)) { + $rnd_str[$i] = "kHd"; + }}} + + for ($j = 0; $j < (($i * 764877) % 10); $j++) { + $rnd_str[$i] = $rnd_str[$i]."k"; + } +} + +#### +#### Connect +#### + +$dbh = $server->connect(); + +$dbh->do("set autocommit = 0"); + +for ($i = 0; $i < 1; $i++) { + print "loop $i\n"; + + for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 2) { + $dbh->do( + "insert into innotest2b (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')") + || print $dbh->errstr; + + $dbh->do( + "insert into innotest2a (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')") + || print $dbh->errstr; + + $dbh->do( + "insert into innotest2c (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')") + || print $dbh->errstr; + + $dbh->do("delete from innotest2b where A = ".$random[$random[$j]]) + || print $dbh->errstr; + + $dbh->do("update innotest2b set A = A + 1 where A = ".$random[$j]) + || print $dbh->errstr; + + if (0 == ($j % 10)) { + $dbh->do("commit"); + } + + if (0 == ($j % 39)) { + $dbh->do("rollback"); + } + + if (0 == ($j % 1000)) { + print "round $j\n"; + } + } + + $dbh->do("commit"); +} + +$dbh->disconnect; # close connection diff --git a/sql-bench/limits/access_odbc.cfg b/sql-bench/limits/access_odbc.cfg index cc2e05c0154..8fd07fc71d7 100644 --- a/sql-bench/limits/access_odbc.cfg +++ b/sql-bench/limits/access_odbc.cfg @@ -1,448 +1,448 @@ -#This file is automaticly generated by crash-me 1.37
-
-NEG=yes # update of column= -column
-alter_add_col=yes # Alter table add column
-alter_add_multi_col=without add # Alter table add many columns
-alter_alter_col=no # Alter table alter column
-alter_change_col=no # Alter table change column
-alter_drop_col=yes # Alter table drop column
-alter_modify_col=no # Alter table modify column
-alter_rename_table=no # Alter table rename table
-atomic_updates=no # atomic updates
-binary_items=yes # binary items (0x41)
-case_insensitive_strings=yes # case insensitive compare
-char_is_space_filled=no # char are space filled
-column_alias=yes # Column alias
-columns_in_group_by=11 # number of columns in group by
-columns_in_order_by=11 # number of columns in order by
-comment_#=no # # as comment
-comment_--=no # -- as comment
-comment_/**/=no # /* */ as comment
-comment_//=no # // as comment
-compute=no # Compute
-connections=64 # Simultaneous connections
-constraint_check=no # CHECK constraint
-constraint_null=yes # NULL constraint (SyBase style)
-crash_me_safe=no # crash me safe
-crash_me_version=1.37 # crash me version
-create_default=no # default value for column
-create_default_func=no # default value function for column
-create_if_not_exists=no # create table if not exists
-create_index=yes # create index
-create_table_select=no # create table from select
-cross_join=no # cross join (same as from a,b)
-date_as_string=error # String functions on date columns
-date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
-date_zero=no # Supports 0000-00-00 dates
-double_quotes=yes # Double '' as ' in strings
-drop_if_exists=no # drop table if exists
-drop_index=with 'ON' # drop index
-end_colon=yes # allows end ';'
-except=no # except
-except_all=no # except all
-float_int_expr=yes # mixing of integer and float in expression
-foreign_key_syntax=no # foreign key syntax
-full_outer_join=no # full outer join
-func_extra_!=no # Function NOT as '!' in SELECT
-func_extra_%=no # Function MOD as %
-func_extra_&=error # Function & (bitwise and)
-func_extra_&&=no # Function AND as '&&'
-func_extra_<>=yes # Function <> in SELECT
-func_extra_==yes # Function =
-func_extra_add_months=no # Function ADD_MONTHS
-func_extra_and_or=yes # Function AND and OR in SELECT
-func_extra_atn2=no # Function ATN2
-func_extra_auto_num2string=no # Function automatic num->string convert
-func_extra_auto_string2num=yes # Function automatic string->num convert
-func_extra_between=yes # Function BETWEEN in SELECT
-func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
-func_extra_bit_count=no # Function BIT_COUNT
-func_extra_ceil=no # Function CEIL
-func_extra_charindex=no # Function CHARINDEX
-func_extra_chr=yes # Function CHR
-func_extra_coalesce=no # Function COALESCE
-func_extra_concat_as_+=yes # Function concatenation with +
-func_extra_concat_list=no # Function CONCAT(list)
-func_extra_convert=no # Function CONVERT
-func_extra_cosh=no # Function COSH
-func_extra_date_format=no # Function DATE_FORMAT
-func_extra_dateadd=no # Function DATEADD
-func_extra_datediff=no # Function DATEDIFF
-func_extra_datename=no # Function DATENAME
-func_extra_datepart=no # Function DATEPART
-func_extra_elt=no # Function ELT
-func_extra_encrypt=no # Function ENCRYPT
-func_extra_field=no # Function FIELD
-func_extra_format=error # Function FORMAT
-func_extra_from_days=no # Function FROM_DAYS
-func_extra_from_unixtime=no # Function FROM_UNIXTIME
-func_extra_getdate=no # Function GETDATE
-func_extra_greatest=no # Function GREATEST
-func_extra_if=no # Function IF
-func_extra_in_num=yes # Function IN on numbers in SELECT
-func_extra_in_str=yes # Function IN on strings in SELECT
-func_extra_initcap=no # Function INITCAP
-func_extra_instr=yes # Function LOCATE as INSTR
-func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
-func_extra_instrb=no # Function INSTRB
-func_extra_interval=no # Function INTERVAL
-func_extra_last_day=no # Function LAST_DAY
-func_extra_last_insert_id=no # Function LAST_INSERT_ID
-func_extra_least=no # Function LEAST
-func_extra_lengthb=no # Function LENGTHB
-func_extra_like=yes # Function LIKE in SELECT
-func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
-func_extra_ln=no # Function LN
-func_extra_log(m_n)=no # Function LOG(m,n)
-func_extra_logn=no # Function LOGN
-func_extra_lpad=no # Function LPAD
-func_extra_mdy=no # Function MDY
-func_extra_mid=yes # Function SUBSTRING as MID
-func_extra_months_between=no # Function MONTHS_BETWEEN
-func_extra_not=yes # Function NOT in SELECT
-func_extra_not_between=yes # Function NOT BETWEEN in SELECT
-func_extra_not_like=yes # Function NOT LIKE in SELECT
-func_extra_odbc_convert=no # Function ODBC CONVERT
-func_extra_password=no # Function PASSWORD
-func_extra_patindex=no # Function PATINDEX
-func_extra_period_add=no # Function PERIOD_ADD
-func_extra_period_diff=no # Function PERIOD_DIFF
-func_extra_pow=no # Function POW
-func_extra_range=no # Function RANGE
-func_extra_regexp=no # Function REGEXP in SELECT
-func_extra_replicate=no # Function REPLICATE
-func_extra_reverse=no # Function REVERSE
-func_extra_root=no # Function ROOT
-func_extra_round1=yes # Function ROUND(1 arg)
-func_extra_rpad=no # Function RPAD
-func_extra_sec_to_time=no # Function SEC_TO_TIME
-func_extra_sinh=no # Function SINH
-func_extra_str=no # Function STR
-func_extra_strcmp=no # Function STRCMP
-func_extra_stuff=no # Function STUFF
-func_extra_substrb=no # Function SUBSTRB
-func_extra_substring_index=no # Function SUBSTRING_INDEX
-func_extra_sysdate=no # Function SYSDATE
-func_extra_tanh=no # Function TANH
-func_extra_time_to_sec=no # Function TIME_TO_SEC
-func_extra_to_days=no # Function TO_DAYS
-func_extra_translate=no # Function TRANSLATE
-func_extra_trim_many_char=no # Function TRIM; Many char extension
-func_extra_trim_substring=no # Function TRIM; Substring extension
-func_extra_trunc=no # Function TRUNC
-func_extra_uid=no # Function UID
-func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
-func_extra_userenv=no # Function USERENV
-func_extra_version=no # Function VERSION
-func_extra_weekday=error # Function WEEKDAY
-func_extra_|=no # Function | (bitwise or)
-func_extra_||=no # Function OR as '||'
-func_odbc_abs=yes # Function ABS
-func_odbc_acos=no # Function ACOS
-func_odbc_ascii=no # Function ASCII
-func_odbc_asin=no # Function ASIN
-func_odbc_atan=no # Function ATAN
-func_odbc_atan2=no # Function ATAN2
-func_odbc_ceiling=no # Function CEILING
-func_odbc_char=no # Function CHAR
-func_odbc_concat=no # Function CONCAT(2 arg)
-func_odbc_cos=yes # Function COS
-func_odbc_cot=no # Function COT
-func_odbc_curdate=no # Function CURDATE
-func_odbc_curtime=no # Function CURTIME
-func_odbc_database=no # Function DATABASE
-func_odbc_dayname=no # Function DAYNAME
-func_odbc_dayofmonth=no # Function DAYOFMONTH
-func_odbc_dayofweek=no # Function DAYOFWEEK
-func_odbc_dayofyear=no # Function DAYOFYEAR
-func_odbc_degrees=no # Function DEGREES
-func_odbc_difference=no # Function DIFFERENCE()
-func_odbc_exp=yes # Function EXP
-func_odbc_extract=no # Function EXTRACT
-func_odbc_floor=no # Function FLOOR
-func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
-func_odbc_hour=yes # Function HOUR
-func_odbc_hour_time=no # Function ANSI HOUR
-func_odbc_ifnull=no # Function IFNULL
-func_odbc_insert=no # Function INSERT
-func_odbc_lcase=yes # Function LCASE
-func_odbc_left=yes # Function LEFT
-func_odbc_length=no # Function REAL LENGTH
-func_odbc_length_without_space=no # Function ODBC LENGTH
-func_odbc_locate_2=no # Function LOCATE(2 arg)
-func_odbc_locate_3=no # Function LOCATE(3 arg)
-func_odbc_log=yes # Function LOG
-func_odbc_log10=no # Function LOG10
-func_odbc_ltrim=yes # Function LTRIM
-func_odbc_minute=yes # Function MINUTE
-func_odbc_mod=no # Function MOD
-func_odbc_month=yes # Function MONTH
-func_odbc_monthname=no # Function MONTHNAME
-func_odbc_now=yes # Function NOW
-func_odbc_pi=no # Function PI
-func_odbc_power=no # Function POWER
-func_odbc_quarter=no # Function QUARTER
-func_odbc_radians=no # Function RADIANS
-func_odbc_rand=no # Function RAND
-func_odbc_repeat=no # Function REPEAT
-func_odbc_replace=no # Function REPLACE
-func_odbc_right=yes # Function RIGHT
-func_odbc_round=yes # Function ROUND(2 arg)
-func_odbc_rtrim=yes # Function RTRIM
-func_odbc_second=yes # Function SECOND
-func_odbc_sign=no # Function SIGN
-func_odbc_sin=yes # Function SIN
-func_odbc_soundex=no # Function SOUNDEX
-func_odbc_space=yes # Function SPACE
-func_odbc_sqrt=no # Function SQRT
-func_odbc_substring=no # Function ODBC SUBSTRING
-func_odbc_tan=yes # Function TAN
-func_odbc_timestampadd=no # Function TIMESTAMPADD
-func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
-func_odbc_truncate=no # Function TRUNCATE
-func_odbc_ucase=yes # Function UCASE
-func_odbc_user()=no # Function USER()
-func_odbc_week=no # Function WEEK
-func_odbc_year=yes # Function YEAR
-func_sql_+=yes # Function +, -, * and /
-func_sql_bit_length=no # Function BIT_LENGTH
-func_sql_case=no # Function CASE
-func_sql_cast=no # Function CAST
-func_sql_char_length=no # Function CHAR_LENGTH
-func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
-func_sql_character_length=no # Function CHARACTER_LENGTH
-func_sql_concat_as_||=no # Function concatenation with ||
-func_sql_current_date=no # Function CURRENT_DATE
-func_sql_current_time=no # Function CURRENT_TIME
-func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
-func_sql_current_user=no # Function CURRENT_USER
-func_sql_lower=no # Function LOWER
-func_sql_octet_length=no # Function OCTET_LENGTH
-func_sql_position=no # Function POSITION
-func_sql_session_user=no # Function SESSION_USER
-func_sql_substring=no # Function ANSI SQL SUBSTRING
-func_sql_system_user=no # Function SYSTEM_USER
-func_sql_trim=no # Function TRIM
-func_sql_upper=no # Function UPPER
-func_sql_user=no # Function USER
-func_where_between=yes # Function BETWEEN
-func_where_eq_all=yes # Function = ALL
-func_where_eq_any=yes # Function = ANY
-func_where_eq_some=yes # Function = SOME
-func_where_exists=yes # Function EXISTS
-func_where_in_num=yes # Function IN on numbers
-func_where_like=yes # Function LIKE
-func_where_like_escape=no # Function LIKE ESCAPE
-func_where_match=no # Function MATCH
-func_where_match_unique=no # Function MATCH UNIQUE
-func_where_matches=no # Function MATCHES
-func_where_not_between=yes # Function NOT BETWEEN
-func_where_not_exists=yes # Function NOT EXISTS
-func_where_not_like=yes # Function NOT LIKE
-func_where_not_unique=no # Function NOT UNIQUE
-func_where_unique=no # Function UNIQUE
-functions=yes # Functions
-group_by=yes # Group by
-group_by_alias=no # Group by alias
-group_by_null=yes # group on column with null values
-group_by_position=no # Group by position
-group_distinct_functions=no # Group functions with distinct
-group_func_extra_bit_and=no # Group function BIT_AND
-group_func_extra_bit_or=no # Group function BIT_OR
-group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
-group_func_extra_std=no # Group function STD
-group_func_extra_stddev=no # Group function STDDEV
-group_func_extra_variance=no # Group function VARIANCE
-group_func_sql_avg=yes # Group function AVG
-group_func_sql_count_*=yes # Group function COUNT (*)
-group_func_sql_count_column=yes # Group function COUNT column name
-group_func_sql_count_distinct=no # Group function COUNT(DISTINCT expr)
-group_func_sql_max=yes # Group function MAX on numbers
-group_func_sql_max_str=yes # Group function MAX on strings
-group_func_sql_min=yes # Group function MIN on numbers
-group_func_sql_min_str=yes # Group function MIN on strings
-group_func_sql_sum=yes # Group function SUM
-group_functions=yes # Group functions
-having=yes # Having
-having_with_alias=no # Having on alias
-having_with_group=yes # Having with group function
-ignore_end_space=yes # ignore end space in compare
-index_in_create=no # index in create table
-index_namespace=yes # different namespace for index
-index_parts=no # index on column part (extension)
-insert_empty_string=yes # insert empty string
-insert_select=no # insert INTO ... SELECT ...
-insert_with_set=no # INSERT with set syntax
-intersect=no # intersect
-intersect_all=no # intersect all
-join_tables=32 # tables in join
-left_outer_join=yes # left outer join
-left_outer_join_using=no # left outer join using
-like_with_column=yes # column LIKE column
-like_with_number=yes # LIKE on numbers
-lock_tables=no # lock table
-logical_value=-1 # Value of logical operation (1=1)
-max_big_expressions=1 # big expressions
-max_char_size=255 # max char() size
-max_column_name=59 # column name length
-max_columns=255 # Columns in table
-max_conditions=97 # OR and AND in WHERE
-max_expressions=+10000 # simple expressions
-max_index=32 # max index
-max_index_length=2026 # index length
-max_index_name=64 # index name length
-max_index_part_length=255 # max index part length
-max_index_parts=10 # index parts
-max_index_varchar_part_length=85 # index varchar part length
-max_row_length=2025 # max table row length (without blobs)
-max_row_length_with_null=2025 # table row length with nulls (without blobs)
-max_select_alias_name=64 # select alias name length
-max_stack_expression=14 # stacked expressions
-max_table_alias_name=253 # table alias name length
-max_table_name=64 # table name length
-max_text_size=17 # max text or blob size
-max_unique_index=32 # unique indexes
-max_varchar_size=85 # max varchar() size
-minus=no # minus
-minus_neg=yes # Calculate 1--1
-multi_drop=yes # many tables to drop table
-multi_strings=no # Multiple line strings
-multi_table_delete=yes # DELETE FROM table1,table2...
-multi_table_update=yes # Update with many tables
+#This file is automaticly generated by crash-me 1.37 + +NEG=yes # update of column= -column +alter_add_col=yes # Alter table add column +alter_add_multi_col=without add # Alter table add many columns +alter_alter_col=no # Alter table alter column +alter_change_col=no # Alter table change column +alter_drop_col=yes # Alter table drop column +alter_modify_col=no # Alter table modify column +alter_rename_table=no # Alter table rename table +atomic_updates=no # atomic updates +binary_items=yes # binary items (0x41) +case_insensitive_strings=yes # case insensitive compare +char_is_space_filled=no # char are space filled +column_alias=yes # Column alias +columns_in_group_by=11 # number of columns in group by +columns_in_order_by=11 # number of columns in order by +comment_#=no # # as comment +comment_--=no # -- as comment +comment_/**/=no # /* */ as comment +comment_//=no # // as comment +compute=no # Compute +connections=64 # Simultaneous connections +constraint_check=no # CHECK constraint +constraint_null=yes # NULL constraint (SyBase style) +crash_me_safe=no # crash me safe +crash_me_version=1.37 # crash me version +create_default=no # default value for column +create_default_func=no # default value function for column +create_if_not_exists=no # create table if not exists +create_index=yes # create index +create_table_select=no # create table from select +cross_join=no # cross join (same as from a,b) +date_as_string=error # String functions on date columns +date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates +date_zero=no # Supports 0000-00-00 dates +double_quotes=yes # Double '' as ' in strings +drop_if_exists=no # drop table if exists +drop_index=with 'ON' # drop index +end_colon=yes # allows end ';' +except=no # except +except_all=no # except all +float_int_expr=yes # mixing of integer and float in expression +foreign_key_syntax=no # foreign key syntax +full_outer_join=no # full outer join +func_extra_!=no # Function NOT as '!' in SELECT +func_extra_%=no # Function MOD as % +func_extra_&=error # Function & (bitwise and) +func_extra_&&=no # Function AND as '&&' +func_extra_<>=yes # Function <> in SELECT +func_extra_==yes # Function = +func_extra_add_months=no # Function ADD_MONTHS +func_extra_and_or=yes # Function AND and OR in SELECT +func_extra_atn2=no # Function ATN2 +func_extra_auto_num2string=no # Function automatic num->string convert +func_extra_auto_string2num=yes # Function automatic string->num convert +func_extra_between=yes # Function BETWEEN in SELECT +func_extra_binary_shifts=no # Function << and >> (bitwise shifts) +func_extra_bit_count=no # Function BIT_COUNT +func_extra_ceil=no # Function CEIL +func_extra_charindex=no # Function CHARINDEX +func_extra_chr=yes # Function CHR +func_extra_coalesce=no # Function COALESCE +func_extra_concat_as_+=yes # Function concatenation with + +func_extra_concat_list=no # Function CONCAT(list) +func_extra_convert=no # Function CONVERT +func_extra_cosh=no # Function COSH +func_extra_date_format=no # Function DATE_FORMAT +func_extra_dateadd=no # Function DATEADD +func_extra_datediff=no # Function DATEDIFF +func_extra_datename=no # Function DATENAME +func_extra_datepart=no # Function DATEPART +func_extra_elt=no # Function ELT +func_extra_encrypt=no # Function ENCRYPT +func_extra_field=no # Function FIELD +func_extra_format=error # Function FORMAT +func_extra_from_days=no # Function FROM_DAYS +func_extra_from_unixtime=no # Function FROM_UNIXTIME +func_extra_getdate=no # Function GETDATE +func_extra_greatest=no # Function GREATEST +func_extra_if=no # Function IF +func_extra_in_num=yes # Function IN on numbers in SELECT +func_extra_in_str=yes # Function IN on strings in SELECT +func_extra_initcap=no # Function INITCAP +func_extra_instr=yes # Function LOCATE as INSTR +func_extra_instr_oracle=no # Function INSTR (Oracle syntax) +func_extra_instrb=no # Function INSTRB +func_extra_interval=no # Function INTERVAL +func_extra_last_day=no # Function LAST_DAY +func_extra_last_insert_id=no # Function LAST_INSERT_ID +func_extra_least=no # Function LEAST +func_extra_lengthb=no # Function LENGTHB +func_extra_like=yes # Function LIKE in SELECT +func_extra_like_escape=no # Function LIKE ESCAPE in SELECT +func_extra_ln=no # Function LN +func_extra_log(m_n)=no # Function LOG(m,n) +func_extra_logn=no # Function LOGN +func_extra_lpad=no # Function LPAD +func_extra_mdy=no # Function MDY +func_extra_mid=yes # Function SUBSTRING as MID +func_extra_months_between=no # Function MONTHS_BETWEEN +func_extra_not=yes # Function NOT in SELECT +func_extra_not_between=yes # Function NOT BETWEEN in SELECT +func_extra_not_like=yes # Function NOT LIKE in SELECT +func_extra_odbc_convert=no # Function ODBC CONVERT +func_extra_password=no # Function PASSWORD +func_extra_patindex=no # Function PATINDEX +func_extra_period_add=no # Function PERIOD_ADD +func_extra_period_diff=no # Function PERIOD_DIFF +func_extra_pow=no # Function POW +func_extra_range=no # Function RANGE +func_extra_regexp=no # Function REGEXP in SELECT +func_extra_replicate=no # Function REPLICATE +func_extra_reverse=no # Function REVERSE +func_extra_root=no # Function ROOT +func_extra_round1=yes # Function ROUND(1 arg) +func_extra_rpad=no # Function RPAD +func_extra_sec_to_time=no # Function SEC_TO_TIME +func_extra_sinh=no # Function SINH +func_extra_str=no # Function STR +func_extra_strcmp=no # Function STRCMP +func_extra_stuff=no # Function STUFF +func_extra_substrb=no # Function SUBSTRB +func_extra_substring_index=no # Function SUBSTRING_INDEX +func_extra_sysdate=no # Function SYSDATE +func_extra_tanh=no # Function TANH +func_extra_time_to_sec=no # Function TIME_TO_SEC +func_extra_to_days=no # Function TO_DAYS +func_extra_translate=no # Function TRANSLATE +func_extra_trim_many_char=no # Function TRIM; Many char extension +func_extra_trim_substring=no # Function TRIM; Substring extension +func_extra_trunc=no # Function TRUNC +func_extra_uid=no # Function UID +func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP +func_extra_userenv=no # Function USERENV +func_extra_version=no # Function VERSION +func_extra_weekday=error # Function WEEKDAY +func_extra_|=no # Function | (bitwise or) +func_extra_||=no # Function OR as '||' +func_odbc_abs=yes # Function ABS +func_odbc_acos=no # Function ACOS +func_odbc_ascii=no # Function ASCII +func_odbc_asin=no # Function ASIN +func_odbc_atan=no # Function ATAN +func_odbc_atan2=no # Function ATAN2 +func_odbc_ceiling=no # Function CEILING +func_odbc_char=no # Function CHAR +func_odbc_concat=no # Function CONCAT(2 arg) +func_odbc_cos=yes # Function COS +func_odbc_cot=no # Function COT +func_odbc_curdate=no # Function CURDATE +func_odbc_curtime=no # Function CURTIME +func_odbc_database=no # Function DATABASE +func_odbc_dayname=no # Function DAYNAME +func_odbc_dayofmonth=no # Function DAYOFMONTH +func_odbc_dayofweek=no # Function DAYOFWEEK +func_odbc_dayofyear=no # Function DAYOFYEAR +func_odbc_degrees=no # Function DEGREES +func_odbc_difference=no # Function DIFFERENCE() +func_odbc_exp=yes # Function EXP +func_odbc_extract=no # Function EXTRACT +func_odbc_floor=no # Function FLOOR +func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT +func_odbc_hour=yes # Function HOUR +func_odbc_hour_time=no # Function ANSI HOUR +func_odbc_ifnull=no # Function IFNULL +func_odbc_insert=no # Function INSERT +func_odbc_lcase=yes # Function LCASE +func_odbc_left=yes # Function LEFT +func_odbc_length=no # Function REAL LENGTH +func_odbc_length_without_space=no # Function ODBC LENGTH +func_odbc_locate_2=no # Function LOCATE(2 arg) +func_odbc_locate_3=no # Function LOCATE(3 arg) +func_odbc_log=yes # Function LOG +func_odbc_log10=no # Function LOG10 +func_odbc_ltrim=yes # Function LTRIM +func_odbc_minute=yes # Function MINUTE +func_odbc_mod=no # Function MOD +func_odbc_month=yes # Function MONTH +func_odbc_monthname=no # Function MONTHNAME +func_odbc_now=yes # Function NOW +func_odbc_pi=no # Function PI +func_odbc_power=no # Function POWER +func_odbc_quarter=no # Function QUARTER +func_odbc_radians=no # Function RADIANS +func_odbc_rand=no # Function RAND +func_odbc_repeat=no # Function REPEAT +func_odbc_replace=no # Function REPLACE +func_odbc_right=yes # Function RIGHT +func_odbc_round=yes # Function ROUND(2 arg) +func_odbc_rtrim=yes # Function RTRIM +func_odbc_second=yes # Function SECOND +func_odbc_sign=no # Function SIGN +func_odbc_sin=yes # Function SIN +func_odbc_soundex=no # Function SOUNDEX +func_odbc_space=yes # Function SPACE +func_odbc_sqrt=no # Function SQRT +func_odbc_substring=no # Function ODBC SUBSTRING +func_odbc_tan=yes # Function TAN +func_odbc_timestampadd=no # Function TIMESTAMPADD +func_odbc_timestampdiff=no # Function TIMESTAMPDIFF +func_odbc_truncate=no # Function TRUNCATE +func_odbc_ucase=yes # Function UCASE +func_odbc_user()=no # Function USER() +func_odbc_week=no # Function WEEK +func_odbc_year=yes # Function YEAR +func_sql_+=yes # Function +, -, * and / +func_sql_bit_length=no # Function BIT_LENGTH +func_sql_case=no # Function CASE +func_sql_cast=no # Function CAST +func_sql_char_length=no # Function CHAR_LENGTH +func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant) +func_sql_character_length=no # Function CHARACTER_LENGTH +func_sql_concat_as_||=no # Function concatenation with || +func_sql_current_date=no # Function CURRENT_DATE +func_sql_current_time=no # Function CURRENT_TIME +func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP +func_sql_current_user=no # Function CURRENT_USER +func_sql_lower=no # Function LOWER +func_sql_octet_length=no # Function OCTET_LENGTH +func_sql_position=no # Function POSITION +func_sql_session_user=no # Function SESSION_USER +func_sql_substring=no # Function ANSI SQL SUBSTRING +func_sql_system_user=no # Function SYSTEM_USER +func_sql_trim=no # Function TRIM +func_sql_upper=no # Function UPPER +func_sql_user=no # Function USER +func_where_between=yes # Function BETWEEN +func_where_eq_all=yes # Function = ALL +func_where_eq_any=yes # Function = ANY +func_where_eq_some=yes # Function = SOME +func_where_exists=yes # Function EXISTS +func_where_in_num=yes # Function IN on numbers +func_where_like=yes # Function LIKE +func_where_like_escape=no # Function LIKE ESCAPE +func_where_match=no # Function MATCH +func_where_match_unique=no # Function MATCH UNIQUE +func_where_matches=no # Function MATCHES +func_where_not_between=yes # Function NOT BETWEEN +func_where_not_exists=yes # Function NOT EXISTS +func_where_not_like=yes # Function NOT LIKE +func_where_not_unique=no # Function NOT UNIQUE +func_where_unique=no # Function UNIQUE +functions=yes # Functions +group_by=yes # Group by +group_by_alias=no # Group by alias +group_by_null=yes # group on column with null values +group_by_position=no # Group by position +group_distinct_functions=no # Group functions with distinct +group_func_extra_bit_and=no # Group function BIT_AND +group_func_extra_bit_or=no # Group function BIT_OR +group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...) +group_func_extra_std=no # Group function STD +group_func_extra_stddev=no # Group function STDDEV +group_func_extra_variance=no # Group function VARIANCE +group_func_sql_avg=yes # Group function AVG +group_func_sql_count_*=yes # Group function COUNT (*) +group_func_sql_count_column=yes # Group function COUNT column name +group_func_sql_count_distinct=no # Group function COUNT(DISTINCT expr) +group_func_sql_max=yes # Group function MAX on numbers +group_func_sql_max_str=yes # Group function MAX on strings +group_func_sql_min=yes # Group function MIN on numbers +group_func_sql_min_str=yes # Group function MIN on strings +group_func_sql_sum=yes # Group function SUM +group_functions=yes # Group functions +having=yes # Having +having_with_alias=no # Having on alias +having_with_group=yes # Having with group function +ignore_end_space=yes # ignore end space in compare +index_in_create=no # index in create table +index_namespace=yes # different namespace for index +index_parts=no # index on column part (extension) +insert_empty_string=yes # insert empty string +insert_select=no # insert INTO ... SELECT ... +insert_with_set=no # INSERT with set syntax +intersect=no # intersect +intersect_all=no # intersect all +join_tables=32 # tables in join +left_outer_join=yes # left outer join +left_outer_join_using=no # left outer join using +like_with_column=yes # column LIKE column +like_with_number=yes # LIKE on numbers +lock_tables=no # lock table +logical_value=-1 # Value of logical operation (1=1) +max_big_expressions=1 # big expressions +max_char_size=255 # max char() size +max_column_name=59 # column name length +max_columns=255 # Columns in table +max_conditions=97 # OR and AND in WHERE +max_expressions=+10000 # simple expressions +max_index=32 # max index +max_index_length=2026 # index length +max_index_name=64 # index name length +max_index_part_length=255 # max index part length +max_index_parts=10 # index parts +max_index_varchar_part_length=85 # index varchar part length +max_row_length=2025 # max table row length (without blobs) +max_row_length_with_null=2025 # table row length with nulls (without blobs) +max_select_alias_name=64 # select alias name length +max_stack_expression=14 # stacked expressions +max_table_alias_name=253 # table alias name length +max_table_name=64 # table name length +max_text_size=17 # max text or blob size +max_unique_index=32 # unique indexes +max_varchar_size=85 # max varchar() size +minus=no # minus +minus_neg=yes # Calculate 1--1 +multi_drop=yes # many tables to drop table +multi_strings=no # Multiple line strings +multi_table_delete=yes # DELETE FROM table1,table2... +multi_table_update=yes # Update with many tables insert_multi_value=no # Value lists in INSERT -natural_join=no # natural join
-natural_left_outer_join=no # natural left outer join
-no_primary_key=yes # Tables without primary key
-null_in_index=yes # null in index
-null_in_unique=yes # null in unique
-odbc_left_outer_join=yes # left outer join odbc style
-operating_system=Windows 98 [Version 4.10.1998] # crash-me tested on
-order_by=yes # Order by
-order_by_alias=no # Order by alias
-order_by_function=yes # Order by function
-order_by_position=yes # Order by position
-order_by_remember_desc=no # Order by DESC is remembered
-primary_key_in_create=yes # primary key in create table
-query_size=16777216 # query size
-quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
-quote_ident_with_[=yes # [] as identifier quote
-quote_ident_with_`=yes # ` as identifier quote
-quote_with_"=no # Allows ' and " as string markers
-recursive_subqueries=49 # recursive subqueries
-remember_end_space=no # Remembers end space in char()
-remember_end_space_varchar=yes # Remembers end space in varchar()
-right_outer_join=yes # right outer join
-rowid=no # Type for row id
-select_constants=yes # Select constants
-select_limit=no # SELECT with LIMIT
-select_limit2=no # SELECT with LIMIT #,#
-select_string_size=516076 # constant string size in SELECT
-select_table_update=no # Update with sub select
-select_without_from=yes # SELECT without FROM
-server_version=Access 2000 # server version
-simple_joins=yes # ANSI SQL simple joins
-subqueries=yes # subqueries
-table_alias=yes # Table alias
-table_name_case=yes # case independent table names
-table_wildcard=yes # Select table_name.*
-tempoary_table=no # temporary tables
-transactions=yes # transactions
-type_extra_abstime=no # Type abstime
-type_extra_bfile=no # Type bfile
-type_extra_blob=no # Type blob
-type_extra_bool=no # Type bool
-type_extra_box=no # Type box
-type_extra_byte=yes # Type byte
-type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
-type_extra_circle=no # Type circle
-type_extra_clob=no # Type clob
-type_extra_datetime=yes # Type datetime
-type_extra_double=yes # Type double
-type_extra_enum(1_arg)=no # Type enum(1 arg)
-type_extra_float(2_arg)=no # Type float(2 arg)
-type_extra_float4=yes # Type float4
-type_extra_float8=yes # Type float8
-type_extra_image=yes # Type image
-type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
-type_extra_int1=no # Type int1
-type_extra_int2=no # Type int2
-type_extra_int3=no # Type int3
-type_extra_int4=no # Type int4
-type_extra_int8=no # Type int8
-type_extra_int_auto_increment=no # Type int not null auto_increment
-type_extra_int_unsigned=no # Type int unsigned
-type_extra_interval=no # Type interval
-type_extra_line=no # Type line
-type_extra_long=yes # Type long
-type_extra_long_raw=no # Type long raw
-type_extra_long_varbinary=no # Type long varbinary
-type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
-type_extra_lseg=no # Type lseg
-type_extra_mediumint=no # Type mediumint
-type_extra_mediumtext=no # Type mediumtext
-type_extra_middleint=no # Type middleint
-type_extra_mlslabel=no # Type mlslabel
-type_extra_money=yes # Type money
-type_extra_nclob=no # Type nclob
-type_extra_number=yes # Type number
-type_extra_number(1_arg)=no # Type number(1 arg)
-type_extra_number(2_arg)=no # Type number(2 arg)
-type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
-type_extra_path=no # Type path
-type_extra_point=no # Type point
-type_extra_polygon=no # Type polygon
-type_extra_raw(1_arg)=no # Type raw(1 arg)
-type_extra_reltime=no # Type reltime
-type_extra_rowid=no # Type rowid
-type_extra_serial=no # Type serial
-type_extra_set(1_arg)=no # Type set(1 arg)
-type_extra_smalldatetime=no # Type smalldatetime
-type_extra_smallfloat=no # Type smallfloat
-type_extra_smallmoney=no # Type smallmoney
-type_extra_text=yes # Type text
-type_extra_text(1_arg)=yes # Type text(1 arg)
-type_extra_timespan=no # Type timespan
-type_extra_uint=no # Type uint
-type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
-type_extra_year=no # Type year
-type_odbc_bigint=no # Type bigint
-type_odbc_binary(1_arg)=yes # Type binary(1 arg)
-type_odbc_datetime=yes # Type datetime
-type_odbc_tinyint=no # Type tinyint
-type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
-type_sql_bit=yes # Type bit
-type_sql_bit(1_arg)=no # Type bit(1 arg)
-type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
-type_sql_char(1_arg)=yes # Type char(1 arg)
-type_sql_char_varying(1_arg)=no # Type char varying(1 arg)
-type_sql_character(1_arg)=no # Type character(1 arg)
-type_sql_character_varying(1_arg)=no # Type character varying(1 arg)
-type_sql_date=yes # Type date
-type_sql_dec(2_arg)=no # Type dec(2 arg)
-type_sql_decimal(2_arg)=no # Type decimal(2 arg)
-type_sql_double_precision=no # Type double precision
-type_sql_float=yes # Type float
-type_sql_float(1_arg)=no # Type float(1 arg)
-type_sql_int=yes # Type int
-type_sql_integer=yes # Type integer
-type_sql_interval_day_to_second=no # Type interval day to second
-type_sql_interval_year=no # Type interval year
-type_sql_interval_year_to_month=no # Type interval year to month
-type_sql_national_char_varying(1_arg)=no # Type national char varying(1 arg)
-type_sql_national_character(1_arg)=no # Type national character(1 arg)
-type_sql_national_character_varying(1_arg)=no # Type national character varying(1 arg)
-type_sql_nchar(1_arg)=no # Type nchar(1 arg)
-type_sql_nchar_varying(1_arg)=no # Type nchar varying(1 arg)
-type_sql_numeric(2_arg)=no # Type numeric(2 arg)
-type_sql_real=yes # Type real
-type_sql_smallint=yes # Type smallint
-type_sql_time=yes # Type time
-type_sql_timestamp=yes # Type timestamp
-type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
-type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
-union=yes # union
-union_all=yes # union all
-unique_in_create=yes # unique in create table
-unique_null_in_create=yes # unique null in create
-views=no # views
-where_string_size=258035 # constant string size in where
+natural_join=no # natural join +natural_left_outer_join=no # natural left outer join +no_primary_key=yes # Tables without primary key +null_in_index=yes # null in index +null_in_unique=yes # null in unique +odbc_left_outer_join=yes # left outer join odbc style +operating_system=Windows 98 [Version 4.10.1998] # crash-me tested on +order_by=yes # Order by +order_by_alias=no # Order by alias +order_by_function=yes # Order by function +order_by_position=yes # Order by position +order_by_remember_desc=no # Order by DESC is remembered +primary_key_in_create=yes # primary key in create table +query_size=16777216 # query size +quote_ident_with_"=yes # " as identifier quote (ANSI SQL) +quote_ident_with_[=yes # [] as identifier quote +quote_ident_with_`=yes # ` as identifier quote +quote_with_"=no # Allows ' and " as string markers +recursive_subqueries=49 # recursive subqueries +remember_end_space=no # Remembers end space in char() +remember_end_space_varchar=yes # Remembers end space in varchar() +right_outer_join=yes # right outer join +rowid=no # Type for row id +select_constants=yes # Select constants +select_limit=no # SELECT with LIMIT +select_limit2=no # SELECT with LIMIT #,# +select_string_size=516076 # constant string size in SELECT +select_table_update=no # Update with sub select +select_without_from=yes # SELECT without FROM +server_version=Access 2000 # server version +simple_joins=yes # ANSI SQL simple joins +subqueries=yes # subqueries +table_alias=yes # Table alias +table_name_case=yes # case independent table names +table_wildcard=yes # Select table_name.* +tempoary_table=no # temporary tables +transactions=yes # transactions +type_extra_abstime=no # Type abstime +type_extra_bfile=no # Type bfile +type_extra_blob=no # Type blob +type_extra_bool=no # Type bool +type_extra_box=no # Type box +type_extra_byte=yes # Type byte +type_extra_char(1_arg)_binary=no # Type char(1 arg) binary +type_extra_circle=no # Type circle +type_extra_clob=no # Type clob +type_extra_datetime=yes # Type datetime +type_extra_double=yes # Type double +type_extra_enum(1_arg)=no # Type enum(1 arg) +type_extra_float(2_arg)=no # Type float(2 arg) +type_extra_float4=yes # Type float4 +type_extra_float8=yes # Type float8 +type_extra_image=yes # Type image +type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill +type_extra_int1=no # Type int1 +type_extra_int2=no # Type int2 +type_extra_int3=no # Type int3 +type_extra_int4=no # Type int4 +type_extra_int8=no # Type int8 +type_extra_int_auto_increment=no # Type int not null auto_increment +type_extra_int_unsigned=no # Type int unsigned +type_extra_interval=no # Type interval +type_extra_line=no # Type line +type_extra_long=yes # Type long +type_extra_long_raw=no # Type long raw +type_extra_long_varbinary=no # Type long varbinary +type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg) +type_extra_lseg=no # Type lseg +type_extra_mediumint=no # Type mediumint +type_extra_mediumtext=no # Type mediumtext +type_extra_middleint=no # Type middleint +type_extra_mlslabel=no # Type mlslabel +type_extra_money=yes # Type money +type_extra_nclob=no # Type nclob +type_extra_number=yes # Type number +type_extra_number(1_arg)=no # Type number(1 arg) +type_extra_number(2_arg)=no # Type number(2 arg) +type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg) +type_extra_path=no # Type path +type_extra_point=no # Type point +type_extra_polygon=no # Type polygon +type_extra_raw(1_arg)=no # Type raw(1 arg) +type_extra_reltime=no # Type reltime +type_extra_rowid=no # Type rowid +type_extra_serial=no # Type serial +type_extra_set(1_arg)=no # Type set(1 arg) +type_extra_smalldatetime=no # Type smalldatetime +type_extra_smallfloat=no # Type smallfloat +type_extra_smallmoney=no # Type smallmoney +type_extra_text=yes # Type text +type_extra_text(1_arg)=yes # Type text(1 arg) +type_extra_timespan=no # Type timespan +type_extra_uint=no # Type uint +type_extra_varchar2(1_arg)=no # Type varchar2(1 arg) +type_extra_year=no # Type year +type_odbc_bigint=no # Type bigint +type_odbc_binary(1_arg)=yes # Type binary(1 arg) +type_odbc_datetime=yes # Type datetime +type_odbc_tinyint=no # Type tinyint +type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg) +type_sql_bit=yes # Type bit +type_sql_bit(1_arg)=no # Type bit(1 arg) +type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg) +type_sql_char(1_arg)=yes # Type char(1 arg) +type_sql_char_varying(1_arg)=no # Type char varying(1 arg) +type_sql_character(1_arg)=no # Type character(1 arg) +type_sql_character_varying(1_arg)=no # Type character varying(1 arg) +type_sql_date=yes # Type date +type_sql_dec(2_arg)=no # Type dec(2 arg) +type_sql_decimal(2_arg)=no # Type decimal(2 arg) +type_sql_double_precision=no # Type double precision +type_sql_float=yes # Type float +type_sql_float(1_arg)=no # Type float(1 arg) +type_sql_int=yes # Type int +type_sql_integer=yes # Type integer +type_sql_interval_day_to_second=no # Type interval day to second +type_sql_interval_year=no # Type interval year +type_sql_interval_year_to_month=no # Type interval year to month +type_sql_national_char_varying(1_arg)=no # Type national char varying(1 arg) +type_sql_national_character(1_arg)=no # Type national character(1 arg) +type_sql_national_character_varying(1_arg)=no # Type national character varying(1 arg) +type_sql_nchar(1_arg)=no # Type nchar(1 arg) +type_sql_nchar_varying(1_arg)=no # Type nchar varying(1 arg) +type_sql_numeric(2_arg)=no # Type numeric(2 arg) +type_sql_real=yes # Type real +type_sql_smallint=yes # Type smallint +type_sql_time=yes # Type time +type_sql_timestamp=yes # Type timestamp +type_sql_timestamp_with_time_zone=no # Type timestamp with time zone +type_sql_varchar(1_arg)=yes # Type varchar(1 arg) +union=yes # union +union_all=yes # union all +unique_in_create=yes # unique in create table +unique_null_in_create=yes # unique null in create +views=no # views +where_string_size=258035 # constant string size in where |