⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 print-limit-table

📁 开启mysql的远程连接的方法 mysql-noinstall-5.1.6-alpha-win32.zip
💻
字号:
#!/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 theseif ($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 detectslimits and capabilities in a SQL server. We at TCX have worked veryhard to make crash-me as fair and accurate as possible, but there isalways a small possibility that some particular tests fails for somedatabase, even if the database has the capability. We are alwayswilling to correct this as soon as this comes to our attention.  Sometests 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 thisas a failure in the database.<br><br>Note that crash-me test the <B>ODBC</B> functionality by executingSQL commands through the perl DBD driver.  As some SQL servers implementsthe <B>ODBC</B> functionality in the <B>ODBC</B> driver, crash-me maytell you that the SQL server doesn\'t support some functionality, evenif 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, notsupported, or doesn\'t work it doesn\'t mean that the SQL serverdoesn\'t follow the SQL standard or that you can\'t do the operationin some other way.  crash-me just tells you how the SQL server worksif you send it some specific query.  The result is however often usefulfor applications writers that tries to write portable code and needs to beaware of the differences between different SQL servers.<br><br>TCX is trying to add as much tests to the crash-me program as they canbut it\'s always possible that some database vendor specific functions/ queries aren\'t tested. If you find some entries not tested on adatabase please let us know and try to patch the crash-me program yourself or give us some example queries so we can add those entries. Weare always open for suggestions for adding things to the crash-meprogram.  The crash-me program is also our input reference for theMySQL benchmark program.<br><B>Note:</B>The crash-me table is generated from databases started with defaultparameters.  If this is not the case, this is noted in the comment row.Some detected limits may also be configurable, OS dependent, depend of thePerl 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 thatthe 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 itdoesn\'t do anything.  One can probably do the same action with some othercommand</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, possibleforever!</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 usedprint "</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 fromthe database server (not the information from sales managers!). Hopefully theabove information will make it easier for you to find a database server thathas 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 serversto the above chart. We are also very interested in new tests so if you haveany 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";  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -