summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorvva@genie.(none) <>2002-10-28 17:44:19 +0400
committervva@genie.(none) <>2002-10-28 17:44:19 +0400
commit9adf688be6bf5b73d39b58086c7756979d7053b1 (patch)
tree79f4355d0503e7a386a562644189da5ab9c08b60 /scripts
parent7777d2b819f05281d98cffcd15fdd0e166d0f391 (diff)
downloadmariadb-git-9adf688be6bf5b73d39b58086c7756979d7053b1.tar.gz
add help command on server side
Diffstat (limited to 'scripts')
-rw-r--r--scripts/Makefile.am14
-rw-r--r--scripts/fill_func_tables.sh234
-rw-r--r--scripts/mysql_install_db.sh7
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