From 7005115e97b3986a7ec1ba59ff6ece82bcc1a2f2 Mon Sep 17 00:00:00 2001 From: "gerberb@ou800.zenez.com" <> Date: Wed, 3 Sep 2003 08:07:58 -0600 Subject: [PATCH 1/3] Change set for gcc patch on OpenUNIX and UnixWare SCO is the OS vendor. --- BitKeeper/etc/logging_ok | 1 + configure.in | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index ffc7baf242c..348ed8d24df 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -17,6 +17,7 @@ bk@admin.bk davida@isil.mysql.com dlenev@build.mysql.com dlenev@mysql.com +gerberb@ou800.zenez.com gluh@gluh.(none) gluh@gluh.mysql.r18.ru greg@gcw.ath.cx diff --git a/configure.in b/configure.in index f894cb5cb2a..0538199e8e1 100644 --- a/configure.in +++ b/configure.in @@ -1339,7 +1339,12 @@ then if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so then MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK - with_named_thread="-Kthread -lsocket -lnsl" + if expr "$CC" : ".*gcc.*" + then + with_named_thread="-pthread -lsocket -lnsl" + else + with_named_thread="-Kthread -lsocket -lnsl" + fi if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null then AC_DEFINE(HAVE_UNIXWARE7_THREADS) @@ -1375,7 +1380,12 @@ then if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so then MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK - with_named_thread="-Kthread -lsocket -lnsl" + if expr "$CC" : ".*gcc.*" + then + with_named_thread="-pthread -lsocket -lnsl" + else + with_named_thread="-Kthread -lsocket -lnsl" + fi if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null then AC_DEFINE(HAVE_UNIXWARE7_THREADS) From b450f654900f95bc22fe67d8b23f500e9e66e8cd Mon Sep 17 00:00:00 2001 From: "greg@mysql.com" <> Date: Thu, 4 Sep 2003 12:56:02 -0400 Subject: [PATCH 2/3] Provide mysql_fix_privilege_tables.sql for Windows users to update grant tables (BUG #948) Fix make_win_src_distribution --- scripts/make_win_src_distribution.sh | 49 ++++++-- scripts/mysql_fix_privilege_tables.sql | 159 +++++++++++++++++++++++++ 2 files changed, 195 insertions(+), 13 deletions(-) create mode 100644 scripts/mysql_fix_privilege_tables.sql diff --git a/scripts/make_win_src_distribution.sh b/scripts/make_win_src_distribution.sh index 9b310722886..b0d63f1d6d8 100755 --- a/scripts/make_win_src_distribution.sh +++ b/scripts/make_win_src_distribution.sh @@ -13,8 +13,8 @@ DEBUG=0 SILENT=0 SUFFIX="" DIRNAME="" -OUTTAR=0 -OUTZIP=0 +OUTTAR="0" +OUTZIP="0" # # This script must run from MySQL top directory @@ -114,16 +114,37 @@ done # Convert argument file from unix to DOS text # -unix_to_dos() -{ - for arg do - print_debug "Replacing LF -> CRLF from '$arg'" +if [ `which recode` ] +then - sed -e 's/$/\r/' $arg > $arg.tmp - rm -f $arg - mv $arg.tmp $arg - done -} + print_debug "Using 'recode' to convert from unix to dos text" + + unix_to_dos() + { + for arg do + print_debug "Replacing LF -> CRLF from '$arg'" + + chmod u+w $arg + recode lat1..ibmpc $arg + done + } + +else + + print_debug "Using 'sed' to convert from unix to dos text" + + unix_to_dos() + { + for arg do + print_debug "Replacing LF -> CRLF from '$arg'" + + sed -e 's/$/\r/' $arg > $arg.tmp + rm -f $arg + mv $arg.tmp $arg + done + } + +fi # @@ -363,8 +384,10 @@ which_1 () # Create the result zip/tar file # -if [ [ "$OUTTAR" = "0" ] && [ "$OUTZIP" = "0" ] ]; then - OUTZIP=1 +if [ "$OUTTAR" = "0" ]; then + if [ "$OUTZIP" = "0" ]; then + OUTZIP=1 + fi fi set_tarzip_options() diff --git a/scripts/mysql_fix_privilege_tables.sql b/scripts/mysql_fix_privilege_tables.sql new file mode 100644 index 00000000000..aca9a9c21d4 --- /dev/null +++ b/scripts/mysql_fix_privilege_tables.sql @@ -0,0 +1,159 @@ +-- This scripts updates the mysql.user, mysql.db, mysql.host and the +-- mysql.func tables to MySQL 3.22.14 and above. + +-- This is needed if you want to use the new GRANT functions, +-- CREATE AGGREGATE FUNCTION or want to use the more secure passwords in 3.23 + +-- If you get 'Access denied' errors, you should run this script again +-- and give the MySQL root user password as an argument! + + +-- Converting all privilege tables to MyISAM format +ALTER TABLE user type=MyISAM; +ALTER TABLE db type=MyISAM; +ALTER TABLE host type=MyISAM; +ALTER TABLE func type=MyISAM; +ALTER TABLE columns_priv type=MyISAM; +ALTER TABLE tables_priv type=MyISAM; + + +-- Fix old password format, add File_priv and func table + +-- If your tables are already up to date or partially up to date you will +-- get some warnings about 'Duplicated column name'. You can safely ignore these! + +alter table user change password password char(16) NOT NULL; +alter table user add File_priv enum('N','Y') NOT NULL; +CREATE TABLE if not exists func ( + name char(64) 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) +); + +-- Add the new grant colums + +-- Creating Grant Alter and Index privileges if they don't exists +-- You can ignore any Duplicate column errors +alter table user add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL; +alter table host add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL; +alter table db add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL; + +-- If the new grant columns didn't exists, copy File -> Grant +-- and Create -> Alter, Index, References + +-- Setting default privileges for the new grant, index and alter privileges + UPDATE user SET Grant_priv=File_priv,References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv; + UPDATE db SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv; + UPDATE host SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv; + +-- +-- The second alter changes ssl_type to new 4.0.2 format + +-- Adding columns needed by GRANT .. REQUIRE (openssl)" +-- You can ignore any Duplicate column errors" +ALTER TABLE user +ADD ssl_type enum('','ANY','X509', 'SPECIFIED') NOT NULL, +ADD ssl_cipher BLOB NOT NULL, +ADD x509_issuer BLOB NOT NULL, +ADD x509_subject BLOB NOT NULL; +ALTER TABLE user MODIFY ssl_type enum('','ANY','X509', 'SPECIFIED') NOT NULL; + +-- +-- Create tables_priv and columns_priv if they don't exists +-- + +-- Creating the new table and column privilege tables" + +CREATE TABLE IF NOT EXISTS tables_priv ( + Host char(60) DEFAULT '' NOT NULL, + Db char(60) DEFAULT '' NOT NULL, + User char(16) DEFAULT '' NOT NULL, + Table_name char(60) 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) +); +CREATE TABLE IF NOT EXISTS columns_priv ( + Host char(60) DEFAULT '' NOT NULL, + Db char(60) DEFAULT '' NOT NULL, + User char(16) DEFAULT '' NOT NULL, + Table_name char(60) DEFAULT '' NOT NULL, + Column_name char(59) 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) +); + +-- +-- Name change of Type -> Column_priv from MySQL 3.22.12 +-- + +-- Changing name of columns_priv.Type -> columns_priv.Column_priv +-- You can ignore any Unknown column errors from this + + +ALTER TABLE columns_priv change Type Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL; + + + +-- +-- Add the new 'type' column to the func table. +-- + +-- Fixing the func table +-- You can ignore any Duplicate column errors + +alter table func add type enum ('function','aggregate') NOT NULL; + + +-- +-- Change the user,db and host tables to MySQL 4.0 format +-- + +-- Adding new fields used by MySQL 4.0.2 to the privilege tables +-- You can ignore any Duplicate column errors + + +alter table user +add Show_db_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER alter_priv, +add Super_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Show_db_priv, +add Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Super_priv, +add Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Create_tmp_table_priv, +add Execute_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Lock_tables_priv, +add Repl_slave_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Execute_priv, +add Repl_client_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Repl_slave_priv; + + +-- Convert privileges so that users have similar privileges as before + +-- Updating new privileges in MySQL 4.0.2 from old ones + + update user set show_db_priv= select_priv, super_priv=process_priv, execute_priv=process_priv, create_tmp_table_priv='Y', Lock_tables_priv='Y', Repl_slave_priv=file_priv, Repl_client_priv=file_priv where user<>""; + + +-- Add fields that can be used to limit number of questions and connections +-- for some users. + + +alter table user +add max_questions int(11) NOT NULL AFTER x509_subject, +add max_updates int(11) unsigned NOT NULL AFTER max_questions, +add max_connections int(11) unsigned NOT NULL AFTER max_updates; + + +-- +-- Add Create_tmp_table_priv and Lock_tables_priv to db and host +-- + + +alter table db +add Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL, +add Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL; +alter table host +add Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL, +add Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL; + From 088406deb97d5e7671b7d4b12214786f675cdee3 Mon Sep 17 00:00:00 2001 From: "greg@mysql.com" <> Date: Thu, 4 Sep 2003 16:00:05 -0400 Subject: [PATCH 3/3] Windows fix to avoid VC++ 6.0 compiler bug, which prevents compilation when function calls are present inside an expanded inline function --- innobase/fsp/fsp0fsp.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/innobase/fsp/fsp0fsp.c b/innobase/fsp/fsp0fsp.c index 20bf4972f64..8727c5156e4 100644 --- a/innobase/fsp/fsp0fsp.c +++ b/innobase/fsp/fsp0fsp.c @@ -2656,7 +2656,13 @@ fseg_free_page_low( ulint not_full_n_used; ulint state; ulint i; - char errbuf[200]; + char errbuf[200]; + +#ifdef __WIN__ + dulint desm; + dulint segm; +#endif + ut_ad(seg_inode && mtr); ut_ad(mach_read_from_4(seg_inode + FSEG_MAGIC_N) == @@ -2736,7 +2742,10 @@ fseg_free_page_low( fprintf(stderr, "InnoDB: Dump of the segment inode: %s\n", errbuf); - fprintf(stderr, + +#ifndef __WIN__ + + fprintf(stderr, "InnoDB: Serious error: InnoDB is trying to free space %lu page %lu,\n" "InnoDB: which does not belong to segment %lu %lu but belongs\n" "InnoDB: to segment %lu %lu.\n", @@ -2750,6 +2759,26 @@ fseg_free_page_low( ut_dulint_get_low( mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr))); +#else + +/* More pedantic usage to avoid VC++ 6.0 compiler errors due to inline + function expansion issues */ + + desm = mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr); + segm = mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr); + + fprintf(stderr, +"InnoDB: Serious error: InnoDB is trying to free space %lu page %lu,\n" +"InnoDB: which does not belong to segment %lu %lu but belongs\n" +"InnoDB: to segment %lu %lu.\n", + space, page, + ut_dulint_get_high(desm), + ut_dulint_get_low(desm), + ut_dulint_get_high(segm), + ut_dulint_get_low(segm)); + +#endif + fprintf(stderr, "InnoDB: If the InnoDB recovery crashes here, see section 6.1\n" "InnoDB: of http://www.innodb.com/ibman.html about forcing recovery.\n");