mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	Portability fixes Added new client function: mysql_get_server_version() New server help code (From Victor Vagin) Fixed wrong usage of binary() Disabled RTREE usage for now. BitKeeper/etc/ignore: added scripts/fill_help_tables.sql client/mysql.cc: Some fixes when using 'help' cmd-line-utils/libedit/compat.h: Portability fix cmd-line-utils/libedit/fgetln.c: Portability fix include/mysql.h: Added new client function: mysql_get_server_version() libmysql/libmysql.c: Added new client function: mysql_get_server_version() libmysqld/libmysqld.c: Fixed prototype mysql-test/install_test_db.sh: Added creation of help tables mysql-test/r/connect.result: Added help tables mysql-test/r/myisam.result: Test of RTREE index mysql-test/r/type_ranges.result: updated results mysql-test/t/myisam.test: Test of RTREE index mysql-test/t/type_ranges.test: Updated test mysys/charset.c: Indentation change mysys/my_symlink.c: Removed compiler warning scripts/fill_help_tables.sh: Update for new help tables sql/field.cc: Indentation changes sql/filesort.cc: Optimized character set usage sql/item_cmpfunc.cc: Fix wrong usage of binary() sql/item_cmpfunc.h: Fix wrong usage of binary() sql/item_func.cc: Fix wrong usage of binary() sql/item_func.h: Fix wrong usage of binary() sql/item_strfunc.cc: Fix wrong usage of binary() sql/item_sum.cc: Fix wrong usage of binary() sql/item_sum.h: Fix wrong usage of binary() sql/key.cc: Indentation change sql/lex.h: HELP -> HELP_SYM sql/mysql_priv.h: Make get_field() more general sql/password.c: Indentation change + variable initialisation moved sql/sql_acl.cc: Make get_field() more general sql/sql_base.cc: Added comments + assertion for double call to mysql_lock_tables sql/sql_cache.cc: Indentation changes sql/sql_class.h: Added need_strxnfrm to SORT_FIELD to be able to optimise character set handling in filesort sql/sql_derived.cc: Renamed variables sql/sql_help.cc: New help functions (from Victor Vagin) sql/sql_lex.cc: Removed variables that doesn't have to be initialized for each query sql/sql_lex.h: Removed not used variable (olap) sql/sql_parse.cc: Fixed (not fatal) access of unitialized memory Indentation / code cleanup sql/sql_prepare.cc: Indentaion cleanup sql/sql_table.cc: Disabled RTREE until 5.0 sql/sql_udf.cc: Make get_field() more general sql/sql_yacc.yy: Removed access to uninitialized memory Always set offset_limit and select_limit when using LIMIT (removed warnings) Allow usage of 'help week' sql/table.cc: Make get_field() more general More comments sql/table.h: Fixded type of TABLE_LIST->derived sql/time.cc: Stricter date / datetime handling (to be able to handle timestamps with days and microseconds) strings/ctype-bin.c: Added cha
		
			
				
	
	
		
			280 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			280 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| # Copyright (C) 1997-2002 MySQL AB
 | |
| # For a more info consult the file COPYRIGHT distributed with this file
 | |
| 
 | |
| # This scripts creates the privilege tables db, host, user, tables_priv,
 | |
| # columns_priv in the mysql database, as well as the func table.
 | |
| 
 | |
| if [ x$1 = x"-bin" ]; then
 | |
|  shift 1
 | |
|  execdir=../bin
 | |
|  bindir=../bin
 | |
|  BINARY_DIST=1
 | |
|  fix_bin=mysql-test
 | |
| else
 | |
|  execdir=../sql
 | |
|  bindir=../client
 | |
|  fix_bin=.
 | |
| fi
 | |
| 
 | |
| vardir=var
 | |
| logdir=$vardir/log
 | |
| if [ x$1 = x"-slave" ] 
 | |
| then
 | |
|  shift 1
 | |
|  data=var/slave-data
 | |
|  ldata=$fix_bin/var/slave-data
 | |
| else
 | |
|  data=var/master-data
 | |
|  ldata=$fix_bin/var/master-data
 | |
| fi
 | |
| 
 | |
| mdata=$data/mysql
 | |
| EXTRA_ARG=""
 | |
| 
 | |
| if test ! -x $execdir/mysqld
 | |
| then
 | |
|   echo "mysqld is missing - looked in $execdir"
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| # On IRIX hostname is in /usr/bsd so add this to the path
 | |
| PATH=$PATH:/usr/bsd
 | |
| hostname=`hostname`		# Install this too in the user table
 | |
| hostname="$hostname%"		# Fix if not fully qualified hostname
 | |
| 
 | |
| 
 | |
| #create the directories
 | |
| [ -d $vardir ] || mkdir $vardir
 | |
| [ -d $logdir ] || mkdir $logdir
 | |
| 
 | |
| # Create database directories mysql & test
 | |
| if [ -d $data ] ; then rm -rf $data ; fi
 | |
| mkdir $data $data/mysql $data/test 
 | |
| 
 | |
| #for error messages
 | |
| if [ x$BINARY_DIST = x1 ] ; then
 | |
| basedir=..
 | |
| else
 | |
| basedir=.
 | |
| EXTRA_ARG="--language=../sql/share/english/"
 | |
| fi
 | |
| 
 | |
| # Initialize variables
 | |
| c_d="" i_d=""
 | |
| c_h="" i_h=""
 | |
| c_u="" i_u=""
 | |
| c_f="" i_f=""
 | |
| c_t="" c_c=""
 | |
| c_hl="" c_hl=""
 | |
| c_hc="" c_hc=""
 | |
| c_clr="" c_clr=""
 | |
| 
 | |
| # Check for old tables
 | |
| if test ! -f $mdata/db.frm
 | |
| then
 | |
|   # mysqld --bootstrap wants one command/line
 | |
|   c_d="$c_d CREATE TABLE db ("
 | |
|   c_d="$c_d   Host char(60) DEFAULT '' NOT NULL,"
 | |
|   c_d="$c_d   Db char(64) DEFAULT '' NOT NULL,"
 | |
|   c_d="$c_d   User char(16) DEFAULT '' NOT NULL,"
 | |
|   c_d="$c_d   Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d   Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d   Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d   Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d   Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d   Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d   Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d   References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d   Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d   Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d   Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d   Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_d="$c_d PRIMARY KEY Host (Host,Db,User),"
 | |
|   c_d="$c_d KEY User (User)"
 | |
|   c_d="$c_d )"
 | |
|   c_d="$c_d comment='Database privileges';"
 | |
|   
 | |
|   i_d="INSERT INTO db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y');
 | |
|   INSERT INTO db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y');"
 | |
| fi
 | |
| 
 | |
| if test ! -f $mdata/host.frm
 | |
| then
 | |
|   c_h="$c_h CREATE TABLE host ("
 | |
|   c_h="$c_h  Host char(60) DEFAULT '' NOT NULL,"
 | |
|   c_h="$c_h  Db char(64) DEFAULT '' NOT NULL,"
 | |
|   c_h="$c_h  Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_h="$c_h  PRIMARY KEY Host (Host,Db)"
 | |
|   c_h="$c_h )"
 | |
|   c_h="$c_h comment='Host privileges;  Merged with database privileges';"
 | |
| fi
 | |
| 
 | |
| if test ! -f $mdata/user.frm
 | |
| then
 | |
|   c_u="$c_u CREATE TABLE user ("
 | |
|   c_u="$c_u   Host char(60) binary DEFAULT '' NOT NULL,"
 | |
|   c_u="$c_u   User char(16) binary DEFAULT '' NOT NULL,"
 | |
|   c_u="$c_u   Password char(45) binary DEFAULT '' NOT NULL,"
 | |
|   c_u="$c_u   Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Reload_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Shutdown_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Process_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   File_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Show_db_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Super_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Execute_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Repl_slave_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   Repl_client_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|   c_u="$c_u   ssl_type enum('','ANY','X509', 'SPECIFIED') DEFAULT '' NOT NULL,"
 | |
|   c_u="$c_u   ssl_cipher BLOB NOT NULL,"
 | |
|   c_u="$c_u   x509_issuer BLOB NOT NULL,"
 | |
|   c_u="$c_u   x509_subject BLOB NOT NULL,"
 | |
|   c_u="$c_u   max_questions int(11) unsigned DEFAULT 0  NOT NULL,"
 | |
|   c_u="$c_u   max_updates int(11) unsigned DEFAULT 0  NOT NULL,"
 | |
|   c_u="$c_u   max_connections int(11) unsigned DEFAULT 0  NOT NULL,"
 | |
|   c_u="$c_u   PRIMARY KEY Host (Host,User)"
 | |
|   c_u="$c_u )"
 | |
|   c_u="$c_u comment='Users and global privileges';"
 | |
| 
 | |
|   i_u="INSERT INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
 | |
|   INSERT INTO user VALUES ('$hostname','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
 | |
|   REPLACE INTO user VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
 | |
|   INSERT INTO user (host,user) values ('localhost','');
 | |
|   INSERT INTO user (host,user) values ('$hostname','');"
 | |
| fi
 | |
| 
 | |
| if test ! -f $mdata/func.frm
 | |
| then
 | |
|   c_f="$c_f CREATE TABLE func ("
 | |
|   c_f="$c_f   name char(64) DEFAULT '' NOT NULL,"
 | |
|   c_f="$c_f   ret tinyint(1) DEFAULT '0' NOT NULL,"
 | |
|   c_f="$c_f   dl char(128) DEFAULT '' NOT NULL,"
 | |
|   c_f="$c_f   type enum ('function','aggregate') NOT NULL,"
 | |
|   c_f="$c_f   PRIMARY KEY (name)"
 | |
|   c_f="$c_f )"
 | |
|   c_f="$c_f   comment='User defined functions';"
 | |
| fi
 | |
| 
 | |
| if test ! -f $mdata/tables_priv.frm
 | |
| then
 | |
|   c_t="$c_t CREATE TABLE tables_priv ("
 | |
|   c_t="$c_t   Host char(60) DEFAULT '' NOT NULL,"
 | |
|   c_t="$c_t   Db char(64) DEFAULT '' NOT NULL,"
 | |
|   c_t="$c_t   User char(16) DEFAULT '' NOT NULL,"
 | |
|   c_t="$c_t   Table_name char(60) DEFAULT '' NOT NULL,"
 | |
|   c_t="$c_t   Grantor char(77) DEFAULT '' NOT NULL,"
 | |
|   c_t="$c_t   Timestamp timestamp(14),"
 | |
|   c_t="$c_t   Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') DEFAULT '' NOT NULL,"
 | |
|   c_t="$c_t   Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
 | |
|   c_t="$c_t   PRIMARY KEY (Host,Db,User,Table_name),"
 | |
|   c_t="$c_t   KEY Grantor (Grantor)"
 | |
|   c_t="$c_t )"
 | |
|   c_t="$c_t   comment='Table privileges';"
 | |
| fi
 | |
| 
 | |
| if test ! -f $mdata/columns_priv.frm
 | |
| then
 | |
|   c_c="$c_c CREATE TABLE columns_priv ("
 | |
|   c_c="$c_c   Host char(60) DEFAULT '' NOT NULL,"
 | |
|   c_c="$c_c   Db char(64) DEFAULT '' NOT NULL,"
 | |
|   c_c="$c_c   User char(16) DEFAULT '' NOT NULL,"
 | |
|   c_c="$c_c   Table_name char(64) DEFAULT '' NOT NULL,"
 | |
|   c_c="$c_c   Column_name char(64) DEFAULT '' NOT NULL,"
 | |
|   c_c="$c_c   Timestamp timestamp(14),"
 | |
|   c_c="$c_c   Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
 | |
|   c_c="$c_c   PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
 | |
|   c_c="$c_c )"
 | |
|   c_c="$c_c   comment='Column privileges';"
 | |
| fi
 | |
| 
 | |
| if test ! -f $mdata/help_topic.frm
 | |
| then  
 | |
|   c_hl="$c_hl CREATE TABLE help_topic ("
 | |
|   c_hl="$c_hl   help_topic_id  int unsigned not null auto_increment,"
 | |
|   c_hl="$c_hl   name           varchar(64) not null,"
 | |
|   c_hl="$c_hl   description    text not null,"
 | |
|   c_hl="$c_hl   example        text not null,"
 | |
|   c_hl="$c_hl   url            varchar(128) not null,"
 | |
|   c_hl="$c_hl   primary key    (help_topic_id),"
 | |
|   c_hl="$c_hl   unique index (name)"
 | |
|   c_hl="$c_hl )"
 | |
|   c_hl="$c_hl   comment='help topics';"
 | |
| fi
 | |
| 
 | |
| if test ! -f $mdata/help_category.frm
 | |
| then  
 | |
|   c_clr="$c_clr CREATE TABLE help_category ("
 | |
|   c_clr="$c_clr   help_category_id smallint unsigned not null auto_increment,"
 | |
|   c_clr="$c_clr   name             varchar(64) not null,"
 | |
|   c_clr="$c_clr   url              varchar(128) not null,"
 | |
|   c_clr="$c_clr   primary key      (help_category_id),"
 | |
|   c_clr="$c_clr   unique index (name)"
 | |
|   c_clr="$c_clr )"
 | |
|   c_clr="$c_clr   comment='help topics-categories relation';"
 | |
| fi
 | |
| 
 | |
| if test ! -f $mdata/help_relation.frm
 | |
| then  
 | |
|   c_hc="$c_hc CREATE TABLE help_relation ("
 | |
|   c_hc="$c_hc   help_topic_id    int unsigned not null references help_topic,"
 | |
|   c_hc="$c_hc   help_category_id smallint unsigned not null references help_category,"
 | |
|   c_hc="$c_hc   primary key      (help_category_id, help_topic_id),"
 | |
|   c_hc="$c_hc )"
 | |
|   c_hc="$c_hc   comment='categories of help topics';"
 | |
| fi
 | |
| 
 | |
| mysqld_boot=" $execdir/mysqld --no-defaults --bootstrap --skip-grant-tables \
 | |
|     --basedir=$basedir --datadir=$ldata --skip-innodb --skip-bdb $EXTRA_ARG"
 | |
| echo "running $mysqld_boot"
 | |
| 
 | |
| if $mysqld_boot << END_OF_DATA
 | |
| use mysql;
 | |
| $c_d
 | |
| $i_d
 | |
| 
 | |
| $c_h
 | |
| $i_h
 | |
| 
 | |
| $c_u
 | |
| $i_u
 | |
| 
 | |
| $c_f
 | |
| $i_f
 | |
| 
 | |
| $c_t
 | |
| $c_c
 | |
| 
 | |
| $c_hl
 | |
| $c_hc
 | |
| $c_clr
 | |
| END_OF_DATA
 | |
| then
 | |
|     exit 0
 | |
| else
 | |
|     echo "Error executing mysqld --bootstrap"
 | |
|     exit 1
 | |
| fi
 |