5.5 merge

This commit is contained in:
Sergei Golubchik 2013-06-06 17:51:28 +02:00
commit 4749d40c63
464 changed files with 7741 additions and 3075 deletions

View File

@ -1068,6 +1068,7 @@ vio/viotest.cpp
ylwrap ylwrap
zlib/*.ds? zlib/*.ds?
sql-bench/test-table-elimination sql-bench/test-table-elimination
sql/share/bulgarian
sql/share/czech sql/share/czech
sql/share/danish sql/share/danish
sql/share/dutch sql/share/dutch
@ -1128,6 +1129,7 @@ cmd-line-utils/libedit/emacs.h
mysql-test/collections/default.release mysql-test/collections/default.release
support-files/plugins.files support-files/plugins.files
client/mysql_plugin client/mysql_plugin
*.resource.txt
plugin/handler_socket/perl-Net-HandlerSocket/HandlerSocket.c plugin/handler_socket/perl-Net-HandlerSocket/HandlerSocket.c
plugin/handler_socket/perl-Net-HandlerSocket/blib plugin/handler_socket/perl-Net-HandlerSocket/blib
plugin/handler_socket/perl-Net-HandlerSocket/pm_to_blib plugin/handler_socket/perl-Net-HandlerSocket/pm_to_blib
@ -1145,3 +1147,4 @@ sql/db.opt
./install_manifest_*.txt ./install_manifest_*.txt
typescript typescript
mysql-test/collections/default.release.done mysql-test/collections/default.release.done
sql/sql_yacc.hh

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2005 MySQL AB # Copyright (c) 2005, 2006 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2005 MySQL AB # Copyright (c) 2005, 2006 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2005 MySQL AB # Copyright (c) 2005, 2006 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#!/bin/sh #!/bin/sh
# Copyright (C) 2004, 2005 MySQL AB # Copyright (c) 2004, 2005, 2007 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#!/bin/sh #!/bin/sh
# Copyright (C) 2004, 2005 MySQL AB # Copyright (c) 2004, 2005, 2007 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2006 MySQL AB # Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2000, 2002 MySQL AB # Copyright (c) 2000-2002, 2007 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2004, 2005 MySQL AB # Copyright (c) 2004-2006 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2005, 2007 MySQL AB # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2001, 2005 MySQL AB # Copyright (c) 2001-2006 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2004 MySQL AB # Copyright (c) 2004, 2006 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2004, 2005 MySQL AB # Copyright (c) 2004-2006 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2005 MySQL AB # Copyright (c) 2005, 2006 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /bin/sh
# Copyright (C) 2004, 2005 MySQL AB # Copyright (c) 2004-2006 MySQL AB
# Use is subject to license terms
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -332,8 +332,8 @@ INCLUDE(cmake/abi_check.cmake)
INCLUDE(cmake/tags.cmake) INCLUDE(cmake/tags.cmake)
IF(WIN32) IF(WIN32)
ADD_SUBDIRECTORY(win/packaging)
ADD_SUBDIRECTORY(win/upgrade_wizard) ADD_SUBDIRECTORY(win/upgrade_wizard)
ADD_SUBDIRECTORY(win/packaging)
ENDIF() ENDIF()
CONFIGURE_FILE(config.h.cmake ${CMAKE_BINARY_DIR}/include/my_config.h) CONFIGURE_FILE(config.h.cmake ${CMAKE_BINARY_DIR}/include/my_config.h)

View File

@ -4,5 +4,5 @@
# #
MYSQL_VERSION_MAJOR=10 MYSQL_VERSION_MAJOR=10
MYSQL_VERSION_MINOR=0 MYSQL_VERSION_MINOR=0
MYSQL_VERSION_PATCH=1 MYSQL_VERSION_PATCH=3
MYSQL_VERSION_EXTRA= MYSQL_VERSION_EXTRA=

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,4 +1,5 @@
/* Copyright (C) 2000-2002 MySQL AB /* Copyright (c) 2000-2002, 2006 MySQL AB
Use is subject to license terms
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public modify it under the terms of the GNU Library General Public

View File

@ -1,4 +1,5 @@
/* Copyright (C) 2000 MySQL AB /* Copyright (c) 2000, 2007 MySQL AB
Use is subject to license terms
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,4 +1,5 @@
/* Copyright (C) 2000 MySQL AB /* Copyright (c) 2000, 2001, 2003, 2006, 2008 MySQL AB
Use is subject to license terms
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1635,7 +1635,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
{ {
switch(optid) { switch(optid) {
case OPT_CHARSETS_DIR: case OPT_CHARSETS_DIR:
strmake(mysql_charsets_dir, argument, sizeof(mysql_charsets_dir) - 1); strmake_buf(mysql_charsets_dir, argument);
charsets_dir = mysql_charsets_dir; charsets_dir = mysql_charsets_dir;
break; break;
case OPT_DELIMITER: case OPT_DELIMITER:
@ -1648,7 +1648,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
/* Check that delimiter does not contain a backslash */ /* Check that delimiter does not contain a backslash */
if (!strstr(argument, "\\")) if (!strstr(argument, "\\"))
{ {
strmake(delimiter, argument, sizeof(delimiter) - 1); strmake_buf(delimiter, argument);
} }
else else
{ {
@ -1680,7 +1680,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
if (argument && strlen(argument)) if (argument && strlen(argument))
{ {
default_pager_set= 1; default_pager_set= 1;
strmake(pager, argument, sizeof(pager) - 1); strmake_buf(pager, argument);
strmov(default_pager, pager); strmov(default_pager, pager);
} }
else if (default_pager_set) else if (default_pager_set)
@ -2961,7 +2961,7 @@ com_charset(String *buffer __attribute__((unused)), char *line)
{ {
char buff[256], *param; char buff[256], *param;
CHARSET_INFO * new_cs; CHARSET_INFO * new_cs;
strmake(buff, line, sizeof(buff) - 1); strmake_buf(buff, line);
param= get_arg(buff, 0); param= get_arg(buff, 0);
if (!param || !*param) if (!param || !*param)
{ {
@ -3198,7 +3198,7 @@ static void init_tee(const char *file_name)
return; return;
} }
OUTFILE = new_outfile; OUTFILE = new_outfile;
strmake(outfile, file_name, FN_REFLEN-1); strmake_buf(outfile, file_name);
tee_fprintf(stdout, "Logging to file '%s'\n", file_name); tee_fprintf(stdout, "Logging to file '%s'\n", file_name);
opt_outfile= 1; opt_outfile= 1;
return; return;
@ -3827,7 +3827,7 @@ com_tee(String *buffer __attribute__((unused)),
/* eliminate the spaces before the parameters */ /* eliminate the spaces before the parameters */
while (my_isspace(charset_info,*param)) while (my_isspace(charset_info,*param))
param++; param++;
end= strmake(file_name, param, sizeof(file_name) - 1); end= strmake_buf(file_name, param);
/* remove end space from command line */ /* remove end space from command line */
while (end > file_name && (my_isspace(charset_info,end[-1]) || while (end > file_name && (my_isspace(charset_info,end[-1]) ||
my_iscntrl(charset_info,end[-1]))) my_iscntrl(charset_info,end[-1])))
@ -3888,7 +3888,7 @@ com_pager(String *buffer __attribute__((unused)),
} }
else else
{ {
end= strmake(pager_name, param, sizeof(pager_name)-1); end= strmake_buf(pager_name, param);
while (end > pager_name && (my_isspace(charset_info,end[-1]) || while (end > pager_name && (my_isspace(charset_info,end[-1]) ||
my_iscntrl(charset_info,end[-1]))) my_iscntrl(charset_info,end[-1])))
end--; end--;
@ -4101,7 +4101,7 @@ static int com_source(String *buffer __attribute__((unused)),
INFO_ERROR, 0); INFO_ERROR, 0);
while (my_isspace(charset_info,*param)) while (my_isspace(charset_info,*param))
param++; param++;
end=strmake(source_name,param,sizeof(source_name)-1); end=strmake_buf(source_name, param);
while (end > source_name && (my_isspace(charset_info,end[-1]) || while (end > source_name && (my_isspace(charset_info,end[-1]) ||
my_iscntrl(charset_info,end[-1]))) my_iscntrl(charset_info,end[-1])))
end--; end--;
@ -4154,7 +4154,7 @@ com_delimiter(String *buffer __attribute__((unused)), char *line)
{ {
char buff[256], *tmp; char buff[256], *tmp;
strmake(buff, line, sizeof(buff) - 1); strmake_buf(buff, line);
tmp= get_arg(buff, 0); tmp= get_arg(buff, 0);
if (!tmp || !*tmp) if (!tmp || !*tmp)
@ -4171,7 +4171,7 @@ com_delimiter(String *buffer __attribute__((unused)), char *line)
return 0; return 0;
} }
} }
strmake(delimiter, tmp, sizeof(delimiter) - 1); strmake_buf(delimiter, tmp);
delimiter_length= (int)strlen(delimiter); delimiter_length= (int)strlen(delimiter);
delimiter_str= delimiter; delimiter_str= delimiter;
return 0; return 0;
@ -4185,7 +4185,7 @@ com_use(String *buffer __attribute__((unused)), char *line)
int select_db; int select_db;
bzero(buff, sizeof(buff)); bzero(buff, sizeof(buff));
strmake(buff, line, sizeof(buff) - 1); strmake_buf(buff, line);
tmp= get_arg(buff, 0); tmp= get_arg(buff, 0);
if (!tmp || !*tmp) if (!tmp || !*tmp)
{ {

View File

@ -18,7 +18,7 @@
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */ /* By Jani Tolonen, 2001-04-20, MySQL Development Team */
#define CHECK_VERSION "2.7.0" #define CHECK_VERSION "2.7.1"
#include "client_priv.h" #include "client_priv.h"
#include <m_ctype.h> #include <m_ctype.h>
@ -32,6 +32,10 @@
#define EX_USAGE 1 #define EX_USAGE 1
#define EX_MYSQLERR 2 #define EX_MYSQLERR 2
/* ALTER instead of repair. */
#define MAX_ALTER_STR_SIZE 128 * 1024
#define KEY_PARTITIONING_CHANGED_STR "KEY () partitioning changed"
static MYSQL mysql_connection, *sock = 0; static MYSQL mysql_connection, *sock = 0;
static my_bool opt_alldbs = 0, opt_check_only_changed = 0, opt_extended = 0, static my_bool opt_alldbs = 0, opt_check_only_changed = 0, opt_extended = 0,
opt_compress = 0, opt_databases = 0, opt_fast = 0, opt_compress = 0, opt_databases = 0, opt_fast = 0,
@ -47,7 +51,7 @@ static char *opt_password = 0, *current_user = 0,
*default_charset= 0, *current_host= 0; *default_charset= 0, *current_host= 0;
static char *opt_plugin_dir= 0, *opt_default_auth= 0; static char *opt_plugin_dir= 0, *opt_default_auth= 0;
static int first_error = 0; static int first_error = 0;
DYNAMIC_ARRAY tables4repair, tables4rebuild; DYNAMIC_ARRAY tables4repair, tables4rebuild, alter_table_cmds;
static char *shared_memory_base_name=0; static char *shared_memory_base_name=0;
static uint opt_protocol=0; static uint opt_protocol=0;
@ -620,6 +624,17 @@ static int process_all_tables_in_db(char *database)
} /* process_all_tables_in_db */ } /* process_all_tables_in_db */
static int run_query(const char *query)
{
if (mysql_query(sock, query))
{
fprintf(stderr, "Failed to %s\n", query);
fprintf(stderr, "Error: %s\n", mysql_error(sock));
return 1;
}
return 0;
}
static int fix_table_storage_name(const char *name) static int fix_table_storage_name(const char *name)
{ {
@ -630,12 +645,7 @@ static int fix_table_storage_name(const char *name)
if (strncmp(name, "#mysql50#", 9)) if (strncmp(name, "#mysql50#", 9))
DBUG_RETURN(1); DBUG_RETURN(1);
sprintf(qbuf, "RENAME TABLE `%s` TO `%s`", name, name + 9); sprintf(qbuf, "RENAME TABLE `%s` TO `%s`", name, name + 9);
if (mysql_query(sock, qbuf)) rc= run_query(qbuf);
{
fprintf(stderr, "Failed to %s\n", qbuf);
fprintf(stderr, "Error: %s\n", mysql_error(sock));
rc= 1;
}
if (verbose) if (verbose)
printf("%-50s %s\n", name, rc ? "FAILED" : "OK"); printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
DBUG_RETURN(rc); DBUG_RETURN(rc);
@ -650,12 +660,7 @@ static int fix_database_storage_name(const char *name)
if (strncmp(name, "#mysql50#", 9)) if (strncmp(name, "#mysql50#", 9))
DBUG_RETURN(1); DBUG_RETURN(1);
sprintf(qbuf, "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY NAME", name); sprintf(qbuf, "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY NAME", name);
if (mysql_query(sock, qbuf)) rc= run_query(qbuf);
{
fprintf(stderr, "Failed to %s\n", qbuf);
fprintf(stderr, "Error: %s\n", mysql_error(sock));
rc= 1;
}
if (verbose) if (verbose)
printf("%-50s %s\n", name, rc ? "FAILED" : "OK"); printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
DBUG_RETURN(rc); DBUG_RETURN(rc);
@ -726,15 +731,7 @@ static int use_db(char *database)
static int disable_binlog() static int disable_binlog()
{ {
const char *stmt= "SET SQL_LOG_BIN=0"; const char *stmt= "SET SQL_LOG_BIN=0";
DBUG_ENTER("disable_binlog"); return run_query(stmt);
if (mysql_query(sock, stmt))
{
fprintf(stderr, "Failed to %s\n", stmt);
fprintf(stderr, "Error: %s\n", mysql_error(sock));
DBUG_RETURN(1);
}
DBUG_RETURN(0);
} }
static int handle_request_for_tables(char *tables, uint length) static int handle_request_for_tables(char *tables, uint length)
@ -821,6 +818,7 @@ static void print_result()
MYSQL_RES *res; MYSQL_RES *res;
MYSQL_ROW row; MYSQL_ROW row;
char prev[(NAME_LEN+9)*2+2]; char prev[(NAME_LEN+9)*2+2];
char prev_alter[MAX_ALTER_STR_SIZE];
uint i; uint i;
my_bool found_error=0, table_rebuild=0; my_bool found_error=0, table_rebuild=0;
DBUG_ENTER("print_result"); DBUG_ENTER("print_result");
@ -828,6 +826,7 @@ static void print_result()
res = mysql_use_result(sock); res = mysql_use_result(sock);
prev[0] = '\0'; prev[0] = '\0';
prev_alter[0]= 0;
for (i = 0; (row = mysql_fetch_row(res)); i++) for (i = 0; (row = mysql_fetch_row(res)); i++)
{ {
int changed = strcmp(prev, row[0]); int changed = strcmp(prev, row[0]);
@ -844,12 +843,18 @@ static void print_result()
strcmp(row[3],"OK")) strcmp(row[3],"OK"))
{ {
if (table_rebuild) if (table_rebuild)
insert_dynamic(&tables4rebuild, (uchar*) prev); {
if (prev_alter[0])
insert_dynamic(&alter_table_cmds, (uchar*) prev_alter);
else
insert_dynamic(&tables4rebuild, (uchar*) prev);
}
else else
insert_dynamic(&tables4repair, (uchar*) prev); insert_dynamic(&tables4repair, (uchar*) prev);
} }
found_error=0; found_error=0;
table_rebuild=0; table_rebuild=0;
prev_alter[0]= 0;
if (opt_silent) if (opt_silent)
continue; continue;
} }
@ -866,11 +871,30 @@ static void print_result()
printf("%-50s %s", row[0], "Needs upgrade"); printf("%-50s %s", row[0], "Needs upgrade");
else else
printf("%s\n%-9s: %s", row[0], row[2], row[3]); printf("%s\n%-9s: %s", row[0], row[2], row[3]);
if (strcmp(row[2],"note")) if (opt_auto_repair && strcmp(row[2],"note"))
{ {
found_error=1; const char *alter_txt= strstr(row[3], "ALTER TABLE");
if (opt_auto_repair && strstr(row[3], "ALTER TABLE") != NULL) found_error=1;
if (alter_txt)
{
table_rebuild=1; table_rebuild=1;
if (!strncmp(row[3], KEY_PARTITIONING_CHANGED_STR,
strlen(KEY_PARTITIONING_CHANGED_STR)) &&
strstr(alter_txt, "PARTITION BY"))
{
if (strlen(alter_txt) >= MAX_ALTER_STR_SIZE)
{
printf("Error: Alter command too long (>= %d),"
" please do \"%s\" or dump/reload to fix it!\n",
MAX_ALTER_STR_SIZE,
alter_txt);
table_rebuild= 0;
prev_alter[0]= 0;
}
else
strcpy(prev_alter, alter_txt);
}
}
} }
} }
else else
@ -882,7 +906,12 @@ static void print_result()
if (found_error && opt_auto_repair && what_to_do != DO_REPAIR) if (found_error && opt_auto_repair && what_to_do != DO_REPAIR)
{ {
if (table_rebuild) if (table_rebuild)
insert_dynamic(&tables4rebuild, (uchar*) prev); {
if (prev_alter[0])
insert_dynamic(&alter_table_cmds, (uchar*) prev_alter);
else
insert_dynamic(&tables4rebuild, (uchar*) prev);
}
else else
insert_dynamic(&tables4repair, (uchar*) prev); insert_dynamic(&tables4repair, (uchar*) prev);
} }
@ -997,7 +1026,9 @@ int main(int argc, char **argv)
(my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16, (my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,
64, MYF(0)) || 64, MYF(0)) ||
my_init_dynamic_array(&tables4rebuild, sizeof(char)*(NAME_LEN*2+2),16, my_init_dynamic_array(&tables4rebuild, sizeof(char)*(NAME_LEN*2+2),16,
64, MYF(0)))) 64, MYF(0)) ||
my_init_dynamic_array(&alter_table_cmds, MAX_ALTER_STR_SIZE, 0,
1, MYF(0))))
goto end; goto end;
if (opt_alldbs) if (opt_alldbs)
@ -1022,6 +1053,8 @@ int main(int argc, char **argv)
} }
for (i = 0; i < tables4rebuild.elements ; i++) for (i = 0; i < tables4rebuild.elements ; i++)
rebuild_table((char*) dynamic_array_ptr(&tables4rebuild, i)); rebuild_table((char*) dynamic_array_ptr(&tables4rebuild, i));
for (i = 0; i < alter_table_cmds.elements ; i++)
run_query((char*) dynamic_array_ptr(&alter_table_cmds, i));
} }
ret= test(first_error); ret= test(first_error);

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2000, 2012, Oracle and/or its affiliates. Copyright (c) 2000, 2013, Oracle and/or its affiliates.
Copyright (c) 2010, 2013, Monty Program Ab. Copyright (c) 2010, 2013, Monty Program Ab.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
@ -1914,7 +1914,7 @@ static void print_xml_row(FILE *xml_file, const char *row_name,
const char *str_create) const char *str_create)
{ {
uint i; uint i;
my_bool __attribute__((unused)) body_found= 0; my_bool body_found __attribute__((unused)) = 0;
char *create_stmt_ptr= NULL; char *create_stmt_ptr= NULL;
ulong create_stmt_len= 0; ulong create_stmt_len= 0;
MYSQL_FIELD *field; MYSQL_FIELD *field;

View File

@ -6353,8 +6353,7 @@ void do_delimiter(struct st_command* command)
if (!(*p)) if (!(*p))
die("Can't set empty delimiter"); die("Can't set empty delimiter");
strmake(delimiter, p, sizeof(delimiter) - 1); delimiter_length= strmake_buf(delimiter, p) - delimiter;
delimiter_length= strlen(delimiter);
DBUG_PRINT("exit", ("delimiter: %s", delimiter)); DBUG_PRINT("exit", ("delimiter: %s", delimiter));
command->last_argument= p + delimiter_length; command->last_argument= p + delimiter_length;

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2000, 2011, Oracle and/or its affiliates. Copyright (c) 2000, 2013, Oracle and/or its affiliates.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -691,7 +691,7 @@ String *copy_if_not_alloced(String *to,String *from,uint32 from_length)
{ {
if (from->Alloced_length >= from_length) if (from->Alloced_length >= from_length)
return from; return from;
if (from->alloced || !to || from == to) if ((from->alloced && (from->Alloced_length != 0)) || !to || from == to)
{ {
(void) from->realloc(from_length); (void) from->realloc(from_length);
return from; return from;

View File

@ -1,6 +1,6 @@
#!/usr/bin/perl #!/usr/bin/perl
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -95,7 +95,7 @@ SET(CPACK_RPM_devel_USER_FILELIST ${ignored})
SET(CPACK_RPM_test_USER_FILELIST ${ignored}) SET(CPACK_RPM_test_USER_FILELIST ${ignored})
SET(CPACK_RPM_client_PACKAGE_OBSOLETES "mysql-client MySQL-client MySQL-OurDelta-client") SET(CPACK_RPM_client_PACKAGE_OBSOLETES "mysql-client MySQL-client MySQL-OurDelta-client")
SET(CPACK_RPM_client_PACKAGE_PROVIDES "MariaDB-client MySQL-client mysql-client") SET(CPACK_RPM_client_PACKAGE_PROVIDES "MySQL-client mysql-client")
# this is a workaround for CPackRPM.cmake (as of 2.8.8) bug. # this is a workaround for CPackRPM.cmake (as of 2.8.8) bug.
# If a package group does not specify OBSOLETES/REQUIRES the values of the # If a package group does not specify OBSOLETES/REQUIRES the values of the
@ -104,22 +104,40 @@ SET(CPACK_RPM_common_PACKAGE_OBSOLETES "MySQL-common")
SET(CPACK_RPM_common_PACKAGE_PROVIDES "MariaDB-common") SET(CPACK_RPM_common_PACKAGE_PROVIDES "MariaDB-common")
SET(CPACK_RPM_devel_PACKAGE_OBSOLETES "mysql-devel MySQL-devel MySQL-OurDelta-devel") SET(CPACK_RPM_devel_PACKAGE_OBSOLETES "mysql-devel MySQL-devel MySQL-OurDelta-devel")
SET(CPACK_RPM_devel_PACKAGE_PROVIDES "MariaDB-devel MySQL-devel mysql-devel") SET(CPACK_RPM_devel_PACKAGE_PROVIDES "MySQL-devel mysql-devel")
SET(CPACK_RPM_server_PACKAGE_OBSOLETES "MariaDB mysql mysql-server MySQL-server MySQL-OurDelta-server") SET(CPACK_RPM_server_PACKAGE_OBSOLETES "MariaDB MySQL mysql-server MySQL-server MySQL-OurDelta-server")
SET(CPACK_RPM_server_PACKAGE_PROVIDES "MariaDB MariaDB-server MySQL-server config(MariaDB-server) msqlormysql mysql mysql(x86-32) mysql(x86-64) mysql-server") SET(CPACK_RPM_server_PACKAGE_PROVIDES "MariaDB MySQL MySQL-server msqlormysql mysql-server")
SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-prein.sh) SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-prein.sh)
SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-preun.sh) SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-preun.sh)
SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postin.sh) SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postin.sh)
SET(CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postun.sh) SET(CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postun.sh)
SET(CPACK_RPM_shared_PACKAGE_OBSOLETES "mysql-shared MySQL-shared-standard MySQL-shared-pro MySQL-shared-pro-cert MySQL-shared-pro-gpl MySQL-shared-pro-gpl-cert MySQL-shared MySQL-OurDelta-shared mysql-libs") SET(CPACK_RPM_shared_PACKAGE_OBSOLETES "mysql-shared MySQL-shared-standard MySQL-shared-pro MySQL-shared-pro-cert MySQL-shared-pro-gpl MySQL-shared-pro-gpl-cert MySQL-shared MySQL-OurDelta-shared mysql-libs")
SET(CPACK_RPM_shared_PACKAGE_PROVIDES "MariaDB-shared MySQL-shared mysql-shared libmysqlclient.so.18 libmysqlclient.so.18(libmysqlclient_16) libmysqlclient.so.18(libmysqlclient_18) libmysqlclient_r.so.18 libmysqlclient_r.so.18(libmysqlclient_18) mysql-libs") SET(CPACK_RPM_shared_PACKAGE_PROVIDES "MySQL-shared mysql-shared")
SET(CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh) SET(CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh) SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
SET(CPACK_RPM_test_PACKAGE_OBSOLETES "mysql-test MySQL-test MySQL-OurDelta-test") SET(CPACK_RPM_test_PACKAGE_OBSOLETES "mysql-test MySQL-test MySQL-OurDelta-test")
SET(CPACK_RPM_test_PACKAGE_PROVIDES "MariaDB-test MySQL-test mysql-test") SET(CPACK_RPM_test_PACKAGE_PROVIDES "MySQL-test mysql-test")
# Argh! Different distributions call packages differently, to be a drop-in replacement
# we have to fake distribution-speficic dependencies
MACRO(ALTERNATIVE_NAME real alt)
SET(p "CPACK_RPM_${real}_PACKAGE_PROVIDES")
SET(${p} "${${p}} ${alt} ${alt}(x86-32) ${alt}(x86-64) config(${alt})")
ENDMACRO(ALTERNATIVE_NAME)
IF(RPM MATCHES "(rhel|centos)5")
ALTERNATIVE_NAME("shared" "mysql")
ELSEIF(RPM MATCHES "(rhel|centos)6")
ALTERNATIVE_NAME("client" "mysql")
ALTERNATIVE_NAME("shared" "mysql-libs")
ELSEIF(RPM MATCHES "fedora")
ALTERNATIVE_NAME("client" "mysql")
ALTERNATIVE_NAME("shared" "mysql-libs")
ENDIF()
# workaround for lots of perl dependencies added by rpmbuild # workaround for lots of perl dependencies added by rpmbuild
SET(CPACK_RPM_test_PACKAGE_PROVIDES "${CPACK_RPM_test_PACKAGE_PROVIDES} perl(lib::mtr_gcov.pl) perl(lib::mtr_gprof.pl) perl(lib::mtr_io.pl) perl(lib::mtr_misc.pl) perl(lib::mtr_process.pl) perl(lib::v1/mtr_cases.pl) perl(lib::v1/mtr_gcov.pl) perl(lib::v1/mtr_gprof.pl) perl(lib::v1/mtr_im.pl) perl(lib::v1/mtr_io.pl) perl(lib::v1/mtr_match.pl) perl(lib::v1/mtr_misc.pl) perl(lib::v1/mtr_process.pl) perl(lib::v1/mtr_report.pl) perl(lib::v1/mtr_stress.pl) perl(lib::v1/mtr_timer.pl) perl(lib::v1/mtr_unique.pl) perl(mtr_cases) perl(mtr_io.pl) perl(mtr_match) perl(mtr_misc.pl) perl(mtr_report) perl(mtr_results) perl(mtr_unique)") SET(CPACK_RPM_test_PACKAGE_PROVIDES "${CPACK_RPM_test_PACKAGE_PROVIDES} perl(lib::mtr_gcov.pl) perl(lib::mtr_gprof.pl) perl(lib::mtr_io.pl) perl(lib::mtr_misc.pl) perl(lib::mtr_process.pl) perl(lib::v1/mtr_cases.pl) perl(lib::v1/mtr_gcov.pl) perl(lib::v1/mtr_gprof.pl) perl(lib::v1/mtr_im.pl) perl(lib::v1/mtr_io.pl) perl(lib::v1/mtr_match.pl) perl(lib::v1/mtr_misc.pl) perl(lib::v1/mtr_process.pl) perl(lib::v1/mtr_report.pl) perl(lib::v1/mtr_stress.pl) perl(lib::v1/mtr_timer.pl) perl(lib::v1/mtr_unique.pl) perl(mtr_cases) perl(mtr_io.pl) perl(mtr_match) perl(mtr_misc.pl) perl(mtr_report) perl(mtr_results) perl(mtr_unique)")

View File

@ -1,4 +1,4 @@
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,4 +1,4 @@
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,4 +1,4 @@
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -32,9 +32,3 @@ IF(EXECINFO)
SET(LIBEXECINFO ${EXECINFO}) SET(LIBEXECINFO ${EXECINFO})
ENDIF() ENDIF()
# Use atomic builtins
IF(CMAKE_SIZEOF_VOID_P EQUAL 4 AND CMAKE_SYSTEM_PROCESSOR STREQUAL "i386")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=i686")
SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -march=i686")
ENDIF()

View File

@ -47,9 +47,3 @@ IF(HAVE_DECL_SHM_HUGETLB)
SET(HAVE_LARGE_PAGE_OPTION 1) SET(HAVE_LARGE_PAGE_OPTION 1)
ENDIF() ENDIF()
IF(CMAKE_SIZEOF_VOID_P EQUAL 4 AND CMAKE_SYSTEM_PROCESSOR MATCHES "86")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=i686")
SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -march=i686")
ENDIF()

View File

@ -1,4 +1,4 @@
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,4 +1,4 @@
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -115,7 +115,7 @@ ENDMACRO()
MACRO (MYSQL_USE_BUNDLED_READLINE) MACRO (MYSQL_USE_BUNDLED_READLINE)
SET(USE_NEW_READLINE_INTERFACE 1) SET(USE_NEW_READLINE_INTERFACE 1)
SET(HAVE_HIST_ENTRY) SET(HAVE_HIST_ENTRY 0 CACHE INTERNAL "" FORCE)
SET(READLINE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/cmd-line-utils) SET(READLINE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/cmd-line-utils)
SET(READLINE_LIBRARY readline) SET(READLINE_LIBRARY readline)
ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/cmd-line-utils/readline) ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/cmd-line-utils/readline)

View File

@ -1,4 +1,4 @@
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -57,13 +57,17 @@ MACRO (MYSQL_CHECK_ZLIB_WITH_COMPRESS)
INCLUDE(CheckFunctionExists) INCLUDE(CheckFunctionExists)
SET(CMAKE_REQUIRED_LIBRARIES z) SET(CMAKE_REQUIRED_LIBRARIES z)
CHECK_FUNCTION_EXISTS(crc32 HAVE_CRC32) CHECK_FUNCTION_EXISTS(crc32 HAVE_CRC32)
CHECK_FUNCTION_EXISTS(compressBound HAVE_COMPRESSBOUND)
CHECK_FUNCTION_EXISTS(deflateBound HAVE_DEFLATEBOUND)
SET(CMAKE_REQUIRED_LIBRARIES) SET(CMAKE_REQUIRED_LIBRARIES)
IF(HAVE_CRC32) IF(HAVE_CRC32 AND HAVE_COMPRESSBOUND AND HAVE_DEFLATEBOUND)
SET(ZLIB_LIBRARY z CACHE INTERNAL "System zlib library") SET(ZLIB_LIBRARY z CACHE INTERNAL "System zlib library")
SET(WITH_ZLIB "system" CACHE STRING "Which zlib to use (possible values are 'bundled' or 'system')") SET(WITH_ZLIB "system" CACHE STRING
"Which zlib to use (possible values are 'bundled' or 'system')")
SET(ZLIB_SOURCES "") SET(ZLIB_SOURCES "")
ELSE() ELSE()
SET(ZLIB_FOUND FALSE CACHE INTERNAL "Zlib found but not usable") SET(ZLIB_FOUND FALSE CACHE INTERNAL "Zlib found but not usable")
MESSAGE(STATUS "system zlib found but not usable")
ENDIF() ENDIF()
ENDIF() ENDIF()
IF(NOT ZLIB_FOUND) IF(NOT ZLIB_FOUND)

View File

@ -1,5 +1,5 @@
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -204,7 +204,7 @@ Description: MariaDB database server binaries
Package: mariadb-server Package: mariadb-server
Section: database Section: database
Architecture: all Architecture: all
Depends: mariadb-server-5.5, ${misc:Depends} Depends: mariadb-server-5.5 (= ${source:Version}), ${misc:Depends}
Description: MariaDB database server (metapackage depending on the latest version) Description: MariaDB database server (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of This is an empty package that depends on the current "best" version of
mariadb-server (currently mariadb-server-5.5), as determined by the MariaDB mariadb-server (currently mariadb-server-5.5), as determined by the MariaDB
@ -220,7 +220,7 @@ Description: MariaDB database server (metapackage depending on the latest versio
Package: mariadb-client Package: mariadb-client
Section: database Section: database
Architecture: all Architecture: all
Depends: mariadb-client-5.5, ${misc:Depends} Depends: mariadb-client-5.5 (= ${source:Version}), ${misc:Depends}
Description: MariaDB database client (metapackage depending on the latest version) Description: MariaDB database client (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of This is an empty package that depends on the current "best" version of
mariadb-client (currently mariadb-client-5.5), as determined by the MariaDB mariadb-client (currently mariadb-client-5.5), as determined by the MariaDB
@ -230,7 +230,7 @@ Description: MariaDB database client (metapackage depending on the latest versio
Package: mariadb-test Package: mariadb-test
Section: database Section: database
Architecture: all Architecture: all
Depends: mariadb-test-5.5 Depends: mariadb-test-5.5 (= ${source:Version})
Description: MariaDB database regression test suite (metapackage depending on the latest version) Description: MariaDB database regression test suite (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of This is an empty package that depends on the current "best" version of
mariadb-test (currently mariadb-test-5.5), as determined by the MariaDB mariadb-test (currently mariadb-test-5.5), as determined by the MariaDB

View File

@ -198,7 +198,7 @@ Description: MariaDB database server binaries
Package: mariadb-server Package: mariadb-server
Section: database Section: database
Architecture: all Architecture: all
Depends: mariadb-server-5.5, ${misc:Depends} Depends: mariadb-server-5.5 (= ${source:Version}), ${misc:Depends}
Description: MariaDB database server (metapackage depending on the latest version) Description: MariaDB database server (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of This is an empty package that depends on the current "best" version of
mariadb-server (currently mariadb-server-5.5), as determined by the MariaDB mariadb-server (currently mariadb-server-5.5), as determined by the MariaDB
@ -214,7 +214,7 @@ Description: MariaDB database server (metapackage depending on the latest versio
Package: mariadb-client Package: mariadb-client
Section: database Section: database
Architecture: all Architecture: all
Depends: mariadb-client-5.5, ${misc:Depends} Depends: mariadb-client-5.5 (= ${source:Version}), ${misc:Depends}
Description: MariaDB database client (metapackage depending on the latest version) Description: MariaDB database client (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of This is an empty package that depends on the current "best" version of
mariadb-client (currently mariadb-client-5.5), as determined by the MariaDB mariadb-client (currently mariadb-client-5.5), as determined by the MariaDB
@ -224,7 +224,7 @@ Description: MariaDB database client (metapackage depending on the latest versio
Package: mariadb-test Package: mariadb-test
Section: database Section: database
Architecture: all Architecture: all
Depends: mariadb-test-5.5 Depends: mariadb-test-5.5 (= ${source:Version})
Description: MariaDB database regression test suite (metapackage depending on the latest version) Description: MariaDB database regression test suite (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of This is an empty package that depends on the current "best" version of
mariadb-test (currently mariadb-test-5.5), as determined by the MariaDB mariadb-test (currently mariadb-test-5.5), as determined by the MariaDB

View File

@ -1,4 +1,5 @@
/* Copyright (C) 2000 MySQL AB /* Copyright (c) 2000, 2002-2004, 2007, 2008 MySQL AB
Use is subject to license terms
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,4 +1,4 @@
# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2006 MySQL AB Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2006 MySQL AB Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2006 MySQL AB Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2006 MySQL AB Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2006, 2007 MySQL AB, 2008 Sun Microsystems, Inc. Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2010 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -53,7 +52,8 @@ enum YasslError {
badVersion_error = 117, badVersion_error = 117,
compress_error = 118, compress_error = 118,
decompress_error = 119, decompress_error = 119,
pms_version_error = 120 pms_version_error = 120,
sanityCipher_error = 121
// !!!! add error message to .cpp !!!! // !!!! add error message to .cpp !!!!

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -220,7 +219,11 @@ const int DEFAULT_TIMEOUT = 500; // Default Session timeout in seconds
const int MAX_RECORD_SIZE = 16384; // 2^14, max size by standard const int MAX_RECORD_SIZE = 16384; // 2^14, max size by standard
const int COMPRESS_EXTRA = 1024; // extra compression possible addition const int COMPRESS_EXTRA = 1024; // extra compression possible addition
const int SESSION_FLUSH_COUNT = 256; // when to flush session cache const int SESSION_FLUSH_COUNT = 256; // when to flush session cache
const int MAX_PAD_SIZE = 256; // max TLS padding size
const int COMPRESS_CONSTANT = 13; // compression calculation constant
const int COMPRESS_UPPER = 55; // compression calculation numerator
const int COMPRESS_LOWER = 64; // compression calculation denominator
const int COMPRESS_DUMMY_SIZE = 64; // compression dummy round size
typedef uint8 Cipher; // first byte is always 0x00 for SSLv3 & TLS typedef uint8 Cipher; // first byte is always 0x00 for SSLv3 & TLS

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2008, 2009 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates Copyright (c) 2005, 2012, Oracle and/or its affiliates
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2008 MySQL AB, 2009 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -221,12 +220,45 @@ void buildSHA(SSL& ssl, Finished& fin, const opaque* sender)
} }
// sanity checks on encrypted message size
static int sanity_check_message(SSL& ssl, uint msgSz)
{
uint minSz = 0;
if (ssl.getSecurity().get_parms().cipher_type_ == block) {
uint blockSz = ssl.getCrypto().get_cipher().get_blockSize();
if (msgSz % blockSz)
return -1;
minSz = ssl.getSecurity().get_parms().hash_size_ + 1; // pad byte too
if (blockSz > minSz)
minSz = blockSz;
if (ssl.isTLSv1_1())
minSz += blockSz; // explicit IV
}
else { // stream
minSz = ssl.getSecurity().get_parms().hash_size_;
}
if (msgSz < minSz)
return -1;
return 0;
}
// decrypt input message in place, store size in case needed later // decrypt input message in place, store size in case needed later
void decrypt_message(SSL& ssl, input_buffer& input, uint sz) void decrypt_message(SSL& ssl, input_buffer& input, uint sz)
{ {
input_buffer plain(sz); input_buffer plain(sz);
opaque* cipher = input.get_buffer() + input.get_current(); opaque* cipher = input.get_buffer() + input.get_current();
if (sanity_check_message(ssl, sz) != 0) {
ssl.SetError(sanityCipher_error);
return;
}
ssl.useCrypto().use_cipher().decrypt(plain.get_buffer(), cipher, sz); ssl.useCrypto().use_cipher().decrypt(plain.get_buffer(), cipher, sz);
memcpy(cipher, plain.get_buffer(), sz); memcpy(cipher, plain.get_buffer(), sz);
ssl.useSecurity().use_parms().encrypt_size_ = sz; ssl.useSecurity().use_parms().encrypt_size_ = sz;
@ -774,6 +806,8 @@ int DoProcessReply(SSL& ssl)
return 0; return 0;
} }
decrypt_message(ssl, buffer, hdr.length_); decrypt_message(ssl, buffer, hdr.length_);
if (ssl.GetError())
return 0;
} }
mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_)); mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_));

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,4 +1,4 @@
REM Copyright (C) 2006, 2007 MySQL AB REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
REM REM
REM This program is free software; you can redistribute it and/or modify REM This program is free software; you can redistribute it and/or modify
REM it under the terms of the GNU General Public License as published by REM it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2008-2010 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2011, Oracle and/or its affiliates Copyright (c) 2005, 2012, Oracle and/or its affiliates
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -144,6 +144,10 @@ void SetErrorString(YasslError error, char* buffer)
strncpy(buffer, "bad PreMasterSecret version error", max); strncpy(buffer, "bad PreMasterSecret version error", max);
break; break;
case sanityCipher_error :
strncpy(buffer, "sanity check on cipher text size error", max);
break;
// openssl errors // openssl errors
case SSL_ERROR_WANT_READ : case SSL_ERROR_WANT_READ :
strncpy(buffer, "the read operation would block", max); strncpy(buffer, "the read operation would block", max);

View File

@ -972,30 +972,193 @@ output_buffer& operator<<(output_buffer& output, const Data& data)
} }
// check all bytes for equality
static int constant_compare(const byte* a, const byte* b, int len)
{
int good = 0;
int bad = 0;
for (int i = 0; i < len; i++) {
if (a[i] == b[i])
good++;
else
bad++;
}
if (good == len)
return 0;
else
return 0 - bad; // failure
}
// check bytes for pad value
static int pad_check(const byte* input, byte pad, int len)
{
int good = 0;
int bad = 0;
for (int i = 0; i < len; i++) {
if (input[i] == pad)
good++;
else
bad++;
}
if (good == len)
return 0;
else
return 0 - bad; // failure
}
// get number of compression rounds
static inline int get_rounds(int pLen, int padLen, int t)
{
int roundL1 = 1; // round ups
int roundL2 = 1;
int L1 = COMPRESS_CONSTANT + pLen - t;
int L2 = COMPRESS_CONSTANT + pLen - padLen - 1 - t;
L1 -= COMPRESS_UPPER;
L2 -= COMPRESS_UPPER;
if ( (L1 % COMPRESS_LOWER) == 0)
roundL1 = 0;
if ( (L2 % COMPRESS_LOWER) == 0)
roundL2 = 0;
L1 /= COMPRESS_LOWER;
L2 /= COMPRESS_LOWER;
L1 += roundL1;
L2 += roundL2;
return L1 - L2;
}
// do compression rounds on dummy data
static inline void compress_rounds(SSL& ssl, int rounds, const byte* dummy)
{
if (rounds) {
Digest* digest = NULL;
MACAlgorithm ma = ssl.getSecurity().get_parms().mac_algorithm_;
if (ma == sha)
digest = NEW_YS SHA;
else if (ma == md5)
digest = NEW_YS MD5;
else if (ma == rmd)
digest = NEW_YS RMD;
else
return;
for (int i = 0; i < rounds; i++)
digest->update(dummy, COMPRESS_LOWER);
ysDelete(digest);
}
}
// timing resistant pad verification
static int timing_verify(SSL& ssl, const byte* input, int padLen, int t,
int pLen)
{
byte verify[SHA_LEN];
byte dummy[MAX_PAD_SIZE];
memset(dummy, 1, sizeof(dummy));
if ( (t + padLen + 1) > pLen) {
pad_check(dummy, (byte)padLen, MAX_PAD_SIZE);
if (ssl.isTLS())
TLS_hmac(ssl, verify, input, pLen - t, application_data, 1);
else
hmac(ssl, verify, input, pLen - t, application_data, 1);
constant_compare(verify, input + pLen - t, t);
return -1;
}
if (pad_check(input + pLen - (padLen + 1), (byte)padLen, padLen + 1) != 0) {
pad_check(dummy, (byte)padLen, MAX_PAD_SIZE - padLen - 1);
if (ssl.isTLS())
TLS_hmac(ssl, verify, input, pLen - t, application_data, 1);
else
hmac(ssl, verify, input, pLen - t, application_data, 1);
constant_compare(verify, input + pLen - t, t);
return -1;
}
pad_check(dummy, (byte)padLen, MAX_PAD_SIZE - padLen - 1);
if (ssl.isTLS())
TLS_hmac(ssl, verify, input, pLen - padLen - 1 - t, application_data,1);
else
hmac(ssl, verify, input, pLen - padLen - 1 - t, application_data, 1);
compress_rounds(ssl, get_rounds(pLen, padLen, t), dummy);
if (constant_compare(verify, input + (pLen - padLen - 1 - t), t) != 0)
return -1;
return 0;
}
// Process handler for Data // Process handler for Data
void Data::Process(input_buffer& input, SSL& ssl) void Data::Process(input_buffer& input, SSL& ssl)
{ {
int msgSz = ssl.getSecurity().get_parms().encrypt_size_; int msgSz = ssl.getSecurity().get_parms().encrypt_size_;
int pad = 0, padSz = 0; int pad = 0, padSz = 0;
int ivExtra = 0; int ivExtra = 0;
int digestSz = ssl.getCrypto().get_digest().get_digestSize();
const byte* rawData = input.get_buffer() + input.get_current();
opaque verify[SHA_LEN];
if (ssl.getSecurity().get_parms().cipher_type_ == block) { if (ssl.getSecurity().get_parms().cipher_type_ == block) {
if (ssl.isTLSv1_1()) // IV if (ssl.isTLSv1_1()) // IV
ivExtra = ssl.getCrypto().get_cipher().get_blockSize(); ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
pad = *(input.get_buffer() + input.get_current() + msgSz -ivExtra - 1); pad = *(input.get_buffer() + input.get_current() + msgSz -ivExtra - 1);
padSz = 1; padSz = 1;
if (ssl.isTLS()) {
if (timing_verify(ssl, rawData, pad,digestSz, msgSz-ivExtra) != 0) {
ssl.SetError(verify_error);
return;
}
}
else { // SSLv3, some don't do this padding right
int sz3 = msgSz - digestSz - pad - 1;
hmac(ssl, verify, rawData, sz3, application_data, true);
if (constant_compare(verify, rawData + sz3, digestSz) != 0) {
ssl.SetError(verify_error);
return;
}
}
} }
int digestSz = ssl.getCrypto().get_digest().get_digestSize(); else { // stream
int streamSz = msgSz - digestSz;
if (ssl.isTLS())
TLS_hmac(ssl, verify, rawData, streamSz, application_data, true);
else
hmac(ssl, verify, rawData, streamSz, application_data, true);
if (constant_compare(verify, rawData + streamSz, digestSz) != 0) {
ssl.SetError(verify_error);
return;
}
}
int dataSz = msgSz - ivExtra - digestSz - pad - padSz; int dataSz = msgSz - ivExtra - digestSz - pad - padSz;
opaque verify[SHA_LEN];
if (dataSz < 0) { if (dataSz < 0) {
ssl.SetError(bad_input); ssl.SetError(bad_input);
return; return;
} }
const byte* rawData = input.get_buffer() + input.get_current();
// read data // read data
if (dataSz) { // could be compressed if (dataSz) { // could be compressed
if (ssl.CompressionOn()) { if (ssl.CompressionOn()) {
@ -1013,27 +1176,10 @@ void Data::Process(input_buffer& input, SSL& ssl)
input.read(data->get_buffer(), dataSz); input.read(data->get_buffer(), dataSz);
data->add_size(dataSz); data->add_size(dataSz);
} }
if (ssl.isTLS())
TLS_hmac(ssl, verify, rawData, dataSz, application_data, true);
else
hmac(ssl, verify, rawData, dataSz, application_data, true);
} }
// read mac and skip fill // advance past mac and fill
opaque mac[SHA_LEN]; input.set_current(input.get_current() + digestSz + pad + padSz);
input.read(mac, digestSz);
input.set_current(input.get_current() + pad + padSz);
// verify
if (dataSz) {
if (memcmp(mac, verify, digestSz)) {
ssl.SetError(verify_error);
return;
}
}
else
ssl.get_SEQIncrement(true); // even though no data, increment verify
} }

View File

@ -1,3 +1,21 @@
/*
Copyright (c) 2006, 2012, Oracle and/or its affiliates.
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; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
MA 02110-1301 USA.
*/
// benchmark.cpp // benchmark.cpp
// TaoCrypt benchmark // TaoCrypt benchmark

View File

@ -1,4 +1,4 @@
REM Copyright (C) 2006, 2007 MySQL AB REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
REM REM
REM This program is free software; you can redistribute it and/or modify REM This program is free software; you can redistribute it and/or modify
REM it under the terms of the GNU General Public License as published by REM it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2010 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2006, 2010, Oracle and/or its affiliates Copyright (c) 2006, 2012, Oracle and/or its affiliates
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates Copyright (c) 2005, 2012, Oracle and/or its affiliates
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates Copyright (c) 2005, 2012, Oracle and/or its affiliates
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates Copyright (c) 2005, 2012, Oracle and/or its affiliates
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2006, 2010, Oracle and/or its affiliates Copyright (c) 2006, 2012, Oracle and/or its affiliates
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates Copyright (c) 2005, 2012, Oracle and/or its affiliates
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,4 +1,4 @@
REM Copyright (C) 2006, 2007 MySQL AB REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
REM REM
REM This program is free software; you can redistribute it and/or modify REM This program is free software; you can redistribute it and/or modify
REM it under the terms of the GNU General Public License as published by REM it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (C) 2000-2007 MySQL AB Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2005, 2010, Oracle and/or its affiliates Copyright (c) 2005, 2012, Oracle and/or its affiliates
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

Some files were not shown because too many files have changed in this diff Show More