diff options
Diffstat (limited to 'sql-bench/print-limit-table')
-rwxr-xr-x | sql-bench/print-limit-table | 364 |
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> </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/>/>\;/g; - $option =~ s/</<\;/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/ / /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=" " 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"; - } -} - |