mariadb/scripts/mysql_create_system_tables.sh

359 lines
14 KiB
Bash
Raw Normal View History

2003-05-29 17:47:31 -04:00
#!/bin/sh
# Copyright (C) 1997-2003 MySQL AB
2003-05-29 17:47:31 -04:00
# For a more info consult the file COPYRIGHT distributed with this file
# This script writes on stdout SQL commands to generate all not
# existing MySQL system tables. It also replaces the help tables with
# new context from the manual (from fill_help_tables.sql).
# $1 - "test" or "real" or "verbose" variant of database
# $2 - path to mysql-database directory
# $3 - hostname
# $4 - windows option
if test "$1" = ""
2003-05-29 17:47:31 -04:00
then
echo "
This script writes on stdout SQL commands to generate all not
existing MySQL system tables. It also replaces the help tables with
new context from the manual (from fill_help_tables.sql).
Usage:
mysql_create_system_tables [test|verbose|real] <path to mysql-database directory> <hostname> <windows option>
"
exit
2003-05-29 17:47:31 -04:00
fi
mdata=$2
hostname=$3
windows=$4
# Initialize variables
c_d="" i_d=""
c_h="" i_h=""
c_u="" i_u=""
c_f="" i_f=""
c_t="" c_c=""
c_ht=""
c_hc=""
c_hr=""
c_hk=""
i_ht=""
Merging 4.1 into 5.0 (second pass; post-merge fixes). One test in subselect.test still wrong. Had to reconstruct all errmsg.txt files completely, since auto-merge made a mess of the lot. :-( mysql-test/r/sp-error.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/r/subselect.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). One test still wrong (different from 4.1), left for Sanja. :) mysql-test/r/variables.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/t/sp-error.test: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/t/subselect.test: Merging 4.1 into 5.0 (second pass; post-merge fixes). One test still wrong (different from 4.1), left for Sanja :) scripts/mysql_create_system_tables.sh: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_cmpfunc.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_subselect.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_sum.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/mysql_priv.h: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/mysqld.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/danish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/dutch/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/english/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/estonian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/french/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/german/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/greek/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/hungarian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/italian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/japanese/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/korean/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/norwegian-ny/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/norwegian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/polish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/portuguese/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/russian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/serbian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/slovak/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/spanish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/swedish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/ukrainian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sp.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_base.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_cache.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_insert.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_parse.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_select.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_update.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes).
2003-07-09 17:07:12 +02:00
c_p=""
2003-05-29 17:47:31 -04:00
# Check for old tables
if test ! -f $mdata/db.frm
then
if test "$1" = "verbose" ; then
2003-05-29 17:47:31 -04:00
echo "Preparing db table" 1>&2;
fi
# mysqld --bootstrap wants one command/line
c_d="$c_d CREATE TABLE db ("
c_d="$c_d Host char(60) binary DEFAULT '' NOT NULL,"
c_d="$c_d Db char(64) binary DEFAULT '' NOT NULL,"
c_d="$c_d User char(16) binary 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
if test "$1" = "verbose" ; then
2003-05-29 17:47:31 -04:00
echo "Preparing host table" 1>&2;
fi
c_h="$c_h CREATE TABLE host ("
c_h="$c_h Host char(60) binary DEFAULT '' NOT NULL,"
c_h="$c_h Db char(64) binary 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
if test "$1" = "verbose" ; then
2003-05-29 17:47:31 -04:00
echo "Preparing user table" 1>&2;
fi
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,"
First version of new authentification procedure: now authentification is one-stage (instead of two-stage in 4.1) For now following tasks have been done: - PASSWORD() function was rewritten. PASSWORD() now returns SHA1 hash_stage2; for new passwords user.password contains '*'hash_stage2; sql_yacc.yy also fixed; - password.c: new functions were implemented, old rolled back to 4.0 state - server code was rewritten to use new authorization algorithm (check_user(), change user, and other stuff in sql/sql_parse.cc) - client code was rewritten to use new authorization algorithm (mysql_real_connect, myslq_authenticate in sql-common/client.c) - now server barks on 45-byte-length 4.1.0 passwords and refuses 4.1.0-style authentification. Users with 4.1.0 passwords are blocked (sql/sql_acl.cc) - mysqladmin.c was fixed to work correctly with new passwords Tests for 4.0-4.1.1, 4.1.1-4.1.1 (with or without db/password) logons was performed; mysqladmin also was tested. Additional check are nevertheless necessary. BitKeeper/etc/ignore: Added start_mysqld.sh mysys/main.cc to the ignore list client/mysqladmin.c: fixed with new password api include/mysql.h: So as scramble_323 accepts only null-terminated message, two scramble buffs are necessary. gotta be fixed include/mysql_com.h: new constants and password.c api changes libmysql/libmysql.c: mysql_change_user rewritten to work with new password api scripts/mysql_create_system_tables.sh: fixed 'Password' column length to 41 scripts/mysql_fix_privilege_tables.sql: fixed 'Password' column length to 41 sql-common/client.c: mysql_real_connect rewritten to support new handshake procedure sql/item_strfunc.cc: Item_func_password and Item_func_old_password rewritten with new password api sql/item_strfunc.h: bit commented, numbers replaced with #defined constants sql/mysql_priv.h: removed unnecessary declaration as now all constants defined is in mysql_com.h sql/mysqld.cc: scramble initialization moved to sql_parce.cc:check_connection sql/password.c: All 4.1 functions were rolled back to 4.0 with attempt to save all possible 4.0-4.1 changes. Names for 4.0 functions were suffixed with '_323' Functions for new handshake were added. sql/slave.cc: Fixed to new constant; Bug #766 remains to be fixed sql/slave.h: fixed to new constant; Buf #766 remains to be fixed sql/sql_acl.cc: rewritten to support new passwords (41 byte-long) and password api sql/sql_acl.h: ditto sql/sql_class.cc: initialization for new members added sql/sql_class.h: same thing as in struct mysql - scramble is used for new family of functions, scramble_323 - for old sql/sql_parse.cc: check_connections was renamed to check_connection as this name reflects better what this function does authorization part of check_connection was rewritten check_user was rewritten with new password and acl api new function 'authenticate', which optionally re-request scramble from client was added fixed some typos COM_CHANGE_USER piece of dipsatch_command() was rewritten sql/sql_repl.h: HASH_PASSWORD_LENGTH replaced with SCRAMBLED_PASSWORD_CHAR_LENGTH bug #766 remains sql/sql_yacc.yy: Two-argument form of PASSWORD() was removed PASSWORD() function was fixed with new password api. BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
2003-07-01 23:40:59 +04:00
c_u="$c_u Password char(41) binary DEFAULT '' NOT NULL,"
2003-05-29 17:47:31 -04:00
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';"
if test "$1" = "test"
2003-05-29 17:47:31 -04:00
then
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);
2003-05-29 17:47:31 -04:00
INSERT INTO user (host,user) values ('localhost','');
INSERT INTO user (host,user) values ('$hostname','');"
else
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);"
if test "$windows" = "0"
2003-05-29 17:47:31 -04:00
then
i_u="$i_u
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);
INSERT INTO user (host,user) values ('$hostname','');
INSERT INTO user (host,user) values ('localhost','');"
else
i_u="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);"
fi
2003-05-29 17:47:31 -04:00
fi
fi
if test ! -f $mdata/func.frm
then
if test "$1" = "verbose" ; then
2003-05-29 17:47:31 -04:00
echo "Preparing func table" 1>&2;
fi
c_f="$c_f CREATE TABLE func ("
c_f="$c_f name char(64) binary 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
if test "$1" = "verbose" ; then
2003-05-29 17:47:31 -04:00
echo "Preparing tables_priv table" 1>&2;
fi
c_t="$c_t CREATE TABLE tables_priv ("
c_t="$c_t Host char(60) binary DEFAULT '' NOT NULL,"
c_t="$c_t Db char(64) binary DEFAULT '' NOT NULL,"
c_t="$c_t User char(16) binary DEFAULT '' NOT NULL,"
c_t="$c_t Table_name char(64) binary DEFAULT '' NOT NULL,"
2003-05-29 17:47:31 -04:00
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
if test "$1" = "verbose" ; then
2003-05-29 17:47:31 -04:00
echo "Preparing columns_priv table" 1>&2;
fi
c_c="$c_c CREATE TABLE columns_priv ("
c_c="$c_c Host char(60) binary DEFAULT '' NOT NULL,"
c_c="$c_c Db char(64) binary DEFAULT '' NOT NULL,"
c_c="$c_c User char(16) binary DEFAULT '' NOT NULL,"
c_c="$c_c Table_name char(64) binary DEFAULT '' NOT NULL,"
c_c="$c_c Column_name char(64) binary 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
if test "$1" = "verbose" ; then
2003-05-29 17:47:31 -04:00
echo "Preparing help_topic table" 1>&2;
fi
c_ht="$c_ht CREATE TABLE help_topic ("
c_ht="$c_ht help_topic_id int unsigned not null,"
c_ht="$c_ht name varchar(64) not null,"
c_ht="$c_ht help_category_id smallint unsigned not null,"
c_ht="$c_ht description text not null,"
c_ht="$c_ht example text not null,"
c_ht="$c_ht url varchar(128) not null,"
c_ht="$c_ht primary key (help_topic_id),"
c_ht="$c_ht unique index (name)"
c_ht="$c_ht )"
c_ht="$c_ht comment='help topics';"
fi
old_categories="yes"
if test ! -f $mdata/help_category.frm
then
if test "$1" = "verbose" ; then
2003-05-29 17:47:31 -04:00
echo "Preparing help_category table" 1>&2;
fi
c_hc="$c_hc CREATE TABLE help_category ("
c_hc="$c_hc help_category_id smallint unsigned not null,"
c_hc="$c_hc name varchar(64) not null,"
c_hc="$c_hc parent_category_id smallint unsigned null,"
c_hc="$c_hc url varchar(128) not null,"
c_hc="$c_hc primary key (help_category_id),"
c_hc="$c_hc unique index (name)"
c_hc="$c_hc )"
c_hc="$c_hc comment='help categories';"
fi
if test ! -f $mdata/help_keyword.frm
then
if test "$1" = "verbose" ; then
2003-05-29 17:47:31 -04:00
echo "Preparing help_keyword table" 1>&2;
fi
c_hk="$c_hk CREATE TABLE help_keyword ("
c_hk="$c_hk help_keyword_id int unsigned not null,"
c_hk="$c_hk name varchar(64) not null,"
c_hk="$c_hk primary key (help_keyword_id),"
c_hk="$c_hk unique index (name)"
c_hk="$c_hk )"
c_hk="$c_hk comment='help keywords';"
fi
if test ! -f $mdata/help_relation.frm
then
if test "$1" = "verbose" ; then
2003-05-29 17:47:31 -04:00
echo "Preparing help_relation table" 1>&2;
fi
c_hr="$c_hr CREATE TABLE help_relation ("
c_hr="$c_hr help_topic_id int unsigned not null references help_topic,"
c_hr="$c_hr help_keyword_id int unsigned not null references help_keyword,"
c_hr="$c_hr primary key (help_keyword_id, help_topic_id)"
c_hr="$c_hr )"
c_hr="$c_hr comment='keyword-topic relation';"
fi
Merging 4.1 into 5.0 (second pass; post-merge fixes). One test in subselect.test still wrong. Had to reconstruct all errmsg.txt files completely, since auto-merge made a mess of the lot. :-( mysql-test/r/sp-error.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/r/subselect.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). One test still wrong (different from 4.1), left for Sanja. :) mysql-test/r/variables.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/t/sp-error.test: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/t/subselect.test: Merging 4.1 into 5.0 (second pass; post-merge fixes). One test still wrong (different from 4.1), left for Sanja :) scripts/mysql_create_system_tables.sh: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_cmpfunc.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_subselect.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_sum.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/mysql_priv.h: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/mysqld.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/danish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/dutch/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/english/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/estonian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/french/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/german/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/greek/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/hungarian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/italian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/japanese/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/korean/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/norwegian-ny/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/norwegian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/polish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/portuguese/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/russian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/serbian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/slovak/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/spanish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/swedish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/ukrainian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sp.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_base.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_cache.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_insert.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_parse.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_select.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_update.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes).
2003-07-09 17:07:12 +02:00
if test ! -f $mdata/proc.frm
then
c_p="$c_p CREATE TABLE proc ("
c_p="$c_p db char(64) binary DEFAULT '' NOT NULL,"
c_p="$c_p name char(64) DEFAULT '' NOT NULL,"
c_p="$c_p type enum('FUNCTION','PROCEDURE') NOT NULL,"
c_p="$c_p specific_name char(64) DEFAULT '' NOT NULL,"
c_p="$c_p language enum('SQL') DEFAULT 'SQL' NOT NULL,"
c_p="$c_p sql_data_access enum('CONTAINS_SQL') DEFAULT 'CONTAINS_SQL' NOT NULL,"
c_p="$c_p is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL,"
In order to make ALTER PROCEDURE|FUNCTION work correctly, and in general to make characteristics (and SHOW) work right, we had to separate the old definition blob in the mysql.proc table into separate fields for parameters, return type, and body, and handle the characteristics (like SQL SECURITY) separately... and then reassemble the CREATE string for parsing, of course. This is rather ugly, mostly the parser bit. (Hopefully that will be better with the new parser.) Docs/sp-imp-spec.txt: Separated the definitions string of the procedure into different columns in the mysql.proc schema. mysql-test/r/sp.result: New characteristics tests. mysql-test/t/sp.test: New characteristics tests. scripts/mysql_create_system_tables.sh: Separated the definitions string of the procedure into different columns in the mysql.proc schema. scripts/mysql_fix_privilege_tables.sql: Separated the definitions string of the procedure into different columns in the mysql.proc schema. sql/sp.cc: Separated the definitions string of the procedure into different columns. Rewrote much of the code related this (have a assemble the definition string from its different parts now) and the way characteristics are now handled, in order to make ALTER actually work. sql/sp.h: Changed prototypes. sql/sp_head.cc: Rewrote much of the code related to the new mysql.proc schema with separate definition fields (have to assemble the definition string from its different parts now) and the way characteristics are now handled, in order to make ALTER actually work. sql/sp_head.h: Separated the different parts of the definition strings: name, parameters, return type (for functions) and body. sql/sql_yacc.yy: Separated the different parts of the definition strings: name, parameters, return type (for functions) and body. This is ugly and messy; hopefully there's a more elegant way to do this when the new parser is installed.
2003-12-12 14:05:29 +01:00
c_p="$c_p security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL,"
c_p="$c_p param_list blob DEFAULT '' NOT NULL,"
c_p="$c_p returns char(64) DEFAULT '' NOT NULL,"
c_p="$c_p body blob DEFAULT '' NOT NULL,"
c_p="$c_p definer char(77) binary DEFAULT '' NOT NULL,"
c_p="$c_p created timestamp,"
c_p="$c_p modified timestamp,"
c_p="$c_p sql_mode set("
c_p="$c_p 'REAL_AS_FLOAT',"
c_p="$c_p 'PIPES_AS_CONCAT',"
c_p="$c_p 'ANSI_QUOTES',"
c_p="$c_p 'IGNORE_SPACE',"
c_p="$c_p 'NOT_USED',"
c_p="$c_p 'ONLY_FULL_GROUP_BY',"
c_p="$c_p 'NO_UNSIGNED_SUBTRACTION',"
c_p="$c_p 'NO_DIR_IN_CREATE',"
c_p="$c_p 'POSTGRESQL',"
c_p="$c_p 'ORACLE',"
c_p="$c_p 'MSSQL',"
c_p="$c_p 'DB2',"
c_p="$c_p 'MAXDB',"
c_p="$c_p 'NO_KEY_OPTIONS',"
c_p="$c_p 'NO_TABLE_OPTIONS',"
c_p="$c_p 'NO_FIELD_OPTIONS',"
c_p="$c_p 'MYSQL323',"
c_p="$c_p 'MYSQL40',"
c_p="$c_p 'ANSI',"
c_p="$c_p 'NO_AUTO_VALUE_ON_ZERO'"
c_p="$c_p ) DEFAULT 0 NOT NULL,"
c_p="$c_p comment char(64) binary DEFAULT '' NOT NULL,"
c_p="$c_p PRIMARY KEY (db,name,type)"
c_p="$c_p ) comment='Stored Procedures';"
Merging 4.1 into 5.0 (second pass; post-merge fixes). One test in subselect.test still wrong. Had to reconstruct all errmsg.txt files completely, since auto-merge made a mess of the lot. :-( mysql-test/r/sp-error.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/r/subselect.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). One test still wrong (different from 4.1), left for Sanja. :) mysql-test/r/variables.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/t/sp-error.test: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/t/subselect.test: Merging 4.1 into 5.0 (second pass; post-merge fixes). One test still wrong (different from 4.1), left for Sanja :) scripts/mysql_create_system_tables.sh: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_cmpfunc.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_subselect.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_sum.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/mysql_priv.h: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/mysqld.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/danish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/dutch/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/english/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/estonian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/french/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/german/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/greek/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/hungarian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/italian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/japanese/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/korean/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/norwegian-ny/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/norwegian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/polish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/portuguese/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/russian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/serbian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/slovak/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/spanish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/swedish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/ukrainian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sp.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_base.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_cache.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_insert.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_parse.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_select.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_update.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes).
2003-07-09 17:07:12 +02:00
fi
2003-05-29 17:47:31 -04:00
cat << 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_ht
$c_hc
$c_hr
$c_hk
Merging 4.1 into 5.0 (second pass; post-merge fixes). One test in subselect.test still wrong. Had to reconstruct all errmsg.txt files completely, since auto-merge made a mess of the lot. :-( mysql-test/r/sp-error.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/r/subselect.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). One test still wrong (different from 4.1), left for Sanja. :) mysql-test/r/variables.result: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/t/sp-error.test: Merging 4.1 into 5.0 (second pass; post-merge fixes). mysql-test/t/subselect.test: Merging 4.1 into 5.0 (second pass; post-merge fixes). One test still wrong (different from 4.1), left for Sanja :) scripts/mysql_create_system_tables.sh: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_cmpfunc.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_subselect.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/item_sum.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/mysql_priv.h: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/mysqld.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/danish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/dutch/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/english/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/estonian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/french/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/german/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/greek/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/hungarian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/italian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/japanese/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/korean/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/norwegian-ny/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/norwegian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/polish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/portuguese/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/russian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/serbian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/slovak/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/spanish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/swedish/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/share/ukrainian/errmsg.txt: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sp.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_base.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_cache.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_insert.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_parse.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_select.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes). sql/sql_update.cc: Merging 4.1 into 5.0 (second pass; post-merge fixes).
2003-07-09 17:07:12 +02:00
$c_p
2003-05-29 17:47:31 -04:00
END_OF_DATA