#!/bin/sh
# Copyright (C) 2001-2005  Dmitry V. Levin <ldv@fandra.org>
#                          Anton Kachalov  <mouse@altlinux.org>
#			   Konstantin A. Lepikhov <lakostis@altlinux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

PROG="${0##*/}"

GetConf()
{
	local group=$1
	[ -n "$group" ] || group="$PROG"
	shift

	local name=$1
	shift

	local varname=$1
	[ -n "$varname" ] || varname="$name"
	shift

	local default=$1
	shift

	local val=`my_print_defaults "$group" |grep "^--$name=" |tail -1`
	if [ -n "$val" ]; then
		eval export $varname="${val#--$name=}"
	else
		eval export $varname="$default"
	fi
}

GetConf '' mysqld '' /usr/sbin/mysqld
GetConf mysqld chroot '' /var/lib/mysql
GetConf mysqld datadir '' /db
GetConf mysqld basedir '' /usr

if ! cd "$chroot$datadir"; then
	echo "Cannot change to datadir '$datadir'"
	exit 1
fi

hostname=`/bin/hostname`              # Install this too in the user table

# Initialize variables
create_db=
insert_db=
 
create_host=
insert_host=
 
create_user=
insert_user=
 
create_func=
 
create_tables_priv=
create_columns_priv=

create_help_topic=
create_help_category= 
create_help_keyword=
create_help_relation= 
fill_help_tables=

create_time_zone_name=
insert_time_zone_name=
create_time_zone=
create_time_zone_transition=
insert_time_zone_transition=
create_time_zone_transition_type= 
insert_time_zone_transition_type=
create_time_zone_leap_second= 
insert_time_zone_leap_second=

if [ ! -f $mdata/db.frm ]; then
  echo "Preparing db table"
  
  create_db="\
  CREATE TABLE db (\
    Host char(60) binary DEFAULT '' NOT NULL,\
    Db char(64) binary DEFAULT '' NOT NULL,\
    User char(16) binary DEFAULT '' NOT NULL,\
    Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
    Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
    Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
    Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
    Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
    Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
    Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
    References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
    Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
    Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
    Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
    Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
  PRIMARY KEY Host (Host,Db,User), KEY User (User)) engine=MyISAM \
  CHARACTER SET utf8 COLLATE utf8_bin \
  comment='Database privileges'"

  	insert_db="\
  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 [ ! -f $mdata/host.frm ]; then
	echo "Preparing host table"
	
	create_host="\
   CREATE TABLE host (\
   Host char(60) binary DEFAULT '' NOT NULL,\
   Db char(64) binary DEFAULT '' NOT NULL,\
   Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
   PRIMARY KEY Host (Host,Db)\
  ) engine=MyISAM \
  CHARACTER SET utf8 COLLATE utf8_bin\
  comment='Host privileges;  Merged with database privileges';"
fi

if [ ! -f $mdata/user.frm ]; then
	echo "Preparing user table"

	create_user="\
   CREATE TABLE user (\
     Host char(60) binary DEFAULT '' NOT NULL,\
     User char(16) binary DEFAULT '' NOT NULL,\
     Password char(41) binary DEFAULT '' NOT NULL,\
     Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Reload_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Shutdown_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Process_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci DEFAULT '' NOT NULL,\
     ssl_cipher BLOB NOT NULL,\
     x509_issuer BLOB NOT NULL,\
     x509_subject BLOB NOT NULL,\
     max_questions int(11) unsigned DEFAULT 0  NOT NULL,\
     max_updates int(11) unsigned DEFAULT 0  NOT NULL,\
     max_connections int(11) unsigned DEFAULT 0  NOT NULL,\
     PRIMARY KEY Host (Host,User)\
   ) engine=MyISAM\
   CHARACTER SET utf8 COLLATE utf8_bin\
   comment='Users and global privileges';"

   insert_user="\
  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);
    REPLACE 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);
    INSERT INTO user (host,user) values ('localhost','');
    INSERT INTO user (host,user) values ('$hostname','');"
    fi

    if [ ! -f $mdata/func.frm ]; then
	    echo "Preparing func table"

	    create_func="\
   CREATE TABLE func (\
     name char(64) binary DEFAULT '' NOT NULL,\
     ret tinyint(1) DEFAULT '0' NOT NULL,\
     dl char(128) DEFAULT '' NOT NULL,\
     type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL,\
     PRIMARY KEY (name)\
   ) engine=MyISAM\
   CHARACTER SET utf8 COLLATE utf8_bin\
     comment='User defined functions';"
fi

if [ ! -f $mdata/tables_priv.frm ]; then
	echo "Preparing tables_priv table"

	create_tables_priv="\
   CREATE TABLE tables_priv (\
     Host char(60) binary DEFAULT '' NOT NULL,\
     Db char(64) binary DEFAULT '' NOT NULL,\
     User char(16) binary DEFAULT '' NOT NULL,\
     Table_name char(64) binary DEFAULT '' NOT NULL,\
     Grantor char(77) DEFAULT '' NOT NULL,\
     Timestamp timestamp(14),\
     Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') COLLATE utf8_general_ci DEFAULT '' NOT NULL,\
     Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL,\
     PRIMARY KEY (Host,Db,User,Table_name),\
     KEY Grantor (Grantor)\
   ) engine=MyISAM\
   CHARACTER SET utf8 COLLATE utf8_bin\
     comment='Table privileges';"
fi

if [ ! -f $mdata/columns_priv.frm ]; then
	echo "Preparing columns_priv table"

	create_columns_priv="\
   CREATE TABLE columns_priv (\
     Host char(60) binary DEFAULT '' NOT NULL,\
     Db char(64) binary DEFAULT '' NOT NULL,\
     User char(16) binary DEFAULT '' NOT NULL,\
     Table_name char(64) binary DEFAULT '' NOT NULL,\
     Column_name char(64) binary DEFAULT '' NOT NULL,\
     Timestamp timestamp(14),\
     Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL,\
     PRIMARY KEY (Host,Db,User,Table_name,Column_name)\
   ) engine=MyISAM\
   CHARACTER SET utf8 COLLATE utf8_bin\
     comment='Column privileges';"
fi
 
if [ ! -f $mdata/help_topic.frm ]; then
	echo "Preparing help_topic table"

	create_help_topic="\
   CREATE TABLE help_topic (\
     help_topic_id    int unsigned not null,\
     name             varchar(64) not null,\
     help_category_id smallint unsigned not null,\
     description      text not null,\
     example          text not null,\
     url              varchar(128) not null,\
     primary key      (help_topic_id),\
     unique index     (name)\
   ) engine=MyISAM\
   CHARACTER SET utf8\
     comment='help topics';"
fi

if [ ! -f $mdata/help_category.frm ]; then
	echo "Preparing help_category table"

	create_help_category="\
   CREATE TABLE help_category (\
     help_category_id   smallint unsigned not null,\
     name               varchar(64) not null,\
     parent_category_id smallint unsigned null,\
     url                varchar(128) not null,\
     primary key        (help_category_id),\
     unique index       (name)\
   ) engine=MyISAM\
   CHARACTER SET utf8\
     comment='help categories';"
fi

if [ ! -f $mdata/help_keyword.frm ]; then
    echo "Preparing help_keyword table"

    create_help_keyword="\
   CREATE TABLE help_keyword (\
     help_keyword_id  int unsigned not null,\
     name             varchar(64) not null,\
     primary key      (help_keyword_id),\
     unique index     (name)\
   ) engine=MyISAM\
   CHARACTER SET utf8\
     comment='help keywords';"
fi
				    
if [ ! -f $mdata/help_relation.frm ]; then
   echo "Preparing help_relation table"

   create_help_relation="\
   CREATE TABLE help_relation (\
     help_topic_id    int unsigned not null references help_topic,\
     help_keyword_id  int unsigned not null references help_keyword,\
     primary key      (help_keyword_id, help_topic_id)\
   ) engine=MyISAM\
   CHARACTER SET utf8\
     comment='keyword-topic relation';"
fi

if [ -f /usr/share/mysql/scripts/fill_help_tables.sql ]; then
	fill_help_tables=`cat /usr/share/mysql/scripts/fill_help_tables.sql`
fi

if [ ! -f $mdata/time_zone_name.frm ]; then
   echo "Preparing time_zone_name table"

   create_time_zone_name="\
  CREATE TABLE time_zone_name (\
    Name char(64) NOT NULL,\
    Time_zone_id int unsigned NOT NULL,\
    PRIMARY KEY Name (Name)\
  ) engine=MyISAM CHARACTER SET utf8\
    comment='Time zone names';"

    insert_time_zone_name="\
    INSERT INTO time_zone_name (Name, Time_Zone_id) VALUES\
      ('MET', 1), ('UTC', 2), ('Universal', 2), \
      ('Europe/Moscow',3), ('leap/Europe/Moscow',4), \
      ('Japan', 5);"
fi

if [ ! -f $mdata/time_zone.frm ]; then
   echo "Preparing time_zone table"

  create_time_zone="\
   CREATE TABLE time_zone (\
     Time_zone_id int unsigned NOT NULL auto_increment,\
     Use_leap_seconds enum('Y','N') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\
     PRIMARY KEY TzId (Time_zone_id)\
   ) engine=MyISAM CHARACTER SET utf8\
     comment='Time zones';"
  
   insert_time_zone="\
  INSERT INTO time_zone (Time_zone_id, Use_leap_seconds)\ 
  VALUES (1,'N'), (2,'N'), (3,'N'), (4,'Y'), (5,'N');"
fi

if [ ! -f $mdata/time_zone_transition.frm ]; then
   echo "Preparing time_zone_transition table"

   create_time_zone_transition="\
  CREATE TABLE time_zone_transition (\
    Time_zone_id int unsigned NOT NULL,\
    Transition_time bigint signed NOT NULL,\
    Transition_type_id int unsigned NOT NULL,\
    PRIMARY KEY TzIdTranTime (Time_zone_id, Transition_time)\
  ) engine=MyISAM CHARACTER SET utf8\
    comment='Time zone transitions';"
  
  insert_time_zone_transition="\
     INSERT INTO time_zone_transition\
       (Time_zone_id, Transition_time, Transition_type_id)\
     VALUES\
       (1, -1693706400, 0) ,(1, -1680483600, 1)\
      ,(1, -1663455600, 2) ,(1, -1650150000, 3)\
      ,(1, -1632006000, 2) ,(1, -1618700400, 3)\
      ,(1, -938905200, 2) ,(1, -857257200, 3)\
      ,(1, -844556400, 2) ,(1, -828226800, 3)\
      ,(1, -812502000, 2) ,(1, -796777200, 3)\
      ,(1, 228877200, 2) ,(1, 243997200, 3)\
      ,(1, 260326800, 2) ,(1, 276051600, 3)\
      ,(1, 291776400, 2) ,(1, 307501200, 3)\
      ,(1, 323830800, 2) ,(1, 338950800, 3)\
      ,(1, 354675600, 2) ,(1, 370400400, 3)\
      ,(1, 386125200, 2) ,(1, 401850000, 3)\
      ,(1, 417574800, 2) ,(1, 433299600, 3)\
      ,(1, 449024400, 2) ,(1, 465354000, 3)\
      ,(1, 481078800, 2) ,(1, 496803600, 3)\
      ,(1, 512528400, 2) ,(1, 528253200, 3)\
      ,(1, 543978000, 2) ,(1, 559702800, 3)\
      ,(1, 575427600, 2) ,(1, 591152400, 3)\
      ,(1, 606877200, 2) ,(1, 622602000, 3)\
      ,(1, 638326800, 2) ,(1, 654656400, 3)\
      ,(1, 670381200, 2) ,(1, 686106000, 3)\
      ,(1, 701830800, 2) ,(1, 717555600, 3)\
      ,(1, 733280400, 2) ,(1, 749005200, 3)\
      ,(1, 764730000, 2) ,(1, 780454800, 3)\
      ,(1, 796179600, 2) ,(1, 811904400, 3)\
      ,(1, 828234000, 2) ,(1, 846378000, 3)\
      ,(1, 859683600, 2) ,(1, 877827600, 3)\
      ,(1, 891133200, 2) ,(1, 909277200, 3)\
      ,(1, 922582800, 2) ,(1, 941331600, 3)\
      ,(1, 954032400, 2) ,(1, 972781200, 3)\
      ,(1, 985482000, 2) ,(1, 1004230800, 3)\
      ,(1, 1017536400, 2) ,(1, 1035680400, 3)\
      ,(1, 1048986000, 2) ,(1, 1067130000, 3)\
      ,(1, 1080435600, 2) ,(1, 1099184400, 3)\
      ,(1, 1111885200, 2) ,(1, 1130634000, 3)\
      ,(1, 1143334800, 2) ,(1, 1162083600, 3)\
      ,(1, 1174784400, 2) ,(1, 1193533200, 3)\
      ,(1, 1206838800, 2) ,(1, 1224982800, 3)\
      ,(1, 1238288400, 2) ,(1, 1256432400, 3)\
      ,(1, 1269738000, 2) ,(1, 1288486800, 3)\
      ,(1, 1301187600, 2) ,(1, 1319936400, 3)\
      ,(1, 1332637200, 2) ,(1, 1351386000, 3)\
      ,(1, 1364691600, 2) ,(1, 1382835600, 3)\
      ,(1, 1396141200, 2) ,(1, 1414285200, 3)\
      ,(1, 1427590800, 2) ,(1, 1445734800, 3)\
      ,(1, 1459040400, 2) ,(1, 1477789200, 3)\
      ,(1, 1490490000, 2) ,(1, 1509238800, 3)\
      ,(1, 1521939600, 2) ,(1, 1540688400, 3)\
      ,(1, 1553994000, 2) ,(1, 1572138000, 3)\
      ,(1, 1585443600, 2) ,(1, 1603587600, 3)\
      ,(1, 1616893200, 2) ,(1, 1635642000, 3)\
      ,(1, 1648342800, 2) ,(1, 1667091600, 3)\
      ,(1, 1679792400, 2) ,(1, 1698541200, 3)\
      ,(1, 1711846800, 2) ,(1, 1729990800, 3)\
      ,(1, 1743296400, 2) ,(1, 1761440400, 3)\
      ,(1, 1774746000, 2) ,(1, 1792890000, 3)\
      ,(1, 1806195600, 2) ,(1, 1824944400, 3)\
      ,(1, 1837645200, 2) ,(1, 1856394000, 3)\
      ,(1, 1869094800, 2) ,(1, 1887843600, 3)\
      ,(1, 1901149200, 2) ,(1, 1919293200, 3)\
      ,(1, 1932598800, 2) ,(1, 1950742800, 3)\
      ,(1, 1964048400, 2) ,(1, 1982797200, 3)\
      ,(1, 1995498000, 2) ,(1, 2014246800, 3)\
      ,(1, 2026947600, 2) ,(1, 2045696400, 3)\
      ,(1, 2058397200, 2) ,(1, 2077146000, 3)\
      ,(1, 2090451600, 2) ,(1, 2108595600, 3)\
      ,(1, 2121901200, 2) ,(1, 2140045200, 3)\
      ,(3, -1688265000, 2) ,(3, -1656819048, 1)\
      ,(3, -1641353448, 2) ,(3, -1627965048, 3)\
      ,(3, -1618716648, 1) ,(3, -1596429048, 3)\
      ,(3, -1593829848, 5) ,(3, -1589860800, 4)\
      ,(3, -1542427200, 5) ,(3, -1539493200, 6)\
      ,(3, -1525323600, 5) ,(3, -1522728000, 4)\
      ,(3, -1491188400, 7) ,(3, -1247536800, 4)\
      ,(3, 354920400, 5) ,(3, 370728000, 4)\
      ,(3, 386456400, 5) ,(3, 402264000, 4)\
      ,(3, 417992400, 5) ,(3, 433800000, 4)\
      ,(3, 449614800, 5) ,(3, 465346800, 8)\
      ,(3, 481071600, 9) ,(3, 496796400, 8)\
      ,(3, 512521200, 9) ,(3, 528246000, 8)\
      ,(3, 543970800, 9) ,(3, 559695600, 8)\
      ,(3, 575420400, 9) ,(3, 591145200, 8)\
      ,(3, 606870000, 9) ,(3, 622594800, 8)\
      ,(3, 638319600, 9) ,(3, 654649200, 8)\
      ,(3, 670374000, 10) ,(3, 686102400, 11)\
      ,(3, 695779200, 8) ,(3, 701812800, 5)\
      ,(3, 717534000, 4) ,(3, 733273200, 9)\
      ,(3, 748998000, 8) ,(3, 764722800, 9)\
      ,(3, 780447600, 8) ,(3, 796172400, 9)\
      ,(3, 811897200, 8) ,(3, 828226800, 9)\
      ,(3, 846370800, 8) ,(3, 859676400, 9)\
      ,(3, 877820400, 8) ,(3, 891126000, 9)\
      ,(3, 909270000, 8) ,(3, 922575600, 9)\
      ,(3, 941324400, 8) ,(3, 954025200, 9)\
      ,(3, 972774000, 8) ,(3, 985474800, 9)\
      ,(3, 1004223600, 8) ,(3, 1017529200, 9)\
      ,(3, 1035673200, 8) ,(3, 1048978800, 9)\
      ,(3, 1067122800, 8) ,(3, 1080428400, 9)\
      ,(3, 1099177200, 8) ,(3, 1111878000, 9)\
      ,(3, 1130626800, 8) ,(3, 1143327600, 9)\
      ,(3, 1162076400, 8) ,(3, 1174777200, 9)\
      ,(3, 1193526000, 8) ,(3, 1206831600, 9)\
      ,(3, 1224975600, 8) ,(3, 1238281200, 9)\
      ,(3, 1256425200, 8) ,(3, 1269730800, 9)\
      ,(3, 1288479600, 8) ,(3, 1301180400, 9)\
      ,(3, 1319929200, 8) ,(3, 1332630000, 9)\
      ,(3, 1351378800, 8) ,(3, 1364684400, 9)\
      ,(3, 1382828400, 8) ,(3, 1396134000, 9)\
      ,(3, 1414278000, 8) ,(3, 1427583600, 9)\
      ,(3, 1445727600, 8) ,(3, 1459033200, 9)\
      ,(3, 1477782000, 8) ,(3, 1490482800, 9)\
      ,(3, 1509231600, 8) ,(3, 1521932400, 9)\
      ,(3, 1540681200, 8) ,(3, 1553986800, 9)\
      ,(3, 1572130800, 8) ,(3, 1585436400, 9)\
      ,(3, 1603580400, 8) ,(3, 1616886000, 9)\
      ,(3, 1635634800, 8) ,(3, 1648335600, 9)\
      ,(3, 1667084400, 8) ,(3, 1679785200, 9)\
      ,(3, 1698534000, 8) ,(3, 1711839600, 9)\
      ,(3, 1729983600, 8) ,(3, 1743289200, 9)\
      ,(3, 1761433200, 8) ,(3, 1774738800, 9)\
      ,(3, 1792882800, 8) ,(3, 1806188400, 9)\
      ,(3, 1824937200, 8) ,(3, 1837638000, 9)\
      ,(3, 1856386800, 8) ,(3, 1869087600, 9)\
      ,(3, 1887836400, 8) ,(3, 1901142000, 9)\
      ,(3, 1919286000, 8) ,(3, 1932591600, 9)\
      ,(3, 1950735600, 8) ,(3, 1964041200, 9)\
      ,(3, 1982790000, 8) ,(3, 1995490800, 9)\
      ,(3, 2014239600, 8) ,(3, 2026940400, 9)\
      ,(3, 2045689200, 8) ,(3, 2058390000, 9)\
      ,(3, 2077138800, 8) ,(3, 2090444400, 9)\
      ,(3, 2108588400, 8) ,(3, 2121894000, 9)\
      ,(3, 2140038000, 8)\
      ,(4, -1688265000, 2) ,(4, -1656819048, 1)\
      ,(4, -1641353448, 2) ,(4, -1627965048, 3)\
      ,(4, -1618716648, 1) ,(4, -1596429048, 3)\
      ,(4, -1593829848, 5) ,(4, -1589860800, 4)\
      ,(4, -1542427200, 5) ,(4, -1539493200, 6)\
      ,(4, -1525323600, 5) ,(4, -1522728000, 4)\
      ,(4, -1491188400, 7) ,(4, -1247536800, 4)\
      ,(4, 354920409, 5) ,(4, 370728010, 4)\
      ,(4, 386456410, 5) ,(4, 402264011, 4)\
      ,(4, 417992411, 5) ,(4, 433800012, 4)\
      ,(4, 449614812, 5) ,(4, 465346812, 8)\
      ,(4, 481071612, 9) ,(4, 496796413, 8)\
      ,(4, 512521213, 9) ,(4, 528246013, 8)\
      ,(4, 543970813, 9) ,(4, 559695613, 8)\
      ,(4, 575420414, 9) ,(4, 591145214, 8)\
      ,(4, 606870014, 9) ,(4, 622594814, 8)\
      ,(4, 638319615, 9) ,(4, 654649215, 8)\
      ,(4, 670374016, 10) ,(4, 686102416, 11)\
      ,(4, 695779216, 8) ,(4, 701812816, 5)\
      ,(4, 717534017, 4) ,(4, 733273217, 9)\
      ,(4, 748998018, 8) ,(4, 764722818, 9)\
      ,(4, 780447619, 8) ,(4, 796172419, 9)\
      ,(4, 811897219, 8) ,(4, 828226820, 9)\
      ,(4, 846370820, 8) ,(4, 859676420, 9)\
      ,(4, 877820421, 8) ,(4, 891126021, 9)\
      ,(4, 909270021, 8) ,(4, 922575622, 9)\
      ,(4, 941324422, 8) ,(4, 954025222, 9)\
      ,(4, 972774022, 8) ,(4, 985474822, 9)\
      ,(4, 1004223622, 8) ,(4, 1017529222, 9)\
      ,(4, 1035673222, 8) ,(4, 1048978822, 9)\
      ,(4, 1067122822, 8) ,(4, 1080428422, 9)\
      ,(4, 1099177222, 8) ,(4, 1111878022, 9)\
      ,(4, 1130626822, 8) ,(4, 1143327622, 9)\
      ,(4, 1162076422, 8) ,(4, 1174777222, 9)\
      ,(4, 1193526022, 8) ,(4, 1206831622, 9)\
      ,(4, 1224975622, 8) ,(4, 1238281222, 9)\
      ,(4, 1256425222, 8) ,(4, 1269730822, 9)\
      ,(4, 1288479622, 8) ,(4, 1301180422, 9)\
      ,(4, 1319929222, 8) ,(4, 1332630022, 9)\
      ,(4, 1351378822, 8) ,(4, 1364684422, 9)\
      ,(4, 1382828422, 8) ,(4, 1396134022, 9)\
      ,(4, 1414278022, 8) ,(4, 1427583622, 9)\
      ,(4, 1445727622, 8) ,(4, 1459033222, 9)\
      ,(4, 1477782022, 8) ,(4, 1490482822, 9)\
      ,(4, 1509231622, 8) ,(4, 1521932422, 9)\
      ,(4, 1540681222, 8) ,(4, 1553986822, 9)\
      ,(4, 1572130822, 8) ,(4, 1585436422, 9)\
      ,(4, 1603580422, 8) ,(4, 1616886022, 9)\
      ,(4, 1635634822, 8) ,(4, 1648335622, 9)\
      ,(4, 1667084422, 8) ,(4, 1679785222, 9)\
      ,(4, 1698534022, 8) ,(4, 1711839622, 9)\
      ,(4, 1729983622, 8) ,(4, 1743289222, 9)\
      ,(4, 1761433222, 8) ,(4, 1774738822, 9)\
      ,(4, 1792882822, 8) ,(4, 1806188422, 9)\
      ,(4, 1824937222, 8) ,(4, 1837638022, 9)\
      ,(4, 1856386822, 8) ,(4, 1869087622, 9)\
      ,(4, 1887836422, 8) ,(4, 1901142022, 9)\
      ,(4, 1919286022, 8) ,(4, 1932591622, 9)\
      ,(4, 1950735622, 8) ,(4, 1964041222, 9)\
      ,(4, 1982790022, 8) ,(4, 1995490822, 9)\
      ,(4, 2014239622, 8) ,(4, 2026940422, 9)\
      ,(4, 2045689222, 8) ,(4, 2058390022, 9)\
      ,(4, 2077138822, 8) ,(4, 2090444422, 9)\
      ,(4, 2108588422, 8) ,(4, 2121894022, 9)\
      ,(4, 2140038022, 8)\
      ,(5, -1009875600, 1);"
fi

if [ ! -f $mdata/time_zone_transition_type.frm ]; then
   echo "Preparing time_zone_transition_type table"

   create_time_zone_transition_type="\
   CREATE TABLE time_zone_transition_type (\
     Time_zone_id int unsigned NOT NULL,\
     Transition_type_id int unsigned NOT NULL,\
     Offset int signed DEFAULT 0 NOT NULL,\
     Is_DST tinyint unsigned DEFAULT 0 NOT NULL,\
     Abbreviation char(8) DEFAULT '' NOT NULL,\
     PRIMARY KEY TzIdTrTId (Time_zone_id, Transition_type_id)\
   ) engine=MyISAM CHARACTER SET utf8\
     comment='Time zone transition types';"
  
  insert_time_zone_transition_type="\
     INSERT INTO time_zone_transition_type (Time_zone_id,\
      Transition_type_id, Offset, Is_DST, Abbreviation) VALUES\
       (1, 0, 7200, 1, 'MEST') ,(1, 1, 3600, 0, 'MET')\
      ,(1, 2, 7200, 1, 'MEST') ,(1, 3, 3600, 0, 'MET')\
      ,(2, 0, 0, 0, 'UTC')\
      ,(3, 0, 9000, 0, 'MMT') ,(3, 1, 12648, 1, 'MST')\
      ,(3, 2, 9048, 0, 'MMT') ,(3, 3, 16248, 1, 'MDST')\
      ,(3, 4, 10800, 0, 'MSK') ,(3, 5, 14400, 1, 'MSD')\
      ,(3, 6, 18000, 1, 'MSD') ,(3, 7, 7200, 0, 'EET')\
      ,(3, 8, 10800, 0, 'MSK') ,(3, 9, 14400, 1, 'MSD')\
      ,(3, 10, 10800, 1, 'EEST') ,(3, 11, 7200, 0, 'EET')\
      ,(4, 0, 9000, 0, 'MMT') ,(4, 1, 12648, 1, 'MST')\
      ,(4, 2, 9048, 0, 'MMT') ,(4, 3, 16248, 1, 'MDST')\
      ,(4, 4, 10800, 0, 'MSK') ,(4, 5, 14400, 1, 'MSD')\
      ,(4, 6, 18000, 1, 'MSD') ,(4, 7, 7200, 0, 'EET')\
      ,(4, 8, 10800, 0, 'MSK') ,(4, 9, 14400, 1, 'MSD')\
      ,(4, 10, 10800, 1, 'EEST') ,(4, 11, 7200, 0, 'EET')\
      ,(5, 0, 32400, 0, 'CJT') ,(5, 1, 32400, 0, 'JST');"
fi

if [ ! -f $mdata/time_zone_leap_second.frm ]; then
   echo "Preparing time_zone_leap_second table"

   create_time_zone_leap_second="\
   CREATE TABLE time_zone_leap_second (\
     Transition_time bigint signed NOT NULL,\
     Correction int signed NOT NULL,\
     PRIMARY KEY TranTime (Transition_time)\
   ) engine=MyISAM CHARACTER SET utf8\
     comment='Leap seconds information for time zones';"
  
  insert_time_zone_leap_second="\
     INSERT INTO time_zone_leap_second \
      (Transition_time, Correction) VALUES \
      (78796800, 1) ,(94694401, 2) ,(126230402, 3)\
     ,(157766403, 4) ,(189302404, 5) ,(220924805, 6)\
     ,(252460806, 7) ,(283996807, 8) ,(315532808, 9)\
     ,(362793609, 10) ,(394329610, 11) ,(425865611, 12)\
     ,(489024012, 13) ,(567993613, 14) ,(631152014, 15)\
     ,(662688015, 16) ,(709948816, 17) ,(741484817, 18)\
     ,(773020818, 19) ,(820454419, 20) ,(867715220, 21)\
     ,(915148821, 22);"
fi

if [ -n "$create_db" -o -n "$insert_db" -o -n "$create_host" -o -n "$create_user" -o -n "$insert_user" -o -n "$create_func" -o -n "$create_tables_priv" -o -n "$create_tables_priv" -o -n "$create_help_topic" -o -n "$create_help_category" -o -n "$create_help_keyword" -o -n "$create_help_relation" -o -n "$fill_help_tables" -o -n "$create_time_zone_name" -o -n "$create_time_zone" -o -n "$create_time_zone_transition" -o -n "$create_time_zone_transition_type" -o -n "$create_time_zone_leap_second" ]; then
	echo "Installing all prepared tables"
	if eval "$mysqld --bootstrap --skip-grant-tables --skip-innodb --skip-bdb --skip-ndbcluster --max_allowed_packet=8M --net_buffer_length=16K" << END_OF_DATA
use mysql;
set table_type=myisam;
$create_db
$insert_db
  
$create_host
$insert_host
  
$create_user
$insert_user
  
$create_func
  
$create_tables_priv
$create_columns_priv

$create_help_topic 
$create_help_category 
$create_help_keyword 
$create_help_relation 
$fill_help_tables

$create_time_zone_name
$insert_time_zone_name
$create_time_zone 
$create_time_zone_transition
$insert_time_zone_transition
$create_time_zone_transition_type 
$insert_time_zone_transition_type
$create_time_zone_leap_second 
$insert_time_zone_leap_second
END_OF_DATA
	then
		if [ -n "$create_user" -o -n "$insert_user" ]; then
			cat << END_OF_DATA
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root  password 'new-password'
/usr/bin/mysqladmin -u root -h $hostname  password 'new-password'
See the manual for more instructions.
END_OF_DATA
		fi
  
		# Print message about upgrading unless we have created a new db table.
		if [ -z "$create_db" ]; then
			cat << END_OF_DATA
NOTE: If you are upgrading from a MySQL <= 3.22.10 you should run
the /usr/bin/mysql_fix_privilege_tables. Otherwise you will not be
able to use the new GRANT command!
END_OF_DATA
		fi
  
		cat << END_OF_DATA
Please report any problems with the /usr/bin/mysqlbug script!
  
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at https://order.mysql.com
END_OF_DATA
  	else
		cat << END_OF_DATA
Installation of grant tables failed!

Examine the logs in $chroot/log for more information.
You can also try to start the mysqld daemon with:
$mysqld --skip-grant &
You can use the command line tool
/usr/bin/mysql to connect to the mysql
database and look at the grant tables:

shell> /usr/bin/mysql -u root mysql
mysql> show tables

Try 'mysqld --help' if you have problems with paths. Using --log
gives you a log in $chroot/log that may be helpful.

The latest information about MySQL is available on the web at
http://www.mysql.com
Please consult the MySQL manual section: 'Problems running mysql_install_db',
and the manual section that describes problems on your OS.
Another information source is the MySQL email archive.
Please check all of the above before mailing us!
And if you do mail us, you MUST use the /usr/bin/mysqlbug script!
		cat << END_OF_DATA
Please report any problems with the /usr/bin/mysqlbug script!
END_OF_DATA

		exit 1
	fi
else
	echo No additional actions have to be done with MySQL privilege tables.
fi
