mirror of
https://github.com/MariaDB/server.git
synced 2025-01-28 17:54:16 +01:00
Merge branch '5.5' into 10.0
This commit is contained in:
commit
810cf362ea
165 changed files with 3364 additions and 1399 deletions
6
.gitattributes
vendored
6
.gitattributes
vendored
|
@ -12,12 +12,16 @@
|
|||
|
||||
# These files should be checked out as is
|
||||
*.result -text -whitespace
|
||||
*.dat -text -whitespace
|
||||
|
||||
storage/connect/mysql-test/connect/std_data/*.txt -text
|
||||
storage/connect/mysql-test/connect/std_data/*.dat -text
|
||||
|
||||
# Denote all files that are truly binary and should not be modified.
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.frm binary
|
||||
*.MYD binary
|
||||
*.MYI binary
|
||||
|
||||
*.c diff=cpp
|
||||
*.h diff=cpp
|
||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -175,7 +175,6 @@ storage/tokudb/ft-index/ft/log_print.cc
|
|||
storage/tokudb/ft-index/ft/logformat
|
||||
storage/tokudb/ft-index/ft/ftverify
|
||||
storage/tokudb/ft-index/ft/tdb-recover
|
||||
storage/tokudb/ft-index/ft/tdb_logprint
|
||||
storage/tokudb/ft-index/ft/tokuftdump
|
||||
storage/tokudb/ft-index/portability/merge_archives_tokuportability_static.cmake
|
||||
storage/tokudb/ft-index/portability/toku_config.h
|
||||
|
@ -186,11 +185,11 @@ storage/tokudb/ft-index/toku_include/toku_config.h
|
|||
storage/tokudb/ft-index/tools/ba_replay
|
||||
storage/tokudb/ft-index/tools/ftverify
|
||||
storage/tokudb/ft-index/tools/tdb-recover
|
||||
storage/tokudb/ft-index/tools/tdb_logprint
|
||||
storage/tokudb/ft-index/tools/tokudb_dump
|
||||
storage/tokudb/ft-index/tools/tokudb_gen
|
||||
storage/tokudb/ft-index/tools/tokudb_load
|
||||
storage/tokudb/ft-index/tools/tokuftdump
|
||||
storage/tokudb/ft-index/tools/tokuft_logprint
|
||||
storage/tokudb/ft-index/xz/
|
||||
support-files/MySQL-shared-compat.spec
|
||||
support-files/binary-configure
|
||||
|
|
|
@ -54,6 +54,7 @@ static char *opt_plugin_dir= 0, *opt_default_auth= 0;
|
|||
static int first_error = 0;
|
||||
static char *opt_skip_database;
|
||||
DYNAMIC_ARRAY tables4repair, tables4rebuild, alter_table_cmds;
|
||||
DYNAMIC_ARRAY views4repair;
|
||||
static char *shared_memory_base_name=0;
|
||||
static uint opt_protocol=0;
|
||||
|
||||
|
@ -877,11 +878,19 @@ static int handle_request_for_tables(char *tables, size_t length, my_bool view)
|
|||
switch (what_to_do) {
|
||||
case DO_CHECK:
|
||||
op = "CHECK";
|
||||
if (opt_quick) end = strmov(end, " QUICK");
|
||||
if (opt_fast) end = strmov(end, " FAST");
|
||||
if (opt_medium_check) end = strmov(end, " MEDIUM"); /* Default */
|
||||
if (opt_extended) end = strmov(end, " EXTENDED");
|
||||
if (opt_check_only_changed) end = strmov(end, " CHANGED");
|
||||
if (view)
|
||||
{
|
||||
if (opt_fast || opt_check_only_changed)
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (opt_quick) end = strmov(end, " QUICK");
|
||||
if (opt_fast) end = strmov(end, " FAST");
|
||||
if (opt_extended) end = strmov(end, " EXTENDED");
|
||||
if (opt_medium_check) end = strmov(end, " MEDIUM"); /* Default */
|
||||
if (opt_check_only_changed) end = strmov(end, " CHANGED");
|
||||
}
|
||||
if (opt_upgrade) end = strmov(end, " FOR UPGRADE");
|
||||
break;
|
||||
case DO_REPAIR:
|
||||
|
@ -966,6 +975,7 @@ static void print_result()
|
|||
uint length_of_db;
|
||||
uint i;
|
||||
my_bool found_error=0, table_rebuild=0;
|
||||
DYNAMIC_ARRAY *array4repair= &tables4repair;
|
||||
DBUG_ENTER("print_result");
|
||||
|
||||
res = mysql_use_result(sock);
|
||||
|
@ -1002,9 +1012,10 @@ static void print_result()
|
|||
else
|
||||
{
|
||||
char *table_name= prev + (length_of_db+1);
|
||||
insert_dynamic(&tables4repair, table_name);
|
||||
insert_dynamic(array4repair, table_name);
|
||||
}
|
||||
}
|
||||
array4repair= &tables4repair;
|
||||
found_error=0;
|
||||
table_rebuild=0;
|
||||
prev_alter[0]= 0;
|
||||
|
@ -1020,8 +1031,11 @@ static void print_result()
|
|||
we have to run upgrade on it. In this case we write a nicer message
|
||||
than "Please do "REPAIR TABLE""...
|
||||
*/
|
||||
if (!strcmp(row[2],"error") && strstr(row[3],"REPAIR TABLE"))
|
||||
if (!strcmp(row[2],"error") && strstr(row[3],"REPAIR "))
|
||||
{
|
||||
printf("%-50s %s", row[0], "Needs upgrade");
|
||||
array4repair= strstr(row[3], "VIEW") ? &views4repair : &tables4repair;
|
||||
}
|
||||
else
|
||||
printf("%s\n%-9s: %s", row[0], row[2], row[3]);
|
||||
if (opt_auto_repair && strcmp(row[2],"note"))
|
||||
|
@ -1052,7 +1066,7 @@ static void print_result()
|
|||
else
|
||||
{
|
||||
char *table_name= prev + (length_of_db+1);
|
||||
insert_dynamic(&tables4repair, table_name);
|
||||
insert_dynamic(array4repair, table_name);
|
||||
}
|
||||
}
|
||||
mysql_free_result(res);
|
||||
|
@ -1172,6 +1186,8 @@ int main(int argc, char **argv)
|
|||
if (opt_auto_repair &&
|
||||
(my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,
|
||||
64, MYF(0)) ||
|
||||
my_init_dynamic_array(&views4repair, sizeof(char)*(NAME_LEN*2+2),16,
|
||||
64, MYF(0)) ||
|
||||
my_init_dynamic_array(&tables4rebuild, sizeof(char)*(NAME_LEN*2+2),16,
|
||||
64, MYF(0)) ||
|
||||
my_init_dynamic_array(&alter_table_cmds, MAX_ALTER_STR_SIZE, 0, 1,
|
||||
|
@ -1202,6 +1218,13 @@ int main(int argc, char **argv)
|
|||
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), 1);
|
||||
if (!opt_silent && views4repair.elements)
|
||||
puts("\nRepairing views");
|
||||
for (i = 0; i < views4repair.elements ; i++)
|
||||
{
|
||||
char *name= (char*) dynamic_array_ptr(&views4repair, i);
|
||||
handle_request_for_tables(name, fixed_name_length(name), TRUE);
|
||||
}
|
||||
}
|
||||
ret= MY_TEST(first_error);
|
||||
|
||||
|
@ -1209,8 +1232,10 @@ int main(int argc, char **argv)
|
|||
dbDisconnect(current_host);
|
||||
if (opt_auto_repair)
|
||||
{
|
||||
delete_dynamic(&views4repair);
|
||||
delete_dynamic(&tables4repair);
|
||||
delete_dynamic(&tables4rebuild);
|
||||
delete_dynamic(&alter_table_cmds);
|
||||
}
|
||||
end1:
|
||||
my_free(opt_password);
|
||||
|
|
|
@ -58,7 +58,7 @@ FOREACH(file ${ABI_HEADERS})
|
|||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${COMPILER}
|
||||
-E -nostdinc -dI -DMYSQL_ABI_CHECK -I${SOURCE_DIR}/include
|
||||
-E -nostdinc -DMYSQL_ABI_CHECK -I${SOURCE_DIR}/include
|
||||
-I${BINARY_DIR}/include -I${SOURCE_DIR}/include/mysql -I${SOURCE_DIR}/sql
|
||||
${file}
|
||||
ERROR_QUIET OUTPUT_FILE ${tmpfile})
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2009, 2015, 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
|
||||
|
@ -60,9 +60,9 @@ IF(NOT GIT_EXECUTABLE)
|
|||
|
||||
# Save bison output first.
|
||||
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.cc
|
||||
${CMAKE_BINARY_DIR}/sql_yacc.cc COPY_ONLY)
|
||||
${CMAKE_BINARY_DIR}/sql_yacc.cc COPYONLY)
|
||||
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.h
|
||||
${CMAKE_BINARY_DIR}/sql_yacc.h COPY_ONLY)
|
||||
${CMAKE_BINARY_DIR}/sql_yacc.h COPYONLY)
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Makefiles")
|
||||
# make clean
|
||||
|
@ -74,9 +74,9 @@ IF(NOT GIT_EXECUTABLE)
|
|||
|
||||
# Restore bison output
|
||||
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql_yacc.cc
|
||||
${CMAKE_BINARY_DIR}/sql/sql_yacc.cc COPY_ONLY)
|
||||
${CMAKE_BINARY_DIR}/sql/sql_yacc.cc COPYONLY)
|
||||
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql_yacc.h
|
||||
${CMAKE_BINARY_DIR}/sql/sql_yacc.h COPY_ONLY)
|
||||
${CMAKE_BINARY_DIR}/sql/sql_yacc.h COPYONLY)
|
||||
FILE(REMOVE ${CMAKE_BINARY_DIR}/sql_yacc.cc)
|
||||
FILE(REMOVE ${CMAKE_BINARY_DIR}/sql_yacc.h)
|
||||
ENDIF()
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* $NetBSD: terminal.h,v 1.3 2011/07/29 23:44:45 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1992, 1993
|
||||
* Copyright (c) 1992, 2015
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
|
@ -103,7 +103,7 @@ protected int terminal_settc(EditLine *, int, const Char **);
|
|||
protected int terminal_gettc(EditLine *, int, char **);
|
||||
protected int terminal_telltc(EditLine *, int, const Char **);
|
||||
protected int terminal_echotc(EditLine *, int, const Char **);
|
||||
protected void terminal_writec(EditLine *, Int);
|
||||
protected int terminal_writec(EditLine *, Int);
|
||||
protected int terminal__putc(EditLine *, Int);
|
||||
protected void terminal__flush(EditLine *);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* $NetBSD: emacs.c,v 1.25 2011/07/29 15:16:33 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1992, 1993
|
||||
* Copyright (c) 1992, 2015
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
|
@ -58,8 +58,10 @@ em_delete_or_list(EditLine *el, Int c)
|
|||
/* if I'm at the end */
|
||||
if (el->el_line.cursor == el->el_line.buffer) {
|
||||
/* and the beginning */
|
||||
terminal_writec(el, c); /* then do an EOF */
|
||||
return CC_EOF;
|
||||
if(!(terminal_writec(el, c))) /* then do an EOF */
|
||||
return CC_EOF;
|
||||
else
|
||||
return CC_ERROR;
|
||||
} else {
|
||||
/*
|
||||
* Here we could list completions, but it is an
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* $NetBSD: terminal.c,v 1.10 2011/10/04 15:27:04 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1992, 1993
|
||||
* Copyright (c) 1992, 2015
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
|
@ -1271,14 +1271,19 @@ terminal__flush(EditLine *el)
|
|||
/* terminal_writec():
|
||||
* Write the given character out, in a human readable form
|
||||
*/
|
||||
protected void
|
||||
protected int
|
||||
terminal_writec(EditLine *el, Int c)
|
||||
{
|
||||
Char visbuf[VISUAL_WIDTH_MAX +1];
|
||||
ssize_t vcnt = ct_visual_char(visbuf, VISUAL_WIDTH_MAX, c);
|
||||
visbuf[vcnt] = '\0';
|
||||
terminal_overwrite(el, visbuf, (size_t)vcnt);
|
||||
terminal__flush(el);
|
||||
if(vcnt == -1)
|
||||
return 1; /* Error due to insufficient space */
|
||||
else {
|
||||
visbuf[vcnt] = '\0';
|
||||
terminal_overwrite(el, visbuf, (size_t)vcnt);
|
||||
terminal__flush(el);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* $NetBSD: vi.c,v 1.41 2011/10/04 15:27:04 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1992, 1993
|
||||
* Copyright (c) 1992, 2015
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
|
@ -607,8 +607,10 @@ vi_list_or_eof(EditLine *el, Int c)
|
|||
|
||||
if (el->el_line.cursor == el->el_line.lastchar) {
|
||||
if (el->el_line.cursor == el->el_line.buffer) {
|
||||
terminal_writec(el, c); /* then do a EOF */
|
||||
return CC_EOF;
|
||||
if(!(terminal_writec(el, c))) /* then do a EOF */
|
||||
return CC_EOF;
|
||||
else
|
||||
return CC_ERROR;
|
||||
} else {
|
||||
/*
|
||||
* Here we could list completions, but it is an
|
||||
|
|
|
@ -202,7 +202,7 @@
|
|||
#cmakedefine HAVE_MADVISE 1
|
||||
#cmakedefine HAVE_DECL_MADVISE 1
|
||||
#cmakedefine HAVE_DECL_TGOTO 1
|
||||
#cmakedefine HAVE_DECL_MHA_MAPSIZE_VA
|
||||
#cmakedefine HAVE_DECL_MHA_MAPSIZE_VA 1
|
||||
#cmakedefine HAVE_MALLINFO 1
|
||||
#cmakedefine HAVE_MEMCPY 1
|
||||
#cmakedefine HAVE_MEMMOVE 1
|
||||
|
@ -395,7 +395,7 @@
|
|||
|
||||
#cmakedefine SOCKET_SIZE_TYPE @SOCKET_SIZE_TYPE@
|
||||
|
||||
#cmakedefine HAVE_MBSTATE_T
|
||||
#cmakedefine HAVE_MBSTATE_T 1
|
||||
|
||||
#define MAX_INDEXES 64
|
||||
|
||||
|
@ -430,15 +430,15 @@
|
|||
#cmakedefine HAVE_WCTYPE_H 1
|
||||
#cmakedefine HAVE_WCHAR_H 1
|
||||
#cmakedefine HAVE_LANGINFO_H 1
|
||||
#cmakedefine HAVE_MBRLEN
|
||||
#cmakedefine HAVE_MBSCMP
|
||||
#cmakedefine HAVE_MBSRTOWCS
|
||||
#cmakedefine HAVE_WCRTOMB
|
||||
#cmakedefine HAVE_MBRTOWC
|
||||
#cmakedefine HAVE_WCSCOLL
|
||||
#cmakedefine HAVE_WCSDUP
|
||||
#cmakedefine HAVE_WCWIDTH
|
||||
#cmakedefine HAVE_WCTYPE
|
||||
#cmakedefine HAVE_MBRLEN 1
|
||||
#cmakedefine HAVE_MBSCMP 1
|
||||
#cmakedefine HAVE_MBSRTOWCS 1
|
||||
#cmakedefine HAVE_WCRTOMB 1
|
||||
#cmakedefine HAVE_MBRTOWC 1
|
||||
#cmakedefine HAVE_WCSCOLL 1
|
||||
#cmakedefine HAVE_WCSDUP 1
|
||||
#cmakedefine HAVE_WCWIDTH 1
|
||||
#cmakedefine HAVE_WCTYPE 1
|
||||
#cmakedefine HAVE_ISWLOWER 1
|
||||
#cmakedefine HAVE_ISWUPPER 1
|
||||
#cmakedefine HAVE_TOWLOWER 1
|
||||
|
@ -452,7 +452,7 @@
|
|||
#cmakedefine HAVE_STRCASECMP 1
|
||||
#cmakedefine HAVE_STRNCASECMP 1
|
||||
#cmakedefine HAVE_STRDUP 1
|
||||
#cmakedefine HAVE_LANGINFO_CODESET
|
||||
#cmakedefine HAVE_LANGINFO_CODESET 1
|
||||
#cmakedefine HAVE_TCGETATTR 1
|
||||
#cmakedefine HAVE_FLOCKFILE 1
|
||||
|
||||
|
|
7
debian/dist/Debian/control
vendored
7
debian/dist/Debian/control
vendored
|
@ -4,7 +4,12 @@ Priority: optional
|
|||
Maintainer: MariaDB Developers <maria-developers@lists.launchpad.net>
|
||||
XSBC-Original-Maintainer: Maria Developers <maria-developers@lists.launchpad.net>
|
||||
Uploaders: MariaDB Developers <maria-developers@lists.launchpad.net>
|
||||
Build-Depends: libtool (>= 1.4.2-7), procps | hurd, debhelper, file (>= 3.28), libncurses5-dev (>= 5.0-6), perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3), zlib1g-dev (>= 1:1.1.3-5), ${LIBREADLINE_DEV}, libssl-dev, libpam0g-dev, psmisc, po-debconf, chrpath, automake1.9, doxygen, texlive-latex-base, ghostscript | gs-gpl, dpatch, gawk, bison, lsb-release, hardening-wrapper, ${CMAKE_DEP}libaio-dev, libjemalloc-dev (>= 3.0.0)
|
||||
Build-Depends: procps | hurd, debhelper, libncurses5-dev (>= 5.0-6),
|
||||
perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3),
|
||||
zlib1g-dev (>= 1:1.1.3-5), ${LIBREADLINE_DEV},
|
||||
libssl-dev, libpam0g-dev, psmisc, po-debconf, chrpath,
|
||||
dpatch, gawk, bison, lsb-release, hardening-wrapper,
|
||||
${CMAKE_DEP}libaio-dev, libjemalloc-dev (>= 3.0.0)
|
||||
Standards-Version: 3.8.3
|
||||
Homepage: http://mariadb.org/
|
||||
Vcs-Browser: http://bazaar.launchpad.net/~maria-captains/maria/10.0/files
|
||||
|
|
7
debian/dist/Ubuntu/control
vendored
7
debian/dist/Ubuntu/control
vendored
|
@ -4,7 +4,12 @@ Priority: optional
|
|||
Maintainer: MariaDB Developers <maria-developers@lists.launchpad.net>
|
||||
XSBC-Original-Maintainer: Maria Developers <maria-developers@lists.launchpad.net>
|
||||
Uploaders: MariaDB Developers <maria-developers@lists.launchpad.net>
|
||||
Build-Depends: libtool (>= 1.4.2-7), procps | hurd, debhelper, file (>= 3.28), libncurses5-dev (>= 5.0-6), perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3), zlib1g-dev (>= 1:1.1.3-5), ${LIBREADLINE_DEV}, libssl-dev, libpam0g-dev, psmisc, po-debconf, chrpath, automake1.9, doxygen, texlive-latex-base, ghostscript | gs-gpl, dpatch, gawk, bison, lsb-release, hardening-wrapper, ${CMAKE_DEP}libaio-dev, libjemalloc-dev (>= 3.0.0)
|
||||
Build-Depends: procps | hurd, debhelper, libncurses5-dev (>= 5.0-6),
|
||||
perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3),
|
||||
zlib1g-dev (>= 1:1.1.3-5), ${LIBREADLINE_DEV},
|
||||
libssl-dev, libpam0g-dev, psmisc, po-debconf, chrpath,
|
||||
dpatch, gawk, bison, lsb-release, hardening-wrapper,
|
||||
${CMAKE_DEP}libaio-dev, libjemalloc-dev (>= 3.0.0)
|
||||
Standards-Version: 3.8.2
|
||||
Homepage: http://mariadb.org/
|
||||
Vcs-Browser: http://bazaar.launchpad.net/~maria-captains/maria/10.0/files
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
typedef char my_bool;
|
||||
typedef int my_socket;
|
||||
#include "mysql_version.h"
|
||||
#include "mysql_com.h"
|
||||
enum enum_server_command
|
||||
{
|
||||
COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST,
|
||||
|
@ -145,7 +143,6 @@ void get_tty_password_buff(const char *opt_message, char *to, size_t length);
|
|||
const char *mysql_errno_to_sqlstate(unsigned int mysql_errno);
|
||||
my_bool my_thread_init(void);
|
||||
void my_thread_end(void);
|
||||
#include "mysql_time.h"
|
||||
typedef long my_time_t;
|
||||
enum enum_mysql_timestamp_type
|
||||
{
|
||||
|
@ -159,7 +156,6 @@ typedef struct st_mysql_time
|
|||
my_bool neg;
|
||||
enum enum_mysql_timestamp_type time_type;
|
||||
} MYSQL_TIME;
|
||||
#include "my_list.h"
|
||||
typedef struct st_list {
|
||||
struct st_list *prev,*next;
|
||||
void *data;
|
||||
|
@ -201,8 +197,6 @@ typedef struct st_mysql_field {
|
|||
typedef char **MYSQL_ROW;
|
||||
typedef unsigned int MYSQL_FIELD_OFFSET;
|
||||
typedef unsigned long long my_ulonglong;
|
||||
#include "typelib.h"
|
||||
#include "my_alloc.h"
|
||||
typedef struct st_used_mem
|
||||
{
|
||||
struct st_used_mem *next;
|
||||
|
@ -246,7 +240,6 @@ typedef struct st_mysql_rows {
|
|||
unsigned long length;
|
||||
} MYSQL_ROWS;
|
||||
typedef MYSQL_ROWS *MYSQL_ROW_OFFSET;
|
||||
#include "my_alloc.h"
|
||||
typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;
|
||||
typedef struct st_mysql_data {
|
||||
MYSQL_ROWS *data;
|
||||
|
|
|
@ -3,7 +3,6 @@ struct st_mysql_client_plugin
|
|||
int type; unsigned int interface_version; const char *name; const char *author; const char *desc; unsigned int version[3]; const char *license; void *mysql_api; int (*init)(char *, size_t, int, va_list); int (*deinit)(); int (*options)(const char *option, const void *);
|
||||
};
|
||||
struct st_mysql;
|
||||
#include <mysql/plugin_auth_common.h>
|
||||
typedef struct st_plugin_vio_info
|
||||
{
|
||||
enum { MYSQL_VIO_INVALID, MYSQL_VIO_TCP, MYSQL_VIO_SOCKET,
|
||||
|
@ -24,7 +23,6 @@ struct st_mysql_client_plugin_AUTHENTICATION
|
|||
int type; unsigned int interface_version; const char *name; const char *author; const char *desc; unsigned int version[3]; const char *license; void *mysql_api; int (*init)(char *, size_t, int, va_list); int (*deinit)(); int (*options)(const char *option, const void *);
|
||||
int (*authenticate_user)(MYSQL_PLUGIN_VIO *vio, struct st_mysql *mysql);
|
||||
};
|
||||
#include <mysql/auth_dialog_client.h>
|
||||
struct st_mysql;
|
||||
typedef char *(*mysql_authentication_dialog_ask_t)(struct st_mysql *mysql,
|
||||
int type, const char *prompt, char *buf, int buf_len);
|
||||
|
|
|
@ -1,15 +1,11 @@
|
|||
#include "plugin.h"
|
||||
typedef char my_bool;
|
||||
typedef void * MYSQL_PLUGIN;
|
||||
#include <mysql/services.h>
|
||||
#include <mysql/service_my_snprintf.h>
|
||||
extern struct my_snprintf_service_st {
|
||||
size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
|
||||
size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
|
||||
} *my_snprintf_service;
|
||||
size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
|
||||
size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
|
||||
#include <mysql/service_thd_alloc.h>
|
||||
struct st_mysql_lex_string
|
||||
{
|
||||
char *str;
|
||||
|
@ -33,7 +29,6 @@ void *thd_memdup(void* thd, const void* str, unsigned int size);
|
|||
MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
|
||||
const char *str, unsigned int size,
|
||||
int allocate_lex_string);
|
||||
#include <mysql/service_thd_wait.h>
|
||||
typedef enum _thd_wait_type_e {
|
||||
THD_WAIT_SLEEP= 1,
|
||||
THD_WAIT_DISKIO= 2,
|
||||
|
@ -54,7 +49,6 @@ extern struct thd_wait_service_st {
|
|||
} *thd_wait_service;
|
||||
void thd_wait_begin(void* thd, int wait_type);
|
||||
void thd_wait_end(void* thd);
|
||||
#include <mysql/service_progress_report.h>
|
||||
extern struct progress_report_service_st {
|
||||
void (*thd_progress_init_func)(void* thd, unsigned int max_stage);
|
||||
void (*thd_progress_report_func)(void* thd,
|
||||
|
@ -75,9 +69,7 @@ void thd_progress_next_stage(void* thd);
|
|||
void thd_progress_end(void* thd);
|
||||
const char *set_thd_proc_info(void*, const char * info, const char *func,
|
||||
const char *file, unsigned int line);
|
||||
#include <mysql/service_debug_sync.h>
|
||||
extern void (*debug_sync_C_callback_ptr)(void*, const char *, size_t);
|
||||
#include <mysql/service_kill_statement.h>
|
||||
enum thd_kill_levels {
|
||||
THD_IS_NOT_KILLED=0,
|
||||
THD_ABORT_SOFTLY=50,
|
||||
|
@ -87,8 +79,6 @@ extern struct kill_statement_service_st {
|
|||
enum thd_kill_levels (*thd_kill_level_func)(const void*);
|
||||
} *thd_kill_statement_service;
|
||||
enum thd_kill_levels thd_kill_level(const void*);
|
||||
#include <mysql/service_thd_timezone.h>
|
||||
#include "mysql_time.h"
|
||||
typedef long my_time_t;
|
||||
enum enum_mysql_timestamp_type
|
||||
{
|
||||
|
@ -108,14 +98,12 @@ extern struct thd_timezone_service_st {
|
|||
} *thd_timezone_service;
|
||||
my_time_t thd_TIME_to_gmt_sec(void* thd, const MYSQL_TIME *ltime, unsigned int *errcode);
|
||||
void thd_gmt_sec_to_TIME(void* thd, MYSQL_TIME *ltime, my_time_t t);
|
||||
#include <mysql/service_sha1.h>
|
||||
extern struct my_sha1_service_st {
|
||||
void (*my_sha1_type)(unsigned char*, const char*, size_t);
|
||||
void (*my_sha1_multi_type)(unsigned char*, ...);
|
||||
} *my_sha1_service;
|
||||
void my_sha1(unsigned char*, const char*, size_t);
|
||||
void my_sha1_multi(unsigned char*, ...);
|
||||
#include <mysql/service_logger.h>
|
||||
typedef struct logger_handle_st LOGGER_HANDLE;
|
||||
extern struct logger_service_st {
|
||||
void (*logger_init_mutexes)();
|
||||
|
@ -137,14 +125,12 @@ extern struct logger_service_st {
|
|||
int logger_printf(LOGGER_HANDLE *log, const char *fmt, ...);
|
||||
int logger_write(LOGGER_HANDLE *log, const char *buffer, size_t size);
|
||||
int logger_rotate(LOGGER_HANDLE *log);
|
||||
#include <mysql/service_thd_autoinc.h>
|
||||
extern struct thd_autoinc_service_st {
|
||||
void (*thd_get_autoinc_func)(const void* thd,
|
||||
unsigned long* off, unsigned long* inc);
|
||||
} *thd_autoinc_service;
|
||||
void thd_get_autoinc(const void* thd,
|
||||
unsigned long* off, unsigned long* inc);
|
||||
#include <mysql/service_thd_error_context.h>
|
||||
extern struct thd_error_context_service_st {
|
||||
const char *(*thd_get_error_message_func)(const void* thd);
|
||||
unsigned int (*thd_get_error_number_func)(const void* thd);
|
||||
|
@ -223,8 +209,6 @@ struct st_maria_plugin
|
|||
const char *version_info;
|
||||
unsigned int maturity;
|
||||
};
|
||||
#include "plugin_ftparser.h"
|
||||
#include "plugin.h"
|
||||
enum enum_ftparser_mode
|
||||
{
|
||||
MYSQL_FTPARSER_SIMPLE_MODE= 0,
|
||||
|
|
|
@ -1,15 +1,11 @@
|
|||
#include <mysql/plugin.h>
|
||||
typedef char my_bool;
|
||||
typedef void * MYSQL_PLUGIN;
|
||||
#include <mysql/services.h>
|
||||
#include <mysql/service_my_snprintf.h>
|
||||
extern struct my_snprintf_service_st {
|
||||
size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
|
||||
size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
|
||||
} *my_snprintf_service;
|
||||
size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
|
||||
size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
|
||||
#include <mysql/service_thd_alloc.h>
|
||||
struct st_mysql_lex_string
|
||||
{
|
||||
char *str;
|
||||
|
@ -33,7 +29,6 @@ void *thd_memdup(void* thd, const void* str, unsigned int size);
|
|||
MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
|
||||
const char *str, unsigned int size,
|
||||
int allocate_lex_string);
|
||||
#include <mysql/service_thd_wait.h>
|
||||
typedef enum _thd_wait_type_e {
|
||||
THD_WAIT_SLEEP= 1,
|
||||
THD_WAIT_DISKIO= 2,
|
||||
|
@ -54,7 +49,6 @@ extern struct thd_wait_service_st {
|
|||
} *thd_wait_service;
|
||||
void thd_wait_begin(void* thd, int wait_type);
|
||||
void thd_wait_end(void* thd);
|
||||
#include <mysql/service_progress_report.h>
|
||||
extern struct progress_report_service_st {
|
||||
void (*thd_progress_init_func)(void* thd, unsigned int max_stage);
|
||||
void (*thd_progress_report_func)(void* thd,
|
||||
|
@ -75,9 +69,7 @@ void thd_progress_next_stage(void* thd);
|
|||
void thd_progress_end(void* thd);
|
||||
const char *set_thd_proc_info(void*, const char * info, const char *func,
|
||||
const char *file, unsigned int line);
|
||||
#include <mysql/service_debug_sync.h>
|
||||
extern void (*debug_sync_C_callback_ptr)(void*, const char *, size_t);
|
||||
#include <mysql/service_kill_statement.h>
|
||||
enum thd_kill_levels {
|
||||
THD_IS_NOT_KILLED=0,
|
||||
THD_ABORT_SOFTLY=50,
|
||||
|
@ -87,8 +79,6 @@ extern struct kill_statement_service_st {
|
|||
enum thd_kill_levels (*thd_kill_level_func)(const void*);
|
||||
} *thd_kill_statement_service;
|
||||
enum thd_kill_levels thd_kill_level(const void*);
|
||||
#include <mysql/service_thd_timezone.h>
|
||||
#include "mysql_time.h"
|
||||
typedef long my_time_t;
|
||||
enum enum_mysql_timestamp_type
|
||||
{
|
||||
|
@ -108,14 +98,12 @@ extern struct thd_timezone_service_st {
|
|||
} *thd_timezone_service;
|
||||
my_time_t thd_TIME_to_gmt_sec(void* thd, const MYSQL_TIME *ltime, unsigned int *errcode);
|
||||
void thd_gmt_sec_to_TIME(void* thd, MYSQL_TIME *ltime, my_time_t t);
|
||||
#include <mysql/service_sha1.h>
|
||||
extern struct my_sha1_service_st {
|
||||
void (*my_sha1_type)(unsigned char*, const char*, size_t);
|
||||
void (*my_sha1_multi_type)(unsigned char*, ...);
|
||||
} *my_sha1_service;
|
||||
void my_sha1(unsigned char*, const char*, size_t);
|
||||
void my_sha1_multi(unsigned char*, ...);
|
||||
#include <mysql/service_logger.h>
|
||||
typedef struct logger_handle_st LOGGER_HANDLE;
|
||||
extern struct logger_service_st {
|
||||
void (*logger_init_mutexes)();
|
||||
|
@ -137,14 +125,12 @@ extern struct logger_service_st {
|
|||
int logger_printf(LOGGER_HANDLE *log, const char *fmt, ...);
|
||||
int logger_write(LOGGER_HANDLE *log, const char *buffer, size_t size);
|
||||
int logger_rotate(LOGGER_HANDLE *log);
|
||||
#include <mysql/service_thd_autoinc.h>
|
||||
extern struct thd_autoinc_service_st {
|
||||
void (*thd_get_autoinc_func)(const void* thd,
|
||||
unsigned long* off, unsigned long* inc);
|
||||
} *thd_autoinc_service;
|
||||
void thd_get_autoinc(const void* thd,
|
||||
unsigned long* off, unsigned long* inc);
|
||||
#include <mysql/service_thd_error_context.h>
|
||||
extern struct thd_error_context_service_st {
|
||||
const char *(*thd_get_error_message_func)(const void* thd);
|
||||
unsigned int (*thd_get_error_number_func)(const void* thd);
|
||||
|
@ -223,8 +209,6 @@ struct st_maria_plugin
|
|||
const char *version_info;
|
||||
unsigned int maturity;
|
||||
};
|
||||
#include "plugin_ftparser.h"
|
||||
#include "plugin.h"
|
||||
enum enum_ftparser_mode
|
||||
{
|
||||
MYSQL_FTPARSER_SIMPLE_MODE= 0,
|
||||
|
@ -314,7 +298,6 @@ void *thd_get_ha_data(const void* thd, const struct handlerton *hton);
|
|||
void thd_set_ha_data(void* thd, const struct handlerton *hton,
|
||||
const void *ha_data);
|
||||
void thd_wakeup_subsequent_commits(void* thd, int wakeup_error);
|
||||
#include <mysql/plugin_auth_common.h>
|
||||
typedef struct st_plugin_vio_info
|
||||
{
|
||||
enum { MYSQL_VIO_INVALID, MYSQL_VIO_TCP, MYSQL_VIO_SOCKET,
|
||||
|
|
|
@ -1,15 +1,11 @@
|
|||
#include "plugin.h"
|
||||
typedef char my_bool;
|
||||
typedef void * MYSQL_PLUGIN;
|
||||
#include <mysql/services.h>
|
||||
#include <mysql/service_my_snprintf.h>
|
||||
extern struct my_snprintf_service_st {
|
||||
size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
|
||||
size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
|
||||
} *my_snprintf_service;
|
||||
size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
|
||||
size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
|
||||
#include <mysql/service_thd_alloc.h>
|
||||
struct st_mysql_lex_string
|
||||
{
|
||||
char *str;
|
||||
|
@ -33,7 +29,6 @@ void *thd_memdup(void* thd, const void* str, unsigned int size);
|
|||
MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
|
||||
const char *str, unsigned int size,
|
||||
int allocate_lex_string);
|
||||
#include <mysql/service_thd_wait.h>
|
||||
typedef enum _thd_wait_type_e {
|
||||
THD_WAIT_SLEEP= 1,
|
||||
THD_WAIT_DISKIO= 2,
|
||||
|
@ -54,7 +49,6 @@ extern struct thd_wait_service_st {
|
|||
} *thd_wait_service;
|
||||
void thd_wait_begin(void* thd, int wait_type);
|
||||
void thd_wait_end(void* thd);
|
||||
#include <mysql/service_progress_report.h>
|
||||
extern struct progress_report_service_st {
|
||||
void (*thd_progress_init_func)(void* thd, unsigned int max_stage);
|
||||
void (*thd_progress_report_func)(void* thd,
|
||||
|
@ -75,9 +69,7 @@ void thd_progress_next_stage(void* thd);
|
|||
void thd_progress_end(void* thd);
|
||||
const char *set_thd_proc_info(void*, const char * info, const char *func,
|
||||
const char *file, unsigned int line);
|
||||
#include <mysql/service_debug_sync.h>
|
||||
extern void (*debug_sync_C_callback_ptr)(void*, const char *, size_t);
|
||||
#include <mysql/service_kill_statement.h>
|
||||
enum thd_kill_levels {
|
||||
THD_IS_NOT_KILLED=0,
|
||||
THD_ABORT_SOFTLY=50,
|
||||
|
@ -87,8 +79,6 @@ extern struct kill_statement_service_st {
|
|||
enum thd_kill_levels (*thd_kill_level_func)(const void*);
|
||||
} *thd_kill_statement_service;
|
||||
enum thd_kill_levels thd_kill_level(const void*);
|
||||
#include <mysql/service_thd_timezone.h>
|
||||
#include "mysql_time.h"
|
||||
typedef long my_time_t;
|
||||
enum enum_mysql_timestamp_type
|
||||
{
|
||||
|
@ -108,14 +98,12 @@ extern struct thd_timezone_service_st {
|
|||
} *thd_timezone_service;
|
||||
my_time_t thd_TIME_to_gmt_sec(void* thd, const MYSQL_TIME *ltime, unsigned int *errcode);
|
||||
void thd_gmt_sec_to_TIME(void* thd, MYSQL_TIME *ltime, my_time_t t);
|
||||
#include <mysql/service_sha1.h>
|
||||
extern struct my_sha1_service_st {
|
||||
void (*my_sha1_type)(unsigned char*, const char*, size_t);
|
||||
void (*my_sha1_multi_type)(unsigned char*, ...);
|
||||
} *my_sha1_service;
|
||||
void my_sha1(unsigned char*, const char*, size_t);
|
||||
void my_sha1_multi(unsigned char*, ...);
|
||||
#include <mysql/service_logger.h>
|
||||
typedef struct logger_handle_st LOGGER_HANDLE;
|
||||
extern struct logger_service_st {
|
||||
void (*logger_init_mutexes)();
|
||||
|
@ -137,14 +125,12 @@ extern struct logger_service_st {
|
|||
int logger_printf(LOGGER_HANDLE *log, const char *fmt, ...);
|
||||
int logger_write(LOGGER_HANDLE *log, const char *buffer, size_t size);
|
||||
int logger_rotate(LOGGER_HANDLE *log);
|
||||
#include <mysql/service_thd_autoinc.h>
|
||||
extern struct thd_autoinc_service_st {
|
||||
void (*thd_get_autoinc_func)(const void* thd,
|
||||
unsigned long* off, unsigned long* inc);
|
||||
} *thd_autoinc_service;
|
||||
void thd_get_autoinc(const void* thd,
|
||||
unsigned long* off, unsigned long* inc);
|
||||
#include <mysql/service_thd_error_context.h>
|
||||
extern struct thd_error_context_service_st {
|
||||
const char *(*thd_get_error_message_func)(const void* thd);
|
||||
unsigned int (*thd_get_error_number_func)(const void* thd);
|
||||
|
@ -223,7 +209,6 @@ struct st_maria_plugin
|
|||
const char *version_info;
|
||||
unsigned int maturity;
|
||||
};
|
||||
#include "plugin_ftparser.h"
|
||||
struct st_mysql_daemon
|
||||
{
|
||||
int interface_version;
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#include "mysql/psi/psi.h"
|
||||
C_MODE_START
|
||||
struct TABLE_SHARE;
|
||||
struct sql_digest_storage;
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#include "mysql/psi/psi.h"
|
||||
C_MODE_START
|
||||
struct TABLE_SHARE;
|
||||
struct sql_digest_storage;
|
||||
|
|
|
@ -381,7 +381,7 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|||
CONFIGURE_FILE(
|
||||
${VERSION_SCRIPT_TEMPLATE}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libmysql_versions.ld
|
||||
@ONLY@
|
||||
@ONLY
|
||||
)
|
||||
SET(VERSION_SCRIPT_LINK_FLAGS
|
||||
"-Wl,${CMAKE_CURRENT_BINARY_DIR}/libmysql_versions.ld")
|
||||
|
|
|
@ -6040,6 +6040,21 @@ DROP TABLE t1;
|
|||
# End of ctype_utf8_ilseq.inc
|
||||
#
|
||||
#
|
||||
# MDEV-8067 correct fix for MySQL Bug # 19699237: UNINITIALIZED VARIABLE IN ITEM_FIELD::STR_RESULT
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf8);
|
||||
CREATE TABLE t2 (a VARCHAR(10) CHARACTER SET latin1);
|
||||
INSERT INTO t1 VALUES ('aaa');
|
||||
INSERT INTO t2 VALUES ('aaa');
|
||||
SELECT (SELECT CONCAT(a),1 FROM t1) <=> (SELECT CONCAT(a),1 FROM t2);
|
||||
(SELECT CONCAT(a),1 FROM t1) <=> (SELECT CONCAT(a),1 FROM t2)
|
||||
1
|
||||
INSERT INTO t1 VALUES ('aaa');
|
||||
INSERT INTO t2 VALUES ('aaa');
|
||||
SELECT (SELECT CONCAT(a),1 FROM t1) <=> (SELECT CONCAT(a),1 FROM t2);
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
#
|
||||
|
|
|
@ -1455,6 +1455,12 @@ Warnings:
|
|||
Warning 1918 Encountered illegal value '18446744073709552001' when converting to INT
|
||||
Note 1105 Cast to signed converted positive out-of-range integer to it's negative complement
|
||||
#
|
||||
# MDEV-7505 - Too large scale in DECIMAL dynamic column getter crashes
|
||||
# mysqld
|
||||
#
|
||||
SELECT COLUMN_GET(`x`, 'y' AS DECIMAL(5,34));
|
||||
ERROR 42000: Too big scale 34 specified for ''y''. Maximum is 30.
|
||||
#
|
||||
# test of symbolic names
|
||||
#
|
||||
# creation test (names)
|
||||
|
|
1
mysql-test/r/empty_server_name-8224.result
Normal file
1
mysql-test/r/empty_server_name-8224.result
Normal file
|
@ -0,0 +1 @@
|
|||
create server '' foreign data wrapper w2 options (host '127.0.0.1');
|
|
@ -2342,7 +2342,7 @@ DROP TABLE t1;
|
|||
create table t1 (a int, b int);
|
||||
insert into t1 values (1,11), (1,12), (2,22),(2,23), (4,44),(4,45);
|
||||
create table t2 (c int, d int);
|
||||
insert into t2 values (1,11), (1,12), (2,22),(2,23), (4,44),(4,45);
|
||||
insert into t2 values (1,11), (2,22), (4,44);
|
||||
select distinct a,sum(b), (select d from t2 where c=a order by max(b) limit 1) from t1 group by a order by max(b);
|
||||
a sum(b) (select d from t2 where c=a order by max(b) limit 1)
|
||||
1 23 11
|
||||
|
|
|
@ -6,3 +6,15 @@ select variable_name from information_schema.session_variables where variable_na
|
|||
(select variable_name from information_schema.session_variables where variable_name = 'basedir');
|
||||
variable_name
|
||||
BASEDIR
|
||||
create table t1 (a char);
|
||||
insert t1 values ('a'),('t'),('z');
|
||||
flush status;
|
||||
select a, exists (select 1 from information_schema.columns where table_schema=concat('tes',a)) from t1;
|
||||
a exists (select 1 from information_schema.columns where table_schema=concat('tes',a))
|
||||
a 0
|
||||
t 1
|
||||
z 0
|
||||
show status like 'created_tmp_tables';
|
||||
Variable_name Value
|
||||
Created_tmp_tables 43
|
||||
drop table t1;
|
||||
|
|
|
@ -2527,6 +2527,17 @@ test.t1 check error Size of indexfile is: 1024 Should be: 2048
|
|||
test.t1 check warning Size of datafile is: 14 Should be: 7
|
||||
test.t1 check error Corrupt
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-3870 - Valgrind warnings on OPTIMIZE MyISAM or Aria TABLE with
|
||||
# disabled keys
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (4),(3),(1),(0);
|
||||
ALTER TABLE t1 DISABLE KEYS;
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
DROP TABLE t1;
|
||||
show variables like 'myisam_block_size';
|
||||
Variable_name Value
|
||||
myisam_block_size 1024
|
||||
|
|
|
@ -60,3 +60,12 @@ INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset,
|
|||
#
|
||||
TRUNCATE TABLE time_zone_leap_second;
|
||||
ALTER TABLE time_zone_leap_second ORDER BY Transition_time;
|
||||
#
|
||||
# MDEV-6236 - [PATCH] mysql_tzinfo_to_sql may produce invalid SQL
|
||||
#
|
||||
TRUNCATE TABLE time_zone;
|
||||
TRUNCATE TABLE time_zone_name;
|
||||
TRUNCATE TABLE time_zone_transition;
|
||||
TRUNCATE TABLE time_zone_transition_type;
|
||||
ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time;
|
||||
ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id;
|
||||
|
|
|
@ -3,6 +3,41 @@ drop table if exists t1,v1,v2,v3,v4,v1badcheck;
|
|||
drop view if exists t1,v1,v2,v3,v4,v1badcheck;
|
||||
create table t1(a int);
|
||||
create table kv(k varchar(30) NOT NULL PRIMARY KEY,v varchar(50));
|
||||
create view v1 as select 1;
|
||||
repair table t1 quick;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
repair table t1 extended;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
repair table t1 use_frm;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
repair table t1 from mysql;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'from mysql' at line 1
|
||||
repair view v1 quick;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'quick' at line 1
|
||||
repair view v1 extended;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'extended' at line 1
|
||||
repair view v1 use_frm;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'use_frm' at line 1
|
||||
repair view v1 from mysql;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 repair status OK
|
||||
check view v1 quick;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'quick' at line 1
|
||||
check view v1 fast;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'fast' at line 1
|
||||
check view v1 medium;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'medium' at line 1
|
||||
check view v1 extended;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'extended' at line 1
|
||||
check view v1 changed;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'changed' at line 1
|
||||
check view v1 for upgrade;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 check status OK
|
||||
drop view v1;
|
||||
flush tables;
|
||||
check view v1;
|
||||
Table Op Msg_type Msg_text
|
||||
|
|
|
@ -347,3 +347,26 @@ CREATE TABLE test.`t.1` (id int);
|
|||
mysqlcheck test t.1
|
||||
test.t.1 OK
|
||||
drop table test.`t.1`;
|
||||
create view v1 as select 1;
|
||||
mysqlcheck --process-views test
|
||||
test.v1 OK
|
||||
mysqlcheck --process-views --extended test
|
||||
test.v1 OK
|
||||
mysqlcheck --process-views --fast test
|
||||
mysqlcheck --process-views --quick test
|
||||
test.v1 OK
|
||||
mysqlcheck --process-views --check-only-changed test
|
||||
mysqlcheck --process-views --medium-check test
|
||||
test.v1 OK
|
||||
mysqlcheck --process-views --check-upgrade test
|
||||
test.v1 OK
|
||||
drop view v1;
|
||||
create table t1(a int);
|
||||
mysqlcheck --process-views --check-upgrade --auto-repair test
|
||||
test.t1 OK
|
||||
test.v1 Needs upgrade
|
||||
|
||||
Repairing views
|
||||
test.v1 OK
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
|
|
@ -380,33 +380,33 @@ DROP TABLE t1;
|
|||
create table t1 (a int) engine=innodb partition by hash(a) ;
|
||||
show table status like 't1';
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 2 8192 16384 0 0 # NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Compact 2 8192 16384 0 0 # NULL # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
drop table t1;
|
||||
create table t1 (a int)
|
||||
engine = innodb
|
||||
partition by key (a);
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 2 8192 16384 0 0 # NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Compact 2 8192 16384 0 0 # NULL # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
insert into t1 values (0), (1), (2), (3);
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 4 4096 16384 0 0 # NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Compact 4 4096 16384 0 0 # NULL # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
drop table t1;
|
||||
create table t1 (a int auto_increment primary key)
|
||||
engine = innodb
|
||||
partition by key (a);
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 2 8192 16384 0 0 # 1 NULL NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Compact 2 8192 16384 0 0 # 1 # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
insert into t1 values (NULL), (NULL), (NULL), (NULL);
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 4 4096 16384 0 0 # 5 NULL NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Compact 4 4096 16384 0 0 # 5 # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
insert into t1 values (NULL), (NULL), (NULL), (NULL);
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 8 2048 16384 0 0 # 9 NULL NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Compact 8 2048 16384 0 0 # 9 # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
drop table t1;
|
||||
create table t1 (a int)
|
||||
partition by key (a)
|
||||
|
@ -588,6 +588,17 @@ a b
|
|||
0 1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #17299181 CREATE_TIME AND UPDATE_TIME ARE
|
||||
# WRONG FOR PARTITIONED TABLES
|
||||
#
|
||||
CREATE TABLE t1 (a int, PRIMARY KEY (a)) ENGINE=InnoDB
|
||||
PARTITION BY HASH (a) PARTITIONS 2;
|
||||
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE
|
||||
CREATE_TIME IS NOT NULL AND TABLE_NAME='t1';
|
||||
COUNT(*)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG#12912171 - ASSERTION FAILED: QUICK->HEAD->READ_SET ==
|
||||
# SAVE_READ_SET
|
||||
#
|
||||
|
|
39
mysql-test/r/range_innodb.result
Normal file
39
mysql-test/r/range_innodb.result
Normal file
|
@ -0,0 +1,39 @@
|
|||
#
|
||||
# Range optimizer (and related) tests that need InnoDB.
|
||||
#
|
||||
drop table if exists t0, t1, t2;
|
||||
#
|
||||
# MDEV-6735: Range checked for each record used with key
|
||||
#
|
||||
create table t0(a int);
|
||||
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t1(a int);
|
||||
insert into t1 select A.a + B.a* 10 + C.a * 100 + D.a * 1000
|
||||
from t0 A, t0 B, t0 C, t0 D;
|
||||
create table t2 (
|
||||
a int,
|
||||
b int,
|
||||
filler1 char(100),
|
||||
filler2 char(100),
|
||||
filler3 char(100),
|
||||
filler4 char(100),
|
||||
key(a),
|
||||
key(b)
|
||||
) engine=innodb;
|
||||
insert into t2
|
||||
select
|
||||
a,a,
|
||||
repeat('0123456789', 10),
|
||||
repeat('0123456789', 10),
|
||||
repeat('0123456789', 10),
|
||||
repeat('0123456789', 10)
|
||||
from t1;
|
||||
analyze table t2;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t2 analyze status OK
|
||||
# The following must not use "Range checked for each record":
|
||||
explain select * from t0 left join t2 on t2.a <t0.a and t2.b between 50 and 250;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 10
|
||||
1 SIMPLE t2 range a,b b 5 NULL 201 Using where; Using join buffer (flat, BNL join)
|
||||
drop table t0,t1,t2;
|
15
mysql-test/r/ssl_7937,nossl.result
Normal file
15
mysql-test/r/ssl_7937,nossl.result
Normal file
|
@ -0,0 +1,15 @@
|
|||
create procedure have_ssl()
|
||||
select if(variable_value > '','yes','no') as 'have_ssl'
|
||||
from information_schema.session_status
|
||||
where variable_name='ssl_cipher';
|
||||
mysql --ssl-ca=cacert.pem -e "call test.have_ssl()"
|
||||
have_ssl
|
||||
no
|
||||
mysql --ssl -e "call test.have_ssl()"
|
||||
have_ssl
|
||||
no
|
||||
mysql --ssl-ca=cacert.pem --ssl-verify-server-cert -e "call test.have_ssl()"
|
||||
ERROR 2026 (HY000): SSL connection error: SSL is required, but the server does not support it
|
||||
mysql --ssl --ssl-verify-server-cert -e "call test.have_ssl()"
|
||||
ERROR 2026 (HY000): SSL connection error: SSL is required, but the server does not support it
|
||||
drop procedure have_ssl;
|
16
mysql-test/r/ssl_7937.result
Normal file
16
mysql-test/r/ssl_7937.result
Normal file
|
@ -0,0 +1,16 @@
|
|||
create procedure have_ssl()
|
||||
select if(variable_value > '','yes','no') as 'have_ssl'
|
||||
from information_schema.session_status
|
||||
where variable_name='ssl_cipher';
|
||||
mysql --ssl-ca=cacert.pem -e "call test.have_ssl()"
|
||||
have_ssl
|
||||
yes
|
||||
mysql --ssl -e "call test.have_ssl()"
|
||||
have_ssl
|
||||
yes
|
||||
mysql --ssl-ca=cacert.pem --ssl-verify-server-cert -e "call test.have_ssl()"
|
||||
have_ssl
|
||||
yes
|
||||
mysql --ssl --ssl-verify-server-cert -e "call test.have_ssl()"
|
||||
ERROR 2026 (HY000): SSL connection error: Failed to verify the server certificate
|
||||
drop procedure have_ssl;
|
33
mysql-test/r/truncate-stale-6500.result
Normal file
33
mysql-test/r/truncate-stale-6500.result
Normal file
|
@ -0,0 +1,33 @@
|
|||
SET GLOBAL query_cache_size=1024*1024*8;
|
||||
CREATE TABLE `test` (
|
||||
`uniqueId` INT NOT NULL,
|
||||
`partitionId` INT NOT NULL,
|
||||
PRIMARY KEY (`uniqueId`,`partitionId`)
|
||||
) ENGINE=InnoDB PARTITION BY LIST (partitionId) (
|
||||
PARTITION p01 VALUES IN (1),
|
||||
PARTITION p02 VALUES IN (2)
|
||||
);
|
||||
INSERT INTO `test`(`uniqueId`,`partitionId`) VALUES(407237055, 2);
|
||||
SELECT * FROM `test`;
|
||||
uniqueId partitionId
|
||||
407237055 2
|
||||
#Confirms 1 row in partition 'p02'
|
||||
SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS FROM information_schema.PARTITIONS where TABLE_NAME = 'test';
|
||||
TABLE_NAME PARTITION_NAME TABLE_ROWS
|
||||
test p01 0
|
||||
test p02 1
|
||||
ALTER TABLE `test` TRUNCATE PARTITION `p02`;
|
||||
#Confirms no more rows in partition 'p02'
|
||||
SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS FROM information_schema.PARTITIONS where TABLE_NAME = 'test';
|
||||
TABLE_NAME PARTITION_NAME TABLE_ROWS
|
||||
test p01 0
|
||||
test p02 0
|
||||
#Before the patch, this returned the previously existing values.
|
||||
SELECT * FROM `test`;
|
||||
uniqueId partitionId
|
||||
SELECT SQL_CACHE * FROM `test`;
|
||||
uniqueId partitionId
|
||||
SELECT SQL_NO_CACHE * FROM `test`;
|
||||
uniqueId partitionId
|
||||
DROP TABLE test;
|
||||
SET GLOBAL query_cache_size=DEFAULT;
|
|
@ -994,3 +994,24 @@ GROUP BY t2.col0
|
|||
WHERE CONCAT(t1.col1, CAST(subq.col0 AS DECIMAL));
|
||||
1
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# Start of 5.5 tests
|
||||
#
|
||||
#
|
||||
# MDEV-8267 Add /*old*/ comment into I_S.COLUMN_TYPE for old DECIMAL
|
||||
#
|
||||
SHOW CREATE TABLE t1dec102;
|
||||
Table Create Table
|
||||
t1dec102 CREATE TABLE `t1dec102` (
|
||||
`a` decimal(10,2)/*old*/ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SHOW COLUMNS FROM t1dec102;
|
||||
Field Type Null Key Default Extra
|
||||
a decimal(10,2)/*old*/ YES NULL
|
||||
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='t1dec102';
|
||||
COLUMN_NAME DATA_TYPE COLUMN_TYPE
|
||||
a decimal decimal(10,2)/*old*/
|
||||
DROP TABLE t1dec102;
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
|
|
31
mysql-test/r/update_innodb.result
Normal file
31
mysql-test/r/update_innodb.result
Normal file
|
@ -0,0 +1,31 @@
|
|||
CREATE TABLE `t1` (
|
||||
`c1` int(11) NOT NULL,
|
||||
`c2` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
CREATE TABLE `t2` (
|
||||
`c0` varchar(10) NOT NULL,
|
||||
`c1` int(11) NOT NULL,
|
||||
`c2` int(11) NOT NULL,
|
||||
PRIMARY KEY (`c0`,`c1`),
|
||||
KEY `c1` (`c1`),
|
||||
KEY `c2` (`c2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
CREATE TABLE `t3` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`c1` datetime NOT NULL,
|
||||
`c2` bigint(20) NOT NULL,
|
||||
`c3` int(4) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `c2` (`c2`),
|
||||
KEY `c3` (`c3`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
CREATE TABLE `t4` (
|
||||
`c1` int(11) NOT NULL,
|
||||
`c2` bigint(20) DEFAULT NULL,
|
||||
`c3` int(11) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
CREATE ALGORITHM=UNDEFINED VIEW `v1` AS select `t4`.`c1` AS `c1`,`t4`.`c2` AS `c2`,`t4`.`c3` AS `c3` from `t4`;
|
||||
UPDATE t1 a JOIN t2 b ON a.c1 = b.c1 JOIN v1 vw ON b.c2 = vw.c1 JOIN t3 del ON vw.c2 = del.c2 SET a.c2 = ( SELECT max(t.c1) FROM t3 t, v1 i WHERE del.c2 = t.c2 AND vw.c3 = i.c3 AND t.c3 = 4 ) WHERE a.c2 IS NULL OR a.c2 < '2011-05-01';
|
||||
drop view v1;
|
||||
drop table t1,t2,t3,t4;
|
|
@ -5409,6 +5409,24 @@ create view v2 as select t2.* from (t2 left join v1 using (id));
|
|||
update t3 left join v2 using (id) set flag=flag+1;
|
||||
drop view v2, v1;
|
||||
drop table t1, t2, t3;
|
||||
#
|
||||
# MDEV-7207 - ALTER VIEW does not change ALGORITM
|
||||
#
|
||||
create table t1 (a int, b int);
|
||||
create algorithm=temptable view v2 (c) as select b+1 from t1;
|
||||
show create view v2;
|
||||
View Create View character_set_client collation_connection
|
||||
v2 CREATE ALGORITHM=TEMPTABLE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS select (`t1`.`b` + 1) AS `c` from `t1` latin1 latin1_swedish_ci
|
||||
alter algorithm=undefined view v2 (c) as select b+1 from t1;
|
||||
show create view v2;
|
||||
View Create View character_set_client collation_connection
|
||||
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS select (`t1`.`b` + 1) AS `c` from `t1` latin1 latin1_swedish_ci
|
||||
alter algorithm=merge view v2 (c) as select b+1 from t1;
|
||||
show create view v2;
|
||||
View Create View character_set_client collation_connection
|
||||
v2 CREATE ALGORITHM=MERGE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS select (`t1`.`b` + 1) AS `c` from `t1` latin1 latin1_swedish_ci
|
||||
drop view v2;
|
||||
drop table t1;
|
||||
# -----------------------------------------------------------------
|
||||
# -- End of 5.5 tests.
|
||||
# -----------------------------------------------------------------
|
||||
|
|
1
mysql-test/std_data/old_decimal/t1dec102.MYD
Normal file
1
mysql-test/std_data/old_decimal/t1dec102.MYD
Normal file
|
@ -0,0 +1 @@
|
|||
<EFBFBD> 123.45<EFBFBD> 123.46<EFBFBD> 123.47
|
BIN
mysql-test/std_data/old_decimal/t1dec102.MYI
Normal file
BIN
mysql-test/std_data/old_decimal/t1dec102.MYI
Normal file
Binary file not shown.
BIN
mysql-test/std_data/old_decimal/t1dec102.frm
Normal file
BIN
mysql-test/std_data/old_decimal/t1dec102.frm
Normal file
Binary file not shown.
|
@ -327,6 +327,18 @@ INSERT INTO t2 SET a=1;
|
|||
INSERT INTO t2 SET b=1;
|
||||
UPDATE t1, t2 SET t1.a=10, t2.a=20;
|
||||
DROP TABLE t1,t2;
|
||||
INSERT INTO t1dec102 VALUES (-999.99);
|
||||
INSERT INTO t1dec102 VALUES (0);
|
||||
INSERT INTO t1dec102 VALUES (999.99);
|
||||
SELECT * FROM t1dec102 ORDER BY a;
|
||||
a
|
||||
-999.99
|
||||
0.00
|
||||
123.45
|
||||
123.46
|
||||
123.47
|
||||
999.99
|
||||
DROP TABLE t1dec102;
|
||||
flush logs;
|
||||
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
|
||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||
|
@ -4554,6 +4566,62 @@ SET TIMESTAMP=1000000000/*!*/;
|
|||
DROP TABLE `t1`,`t2` /* generated by server */
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # GTID 0-1-317
|
||||
/*!100001 SET @@session.gtid_seq_no=317*//*!*/;
|
||||
BEGIN
|
||||
/*!*/;
|
||||
# at #
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t1dec102` mapped to number #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1dec102`
|
||||
### SET
|
||||
### @1=!! Old DECIMAL (mysql-4.1 or earlier). Not enough metadata to display the value. # at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
COMMIT
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # GTID 0-1-318
|
||||
/*!100001 SET @@session.gtid_seq_no=318*//*!*/;
|
||||
BEGIN
|
||||
/*!*/;
|
||||
# at #
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t1dec102` mapped to number #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1dec102`
|
||||
### SET
|
||||
### @1=!! Old DECIMAL (mysql-4.1 or earlier). Not enough metadata to display the value. # at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
COMMIT
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # GTID 0-1-319
|
||||
/*!100001 SET @@session.gtid_seq_no=319*//*!*/;
|
||||
BEGIN
|
||||
/*!*/;
|
||||
# at #
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t1dec102` mapped to number #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1dec102`
|
||||
### SET
|
||||
### @1=!! Old DECIMAL (mysql-4.1 or earlier). Not enough metadata to display the value. # at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
COMMIT
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # GTID 0-1-320
|
||||
/*!100001 SET @@session.gtid_seq_no=320*//*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
DROP TABLE `t1dec102` /* generated by server */
|
||||
/*!*/;
|
||||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Rotate to master-bin.000002 pos: 4
|
||||
DELIMITER ;
|
||||
# End of log file
|
||||
|
|
|
@ -438,9 +438,20 @@ INSERT INTO t2 SET b=1;
|
|||
UPDATE t1, t2 SET t1.a=10, t2.a=20;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
|
||||
--copy_file std_data/old_decimal/t1dec102.frm $MYSQLD_DATADIR/test/t1dec102.frm
|
||||
--copy_file std_data/old_decimal/t1dec102.MYD $MYSQLD_DATADIR/test/t1dec102.MYD
|
||||
--copy_file std_data/old_decimal/t1dec102.MYI $MYSQLD_DATADIR/test/t1dec102.MYI
|
||||
|
||||
INSERT INTO t1dec102 VALUES (-999.99);
|
||||
INSERT INTO t1dec102 VALUES (0);
|
||||
INSERT INTO t1dec102 VALUES (999.99);
|
||||
SELECT * FROM t1dec102 ORDER BY a;
|
||||
DROP TABLE t1dec102;
|
||||
|
||||
flush logs;
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
--replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/ /exec_time=[0-9]*/exec_time=#/ /end_log_pos [0-9]*/end_log_pos #/ /# at [0-9]*/# at #/ /thread_id=[0-9]*/thread_id=#/ /table id [0-9]*/table id #/ /mapped to number [0-9]*/mapped to number #/ /server v [^ ]*/server v #.##.##/ /(@[0-9]*=[0-9]*[.][0-9]{1,3})[0-9e+-]*[^ ]*(.*(FLOAT|DOUBLE).*[*].)/\1...\2/
|
||||
--exec $MYSQL_BINLOG --base64-output=decode-rows -v -v $MYSQLD_DATADIR/master-bin.000001
|
||||
|
|
17
mysql-test/suite/innodb/r/xa_recovery.result
Normal file
17
mysql-test/suite/innodb/r/xa_recovery.result
Normal file
|
@ -0,0 +1,17 @@
|
|||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
XA START 'x';
|
||||
UPDATE t1 set a=2;
|
||||
XA END 'x';
|
||||
XA PREPARE 'x';
|
||||
call mtr.add_suppression("Found 1 prepared XA transactions");
|
||||
SELECT * FROM t1 LOCK IN SHARE MODE;
|
||||
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
2
|
||||
XA ROLLBACK 'x';
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
DROP TABLE t1;
|
|
@ -1,11 +1,6 @@
|
|||
--source include/have_innodb.inc
|
||||
--source include/have_debug.inc
|
||||
|
||||
if (`select plugin_auth_version <= "5.5.39-MariaDB-36.0" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB as of 5.5.39-MariaDB-36.0 or earlier
|
||||
}
|
||||
|
||||
--echo #
|
||||
--echo # Bug #19471516 SERVER CRASHES WHEN EXECUTING ALTER TABLE
|
||||
--echo # ADD FOREIGN KEY
|
||||
|
|
|
@ -1,8 +1,3 @@
|
|||
if (`select plugin_auth_version <= "5.5.37-MariaDB-34.0" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB as of 5.5.37-MariaDB-34.0 or earlier
|
||||
}
|
||||
|
||||
--source include/have_innodb.inc
|
||||
# embedded server ignores 'delayed', so skip this
|
||||
-- source include/not_embedded.inc
|
||||
|
|
|
@ -2,11 +2,6 @@
|
|||
--source include/have_debug.inc
|
||||
--source include/have_partition.inc
|
||||
|
||||
if (`select plugin_auth_version < "5.6.22" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in InnoDB/XtraDB as of 5.6.21 or earlier
|
||||
}
|
||||
|
||||
--echo #
|
||||
--echo # Bug#19904003 INNODB_LIMIT_OPTIMISTIC_INSERT_DEBUG=1
|
||||
--echo # CAUSES INFINITE PAGE SPLIT
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
--source include/have_innodb.inc
|
||||
--source include/big_test.inc
|
||||
|
||||
if (`select plugin_auth_version < "5.6.22" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in InnoDB/XtraDB as of 5.6.21 or earlier
|
||||
}
|
||||
|
||||
--echo #
|
||||
--echo # Bug #19306524 FAILING ASSERTION WITH TEMP TABLE FOR A PROCEDURE
|
||||
--echo # CALLED FROM A FUNCTION
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
--source include/have_innodb.inc
|
||||
|
||||
if (`select plugin_auth_version <= "5.5.40-MariaDB-36.1" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB as of 5.5.40-MariaDB-36.1 or earlier
|
||||
}
|
||||
|
||||
--echo #
|
||||
--echo # Bug #17852083 PRINT A WARNING WHEN DDL HAS AN ERROR IN
|
||||
--echo # INNODB_STRICT_MODE = 1
|
||||
|
|
47
mysql-test/suite/innodb/t/xa_recovery.test
Normal file
47
mysql-test/suite/innodb/t/xa_recovery.test
Normal file
|
@ -0,0 +1,47 @@
|
|||
if (`select plugin_auth_version <= "5.6.24" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in InnoDB as of 5.6.24 or earlier
|
||||
}
|
||||
--source include/have_innodb.inc
|
||||
# Embedded server does not support restarting.
|
||||
--source include/not_embedded.inc
|
||||
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
connect (con1,localhost,root);
|
||||
XA START 'x'; UPDATE t1 set a=2; XA END 'x'; XA PREPARE 'x';
|
||||
connection default;
|
||||
|
||||
call mtr.add_suppression("Found 1 prepared XA transactions");
|
||||
|
||||
# Kill and restart the server.
|
||||
-- exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
-- shutdown_server 0
|
||||
-- source include/wait_until_disconnected.inc
|
||||
|
||||
-- exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
-- enable_reconnect
|
||||
-- source include/wait_until_connected_again.inc
|
||||
-- disable_reconnect
|
||||
|
||||
disconnect con1;
|
||||
connect (con1,localhost,root);
|
||||
--send SELECT * FROM t1 LOCK IN SHARE MODE
|
||||
|
||||
connection default;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = 'Sending data' and
|
||||
info = 'SELECT * FROM t1 LOCK IN SHARE MODE';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
disconnect con1;
|
||||
|
||||
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
SELECT * FROM t1;
|
||||
XA ROLLBACK 'x';
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
|
@ -6,3 +6,14 @@ OPTIMIZE TABLE t1;
|
|||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-3870 - Valgrind warnings on OPTIMIZE MyISAM or Aria TABLE with
|
||||
# disabled keys
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=Aria;
|
||||
INSERT INTO t1 VALUES (4),(3),(1),(0);
|
||||
ALTER TABLE t1 DISABLE KEYS;
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -160,3 +160,13 @@ INSERT /*! IGNORE */ INTO t1 VALUES ('urxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoz
|
|||
check table t1;
|
||||
OPTIMIZE TABLE t1;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-3870 - Valgrind warnings on OPTIMIZE MyISAM or Aria TABLE with
|
||||
--echo # disabled keys
|
||||
--echo #
|
||||
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=Aria;
|
||||
INSERT INTO t1 VALUES (4),(3),(1),(0);
|
||||
ALTER TABLE t1 DISABLE KEYS;
|
||||
OPTIMIZE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -58,7 +58,10 @@ t1.frm
|
|||
t1.par
|
||||
SET DEBUG_SYNC='before_open_in_get_all_tables SIGNAL parked WAIT_FOR open';
|
||||
SET DEBUG_SYNC='partition_open_error SIGNAL alter WAIT_FOR finish';
|
||||
SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
|
||||
SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION,
|
||||
PARTITION_DESCRIPTION, TABLE_ROWS
|
||||
FROM INFORMATION_SCHEMA.PARTITIONS
|
||||
WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR parked';
|
||||
# When waiting for the name lock in get_all_tables in sql_show.cc
|
||||
# this will not be concurrent any more, thus the TIMEOUT
|
||||
|
@ -70,9 +73,9 @@ ALTER TABLE t1 REORGANIZE PARTITION p0 INTO
|
|||
PARTITION p10 VALUES LESS THAN MAXVALUE);
|
||||
Warnings:
|
||||
Warning 1639 debug sync point wait timed out
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME
|
||||
def test t1 p0 NULL 1 NULL RANGE NULL a NULL 10 1 16384 16384 NULL 0 0 NULL NULL NULL NULL default NULL
|
||||
def test t1 p10 NULL 2 NULL RANGE NULL a NULL MAXVALUE 3 5461 16384 NULL 0 0 NULL NULL NULL NULL default NULL
|
||||
TABLE_SCHEMA TABLE_NAME PARTITION_NAME PARTITION_ORDINAL_POSITION PARTITION_DESCRIPTION TABLE_ROWS
|
||||
test t1 p0 1 10 1
|
||||
test t1 p10 2 MAXVALUE 3
|
||||
t1#P#p0.ibd
|
||||
t1#P#p10.ibd
|
||||
t1.frm
|
||||
|
|
|
@ -62,7 +62,10 @@ SHOW CREATE TABLE t1;
|
|||
SET DEBUG_SYNC='before_open_in_get_all_tables SIGNAL parked WAIT_FOR open';
|
||||
SET DEBUG_SYNC='partition_open_error SIGNAL alter WAIT_FOR finish';
|
||||
send
|
||||
SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
|
||||
SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION,
|
||||
PARTITION_DESCRIPTION, TABLE_ROWS
|
||||
FROM INFORMATION_SCHEMA.PARTITIONS
|
||||
WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
|
||||
|
||||
connect (con1, localhost, root,,);
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR parked';
|
||||
|
|
|
@ -45,6 +45,11 @@ id
|
|||
2
|
||||
alter table t1 rename renamed_t1;
|
||||
set global server_audit_events='connect,query';
|
||||
select 1,
|
||||
2,
|
||||
3;
|
||||
1 2 3
|
||||
1 2 3
|
||||
insert into t2 values (1), (2);
|
||||
select * from t2;
|
||||
id
|
||||
|
@ -157,6 +162,8 @@ id
|
|||
CREATE USER u1 IDENTIFIED BY 'pwd-123';
|
||||
GRANT ALL ON sa_db TO u2 IDENTIFIED BY "pwd-321";
|
||||
SET PASSWORD FOR u1 = PASSWORD('pwd 098');
|
||||
SET PASSWORD FOR u1=<secret>;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '=<secret>' at line 1
|
||||
CREATE USER u3 IDENTIFIED BY '';
|
||||
drop user u1, u2, u3;
|
||||
select 2;
|
||||
|
@ -246,6 +253,7 @@ TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,index_stats,
|
|||
TIME,HOSTNAME,root,localhost,ID,ID,RENAME,test,t1|test.renamed_t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'alter table t1 rename renamed_t1',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_events=\'connect,query\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select 1, 2, 3',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'insert into t2 values (1), (2)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t2',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t_doesnt_exist',ID
|
||||
|
@ -329,6 +337,7 @@ TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'/*comment*/ select 2',0
|
|||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'CREATE USER u1 IDENTIFIED BY *****',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'GRANT ALL ON sa_db TO u2 IDENTIFIED BY *****',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'SET PASSWORD FOR u1 = PASSWORD(*****)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'SET PASSWORD FOR u1=<secret>',ID
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'CREATE USER u3 IDENTIFIED BY *****',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop user u1, u2, u3',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_events=\'\'',0
|
||||
|
|
367
mysql-test/suite/plugins/r/thread_pool_server_audit.result
Normal file
367
mysql-test/suite/plugins/r/thread_pool_server_audit.result
Normal file
|
@ -0,0 +1,367 @@
|
|||
install plugin server_audit soname 'server_audit';
|
||||
show variables like 'server_audit%';
|
||||
Variable_name Value
|
||||
server_audit_events
|
||||
server_audit_excl_users
|
||||
server_audit_file_path server_audit.log
|
||||
server_audit_file_rotate_now OFF
|
||||
server_audit_file_rotate_size 1000000
|
||||
server_audit_file_rotations 9
|
||||
server_audit_incl_users
|
||||
server_audit_logging OFF
|
||||
server_audit_mode 0
|
||||
server_audit_output_type file
|
||||
server_audit_query_log_limit 1024
|
||||
server_audit_syslog_facility LOG_USER
|
||||
server_audit_syslog_ident mysql-server_auditing
|
||||
server_audit_syslog_info
|
||||
server_audit_syslog_priority LOG_INFO
|
||||
set global server_audit_file_path=null;
|
||||
set global server_audit_incl_users=null;
|
||||
set global server_audit_file_path='server_audit.log';
|
||||
set global server_audit_output_type=file;
|
||||
set global server_audit_logging=on;
|
||||
connect(localhost,no_such_user,,mysql,MASTER_PORT,MASTER_SOCKET);
|
||||
ERROR 28000: Access denied for user 'no_such_user'@'localhost' (using password: NO)
|
||||
set global server_audit_incl_users='odin, dva, tri';
|
||||
create table t1 (id int);
|
||||
set global server_audit_incl_users='odin, root, dva, tri';
|
||||
create table t2 (id int);
|
||||
set global server_audit_excl_users='odin, dva, tri';
|
||||
Warnings:
|
||||
Warning 1 User 'odin' is in the server_audit_incl_users, so wasn't added.
|
||||
Warning 1 User 'dva' is in the server_audit_incl_users, so wasn't added.
|
||||
Warning 1 User 'tri' is in the server_audit_incl_users, so wasn't added.
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
set global server_audit_incl_users='odin, root, dva, tri';
|
||||
insert into t2 values (1), (2);
|
||||
select * from t2;
|
||||
id
|
||||
1
|
||||
2
|
||||
alter table t1 rename renamed_t1;
|
||||
set global server_audit_events='connect,query';
|
||||
select 1,
|
||||
2,
|
||||
3;
|
||||
1 2 3
|
||||
1 2 3
|
||||
insert into t2 values (1), (2);
|
||||
select * from t2;
|
||||
id
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
select * from t_doesnt_exist;
|
||||
ERROR 42S02: Table 'test.t_doesnt_exist' doesn't exist
|
||||
syntax_error_query;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'syntax_error_query' at line 1
|
||||
drop table renamed_t1, t2;
|
||||
show variables like 'server_audit%';
|
||||
Variable_name Value
|
||||
server_audit_events CONNECT,QUERY
|
||||
server_audit_excl_users
|
||||
server_audit_file_path server_audit.log
|
||||
server_audit_file_rotate_now OFF
|
||||
server_audit_file_rotate_size 1000000
|
||||
server_audit_file_rotations 9
|
||||
server_audit_incl_users odin, root, dva, tri
|
||||
server_audit_logging ON
|
||||
server_audit_mode 0
|
||||
server_audit_output_type file
|
||||
server_audit_query_log_limit 1024
|
||||
server_audit_syslog_facility LOG_USER
|
||||
server_audit_syslog_ident mysql-server_auditing
|
||||
server_audit_syslog_info
|
||||
server_audit_syslog_priority LOG_INFO
|
||||
set global server_audit_mode=1;
|
||||
set global server_audit_events='';
|
||||
create database sa_db;
|
||||
create table t1 (id2 int);
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
id2
|
||||
1
|
||||
2
|
||||
drop table t1;
|
||||
use sa_db;
|
||||
create table sa_t1(id int);
|
||||
insert into sa_t1 values (1), (2);
|
||||
drop table sa_t1;
|
||||
drop database sa_db;
|
||||
create database sa_db;
|
||||
use sa_db;
|
||||
CREATE USER u1 IDENTIFIED BY 'pwd-123';
|
||||
GRANT ALL ON sa_db TO u2 IDENTIFIED BY "pwd-321";
|
||||
SET PASSWORD FOR u1 = PASSWORD('pwd 098');
|
||||
CREATE USER u3 IDENTIFIED BY '';
|
||||
drop user u1, u2, u3;
|
||||
set global server_audit_events='query_ddl';
|
||||
create table t1(id int);
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
select 2;
|
||||
2
|
||||
2
|
||||
(select 2);
|
||||
2
|
||||
2
|
||||
/*! select 2*/;
|
||||
2
|
||||
2
|
||||
/*comment*/ select 2;
|
||||
2
|
||||
2
|
||||
drop table t1;
|
||||
set global server_audit_events='query_ddl,query_dml';
|
||||
create table t1(id int);
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
select 2;
|
||||
2
|
||||
2
|
||||
drop table t1;
|
||||
set global server_audit_events='query_dml';
|
||||
create table t1(id int);
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
select 2;
|
||||
2
|
||||
2
|
||||
(select 2);
|
||||
2
|
||||
2
|
||||
/*! select 2*/;
|
||||
2
|
||||
2
|
||||
/*comment*/ select 2;
|
||||
2
|
||||
2
|
||||
drop table t1;
|
||||
set global server_audit_events='query_dcl';
|
||||
create table t1(id int);
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
CREATE USER u1 IDENTIFIED BY 'pwd-123';
|
||||
GRANT ALL ON sa_db TO u2 IDENTIFIED BY "pwd-321";
|
||||
SET PASSWORD FOR u1 = PASSWORD('pwd 098');
|
||||
SET PASSWORD FOR u1=<secret>;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '=<secret>' at line 1
|
||||
CREATE USER u3 IDENTIFIED BY '';
|
||||
drop user u1, u2, u3;
|
||||
select 2;
|
||||
2
|
||||
2
|
||||
(select 2);
|
||||
2
|
||||
2
|
||||
/*! select 2*/;
|
||||
2
|
||||
2
|
||||
/*comment*/ select 2;
|
||||
2
|
||||
2
|
||||
drop table t1;
|
||||
set global server_audit_events='';
|
||||
set global server_audit_query_log_limit= 15;
|
||||
select (1), (2), (3), (4);
|
||||
1 2 3 4
|
||||
1 2 3 4
|
||||
select 'A', 'B', 'C', 'D';
|
||||
A B C D
|
||||
A B C D
|
||||
set global server_audit_query_log_limit= 1024;
|
||||
drop database sa_db;
|
||||
set global server_audit_file_path='.';
|
||||
show status like 'server_audit_current_log';
|
||||
Variable_name Value
|
||||
Server_audit_current_log HOME_DIR/server_audit.log
|
||||
set global server_audit_file_path='';
|
||||
show status like 'server_audit_current_log';
|
||||
Variable_name Value
|
||||
Server_audit_current_log server_audit.log
|
||||
set global server_audit_file_path=' ';
|
||||
show status like 'server_audit_current_log';
|
||||
Variable_name Value
|
||||
Server_audit_current_log server_audit.log
|
||||
set global server_audit_file_path='nonexisting_dir/';
|
||||
Warnings:
|
||||
Warning 1 SERVER AUDIT plugin can't create file 'nonexisting_dir/'.
|
||||
show status like 'server_audit_current_log';
|
||||
Variable_name Value
|
||||
Server_audit_current_log server_audit.log
|
||||
show variables like 'server_audit%';
|
||||
Variable_name Value
|
||||
server_audit_events
|
||||
server_audit_excl_users
|
||||
server_audit_file_path
|
||||
server_audit_file_rotate_now OFF
|
||||
server_audit_file_rotate_size 1000000
|
||||
server_audit_file_rotations 9
|
||||
server_audit_incl_users odin, root, dva, tri
|
||||
server_audit_logging ON
|
||||
server_audit_mode 1
|
||||
server_audit_output_type file
|
||||
server_audit_query_log_limit 1024
|
||||
server_audit_syslog_facility LOG_USER
|
||||
server_audit_syslog_ident mysql-server_auditing
|
||||
server_audit_syslog_info
|
||||
server_audit_syslog_priority LOG_INFO
|
||||
uninstall plugin server_audit;
|
||||
Warnings:
|
||||
Warning 1620 Plugin is busy and will be uninstalled on shutdown
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_logging=on',0
|
||||
TIME,HOSTNAME,root,localhost,ID,0,CONNECT,mysql,,0
|
||||
TIME,HOSTNAME,root,localhost,ID,0,DISCONNECT,mysql,,0
|
||||
TIME,HOSTNAME,no_such_user,localhost,ID,0,FAILED_CONNECT,,,ID
|
||||
TIME,HOSTNAME,no_such_user,localhost,ID,0,DISCONNECT,,,0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_incl_users=\'odin, root, dva, tri\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,CREATE,test,t2,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'create table t2 (id int)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_excl_users=\'odin, dva, tri\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'SHOW WARNINGS',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,test,t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'insert into t1 values (1), (2)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,READ,test,t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t1',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_incl_users=\'odin, root, dva, tri\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,test,t2,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'insert into t2 values (1), (2)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,READ,test,t2,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t2',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,ALTER,test,t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,table_stats,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,column_stats,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,index_stats,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,RENAME,test,t1|test.renamed_t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'alter table t1 rename renamed_t1',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_events=\'connect,query\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select 1, 2, 3',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'insert into t2 values (1), (2)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t2',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t_doesnt_exist',ID
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'syntax_error_query',ID
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'drop table renamed_t1, t2',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'show variables like \'server_audit%\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_mode=1',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_events=\'\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'create database sa_db',0
|
||||
TIME,HOSTNAME,root,localhost,ID,0,CONNECT,test,,0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,CREATE,test,t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'create table t1 (id2 int)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,test,t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'insert into t1 values (1), (2)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,READ,test,t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t1',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,table_stats,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,column_stats,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,index_stats,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,DROP,test,t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'drop table t1',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'use sa_db',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,CREATE,sa_db,sa_t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'create table sa_t1(id int)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,sa_db,sa_t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'insert into sa_t1 values (1), (2)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,table_stats,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,column_stats,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,index_stats,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,DROP,sa_db,sa_t1,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop table sa_t1',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,READ,mysql,proc,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,proc,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,event,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop database sa_db',0
|
||||
TIME,HOSTNAME,root,localhost,ID,0,DISCONNECT,sa_db,,0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'create database sa_db',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'use sa_db',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,user,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,db,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,tables_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,columns_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,procs_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,proxies_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,roles_mapping,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'CREATE USER u1 IDENTIFIED BY *****',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,user,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,tables_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'GRANT ALL ON sa_db TO u2 IDENTIFIED BY *****',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,user,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'SET PASSWORD FOR u1 = PASSWORD(*****)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,user,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,db,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,tables_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,columns_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,procs_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,proxies_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,roles_mapping,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'CREATE USER u3 IDENTIFIED BY *****',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,user,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,db,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,tables_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,columns_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,procs_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,proxies_priv,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,roles_mapping,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop user u1, u2, u3',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'create table t1(id int)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop table t1',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'create table t1(id int)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'insert into t1 values (1), (2)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select * from t1',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select 2',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop table t1',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'insert into t1 values (1), (2)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select * from t1',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select 2',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'(select 2)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'/*! select 2*/',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'/*comment*/ select 2',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'CREATE USER u1 IDENTIFIED BY *****',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'GRANT ALL ON sa_db TO u2 IDENTIFIED BY *****',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'SET PASSWORD FOR u1 = PASSWORD(*****)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'SET PASSWORD FOR u1=<secret>',ID
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'CREATE USER u3 IDENTIFIED BY *****',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop user u1, u2, u3',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_events=\'\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global serv',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select (1), (2)',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select \'A\', ',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_query_log_limit= 1024',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,READ,mysql,proc,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,proc,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,event,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop database sa_db',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'.\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'.\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'show status like \'server_audit_current_log\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'show status like \'server_audit_current_log\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\' \'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\' \'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'show status like \'server_audit_current_log\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'nonexisting_dir/\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'nonexisting_dir/\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'SHOW WARNINGS',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'show status like \'server_audit_current_log\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'show variables like \'server_audit%\'',0
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,plugin,
|
||||
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'uninstall plugin server_audit',0
|
|
@ -13,6 +13,7 @@ set global server_audit_incl_users=null;
|
|||
set global server_audit_file_path='server_audit.log';
|
||||
set global server_audit_output_type=file;
|
||||
set global server_audit_logging=on;
|
||||
--sleep 2
|
||||
connect (con1,localhost,root,,mysql);
|
||||
connection default;
|
||||
disconnect con1;
|
||||
|
@ -35,6 +36,9 @@ insert into t2 values (1), (2);
|
|||
select * from t2;
|
||||
alter table t1 rename renamed_t1;
|
||||
set global server_audit_events='connect,query';
|
||||
select 1,
|
||||
2,
|
||||
3;
|
||||
insert into t2 values (1), (2);
|
||||
select * from t2;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
|
@ -103,6 +107,8 @@ select * from t1;
|
|||
CREATE USER u1 IDENTIFIED BY 'pwd-123';
|
||||
GRANT ALL ON sa_db TO u2 IDENTIFIED BY "pwd-321";
|
||||
SET PASSWORD FOR u1 = PASSWORD('pwd 098');
|
||||
--error 1064
|
||||
SET PASSWORD FOR u1=<secret>;
|
||||
CREATE USER u3 IDENTIFIED BY '';
|
||||
drop user u1, u2, u3;
|
||||
select 2;
|
||||
|
|
2
mysql-test/suite/plugins/t/thread_pool_server_audit.opt
Normal file
2
mysql-test/suite/plugins/t/thread_pool_server_audit.opt
Normal file
|
@ -0,0 +1,2 @@
|
|||
--thread_handling=pool-of-threads
|
||||
|
144
mysql-test/suite/plugins/t/thread_pool_server_audit.test
Normal file
144
mysql-test/suite/plugins/t/thread_pool_server_audit.test
Normal file
|
@ -0,0 +1,144 @@
|
|||
--source include/not_embedded.inc
|
||||
--source include/have_pool_of_threads.inc
|
||||
|
||||
if (!$SERVER_AUDIT_SO) {
|
||||
skip No SERVER_AUDIT plugin;
|
||||
}
|
||||
|
||||
install plugin server_audit soname 'server_audit';
|
||||
|
||||
show variables like 'server_audit%';
|
||||
set global server_audit_file_path=null;
|
||||
set global server_audit_incl_users=null;
|
||||
set global server_audit_file_path='server_audit.log';
|
||||
set global server_audit_output_type=file;
|
||||
set global server_audit_logging=on;
|
||||
--sleep 2
|
||||
connect (con1,localhost,root,,mysql);
|
||||
connection default;
|
||||
disconnect con1;
|
||||
--sleep 2
|
||||
--sleep 2
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect (con1,localhost,no_such_user,,mysql);
|
||||
connection default;
|
||||
--sleep 2
|
||||
set global server_audit_incl_users='odin, dva, tri';
|
||||
create table t1 (id int);
|
||||
set global server_audit_incl_users='odin, root, dva, tri';
|
||||
create table t2 (id int);
|
||||
set global server_audit_excl_users='odin, dva, tri';
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
set global server_audit_incl_users='odin, root, dva, tri';
|
||||
insert into t2 values (1), (2);
|
||||
select * from t2;
|
||||
alter table t1 rename renamed_t1;
|
||||
set global server_audit_events='connect,query';
|
||||
select 1,
|
||||
2,
|
||||
3;
|
||||
insert into t2 values (1), (2);
|
||||
select * from t2;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
select * from t_doesnt_exist;
|
||||
--error 1064
|
||||
syntax_error_query;
|
||||
drop table renamed_t1, t2;
|
||||
show variables like 'server_audit%';
|
||||
set global server_audit_mode=1;
|
||||
set global server_audit_events='';
|
||||
create database sa_db;
|
||||
--sleep 2
|
||||
connect (con1,localhost,root,,test);
|
||||
connection con1;
|
||||
--sleep 2
|
||||
--sleep 2
|
||||
create table t1 (id2 int);
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
use sa_db;
|
||||
create table sa_t1(id int);
|
||||
insert into sa_t1 values (1), (2);
|
||||
drop table sa_t1;
|
||||
drop database sa_db;
|
||||
connection default;
|
||||
disconnect con1;
|
||||
--sleep 2
|
||||
--sleep 2
|
||||
create database sa_db;
|
||||
use sa_db;
|
||||
CREATE USER u1 IDENTIFIED BY 'pwd-123';
|
||||
GRANT ALL ON sa_db TO u2 IDENTIFIED BY "pwd-321";
|
||||
SET PASSWORD FOR u1 = PASSWORD('pwd 098');
|
||||
CREATE USER u3 IDENTIFIED BY '';
|
||||
drop user u1, u2, u3;
|
||||
|
||||
set global server_audit_events='query_ddl';
|
||||
create table t1(id int);
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
select 2;
|
||||
(select 2);
|
||||
/*! select 2*/;
|
||||
/*comment*/ select 2;
|
||||
drop table t1;
|
||||
set global server_audit_events='query_ddl,query_dml';
|
||||
create table t1(id int);
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
select 2;
|
||||
drop table t1;
|
||||
set global server_audit_events='query_dml';
|
||||
create table t1(id int);
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
select 2;
|
||||
(select 2);
|
||||
/*! select 2*/;
|
||||
/*comment*/ select 2;
|
||||
drop table t1;
|
||||
set global server_audit_events='query_dcl';
|
||||
create table t1(id int);
|
||||
insert into t1 values (1), (2);
|
||||
select * from t1;
|
||||
CREATE USER u1 IDENTIFIED BY 'pwd-123';
|
||||
GRANT ALL ON sa_db TO u2 IDENTIFIED BY "pwd-321";
|
||||
SET PASSWORD FOR u1 = PASSWORD('pwd 098');
|
||||
--error 1064
|
||||
SET PASSWORD FOR u1=<secret>;
|
||||
CREATE USER u3 IDENTIFIED BY '';
|
||||
drop user u1, u2, u3;
|
||||
select 2;
|
||||
(select 2);
|
||||
/*! select 2*/;
|
||||
/*comment*/ select 2;
|
||||
drop table t1;
|
||||
set global server_audit_events='';
|
||||
|
||||
set global server_audit_query_log_limit= 15;
|
||||
select (1), (2), (3), (4);
|
||||
select 'A', 'B', 'C', 'D';
|
||||
set global server_audit_query_log_limit= 1024;
|
||||
drop database sa_db;
|
||||
|
||||
set global server_audit_file_path='.';
|
||||
--replace_regex /\.[\\\/]/HOME_DIR\//
|
||||
show status like 'server_audit_current_log';
|
||||
set global server_audit_file_path='';
|
||||
show status like 'server_audit_current_log';
|
||||
set global server_audit_file_path=' ';
|
||||
show status like 'server_audit_current_log';
|
||||
set global server_audit_file_path='nonexisting_dir/';
|
||||
show status like 'server_audit_current_log';
|
||||
show variables like 'server_audit%';
|
||||
uninstall plugin server_audit;
|
||||
|
||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||
# replace the timestamp and the hostname with constant values
|
||||
--replace_regex /[0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\,[^,]*\,/TIME,HOSTNAME,/ /\,[1-9][0-9]*\,/,1,/ /\,[1-9][0-9]*/,ID/
|
||||
cat_file $MYSQLD_DATADIR/server_audit.log;
|
||||
remove_file $MYSQLD_DATADIR/server_audit.log;
|
||||
|
9
mysql-test/suite/rpl/r/rpl_old_decimal.result
Normal file
9
mysql-test/suite/rpl/r/rpl_old_decimal.result
Normal file
|
@ -0,0 +1,9 @@
|
|||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1dec102 (a DECIMAL(10,2));
|
||||
INSERT INTO t1dec102 VALUES(999.99);
|
||||
call mtr.add_suppression("Slave SQL.*Column 0 of table .* cannot be converted from type.* Error_code: 1677");
|
||||
include/wait_for_slave_sql_error_and_skip.inc [errno=1677]
|
||||
Last_SQL_Error = 'Column 0 of table 'test.t1dec102' cannot be converted from type 'decimal(0,?)/*old*/' to type 'decimal(10,2)''
|
||||
DROP TABLE t1dec102;
|
||||
include/rpl_end.inc
|
|
@ -182,6 +182,11 @@ DROP USER test_3@localhost;
|
|||
ERROR HY000: Table 'user' was not locked with LOCK TABLES
|
||||
INSERT INTO t2 VALUES ("DROP USER test_3@localhost with table locked");
|
||||
UNLOCK TABLE;
|
||||
CREATE DATABASE db;
|
||||
CREATE TABLE db.t1 LIKE t2;
|
||||
CREATE TABLE t3 LIKE t2;
|
||||
DROP TABLE t3;
|
||||
DROP DATABASE db;
|
||||
DROP USER test_3@localhost;
|
||||
DROP FUNCTION f2;
|
||||
DROP PROCEDURE p2;
|
||||
|
|
25
mysql-test/suite/rpl/t/rpl_old_decimal.test
Normal file
25
mysql-test/suite/rpl/t/rpl_old_decimal.test
Normal file
|
@ -0,0 +1,25 @@
|
|||
--source include/have_binlog_format_row.inc
|
||||
--source include/master-slave.inc
|
||||
|
||||
|
||||
--connection slave
|
||||
CREATE TABLE t1dec102 (a DECIMAL(10,2));
|
||||
|
||||
--connection master
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
|
||||
--copy_file std_data/old_decimal/t1dec102.frm $MYSQLD_DATADIR/test/t1dec102.frm
|
||||
--copy_file std_data/old_decimal/t1dec102.MYD $MYSQLD_DATADIR/test/t1dec102.MYD
|
||||
--copy_file std_data/old_decimal/t1dec102.MYI $MYSQLD_DATADIR/test/t1dec102.MYI
|
||||
INSERT INTO t1dec102 VALUES(999.99);
|
||||
|
||||
--let $slave_sql_errno=1677
|
||||
--let $show_slave_sql_error= 1
|
||||
call mtr.add_suppression("Slave SQL.*Column 0 of table .* cannot be converted from type.* Error_code: 1677");
|
||||
--source include/wait_for_slave_sql_error_and_skip.inc
|
||||
|
||||
--connection master
|
||||
DROP TABLE t1dec102;
|
||||
--sync_slave_with_master
|
||||
|
||||
--source include/rpl_end.inc
|
|
@ -150,6 +150,16 @@ DROP USER test_3@localhost;
|
|||
INSERT INTO t2 VALUES ("DROP USER test_3@localhost with table locked");
|
||||
|
||||
UNLOCK TABLE;
|
||||
|
||||
# Bug #20439913 CREATE TABLE DB.TABLE LIKE TMPTABLE IS
|
||||
# BINLOGGED INCORRECTLY - BREAKS A SLAVE
|
||||
CREATE DATABASE db;
|
||||
CREATE TABLE db.t1 LIKE t2;
|
||||
CREATE TABLE t3 LIKE t2;
|
||||
DROP TABLE t3;
|
||||
DROP DATABASE db;
|
||||
# end of Bug #20439913 test
|
||||
|
||||
DROP USER test_3@localhost;
|
||||
DROP FUNCTION f2;
|
||||
DROP PROCEDURE p2;
|
||||
|
|
|
@ -2,11 +2,6 @@
|
|||
# This is a debug variable for now
|
||||
-- source include/have_debug.inc
|
||||
|
||||
if (`select plugin_auth_version <= "5.6.10" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in InnoDB 5.6.10 or earlier
|
||||
}
|
||||
|
||||
SELECT @@global.innodb_buffer_pool_evict;
|
||||
|
||||
SET GLOBAL innodb_buffer_pool_evict = 'uncompressed';
|
||||
|
|
|
@ -1,8 +1,3 @@
|
|||
if (`select plugin_auth_version <= "5.5.37-MariaDB-34.0" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB as of 5.5.37-MariaDB-34.0 or earlier
|
||||
}
|
||||
|
||||
#
|
||||
# 2010-01-27 - Added
|
||||
#
|
||||
|
|
|
@ -1635,6 +1635,22 @@ SET NAMES utf8 COLLATE utf8_general_ci;
|
|||
--let ENGINE=HEAP
|
||||
--source include/ctype_utf8_ilseq.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-8067 correct fix for MySQL Bug # 19699237: UNINITIALIZED VARIABLE IN ITEM_FIELD::STR_RESULT
|
||||
--echo #
|
||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf8);
|
||||
CREATE TABLE t2 (a VARCHAR(10) CHARACTER SET latin1);
|
||||
INSERT INTO t1 VALUES ('aaa');
|
||||
INSERT INTO t2 VALUES ('aaa');
|
||||
SELECT (SELECT CONCAT(a),1 FROM t1) <=> (SELECT CONCAT(a),1 FROM t2);
|
||||
INSERT INTO t1 VALUES ('aaa');
|
||||
INSERT INTO t2 VALUES ('aaa');
|
||||
# Running the below query crashed with two rows
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
SELECT (SELECT CONCAT(a),1 FROM t1) <=> (SELECT CONCAT(a),1 FROM t2);
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 5.5 tests
|
||||
--echo #
|
||||
|
|
|
@ -656,6 +656,13 @@ SELECT
|
|||
#
|
||||
select column_get(column_create(1, "18446744073709552001" as char), 1 as int);
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-7505 - Too large scale in DECIMAL dynamic column getter crashes
|
||||
--echo # mysqld
|
||||
--echo #
|
||||
--error ER_TOO_BIG_SCALE
|
||||
SELECT COLUMN_GET(`x`, 'y' AS DECIMAL(5,34));
|
||||
|
||||
--echo #
|
||||
--echo # test of symbolic names
|
||||
--echo #
|
||||
|
|
9
mysql-test/t/empty_server_name-8224.test
Normal file
9
mysql-test/t/empty_server_name-8224.test
Normal file
|
@ -0,0 +1,9 @@
|
|||
#
|
||||
# MDEV-8224 Server crashes in get_server_from_table_to_cache on empty name
|
||||
#
|
||||
--source include/not_embedded.inc
|
||||
create server '' foreign data wrapper w2 options (host '127.0.0.1');
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server 10
|
||||
--source include/wait_until_disconnected.inc
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
|
@ -1522,7 +1522,7 @@ DROP TABLE t1;
|
|||
create table t1 (a int, b int);
|
||||
insert into t1 values (1,11), (1,12), (2,22),(2,23), (4,44),(4,45);
|
||||
create table t2 (c int, d int);
|
||||
insert into t2 values (1,11), (1,12), (2,22),(2,23), (4,44),(4,45);
|
||||
insert into t2 values (1,11), (2,22), (4,44);
|
||||
select distinct a,sum(b), (select d from t2 where c=a order by max(b) limit 1) from t1 group by a order by max(b);
|
||||
drop table t1, t2;
|
||||
|
||||
|
|
|
@ -7,3 +7,16 @@ select variable_name from information_schema.session_status where variable_name
|
|||
select variable_name from information_schema.session_variables where variable_name =
|
||||
(select variable_name from information_schema.session_variables where variable_name = 'basedir');
|
||||
|
||||
#
|
||||
# information_schema tables inside subqueries, they should not be re-populated
|
||||
# (i_s.columns needs to scan i_s itself, creating a tmp table for every i_s
|
||||
# table. if it's re-populated, it'll do that multiple times)
|
||||
#
|
||||
create table t1 (a char);
|
||||
insert t1 values ('a'),('t'),('z');
|
||||
flush status;
|
||||
select a, exists (select 1 from information_schema.columns where table_schema=concat('tes',a)) from t1;
|
||||
# fix the result in ps-protocol
|
||||
--replace_result 44 43
|
||||
show status like 'created_tmp_tables';
|
||||
drop table t1;
|
||||
|
|
|
@ -1751,6 +1751,16 @@ CHECK TABLE t1;
|
|||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-3870 - Valgrind warnings on OPTIMIZE MyISAM or Aria TABLE with
|
||||
--echo # disabled keys
|
||||
--echo #
|
||||
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (4),(3),(1),(0);
|
||||
ALTER TABLE t1 DISABLE KEYS;
|
||||
OPTIMIZE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Check some variables
|
||||
#
|
||||
|
|
|
@ -37,3 +37,14 @@
|
|||
#
|
||||
|
||||
--exec rm -rf $MYSQLTEST_VARDIR/zoneinfo
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-6236 - [PATCH] mysql_tzinfo_to_sql may produce invalid SQL
|
||||
--echo #
|
||||
--exec mkdir $MYSQLTEST_VARDIR/zoneinfo
|
||||
--copy_file std_data/zoneinfo/GMT $MYSQLTEST_VARDIR/zoneinfo/Factory
|
||||
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
--exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo 2>&1
|
||||
|
||||
--exec rm -rf $MYSQLTEST_VARDIR/zoneinfo
|
||||
|
|
|
@ -8,6 +8,35 @@ drop view if exists t1,v1,v2,v3,v4,v1badcheck;
|
|||
|
||||
create table t1(a int);
|
||||
create table kv(k varchar(30) NOT NULL PRIMARY KEY,v varchar(50));
|
||||
create view v1 as select 1;
|
||||
|
||||
repair table t1 quick;
|
||||
repair table t1 extended;
|
||||
repair table t1 use_frm;
|
||||
--error ER_PARSE_ERROR
|
||||
repair table t1 from mysql;
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
repair view v1 quick;
|
||||
--error ER_PARSE_ERROR
|
||||
repair view v1 extended;
|
||||
--error ER_PARSE_ERROR
|
||||
repair view v1 use_frm;
|
||||
repair view v1 from mysql;
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
check view v1 quick;
|
||||
--error ER_PARSE_ERROR
|
||||
check view v1 fast;
|
||||
--error ER_PARSE_ERROR
|
||||
check view v1 medium;
|
||||
--error ER_PARSE_ERROR
|
||||
check view v1 extended;
|
||||
--error ER_PARSE_ERROR
|
||||
check view v1 changed;
|
||||
check view v1 for upgrade;
|
||||
|
||||
drop view v1;
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ call mtr.add_suppression("Invalid .old.. table or database name");
|
|||
# check that CSV engine was compiled in, as the result of the test
|
||||
# depends on the presence of the log tables (which are CSV-based).
|
||||
--source include/have_csv.inc
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
|
||||
#
|
||||
# Clean up after previous tests
|
||||
|
@ -66,7 +67,6 @@ create table t_bug25347 (a int) engine=myisam;
|
|||
create view v_bug25347 as select * from t_bug25347;
|
||||
insert into t_bug25347 values (1),(2),(3);
|
||||
flush tables;
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
--echo removing and creating
|
||||
--remove_file $MYSQLD_DATADIR/d_bug25347/t_bug25347.MYI
|
||||
--write_file $MYSQLD_DATADIR/d_bug25347/t_bug25347.MYI
|
||||
|
@ -119,7 +119,6 @@ DROP TABLE t1, t2;
|
|||
create table t1(a int) engine=myisam;
|
||||
create view v1 as select * from t1;
|
||||
show tables;
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
--copy_file $MYSQLD_DATADIR/test/v1.frm $MYSQLD_DATADIR/test/v-1.frm
|
||||
show tables;
|
||||
--exec $MYSQL_CHECK --check-upgrade --databases test
|
||||
|
@ -164,24 +163,23 @@ CREATE TABLE `#mysql50#c@d` (a INT) engine=myisam;
|
|||
CREATE TABLE t1 (a INT) engine=myisam;
|
||||
|
||||
# Create 5.0 like triggers
|
||||
let $MYSQLTEST_VARDIR= `select @@datadir`;
|
||||
--write_file $MYSQLTEST_VARDIR/a@b/c@d.TRG
|
||||
--write_file $MYSQLD_DATADIR/a@b/c@d.TRG
|
||||
TYPE=TRIGGERS
|
||||
triggers='CREATE DEFINER=`root`@`localhost` TRIGGER tr1 BEFORE INSERT ON `c@d` FOR EACH ROW SET NEW.a = 10 * NEW.a'
|
||||
sql_modes=0
|
||||
definers='root@localhost'
|
||||
EOF
|
||||
--write_file $MYSQLTEST_VARDIR/a@b/tr1.TRN
|
||||
--write_file $MYSQLD_DATADIR/a@b/tr1.TRN
|
||||
TYPE=TRIGGERNAME
|
||||
trigger_table=c@d
|
||||
EOF
|
||||
--write_file $MYSQLTEST_VARDIR/a@b/t1.TRG
|
||||
--write_file $MYSQLD_DATADIR/a@b/t1.TRG
|
||||
TYPE=TRIGGERS
|
||||
triggers='CREATE DEFINER=`root`@`localhost` TRIGGER tr2 BEFORE INSERT ON `a@b`.t1 FOR EACH ROW SET NEW.a = 100 * NEW.a'
|
||||
sql_modes=0
|
||||
definers='root@localhost'
|
||||
EOF
|
||||
--write_file $MYSQLTEST_VARDIR/a@b/tr2.TRN
|
||||
--write_file $MYSQLD_DATADIR/a@b/tr2.TRN
|
||||
TYPE=TRIGGERNAME
|
||||
trigger_table=t1
|
||||
EOF
|
||||
|
@ -255,7 +253,6 @@ INSERT INTO bug47205 VALUES ("foobar");
|
|||
FLUSH TABLE bug47205;
|
||||
|
||||
--echo # Replace the FRM with a 5.0 FRM that will require upgrade
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
--remove_file $MYSQLD_DATADIR/test/bug47205.frm
|
||||
--copy_file std_data/bug47205.frm $MYSQLD_DATADIR/test/bug47205.frm
|
||||
|
||||
|
@ -279,7 +276,6 @@ CREATE TABLE bug47205(a VARCHAR(20) PRIMARY KEY)
|
|||
FLUSH TABLE bug47205;
|
||||
|
||||
--echo # Replace the FRM with a 5.0 FRM that will require upgrade
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
--remove_file $MYSQLD_DATADIR/test/bug47205.frm
|
||||
--copy_file std_data/bug47205.frm $MYSQLD_DATADIR/test/bug47205.frm
|
||||
|
||||
|
@ -322,3 +318,34 @@ CREATE TABLE test.`t.1` (id int);
|
|||
--exec $MYSQL_CHECK test t.1
|
||||
|
||||
drop table test.`t.1`;
|
||||
|
||||
#
|
||||
# MDEV-8123 mysqlcheck: new --process-views option conflicts with --quick, --extended and such
|
||||
#
|
||||
create view v1 as select 1;
|
||||
--echo mysqlcheck --process-views test
|
||||
--exec $MYSQL_CHECK --process-views test
|
||||
--echo mysqlcheck --process-views --extended test
|
||||
--exec $MYSQL_CHECK --process-views --extended test
|
||||
--echo mysqlcheck --process-views --fast test
|
||||
--exec $MYSQL_CHECK --process-views --fast test
|
||||
--echo mysqlcheck --process-views --quick test
|
||||
--exec $MYSQL_CHECK --process-views --quick test
|
||||
--echo mysqlcheck --process-views --check-only-changed test
|
||||
--exec $MYSQL_CHECK --process-views --check-only-changed test
|
||||
--echo mysqlcheck --process-views --medium-check test
|
||||
--exec $MYSQL_CHECK --process-views --medium-check test
|
||||
--echo mysqlcheck --process-views --check-upgrade test
|
||||
--exec $MYSQL_CHECK --process-views --check-upgrade test
|
||||
drop view v1;
|
||||
|
||||
|
||||
#
|
||||
# MDEV-8124 mysqlcheck: --auto-repair runs REPAIR TABLE instead of REPAIR VIEW on views
|
||||
#
|
||||
create table t1(a int);
|
||||
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v1.frm $MYSQLD_DATADIR/test/v1.frm
|
||||
--echo mysqlcheck --process-views --check-upgrade --auto-repair test
|
||||
--exec $MYSQL_CHECK --process-views --check-upgrade --auto-repair test
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
if (`select plugin_auth_version <= "5.6.24" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in InnoDB as of 5.6.24 or earlier
|
||||
}
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_partition.inc
|
||||
--source include/have_innodb.inc
|
||||
|
@ -403,7 +407,7 @@ DROP TABLE t1;
|
|||
create table t1 (a int) engine=innodb partition by hash(a) ;
|
||||
# Data_free for InnoDB tablespace varies depending on which
|
||||
# tests have been run before this one
|
||||
--replace_column 10 #
|
||||
--replace_column 10 # 12 #
|
||||
show table status like 't1';
|
||||
drop table t1;
|
||||
|
||||
|
@ -415,12 +419,12 @@ engine = innodb
|
|||
partition by key (a);
|
||||
# Data_free for InnoDB tablespace varies depending on which
|
||||
# tests have been run before this one
|
||||
--replace_column 10 #
|
||||
--replace_column 10 # 12 #
|
||||
show table status;
|
||||
insert into t1 values (0), (1), (2), (3);
|
||||
# Data_free for InnoDB tablespace varies depending on which
|
||||
# tests have been run before this one
|
||||
--replace_column 10 #
|
||||
--replace_column 10 # 12 #
|
||||
show table status;
|
||||
drop table t1;
|
||||
|
||||
|
@ -429,17 +433,17 @@ engine = innodb
|
|||
partition by key (a);
|
||||
# Data_free for InnoDB tablespace varies depending on which
|
||||
# tests have been run before this one
|
||||
--replace_column 10 #
|
||||
--replace_column 10 # 12 #
|
||||
show table status;
|
||||
insert into t1 values (NULL), (NULL), (NULL), (NULL);
|
||||
# Data_free for InnoDB tablespace varies depending on which
|
||||
# tests have been run before this one
|
||||
--replace_column 10 #
|
||||
--replace_column 10 # 12 #
|
||||
show table status;
|
||||
insert into t1 values (NULL), (NULL), (NULL), (NULL);
|
||||
# Data_free for InnoDB tablespace varies depending on which
|
||||
# tests have been run before this one
|
||||
--replace_column 10 #
|
||||
--replace_column 10 # 12 #
|
||||
show table status;
|
||||
drop table t1;
|
||||
|
||||
|
@ -674,6 +678,18 @@ ALTER TABLE t1 ADD UNIQUE KEY (b);
|
|||
--echo # have left table intact.
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
--echo #
|
||||
--echo # Bug #17299181 CREATE_TIME AND UPDATE_TIME ARE
|
||||
--echo # WRONG FOR PARTITIONED TABLES
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a int, PRIMARY KEY (a)) ENGINE=InnoDB
|
||||
PARTITION BY HASH (a) PARTITIONS 2;
|
||||
|
||||
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE
|
||||
CREATE_TIME IS NOT NULL AND TABLE_NAME='t1';
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
|
|
47
mysql-test/t/range_innodb.test
Normal file
47
mysql-test/t/range_innodb.test
Normal file
|
@ -0,0 +1,47 @@
|
|||
--echo #
|
||||
--echo # Range optimizer (and related) tests that need InnoDB.
|
||||
--echo #
|
||||
|
||||
--source include/have_innodb.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t0, t1, t2;
|
||||
--enable_warnings
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-6735: Range checked for each record used with key
|
||||
--echo #
|
||||
|
||||
create table t0(a int);
|
||||
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
|
||||
create table t1(a int);
|
||||
insert into t1 select A.a + B.a* 10 + C.a * 100 + D.a * 1000
|
||||
from t0 A, t0 B, t0 C, t0 D;
|
||||
|
||||
create table t2 (
|
||||
a int,
|
||||
b int,
|
||||
filler1 char(100),
|
||||
filler2 char(100),
|
||||
filler3 char(100),
|
||||
filler4 char(100),
|
||||
key(a),
|
||||
key(b)
|
||||
) engine=innodb;
|
||||
|
||||
insert into t2
|
||||
select
|
||||
a,a,
|
||||
repeat('0123456789', 10),
|
||||
repeat('0123456789', 10),
|
||||
repeat('0123456789', 10),
|
||||
repeat('0123456789', 10)
|
||||
from t1;
|
||||
|
||||
analyze table t2;
|
||||
--echo # The following must not use "Range checked for each record":
|
||||
explain select * from t0 left join t2 on t2.a <t0.a and t2.b between 50 and 250;
|
||||
|
||||
drop table t0,t1,t2;
|
||||
|
5
mysql-test/t/ssl_7937.combinations
Normal file
5
mysql-test/t/ssl_7937.combinations
Normal file
|
@ -0,0 +1,5 @@
|
|||
[ssl]
|
||||
--loose-enable-ssl
|
||||
|
||||
[nossl]
|
||||
--loose-disable-ssl
|
35
mysql-test/t/ssl_7937.test
Normal file
35
mysql-test/t/ssl_7937.test
Normal file
|
@ -0,0 +1,35 @@
|
|||
#
|
||||
# MDEV-7937: Enforce SSL when --ssl client option is used
|
||||
#
|
||||
|
||||
source include/have_ssl_crypto_functs.inc;
|
||||
|
||||
# create a procedure instead of SHOW STATUS LIKE 'ssl_cipher'
|
||||
# because the cipher depends on openssl (or yassl) version,
|
||||
# and it's actual value doesn't matter here anyway
|
||||
create procedure have_ssl()
|
||||
select if(variable_value > '','yes','no') as 'have_ssl'
|
||||
from information_schema.session_status
|
||||
where variable_name='ssl_cipher';
|
||||
|
||||
--disable_abort_on_error
|
||||
--echo mysql --ssl-ca=cacert.pem -e "call test.have_ssl()"
|
||||
--exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem -e "call test.have_ssl()" 2>&1
|
||||
--echo mysql --ssl -e "call test.have_ssl()"
|
||||
--exec $MYSQL --ssl -e "call test.have_ssl()" 2>&1
|
||||
--echo mysql --ssl-ca=cacert.pem --ssl-verify-server-cert -e "call test.have_ssl()"
|
||||
--exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-verify-server-cert -e "call test.have_ssl()" 2>&1
|
||||
|
||||
--echo mysql --ssl --ssl-verify-server-cert -e "call test.have_ssl()"
|
||||
# this is the test where certificate verification fails.
|
||||
# but yassl doesn't support certificate verification, so
|
||||
# we fake the test result for yassl
|
||||
let yassl=`select variable_value='Unknown' from information_schema.session_status where variable_name='Ssl_session_cache_mode'`;
|
||||
if (!$yassl) {
|
||||
--exec $MYSQL --ssl --ssl-verify-server-cert -e "call test.have_ssl()" 2>&1
|
||||
}
|
||||
if ($yassl) {
|
||||
--echo ERROR 2026 (HY000): SSL connection error: Failed to verify the server certificate
|
||||
}
|
||||
|
||||
drop procedure have_ssl;
|
32
mysql-test/t/truncate-stale-6500.test
Normal file
32
mysql-test/t/truncate-stale-6500.test
Normal file
|
@ -0,0 +1,32 @@
|
|||
--source include/have_innodb.inc
|
||||
--source include/have_partition.inc
|
||||
|
||||
SET GLOBAL query_cache_size=1024*1024*8;
|
||||
CREATE TABLE `test` (
|
||||
`uniqueId` INT NOT NULL,
|
||||
`partitionId` INT NOT NULL,
|
||||
PRIMARY KEY (`uniqueId`,`partitionId`)
|
||||
) ENGINE=InnoDB PARTITION BY LIST (partitionId) (
|
||||
PARTITION p01 VALUES IN (1),
|
||||
PARTITION p02 VALUES IN (2)
|
||||
);
|
||||
|
||||
|
||||
INSERT INTO `test`(`uniqueId`,`partitionId`) VALUES(407237055, 2);
|
||||
|
||||
SELECT * FROM `test`;
|
||||
|
||||
--echo #Confirms 1 row in partition 'p02'
|
||||
SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS FROM information_schema.PARTITIONS where TABLE_NAME = 'test';
|
||||
ALTER TABLE `test` TRUNCATE PARTITION `p02`;
|
||||
|
||||
--echo #Confirms no more rows in partition 'p02'
|
||||
SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS FROM information_schema.PARTITIONS where TABLE_NAME = 'test';
|
||||
|
||||
--echo #Before the patch, this returned the previously existing values.
|
||||
SELECT * FROM `test`;
|
||||
SELECT SQL_CACHE * FROM `test`;
|
||||
SELECT SQL_NO_CACHE * FROM `test`;
|
||||
|
||||
DROP TABLE test;
|
||||
SET GLOBAL query_cache_size=DEFAULT;
|
|
@ -583,3 +583,27 @@ JOIN
|
|||
WHERE CONCAT(t1.col1, CAST(subq.col0 AS DECIMAL));
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Start of 5.5 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-8267 Add /*old*/ comment into I_S.COLUMN_TYPE for old DECIMAL
|
||||
--echo #
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
|
||||
--copy_file std_data/old_decimal/t1dec102.frm $MYSQLD_DATADIR/test/t1dec102.frm
|
||||
--copy_file std_data/old_decimal/t1dec102.MYD $MYSQLD_DATADIR/test/t1dec102.MYD
|
||||
--copy_file std_data/old_decimal/t1dec102.MYI $MYSQLD_DATADIR/test/t1dec102.MYI
|
||||
|
||||
SHOW CREATE TABLE t1dec102;
|
||||
SHOW COLUMNS FROM t1dec102;
|
||||
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='t1dec102';
|
||||
DROP TABLE t1dec102;
|
||||
|
||||
--echo #
|
||||
--echo # End of 5.5 tests
|
||||
--echo #
|
||||
|
|
39
mysql-test/t/update_innodb.test
Normal file
39
mysql-test/t/update_innodb.test
Normal file
|
@ -0,0 +1,39 @@
|
|||
--source include/have_innodb.inc
|
||||
|
||||
CREATE TABLE `t1` (
|
||||
`c1` int(11) NOT NULL,
|
||||
`c2` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
CREATE TABLE `t2` (
|
||||
`c0` varchar(10) NOT NULL,
|
||||
`c1` int(11) NOT NULL,
|
||||
`c2` int(11) NOT NULL,
|
||||
PRIMARY KEY (`c0`,`c1`),
|
||||
KEY `c1` (`c1`),
|
||||
KEY `c2` (`c2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
CREATE TABLE `t3` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`c1` datetime NOT NULL,
|
||||
`c2` bigint(20) NOT NULL,
|
||||
`c3` int(4) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `c2` (`c2`),
|
||||
KEY `c3` (`c3`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
CREATE TABLE `t4` (
|
||||
`c1` int(11) NOT NULL,
|
||||
`c2` bigint(20) DEFAULT NULL,
|
||||
`c3` int(11) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
CREATE ALGORITHM=UNDEFINED VIEW `v1` AS select `t4`.`c1` AS `c1`,`t4`.`c2` AS `c2`,`t4`.`c3` AS `c3` from `t4`;
|
||||
|
||||
UPDATE t1 a JOIN t2 b ON a.c1 = b.c1 JOIN v1 vw ON b.c2 = vw.c1 JOIN t3 del ON vw.c2 = del.c2 SET a.c2 = ( SELECT max(t.c1) FROM t3 t, v1 i WHERE del.c2 = t.c2 AND vw.c3 = i.c3 AND t.c3 = 4 ) WHERE a.c2 IS NULL OR a.c2 < '2011-05-01';
|
||||
|
||||
drop view v1;
|
||||
drop table t1,t2,t3,t4;
|
|
@ -5367,6 +5367,19 @@ update t3 left join v2 using (id) set flag=flag+1;
|
|||
drop view v2, v1;
|
||||
drop table t1, t2, t3;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-7207 - ALTER VIEW does not change ALGORITM
|
||||
--echo #
|
||||
create table t1 (a int, b int);
|
||||
create algorithm=temptable view v2 (c) as select b+1 from t1;
|
||||
show create view v2;
|
||||
alter algorithm=undefined view v2 (c) as select b+1 from t1;
|
||||
show create view v2;
|
||||
alter algorithm=merge view v2 (c) as select b+1 from t1;
|
||||
show create view v2;
|
||||
drop view v2;
|
||||
drop table t1;
|
||||
|
||||
--echo # -----------------------------------------------------------------
|
||||
--echo # -- End of 5.5 tests.
|
||||
--echo # -----------------------------------------------------------------
|
||||
|
|
|
@ -1,119 +1,119 @@
|
|||
# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# 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
|
||||
|
||||
IF(ESSENTIALS)
|
||||
SET(CPACK_COMPONENTS_USED "Server;Client;DataFiles")
|
||||
SET(CPACK_WIX_UI "WixUI_InstallDir")
|
||||
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
SET(CPACK_PACKAGE_FILE_NAME "mysql-essential-${VERSION}-winx64")
|
||||
ELSE()
|
||||
SET(CPACK_PACKAGE_FILE_NAME "mysql-essential-${VERSION}-win32")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET(CPACK_COMPONENTS_USED
|
||||
"Server;Client;DataFiles;Development;SharedLibraries;Documentation;IniFiles;Readme;Server_Scripts;DebugBinaries")
|
||||
ENDIF()
|
||||
|
||||
|
||||
# Some components like Embedded are optional
|
||||
# We will build MSI without embedded if it was not selected for build
|
||||
#(need to modify CPACK_COMPONENTS_ALL for that)
|
||||
SET(CPACK_ALL)
|
||||
FOREACH(comp1 ${CPACK_COMPONENTS_USED})
|
||||
SET(found)
|
||||
FOREACH(comp2 ${CPACK_COMPONENTS_ALL})
|
||||
IF(comp1 STREQUAL comp2)
|
||||
SET(found 1)
|
||||
BREAK()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
IF(found)
|
||||
SET(CPACK_ALL ${CPACK_ALL} ${comp1})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
SET(CPACK_COMPONENTS_ALL ${CPACK_ALL})
|
||||
|
||||
# Always install (hidden), includes Readme files
|
||||
SET(CPACK_COMPONENT_GROUP_ALWAYSINSTALL_HIDDEN 1)
|
||||
SET(CPACK_COMPONENT_README_GROUP "AlwaysInstall")
|
||||
|
||||
# Feature MySQL Server
|
||||
SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_DISPLAY_NAME "MySQL Server")
|
||||
SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_EXPANDED "1")
|
||||
SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_DESCRIPTION "Install MySQL Server")
|
||||
# Subfeature "Server" (hidden)
|
||||
SET(CPACK_COMPONENT_SERVER_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_SERVER_HIDDEN 1)
|
||||
# Subfeature "Client"
|
||||
SET(CPACK_COMPONENT_CLIENT_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_CLIENT_DISPLAY_NAME "Client Programs")
|
||||
SET(CPACK_COMPONENT_CLIENT_DESCRIPTION
|
||||
"Various helpful (commandline) tools including the mysql command line client" )
|
||||
# Subfeature "Debug binaries"
|
||||
SET(CPACK_COMPONENT_DEBUGBINARIES_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_DEBUGBINARIES_DISPLAY_NAME "Debug binaries")
|
||||
SET(CPACK_COMPONENT_DEBUGBINARIES_DESCRIPTION
|
||||
"Debug/trace versions of executables and libraries" )
|
||||
#SET(CPACK_COMPONENT_DEBUGBINARIES_WIX_LEVEL 2)
|
||||
|
||||
|
||||
#Subfeature "Data Files"
|
||||
SET(CPACK_COMPONENT_DATAFILES_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_DATAFILES_DISPLAY_NAME "Server data files")
|
||||
SET(CPACK_COMPONENT_DATAFILES_DESCRIPTION "Server data files" )
|
||||
SET(CPACK_COMPONENT_DATAFILES_HIDDEN 1)
|
||||
|
||||
|
||||
#Feature "Devel"
|
||||
SET(CPACK_COMPONENT_GROUP_DEVEL_DISPLAY_NAME "Development Components")
|
||||
SET(CPACK_COMPONENT_GROUP_DEVEL_DESCRIPTION "Installs C/C++ header files and libraries")
|
||||
#Subfeature "Development"
|
||||
SET(CPACK_COMPONENT_DEVELOPMENT_GROUP "Devel")
|
||||
SET(CPACK_COMPONENT_DEVELOPMENT_HIDDEN 1)
|
||||
|
||||
#Subfeature "Shared libraries"
|
||||
SET(CPACK_COMPONENT_SHAREDLIBRARIES_GROUP "Devel")
|
||||
SET(CPACK_COMPONENT_SHAREDLIBRARIES_DISPLAY_NAME "Client C API library (shared)")
|
||||
SET(CPACK_COMPONENT_SHAREDLIBRARIES_DESCRIPTION "Installs shared client library")
|
||||
|
||||
#Subfeature "Embedded"
|
||||
SET(CPACK_COMPONENT_EMBEDDED_GROUP "Devel")
|
||||
SET(CPACK_COMPONENT_EMBEDDED_DISPLAY_NAME "Embedded server library")
|
||||
SET(CPACK_COMPONENT_EMBEDDED_DESCRIPTION "Installs embedded server library")
|
||||
SET(CPACK_COMPONENT_EMBEDDED_WIX_LEVEL 2)
|
||||
|
||||
#Feature Debug Symbols
|
||||
SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_DISPLAY_NAME "Debug Symbols")
|
||||
SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_DESCRIPTION "Installs Debug Symbols")
|
||||
SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_WIX_LEVEL 2)
|
||||
SET(CPACK_COMPONENT_DEBUGINFO_GROUP "DebugSymbols")
|
||||
SET(CPACK_COMPONENT_DEBUGINFO_HIDDEN 1)
|
||||
|
||||
#Feature Documentation
|
||||
SET(CPACK_COMPONENT_DOCUMENTATION_DISPLAY_NAME "Documentation")
|
||||
SET(CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION "Installs documentation")
|
||||
SET(CPACK_COMPONENT_DOCUMENTATION_WIX_LEVEL 2)
|
||||
|
||||
#Feature tests
|
||||
SET(CPACK_COMPONENT_TEST_DISPLAY_NAME "Tests")
|
||||
SET(CPACK_COMPONENT_TEST_DESCRIPTION "Installs unittests (requires Perl to run)")
|
||||
SET(CPACK_COMPONENT_TEST_WIX_LEVEL 2)
|
||||
|
||||
|
||||
#Feature Misc (hidden, installs only if everything is installed)
|
||||
SET(CPACK_COMPONENT_GROUP_MISC_HIDDEN 1)
|
||||
SET(CPACK_COMPONENT_GROUP_MISC_WIX_LEVEL 100)
|
||||
SET(CPACK_COMPONENT_INIFILES_GROUP "Misc")
|
||||
SET(CPACK_COMPONENT_SERVER_SCRIPTS_GROUP "Misc")
|
||||
# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# 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
|
||||
|
||||
IF(ESSENTIALS)
|
||||
SET(CPACK_COMPONENTS_USED "Server;Client;DataFiles")
|
||||
SET(CPACK_WIX_UI "WixUI_InstallDir")
|
||||
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
SET(CPACK_PACKAGE_FILE_NAME "mysql-essential-${VERSION}-winx64")
|
||||
ELSE()
|
||||
SET(CPACK_PACKAGE_FILE_NAME "mysql-essential-${VERSION}-win32")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET(CPACK_COMPONENTS_USED
|
||||
"Server;Client;DataFiles;Development;SharedLibraries;Documentation;IniFiles;Readme;Server_Scripts;DebugBinaries")
|
||||
ENDIF()
|
||||
|
||||
|
||||
# Some components like Embedded are optional
|
||||
# We will build MSI without embedded if it was not selected for build
|
||||
#(need to modify CPACK_COMPONENTS_ALL for that)
|
||||
SET(CPACK_ALL)
|
||||
FOREACH(comp1 ${CPACK_COMPONENTS_USED})
|
||||
SET(found)
|
||||
FOREACH(comp2 ${CPACK_COMPONENTS_ALL})
|
||||
IF(comp1 STREQUAL comp2)
|
||||
SET(found 1)
|
||||
BREAK()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
IF(found)
|
||||
SET(CPACK_ALL ${CPACK_ALL} ${comp1})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
SET(CPACK_COMPONENTS_ALL ${CPACK_ALL})
|
||||
|
||||
# Always install (hidden), includes Readme files
|
||||
SET(CPACK_COMPONENT_GROUP_ALWAYSINSTALL_HIDDEN 1)
|
||||
SET(CPACK_COMPONENT_README_GROUP "AlwaysInstall")
|
||||
|
||||
# Feature MySQL Server
|
||||
SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_DISPLAY_NAME "MySQL Server")
|
||||
SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_EXPANDED "1")
|
||||
SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_DESCRIPTION "Install MySQL Server")
|
||||
# Subfeature "Server" (hidden)
|
||||
SET(CPACK_COMPONENT_SERVER_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_SERVER_HIDDEN 1)
|
||||
# Subfeature "Client"
|
||||
SET(CPACK_COMPONENT_CLIENT_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_CLIENT_DISPLAY_NAME "Client Programs")
|
||||
SET(CPACK_COMPONENT_CLIENT_DESCRIPTION
|
||||
"Various helpful (commandline) tools including the mysql command line client" )
|
||||
# Subfeature "Debug binaries"
|
||||
SET(CPACK_COMPONENT_DEBUGBINARIES_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_DEBUGBINARIES_DISPLAY_NAME "Debug binaries")
|
||||
SET(CPACK_COMPONENT_DEBUGBINARIES_DESCRIPTION
|
||||
"Debug/trace versions of executables and libraries" )
|
||||
#SET(CPACK_COMPONENT_DEBUGBINARIES_WIX_LEVEL 2)
|
||||
|
||||
|
||||
#Subfeature "Data Files"
|
||||
SET(CPACK_COMPONENT_DATAFILES_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_DATAFILES_DISPLAY_NAME "Server data files")
|
||||
SET(CPACK_COMPONENT_DATAFILES_DESCRIPTION "Server data files" )
|
||||
SET(CPACK_COMPONENT_DATAFILES_HIDDEN 1)
|
||||
|
||||
|
||||
#Feature "Devel"
|
||||
SET(CPACK_COMPONENT_GROUP_DEVEL_DISPLAY_NAME "Development Components")
|
||||
SET(CPACK_COMPONENT_GROUP_DEVEL_DESCRIPTION "Installs C/C++ header files and libraries")
|
||||
#Subfeature "Development"
|
||||
SET(CPACK_COMPONENT_DEVELOPMENT_GROUP "Devel")
|
||||
SET(CPACK_COMPONENT_DEVELOPMENT_HIDDEN 1)
|
||||
|
||||
#Subfeature "Shared libraries"
|
||||
SET(CPACK_COMPONENT_SHAREDLIBRARIES_GROUP "Devel")
|
||||
SET(CPACK_COMPONENT_SHAREDLIBRARIES_DISPLAY_NAME "Client C API library (shared)")
|
||||
SET(CPACK_COMPONENT_SHAREDLIBRARIES_DESCRIPTION "Installs shared client library")
|
||||
|
||||
#Subfeature "Embedded"
|
||||
SET(CPACK_COMPONENT_EMBEDDED_GROUP "Devel")
|
||||
SET(CPACK_COMPONENT_EMBEDDED_DISPLAY_NAME "Embedded server library")
|
||||
SET(CPACK_COMPONENT_EMBEDDED_DESCRIPTION "Installs embedded server library")
|
||||
SET(CPACK_COMPONENT_EMBEDDED_WIX_LEVEL 2)
|
||||
|
||||
#Feature Debug Symbols
|
||||
SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_DISPLAY_NAME "Debug Symbols")
|
||||
SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_DESCRIPTION "Installs Debug Symbols")
|
||||
SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_WIX_LEVEL 2)
|
||||
SET(CPACK_COMPONENT_DEBUGINFO_GROUP "DebugSymbols")
|
||||
SET(CPACK_COMPONENT_DEBUGINFO_HIDDEN 1)
|
||||
|
||||
#Feature Documentation
|
||||
SET(CPACK_COMPONENT_DOCUMENTATION_DISPLAY_NAME "Documentation")
|
||||
SET(CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION "Installs documentation")
|
||||
SET(CPACK_COMPONENT_DOCUMENTATION_WIX_LEVEL 2)
|
||||
|
||||
#Feature tests
|
||||
SET(CPACK_COMPONENT_TEST_DISPLAY_NAME "Tests")
|
||||
SET(CPACK_COMPONENT_TEST_DESCRIPTION "Installs unittests (requires Perl to run)")
|
||||
SET(CPACK_COMPONENT_TEST_WIX_LEVEL 2)
|
||||
|
||||
|
||||
#Feature Misc (hidden, installs only if everything is installed)
|
||||
SET(CPACK_COMPONENT_GROUP_MISC_HIDDEN 1)
|
||||
SET(CPACK_COMPONENT_GROUP_MISC_WIX_LEVEL 100)
|
||||
SET(CPACK_COMPONENT_INIFILES_GROUP "Misc")
|
||||
SET(CPACK_COMPONENT_SERVER_SCRIPTS_GROUP "Misc")
|
||||
|
|
|
@ -1,398 +1,398 @@
|
|||
# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# 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
|
||||
|
||||
SET(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@")
|
||||
SET(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
|
||||
SET(CANDLE_EXECUTABLE "@CANDLE_EXECUTABLE@")
|
||||
SET(LIGHT_EXECUTABLE "@LIGHT_EXECUTABLE@")
|
||||
SET(CMAKE_COMMAND "@CMAKE_COMMAND@")
|
||||
SET(CMAKE_CFG_INTDIR "@CMAKE_CFG_INTDIR@")
|
||||
SET(VERSION "@VERSION@")
|
||||
SET(MAJOR_VERSION "@MAJOR_VERSION@")
|
||||
SET(MINOR_VERSION "@MINOR_VERSION@")
|
||||
SET(PATCH_VERSION "@PATCH_VERSION@")
|
||||
SET(CMAKE_SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@)
|
||||
SET(MANUFACTURER "@MANUFACTURER@")
|
||||
SET(WIXCA_LOCATION "@WIXCA_LOCATION@")
|
||||
SET(COPYING_RTF "@COPYING_RTF@")
|
||||
SET(CPACK_WIX_CONFIG "@CPACK_WIX_CONFIG@")
|
||||
SET(CPACK_WIX_INCLUDE "@CPACK_WIX_INCLUDE@")
|
||||
|
||||
LIST(APPEND EXCLUDE_DIRS
|
||||
bin/debug
|
||||
data/test
|
||||
lib/plugin/debug
|
||||
mysql-test
|
||||
scripts
|
||||
sql-bench
|
||||
)
|
||||
|
||||
LIST(APPEND EXCLUDE_FILES
|
||||
bin/echo.exe
|
||||
bin/mysql_client_test_embedded.exe
|
||||
bin/mysqld-debug.exe
|
||||
bin/mysqltest_embedded.exe
|
||||
bin/replace.exe
|
||||
lib/debug/mysqlserver.lib
|
||||
lib/libmysqld.dll
|
||||
lib/libmysqld.lib
|
||||
lib/mysqlserver.lib
|
||||
lib/mysqlservices.lib
|
||||
)
|
||||
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
SET(Win64 " Win64='yes'")
|
||||
SET(Platform x64)
|
||||
SET(PlatformProgramFilesFolder ProgramFiles64Folder)
|
||||
ELSE()
|
||||
SET(Platform x86)
|
||||
SET(PlatformProgramFilesFolder ProgramFilesFolder)
|
||||
SET(Win64)
|
||||
ENDIF()
|
||||
|
||||
SET(ENV{VS_UNICODE_OUTPUT})
|
||||
|
||||
# Switch off the monolithic install
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_COMMAND} -DCPACK_MONOLITHIC_INSTALL=0 ${CMAKE_BINARY_DIR}
|
||||
OUTPUT_QUIET
|
||||
)
|
||||
|
||||
INCLUDE(${CMAKE_BINARY_DIR}/CPackConfig.cmake)
|
||||
|
||||
IF(CPACK_WIX_CONFIG)
|
||||
INCLUDE(${CPACK_WIX_CONFIG})
|
||||
ENDIF()
|
||||
|
||||
IF(NOT CPACK_WIX_UI)
|
||||
SET(CPACK_WIX_UI "WixUI_Mondo_Custom")
|
||||
ENDIF()
|
||||
|
||||
SET(WIX_FEATURES)
|
||||
FOREACH(comp ${CPACK_COMPONENTS_ALL})
|
||||
STRING(TOUPPER "${comp}" comp_upper)
|
||||
IF(NOT CPACK_COMPONENT_${comp_upper}_GROUP)
|
||||
SET(WIX_FEATURE_${comp_upper}_COMPONENTS "${comp}")
|
||||
SET(CPACK_COMPONENT_${comp_upper}_HIDDEN 1)
|
||||
SET(CPACK_COMPONENT_GROUP_${comp_upper}_DISPLAY_NAME ${CPACK_COMPONENT_${comp_upper}_DISPLAY_NAME})
|
||||
SET(CPACK_COMPONENT_GROUP_${comp_upper}_DESCRIPTION ${CPACK_COMPONENT_${comp_upper}_DESCRIPTION})
|
||||
SET(CPACK_COMPONENT_GROUP_${comp_upper}_WIX_LEVEL ${CPACK_COMPONENT_${comp_upper}_WIX_LEVEL})
|
||||
SET(WIX_FEATURES ${WIX_FEATURES} WIX_FEATURE_${comp_upper})
|
||||
ELSE()
|
||||
SET(FEATURE_NAME WIX_FEATURE_${CPACK_COMPONENT_${comp_upper}_GROUP})
|
||||
SET(WIX_FEATURES ${WIX_FEATURES} ${FEATURE_NAME})
|
||||
LIST(APPEND ${FEATURE_NAME}_COMPONENTS ${comp})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
LIST(REMOVE_DUPLICATES WIX_FEATURES)
|
||||
|
||||
SET(CPACK_WIX_FEATURES)
|
||||
|
||||
FOREACH(f ${WIX_FEATURES})
|
||||
STRING(TOUPPER "${f}" f_upper)
|
||||
STRING(REPLACE "WIX_FEATURE_" "" f_upper ${f_upper})
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
SET(TITLE ${CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME})
|
||||
ELSE()
|
||||
SET(TITLE CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
ENDIF()
|
||||
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
SET(DESCRIPTION ${CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION})
|
||||
ELSE()
|
||||
SET(DESCRIPTION CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_${f_upper}_WIX_LEVEL)
|
||||
SET(Level ${CPACK_COMPONENT_${f_upper}_WIX_LEVEL})
|
||||
ELSE()
|
||||
SET(Level 1)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_GROUP_${f_upper}_HIDDEN)
|
||||
SET(DISPLAY "Display='hidden'")
|
||||
SET(TITLE ${f_upper})
|
||||
SET(DESCRIPTION ${f_upper})
|
||||
ELSE()
|
||||
SET(DISPLAY)
|
||||
IF(CPACK_COMPONENT_GROUP_${f_upper}_EXPANDED)
|
||||
SET(DISPLAY "Display='expand'")
|
||||
ENDIF()
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
SET(TITLE ${CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME})
|
||||
ELSE()
|
||||
SET(TITLE CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
ENDIF()
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
SET(DESCRIPTION ${CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION})
|
||||
ELSE()
|
||||
SET(DESCRIPTION CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
<Feature Id='${f_upper}'
|
||||
Title='${TITLE}'
|
||||
Description='${DESCRIPTION}'
|
||||
ConfigurableDirectory='INSTALLDIR'
|
||||
Level='${Level}' ${DISPLAY} >"
|
||||
)
|
||||
FOREACH(c ${${f}_COMPONENTS})
|
||||
STRING(TOUPPER "${c}" c_upper)
|
||||
IF (CPACK_COMPONENT_${c_upper}_DISPLAY_NAME)
|
||||
SET(TITLE ${CPACK_COMPONENT_${c_upper}_DISPLAY_NAME})
|
||||
ELSE()
|
||||
SET(TITLE CPACK_COMPONENT_${c_upper}_DISPLAY_NAME)
|
||||
ENDIF()
|
||||
|
||||
IF (CPACK_COMPONENT_${c_upper}_DESCRIPTION)
|
||||
SET(DESCRIPTION ${CPACK_COMPONENT_${c_upper}_DESCRIPTION})
|
||||
ELSE()
|
||||
SET(DESCRIPTION CPACK_COMPONENT_${c_upper}_DESCRIPTION)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_${c_upper}_WIX_LEVEL)
|
||||
SET(Level ${CPACK_COMPONENT_${c_upper}_WIX_LEVEL})
|
||||
ELSE()
|
||||
SET(Level 1)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_${c_upper}_HIDDEN)
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
<ComponentGroupRef Id='componentgroup.${c}'/>")
|
||||
ELSE()
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
<Feature Id='${c}'
|
||||
Title='${TITLE}'
|
||||
Description='${DESCRIPTION}'
|
||||
ConfigurableDirectory='INSTALLDIR'
|
||||
Level='${Level}'>
|
||||
<ComponentGroupRef Id='componentgroup.${c}'/>
|
||||
</Feature>")
|
||||
ENDIF()
|
||||
|
||||
ENDFOREACH()
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
</Feature>
|
||||
")
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
IF(CMAKE_INSTALL_CONFIG_NAME)
|
||||
STRING(REPLACE "${CMAKE_CFG_INTDIR}" "${CMAKE_INSTALL_CONFIG_NAME}"
|
||||
WIXCA_LOCATION "${WIXCA_LOCATION}")
|
||||
SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_INSTALL_CONFIG_NAME}")
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs)
|
||||
|
||||
|
||||
FOREACH(comp ${CPACK_COMPONENTS_ALL})
|
||||
SET(ENV{DESTDIR} testinstall/${comp})
|
||||
SET(DIRS ${DIRS} testinstall/${comp})
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_COMMAND} ${CONFIG_PARAM} -DCMAKE_INSTALL_COMPONENT=${comp}
|
||||
-DCMAKE_INSTALL_PREFIX= -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
|
||||
OUTPUT_QUIET
|
||||
)
|
||||
ENDFOREACH()
|
||||
|
||||
MACRO(GENERATE_GUID VarName)
|
||||
EXECUTE_PROCESS(COMMAND uuidgen -c
|
||||
OUTPUT_VARIABLE ${VarName}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
ENDMACRO()
|
||||
|
||||
SET(INC_VAR 0)
|
||||
MACRO(MAKE_WIX_IDENTIFIER str varname)
|
||||
STRING(REPLACE "/" "." ${varname} "${str}")
|
||||
STRING(REGEX REPLACE "[^a-zA-Z_0-9.]" "_" ${varname} "${${varname}}")
|
||||
STRING(LENGTH "${${varname}}" len)
|
||||
# Identifier should be smaller than 72 character
|
||||
# We have to cut down the length to 70 chars, since we add 2 char prefix
|
||||
# pretty often
|
||||
IF(len GREATER 70)
|
||||
STRING(SUBSTRING "${${varname}}" 0 67 shortstr)
|
||||
MATH(EXPR INC_VAR ${INC_VAR}+1)
|
||||
SET(${varname} "${shortstr}${INC_VAR}")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root)
|
||||
FILE(RELATIVE_PATH dir_rel ${topdir} ${dir})
|
||||
IF(dir_rel)
|
||||
LIST(FIND EXCLUDE_DIRS ${dir_rel} TO_EXCLUDE)
|
||||
IF(NOT TO_EXCLUDE EQUAL -1)
|
||||
MESSAGE(STATUS "excluding directory: ${dir_rel}")
|
||||
RETURN()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
FILE(GLOB all_files ${dir}/*)
|
||||
IF(NOT all_files)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
IF(dir_rel)
|
||||
MAKE_DIRECTORY(${dir_root}/${dir_rel})
|
||||
MAKE_WIX_IDENTIFIER("${dir_rel}" id)
|
||||
SET(DirectoryRefId "D.${id}")
|
||||
ELSE()
|
||||
SET(DirectoryRefId "INSTALLDIR")
|
||||
ENDIF()
|
||||
FILE(APPEND ${file} "<DirectoryRef Id='${DirectoryRefId}'>\n")
|
||||
|
||||
SET(NONEXEFILES)
|
||||
FOREACH(f ${all_files})
|
||||
IF(NOT IS_DIRECTORY ${f})
|
||||
FILE(RELATIVE_PATH rel ${topdir} ${f})
|
||||
SET(TO_EXCLUDE)
|
||||
IF(rel MATCHES "\\.pdb$")
|
||||
SET(TO_EXCLUDE TRUE)
|
||||
ELSE()
|
||||
LIST(FIND EXCLUDE_FILES ${rel} RES)
|
||||
IF(NOT RES EQUAL -1)
|
||||
SET(TO_EXCLUDE TRUE)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(TO_EXCLUDE)
|
||||
MESSAGE(STATUS "excluding file: ${rel}")
|
||||
ELSE()
|
||||
MAKE_WIX_IDENTIFIER("${rel}" id)
|
||||
FILE(TO_NATIVE_PATH ${f} f_native)
|
||||
GET_FILENAME_COMPONENT(f_ext "${f}" EXT)
|
||||
# According to MSDN each DLL or EXE should be in the own component
|
||||
IF(f_ext MATCHES ".exe" OR f_ext MATCHES ".dll")
|
||||
|
||||
FILE(APPEND ${file} " <Component Id='C.${id}' Guid='*' ${Win64}>\n")
|
||||
FILE(APPEND ${file} " <File Id='F.${id}' KeyPath='yes' Source='${f_native}'/>\n")
|
||||
FILE(APPEND ${file} " </Component>\n")
|
||||
FILE(APPEND ${file_comp} " <ComponentRef Id='C.${id}'/>\n")
|
||||
ELSE()
|
||||
SET(NONEXEFILES "${NONEXEFILES}\n<File Id='F.${id}' Source='${f_native}'/>" )
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
FILE(APPEND ${file} "</DirectoryRef>\n")
|
||||
IF(NONEXEFILES)
|
||||
GENERATE_GUID(guid)
|
||||
SET(ComponentId "C._files_${COMP_NAME}.${DirectoryRefId}")
|
||||
FILE(APPEND ${file}
|
||||
"<DirectoryRef Id='${DirectoryRefId}'>\n<Component Guid='${guid}' Id='${ComponentId}' ${Win64}>${NONEXEFILES}\n</Component></DirectoryRef>\n")
|
||||
FILE(APPEND ${file_comp} " <ComponentRef Id='${ComponentId}'/>\n")
|
||||
ENDIF()
|
||||
FOREACH(f ${all_files})
|
||||
IF(IS_DIRECTORY ${f})
|
||||
TRAVERSE_FILES(${f} ${topdir} ${file} ${file_comp} ${dir_root})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDFUNCTION()
|
||||
|
||||
FUNCTION(TRAVERSE_DIRECTORIES dir topdir file prefix)
|
||||
FILE(RELATIVE_PATH rel ${topdir} ${dir})
|
||||
IF(rel)
|
||||
MAKE_WIX_IDENTIFIER("${rel}" id)
|
||||
GET_FILENAME_COMPONENT(name ${dir} NAME)
|
||||
FILE(APPEND ${file} "${prefix}<Directory Id='D.${id}' Name='${name}'>\n")
|
||||
ENDIF()
|
||||
FILE(GLOB all_files ${dir}/*)
|
||||
FOREACH(f ${all_files})
|
||||
IF(IS_DIRECTORY ${f})
|
||||
TRAVERSE_DIRECTORIES(${f} ${topdir} ${file} "${prefix} ")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
IF(rel)
|
||||
FILE(APPEND ${file} "${prefix}</Directory>\n")
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
SET(CPACK_WIX_COMPONENTS)
|
||||
SET(CPACK_WIX_COMPONENT_GROUPS)
|
||||
GET_FILENAME_COMPONENT(abs . ABSOLUTE)
|
||||
FOREACH(d ${DIRS})
|
||||
GET_FILENAME_COMPONENT(d ${d} ABSOLUTE)
|
||||
GET_FILENAME_COMPONENT(d_name ${d} NAME)
|
||||
FILE(WRITE ${abs}/${d_name}_component_group.wxs "<ComponentGroup Id='componentgroup.${d_name}'>")
|
||||
SET(COMP_NAME ${d_name})
|
||||
TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs "${abs}/dirs")
|
||||
FILE(APPEND ${abs}/${d_name}_component_group.wxs "</ComponentGroup>")
|
||||
IF(EXISTS ${d_name}.wxs)
|
||||
FILE(READ ${d_name}.wxs WIX_TMP)
|
||||
SET(CPACK_WIX_COMPONENTS "${CPACK_WIX_COMPONENTS}\n${WIX_TMP}")
|
||||
FILE(REMOVE ${d_name}.wxs)
|
||||
ENDIF()
|
||||
|
||||
FILE(READ ${d_name}_component_group.wxs WIX_TMP)
|
||||
|
||||
SET(CPACK_WIX_COMPONENT_GROUPS "${CPACK_WIX_COMPONENT_GROUPS}\n${WIX_TMP}")
|
||||
FILE(REMOVE ${d_name}_component_group.wxs)
|
||||
ENDFOREACH()
|
||||
|
||||
FILE(WRITE directories.wxs "<DirectoryRef Id='INSTALLDIR'>\n")
|
||||
TRAVERSE_DIRECTORIES(${abs}/dirs ${abs}/dirs directories.wxs "")
|
||||
FILE(APPEND directories.wxs "</DirectoryRef>\n")
|
||||
|
||||
FILE(READ directories.wxs CPACK_WIX_DIRECTORIES)
|
||||
FILE(REMOVE directories.wxs)
|
||||
|
||||
|
||||
FOREACH(src ${CPACK_WIX_INCLUDE})
|
||||
SET(CPACK_WIX_INCLUDES
|
||||
"${CPACK_WIX_INCLUDES}
|
||||
<?include ${src}?>"
|
||||
)
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs)
|
||||
|
||||
SET(EXTRA_CANDLE_ARGS)
|
||||
IF("$ENV{EXTRA_CANDLE_ARGS}")
|
||||
SET(EXTRA_CANDLE_ARGS "$ENV{EXTRA_CANDLE_ARGS}")
|
||||
ENDIF()
|
||||
|
||||
SET(EXTRA_LIGHT_ARGS)
|
||||
IF("$ENV{EXTRA_LIGHT_ARGS}")
|
||||
SET(EXTRA_LIGHT_ARGS "$ENV{EXTRA_LIGHT_ARGS}")
|
||||
ENDIF()
|
||||
|
||||
FILE(REMOVE mysql_server.wixobj)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CANDLE_EXECUTABLE} -ext WixUtilExtension mysql_server.wxs ${EXTRA_CANDLE_ARGS}
|
||||
RESULT_VARIABLE CANDLE_RESULT
|
||||
)
|
||||
|
||||
IF(CANDLE_RESULT)
|
||||
MESSAGE(FATAL_ERROR "ERROR: can't run candle")
|
||||
ENDIF()
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${LIGHT_EXECUTABLE} -ext WixUIExtension -ext WixUtilExtension
|
||||
mysql_server.wixobj -out ${CPACK_PACKAGE_FILE_NAME}.msi
|
||||
${EXTRA_LIGHT_ARGS}
|
||||
RESULT_VARIABLE LIGHT_RESULT
|
||||
)
|
||||
|
||||
IF(LIGHT_RESULT)
|
||||
MESSAGE(FATAL_ERROR "ERROR: can't run light")
|
||||
ENDIF()
|
||||
|
||||
# Switch monolithic install on again
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_COMMAND} -DCPACK_MONOLITHIC_INSTALL=1 ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# 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
|
||||
|
||||
SET(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@")
|
||||
SET(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
|
||||
SET(CANDLE_EXECUTABLE "@CANDLE_EXECUTABLE@")
|
||||
SET(LIGHT_EXECUTABLE "@LIGHT_EXECUTABLE@")
|
||||
SET(CMAKE_COMMAND "@CMAKE_COMMAND@")
|
||||
SET(CMAKE_CFG_INTDIR "@CMAKE_CFG_INTDIR@")
|
||||
SET(VERSION "@VERSION@")
|
||||
SET(MAJOR_VERSION "@MAJOR_VERSION@")
|
||||
SET(MINOR_VERSION "@MINOR_VERSION@")
|
||||
SET(PATCH_VERSION "@PATCH_VERSION@")
|
||||
SET(CMAKE_SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@)
|
||||
SET(MANUFACTURER "@MANUFACTURER@")
|
||||
SET(WIXCA_LOCATION "@WIXCA_LOCATION@")
|
||||
SET(COPYING_RTF "@COPYING_RTF@")
|
||||
SET(CPACK_WIX_CONFIG "@CPACK_WIX_CONFIG@")
|
||||
SET(CPACK_WIX_INCLUDE "@CPACK_WIX_INCLUDE@")
|
||||
|
||||
LIST(APPEND EXCLUDE_DIRS
|
||||
bin/debug
|
||||
data/test
|
||||
lib/plugin/debug
|
||||
mysql-test
|
||||
scripts
|
||||
sql-bench
|
||||
)
|
||||
|
||||
LIST(APPEND EXCLUDE_FILES
|
||||
bin/echo.exe
|
||||
bin/mysql_client_test_embedded.exe
|
||||
bin/mysqld-debug.exe
|
||||
bin/mysqltest_embedded.exe
|
||||
bin/replace.exe
|
||||
lib/debug/mysqlserver.lib
|
||||
lib/libmysqld.dll
|
||||
lib/libmysqld.lib
|
||||
lib/mysqlserver.lib
|
||||
lib/mysqlservices.lib
|
||||
)
|
||||
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
SET(Win64 " Win64='yes'")
|
||||
SET(Platform x64)
|
||||
SET(PlatformProgramFilesFolder ProgramFiles64Folder)
|
||||
ELSE()
|
||||
SET(Platform x86)
|
||||
SET(PlatformProgramFilesFolder ProgramFilesFolder)
|
||||
SET(Win64)
|
||||
ENDIF()
|
||||
|
||||
SET(ENV{VS_UNICODE_OUTPUT})
|
||||
|
||||
# Switch off the monolithic install
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_COMMAND} -DCPACK_MONOLITHIC_INSTALL=0 ${CMAKE_BINARY_DIR}
|
||||
OUTPUT_QUIET
|
||||
)
|
||||
|
||||
INCLUDE(${CMAKE_BINARY_DIR}/CPackConfig.cmake)
|
||||
|
||||
IF(CPACK_WIX_CONFIG)
|
||||
INCLUDE(${CPACK_WIX_CONFIG})
|
||||
ENDIF()
|
||||
|
||||
IF(NOT CPACK_WIX_UI)
|
||||
SET(CPACK_WIX_UI "WixUI_Mondo_Custom")
|
||||
ENDIF()
|
||||
|
||||
SET(WIX_FEATURES)
|
||||
FOREACH(comp ${CPACK_COMPONENTS_ALL})
|
||||
STRING(TOUPPER "${comp}" comp_upper)
|
||||
IF(NOT CPACK_COMPONENT_${comp_upper}_GROUP)
|
||||
SET(WIX_FEATURE_${comp_upper}_COMPONENTS "${comp}")
|
||||
SET(CPACK_COMPONENT_${comp_upper}_HIDDEN 1)
|
||||
SET(CPACK_COMPONENT_GROUP_${comp_upper}_DISPLAY_NAME ${CPACK_COMPONENT_${comp_upper}_DISPLAY_NAME})
|
||||
SET(CPACK_COMPONENT_GROUP_${comp_upper}_DESCRIPTION ${CPACK_COMPONENT_${comp_upper}_DESCRIPTION})
|
||||
SET(CPACK_COMPONENT_GROUP_${comp_upper}_WIX_LEVEL ${CPACK_COMPONENT_${comp_upper}_WIX_LEVEL})
|
||||
SET(WIX_FEATURES ${WIX_FEATURES} WIX_FEATURE_${comp_upper})
|
||||
ELSE()
|
||||
SET(FEATURE_NAME WIX_FEATURE_${CPACK_COMPONENT_${comp_upper}_GROUP})
|
||||
SET(WIX_FEATURES ${WIX_FEATURES} ${FEATURE_NAME})
|
||||
LIST(APPEND ${FEATURE_NAME}_COMPONENTS ${comp})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
LIST(REMOVE_DUPLICATES WIX_FEATURES)
|
||||
|
||||
SET(CPACK_WIX_FEATURES)
|
||||
|
||||
FOREACH(f ${WIX_FEATURES})
|
||||
STRING(TOUPPER "${f}" f_upper)
|
||||
STRING(REPLACE "WIX_FEATURE_" "" f_upper ${f_upper})
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
SET(TITLE ${CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME})
|
||||
ELSE()
|
||||
SET(TITLE CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
ENDIF()
|
||||
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
SET(DESCRIPTION ${CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION})
|
||||
ELSE()
|
||||
SET(DESCRIPTION CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_${f_upper}_WIX_LEVEL)
|
||||
SET(Level ${CPACK_COMPONENT_${f_upper}_WIX_LEVEL})
|
||||
ELSE()
|
||||
SET(Level 1)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_GROUP_${f_upper}_HIDDEN)
|
||||
SET(DISPLAY "Display='hidden'")
|
||||
SET(TITLE ${f_upper})
|
||||
SET(DESCRIPTION ${f_upper})
|
||||
ELSE()
|
||||
SET(DISPLAY)
|
||||
IF(CPACK_COMPONENT_GROUP_${f_upper}_EXPANDED)
|
||||
SET(DISPLAY "Display='expand'")
|
||||
ENDIF()
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
SET(TITLE ${CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME})
|
||||
ELSE()
|
||||
SET(TITLE CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
ENDIF()
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
SET(DESCRIPTION ${CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION})
|
||||
ELSE()
|
||||
SET(DESCRIPTION CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
<Feature Id='${f_upper}'
|
||||
Title='${TITLE}'
|
||||
Description='${DESCRIPTION}'
|
||||
ConfigurableDirectory='INSTALLDIR'
|
||||
Level='${Level}' ${DISPLAY} >"
|
||||
)
|
||||
FOREACH(c ${${f}_COMPONENTS})
|
||||
STRING(TOUPPER "${c}" c_upper)
|
||||
IF (CPACK_COMPONENT_${c_upper}_DISPLAY_NAME)
|
||||
SET(TITLE ${CPACK_COMPONENT_${c_upper}_DISPLAY_NAME})
|
||||
ELSE()
|
||||
SET(TITLE CPACK_COMPONENT_${c_upper}_DISPLAY_NAME)
|
||||
ENDIF()
|
||||
|
||||
IF (CPACK_COMPONENT_${c_upper}_DESCRIPTION)
|
||||
SET(DESCRIPTION ${CPACK_COMPONENT_${c_upper}_DESCRIPTION})
|
||||
ELSE()
|
||||
SET(DESCRIPTION CPACK_COMPONENT_${c_upper}_DESCRIPTION)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_${c_upper}_WIX_LEVEL)
|
||||
SET(Level ${CPACK_COMPONENT_${c_upper}_WIX_LEVEL})
|
||||
ELSE()
|
||||
SET(Level 1)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_${c_upper}_HIDDEN)
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
<ComponentGroupRef Id='componentgroup.${c}'/>")
|
||||
ELSE()
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
<Feature Id='${c}'
|
||||
Title='${TITLE}'
|
||||
Description='${DESCRIPTION}'
|
||||
ConfigurableDirectory='INSTALLDIR'
|
||||
Level='${Level}'>
|
||||
<ComponentGroupRef Id='componentgroup.${c}'/>
|
||||
</Feature>")
|
||||
ENDIF()
|
||||
|
||||
ENDFOREACH()
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
</Feature>
|
||||
")
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
IF(CMAKE_INSTALL_CONFIG_NAME)
|
||||
STRING(REPLACE "${CMAKE_CFG_INTDIR}" "${CMAKE_INSTALL_CONFIG_NAME}"
|
||||
WIXCA_LOCATION "${WIXCA_LOCATION}")
|
||||
SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_INSTALL_CONFIG_NAME}")
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs)
|
||||
|
||||
|
||||
FOREACH(comp ${CPACK_COMPONENTS_ALL})
|
||||
SET(ENV{DESTDIR} testinstall/${comp})
|
||||
SET(DIRS ${DIRS} testinstall/${comp})
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_COMMAND} ${CONFIG_PARAM} -DCMAKE_INSTALL_COMPONENT=${comp}
|
||||
-DCMAKE_INSTALL_PREFIX= -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
|
||||
OUTPUT_QUIET
|
||||
)
|
||||
ENDFOREACH()
|
||||
|
||||
MACRO(GENERATE_GUID VarName)
|
||||
EXECUTE_PROCESS(COMMAND uuidgen -c
|
||||
OUTPUT_VARIABLE ${VarName}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
ENDMACRO()
|
||||
|
||||
SET(INC_VAR 0)
|
||||
MACRO(MAKE_WIX_IDENTIFIER str varname)
|
||||
STRING(REPLACE "/" "." ${varname} "${str}")
|
||||
STRING(REGEX REPLACE "[^a-zA-Z_0-9.]" "_" ${varname} "${${varname}}")
|
||||
STRING(LENGTH "${${varname}}" len)
|
||||
# Identifier should be smaller than 72 character
|
||||
# We have to cut down the length to 70 chars, since we add 2 char prefix
|
||||
# pretty often
|
||||
IF(len GREATER 70)
|
||||
STRING(SUBSTRING "${${varname}}" 0 67 shortstr)
|
||||
MATH(EXPR INC_VAR ${INC_VAR}+1)
|
||||
SET(${varname} "${shortstr}${INC_VAR}")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root)
|
||||
FILE(RELATIVE_PATH dir_rel ${topdir} ${dir})
|
||||
IF(dir_rel)
|
||||
LIST(FIND EXCLUDE_DIRS ${dir_rel} TO_EXCLUDE)
|
||||
IF(NOT TO_EXCLUDE EQUAL -1)
|
||||
MESSAGE(STATUS "excluding directory: ${dir_rel}")
|
||||
RETURN()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
FILE(GLOB all_files ${dir}/*)
|
||||
IF(NOT all_files)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
IF(dir_rel)
|
||||
MAKE_DIRECTORY(${dir_root}/${dir_rel})
|
||||
MAKE_WIX_IDENTIFIER("${dir_rel}" id)
|
||||
SET(DirectoryRefId "D.${id}")
|
||||
ELSE()
|
||||
SET(DirectoryRefId "INSTALLDIR")
|
||||
ENDIF()
|
||||
FILE(APPEND ${file} "<DirectoryRef Id='${DirectoryRefId}'>\n")
|
||||
|
||||
SET(NONEXEFILES)
|
||||
FOREACH(f ${all_files})
|
||||
IF(NOT IS_DIRECTORY ${f})
|
||||
FILE(RELATIVE_PATH rel ${topdir} ${f})
|
||||
SET(TO_EXCLUDE)
|
||||
IF(rel MATCHES "\\.pdb$")
|
||||
SET(TO_EXCLUDE TRUE)
|
||||
ELSE()
|
||||
LIST(FIND EXCLUDE_FILES ${rel} RES)
|
||||
IF(NOT RES EQUAL -1)
|
||||
SET(TO_EXCLUDE TRUE)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(TO_EXCLUDE)
|
||||
MESSAGE(STATUS "excluding file: ${rel}")
|
||||
ELSE()
|
||||
MAKE_WIX_IDENTIFIER("${rel}" id)
|
||||
FILE(TO_NATIVE_PATH ${f} f_native)
|
||||
GET_FILENAME_COMPONENT(f_ext "${f}" EXT)
|
||||
# According to MSDN each DLL or EXE should be in the own component
|
||||
IF(f_ext MATCHES ".exe" OR f_ext MATCHES ".dll")
|
||||
|
||||
FILE(APPEND ${file} " <Component Id='C.${id}' Guid='*' ${Win64}>\n")
|
||||
FILE(APPEND ${file} " <File Id='F.${id}' KeyPath='yes' Source='${f_native}'/>\n")
|
||||
FILE(APPEND ${file} " </Component>\n")
|
||||
FILE(APPEND ${file_comp} " <ComponentRef Id='C.${id}'/>\n")
|
||||
ELSE()
|
||||
SET(NONEXEFILES "${NONEXEFILES}\n<File Id='F.${id}' Source='${f_native}'/>" )
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
FILE(APPEND ${file} "</DirectoryRef>\n")
|
||||
IF(NONEXEFILES)
|
||||
GENERATE_GUID(guid)
|
||||
SET(ComponentId "C._files_${COMP_NAME}.${DirectoryRefId}")
|
||||
FILE(APPEND ${file}
|
||||
"<DirectoryRef Id='${DirectoryRefId}'>\n<Component Guid='${guid}' Id='${ComponentId}' ${Win64}>${NONEXEFILES}\n</Component></DirectoryRef>\n")
|
||||
FILE(APPEND ${file_comp} " <ComponentRef Id='${ComponentId}'/>\n")
|
||||
ENDIF()
|
||||
FOREACH(f ${all_files})
|
||||
IF(IS_DIRECTORY ${f})
|
||||
TRAVERSE_FILES(${f} ${topdir} ${file} ${file_comp} ${dir_root})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDFUNCTION()
|
||||
|
||||
FUNCTION(TRAVERSE_DIRECTORIES dir topdir file prefix)
|
||||
FILE(RELATIVE_PATH rel ${topdir} ${dir})
|
||||
IF(rel)
|
||||
MAKE_WIX_IDENTIFIER("${rel}" id)
|
||||
GET_FILENAME_COMPONENT(name ${dir} NAME)
|
||||
FILE(APPEND ${file} "${prefix}<Directory Id='D.${id}' Name='${name}'>\n")
|
||||
ENDIF()
|
||||
FILE(GLOB all_files ${dir}/*)
|
||||
FOREACH(f ${all_files})
|
||||
IF(IS_DIRECTORY ${f})
|
||||
TRAVERSE_DIRECTORIES(${f} ${topdir} ${file} "${prefix} ")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
IF(rel)
|
||||
FILE(APPEND ${file} "${prefix}</Directory>\n")
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
SET(CPACK_WIX_COMPONENTS)
|
||||
SET(CPACK_WIX_COMPONENT_GROUPS)
|
||||
GET_FILENAME_COMPONENT(abs . ABSOLUTE)
|
||||
FOREACH(d ${DIRS})
|
||||
GET_FILENAME_COMPONENT(d ${d} ABSOLUTE)
|
||||
GET_FILENAME_COMPONENT(d_name ${d} NAME)
|
||||
FILE(WRITE ${abs}/${d_name}_component_group.wxs "<ComponentGroup Id='componentgroup.${d_name}'>")
|
||||
SET(COMP_NAME ${d_name})
|
||||
TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs "${abs}/dirs")
|
||||
FILE(APPEND ${abs}/${d_name}_component_group.wxs "</ComponentGroup>")
|
||||
IF(EXISTS ${d_name}.wxs)
|
||||
FILE(READ ${d_name}.wxs WIX_TMP)
|
||||
SET(CPACK_WIX_COMPONENTS "${CPACK_WIX_COMPONENTS}\n${WIX_TMP}")
|
||||
FILE(REMOVE ${d_name}.wxs)
|
||||
ENDIF()
|
||||
|
||||
FILE(READ ${d_name}_component_group.wxs WIX_TMP)
|
||||
|
||||
SET(CPACK_WIX_COMPONENT_GROUPS "${CPACK_WIX_COMPONENT_GROUPS}\n${WIX_TMP}")
|
||||
FILE(REMOVE ${d_name}_component_group.wxs)
|
||||
ENDFOREACH()
|
||||
|
||||
FILE(WRITE directories.wxs "<DirectoryRef Id='INSTALLDIR'>\n")
|
||||
TRAVERSE_DIRECTORIES(${abs}/dirs ${abs}/dirs directories.wxs "")
|
||||
FILE(APPEND directories.wxs "</DirectoryRef>\n")
|
||||
|
||||
FILE(READ directories.wxs CPACK_WIX_DIRECTORIES)
|
||||
FILE(REMOVE directories.wxs)
|
||||
|
||||
|
||||
FOREACH(src ${CPACK_WIX_INCLUDE})
|
||||
SET(CPACK_WIX_INCLUDES
|
||||
"${CPACK_WIX_INCLUDES}
|
||||
<?include ${src}?>"
|
||||
)
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs)
|
||||
|
||||
SET(EXTRA_CANDLE_ARGS)
|
||||
IF("$ENV{EXTRA_CANDLE_ARGS}")
|
||||
SET(EXTRA_CANDLE_ARGS "$ENV{EXTRA_CANDLE_ARGS}")
|
||||
ENDIF()
|
||||
|
||||
SET(EXTRA_LIGHT_ARGS)
|
||||
IF("$ENV{EXTRA_LIGHT_ARGS}")
|
||||
SET(EXTRA_LIGHT_ARGS "$ENV{EXTRA_LIGHT_ARGS}")
|
||||
ENDIF()
|
||||
|
||||
FILE(REMOVE mysql_server.wixobj)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CANDLE_EXECUTABLE} -ext WixUtilExtension mysql_server.wxs ${EXTRA_CANDLE_ARGS}
|
||||
RESULT_VARIABLE CANDLE_RESULT
|
||||
)
|
||||
|
||||
IF(CANDLE_RESULT)
|
||||
MESSAGE(FATAL_ERROR "ERROR: can't run candle")
|
||||
ENDIF()
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${LIGHT_EXECUTABLE} -ext WixUIExtension -ext WixUtilExtension
|
||||
mysql_server.wixobj -out ${CPACK_PACKAGE_FILE_NAME}.msi
|
||||
${EXTRA_LIGHT_ARGS}
|
||||
RESULT_VARIABLE LIGHT_RESULT
|
||||
)
|
||||
|
||||
IF(LIGHT_RESULT)
|
||||
MESSAGE(FATAL_ERROR "ERROR: can't run light")
|
||||
ENDIF()
|
||||
|
||||
# Switch monolithic install on again
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_COMMAND} -DCPACK_MONOLITHIC_INSTALL=1 ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
|
|
@ -1,115 +1,115 @@
|
|||
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
|
||||
<!--
|
||||
Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
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
|
||||
-->
|
||||
|
||||
<UI Id="WixUI_Mondo_Custom">
|
||||
<Dialog Id="CustomWelcomeDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
|
||||
</Control>
|
||||
<Control Id="Next" Type="PushButton" X="220" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
|
||||
<Publish Event="NewDialog" Value="LicenseAgreementDlg">NOT OLDERVERSIONBEINGUPGRADED</Publish>
|
||||
<Publish Event="NewDialog" Value="UpgradeDlg">OLDERVERSIONBEINGUPGRADED</Publish>
|
||||
</Control>
|
||||
<Control Id="Back" Type="PushButton" X="156" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" Disabled="yes" />
|
||||
<Control Id="Description" Type="Text" X="135" Y="80" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.WelcomeDlgDescription)" />
|
||||
<Control Id="Title" Type="Text" X="135" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.WelcomeDlgTitle)" />
|
||||
<Control Id="CopyrightText" Type="Text" X="135" Y="200" Width="220" Height="40" Transparent="yes" Text="Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved." />
|
||||
<Control Id="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="!(loc.WelcomeDlgBitmap)" />
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
</Dialog>
|
||||
|
||||
<Dialog Id="UpgradeDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">
|
||||
<Control Id="Install" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Default="yes" Text="Upgrade">
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
|
||||
</Control>
|
||||
<Control Id="Back" Type="PushButton" X="156" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)">
|
||||
<Condition Action="default">WixUI_InstallMode = "Remove"</Condition>
|
||||
</Control>
|
||||
<Control Id="InstallTitle" Type="Text" X="15" Y="15" Width="300" Height="15" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="!(loc.VerifyReadyDlgInstallTitle)">
|
||||
<Condition Action="show">NOT Installed</Condition>
|
||||
</Control>
|
||||
<Control Id="InstallText" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="yes" Text="!(loc.VerifyReadyDlgInstallText)">
|
||||
<Condition Action="show">NOT Installed</Condition>
|
||||
</Control>
|
||||
<Control Id="UpgradeText" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="no" NoPrefix="yes"
|
||||
Text="Click Upgrade to upgrade your installation from version [OLDERVERSION] to version [ProductVersion]. Click Cancel to exit the upgrade."/>
|
||||
<Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.VerifyReadyDlgBannerBitmap)" />
|
||||
<Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
</Dialog>
|
||||
|
||||
<TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
|
||||
<TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
|
||||
<TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
|
||||
|
||||
<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
|
||||
<Property Id="WixUI_Mode" Value="Mondo" />
|
||||
|
||||
<DialogRef Id="ErrorDlg" />
|
||||
<DialogRef Id="FatalError" />
|
||||
<DialogRef Id="FilesInUse" />
|
||||
<DialogRef Id="MsiRMFilesInUse" />
|
||||
<DialogRef Id="PrepareDlg" />
|
||||
<DialogRef Id="ProgressDlg" />
|
||||
<DialogRef Id="ResumeDlg" />
|
||||
<DialogRef Id="UserExit" />
|
||||
|
||||
<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
|
||||
|
||||
<Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="CustomWelcomeDlg">1</Publish>
|
||||
<Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg" Order="2">LicenseAccepted = "1"</Publish>
|
||||
|
||||
<Publish Dialog="SetupTypeDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="TypicalButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="CustomButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="CompleteButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">WixUI_InstallMode = "Change"</Publish>
|
||||
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="2">WixUI_InstallMode = "InstallCustom"</Publish>
|
||||
<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">WixUI_InstallMode = "InstallCustom"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="2">WixUI_InstallMode = "InstallTypical" OR WixUI_InstallMode = "InstallComplete"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="3">WixUI_InstallMode = "Change"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="4">WixUI_InstallMode = "Repair" OR WixUI_InstallMode = "Remove"</Publish>
|
||||
|
||||
<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="UpgradeDlg" Control="Back" Event="NewDialog" Value="CustomWelcomeDlg">1</Publish>
|
||||
|
||||
<InstallUISequence>
|
||||
<Show Dialog="CustomWelcomeDlg" Before="ProgressDlg">NOT Installed</Show>
|
||||
</InstallUISequence>
|
||||
</UI>
|
||||
|
||||
<UIRef Id="WixUI_Common" />
|
||||
</Include>
|
||||
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
|
||||
<!--
|
||||
Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
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
|
||||
-->
|
||||
|
||||
<UI Id="WixUI_Mondo_Custom">
|
||||
<Dialog Id="CustomWelcomeDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
|
||||
</Control>
|
||||
<Control Id="Next" Type="PushButton" X="220" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
|
||||
<Publish Event="NewDialog" Value="LicenseAgreementDlg">NOT OLDERVERSIONBEINGUPGRADED</Publish>
|
||||
<Publish Event="NewDialog" Value="UpgradeDlg">OLDERVERSIONBEINGUPGRADED</Publish>
|
||||
</Control>
|
||||
<Control Id="Back" Type="PushButton" X="156" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" Disabled="yes" />
|
||||
<Control Id="Description" Type="Text" X="135" Y="80" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.WelcomeDlgDescription)" />
|
||||
<Control Id="Title" Type="Text" X="135" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.WelcomeDlgTitle)" />
|
||||
<Control Id="CopyrightText" Type="Text" X="135" Y="200" Width="220" Height="40" Transparent="yes" Text="Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved." />
|
||||
<Control Id="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="!(loc.WelcomeDlgBitmap)" />
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
</Dialog>
|
||||
|
||||
<Dialog Id="UpgradeDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">
|
||||
<Control Id="Install" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Default="yes" Text="Upgrade">
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
|
||||
</Control>
|
||||
<Control Id="Back" Type="PushButton" X="156" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)">
|
||||
<Condition Action="default">WixUI_InstallMode = "Remove"</Condition>
|
||||
</Control>
|
||||
<Control Id="InstallTitle" Type="Text" X="15" Y="15" Width="300" Height="15" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="!(loc.VerifyReadyDlgInstallTitle)">
|
||||
<Condition Action="show">NOT Installed</Condition>
|
||||
</Control>
|
||||
<Control Id="InstallText" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="yes" Text="!(loc.VerifyReadyDlgInstallText)">
|
||||
<Condition Action="show">NOT Installed</Condition>
|
||||
</Control>
|
||||
<Control Id="UpgradeText" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="no" NoPrefix="yes"
|
||||
Text="Click Upgrade to upgrade your installation from version [OLDERVERSION] to version [ProductVersion]. Click Cancel to exit the upgrade."/>
|
||||
<Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.VerifyReadyDlgBannerBitmap)" />
|
||||
<Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
</Dialog>
|
||||
|
||||
<TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
|
||||
<TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
|
||||
<TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
|
||||
|
||||
<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
|
||||
<Property Id="WixUI_Mode" Value="Mondo" />
|
||||
|
||||
<DialogRef Id="ErrorDlg" />
|
||||
<DialogRef Id="FatalError" />
|
||||
<DialogRef Id="FilesInUse" />
|
||||
<DialogRef Id="MsiRMFilesInUse" />
|
||||
<DialogRef Id="PrepareDlg" />
|
||||
<DialogRef Id="ProgressDlg" />
|
||||
<DialogRef Id="ResumeDlg" />
|
||||
<DialogRef Id="UserExit" />
|
||||
|
||||
<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
|
||||
|
||||
<Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="CustomWelcomeDlg">1</Publish>
|
||||
<Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg" Order="2">LicenseAccepted = "1"</Publish>
|
||||
|
||||
<Publish Dialog="SetupTypeDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="TypicalButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="CustomButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="CompleteButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">WixUI_InstallMode = "Change"</Publish>
|
||||
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="2">WixUI_InstallMode = "InstallCustom"</Publish>
|
||||
<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">WixUI_InstallMode = "InstallCustom"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="2">WixUI_InstallMode = "InstallTypical" OR WixUI_InstallMode = "InstallComplete"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="3">WixUI_InstallMode = "Change"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="4">WixUI_InstallMode = "Repair" OR WixUI_InstallMode = "Remove"</Publish>
|
||||
|
||||
<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="UpgradeDlg" Control="Back" Event="NewDialog" Value="CustomWelcomeDlg">1</Publish>
|
||||
|
||||
<InstallUISequence>
|
||||
<Show Dialog="CustomWelcomeDlg" Before="ProgressDlg">NOT Installed</Show>
|
||||
</InstallUISequence>
|
||||
</UI>
|
||||
|
||||
<UIRef Id="WixUI_Common" />
|
||||
</Include>
|
||||
|
|
|
@ -1,81 +1,81 @@
|
|||
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
|
||||
<!--
|
||||
Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
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
|
||||
-->
|
||||
|
||||
<!-- Datafiles that installation will copy to CommonAppData (initial database)
|
||||
They are declared Permanent and NeverOverwrite since it is user data -->
|
||||
<DirectoryRef Id='TARGETDIR'>
|
||||
<Directory Id="CommonAppDataFolder">
|
||||
<Directory Id="datadir.mysql" Name="MySQL">
|
||||
<Directory Id="datadir.mysql.mysqlserver"
|
||||
Name="MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@">
|
||||
<Directory Id="DATADIR" Name=".">
|
||||
<Component Id="component.datadir" Guid="d3491319-5dbc-4477-95f3-4f809ef1dd2d">
|
||||
<CreateFolder>
|
||||
<util:PermissionEx User="[LogonUser]" GenericAll="yes" />
|
||||
</CreateFolder>
|
||||
</Component>
|
||||
<Directory Id="datadir.mysql.mysqlserver.data" Name="data">
|
||||
<Directory Id="datadir.mysql.mysqlserver.data.mysql" Name="mysql">
|
||||
<Component Id="component.datadir.mysql"
|
||||
Guid="19ec0f1f-1a7f-424e-a788-b09346c0a709"
|
||||
Permanent="yes" NeverOverwrite="yes">
|
||||
<CreateFolder>
|
||||
<util:PermissionEx User="[LogonUser]" GenericAll="yes" />
|
||||
</CreateFolder>
|
||||
@DATADIR_MYSQL_FILES@
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="datadir.mysql.mysqlserver.data.performance_schema"
|
||||
Name="performance_schema">
|
||||
<Component Id="component.datadir.performance_schema"
|
||||
Guid="af2a6776-2655-431f-a748-9e9f4645acc3"
|
||||
Permanent="yes" NeverOverwrite="yes">
|
||||
<CreateFolder>
|
||||
<util:PermissionEx User="[LogonUser]" GenericAll="yes" />
|
||||
</CreateFolder>
|
||||
@DATADIR_PERFORMANCE_SCHEMA_FILES@
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="datadir.mysql.mysqlserver.data.test" Name="test">
|
||||
<Component Id="component.datadir.test" Guid="52fa9f0a-fcd1-420a-b2ac-95a8f70ad20a">
|
||||
<CreateFolder/>
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</DirectoryRef>
|
||||
|
||||
<Feature Id='UserEditableDataFiles'
|
||||
Title='Server data files'
|
||||
Description='Server data files'
|
||||
ConfigurableDirectory='DATADIR'
|
||||
Level='1'>
|
||||
<ComponentRef Id="component.datadir"/>
|
||||
<ComponentRef Id="component.datadir.mysql"/>
|
||||
<ComponentRef Id="component.datadir.performance_schema"/>
|
||||
<ComponentRef Id="component.datadir.test"/>
|
||||
</Feature>
|
||||
</Include>
|
||||
|
||||
|
||||
|
||||
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
|
||||
<!--
|
||||
Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
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
|
||||
-->
|
||||
|
||||
<!-- Datafiles that installation will copy to CommonAppData (initial database)
|
||||
They are declared Permanent and NeverOverwrite since it is user data -->
|
||||
<DirectoryRef Id='TARGETDIR'>
|
||||
<Directory Id="CommonAppDataFolder">
|
||||
<Directory Id="datadir.mysql" Name="MySQL">
|
||||
<Directory Id="datadir.mysql.mysqlserver"
|
||||
Name="MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@">
|
||||
<Directory Id="DATADIR" Name=".">
|
||||
<Component Id="component.datadir" Guid="d3491319-5dbc-4477-95f3-4f809ef1dd2d">
|
||||
<CreateFolder>
|
||||
<util:PermissionEx User="[LogonUser]" GenericAll="yes" />
|
||||
</CreateFolder>
|
||||
</Component>
|
||||
<Directory Id="datadir.mysql.mysqlserver.data" Name="data">
|
||||
<Directory Id="datadir.mysql.mysqlserver.data.mysql" Name="mysql">
|
||||
<Component Id="component.datadir.mysql"
|
||||
Guid="19ec0f1f-1a7f-424e-a788-b09346c0a709"
|
||||
Permanent="yes" NeverOverwrite="yes">
|
||||
<CreateFolder>
|
||||
<util:PermissionEx User="[LogonUser]" GenericAll="yes" />
|
||||
</CreateFolder>
|
||||
@DATADIR_MYSQL_FILES@
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="datadir.mysql.mysqlserver.data.performance_schema"
|
||||
Name="performance_schema">
|
||||
<Component Id="component.datadir.performance_schema"
|
||||
Guid="af2a6776-2655-431f-a748-9e9f4645acc3"
|
||||
Permanent="yes" NeverOverwrite="yes">
|
||||
<CreateFolder>
|
||||
<util:PermissionEx User="[LogonUser]" GenericAll="yes" />
|
||||
</CreateFolder>
|
||||
@DATADIR_PERFORMANCE_SCHEMA_FILES@
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="datadir.mysql.mysqlserver.data.test" Name="test">
|
||||
<Component Id="component.datadir.test" Guid="52fa9f0a-fcd1-420a-b2ac-95a8f70ad20a">
|
||||
<CreateFolder/>
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</DirectoryRef>
|
||||
|
||||
<Feature Id='UserEditableDataFiles'
|
||||
Title='Server data files'
|
||||
Description='Server data files'
|
||||
ConfigurableDirectory='DATADIR'
|
||||
Level='1'>
|
||||
<ComponentRef Id="component.datadir"/>
|
||||
<ComponentRef Id="component.datadir.mysql"/>
|
||||
<ComponentRef Id="component.datadir.performance_schema"/>
|
||||
<ComponentRef Id="component.datadir.test"/>
|
||||
</Feature>
|
||||
</Include>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,196 +1,196 @@
|
|||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
|
||||
<!--
|
||||
Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
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
|
||||
-->
|
||||
|
||||
<Product
|
||||
Id="*"
|
||||
UpgradeCode="49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3"
|
||||
Name="MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@"
|
||||
Version="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@"
|
||||
Language="1033"
|
||||
Manufacturer="@MANUFACTURER@">
|
||||
|
||||
<Package Id='*'
|
||||
Keywords='Installer'
|
||||
Description="MySQL Database Server"
|
||||
Manufacturer='@MANUFACTURER@'
|
||||
InstallerVersion='200'
|
||||
Languages='1033'
|
||||
Compressed='yes'
|
||||
SummaryCodepage='1252'
|
||||
Platform='@Platform@'
|
||||
InstallScope="perMachine"/>
|
||||
|
||||
<Media Id='1' Cabinet='product.cab' EmbedCab='yes' />
|
||||
|
||||
<!-- Upgrade -->
|
||||
<Upgrade Id="49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3">
|
||||
<UpgradeVersion
|
||||
Minimum="@MAJOR_VERSION@.@MINOR_VERSION@.0"
|
||||
IncludeMinimum="yes"
|
||||
Maximum="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@"
|
||||
IncludeMaximum="yes"
|
||||
Property="OLDERVERSIONBEINGUPGRADED"
|
||||
MigrateFeatures="yes"
|
||||
/>
|
||||
<UpgradeVersion
|
||||
Minimum="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@"
|
||||
IncludeMinimum="no"
|
||||
OnlyDetect="yes"
|
||||
Property="NEWERVERSIONDETECTED" />
|
||||
</Upgrade>
|
||||
<Condition Message="A later version of [ProductName] is already installed. Setup will now exit.">
|
||||
NOT NEWERVERSIONDETECTED OR Installed
|
||||
</Condition>
|
||||
<InstallExecuteSequence>
|
||||
<RemoveExistingProducts After="InstallInitialize"/>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<!-- Save/restore install location -->
|
||||
<CustomAction Id="SaveTargetDir" Property="ARPINSTALLLOCATION" Value="[INSTALLDIR]" />
|
||||
<InstallExecuteSequence>
|
||||
<Custom Action="SaveTargetDir" After="InstallValidate">
|
||||
NOT
|
||||
Installed
|
||||
</Custom>
|
||||
</InstallExecuteSequence>
|
||||
<InstallUISequence>
|
||||
<!-- App search is what does FindInstallLocation, and it is dependent on FindRelatedProducts -->
|
||||
<AppSearch After="FindRelatedProducts"/>
|
||||
</InstallUISequence>
|
||||
|
||||
<!-- Find previous installation -->
|
||||
<Property Id="INSTALLDIR">
|
||||
<RegistrySearch Id="FindInstallLocation"
|
||||
Root="HKLM"
|
||||
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
|
||||
Name="InstallLocation"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<?if @Platform@ != "x64" ?>
|
||||
<Property Id="OLDERVERSION">
|
||||
<RegistrySearch Id="FindOlderVersion"
|
||||
Root="HKLM"
|
||||
Win64 = "no"
|
||||
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
|
||||
Name="DisplayVersion"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<?else ?>
|
||||
<Property Id="OLDERVERSION">
|
||||
<RegistrySearch Id="FindOlderVersion"
|
||||
Root="HKLM"
|
||||
Win64 = "yes"
|
||||
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
|
||||
Name="DisplayVersion"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<?endif ?>
|
||||
<Property Id="DATADIR">
|
||||
<RegistrySearch Id="FindDataDir"
|
||||
Root="HKLM"
|
||||
Key="SOFTWARE\MySQL AB\[ProductName]"
|
||||
Name="DataLocation"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<Property Id="INSTALLDIR2">
|
||||
<RegistrySearch Id="FindInstallLocation2"
|
||||
Root="HKLM"
|
||||
Key="SOFTWARE\MySQL AB\[ProductName]"
|
||||
Name="Location"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<CustomAction Id="SetInstallDir2" Property="INSTALLDIR" Value="[INSTALLDIR2]" />
|
||||
<InstallUISequence>
|
||||
<Custom Action="SetInstallDir2" After="AppSearch">INSTALLDIR2</Custom>
|
||||
</InstallUISequence>
|
||||
|
||||
|
||||
<!-- UI -->
|
||||
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"></Property>
|
||||
<UIRef Id="@CPACK_WIX_UI@" />
|
||||
<UIRef Id="WixUI_ErrorProgressText" />
|
||||
<WixVariable
|
||||
Id="WixUIBannerBmp"
|
||||
Value="@CMAKE_CURRENT_SOURCE_DIR@/AdminHeader.jpg" />
|
||||
<WixVariable
|
||||
Id="WixUIDialogBmp"
|
||||
Value="@CMAKE_CURRENT_SOURCE_DIR@/AdminBackground.jpg" />
|
||||
<Icon
|
||||
Id="icon.ico"
|
||||
SourceFile="@CMAKE_CURRENT_SOURCE_DIR@/MySQLServer.ico"/>
|
||||
<Property
|
||||
Id="ARPPRODUCTICON"
|
||||
Value="icon.ico" />
|
||||
|
||||
<!-- License -->
|
||||
<WixVariable
|
||||
Id="WixUILicenseRtf"
|
||||
Value="@COPYING_RTF@"/>
|
||||
|
||||
<!-- How to remove the service on uninstall -->
|
||||
<Binary Id='wixca.dll' SourceFile='@WIXCA_LOCATION@' />
|
||||
<CustomAction Id="UnregisterProperty" Property="UnregisterService" Value="[INSTALLDIR]" Return="check" />
|
||||
<CustomAction Id="UnregisterPropertySilent" Property="UnregisterServiceSilently" Value="[INSTALLDIR]" Return="check" />
|
||||
<CustomAction Id="UnregisterService"
|
||||
BinaryKey="wixca.dll"
|
||||
DllEntry="RemoveService"
|
||||
Execute="deferred"
|
||||
Impersonate="no"
|
||||
Return="check" />
|
||||
<CustomAction Id="UnregisterServiceSilently"
|
||||
BinaryKey="wixca.dll"
|
||||
DllEntry="RemoveServiceNoninteractive"
|
||||
Execute="deferred"
|
||||
Impersonate="no"
|
||||
Return="check" />
|
||||
<InstallExecuteSequence>
|
||||
<Custom Action="UnregisterProperty" After="InstallInitialize">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL"</Custom>
|
||||
<Custom Action="UnregisterPropertySilent" After="InstallInitialize">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL"</Custom>
|
||||
<Custom Action="UnregisterService" After="UnregisterProperty">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL" And UILevel>4</Custom>
|
||||
<Custom Action="UnregisterServiceSilently" After="UnregisterPropertySilent">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL" And UILevel<=4</Custom>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<!-- Installation root-->
|
||||
<Directory Id='TARGETDIR' Name='SourceDir'>
|
||||
<Directory Id='@PlatformProgramFilesFolder@'>
|
||||
<Directory Id='directory.MySQL' Name='MySQL'>
|
||||
<Directory Id='INSTALLDIR' Name='MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@'>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<!-- CPACK_WIX_FEATURES -->
|
||||
@CPACK_WIX_FEATURES@
|
||||
|
||||
<!-- CPACK_WIX_DIRECTORIES -->
|
||||
@CPACK_WIX_DIRECTORIES@
|
||||
|
||||
<!--CPACK_WIX_COMPONENTS-->
|
||||
@CPACK_WIX_COMPONENTS@
|
||||
|
||||
<!--CPACK_WIX_COMPONENTS_GROUPS -->
|
||||
@CPACK_WIX_COMPONENT_GROUPS@
|
||||
|
||||
<!--CPACK_WIX_INCLUDES -->
|
||||
@CPACK_WIX_INCLUDES@
|
||||
</Product>
|
||||
|
||||
</Wix>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
|
||||
<!--
|
||||
Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
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
|
||||
-->
|
||||
|
||||
<Product
|
||||
Id="*"
|
||||
UpgradeCode="49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3"
|
||||
Name="MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@"
|
||||
Version="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@"
|
||||
Language="1033"
|
||||
Manufacturer="@MANUFACTURER@">
|
||||
|
||||
<Package Id='*'
|
||||
Keywords='Installer'
|
||||
Description="MySQL Database Server"
|
||||
Manufacturer='@MANUFACTURER@'
|
||||
InstallerVersion='200'
|
||||
Languages='1033'
|
||||
Compressed='yes'
|
||||
SummaryCodepage='1252'
|
||||
Platform='@Platform@'
|
||||
InstallScope="perMachine"/>
|
||||
|
||||
<Media Id='1' Cabinet='product.cab' EmbedCab='yes' />
|
||||
|
||||
<!-- Upgrade -->
|
||||
<Upgrade Id="49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3">
|
||||
<UpgradeVersion
|
||||
Minimum="@MAJOR_VERSION@.@MINOR_VERSION@.0"
|
||||
IncludeMinimum="yes"
|
||||
Maximum="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@"
|
||||
IncludeMaximum="yes"
|
||||
Property="OLDERVERSIONBEINGUPGRADED"
|
||||
MigrateFeatures="yes"
|
||||
/>
|
||||
<UpgradeVersion
|
||||
Minimum="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@"
|
||||
IncludeMinimum="no"
|
||||
OnlyDetect="yes"
|
||||
Property="NEWERVERSIONDETECTED" />
|
||||
</Upgrade>
|
||||
<Condition Message="A later version of [ProductName] is already installed. Setup will now exit.">
|
||||
NOT NEWERVERSIONDETECTED OR Installed
|
||||
</Condition>
|
||||
<InstallExecuteSequence>
|
||||
<RemoveExistingProducts After="InstallInitialize"/>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<!-- Save/restore install location -->
|
||||
<CustomAction Id="SaveTargetDir" Property="ARPINSTALLLOCATION" Value="[INSTALLDIR]" />
|
||||
<InstallExecuteSequence>
|
||||
<Custom Action="SaveTargetDir" After="InstallValidate">
|
||||
NOT
|
||||
Installed
|
||||
</Custom>
|
||||
</InstallExecuteSequence>
|
||||
<InstallUISequence>
|
||||
<!-- App search is what does FindInstallLocation, and it is dependent on FindRelatedProducts -->
|
||||
<AppSearch After="FindRelatedProducts"/>
|
||||
</InstallUISequence>
|
||||
|
||||
<!-- Find previous installation -->
|
||||
<Property Id="INSTALLDIR">
|
||||
<RegistrySearch Id="FindInstallLocation"
|
||||
Root="HKLM"
|
||||
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
|
||||
Name="InstallLocation"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<?if @Platform@ != "x64" ?>
|
||||
<Property Id="OLDERVERSION">
|
||||
<RegistrySearch Id="FindOlderVersion"
|
||||
Root="HKLM"
|
||||
Win64 = "no"
|
||||
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
|
||||
Name="DisplayVersion"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<?else ?>
|
||||
<Property Id="OLDERVERSION">
|
||||
<RegistrySearch Id="FindOlderVersion"
|
||||
Root="HKLM"
|
||||
Win64 = "yes"
|
||||
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
|
||||
Name="DisplayVersion"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<?endif ?>
|
||||
<Property Id="DATADIR">
|
||||
<RegistrySearch Id="FindDataDir"
|
||||
Root="HKLM"
|
||||
Key="SOFTWARE\MySQL AB\[ProductName]"
|
||||
Name="DataLocation"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<Property Id="INSTALLDIR2">
|
||||
<RegistrySearch Id="FindInstallLocation2"
|
||||
Root="HKLM"
|
||||
Key="SOFTWARE\MySQL AB\[ProductName]"
|
||||
Name="Location"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<CustomAction Id="SetInstallDir2" Property="INSTALLDIR" Value="[INSTALLDIR2]" />
|
||||
<InstallUISequence>
|
||||
<Custom Action="SetInstallDir2" After="AppSearch">INSTALLDIR2</Custom>
|
||||
</InstallUISequence>
|
||||
|
||||
|
||||
<!-- UI -->
|
||||
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"></Property>
|
||||
<UIRef Id="@CPACK_WIX_UI@" />
|
||||
<UIRef Id="WixUI_ErrorProgressText" />
|
||||
<WixVariable
|
||||
Id="WixUIBannerBmp"
|
||||
Value="@CMAKE_CURRENT_SOURCE_DIR@/AdminHeader.jpg" />
|
||||
<WixVariable
|
||||
Id="WixUIDialogBmp"
|
||||
Value="@CMAKE_CURRENT_SOURCE_DIR@/AdminBackground.jpg" />
|
||||
<Icon
|
||||
Id="icon.ico"
|
||||
SourceFile="@CMAKE_CURRENT_SOURCE_DIR@/MySQLServer.ico"/>
|
||||
<Property
|
||||
Id="ARPPRODUCTICON"
|
||||
Value="icon.ico" />
|
||||
|
||||
<!-- License -->
|
||||
<WixVariable
|
||||
Id="WixUILicenseRtf"
|
||||
Value="@COPYING_RTF@"/>
|
||||
|
||||
<!-- How to remove the service on uninstall -->
|
||||
<Binary Id='wixca.dll' SourceFile='@WIXCA_LOCATION@' />
|
||||
<CustomAction Id="UnregisterProperty" Property="UnregisterService" Value="[INSTALLDIR]" Return="check" />
|
||||
<CustomAction Id="UnregisterPropertySilent" Property="UnregisterServiceSilently" Value="[INSTALLDIR]" Return="check" />
|
||||
<CustomAction Id="UnregisterService"
|
||||
BinaryKey="wixca.dll"
|
||||
DllEntry="RemoveService"
|
||||
Execute="deferred"
|
||||
Impersonate="no"
|
||||
Return="check" />
|
||||
<CustomAction Id="UnregisterServiceSilently"
|
||||
BinaryKey="wixca.dll"
|
||||
DllEntry="RemoveServiceNoninteractive"
|
||||
Execute="deferred"
|
||||
Impersonate="no"
|
||||
Return="check" />
|
||||
<InstallExecuteSequence>
|
||||
<Custom Action="UnregisterProperty" After="InstallInitialize">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL"</Custom>
|
||||
<Custom Action="UnregisterPropertySilent" After="InstallInitialize">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL"</Custom>
|
||||
<Custom Action="UnregisterService" After="UnregisterProperty">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL" And UILevel>4</Custom>
|
||||
<Custom Action="UnregisterServiceSilently" After="UnregisterPropertySilent">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL" And UILevel<=4</Custom>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<!-- Installation root-->
|
||||
<Directory Id='TARGETDIR' Name='SourceDir'>
|
||||
<Directory Id='@PlatformProgramFilesFolder@'>
|
||||
<Directory Id='directory.MySQL' Name='MySQL'>
|
||||
<Directory Id='INSTALLDIR' Name='MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@'>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<!-- CPACK_WIX_FEATURES -->
|
||||
@CPACK_WIX_FEATURES@
|
||||
|
||||
<!-- CPACK_WIX_DIRECTORIES -->
|
||||
@CPACK_WIX_DIRECTORIES@
|
||||
|
||||
<!--CPACK_WIX_COMPONENTS-->
|
||||
@CPACK_WIX_COMPONENTS@
|
||||
|
||||
<!--CPACK_WIX_COMPONENTS_GROUPS -->
|
||||
@CPACK_WIX_COMPONENT_GROUPS@
|
||||
|
||||
<!--CPACK_WIX_INCLUDES -->
|
||||
@CPACK_WIX_INCLUDES@
|
||||
</Product>
|
||||
|
||||
</Wix>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# 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
|
||||
|
@ -370,7 +370,7 @@ Obsoletes: mariadb-embedded
|
|||
Obsoletes: MySQL-embedded < %{version}-%{release}
|
||||
Obsoletes: mysql-embedded < %{version}-%{release}
|
||||
Provides: mysql-embedded = %{version}-%{release}
|
||||
Provides: mysql-emdedded%{?_isa} = %{version}-%{release}
|
||||
Provides: mysql-embedded%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description embedded
|
||||
This package contains the MySQL server as an embedded library.
|
||||
|
|
|
@ -1128,6 +1128,8 @@ static size_t escape_string(const char *str, unsigned int len,
|
|||
*(result++)= '\\';
|
||||
*(result++)= '\\';
|
||||
}
|
||||
else if (is_space(*str))
|
||||
*(result++)= ' ';
|
||||
else
|
||||
*(result++)= *str;
|
||||
str++;
|
||||
|
@ -1183,9 +1185,15 @@ static size_t escape_string_hide_passwords(const char *str, unsigned int len,
|
|||
for (c=0; c<d_len; c++)
|
||||
result[c]= is_space(str[c]) ? ' ' : str[c];
|
||||
|
||||
memmove(result + d_len, "*****", 5);
|
||||
result+= d_len + 5;
|
||||
b_char= *(next_s++);
|
||||
if (*next_s)
|
||||
{
|
||||
memmove(result + d_len, "*****", 5);
|
||||
result+= d_len + 5;
|
||||
b_char= *(next_s++);
|
||||
}
|
||||
else
|
||||
result+= d_len;
|
||||
|
||||
while (*next_s)
|
||||
{
|
||||
if (*next_s == b_char)
|
||||
|
|
|
@ -1848,6 +1848,7 @@ mysql_ssl_set(MYSQL *mysql __attribute__((unused)) ,
|
|||
mysql_options(mysql, MYSQL_OPT_SSL_CAPATH, capath) |
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_CIPHER, cipher) ?
|
||||
1 : 0);
|
||||
mysql->options.use_ssl= TRUE;
|
||||
#endif /* HAVE_OPENSSL && !EMBEDDED_LIBRARY */
|
||||
DBUG_RETURN(result);
|
||||
}
|
||||
|
@ -2652,16 +2653,10 @@ static int send_client_reply_packet(MCPVIO_EXT *mpvio,
|
|||
mysql->client_flag|= CLIENT_MULTI_RESULTS;
|
||||
|
||||
#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
|
||||
if (mysql->options.ssl_key || mysql->options.ssl_cert ||
|
||||
mysql->options.ssl_ca || mysql->options.ssl_capath ||
|
||||
mysql->options.ssl_cipher ||
|
||||
(mysql->options.extension &&
|
||||
(mysql->options.extension->ssl_crl ||
|
||||
mysql->options.extension->ssl_crlpath)))
|
||||
mysql->options.use_ssl= 1;
|
||||
if (mysql->options.use_ssl)
|
||||
mysql->client_flag|= CLIENT_SSL;
|
||||
#endif /* HAVE_OPENSSL && !EMBEDDED_LIBRARY*/
|
||||
|
||||
if (mpvio->db)
|
||||
mysql->client_flag|= CLIENT_CONNECT_WITH_DB;
|
||||
|
||||
|
@ -2690,6 +2685,23 @@ static int send_client_reply_packet(MCPVIO_EXT *mpvio,
|
|||
end= buff+5;
|
||||
}
|
||||
#ifdef HAVE_OPENSSL
|
||||
|
||||
/*
|
||||
If client uses ssl and client also has to verify the server
|
||||
certificate, a ssl connection is required.
|
||||
If the server does not support ssl, we abort the connection.
|
||||
*/
|
||||
if (mysql->options.use_ssl &&
|
||||
(mysql->client_flag & CLIENT_SSL_VERIFY_SERVER_CERT) &&
|
||||
!(mysql->server_capabilities & CLIENT_SSL))
|
||||
{
|
||||
set_mysql_extended_error(mysql, CR_SSL_CONNECTION_ERROR, unknown_sqlstate,
|
||||
ER(CR_SSL_CONNECTION_ERROR),
|
||||
"SSL is required, but the server does not "
|
||||
"support it");
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (mysql->client_flag & CLIENT_SSL)
|
||||
{
|
||||
/* Do the SSL layering. */
|
||||
|
|
10
sql/field.cc
10
sql/field.cc
|
@ -2633,7 +2633,7 @@ void Field_decimal::sql_type(String &res) const
|
|||
if (dec)
|
||||
tmp--;
|
||||
res.length(cs->cset->snprintf(cs,(char*) res.ptr(),res.alloced_length(),
|
||||
"decimal(%d,%d)",tmp,dec));
|
||||
"decimal(%d,%d)/*old*/",tmp,dec));
|
||||
add_zerofill_and_unsigned(res);
|
||||
}
|
||||
|
||||
|
@ -7923,6 +7923,14 @@ err_exit:
|
|||
return -1;
|
||||
}
|
||||
|
||||
Field::geometry_type Field_geom::geometry_type_merge(geometry_type a,
|
||||
geometry_type b)
|
||||
{
|
||||
if (a == b)
|
||||
return a;
|
||||
return Field::GEOM_GEOMETRY;
|
||||
}
|
||||
|
||||
#endif /*HAVE_SPATIAL*/
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
@ -2591,6 +2591,7 @@ public:
|
|||
int reset(void) { return Field_blob::reset() || !maybe_null(); }
|
||||
|
||||
geometry_type get_geometry_type() { return geom_type; };
|
||||
static geometry_type geometry_type_merge(geometry_type, geometry_type);
|
||||
};
|
||||
#endif /*HAVE_SPATIAL*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Copyright (c) 2000, 2014, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2014, Monty Program Ab.
|
||||
/* Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2015, MariaDB
|
||||
|
||||
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
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
/* Copyright (c) 2006, 2013, Oracle and/or its affiliates.
|
||||
Copyright (c) 2012, 2013, Monty Proram Ab.
|
||||
/* Copyright (c) 2006, 2015, 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
|
||||
|
@ -2529,7 +2528,8 @@ ndbcluster_check_if_local_tables_in_db(THD *thd, const char *dbname)
|
|||
char path[FN_REFLEN + 1];
|
||||
|
||||
build_table_filename(path, sizeof(path) - 1, dbname, "", "", 0);
|
||||
if (find_files(thd, &files, dbname, path, NullS, 0) != FIND_FILES_OK)
|
||||
if (find_files(thd, &files, dbname, path, NullS, 0, NULL) !=
|
||||
FIND_FILES_OK)
|
||||
{
|
||||
DBUG_PRINT("info", ("Failed to find files"));
|
||||
DBUG_RETURN(true);
|
||||
|
|
41
sql/item.cc
41
sql/item.cc
|
@ -1178,6 +1178,42 @@ Item *Item::safe_charset_converter(CHARSET_INFO *tocs)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Some pieces of the code do not support changing of
|
||||
Item_cache to other Item types.
|
||||
|
||||
Example:
|
||||
Item_singlerow_subselect has "Item_cache **row".
|
||||
Creating of Item_func_conv_charset followed by THD::change_item_tree()
|
||||
should not change row[i] from Item_cache directly to Item_func_conv_charset, because Item_singlerow_subselect
|
||||
because Item_singlerow_subselect later calls Item_cache-specific methods,
|
||||
e.g. row[i]->store() and row[i]->cache_value().
|
||||
|
||||
Let's wrap Item_func_conv_charset in a new Item_cache,
|
||||
so the Item_cache-specific methods can still be used for
|
||||
Item_singlerow_subselect::row[i] safely.
|
||||
|
||||
As a bonus we cache the converted value, instead of converting every time
|
||||
|
||||
TODO: we should eventually check all other use cases of change_item_tree().
|
||||
Perhaps some more potentially dangerous substitution examples exist.
|
||||
*/
|
||||
Item *Item_cache::safe_charset_converter(CHARSET_INFO *tocs)
|
||||
{
|
||||
if (!example)
|
||||
return Item::safe_charset_converter(tocs);
|
||||
Item *conv= example->safe_charset_converter(tocs);
|
||||
if (conv == example)
|
||||
return this;
|
||||
Item_cache *cache;
|
||||
if (!conv || !(cache= new Item_cache_str(conv)))
|
||||
return NULL; // Safe conversion is not possible, or OEM
|
||||
cache->setup(conv);
|
||||
cache->fixed= false; // Make Item::fix_fields() happy
|
||||
return cache;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@details
|
||||
Created mostly for mysql_prepare_table(). Important
|
||||
|
@ -9471,6 +9507,11 @@ bool Item_type_holder::join_types(THD *thd, Item *item)
|
|||
item_decimals= 0;
|
||||
decimals= MY_MAX(decimals, item_decimals);
|
||||
}
|
||||
|
||||
if (fld_type == FIELD_TYPE_GEOMETRY)
|
||||
geometry_type=
|
||||
Field_geom::geometry_type_merge(geometry_type, item->get_geometry_type());
|
||||
|
||||
if (Field::result_merge_type(fld_type) == DECIMAL_RESULT)
|
||||
{
|
||||
decimals= MY_MIN(MY_MAX(decimals, item->decimals), DECIMAL_MAX_SCALE);
|
||||
|
|
|
@ -4477,7 +4477,6 @@ class Item_cache: public Item_basic_constant
|
|||
{
|
||||
protected:
|
||||
Item *example;
|
||||
table_map used_table_map;
|
||||
/**
|
||||
Field that this object will get value from. This is used by
|
||||
index-based subquery engines to detect and remove the equality injected
|
||||
|
@ -4495,7 +4494,7 @@ protected:
|
|||
bool value_cached;
|
||||
public:
|
||||
Item_cache():
|
||||
example(0), used_table_map(0), cached_field(0),
|
||||
example(0), cached_field(0),
|
||||
cached_field_type(MYSQL_TYPE_STRING),
|
||||
value_cached(0)
|
||||
{
|
||||
|
@ -4504,7 +4503,7 @@ public:
|
|||
null_value= 1;
|
||||
}
|
||||
Item_cache(enum_field_types field_type_arg):
|
||||
example(0), used_table_map(0), cached_field(0),
|
||||
example(0), cached_field(0),
|
||||
cached_field_type(field_type_arg),
|
||||
value_cached(0)
|
||||
{
|
||||
|
@ -4513,8 +4512,6 @@ public:
|
|||
null_value= 1;
|
||||
}
|
||||
|
||||
void set_used_tables(table_map map) { used_table_map= map; }
|
||||
|
||||
virtual bool allocate(uint i) { return 0; }
|
||||
virtual bool setup(Item *item)
|
||||
{
|
||||
|
@ -4531,7 +4528,6 @@ public:
|
|||
enum_field_types field_type() const { return cached_field_type; }
|
||||
static Item_cache* get_cache(const Item *item);
|
||||
static Item_cache* get_cache(const Item* item, const Item_result type);
|
||||
table_map used_tables() const { return used_table_map; }
|
||||
virtual void keep_array() {}
|
||||
virtual void print(String *str, enum_query_type query_type);
|
||||
bool eq_def(Field *field)
|
||||
|
@ -4582,6 +4578,7 @@ public:
|
|||
return TRUE;
|
||||
return (this->*processor)(arg);
|
||||
}
|
||||
virtual Item *safe_charset_converter(CHARSET_INFO *tocs);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -5122,6 +5122,16 @@ null:
|
|||
|
||||
void Item_dyncol_get::print(String *str, enum_query_type query_type)
|
||||
{
|
||||
/*
|
||||
Parent cast doesn't exist yet, only print dynamic column name. This happens
|
||||
when called from create_func_cast() / wrong_precision_error().
|
||||
*/
|
||||
if (!str->length())
|
||||
{
|
||||
args[1]->print(str, query_type);
|
||||
return;
|
||||
}
|
||||
|
||||
/* see create_func_dyncol_get */
|
||||
DBUG_ASSERT(str->length() >= 5);
|
||||
DBUG_ASSERT(strncmp(str->ptr() + str->length() - 5, "cast(", 5) == 0);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
||||
Copyright (c) 2008, 2014, SkySQL Ab.
|
||||
/* Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2008, 2015, MariaDB
|
||||
|
||||
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
|
||||
|
@ -3311,7 +3311,19 @@ void Item_func_group_concat::cleanup()
|
|||
}
|
||||
DBUG_ASSERT(tree == 0);
|
||||
}
|
||||
|
||||
/*
|
||||
As the ORDER structures pointed to by the elements of the
|
||||
'order' array may be modified in find_order_in_list() called
|
||||
from Item_func_group_concat::setup() to point to runtime
|
||||
created objects, we need to reset them back to the original
|
||||
arguments of the function.
|
||||
*/
|
||||
ORDER **order_ptr= order;
|
||||
for (uint i= 0; i < arg_count_order; i++)
|
||||
{
|
||||
(*order_ptr)->item= &args[arg_count_field + i];
|
||||
order_ptr++;
|
||||
}
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
|
|
@ -990,11 +990,9 @@ uint purge_log_get_error_code(int res);
|
|||
|
||||
int vprint_msg_to_log(enum loglevel level, const char *format, va_list args);
|
||||
void sql_print_error(const char *format, ...);
|
||||
void sql_print_warning(const char *format, ...) ATTRIBUTE_FORMAT(printf, 1, 2);
|
||||
void sql_print_information(const char *format, ...)
|
||||
ATTRIBUTE_FORMAT(printf, 1, 2);
|
||||
typedef void (*sql_print_message_func)(const char *format, ...)
|
||||
ATTRIBUTE_FORMAT_FPTR(printf, 1, 2);
|
||||
void sql_print_warning(const char *format, ...);
|
||||
void sql_print_information(const char *format, ...);
|
||||
typedef void (*sql_print_message_func)(const char *format, ...);
|
||||
extern sql_print_message_func sql_print_message_handlers[];
|
||||
|
||||
int error_log_print(enum loglevel level, const char *format,
|
||||
|
|
|
@ -2406,6 +2406,12 @@ log_event_print_value(IO_CACHE *file, const uchar *ptr,
|
|||
my_snprintf(typestr, typestr_length, "STRING(%d)", length);
|
||||
return my_b_write_quoted_with_length(file, ptr, length);
|
||||
|
||||
case MYSQL_TYPE_DECIMAL:
|
||||
my_b_printf(file,
|
||||
"!! Old DECIMAL (mysql-4.1 or earlier). "
|
||||
"Not enough metadata to display the value. ");
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
char tmp[5];
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
LANGUAGE 0x9,0x1
|
||||
1 11 MSG00001.bin
|
||||
LANGUAGE 0x9,0x1
|
||||
1 11 MSG00001.bin
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue