Browse Source
Bug#25452 mysql_upgrade access denied
Bug#25452 mysql_upgrade access denied
- Improve mysql_upgrade and add comments describing it's logic - Don't look for mysql and mysqlcheck randomly, use dir where mysql_upgrade was started from - Don't look for mysql_fix_privilege_tables.sql randomly, compile in the mysql_fix_privilege_tables.sql file and use that to upgrade the system tables of MySQL - Check for any unexpected error returned from runnning the mysql_fix_privilege_tables SQL - Fix bug#26639, bug#24248 and bug#25405 BitKeeper/etc/ignore: Added scripts/comp_sql scripts/mysql_fix_privilege_tables_sql.c to the ignore list CMakeLists.txt: Build files also in scripts/ Makefile.am: Build scripts/ a little earlier to make the scripts/mysql_fix_privilege_tables_sql.c file available when client/ is built client/mysql_upgrade.c: Updated version of mysql_upgrade with comments and logical functions include/my_global.h: Move IF_WIN macro to my_global.h fr from sql/mysql_priv.h mysql-test/r/mysql_upgrade.result: Update result mysql-test/t/mysql_upgrade.test: Add more tests for different bugs related to mysql_upgrade scripts/Makefile.am: Build comp_sql and mysql_fix_privilege_tables_sql.c sql/mysql_priv.h: Move IF_WIN macro to my_global.h fr from sql/mysql_priv.h scripts/CMakeLists.txt: New BitKeeper file ``scripts/CMakeLists.txt'' scripts/comp_sql.c: New BitKeeper file ``scripts/comp_sql.c''pull/374/head
13 changed files with 963 additions and 611 deletions
-
2.bzrignore
-
1CMakeLists.txt
-
4Makefile.am
-
1188client/mysql_upgrade.c
-
8include/my_global.h
-
35mysql-test/r/bdb_notembedded.result
-
87mysql-test/r/mysql_upgrade.result
-
38mysql-test/t/bdb_notembedded.test
-
48mysql-test/t/mysql_upgrade.test
-
28scripts/CMakeLists.txt
-
14scripts/Makefile.am
-
119scripts/comp_sql.c
-
2sql/mysql_priv.h
1188
client/mysql_upgrade.c
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,35 @@ |
|||
set autocommit=1; |
|||
reset master; |
|||
create table bug16206 (a int); |
|||
insert into bug16206 values(1); |
|||
start transaction; |
|||
insert into bug16206 values(2); |
|||
commit; |
|||
show binlog events; |
|||
Log_name Pos Event_type Server_id End_log_pos Info |
|||
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4 |
|||
f n Query 1 n use `test`; create table bug16206 (a int) |
|||
f n Query 1 n use `test`; insert into bug16206 values(1) |
|||
f n Query 1 n use `test`; insert into bug16206 values(2) |
|||
drop table bug16206; |
|||
reset master; |
|||
create table bug16206 (a int) engine= bdb; |
|||
insert into bug16206 values(0); |
|||
insert into bug16206 values(1); |
|||
start transaction; |
|||
insert into bug16206 values(2); |
|||
commit; |
|||
insert into bug16206 values(3); |
|||
show binlog events; |
|||
Log_name Pos Event_type Server_id End_log_pos Info |
|||
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4 |
|||
f n Query 1 n use `test`; create table bug16206 (a int) engine= bdb |
|||
f n Query 1 n use `test`; insert into bug16206 values(0) |
|||
f n Query 1 n use `test`; insert into bug16206 values(1) |
|||
f n Query 1 n use `test`; BEGIN |
|||
f n Query 1 n use `test`; insert into bug16206 values(2) |
|||
f n Query 1 n use `test`; COMMIT |
|||
f n Query 1 n use `test`; insert into bug16206 values(3) |
|||
drop table bug16206; |
|||
set autocommit=0; |
|||
End of 5.0 tests |
|||
@ -0,0 +1,38 @@ |
|||
-- source include/not_embedded.inc |
|||
-- source include/have_bdb.inc |
|||
|
|||
# |
|||
# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode |
|||
# |
|||
set autocommit=1; |
|||
|
|||
let $VERSION=`select version()`; |
|||
|
|||
reset master; |
|||
create table bug16206 (a int); |
|||
insert into bug16206 values(1); |
|||
start transaction; |
|||
insert into bug16206 values(2); |
|||
commit; |
|||
--replace_result $VERSION VERSION |
|||
--replace_column 1 f 2 n 5 n |
|||
show binlog events; |
|||
drop table bug16206; |
|||
|
|||
reset master; |
|||
create table bug16206 (a int) engine= bdb; |
|||
insert into bug16206 values(0); |
|||
insert into bug16206 values(1); |
|||
start transaction; |
|||
insert into bug16206 values(2); |
|||
commit; |
|||
insert into bug16206 values(3); |
|||
--replace_result $VERSION VERSION |
|||
--replace_column 1 f 2 n 5 n |
|||
show binlog events; |
|||
drop table bug16206; |
|||
|
|||
set autocommit=0; |
|||
|
|||
|
|||
--echo End of 5.0 tests |
|||
@ -0,0 +1,28 @@ |
|||
# Copyright (C) 2006 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; version 2 of the License. |
|||
# |
|||
# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
|||
|
|||
|
|||
ADD_EXECUTABLE(comp_sql comp_sql.c) |
|||
TARGET_LINK_LIBRARIES(comp_sql dbug mysys strings) |
|||
|
|||
# Build comp_sql - used for embedding SQL in C or C++ programs |
|||
GET_TARGET_PROPERTY(COMP_SQL_EXE comp_sql LOCATION) |
|||
|
|||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/client/mysql_fix_privilege_tables_sql.c |
|||
COMMAND ${COMP_SQL_EXE} |
|||
${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables.sql |
|||
${PROJECT_SOURCE_DIR}/client/mysql_fix_privilege_tables_sql.c |
|||
DEPENDS comp_sql ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables.sql) |
|||
|
|||
@ -0,0 +1,119 @@ |
|||
/* Copyright (C) 2004 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; version 2 of the License. |
|||
|
|||
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 */ |
|||
|
|||
/* |
|||
Written by Magnus Svensson |
|||
*/ |
|||
|
|||
/* |
|||
Converts a SQL file into a C file that can be compiled and linked |
|||
into other programs |
|||
*/ |
|||
|
|||
#include <stdarg.h> |
|||
#include <stdlib.h> |
|||
#include <stdio.h> |
|||
|
|||
FILE *in, *out; |
|||
|
|||
static void die(const char *fmt, ...) |
|||
{ |
|||
va_list args; |
|||
|
|||
/* Print the error message */ |
|||
fprintf(stderr, "FATAL ERROR: "); |
|||
if (fmt) |
|||
{ |
|||
va_start(args, fmt); |
|||
vfprintf(stderr, fmt, args); |
|||
va_end(args); |
|||
} |
|||
else |
|||
fprintf(stderr, "unknown error"); |
|||
fprintf(stderr, "\n"); |
|||
fflush(stderr); |
|||
|
|||
/* Close any open files */ |
|||
if (in) |
|||
fclose(in); |
|||
if (out) |
|||
fclose(out); |
|||
|
|||
exit(1); |
|||
} |
|||
|
|||
|
|||
int main(int argc, char *argv[]) |
|||
{ |
|||
char buff[512]; |
|||
char* infile_name= argv[1]; |
|||
char* outfile_name= argv[2]; |
|||
char* end= infile_name; |
|||
|
|||
if (argc != 3) |
|||
die("Usage: comp_sql <sql_filename> <c_filename>"); |
|||
|
|||
/* Open input and output file */ |
|||
if (!(in= fopen(infile_name, "r"))) |
|||
die("Failed to open SQL file '%s'", infile_name); |
|||
if (!(out= fopen(outfile_name, "w"))) |
|||
die("Failed to open output file '%s'", outfile_name); |
|||
|
|||
while(*end && *end != '.') |
|||
end++; |
|||
*end= 0; |
|||
fprintf(out, "const char* %s={\"\\\n", infile_name); |
|||
|
|||
while (fgets(buff, sizeof(buff), in)) |
|||
{ |
|||
char *curr= buff; |
|||
while (*curr) |
|||
{ |
|||
if (*curr == '\n') |
|||
{ |
|||
/* |
|||
Reached end of line, add escaped newline, escaped |
|||
backslash and a newline to outfile |
|||
*/ |
|||
fprintf(out, "\\n\\\n"); |
|||
curr++; |
|||
} |
|||
else if (*curr == '\r') |
|||
{ |
|||
curr++; /* Skip */ |
|||
} |
|||
else |
|||
{ |
|||
if (*curr == '"') |
|||
{ |
|||
/* Needs escape */ |
|||
fputc('\\', out); |
|||
} |
|||
|
|||
fputc(*curr, out); |
|||
curr++; |
|||
} |
|||
} |
|||
} |
|||
|
|||
fprintf(out, "\\\n\"};\n"); |
|||
|
|||
fclose(in); |
|||
fclose(out); |
|||
|
|||
exit(0); |
|||
|
|||
} |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue