summaryrefslogtreecommitdiff
path: root/sql-bench/print-limit-table
diff options
context:
space:
mode:
Diffstat (limited to 'sql-bench/print-limit-table')
-rwxr-xr-xsql-bench/print-limit-table364
1 files changed, 0 insertions, 364 deletions
diff --git a/sql-bench/print-limit-table b/sql-bench/print-limit-table
deleted file mode 100755
index 53b62ae3397..00000000000
--- a/sql-bench/print-limit-table
+++ /dev/null
@@ -1,364 +0,0 @@
-#!/usr/bin/perl
-# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this library; if not, write to the Free
-# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-# MA 02111-1307, USA
-#
-# Output a html table with a compare of all servers
-#
-$cmp_server="mysql"; # Get limit names from here
-$full_html=1;
-$opt_txt=0;
-
-if ($#ARGV < 0)
-{
- @ARGV=glob("limits/*.cfg");
- $skip_header=0;
-}
-else
-{
- $skip_header=1;
-}
-
-foreach (@ARGV)
-{
- /([^\/\.]*)\.cfg$/;
- $server=$1;
- if ($server eq $cmp_server)
- {
- unshift(@limits,read_config_data($server,$_));
- }
- else
- {
- push(@limits,read_config_data($server,$_));
- }
-}
-
-@global_limits= sort keys(%all_limits);
-find_match('group_functions|functions'); # Don't report these
-
-if ($full_html)
-{
- if (!$skip_header)
- {
- print "<!doctype HTML public \"-//W3O//DTD W3 HTML3.0//EN\"><HTML>";
- }
- print <<EOF;
-<!doctype HTML public \"-//W3O//DTD W3 HTML3.0//EN\"><HTML>
-<HEAD><TITLE>Database comparison table</TITLE></HEAD>
-<BODY>
-<center><h3>Database comparison table generated with <B>crash-me</B></h3></center>
-<table><tr><td><IMG SRC="icons/mysql-03.gif" ALT=logo></td>
-<td>You can get a copy of <B>crash-me</B> from the MySQL 3.23 distribution at
-<A HREF="http://www.mysql.com">http://www.mysql.com</A>.
-</td></tr></table>
-<br>
-<strong>crash-me</strong> is a program that automatically detects
-limits and capabilities in a SQL server. We at TCX have worked very
-hard to make crash-me as fair and accurate as possible, but there is
-always a small possibility that some particular tests fails for some
-database, even if the database has the capability. We are always
-willing to correct this as soon as this comes to our attention. Some
-tests may fail because the database in questions does not follow
-<B>ANSI SQL 99</B> or <B>ODBC 3.0</B> but in this case we regard this
-as a failure in the database.
-<br><br>
-Note that crash-me test the <B>ODBC</B> functionality by executing
-SQL commands through the perl DBD driver. As some SQL servers implements
-the <B>ODBC</B> functionality in the <B>ODBC</B> driver, crash-me may
-tell you that the SQL server doesn\'t support some functionality, even
-if this is supported when you are using the SQL server through <B>ODBC</B>.
-<br><br>
-Note that even if crash-me reports that some feature is missing, not
-supported, or doesn\'t work it doesn\'t mean that the SQL server
-doesn\'t follow the SQL standard or that you can\'t do the operation
-in some other way. crash-me just tells you how the SQL server works
-if you send it some specific query. The result is however often useful
-for applications writers that tries to write portable code and needs to be
-aware of the differences between different SQL servers.
-<br><br>
-TCX is trying to add as much tests to the crash-me program as they can
-but it\'s always possible that some database vendor specific functions
-/ queries aren\'t tested. If you find some entries not tested on a
-database please let us know and try to patch the crash-me program your
-self or give us some example queries so we can add those entries. We
-are always open for suggestions for adding things to the crash-me
-program. The crash-me program is also our input reference for the
-MySQL benchmark program.<br>
-
-<B>Note:</B>
-The crash-me table is generated from databases started with default
-parameters. If this is not the case, this is noted in the comment row.
-Some detected limits may also be configurable, OS dependent, depend of the
-Perl DBI driver or depending on the license of the used database version.
-<BR><BR>
-The following markers are used in the comparison table
-<table border=1>
-<tr><th>Marker</th><th>Description</th></tr>
-<tr><td><IMG SRC=\"images/ok.gif\" WIDTH=20 HEIGHT=16 ALT=\"yes\"></td>
-<td>Function is supported</td></tr>
-<tr><td><IMG SRC=\"images/no.gif\" WIDTH=14 HEIGHT=14 ALT=\"no\"></td>
-<td>Function is not supported</td></tr>
-<tr><td><IMG SRC=\"images/error.gif\" WIDTH=20 HEIGHT=16 ALT=\"error\"></td>
-<td>Function exists but didn\'t return expected result. This usually means that
-the database is using some non standard extension for the option in question</td></tr>
-<tr><td>ignored</td><td>Function doesn\'t give an error from the server but it
-doesn\'t do anything. One can probably do the same action with some other
-command</td></tr>
-<tr><td>nonstandard</td><td>Function exists but doesn\'t work according to
-<B>ANSI SQL 92</B> or <B>ODBC 3.0</B></td></tr>
-<tr><td>&nbsp;</td><td>Not relevant or not tested with the database</td></tr>
-<tr><td>+number</td><td>At least <b>number</b> operations is supported</td></tr>
-<tr><td><IMG SRC=\"images/warning.gif\" WIDTH=28 HEIGHT=28 ALT=\"warning\"></td>
-<td><B>Anyone with normal access to the database server can take it down, possible
-forever!</B></td> </table>
-
-<center><h3>The <B>crash-me</B> comparisons</h3></center>
-EOF
-}
-
-print "<TABLE BORDER=2><TR ALIGN=left>\n";
-#
-# printer server names
-#
-
-$columns=$#limits+2;
-print "<th>Function</th>\n";
-foreach $server (@limits)
-{
- print "<td>$server->[1]->{'server_version'}</td>";
- $server->[1]->{'server_version'} =~ /^(\S*)/;
- push(@server_names,$1);
-}
-find_match("server_version"); # Mark used
-print "</tr>\n";
-
-print_match("Crash-me information",'crash_me|operating_system|user_comment',undef(),1);
-print_match("ANSI SQL 92 types","type_sql");
-print_match("ODBC 3.0 types","type_odbc");
-print_match("Other types","type_extra");
-print_match("Constraints and type modifiers","constraint|foreign|primary|unique|default","alter|max_unique");
-print_match("ANSI SQL 92 functions","func_sql","group");
-print_match("ODBC 3.0 functions","func_odbc","group");
-print_match("Other functions","func_extra","group");
-print_match("Functions in WHERE","func_where","group");
-print_match("ANSI SQL 92 group functions","group_func_sql");
-print_match("Other group functions","group_func");
-print_match("Function use","NEG|minus_neg|like|null.*expr");
-print_match("Order by and group by","order|having|group");
-print_match("Join methods",'join|subqueries|multi_table|select_table_update');
-print_match("String handling","string|select_constant|quote_with|double_quotes|end_space");
-print_match("Quoting","quote");
-print_match("Name limits","name","alter");
-print_match("Index limits",'index|primary|unique');
-print_match("Type limits",'char|float|text_size|date|end_space','atomic');
-print_match("Expressions",'expression|conditions|select_limit|binary|hex|cast|logical|true_false');
-print_match("Comments",'comment');
-print_match("ALTER TABLE",'alter');
-print_match("CREATE and DROP",'create|drop|rowid|temporary|domains|truncate');
-print_match("SELECT",'alias|compute|select|table_wildcard');
-print_match("Sets",'intersect|minus|union|except');
-print_match("INSERT",'insert');
-print_options("Other features");
-print_match("Other limits",'\S');
-
-print "</table>\n";
-
-if ($full_html)
-{
- print <<EOF;
-<BR>
-This information is provided by TCX so one can get the real limitations from
-the database server (not the information from sales managers!). Hopefully the
-above information will make it easier for you to find a database server that
-has the functionality you need and that you can rely on!
-<BR><BR>
-TCX will continue to extend <b>crash-me</b> and add more database servers
-to the above chart. We are also very interested in new tests so if you have
-any suggestions, please mail us (or even better, send us code).
-<BR>
-We are also working on the <B>MySQL</B> <A HREF ="/benchmark.html">benchmark</A>
-to help users see how fast a database is when doing different typical things.
-<br>
-<IMG SRC="images/eyesleft.gif" HEIGHT=9 WIDTH=582 ALT="==============================================">
-<ADDRESS> You can direct questions about crash-me and the benchmark to the
-<A HREF=\"http://www.tcx.se/mail.html\">MySQL mailing list</A>.
-</ADDRESS>
-</BODY></HTML>
-EOF
-} exit 0;
-
-
-sub read_config_data
-{
- my ($server,$file)=@_;
- my (%limits,%prompts);
- open(CONFIG_FILE,"<$file") ||
- die "Can't open configure file $file\n";
- while (<CONFIG_FILE>)
- {
- chomp;
- if (/^(\S+)=([^\#]*[^\#\s])\s*(\# .*)*$/)
- {
- $all_limits{$1}=1;
- $limits{$1}=$2;
- $prompts{$1}=length($3) ? substr($3,2) : "";
- }
- elsif (!/^\s*$/ && !/^\#/)
- {
- die "Wrong config row: $_\n";
- }
- }
- close CONFIG_FILE;
- return ([$server,\%limits,\%prompts]);
-}
-
-
-sub find_match
-{
- my ($find,$find_not)=@_;
- my ($key,@res);
-
- foreach $key (@global_limits)
- {
- if ($key =~ /$find/ && (!defined($find_not) || !($key =~ /$find_not/)))
- {
- push(@res,$key);
- $key="";
- }
- }
- return @res;
-}
-
-
-sub print_match
-{
- my ($header,$match,$not_match,$no_server_names)=@_;
- my ($key);
- if ($opt_txt)
- {
- print "\n$header\n";
- }
- else
- {
- print "<tr><th colspan=$columns ALIGN=center>$header</th></tr>\n";
- }
- print_server_names() if (!$no_server_names);
- foreach $key (find_match($match,$not_match))
- {
- print_key($key,$key eq "crash_me_safe" ? 1: 0);
- }
-}
-
-
-sub print_options
-{
- my ($header)=@_;
- if ($opt_txt)
- {
- print "\n$header\n";
- }
- else
- {
- print "<tr><th colspan=$columns ALIGN=center>$header</th></tr>\n";
- }
- print_server_names();
- foreach $key (@global_limits)
- {
- if ($key && !($limits[0]->[1]{$key} =~ /^\d+$/))
- {
- print_key($key,0);
- $key="";
- }
- }
-}
-
-
-sub print_key
-{
- my ($key,$fatal)=@_;
- my ($i,$server,$option,$tmp);
- $option=$key;
- for ($i=0 ; $i < $columns ; $i++)
- {
- if ($limits[$i]->[2]{$key})
- {
- $option=$limits[$i]->[2]{$key};
- last;
- }
- }
- $option =~ s/>/&gt\;/g;
- $option =~ s/</&lt\;/g;
-
- if ($opt_txt)
- {
- print "\n$option\t";
- foreach $server (@limits)
- {
- $tmp=$server->[1]->{$key};
- $tmp="yes" if ($tmp eq "yes");
- $tmp="no" if ($tmp eq "no" && !$fatal);
- $tmp="warning" if ($tmp eq "no" && $fatal);
- $tmp="error" if ($tmp eq "error");
- $tmp="" if (!defined($tmp) || $tmp eq "");
- print "\t$tmp";
- }
- }
- else
- {
- $option =~ s/ /&nbsp;/g;
- print "<tr><td>$option</td>";
- foreach $server (@limits)
- {
- $tmp=$server->[1]->{$key};
- $tmp="<IMG SRC=\"images/ok.gif\" WIDTH=20 HEIGHT=16 ALT=\"yes\">" if ($tmp eq "yes" && !$fatal);
- $tmp="<IMG SRC=\"images/thumbs_up.gif\" ALT=\"yes\">" if ($tmp eq "yes" && $fatal);
- $tmp="<IMG SRC=\"images/no.gif\" WIDTH=14 HEIGHT=14 ALT=\"no\">" if ($tmp eq "no" && !$fatal);
- $tmp="<IMG SRC=\"images/warning.gif\" WIDTH=28 HEIGHT=28 ALT=\"warning\">" if ($tmp eq "no" && $fatal);
- $tmp="<IMG SRC=\"images/error.gif\" WIDTH=20 HEIGHT=16 ALT=\"error\">" if ($tmp eq "error");
- $tmp="&nbsp;" if (!defined($tmp) || $tmp eq "");
- print "<td>$tmp</td>";
- }
- print"</tr>\n";
- }
-}
-
-
-sub print_server_names
-{
- my ($server);
-
- if ($opt_txt)
- {
- my $tab;
- $tab="";
- foreach $server (@server_names)
- {
- print "$tab$server";
- $tab="\t";
- }
- print "\n";
- }
- else
- {
- print "<tr><th></th>";
- foreach $server (@server_names)
- {
- print "<th>$server</th>";
- }
- print "</tr>\n";
- }
-}
-