mirror of
https://github.com/MariaDB/server.git
synced 2026-04-29 03:35:34 +02:00
manual merge
This commit is contained in:
commit
94c3287616
10 changed files with 681 additions and 50 deletions
71
VC++Files/client/mysql_upgrade.dsp
Normal file
71
VC++Files/client/mysql_upgrade.dsp
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
# Microsoft Developer Studio Project File - Name="mysql_upgrade" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=mysql_upgrade - Win32 Release
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "mysql_upgrade.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "mysql_upgrade.mak" CFG="mysql_upgrade - Win32 Release"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "mysql_upgrade - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "mysql_upgrade___Win32_Release"
|
||||
# PROP BASE Intermediate_Dir "mysql_upgrade___Win32_Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "mysql_upgrade___Win32_Release"
|
||||
# PROP Intermediate_Dir "mysql_upgrade___Win32_Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /D "NDEBUG" /D "DBUG_OFF" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /Fp"Release/mysql_upgrade.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
|
||||
# ADD BASE RSC /l 0x416 /d "NDEBUG"
|
||||
# ADD RSC /l 0x416 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /pdb:"release/mysql_upgrade.pdb" /machine:I386 /out:"../client_release/mysql_upgrade.exe" /libpath:"..\lib_release\\"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
# Begin Target
|
||||
|
||||
# Name "mysql_upgrade - Win32 Release"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\mysql_upgrade.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
77
VC++Files/client/mysql_upgrade_ia64.dsp
Normal file
77
VC++Files/client/mysql_upgrade_ia64.dsp
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
# Microsoft Developer Studio Project File - Name="mysql_upgrade" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=mysql_upgrade - Win32 Release
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "mysql_upgrade.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "mysql_upgrade.mak" CFG="mysql_upgrade - Win32 Release"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "mysql_upgrade - WinIA64 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "mysql - WinIA64 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "mysql_upgrade___WinIA64_Release"
|
||||
# PROP BASE Intermediate_Dir "mysql_upgrade___WinIA64_Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "mysql_upgrade___WinIA64_Release"
|
||||
# PROP Intermediate_Dir "mysql_upgrade___WinIA64_Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /I "../include" /D"NDEBUG" /D"DBUG_OFF" /D"_CONSOLE" /D"_MBCS" /D"_WINDOWS" /Fp"Release/mysql_upgrade.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c /O2 /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600
|
||||
# ADD BASE RSC /l 0x416 /d "NDEBUG"
|
||||
# ADD RSC /l 0x416 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64
|
||||
# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib zlib.lib /nologo /subsystem:console /pdb:"release/mysql_upgrade.pdb" /machine:IA64 /out:"../client_release/mysql_upgrade.exe" /libpath:"..\lib_release\\" /incremental:no
|
||||
# SUBTRACT LINK32
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "mysql_upgrade - WinIA64 Release"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\mysql_upgrade.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
|
|
@ -339,6 +339,27 @@ Package=<4>
|
|||
|
||||
###############################################################################
|
||||
|
||||
Project: "mysql_upgrade"=".\client\mysql_upgrade.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysqlclient
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name zlib
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysys
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "mysqlbinlog"=".\mysqlbinlog\mysqlbinlog.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
|
|
@ -415,6 +436,8 @@ Package=<4>
|
|||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysqladmin
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name myqsl_upgrade
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysqldump
|
||||
|
|
@ -802,6 +825,8 @@ Package=<4>
|
|||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysqladmin
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysql_upgrade
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysql_client_test
|
||||
|
|
|
|||
|
|
@ -436,6 +436,24 @@ Package=<4>
|
|||
|
||||
###############################################################################
|
||||
|
||||
Project: "mysql_upgrade"=".\client\mysql_upgrade_ia64.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysqlclient
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name zlib
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "mysqlbinlog"=".\mysqlbinlog\mysqlbinlog_ia64.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
|
|
@ -500,6 +518,8 @@ Package=<4>
|
|||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysqladmin_ia64
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysql_upgrade_ia64
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mysqldump
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ LDADD= @CLIENT_EXTRA_LDFLAGS@ $(CLIENT_THREAD_LIBS) \
|
|||
bin_PROGRAMS = mysql mysqladmin mysqlcheck mysqlshow \
|
||||
mysqldump mysqlimport mysqltest mysqlbinlog \
|
||||
mysqltestmanagerc mysqltestmanager-pwgen \
|
||||
mysqlslap
|
||||
mysqlslap mysql_upgrade
|
||||
noinst_HEADERS = sql_string.h completion_hash.h my_readline.h \
|
||||
client_priv.h
|
||||
mysql_SOURCES = mysql.cc readline.cc sql_string.cc completion_hash.cc
|
||||
|
|
@ -72,11 +72,14 @@ mysqlslap_SOURCES= mysqlslap.c \
|
|||
mysqldump_SOURCES= mysqldump.c my_user.c $(yassl_dummy_link_fix)
|
||||
mysqlimport_SOURCES= mysqlimport.c \
|
||||
$(yassl_dummy_link_fix)
|
||||
mysql_upgrade_SOURCES= mysql_upgrade.c $(yassl_dummy_link_fix)
|
||||
sql_src=log_event.h mysql_priv.h log_event.cc my_decimal.h my_decimal.cc
|
||||
strings_src=decimal.c
|
||||
|
||||
# Fix for mit-threads
|
||||
DEFS = -DUNDEF_THREADS_HACK
|
||||
DEFS = -DUNDEF_THREADS_HACK \
|
||||
-DDEFAULT_MYSQL_HOME="\"$(prefix)\"" \
|
||||
-DDATADIR="\"$(localstatedir)\""
|
||||
EXTRA_DIST = get_password.c cmakelists.txt
|
||||
|
||||
link_sources:
|
||||
|
|
|
|||
400
client/mysql_upgrade.c
Normal file
400
client/mysql_upgrade.c
Normal file
|
|
@ -0,0 +1,400 @@
|
|||
/* Copyright (C) 2000 MySQL AB
|
||||
|
||||
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 */
|
||||
|
||||
#include "client_priv.h"
|
||||
#include <my_dir.h>
|
||||
|
||||
static my_bool opt_force= 0, opt_verbose= 0, tty_password= 0;
|
||||
static char *user= (char*) "root", *basedir= 0, *datadir= 0, *opt_password= 0;
|
||||
static my_bool upgrade_defaults_created= 0;
|
||||
static my_string opt_mysql_port, opt_mysql_unix_port= 0;
|
||||
static char *default_dbug_option= (char*) "d:t:O,/tmp/comp_err.trace";
|
||||
static my_bool info_flag= 0;
|
||||
|
||||
static struct my_option my_long_options[]=
|
||||
{
|
||||
{"help", '?', "Display this help message and exit.", 0, 0, 0, GET_NO_ARG,
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"basedir", 'b', "Specifies the directory where MySQL is installed",
|
||||
(gptr*) &basedir,
|
||||
(gptr*) &basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"datadir", 'd', "Specifies the data directory", (gptr*) &datadir,
|
||||
(gptr*) &datadir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#ifdef DBUG_OFF
|
||||
{"debug", '#', "This is a non-debug version. Catch this and exit",
|
||||
0, 0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#else
|
||||
{"debug", '#', "Output debug log", (gptr *) & default_dbug_option,
|
||||
(gptr *) & default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-info", 'T', "Print some debug info at exit.", (gptr *) & info_flag,
|
||||
(gptr *) & info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"force", 'f', "Continue even if we get an sql-error.",
|
||||
(gptr*) &opt_force, (gptr*) &opt_force, 0, GET_BOOL, NO_ARG, 0, 0,
|
||||
0, 0, 0, 0},
|
||||
{"password", 'p',
|
||||
"Password to use when connecting to server. If password is not given it's solicited on the tty.",
|
||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &opt_mysql_port,
|
||||
(gptr*) &opt_mysql_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0,
|
||||
0},
|
||||
{"protocol", OPT_MYSQL_PROTOCOL,
|
||||
"The protocol of connection (tcp,socket,pipe,memory).",
|
||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"socket", 'S', "Socket file to use for connection.",
|
||||
(gptr*) &opt_mysql_unix_port, (gptr*) &opt_mysql_unix_port, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"user", 'u', "User for login if not current user.", (gptr*) &user,
|
||||
(gptr*) &user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"verbose", 'v', "Display more output about the process", (gptr*) &opt_verbose,
|
||||
(gptr *) &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
||||
};
|
||||
static const char *load_default_groups[]=
|
||||
{
|
||||
"mysql_upgrade", "client", 0
|
||||
};
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
static my_bool
|
||||
get_one_option(int optid, const struct my_option *opt __attribute__ ((unused)),
|
||||
char *argument)
|
||||
{
|
||||
switch (optid) {
|
||||
case '?':
|
||||
puts
|
||||
("MySQL utility script to upgrade database to the current server version");
|
||||
puts("");
|
||||
my_print_help(my_long_options);
|
||||
exit(0);
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||
break;
|
||||
case 'f':
|
||||
opt_force= TRUE;
|
||||
break;
|
||||
case 'p':
|
||||
tty_password= 1;
|
||||
if (argument)
|
||||
{
|
||||
char *start= argument;
|
||||
my_free(opt_password, MYF(MY_ALLOW_ZERO_PTR));
|
||||
opt_password= my_strdup(argument, MYF(MY_FAE));
|
||||
while (*argument)
|
||||
*argument++= 'x'; /* Destroy argument */
|
||||
if (*start)
|
||||
start[1]= 0; /* Cut length of argument */
|
||||
tty_password= 0;
|
||||
}
|
||||
break;
|
||||
default:;
|
||||
};
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* buffer should be not smaller than FN_REFLEN */
|
||||
static my_bool test_file_exists_res(const char *dir, const char *fname,
|
||||
char *buffer, char **buf_end)
|
||||
{
|
||||
MY_STAT stat_info;
|
||||
|
||||
*buf_end= strxnmov(buffer, FN_REFLEN-1, dir, "/", fname, NullS);
|
||||
unpack_filename(buffer, buffer);
|
||||
return my_stat(buffer, &stat_info, MYF(0)) != 0;
|
||||
}
|
||||
|
||||
|
||||
static my_bool test_file_exists(const char *dir, const char *fname)
|
||||
{
|
||||
char path[FN_REFLEN];
|
||||
char *path_end;
|
||||
return test_file_exists_res(dir, fname, path, &path_end);
|
||||
}
|
||||
|
||||
|
||||
static int create_check_file(const char *path)
|
||||
{
|
||||
File check_file= my_open(path, O_CREAT | O_WRONLY, MYF(MY_FAE | MY_WME));
|
||||
int error;
|
||||
|
||||
if (check_file < 0)
|
||||
return 1;
|
||||
|
||||
error= my_write(check_file, VERSION, strlen(VERSION), MYF(MY_WME | MY_FNABP));
|
||||
error= my_close(check_file, MYF(MY_FAE | MY_WME)) || error;
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
static int create_defaults_file(const char *path, const char *our_defaults_path)
|
||||
{
|
||||
uint b_read;
|
||||
File our_defaults_file;
|
||||
char buffer[512];
|
||||
char *buffer_end;
|
||||
int error;
|
||||
|
||||
/* check if the defaults file is needed at all */
|
||||
if (!opt_password)
|
||||
return 0;
|
||||
|
||||
File defaults_file= my_open(path, O_BINARY | O_CREAT | O_WRONLY,
|
||||
MYF(MY_FAE | MY_WME));
|
||||
|
||||
if (defaults_file < 0)
|
||||
return 1;
|
||||
upgrade_defaults_created= 1;
|
||||
if (our_defaults_path)
|
||||
{
|
||||
our_defaults_file= my_open(our_defaults_path, O_RDONLY,
|
||||
MYF(MY_FAE | MY_WME));
|
||||
if (our_defaults_file < 0)
|
||||
return 1;
|
||||
do
|
||||
{
|
||||
if (((b_read= my_read(our_defaults_file, buffer,
|
||||
sizeof(buffer), MYF(MY_WME))) == MY_FILE_ERROR) ||
|
||||
my_write(defaults_file, buffer, b_read, MYF(MY_FNABP | MY_WME)))
|
||||
{
|
||||
error= 1;
|
||||
goto close_return;
|
||||
}
|
||||
} while (b_read == sizeof(buffer));
|
||||
}
|
||||
buffer_end= strnmov(buffer, "\n[client]", sizeof(buffer));
|
||||
if (opt_password)
|
||||
buffer_end= strxnmov(buffer, sizeof(buffer),
|
||||
"\npassword=", opt_password, NullS);
|
||||
error= my_write(defaults_file, buffer, (int) (buffer_end - buffer),
|
||||
MYF(MY_WME | MY_FNABP));
|
||||
close_return:
|
||||
return my_close(defaults_file, MYF(MY_WME)) || error;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char bindir[FN_REFLEN];
|
||||
char *bindir_end, *buf_end;
|
||||
char datadir_buf[FN_REFLEN];
|
||||
char mysqlcheck_line[FN_REFLEN], *mysqlcheck_end;
|
||||
char check_file_name[FN_REFLEN];
|
||||
int check_file;
|
||||
char fix_priv_tables_cmd[FN_REFLEN], *fix_cmd_end;
|
||||
char script_line[FN_REFLEN];
|
||||
int error;
|
||||
char *forced_defaults_file;
|
||||
char *forced_extra_defaults;
|
||||
char *defaults_group_suffix;
|
||||
char upgrade_defaults_path[FN_REFLEN], *defaults_to_use= 0;
|
||||
char port_socket[100], *port_socket_end;
|
||||
|
||||
MY_INIT(argv[0]);
|
||||
#ifdef __NETWARE__
|
||||
setscreenmode(SCR_AUTOCLOSE_ON_EXIT);
|
||||
#endif
|
||||
|
||||
load_defaults("my", load_default_groups, &argc, &argv);
|
||||
|
||||
if ((error= handle_options(&argc, &argv, my_long_options, get_one_option)))
|
||||
exit(error);
|
||||
|
||||
if (tty_password)
|
||||
opt_password= get_tty_password(NullS);
|
||||
|
||||
/* Check if we want to force the use a specific default file */
|
||||
get_defaults_options(argc, argv,
|
||||
&forced_defaults_file, &forced_extra_defaults,
|
||||
&defaults_group_suffix);
|
||||
|
||||
port_socket_end= port_socket;
|
||||
if (opt_mysql_port)
|
||||
port_socket_end= strxnmov(port_socket, sizeof(port_socket) - 1, " --port=",
|
||||
opt_mysql_port, NullS);
|
||||
if (opt_mysql_unix_port)
|
||||
port_socket_end= strxnmov(port_socket_end,
|
||||
sizeof(port_socket) -
|
||||
(int)(port_socket_end - port_socket) - 1,
|
||||
" --socket=", opt_mysql_unix_port, NullS);
|
||||
*port_socket_end= 0;
|
||||
|
||||
if (basedir)
|
||||
{
|
||||
bindir_end= strmake(bindir, basedir, sizeof(bindir)-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (test_file_exists("./share/mysql/english", "errmsg.sys")
|
||||
&& (test_file_exists("./bin", "mysqld") ||
|
||||
test_file_exists("./libexec", "mysqld")))
|
||||
{
|
||||
getcwd(bindir, sizeof(bindir));
|
||||
bindir_end= bindir + strlen(bindir);
|
||||
}
|
||||
else
|
||||
{
|
||||
bindir_end= strmake(bindir, DEFAULT_MYSQL_HOME, sizeof(bindir)-1);
|
||||
}
|
||||
}
|
||||
|
||||
if (!datadir)
|
||||
{
|
||||
datadir= datadir_buf;
|
||||
if (test_file_exists(bindir, "data/mysql"))
|
||||
{
|
||||
*strxnmov(datadir_buf, sizeof(datadir_buf)-1, bindir, "/data", NullS)= 0;
|
||||
}
|
||||
else if (test_file_exists(bindir, "var/mysql"))
|
||||
{
|
||||
*strxnmov(datadir_buf, sizeof(datadir_buf)-1, bindir, "/var", NullS)= 0;
|
||||
}
|
||||
else
|
||||
datadir= (char*) DATADIR;
|
||||
}
|
||||
|
||||
strmake(bindir_end, "/bin", sizeof(bindir) - (int) (bindir_end - bindir)-1);
|
||||
|
||||
if (!test_file_exists_res
|
||||
(bindir, "mysqlcheck", mysqlcheck_line, &mysqlcheck_end))
|
||||
{
|
||||
printf("Can't find program '%s'\n", mysqlcheck_line);
|
||||
puts("Please restart with --basedir=mysql-install-directory");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (!test_file_exists(datadir, "mysql/user.frm"))
|
||||
{
|
||||
puts
|
||||
("Can't find data directory. Please restart with --datadir=path-to-data-dir");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* create the modified defaults file to be used by mysqlcheck */
|
||||
/* and mysql tools */
|
||||
*strxnmov(upgrade_defaults_path, sizeof(upgrade_defaults_path)-1,
|
||||
datadir, "/upgrade_defaults", NullS)= 0;
|
||||
unpack_filename(upgrade_defaults_path, upgrade_defaults_path);
|
||||
if ((error=
|
||||
create_defaults_file(upgrade_defaults_path, forced_extra_defaults)))
|
||||
goto err_exit;
|
||||
|
||||
defaults_to_use= upgrade_defaults_created ?
|
||||
upgrade_defaults_path : forced_extra_defaults;
|
||||
|
||||
if (test_file_exists_res(datadir, "mysql_upgrade_info", check_file_name,
|
||||
&buf_end) && !opt_force)
|
||||
{
|
||||
char chf_buffer[50];
|
||||
int b_read;
|
||||
check_file= my_open(check_file_name, O_RDONLY, MYF(0));
|
||||
b_read= my_read(check_file, chf_buffer, sizeof(chf_buffer)-1, MYF(0));
|
||||
chf_buffer[b_read]= 0;
|
||||
my_close(check_file, MYF(0));
|
||||
if (!strcmp(chf_buffer, VERSION))
|
||||
{
|
||||
if (opt_verbose)
|
||||
puts("mysql_upgrade already done for this version");
|
||||
goto fix_priv_tables;
|
||||
}
|
||||
}
|
||||
|
||||
if (defaults_to_use)
|
||||
{
|
||||
mysqlcheck_end= strxnmov(mysqlcheck_end,
|
||||
sizeof(mysqlcheck_line) - (int) (mysqlcheck_end -
|
||||
mysqlcheck_line),
|
||||
" --defaults-extra-file=", defaults_to_use,NullS);
|
||||
}
|
||||
|
||||
mysqlcheck_end= strxnmov(mysqlcheck_end,
|
||||
sizeof(mysqlcheck_line) -
|
||||
(int) (mysqlcheck_end - mysqlcheck_line - 1),
|
||||
" --check-upgrade --all-databases --auto-repair --user=",
|
||||
user, port_socket, NullS);
|
||||
*mysqlcheck_end= 0;
|
||||
|
||||
if (opt_verbose)
|
||||
printf("Running %s\n", mysqlcheck_line);
|
||||
if ((error= system(mysqlcheck_line)))
|
||||
{
|
||||
printf("Error executing '%s'\n", mysqlcheck_line);
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
if ((error= create_check_file(check_file_name)))
|
||||
goto err_exit;
|
||||
|
||||
fix_priv_tables:
|
||||
if (!test_file_exists_res(bindir, "mysql", fix_priv_tables_cmd, &fix_cmd_end))
|
||||
{
|
||||
puts("Could not find MySQL command-line client (mysql).");
|
||||
puts
|
||||
("Please use --basedir to specify the directory where MySQL is installed.");
|
||||
error= 1;
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
if (!test_file_exists_res(basedir,
|
||||
"support_files/mysql_fix_privilege_tables.sql",
|
||||
script_line, &buf_end)
|
||||
&& !test_file_exists_res(basedir, "share/mysql_fix_privilege_tables.sql",
|
||||
script_line, &buf_end)
|
||||
&& !test_file_exists_res(basedir,
|
||||
"share/mysql/mysql_fix_privilege_tables.sql",
|
||||
script_line, &buf_end)
|
||||
&& !test_file_exists_res(basedir,
|
||||
"scripts/mysql_fix_privilege_tables.sql",
|
||||
script_line, &buf_end)
|
||||
&& !test_file_exists_res("/usr/local/mysql/share/mysql",
|
||||
"mysql_fix_privilege_tables.sql", script_line,
|
||||
&buf_end))
|
||||
{
|
||||
puts("Could not find file mysql_fix_privilege_tables.sql");
|
||||
puts
|
||||
("Please use --basedir to specify the directory where MySQL is installed");
|
||||
error= 1;
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
if (defaults_to_use)
|
||||
{
|
||||
fix_cmd_end= strxnmov(fix_cmd_end,
|
||||
sizeof(fix_priv_tables_cmd) -
|
||||
(int) (fix_cmd_end - fix_priv_tables_cmd - 1),
|
||||
" --defaults-extra-file=", defaults_to_use, NullS);
|
||||
}
|
||||
fix_cmd_end= strxnmov(fix_cmd_end,
|
||||
sizeof(fix_priv_tables_cmd) - (int) (fix_cmd_end -
|
||||
fix_priv_tables_cmd),
|
||||
" --user=", user, port_socket, " mysql < ", script_line, NullS);
|
||||
*fix_cmd_end= 0;
|
||||
|
||||
if ((error= system(fix_priv_tables_cmd)))
|
||||
{
|
||||
/* Problem is that the 'Duplicate column' error */
|
||||
/* which is not a bug for the script makes 'mysql' return */
|
||||
/* an error */
|
||||
/* printf("Error executing '%s'\n", fix_priv_tables_cmd); */
|
||||
}
|
||||
|
||||
err_exit:
|
||||
if (upgrade_defaults_created)
|
||||
my_delete(upgrade_defaults_path, MYF(0));
|
||||
my_end(info_flag ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
|
||||
return error;
|
||||
} /* main */
|
||||
|
|
@ -848,4 +848,21 @@ t1 CREATE TABLE `t1` (
|
|||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION p0 VALUES IN (NULL) ENGINE = MyISAM)
|
||||
DROP TABLE t1;
|
||||
create table t1 (s1 int auto_increment primary key)
|
||||
partition by list (s1)
|
||||
(partition p1 values in (1),
|
||||
partition p2 values in (2),
|
||||
partition p3 values in (3));
|
||||
insert into t1 values (null);
|
||||
insert into t1 values (null);
|
||||
insert into t1 values (null);
|
||||
select auto_increment from information_schema.tables where table_name='t1';
|
||||
auto_increment
|
||||
4
|
||||
select * from t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
3
|
||||
drop table t1;
|
||||
End of 5.1 tests
|
||||
|
|
|
|||
|
|
@ -4,49 +4,50 @@
|
|||
#
|
||||
# Separate the test case name and the comment with ':'.
|
||||
#
|
||||
# <testcasename> : Comment test
|
||||
# <testcasename> : BUG#<xxxx> <date disabled> <disabler> <comment>
|
||||
#
|
||||
# Do not use any TAB characters for whitespace.
|
||||
#
|
||||
##############################################################################
|
||||
events_bugs : test case unstable (race conditions). andrey will fix
|
||||
events_stress : test case unstable. andrey will fix
|
||||
events : test case unstable. andrey will fix
|
||||
#ndb_alter_table_row : sometimes wrong error 1015!=1046
|
||||
ndb_autodiscover : Needs to be fixed w.r.t binlog
|
||||
ndb_autodiscover2 : Needs to be fixed w.r.t binlog
|
||||
#ndb_binlog_basic : Results are not deterministic, Tomas will fix
|
||||
#ndb_binlog_multi : Results are not deterministic, Tomas will fix
|
||||
ndb_cache2 : Bug #18597
|
||||
ndb_gis : Bug #18600
|
||||
ndb_load : Bug#17233
|
||||
partition_03ndb : Bug#16385
|
||||
ps_7ndb : dbug assert in RBR mode when executing test suite
|
||||
#rpl_bit_npk : Bug#13418
|
||||
#rpl_ddl : Bug#15963 SBR does not show "Definer" correctly
|
||||
rpl_ndb_dd_basic : Bug #18569
|
||||
rpl_row_basic_7ndb : Bug #18923
|
||||
rpl_ndb_dd_advance : Bug #18924
|
||||
rpl_ndb_multi_update2 : Bug #18928
|
||||
rpl_ndb_2innodb : assertion in get_parts_for_update()
|
||||
rpl_ndb_2myisam : assertion in get_parts_for_update()
|
||||
rpl_ndb_auto_inc : Bug#17086
|
||||
rpl_ndb_basic : Bug #18592
|
||||
#rpl_ndb_blob : interferes with following tests, causing hang
|
||||
#rpl_ndb_blob2 : interferes with following tests, causing hang
|
||||
rpl_ndb_ddl : master hangs
|
||||
#rpl_ndb_delete_nowhere : Bug#17400: delete & update of rows in table without pk fails
|
||||
rpl_ndb_insert_ignore : Bug #18567
|
||||
rpl_ndb_innodb2ndb : Bug#18261: Cluster Replication: tests rpl_ndb_xxx2ndb fails
|
||||
rpl_ndb_myisam2ndb : Bug#18261: Cluster Replication: tests rpl_ndb_xxx2ndb fails
|
||||
rpl_ndb_multi_update3 : Bug#18627: Cluster Replication: rpl_ndb_multi_update3 fails on Intel 64 bit
|
||||
rpl_ndb_log : result not deterministic, TBD if should remove
|
||||
rpl_ndb_relay_space : Bug#16993
|
||||
#rpl_ndb_multi_update3 : Bug#17400: delete & update of rows in table without pk fails
|
||||
rpl_switch_stm_row_mixed : Bug #18590
|
||||
rpl_row_inexist_tbl : Disabled since patch makes this test wait forever
|
||||
rpl_sp : Bug#16456
|
||||
rpl_until : Unstable test case, bug#15886
|
||||
sp-goto : GOTO is currently is disabled - will be fixed in the future
|
||||
mysqldump : BUG#18078
|
||||
udf : Bug#18564 (Permission by Brian)
|
||||
events_bugs : BUG#17619 2006-02-21 andrey Test case unstable (race conditions)
|
||||
events_stress : BUG#17619 2006-02-21 andrey Test case unstable
|
||||
events : BUG#17619 2006-02-21 andrey Test case unstable
|
||||
ndb_autodiscover : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog
|
||||
ndb_autodiscover2 : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog
|
||||
ndb_cache2 : BUG#18597 2006-03-28 brian
|
||||
ndb_gis : BUG#18600 2006-03-28 brian
|
||||
ndb_load : BUG#17233 2006-02-16 jmiller
|
||||
partition_03ndb : BUG#16385 2006-03-24 mikael
|
||||
ps_7ndb : BUG#18950 2006-02-16 jmiller Dbug assert in RBR mode when executing test suite
|
||||
rpl_ndb_dd_basic : BUG#18569 2006-03-28 brian
|
||||
rpl_row_basic_7ndb : BUG#18923 2006-04-09 brian
|
||||
rpl_ndb_dd_advance : BUG#18924 2006-04-09 brian
|
||||
rpl_ndb_multi_update2 : BUG#18928 2006-04-09 brian
|
||||
rpl_ndb_2innodb : BUG#18945 2006-03-22 tomas Assertion in get_parts_for_update()
|
||||
rpl_ndb_2myisam : BUG#18945 2006-03-22 tomas Assertion in get_parts_for_update()
|
||||
rpl_ndb_auto_inc : BUG#17086 2006-02-16 jmiller
|
||||
rpl_ndb_basic : BUG#18592 2006-03-28 brian
|
||||
rpl_ndb_ddl : BUG#18946 2006-03-16 mats Master hangs (Probably related to BUG#17400)
|
||||
rpl_ndb_insert_ignore : BUG#18567 2006-03-28 brian
|
||||
rpl_ndb_innodb2ndb : BUG#18261 2006-03-16 mats Cluster Replication: tests rpl_ndb_xxx2ndb fails (BUG#17400)
|
||||
rpl_ndb_myisam2ndb : BUG#18261 2006-03-16 mats Cluster Replication: tests rpl_ndb_xxx2ndb fails (BUG#17400)
|
||||
rpl_ndb_multi_update3 : BUG#18627 2006-03-29 monty Cluster Replication: rpl_ndb_multi_update3 fails on Intel 64 bit
|
||||
rpl_ndb_log : BUG#18947 2006-03-21 tomas Result not deterministic, TBD if should remove
|
||||
rpl_ndb_relay_space : BUG#16993 2006-02-16 jmiller
|
||||
rpl_switch_stm_row_mixed : BUG#18590 2006-03-28 brian
|
||||
rpl_row_inexist_tbl : BUG#18948 2006-03-09 mats Disabled since patch makes this test wait forever
|
||||
rpl_sp : BUG#16456 2006-02-16 jmiller
|
||||
rpl_until : BUG#15886 2006-02-16 jmiller Unstable test case
|
||||
sp-goto : BUG#18949 2006-02-16 jmiller GOTO is currently is disabled - will be fixed in the future
|
||||
mysqldump : BUG#18078 2006-03-10 lars
|
||||
udf : BUG#18564 2006-03-27 ian (Permission by Brian)
|
||||
|
||||
#ndb_alter_table_row : sometimes wrong error 1015!=1046
|
||||
#ndb_binlog_basic : Results are not deterministic, Tomas will fix
|
||||
#ndb_binlog_multi : Results are not deterministic, Tomas will fix
|
||||
#rpl_bit_npk : Bug#13418
|
||||
#rpl_ddl : Bug#15963 SBR does not show "Definer" correctly
|
||||
#rpl_ndb_blob : interferes with following tests, causing hang
|
||||
#rpl_ndb_blob2 : interferes with following tests, causing hang
|
||||
#rpl_ndb_delete_nowhere : Bug#17400: delete & update of rows in table without pk fails
|
||||
#rpl_ndb_multi_update3 : Bug#17400: delete & update of rows in table without pk fails
|
||||
|
|
|
|||
|
|
@ -965,4 +965,19 @@ PARTITION BY LIST (a)
|
|||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#18753 Partitions: auto_increment fails
|
||||
#
|
||||
create table t1 (s1 int auto_increment primary key)
|
||||
partition by list (s1)
|
||||
(partition p1 values in (1),
|
||||
partition p2 values in (2),
|
||||
partition p3 values in (3));
|
||||
insert into t1 values (null);
|
||||
insert into t1 values (null);
|
||||
insert into t1 values (null);
|
||||
select auto_increment from information_schema.tables where table_name='t1';
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
|
|
|||
|
|
@ -4201,11 +4201,7 @@ void ha_partition::info(uint flag)
|
|||
if (flag & HA_STATUS_AUTO)
|
||||
{
|
||||
DBUG_PRINT("info", ("HA_STATUS_AUTO"));
|
||||
/*
|
||||
The auto increment value is only maintained by the first handler
|
||||
so we will only call this.
|
||||
*/
|
||||
m_file[0]->info(HA_STATUS_AUTO);
|
||||
auto_increment_value= get_auto_increment();
|
||||
}
|
||||
if (flag & HA_STATUS_VARIABLE)
|
||||
{
|
||||
|
|
@ -5349,9 +5345,15 @@ void ha_partition::restore_auto_increment()
|
|||
|
||||
ulonglong ha_partition::get_auto_increment()
|
||||
{
|
||||
ulonglong auto_inc, max_auto_inc= 0;
|
||||
DBUG_ENTER("ha_partition::get_auto_increment");
|
||||
|
||||
DBUG_RETURN(m_file[0]->get_auto_increment());
|
||||
for (uint i= 0; i < m_tot_parts; i++)
|
||||
{
|
||||
auto_inc= m_file[i]->get_auto_increment();
|
||||
set_if_bigger(max_auto_inc, auto_inc);
|
||||
}
|
||||
DBUG_RETURN(max_auto_inc);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue