mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-28 17:15:19 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			674 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			674 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdio.h>
 | |
| #include <errno.h>
 | |
| #ifndef __WIN__
 | |
| #include <dirent.h>
 | |
| #endif
 | |
| #include <string.h>
 | |
| #ifdef __NETWARE__
 | |
| #include <screen.h>
 | |
| #include <proc.h>
 | |
| #else
 | |
| #include <sys/types.h>
 | |
| #ifndef __WIN__
 | |
| #include <sys/wait.h>
 | |
| #include <unistd.h>
 | |
| #else
 | |
| #include <direct.h>
 | |
| #include <stdlib.h>
 | |
| #include <stdio.h>
 | |
| #endif
 | |
| #endif
 | |
| #include <ctype.h>
 | |
| #include <sys/stat.h>
 | |
| #include <fcntl.h>
 | |
| #include <assert.h>
 | |
| #include "my_manage.h"
 | |
| 
 | |
| /*
 | |
|  Synopsis:
 | |
|   This function testes a exist file 
 | |
| 
 | |
| Arguments:
 | |
|   mdata:       path to data
 | |
|   file_name:   name of file
 | |
| Output:
 | |
|   A zero value indicates that file is exist. 
 | |
| */
 | |
| bool test_sys_file(const char *mdata,const char *file_name)
 | |
| {
 | |
|   struct stat file;
 | |
|   char path_file_name[PATH_MAX];
 | |
|   snprintf(path_file_name, PATH_MAX, "%s/%s", mdata, file_name);
 | |
|   return(stat(path_file_name,&file));
 | |
| }
 | |
| 
 | |
| /*
 | |
|  Synopsis:
 | |
|   This function creates a file with sql requstes for creating 
 | |
|   system data files.
 | |
| 
 | |
| Arguments:
 | |
|   mdata:         path to data
 | |
|   output_file:   file name for output file
 | |
|   test:          to create system files with test data
 | |
| Output:
 | |
|   A zero value indicates a success. 
 | |
| */
 | |
| bool create_system_files(const char *mdata,const char *output_file, bool test)
 | |
| {
 | |
|   FILE *out;
 | |
| 
 | |
|   out = fopen(output_file, "w+");
 | |
| 
 | |
|   if (!out)
 | |
|     return 1;
 | |
|   
 | |
|   if (test_sys_file(mdata,"mysql"))
 | |
|   {
 | |
|     fprintf(out,"CREATE DATABASE mysql;\n");
 | |
|   }
 | |
| 
 | |
|   if (test && test_sys_file(mdata,"test"))
 | |
|   {
 | |
|     fprintf(out,"CREATE DATABASE test;\n");
 | |
|   }
 | |
| 
 | |
|   fprintf(out,"USE mysql;\n");
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/db.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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') DEFAULT 'N' NOT NULL,"
 | |
|       "Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "PRIMARY KEY Host (Host,Db,User),"
 | |
|       "KEY User (User))"
 | |
|       "engine=MyISAM "
 | |
|       "CHARACTER SET utf8 COLLATE utf8_bin "
 | |
|       "comment='Database privileges';\n");
 | |
| 
 | |
|     if (test)
 | |
|     {
 | |
|       fprintf(out,"INSERT INTO db VALUES ('%%','test','','Y','Y','Y','Y'"
 | |
|                   ",'Y','Y','N','Y','Y','Y','Y','Y');\n");
 | |
|       fprintf(out,"INSERT INTO db VALUES ('%%','test\\_%%','','Y','Y','Y'"
 | |
|                   ",'Y','Y','Y','N','Y','Y','Y','Y','Y');\n");
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/host.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "CREATE TABLE host ("
 | |
|       "Host char(60) binary DEFAULT '' NOT NULL,"
 | |
|       "Db char(64) binary DEFAULT '' NOT NULL,"
 | |
|       "Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "PRIMARY KEY Host (Host,Db))"
 | |
|       "engine=MyISAM "
 | |
|       "CHARACTER SET utf8 COLLATE utf8_bin "
 | |
|       "comment='Host privileges;  Merged with database privileges';\n");
 | |
|   }
 | |
| 
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/user.frm"))
 | |
|   {
 | |
| #ifdef __WIN__
 | |
|     WSADATA wsa_data;
 | |
| #endif
 | |
|     char hostname[FN_REFLEN];
 | |
| 
 | |
| #ifdef __WIN__
 | |
|     if (WSAStartup(MAKEWORD( 2, 2 ),&wsa_data))
 | |
|       return 1;
 | |
| #endif
 | |
|     if (gethostname(hostname, FN_REFLEN))
 | |
|       return 1;
 | |
| #ifdef __WIN__
 | |
|     WSACleanup( );
 | |
| #endif
 | |
| 
 | |
|     if (strchr(hostname, '.') == NULL)
 | |
|       strcat(hostname, "%");  
 | |
| 
 | |
|     fprintf(out,
 | |
|       "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') DEFAULT 'N' NOT NULL,"
 | |
|       "Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Reload_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Shutdown_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Process_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "File_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Show_db_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Super_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Execute_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Repl_slave_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "Repl_client_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
 | |
|       "ssl_type enum('','ANY','X509', 'SPECIFIED') 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';\n");
 | |
| 
 | |
| 
 | |
|     if (test)
 | |
|     {
 | |
|       fprintf(out,
 | |
|         "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);\n");
 | |
|       fprintf(out,
 | |
|         "INSERT INTO user VALUES ('%s','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);\n",hostname);
 | |
|       fprintf(out,
 | |
|         "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);\n");
 | |
|       fprintf(out,"INSERT INTO user (host,user) values ('localhost','');\n");
 | |
|       fprintf(out,"INSERT INTO user (host,user) values ('%s','');\n",hostname);
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       fprintf(out,
 | |
|         "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);\n");
 | |
| #ifndef __WIN__    
 | |
|       fprintf(out,
 | |
|         "INSERT INTO user VALUES ('%s','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);\n",hostname);
 | |
|       fprintf(out,"INSERT INTO user (host,user) values ('%s','');\n",hostname);
 | |
|       fprintf(out,"INSERT INTO user (host,user) values ('localhost','');\n");
 | |
| #else
 | |
|       fprintf(out,
 | |
|         "INSERT INTO user VALUES ('localhost','','','Y','Y','Y'"
 | |
|         ",'Y','Y','Y','Y','Y','Y'"
 | |
|         ",'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','',"
 | |
|         "'','',0,0,0);\n");
 | |
| #endif
 | |
|     }
 | |
|   }
 | |
|   
 | |
|   
 | |
|   if (test_sys_file(mdata,"mysql/func.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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') NOT NULL,"
 | |
|       "PRIMARY KEY (name)"
 | |
|       ") engine=MyISAM "
 | |
|       "CHARACTER SET utf8 COLLATE utf8_bin "
 | |
|       "comment='User defined functions';\n");
 | |
|   }
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/tables_priv.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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')"
 | |
|       " DEFAULT '' NOT NULL,"
 | |
|       "Column_priv set('Select','Insert','Update','References')"
 | |
|       "  DEFAULT '' NOT NULL,"
 | |
|       "PRIMARY KEY (Host,Db,User,Table_name),"
 | |
|       "KEY Grantor (Grantor)"
 | |
|       ") engine=MyISAM "
 | |
|       "CHARACTER SET utf8 COLLATE utf8_bin "
 | |
|       "comment='Table privileges';\n");
 | |
|   }
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/columns_priv.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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')"
 | |
|       " DEFAULT '' NOT NULL,"
 | |
|       "PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
 | |
|       ") engine=MyISAM "
 | |
|       "CHARACTER SET utf8 COLLATE utf8_bin "
 | |
|       "comment='Column privileges';\n");
 | |
|   }
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/help_topic.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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';\n");
 | |
|   }
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/help_category.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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';\n");
 | |
|   }
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/help_keyword.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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';\n");
 | |
|   }
 | |
| 				    
 | |
|   if (test_sys_file(mdata,"mysql/help_relation.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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';\n");
 | |
|   }
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/time_zone_name.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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';\n");
 | |
|   
 | |
|     if (test)
 | |
|     {
 | |
|       fprintf(out,
 | |
|         "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);\n");
 | |
| 
 | |
|     }
 | |
|   }
 | |
| 
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/time_zone.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "CREATE TABLE time_zone ("
 | |
|       "Time_zone_id int unsigned NOT NULL auto_increment,"
 | |
|       "Use_leap_seconds enum('Y','N') DEFAULT 'N' NOT NULL,"
 | |
|       "PRIMARY KEY TzId (Time_zone_id)"
 | |
|       ") engine=MyISAM CHARACTER SET utf8 "
 | |
|       "comment='Time zones';\n");
 | |
|   
 | |
|     if (test)
 | |
|     {
 | |
|       fprintf(out,"INSERT INTO time_zone (Time_zone_id, Use_leap_seconds)"
 | |
|                   "VALUES (1,'N'), (2,'N'), (3,'N'), (4,'Y'), (5,'N');\n");
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/time_zone_transition.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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';\n");
 | |
|   
 | |
|     if (test)
 | |
|     {
 | |
|       fprintf(out,
 | |
|        "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);\n");
 | |
|        
 | |
|        
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/time_zone_transition_type.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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';\n");
 | |
|   
 | |
|     if (test)
 | |
|     {
 | |
|       fprintf(out,
 | |
|         "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');\n");
 | |
| 	
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (test_sys_file(mdata,"mysql/time_zone_leap_second.frm"))
 | |
|   {
 | |
|     fprintf(out,
 | |
|       "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';\n");
 | |
|   
 | |
|     if (test)
 | |
|     {
 | |
|       fprintf(out,
 | |
|         "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);\n");
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   return fclose(out);
 | |
| }
 |