diff options
author | unknown <vva@genie.(none)> | 2002-10-28 17:44:19 +0400 |
---|---|---|
committer | unknown <vva@genie.(none)> | 2002-10-28 17:44:19 +0400 |
commit | fc4c9c01ee8105888b75f01728f651c4c496cc22 (patch) | |
tree | 79f4355d0503e7a386a562644189da5ab9c08b60 /scripts | |
parent | d2c7f44ff638ab28970f25baccc87210388588cd (diff) | |
download | mariadb-git-fc4c9c01ee8105888b75f01728f651c4c496cc22.tar.gz |
add help command on server side
include/mysqld_error.h:
add error for corrupt help db
scripts/Makefile.am:
add script for fill help db
scripts/mysql_install_db.sh:
modify for add help db
sql/Makefile.am:
modify for add sql_help.cc
sql/lex.h:
add help command
sql/mysql_priv.h:
add mysqld_help function declaration
sql/share/czech/errmsg.txt:
add message for help-db error
sql/share/danish/errmsg.txt:
add message for help-db error
sql/share/dutch/errmsg.txt:
add message for help-db error
sql/share/english/errmsg.txt:
add message for help-db error
sql/share/estonian/errmsg.txt:
add message for help-db error
sql/share/french/errmsg.txt:
add message for help-db error
sql/share/german/errmsg.txt:
add message for help-db error
sql/share/greek/errmsg.txt:
add message for help-db error
sql/share/hungarian/errmsg.txt:
add message for help-db error
sql/share/italian/errmsg.txt:
add message for help-db error
sql/share/japanese/errmsg.txt:
add message for help-db error
sql/share/korean/errmsg.txt:
add message for help-db error
sql/share/norwegian-ny/errmsg.txt:
add message for help-db error
sql/share/norwegian/errmsg.txt:
add message for help-db error
sql/share/polish/errmsg.txt:
add message for help-db error
sql/share/portuguese/errmsg.txt:
add message for help-db error
sql/share/romanian/errmsg.txt:
add message for help-db error
sql/share/russian/errmsg.txt:
add message for help-db error
sql/share/serbian/errmsg.txt:
add message for help-db error
sql/share/slovak/errmsg.txt:
add message for help-db error
sql/share/spanish/errmsg.txt:
add message for help-db error
sql/share/swedish/errmsg.txt:
add message for help-db error
sql/share/ukrainian/errmsg.txt:
add message for help-db error
sql/sql_lex.h:
add SQLCOM_END
and help_arg in Lex
sql/sql_parse.cc:
add SQLCOM_HELP handler
sql/sql_yacc.yy:
add help command
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/Makefile.am | 14 | ||||
-rw-r--r-- | scripts/fill_func_tables.sh | 234 | ||||
-rw-r--r-- | scripts/mysql_install_db.sh | 7 |
3 files changed, 250 insertions, 5 deletions
diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 1469f3f2f2d..72c869f3f64 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -52,11 +52,13 @@ EXTRA_SCRIPTS = make_binary_distribution.sh \ mysql_explain_log.sh \ mysqld_multi.sh \ mysql_tableinfo.sh \ - mysqld_safe.sh + mysqld_safe.sh \ + fill_func_tables.sh EXTRA_DIST = $(EXTRA_SCRIPTS) \ mysqlaccess.conf \ - mysqlbug + mysqlbug \ + fill_func_tables.sql pkgdata_DATA = make_binary_distribution @@ -76,7 +78,8 @@ CLEANFILES = @server_scripts@ \ mysql_find_rows \ mysqlhotcopy \ mysqldumpslow \ - mysqld_multi + mysqld_multi \ + fill_func_tables.sql SUPERCLEANFILES = mysqlbug @@ -127,3 +130,8 @@ SUFFIXES = .sh # Don't update the files from bitkeeper %::SCCS/s.% + +all: fill_func_tables.sql + +fill_func_tables.sql: fill_func_tables ../Docs/manual.texi + ./fill_func_tables < ../Docs/manual.texi > fill_func_tables.sql
\ No newline at end of file diff --git a/scripts/fill_func_tables.sh b/scripts/fill_func_tables.sh new file mode 100644 index 00000000000..9831e68df27 --- /dev/null +++ b/scripts/fill_func_tables.sh @@ -0,0 +1,234 @@ +#!@PERL@ +# fill_func_tables - parse ../Docs/manual.texi + +# Original version by vva + +my $cat_name= ""; +my $func_name= ""; +my $text= ""; +my $example= ""; + +local $mode= ""; + +sub prepare_name +{ + my ($a)= @_; + + $a =~ s/(\@itemize \@bullet)/ /g; + $a =~ s/(\@end itemize)/ /g; + $a =~ s/(\@end multitable)/ /g; + $a =~ s/(\@end table)/ /g; + $a =~ s/(\@cindex(.*?)\n)/ /g; + $a =~ s/(\@multitable \@columnfractions(.*?)\n)/ /g; + $a =~ s/(\@node(.*?)\n)/ /g; + $a =~ s/(\@tab)/\t/g; + $a =~ s/\@item/ /g; + $a =~ s/\@code\{((.|\n)+?)\}/$1/go; + $a =~ s/\@strong\{(.+?)\}/$1/go; + $a =~ s/\@samp\{(.+?)\}/$1/go; + $a =~ s/\@emph\{((.|\n)+?)\}/\/$1\//go; + $a =~ s/\@xref\{((.|\n)+?)\}/See also : [$1]/go; + $a =~ s/\@ref\{((.|\n)+?)\}/[$1]/go; + $a =~ s/\'/\'\'/g; + $a =~ s/\\/\\\\/g; + $a =~ s/\`/\`\`/g; + + $a =~ s/\@table \@code/ /g; + + $a =~ s/\(\)//g; + + $a =~ s/((\w|\s)+)\(([\+-=><\/%*!<>\s]+)\)/$3/gxs; #$a =~ s/((\w|\s)+)\(([\+-=><\/%*!<>\s]+)\)/$3 $1/gxs; + $a =~ s/([\+-=><\/%*!<>\s]+)\(((\w|\s)+)\)/$1/gxs;#$a =~ s/([\+-=><\/%*!<>\s]+)\(((\w|\s)+)\)/$1 $2/gxs; + $a =~ s/((\w|\s)+)\((.+)\)/$1/gxs; + + return $a; +} + +sub prepare_text +{ + my ($a)= @_; + + $a =~ s/(\@itemize \@bullet)/ /g; + $a =~ s/(\@end itemize)/ /g; + $a =~ s/(\@end multitable)/ /g; + $a =~ s/(\@end table)/ /g; + $a =~ s/(\@cindex(.*?)\n)/ /g; + $a =~ s/(\@multitable \@columnfractions(.*?)\n)/ /g; + $a =~ s/(\@node(.*?)\n)/ /g; + $a =~ s/(\@tab)/\t/g; + $a =~ s/\@itemx/ /g; + $a =~ s/\@item/ /g; + $a =~ s/\@code\{((.|\n)+?)\}/$1/go; + $a =~ s/\@strong\{(.+?)\}/$1/go; + $a =~ s/\@samp\{(.+?)\}/$1/go; + $a =~ s/\@emph\{((.|\n)+?)\}/\/$1\//go; + $a =~ s/\@xref\{((.|\n)+?)\}/See also : [$1]/go; + $a =~ s/\@ref\{((.|\n)+?)\}/[$1]/go; + $a =~ s/\'/\'\'/g; + $a =~ s/\\/\\\\/g; + $a =~ s/\`/\`\`/g; + $a =~ s/(\n*?)$//g; + $a =~ s/\n/\\n/g; + + $a =~ s/\@table \@code/ /g; + + return $a; +} + +sub prepare_example +{ + my ($a)= @_; + + $a =~ s/\'/\'\'/g; + $a =~ s/\\/\\\\/g; + $a =~ s/\`/\`\`/g; + $a =~ s/(\n*?)$//g; + $a =~ s/\n/\\n/g; + + return $a; +} + +sub flush_all +{ + my ($mode) = @_; + + if ($mode eq ""){return;} + + $func_name= prepare_name($func_name); + $text= prepare_text($text); + $example= prepare_example($example); + + if ($func_name ne "" && $text ne "" && !($func_name =~ /[abcdefghikjlmnopqrstuvwxyz]/)){ + print "INSERT INTO function (name,description,example) VALUES ("; + print "'$func_name',"; + print "'$text',"; + print "'$example'"; + print ");\n"; + print "INSERT INTO function_category (cat_id,func_id) VALUES (\@cur_category,LAST_INSERT_ID());\n"; + } + + $func_name= ""; + $text= ""; + $example= ""; + $mode= ""; +} + +sub new_category +{ + my ($category)= @_; + + $category= prepare_text($category); + + print "INSERT INTO function_category_name (name) VALUES (\'$category\');\n"; + print "SELECT \@cur_category:=LAST_INSERT_ID();\n"; +} + +print "INSERT INTO db (Host,DB,User,Select_priv) VALUES ('%','mysql_help','','Y');\n"; +print "CREATE DATABASE mysql_help;\n"; + +print "USE mysql_help;\n"; + +print "DROP TABLE IF EXISTS function;\n"; +print "CREATE TABLE function ("; +print " func_id int unsigned not null auto_increment,"; +print " name varchar(64) not null,"; +print " url varchar(128) not null,"; +print " description text not null,"; +print " example text not null,"; +print " min_args tinyint not null,"; +print " max_args tinyint,"; +print " date_created datetime not null,"; +print " last_modified timestamp not null,"; +print " primary key (func_id)"; +print ") type=myisam;\n\n"; + +print "DROP TABLE IF EXISTS function_category_name;\n"; +print "CREATE TABLE function_category_name ("; +print " cat_id smallint unsigned not null auto_increment,"; +print " name varchar(64) not null,"; +print " url varchar(128) not null,"; +print " date_created datetime not null,"; +print " last_modified timestamp not null,"; +print " primary key (cat_id)"; +print ") type=myisam;\n\n"; + +print "DROP TABLE IF EXISTS function_category;\n"; +print "CREATE TABLE function_category ("; +print " cat_id smallint unsigned not null references function_category_name,"; +print " func_id int unsigned not null references function,"; +print " primary key (cat_id, func_id)"; +print ") type=myisam;\n\n"; + +print "DELETE FROM function_category_name;\n"; +print "DELETE FROM function_category;\n"; +print "DELETE FROM function;\n"; +print "SELECT \@cur_category:=null;\n\n"; + +my $in_section_6_3= 0; + +for(<>) +{ + if ($_=~/\@section Functions for Use in \@code{SELECT} and \@code{WHERE} Clauses/ && + !$in_section_6_3){ + $in_section_6_3= 1; + next; + } + + if ($_=~/\@section/ && $in_section_6_3){ + $in_section_6_3= 0; + next; + } + + if (!$in_section_6_3) { next; } + + my $c_name= ""; + + ($c_name)=m|\@c for_mysql_help,(.+?)$|; + if (!($c_name eq "") && ! ($c_name =~ m/$cat_name/i)){ + ($cat_name)= $c_name; + new_category($cat_name); + next; + } + + ($c_name)=m|\@subsubsection (.+?)$|; + if (!($c_name eq "") && ! ($c_name =~ m/$cat_name/i)){ + ($cat_name)= $c_name; + new_category($cat_name); + next; + } + + ($c_name)=m|\@subsection (.+?)$|; + if (!($c_name eq "") && ! ($c_name =~ m/$cat_name/i)){ + ($cat_name)= $c_name; + new_category($cat_name); + next; + } + + ($f_name)=m|\@findex (.+?)$|; + if (!($f_name eq "")){ + flush_all($mode); + ($func_name)= ($f_name); + $mode= "text"; + next; + } + + if ($_=~/\@example/ && ($mode eq "text")){ + $mode= "example"; + next; + } + + if ($_=~/\@end example/ && ($mode eq "example")){ + flush_all($mode); + next; + } + + if ($mode eq "text") { $text .= $_; } + if ($mode eq "example") { $example .= $_; } +} + + +print "DELETE function_category_name "; +print "FROM function_category_name "; +print "LEFT JOIN function_category ON function_category.cat_id=function_category_name.cat_id "; +print "WHERE function_category.cat_id is null;" + diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh index 2f27f5d7c1a..4822e816a12 100644 --- a/scripts/mysql_install_db.sh +++ b/scripts/mysql_install_db.sh @@ -307,8 +307,8 @@ then fi echo "Installing all prepared tables" -if eval "$execdir/mysqld $defaults --bootstrap --skip-grant-tables \ - --basedir=$basedir --datadir=$ldata --skip-innodb --skip-bdb $args" << END_OF_DATA +if ( + cat << END_OF_DATA use mysql; $c_d $i_d @@ -325,6 +325,9 @@ $i_f $c_t $c_c END_OF_DATA + cat fill_func_tables.sql +) | eval "$execdir/mysqld $defaults --bootstrap --skip-grant-tables \ + --basedir=$basedir --datadir=$ldata --skip-innodb --skip-bdb $args" then echo "" if test "$IN_RPM" -eq 0 |