mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge branch '10.2' into bb-10.2-ext
This commit is contained in:
@ -363,7 +363,7 @@ ENDIF()
|
|||||||
|
|
||||||
SET (MYSQLD_STATIC_PLUGIN_LIBS "" CACHE INTERNAL "")
|
SET (MYSQLD_STATIC_PLUGIN_LIBS "" CACHE INTERNAL "")
|
||||||
|
|
||||||
# mariadb_connector_c fetches submodules which is useful for plugins
|
INCLUDE(submodules)
|
||||||
INCLUDE(mariadb_connector_c) # this does ADD_SUBDIRECTORY(libmariadb)
|
INCLUDE(mariadb_connector_c) # this does ADD_SUBDIRECTORY(libmariadb)
|
||||||
|
|
||||||
# Add storage engines and plugins.
|
# Add storage engines and plugins.
|
||||||
@ -460,7 +460,6 @@ INSTALL_DOCUMENTATION(README.md CREDITS COPYING COPYING.thirdparty
|
|||||||
# ${CMAKE_BINARY_DIR}/Docs/INFO_BIN)
|
# ${CMAKE_BINARY_DIR}/Docs/INFO_BIN)
|
||||||
|
|
||||||
IF(UNIX)
|
IF(UNIX)
|
||||||
INSTALL_DOCUMENTATION(Docs/INSTALL-BINARY COMPONENT Readme)
|
|
||||||
INSTALL_DOCUMENTATION(Docs/INSTALL-BINARY Docs/README-wsrep COMPONENT Readme)
|
INSTALL_DOCUMENTATION(Docs/INSTALL-BINARY Docs/README-wsrep COMPONENT Readme)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Please read the CREDITS file for details about the MariaDB Foundation,
|
|||||||
and who is developing MariaDB.
|
and who is developing MariaDB.
|
||||||
|
|
||||||
MariaDB is developed by many of the original developers of MySQL who
|
MariaDB is developed by many of the original developers of MySQL who
|
||||||
now work for the MariadB Foundation and the MariaDB Corporation, and by many people in
|
now work for the MariaDB Foundation and the MariaDB Corporation, and by many people in
|
||||||
the community.
|
the community.
|
||||||
|
|
||||||
MySQL, which is the base of MariaDB, is a product and trademark of Oracle
|
MySQL, which is the base of MariaDB, is a product and trademark of Oracle
|
||||||
|
2
VERSION
2
VERSION
@ -1,3 +1,3 @@
|
|||||||
MYSQL_VERSION_MAJOR=10
|
MYSQL_VERSION_MAJOR=10
|
||||||
MYSQL_VERSION_MINOR=2
|
MYSQL_VERSION_MINOR=2
|
||||||
MYSQL_VERSION_PATCH=8
|
MYSQL_VERSION_PATCH=9
|
||||||
|
@ -149,7 +149,7 @@ static my_bool ignore_errors=0,wait_flag=0,quick=0,
|
|||||||
default_pager_set= 0, opt_sigint_ignore= 0,
|
default_pager_set= 0, opt_sigint_ignore= 0,
|
||||||
auto_vertical_output= 0,
|
auto_vertical_output= 0,
|
||||||
show_warnings= 0, executing_query= 0,
|
show_warnings= 0, executing_query= 0,
|
||||||
ignore_spaces= 0, opt_progress_reports;
|
ignore_spaces= 0, opt_binhex= 0, opt_progress_reports;
|
||||||
static my_bool debug_info_flag, debug_check_flag, batch_abort_on_error;
|
static my_bool debug_info_flag, debug_check_flag, batch_abort_on_error;
|
||||||
static my_bool column_types_flag;
|
static my_bool column_types_flag;
|
||||||
static my_bool preserve_comments= 0;
|
static my_bool preserve_comments= 0;
|
||||||
@ -1496,6 +1496,8 @@ static struct my_option my_long_options[] =
|
|||||||
{"batch", 'B',
|
{"batch", 'B',
|
||||||
"Don't use history file. Disable interactive behavior. (Enables --silent.)",
|
"Don't use history file. Disable interactive behavior. (Enables --silent.)",
|
||||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"binary-as-hex", 'b', "Print binary data as hex", &opt_binhex, &opt_binhex,
|
||||||
|
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"character-sets-dir", OPT_CHARSETS_DIR,
|
{"character-sets-dir", OPT_CHARSETS_DIR,
|
||||||
"Directory for character set files.", &charsets_dir,
|
"Directory for character set files.", &charsets_dir,
|
||||||
&charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
&charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
@ -3318,7 +3320,8 @@ com_go(String *buffer,char *line __attribute__((unused)))
|
|||||||
print_table_data_html(result);
|
print_table_data_html(result);
|
||||||
else if (opt_xml)
|
else if (opt_xml)
|
||||||
print_table_data_xml(result);
|
print_table_data_xml(result);
|
||||||
else if (vertical || (auto_vertical_output && (terminal_width < get_result_width(result))))
|
else if (vertical || (auto_vertical_output &&
|
||||||
|
(terminal_width < get_result_width(result))))
|
||||||
print_table_data_vertically(result);
|
print_table_data_vertically(result);
|
||||||
else if (opt_silent && verbose <= 2 && !output_tables)
|
else if (opt_silent && verbose <= 2 && !output_tables)
|
||||||
print_tab_data(result);
|
print_tab_data(result);
|
||||||
@ -3536,6 +3539,41 @@ print_field_types(MYSQL_RES *result)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Used to determine if we should invoke print_as_hex for this field */
|
||||||
|
|
||||||
|
static bool
|
||||||
|
is_binary_field(MYSQL_FIELD *field)
|
||||||
|
{
|
||||||
|
if ((field->charsetnr == 63) &&
|
||||||
|
(field->type == MYSQL_TYPE_BIT ||
|
||||||
|
field->type == MYSQL_TYPE_BLOB ||
|
||||||
|
field->type == MYSQL_TYPE_LONG_BLOB ||
|
||||||
|
field->type == MYSQL_TYPE_MEDIUM_BLOB ||
|
||||||
|
field->type == MYSQL_TYPE_TINY_BLOB ||
|
||||||
|
field->type == MYSQL_TYPE_VAR_STRING ||
|
||||||
|
field->type == MYSQL_TYPE_STRING ||
|
||||||
|
field->type == MYSQL_TYPE_VARCHAR ||
|
||||||
|
field->type == MYSQL_TYPE_GEOMETRY))
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Print binary value as hex literal (0x ...) */
|
||||||
|
|
||||||
|
static void
|
||||||
|
print_as_hex(FILE *output_file, const char *str, ulong len, ulong total_bytes_to_send)
|
||||||
|
{
|
||||||
|
const char *ptr= str, *end= ptr+len;
|
||||||
|
ulong i;
|
||||||
|
fprintf(output_file, "0x");
|
||||||
|
for(; ptr < end; ptr++)
|
||||||
|
fprintf(output_file, "%02X", *((uchar*)ptr));
|
||||||
|
for (i= 2*len+2; i < total_bytes_to_send; i++)
|
||||||
|
tee_putc((int)' ', output_file);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
print_table_data(MYSQL_RES *result)
|
print_table_data(MYSQL_RES *result)
|
||||||
{
|
{
|
||||||
@ -3562,6 +3600,8 @@ print_table_data(MYSQL_RES *result)
|
|||||||
length= MY_MAX(length,field->max_length);
|
length= MY_MAX(length,field->max_length);
|
||||||
if (length < 4 && !IS_NOT_NULL(field->flags))
|
if (length < 4 && !IS_NOT_NULL(field->flags))
|
||||||
length=4; // Room for "NULL"
|
length=4; // Room for "NULL"
|
||||||
|
if (opt_binhex && is_binary_field(field))
|
||||||
|
length= 2 + length * 2;
|
||||||
field->max_length=length;
|
field->max_length=length;
|
||||||
num_flag[mysql_field_tell(result) - 1]= IS_NUM(field->type);
|
num_flag[mysql_field_tell(result) - 1]= IS_NUM(field->type);
|
||||||
separator.fill(separator.length()+length+2,'-');
|
separator.fill(separator.length()+length+2,'-');
|
||||||
@ -3629,9 +3669,11 @@ print_table_data(MYSQL_RES *result)
|
|||||||
many extra padding-characters we should send with the printing function.
|
many extra padding-characters we should send with the printing function.
|
||||||
*/
|
*/
|
||||||
visible_length= charset_info->cset->numcells(charset_info, buffer, buffer + data_length);
|
visible_length= charset_info->cset->numcells(charset_info, buffer, buffer + data_length);
|
||||||
extra_padding= data_length - visible_length;
|
extra_padding= (uint) (data_length - visible_length);
|
||||||
|
|
||||||
if (field_max_length > MAX_COLUMN_LENGTH)
|
if (opt_binhex && is_binary_field(field))
|
||||||
|
print_as_hex(PAGER, cur[off], lengths[off], field_max_length);
|
||||||
|
else if (field_max_length > MAX_COLUMN_LENGTH)
|
||||||
tee_print_sized_data(buffer, data_length, MAX_COLUMN_LENGTH+extra_padding, FALSE);
|
tee_print_sized_data(buffer, data_length, MAX_COLUMN_LENGTH+extra_padding, FALSE);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3765,10 +3807,14 @@ print_table_data_html(MYSQL_RES *result)
|
|||||||
if (interrupted_query)
|
if (interrupted_query)
|
||||||
break;
|
break;
|
||||||
ulong *lengths=mysql_fetch_lengths(result);
|
ulong *lengths=mysql_fetch_lengths(result);
|
||||||
|
field= mysql_fetch_fields(result);
|
||||||
(void) tee_fputs("<TR>", PAGER);
|
(void) tee_fputs("<TR>", PAGER);
|
||||||
for (uint i=0; i < mysql_num_fields(result); i++)
|
for (uint i=0; i < mysql_num_fields(result); i++)
|
||||||
{
|
{
|
||||||
(void) tee_fputs("<TD>", PAGER);
|
(void) tee_fputs("<TD>", PAGER);
|
||||||
|
if (opt_binhex && is_binary_field(&field[i]))
|
||||||
|
print_as_hex(PAGER, cur[i], lengths[i], lengths[i]);
|
||||||
|
else
|
||||||
xmlencode_print(cur[i], lengths[i]);
|
xmlencode_print(cur[i], lengths[i]);
|
||||||
(void) tee_fputs("</TD>", PAGER);
|
(void) tee_fputs("</TD>", PAGER);
|
||||||
}
|
}
|
||||||
@ -3805,6 +3851,9 @@ print_table_data_xml(MYSQL_RES *result)
|
|||||||
if (cur[i])
|
if (cur[i])
|
||||||
{
|
{
|
||||||
tee_fprintf(PAGER, "\">");
|
tee_fprintf(PAGER, "\">");
|
||||||
|
if (opt_binhex && is_binary_field(&fields[i]))
|
||||||
|
print_as_hex(PAGER, cur[i], lengths[i], lengths[i]);
|
||||||
|
else
|
||||||
xmlencode_print(cur[i], lengths[i]);
|
xmlencode_print(cur[i], lengths[i]);
|
||||||
tee_fprintf(PAGER, "</field>\n");
|
tee_fprintf(PAGER, "</field>\n");
|
||||||
}
|
}
|
||||||
@ -3852,14 +3901,20 @@ print_table_data_vertically(MYSQL_RES *result)
|
|||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
const char *p;
|
const char *p;
|
||||||
|
if (opt_binhex && is_binary_field(field))
|
||||||
|
fprintf(PAGER, "0x");
|
||||||
for (i= 0, p= cur[off]; i < lengths[off]; i+= 1, p+= 1)
|
for (i= 0, p= cur[off]; i < lengths[off]; i+= 1, p+= 1)
|
||||||
|
{
|
||||||
|
if (opt_binhex && is_binary_field(field))
|
||||||
|
fprintf(PAGER, "%02X", *((uchar*)p));
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if (*p == '\0')
|
if (*p == '\0')
|
||||||
tee_putc((int)' ', PAGER);
|
tee_putc((int)' ', PAGER);
|
||||||
else
|
else
|
||||||
tee_putc((int)*p, PAGER);
|
tee_putc((int)*p, PAGER);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
tee_putc('\n', PAGER);
|
tee_putc('\n', PAGER);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -3868,7 +3923,6 @@ print_table_data_vertically(MYSQL_RES *result)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* print_warnings should be called right after executing a statement */
|
/* print_warnings should be called right after executing a statement */
|
||||||
|
|
||||||
static void print_warnings()
|
static void print_warnings()
|
||||||
@ -4005,10 +4059,18 @@ print_tab_data(MYSQL_RES *result)
|
|||||||
while ((cur = mysql_fetch_row(result)))
|
while ((cur = mysql_fetch_row(result)))
|
||||||
{
|
{
|
||||||
lengths=mysql_fetch_lengths(result);
|
lengths=mysql_fetch_lengths(result);
|
||||||
|
field= mysql_fetch_fields(result);
|
||||||
|
if (opt_binhex && is_binary_field(&field[0]))
|
||||||
|
print_as_hex(PAGER, cur[0], lengths[0], lengths[0]);
|
||||||
|
else
|
||||||
safe_put_field(cur[0],lengths[0]);
|
safe_put_field(cur[0],lengths[0]);
|
||||||
|
|
||||||
for (uint off=1 ; off < mysql_num_fields(result); off++)
|
for (uint off=1 ; off < mysql_num_fields(result); off++)
|
||||||
{
|
{
|
||||||
(void) tee_fputs("\t", PAGER);
|
(void) tee_fputs("\t", PAGER);
|
||||||
|
if (opt_binhex && field && is_binary_field(&field[off]))
|
||||||
|
print_as_hex(PAGER, cur[off], lengths[off], lengths[off]);
|
||||||
|
else
|
||||||
safe_put_field(cur[off], lengths[off]);
|
safe_put_field(cur[off], lengths[off]);
|
||||||
}
|
}
|
||||||
(void) tee_fputs("\n", PAGER);
|
(void) tee_fputs("\n", PAGER);
|
||||||
|
@ -1,17 +1,3 @@
|
|||||||
IF(NOT EXISTS ${CMAKE_SOURCE_DIR}/libmariadb/CMakeLists.txt AND GIT_EXECUTABLE)
|
|
||||||
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule init
|
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
|
||||||
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule update
|
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
|
||||||
ENDIF()
|
|
||||||
IF(NOT EXISTS ${CMAKE_SOURCE_DIR}/libmariadb/CMakeLists.txt)
|
|
||||||
MESSAGE(FATAL_ERROR "No MariaDB Connector/C! Run
|
|
||||||
git submodule init
|
|
||||||
git submodule update
|
|
||||||
Then restart the build.
|
|
||||||
")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(OPT CONC_)
|
SET(OPT CONC_)
|
||||||
|
|
||||||
IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2009, 2012, Oracle and/or its affiliates.
|
||||||
|
# Copyright (c) 2011, 2017, MariaDB Corporation
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -124,7 +125,7 @@ MACRO (MYSQL_CHECK_SSL)
|
|||||||
SET(OPENSSL_ROOT_DIR ${WITH_SSL_PATH})
|
SET(OPENSSL_ROOT_DIR ${WITH_SSL_PATH})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
FIND_PACKAGE(OpenSSL 1.0.0)
|
FIND_PACKAGE(OpenSSL)
|
||||||
IF(OPENSSL_FOUND)
|
IF(OPENSSL_FOUND)
|
||||||
SET(OPENSSL_LIBRARY ${OPENSSL_SSL_LIBRARY})
|
SET(OPENSSL_LIBRARY ${OPENSSL_SSL_LIBRARY})
|
||||||
INCLUDE(CheckSymbolExists)
|
INCLUDE(CheckSymbolExists)
|
||||||
|
30
cmake/submodules.cmake
Normal file
30
cmake/submodules.cmake
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# update submodules automatically
|
||||||
|
IF(GIT_EXECUTABLE AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||||
|
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" config --get cmake.update-submodules
|
||||||
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||||
|
OUTPUT_VARIABLE cmake_update_submodules)
|
||||||
|
IF(cmake_update_submodules MATCHES no)
|
||||||
|
SET(update_result 0)
|
||||||
|
ELSEIF (cmake_update_submodules MATCHES force)
|
||||||
|
MESSAGE("-- Updating submodules (forced)")
|
||||||
|
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule update --init --force
|
||||||
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||||
|
RESULT_VARIABLE update_result)
|
||||||
|
ELSEIF (cmake_update_submodules MATCHES yes)
|
||||||
|
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule update --init
|
||||||
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||||
|
RESULT_VARIABLE update_result)
|
||||||
|
ELSE()
|
||||||
|
MESSAGE("-- Updating submodules")
|
||||||
|
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule update --init
|
||||||
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||||
|
RESULT_VARIABLE update_result)
|
||||||
|
ENDIF()
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
IF(update_result OR NOT EXISTS ${CMAKE_SOURCE_DIR}/libmariadb/CMakeLists.txt)
|
||||||
|
MESSAGE(FATAL_ERROR "No MariaDB Connector/C! Run
|
||||||
|
git submodule update --init
|
||||||
|
Then restart the build.
|
||||||
|
")
|
||||||
|
ENDIF()
|
@ -70,9 +70,11 @@ MACRO(CHECK_SYSTEMD)
|
|||||||
UNSET(HAVE_SYSTEMD_SD_NOTIFYF)
|
UNSET(HAVE_SYSTEMD_SD_NOTIFYF)
|
||||||
MESSAGE_ONCE(systemd "Systemd features not enabled")
|
MESSAGE_ONCE(systemd "Systemd features not enabled")
|
||||||
IF(WITH_SYSTEMD STREQUAL "yes")
|
IF(WITH_SYSTEMD STREQUAL "yes")
|
||||||
MESSAGE(FATAL_ERROR "Requested WITH_SYSTEMD=YES however no dependencies installed/found")
|
MESSAGE(FATAL_ERROR "Requested WITH_SYSTEMD=yes however no dependencies installed/found")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
ELSEIF(NOT WITH_SYSTEMD STREQUAL "no")
|
||||||
|
MESSAGE(FATAL_ERROR "Invalid value for WITH_SYSTEMD. Must be 'yes', 'no', or 'auto'.")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDMACRO()
|
ENDMACRO()
|
||||||
|
3
debian/libmariadb-dev.install
vendored
3
debian/libmariadb-dev.install
vendored
@ -1,6 +1,5 @@
|
|||||||
usr/bin/mysql_config
|
usr/bin/mysql_config
|
||||||
usr/include/mysql/*.h
|
usr/include/mysql
|
||||||
usr/include/mysql/psi/*.h
|
|
||||||
usr/lib/*/libmariadb.so
|
usr/lib/*/libmariadb.so
|
||||||
usr/lib/*/libmariadbclient.a
|
usr/lib/*/libmariadbclient.a
|
||||||
usr/lib/*/libmysqlservices.a
|
usr/lib/*/libmysqlservices.a
|
||||||
|
@ -1342,8 +1342,8 @@ out:
|
|||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
/** Start --backup */
|
||||||
backup_start()
|
bool backup_start()
|
||||||
{
|
{
|
||||||
if (!opt_no_lock) {
|
if (!opt_no_lock) {
|
||||||
if (opt_safe_slave_backup) {
|
if (opt_safe_slave_backup) {
|
||||||
@ -1418,9 +1418,8 @@ backup_start()
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Release resources after backup_start() */
|
||||||
bool
|
void backup_release()
|
||||||
backup_finish()
|
|
||||||
{
|
{
|
||||||
/* release all locks */
|
/* release all locks */
|
||||||
if (!opt_no_lock) {
|
if (!opt_no_lock) {
|
||||||
@ -1435,7 +1434,11 @@ backup_finish()
|
|||||||
xb_mysql_query(mysql_connection,
|
xb_mysql_query(mysql_connection,
|
||||||
"START SLAVE SQL_THREAD", false);
|
"START SLAVE SQL_THREAD", false);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Finish after backup_start() and backup_release() */
|
||||||
|
bool backup_finish()
|
||||||
|
{
|
||||||
/* Copy buffer pool dump or LRU dump */
|
/* Copy buffer pool dump or LRU dump */
|
||||||
if (!opt_rsync) {
|
if (!opt_rsync) {
|
||||||
if (buffer_pool_filename && file_exists(buffer_pool_filename)) {
|
if (buffer_pool_filename && file_exists(buffer_pool_filename)) {
|
||||||
|
@ -31,10 +31,12 @@ copy_file(ds_ctxt_t *datasink,
|
|||||||
const char *dst_file_path,
|
const char *dst_file_path,
|
||||||
uint thread_n);
|
uint thread_n);
|
||||||
|
|
||||||
bool
|
/** Start --backup */
|
||||||
backup_start();
|
bool backup_start();
|
||||||
bool
|
/** Release resources after backup_start() */
|
||||||
backup_finish();
|
void backup_release();
|
||||||
|
/** Finish after backup_start() and backup_release() */
|
||||||
|
bool backup_finish();
|
||||||
bool
|
bool
|
||||||
apply_log_finish();
|
apply_log_finish();
|
||||||
bool
|
bool
|
||||||
|
@ -575,7 +575,6 @@ bool
|
|||||||
select_incremental_lsn_from_history(lsn_t *incremental_lsn)
|
select_incremental_lsn_from_history(lsn_t *incremental_lsn)
|
||||||
{
|
{
|
||||||
MYSQL_RES *mysql_result;
|
MYSQL_RES *mysql_result;
|
||||||
MYSQL_ROW row;
|
|
||||||
char query[1000];
|
char query[1000];
|
||||||
char buf[100];
|
char buf[100];
|
||||||
|
|
||||||
@ -608,27 +607,27 @@ select_incremental_lsn_from_history(lsn_t *incremental_lsn)
|
|||||||
mysql_result = xb_mysql_query(mysql_connection, query, true);
|
mysql_result = xb_mysql_query(mysql_connection, query, true);
|
||||||
|
|
||||||
ut_ad(mysql_num_fields(mysql_result) == 1);
|
ut_ad(mysql_num_fields(mysql_result) == 1);
|
||||||
if (!(row = mysql_fetch_row(mysql_result))) {
|
const MYSQL_ROW row = mysql_fetch_row(mysql_result);
|
||||||
|
if (row) {
|
||||||
|
*incremental_lsn = strtoull(row[0], NULL, 10);
|
||||||
|
msg("Found and using lsn: " LSN_PF " for %s %s\n",
|
||||||
|
*incremental_lsn,
|
||||||
|
opt_incremental_history_uuid ? "uuid" : "name",
|
||||||
|
opt_incremental_history_uuid ?
|
||||||
|
opt_incremental_history_uuid :
|
||||||
|
opt_incremental_history_name);
|
||||||
|
} else {
|
||||||
msg("Error while attempting to find history record "
|
msg("Error while attempting to find history record "
|
||||||
"for %s %s\n",
|
"for %s %s\n",
|
||||||
opt_incremental_history_uuid ? "uuid" : "name",
|
opt_incremental_history_uuid ? "uuid" : "name",
|
||||||
opt_incremental_history_uuid ?
|
opt_incremental_history_uuid ?
|
||||||
opt_incremental_history_uuid :
|
opt_incremental_history_uuid :
|
||||||
opt_incremental_history_name);
|
opt_incremental_history_name);
|
||||||
return(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*incremental_lsn = strtoull(row[0], NULL, 10);
|
|
||||||
|
|
||||||
mysql_free_result(mysql_result);
|
mysql_free_result(mysql_result);
|
||||||
|
|
||||||
msg("Found and using lsn: " LSN_PF " for %s %s\n", *incremental_lsn,
|
return(row != NULL);
|
||||||
opt_incremental_history_uuid ? "uuid" : "name",
|
|
||||||
opt_incremental_history_uuid ?
|
|
||||||
opt_incremental_history_uuid :
|
|
||||||
opt_incremental_history_name);
|
|
||||||
|
|
||||||
return(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
@ -715,14 +714,12 @@ static
|
|||||||
bool
|
bool
|
||||||
have_queries_to_wait_for(MYSQL *connection, uint threshold)
|
have_queries_to_wait_for(MYSQL *connection, uint threshold)
|
||||||
{
|
{
|
||||||
MYSQL_RES *result;
|
MYSQL_RES *result = xb_mysql_query(connection, "SHOW FULL PROCESSLIST",
|
||||||
MYSQL_ROW row;
|
true);
|
||||||
bool all_queries;
|
const bool all_queries = (opt_lock_wait_query_type == QUERY_TYPE_ALL);
|
||||||
|
bool have_to_wait = false;
|
||||||
|
|
||||||
result = xb_mysql_query(connection, "SHOW FULL PROCESSLIST", true);
|
while (MYSQL_ROW row = mysql_fetch_row(result)) {
|
||||||
|
|
||||||
all_queries = (opt_lock_wait_query_type == QUERY_TYPE_ALL);
|
|
||||||
while ((row = mysql_fetch_row(result)) != NULL) {
|
|
||||||
const char *info = row[7];
|
const char *info = row[7];
|
||||||
int duration = row[5] ? atoi(row[5]) : 0;
|
int duration = row[5] ? atoi(row[5]) : 0;
|
||||||
char *id = row[0];
|
char *id = row[0];
|
||||||
@ -733,26 +730,25 @@ have_queries_to_wait_for(MYSQL *connection, uint threshold)
|
|||||||
|| is_update_query(info))) {
|
|| is_update_query(info))) {
|
||||||
msg_ts("Waiting for query %s (duration %d sec): %s",
|
msg_ts("Waiting for query %s (duration %d sec): %s",
|
||||||
id, duration, info);
|
id, duration, info);
|
||||||
return(true);
|
have_to_wait = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return(false);
|
mysql_free_result(result);
|
||||||
|
return(have_to_wait);
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
void
|
void
|
||||||
kill_long_queries(MYSQL *connection, time_t timeout)
|
kill_long_queries(MYSQL *connection, time_t timeout)
|
||||||
{
|
{
|
||||||
MYSQL_RES *result;
|
|
||||||
MYSQL_ROW row;
|
|
||||||
bool all_queries;
|
|
||||||
char kill_stmt[100];
|
char kill_stmt[100];
|
||||||
|
|
||||||
result = xb_mysql_query(connection, "SHOW FULL PROCESSLIST", true);
|
MYSQL_RES *result = xb_mysql_query(connection, "SHOW FULL PROCESSLIST",
|
||||||
|
true);
|
||||||
all_queries = (opt_kill_long_query_type == QUERY_TYPE_ALL);
|
const bool all_queries = (opt_kill_long_query_type == QUERY_TYPE_ALL);
|
||||||
while ((row = mysql_fetch_row(result)) != NULL) {
|
while (MYSQL_ROW row = mysql_fetch_row(result)) {
|
||||||
const char *info = row[7];
|
const char *info = row[7];
|
||||||
long long duration = row[5]? atoll(row[5]) : 0;
|
long long duration = row[5]? atoll(row[5]) : 0;
|
||||||
char *id = row[0];
|
char *id = row[0];
|
||||||
@ -768,6 +764,8 @@ kill_long_queries(MYSQL *connection, time_t timeout)
|
|||||||
xb_mysql_query(connection, kill_stmt, false, false);
|
xb_mysql_query(connection, kill_stmt, false, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mysql_free_result(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
|
@ -159,7 +159,7 @@ xb_fil_cur_open(
|
|||||||
/* In the backup mode we should already have a tablespace handle created
|
/* In the backup mode we should already have a tablespace handle created
|
||||||
by fil_ibd_load() unless it is a system
|
by fil_ibd_load() unless it is a system
|
||||||
tablespace. Otherwise we open the file here. */
|
tablespace. Otherwise we open the file here. */
|
||||||
if (cursor->is_system() || srv_operation == SRV_OPERATION_RESTORE
|
if (cursor->is_system() || srv_operation == SRV_OPERATION_RESTORE_DELTA
|
||||||
|| xb_close_files) {
|
|| xb_close_files) {
|
||||||
node->handle = os_file_create_simple_no_error_handling(
|
node->handle = os_file_create_simple_no_error_handling(
|
||||||
0, node->name,
|
0, node->name,
|
||||||
|
@ -2238,7 +2238,7 @@ xtrabackup_copy_log(copy_logfile copy, lsn_t start_lsn, lsn_t end_lsn)
|
|||||||
|
|
||||||
end_lsn = copy == COPY_LAST
|
end_lsn = copy == COPY_LAST
|
||||||
? ut_uint64_align_up(scanned_lsn, OS_FILE_LOG_BLOCK_SIZE)
|
? ut_uint64_align_up(scanned_lsn, OS_FILE_LOG_BLOCK_SIZE)
|
||||||
: scanned_lsn & ~(OS_FILE_LOG_BLOCK_SIZE - 1);
|
: scanned_lsn & ~lsn_t(OS_FILE_LOG_BLOCK_SIZE - 1);
|
||||||
|
|
||||||
if (ulint write_size = ulint(end_lsn - start_lsn)) {
|
if (ulint write_size = ulint(end_lsn - start_lsn)) {
|
||||||
if (srv_encrypt_log) {
|
if (srv_encrypt_log) {
|
||||||
@ -2517,9 +2517,11 @@ xb_load_single_table_tablespace(
|
|||||||
const char *filname,
|
const char *filname,
|
||||||
bool is_remote)
|
bool is_remote)
|
||||||
{
|
{
|
||||||
|
ut_ad(srv_operation == SRV_OPERATION_BACKUP
|
||||||
|
|| srv_operation == SRV_OPERATION_RESTORE_DELTA);
|
||||||
/* Ignore .isl files on XtraBackup recovery. All tablespaces must be
|
/* Ignore .isl files on XtraBackup recovery. All tablespaces must be
|
||||||
local. */
|
local. */
|
||||||
if (is_remote && srv_operation == SRV_OPERATION_RESTORE) {
|
if (is_remote && srv_operation == SRV_OPERATION_RESTORE_DELTA) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (check_if_skip_table(filname)) {
|
if (check_if_skip_table(filname)) {
|
||||||
@ -2578,7 +2580,8 @@ xb_load_single_table_tablespace(
|
|||||||
in the cache to be populated with fields from space header */
|
in the cache to be populated with fields from space header */
|
||||||
fil_space_open(space->name);
|
fil_space_open(space->name);
|
||||||
|
|
||||||
if (srv_operation == SRV_OPERATION_RESTORE || xb_close_files) {
|
if (srv_operation == SRV_OPERATION_RESTORE_DELTA
|
||||||
|
|| xb_close_files) {
|
||||||
fil_space_close(space->name);
|
fil_space_close(space->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2753,7 +2756,7 @@ xb_load_tablespaces()
|
|||||||
lsn_t flush_lsn;
|
lsn_t flush_lsn;
|
||||||
|
|
||||||
ut_ad(srv_operation == SRV_OPERATION_BACKUP
|
ut_ad(srv_operation == SRV_OPERATION_BACKUP
|
||||||
|| srv_operation == SRV_OPERATION_RESTORE);
|
|| srv_operation == SRV_OPERATION_RESTORE_DELTA);
|
||||||
|
|
||||||
err = srv_sys_space.check_file_spec(&create_new_db, 0);
|
err = srv_sys_space.check_file_spec(&create_new_db, 0);
|
||||||
|
|
||||||
@ -3323,6 +3326,74 @@ static void stop_backup_threads()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Implement the core of --backup
|
||||||
|
@return whether the operation succeeded */
|
||||||
|
static
|
||||||
|
bool
|
||||||
|
xtrabackup_backup_low()
|
||||||
|
{
|
||||||
|
/* read the latest checkpoint lsn */
|
||||||
|
{
|
||||||
|
ulint max_cp_field;
|
||||||
|
|
||||||
|
log_mutex_enter();
|
||||||
|
|
||||||
|
if (recv_find_max_checkpoint(&max_cp_field) == DB_SUCCESS
|
||||||
|
&& log_sys->log.format != 0) {
|
||||||
|
metadata_to_lsn = mach_read_from_8(
|
||||||
|
log_sys->checkpoint_buf + LOG_CHECKPOINT_LSN);
|
||||||
|
msg("xtrabackup: The latest check point"
|
||||||
|
" (for incremental): '" LSN_PF "'\n",
|
||||||
|
metadata_to_lsn);
|
||||||
|
} else {
|
||||||
|
metadata_to_lsn = 0;
|
||||||
|
msg("xtrabackup: Error: recv_find_max_checkpoint() failed.\n");
|
||||||
|
}
|
||||||
|
log_mutex_exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
stop_backup_threads();
|
||||||
|
|
||||||
|
if (!dst_log_file || xtrabackup_copy_logfile(COPY_LAST)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ds_close(dst_log_file)) {
|
||||||
|
dst_log_file = NULL;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
dst_log_file = NULL;
|
||||||
|
|
||||||
|
if(!xtrabackup_incremental) {
|
||||||
|
strcpy(metadata_type, "full-backuped");
|
||||||
|
metadata_from_lsn = 0;
|
||||||
|
} else {
|
||||||
|
strcpy(metadata_type, "incremental");
|
||||||
|
metadata_from_lsn = incremental_lsn;
|
||||||
|
}
|
||||||
|
metadata_last_lsn = log_copy_scanned_lsn;
|
||||||
|
|
||||||
|
if (!xtrabackup_stream_metadata(ds_meta)) {
|
||||||
|
msg("xtrabackup: Error: failed to stream metadata.\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (xtrabackup_extra_lsndir) {
|
||||||
|
char filename[FN_REFLEN];
|
||||||
|
|
||||||
|
sprintf(filename, "%s/%s", xtrabackup_extra_lsndir,
|
||||||
|
XTRABACKUP_METADATA_FILENAME);
|
||||||
|
if (!xtrabackup_write_metadata(filename)) {
|
||||||
|
msg("xtrabackup: Error: failed to write metadata "
|
||||||
|
"to '%s'.\n", filename);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/** Implement --backup
|
/** Implement --backup
|
||||||
@return whether the operation succeeded */
|
@return whether the operation succeeded */
|
||||||
static
|
static
|
||||||
@ -3330,7 +3401,6 @@ bool
|
|||||||
xtrabackup_backup_func()
|
xtrabackup_backup_func()
|
||||||
{
|
{
|
||||||
MY_STAT stat_info;
|
MY_STAT stat_info;
|
||||||
lsn_t latest_cp;
|
|
||||||
uint i;
|
uint i;
|
||||||
uint count;
|
uint count;
|
||||||
pthread_mutex_t count_mutex;
|
pthread_mutex_t count_mutex;
|
||||||
@ -3730,70 +3800,19 @@ reread_log_header:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!backup_start()) {
|
bool ok = backup_start();
|
||||||
goto fail;
|
|
||||||
|
if (ok) {
|
||||||
|
ok = xtrabackup_backup_low();
|
||||||
|
|
||||||
|
backup_release();
|
||||||
|
|
||||||
|
if (ok) {
|
||||||
|
backup_finish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* read the latest checkpoint lsn */
|
if (!ok) {
|
||||||
{
|
|
||||||
ulint max_cp_field;
|
|
||||||
|
|
||||||
log_mutex_enter();
|
|
||||||
|
|
||||||
if (recv_find_max_checkpoint(&max_cp_field) == DB_SUCCESS
|
|
||||||
&& log_sys->log.format != 0) {
|
|
||||||
latest_cp = mach_read_from_8(log_sys->checkpoint_buf +
|
|
||||||
LOG_CHECKPOINT_LSN);
|
|
||||||
msg("xtrabackup: The latest check point"
|
|
||||||
" (for incremental): '" LSN_PF "'\n", latest_cp);
|
|
||||||
} else {
|
|
||||||
latest_cp = 0;
|
|
||||||
msg("xtrabackup: Error: recv_find_max_checkpoint() failed.\n");
|
|
||||||
}
|
|
||||||
log_mutex_exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
stop_backup_threads();
|
|
||||||
|
|
||||||
if (!dst_log_file || xtrabackup_copy_logfile(COPY_LAST)) {
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ds_close(dst_log_file)) {
|
|
||||||
dst_log_file = NULL;
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
dst_log_file = NULL;
|
|
||||||
|
|
||||||
if(!xtrabackup_incremental) {
|
|
||||||
strcpy(metadata_type, "full-backuped");
|
|
||||||
metadata_from_lsn = 0;
|
|
||||||
} else {
|
|
||||||
strcpy(metadata_type, "incremental");
|
|
||||||
metadata_from_lsn = incremental_lsn;
|
|
||||||
}
|
|
||||||
metadata_to_lsn = latest_cp;
|
|
||||||
metadata_last_lsn = log_copy_scanned_lsn;
|
|
||||||
|
|
||||||
if (!xtrabackup_stream_metadata(ds_meta)) {
|
|
||||||
msg("xtrabackup: Error: failed to stream metadata.\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
if (xtrabackup_extra_lsndir) {
|
|
||||||
char filename[FN_REFLEN];
|
|
||||||
|
|
||||||
sprintf(filename, "%s/%s", xtrabackup_extra_lsndir,
|
|
||||||
XTRABACKUP_METADATA_FILENAME);
|
|
||||||
if (!xtrabackup_write_metadata(filename)) {
|
|
||||||
msg("xtrabackup: Error: failed to write metadata "
|
|
||||||
"to '%s'.\n", filename);
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!backup_finish()) {
|
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3806,10 +3825,10 @@ reread_log_header:
|
|||||||
xb_data_files_close();
|
xb_data_files_close();
|
||||||
|
|
||||||
/* Make sure that the latest checkpoint was included */
|
/* Make sure that the latest checkpoint was included */
|
||||||
if (latest_cp > log_copy_scanned_lsn) {
|
if (metadata_to_lsn > log_copy_scanned_lsn) {
|
||||||
msg("xtrabackup: error: failed to copy enough redo log ("
|
msg("xtrabackup: error: failed to copy enough redo log ("
|
||||||
"LSN=" LSN_PF "; checkpoint LSN=" LSN_PF ").\n",
|
"LSN=" LSN_PF "; checkpoint LSN=" LSN_PF ").\n",
|
||||||
log_copy_scanned_lsn, latest_cp);
|
log_copy_scanned_lsn, metadata_to_lsn);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4925,6 +4944,8 @@ xtrabackup_prepare_func(char** argv)
|
|||||||
srv_thread_concurrency = 1;
|
srv_thread_concurrency = 1;
|
||||||
|
|
||||||
if (xtrabackup_incremental) {
|
if (xtrabackup_incremental) {
|
||||||
|
srv_operation = SRV_OPERATION_RESTORE_DELTA;
|
||||||
|
|
||||||
if (innodb_init_param()) {
|
if (innodb_init_param()) {
|
||||||
error_cleanup:
|
error_cleanup:
|
||||||
xb_filters_free();
|
xb_filters_free();
|
||||||
@ -4943,7 +4964,6 @@ error_cleanup:
|
|||||||
srv_allow_writes_event = os_event_create(0);
|
srv_allow_writes_event = os_event_create(0);
|
||||||
os_event_set(srv_allow_writes_event);
|
os_event_set(srv_allow_writes_event);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dberr_t err = xb_data_files_init();
|
dberr_t err = xb_data_files_init();
|
||||||
if (err != DB_SUCCESS) {
|
if (err != DB_SUCCESS) {
|
||||||
msg("xtrabackup: error: xb_data_files_init() failed "
|
msg("xtrabackup: error: xb_data_files_init() failed "
|
||||||
@ -4976,6 +4996,8 @@ error_cleanup:
|
|||||||
if (!ok) goto error_cleanup;
|
if (!ok) goto error_cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
srv_operation = SRV_OPERATION_RESTORE;
|
||||||
|
|
||||||
if (innodb_init_param()) {
|
if (innodb_init_param()) {
|
||||||
goto error_cleanup;
|
goto error_cleanup;
|
||||||
}
|
}
|
||||||
@ -5526,8 +5548,7 @@ handle_options(int argc, char **argv, char ***argv_client, char ***argv_server)
|
|||||||
for (n = 0; (*argv_client)[n]; n++) {};
|
for (n = 0; (*argv_client)[n]; n++) {};
|
||||||
argc_client = n;
|
argc_client = n;
|
||||||
|
|
||||||
if (strcmp(base_name(my_progname), INNOBACKUPEX_BIN_NAME) == 0 &&
|
if (innobackupex_mode && argc_client > 0) {
|
||||||
argc_client > 0) {
|
|
||||||
/* emulate innobackupex script */
|
/* emulate innobackupex script */
|
||||||
innobackupex_mode = true;
|
innobackupex_mode = true;
|
||||||
if (!ibx_handle_options(&argc_client, argv_client)) {
|
if (!ibx_handle_options(&argc_client, argv_client)) {
|
||||||
@ -5572,12 +5593,10 @@ static int main_low(char** argv);
|
|||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
char **client_defaults, **server_defaults;
|
char **client_defaults, **server_defaults;
|
||||||
static char INNOBACKUPEX_EXE[]= "innobackupex";
|
|
||||||
if (argc > 1 && (strcmp(argv[1], "--innobackupex") == 0))
|
if (argc > 1 && (strcmp(argv[1], "--innobackupex") == 0))
|
||||||
{
|
{
|
||||||
argv++;
|
argv++;
|
||||||
argc--;
|
argc--;
|
||||||
argv[0] = INNOBACKUPEX_EXE;
|
|
||||||
innobackupex_mode = true;
|
innobackupex_mode = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,23 +64,32 @@ SET(HEADERS
|
|||||||
json_lib.h
|
json_lib.h
|
||||||
)
|
)
|
||||||
|
|
||||||
INSTALL(FILES ${HEADERS} DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT Development)
|
# don't use C/C's (possibly outdated) copy of mysqld_error.h
|
||||||
|
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mysqld_error.h
|
||||||
|
DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT Development)
|
||||||
|
|
||||||
|
INSTALL(FILES ${HEADERS}
|
||||||
|
DESTINATION ${INSTALL_INCLUDEDIR}/server COMPONENT Development)
|
||||||
FOREACH(f ${HEADERS_GEN_CONFIGURE})
|
FOREACH(f ${HEADERS_GEN_CONFIGURE})
|
||||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${f} DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT Development PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
|
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${f}
|
||||||
|
DESTINATION ${INSTALL_INCLUDEDIR}/server COMPONENT Development)
|
||||||
ENDFOREACH(f)
|
ENDFOREACH(f)
|
||||||
INSTALL(DIRECTORY mysql/ DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT Development FILES_MATCHING PATTERN "*.h")
|
INSTALL(DIRECTORY mysql/ DESTINATION ${INSTALL_INCLUDEDIR}/server/mysql COMPONENT Development FILES_MATCHING PATTERN "*.h")
|
||||||
|
|
||||||
STRING(REPLACE "." "\\." EXCL_RE "${HEADERS};${HEADERS_GEN_CONFIGURE}")
|
STRING(REPLACE "." "\\." EXCL_RE "${HEADERS};${HEADERS_GEN_CONFIGURE}")
|
||||||
STRING(REPLACE ";" "|" EXCL_RE "${EXCL_RE}")
|
STRING(REPLACE ";" "|" EXCL_RE "${EXCL_RE}")
|
||||||
|
|
||||||
INSTALL(DIRECTORY . DESTINATION ${INSTALL_INCLUDEDIR}/private COMPONENT Development
|
MACRO(INSTALL_PRIVATE DIR)
|
||||||
|
INSTALL(DIRECTORY ${DIR}/.
|
||||||
|
DESTINATION ${INSTALL_INCLUDEDIR}/server/private COMPONENT Development
|
||||||
FILES_MATCHING PATTERN "*.h"
|
FILES_MATCHING PATTERN "*.h"
|
||||||
PATTERN CMakeFiles EXCLUDE
|
PATTERN CMakeFiles EXCLUDE
|
||||||
PATTERN mysql EXCLUDE
|
PATTERN mysql EXCLUDE
|
||||||
REGEX "\\./(${EXCL_RE}$)" EXCLUDE)
|
REGEX "\\./(${EXCL_RE}$)" EXCLUDE)
|
||||||
|
ENDMACRO()
|
||||||
|
|
||||||
|
INSTALL_PRIVATE(${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
IF(NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
INSTALL_PRIVATE(${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/. DESTINATION ${INSTALL_INCLUDEDIR}/private COMPONENT Development
|
|
||||||
FILES_MATCHING PATTERN "*.h"
|
|
||||||
PATTERN CMakeFiles EXCLUDE
|
|
||||||
PATTERN mysql EXCLUDE
|
|
||||||
REGEX "\\./(${EXCL_RE}$)" EXCLUDE)
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Copyright (c) 2001, 2013, Oracle and/or its affiliates.
|
Copyright (c) 2001, 2013, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2010, 2017, MariaDB Corporation.
|
Copyright (c) 2009, 2017, MariaDB Corporation
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -437,9 +437,8 @@ extern "C" int madvise(void *addr, size_t len, int behav);
|
|||||||
#define SIGNAL_HANDLER_RESET_ON_DELIVERY
|
#define SIGNAL_HANDLER_RESET_ON_DELIVERY
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef STDERR_FILENO
|
/* don't assume that STDERR_FILENO is 2, mysqld can freopen */
|
||||||
#define STDERR_FILENO fileno(stderr)
|
#undef STDERR_FILENO
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SO_EXT
|
#ifndef SO_EXT
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
#define VERSION_progress_report 0x0100
|
#define VERSION_progress_report 0x0100
|
||||||
#define VERSION_thd_alloc 0x0100
|
#define VERSION_thd_alloc 0x0100
|
||||||
#define VERSION_thd_autoinc 0x0100
|
#define VERSION_thd_autoinc 0x0100
|
||||||
#define VERSION_thd_error_context 0x0100
|
#define VERSION_thd_error_context 0x0200
|
||||||
#define VERSION_thd_rnd 0x0100
|
#define VERSION_thd_rnd 0x0100
|
||||||
#define VERSION_thd_specifics 0x0100
|
#define VERSION_thd_specifics 0x0100
|
||||||
#define VERSION_thd_timezone 0x0100
|
#define VERSION_thd_timezone 0x0100
|
||||||
|
Submodule libmariadb updated: eb05820423...11321f16bf
@ -162,7 +162,7 @@ ENDFOREACH()
|
|||||||
MERGE_LIBRARIES(mysqlserver STATIC ${EMBEDDED_LIBS}
|
MERGE_LIBRARIES(mysqlserver STATIC ${EMBEDDED_LIBS}
|
||||||
OUTPUT_NAME ${MYSQLSERVER_OUTPUT_NAME} COMPONENT ${COMPONENT_MYSQLSERVER})
|
OUTPUT_NAME ${MYSQLSERVER_OUTPUT_NAME} COMPONENT ${COMPONENT_MYSQLSERVER})
|
||||||
|
|
||||||
INSTALL(FILES embedded_priv.h DESTINATION ${INSTALL_INCLUDEDIR}/private COMPONENT ${COMPONENT_MYSQLSERVER})
|
INSTALL(FILES embedded_priv.h DESTINATION ${INSTALL_INCLUDEDIR}/server/private COMPONENT ${COMPONENT_MYSQLSERVER})
|
||||||
|
|
||||||
# Visual Studio users need debug static library
|
# Visual Studio users need debug static library
|
||||||
IF(MSVC)
|
IF(MSVC)
|
||||||
|
@ -140,8 +140,7 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Clear result variables */
|
/* Clear result variables */
|
||||||
thd->clear_error();
|
thd->clear_error(1);
|
||||||
thd->get_stmt_da()->reset_diagnostics_area();
|
|
||||||
mysql->affected_rows= ~(my_ulonglong) 0;
|
mysql->affected_rows= ~(my_ulonglong) 0;
|
||||||
mysql->field_count= 0;
|
mysql->field_count= 0;
|
||||||
net_clear_error(net);
|
net_clear_error(net);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2000, 2014, Oracle and/or its affiliates.
|
/* Copyright (c) 2000, 2014, Oracle and/or its affiliates
|
||||||
Copyright (c) 2009, 2014, SkySQL Ab.
|
Copyright (c) 2009, 2017, MariaDB Corporation
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -4919,4 +4919,3 @@ ulong STDCALL mysql_net_field_length(uchar **packet)
|
|||||||
{
|
{
|
||||||
return net_field_length(packet);
|
return net_field_length(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ IF(NOT ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
|||||||
${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run.pl
|
${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run.pl
|
||||||
@ONLY
|
@ONLY
|
||||||
)
|
)
|
||||||
|
SET(out_of_source_build TRUE)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
IF(UNIX)
|
IF(UNIX)
|
||||||
EXECUTE_PROCESS(
|
EXECUTE_PROCESS(
|
||||||
@ -32,7 +33,7 @@ IF(UNIX)
|
|||||||
./mysql-test-run.pl mysql-test-run
|
./mysql-test-run.pl mysql-test-run
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
)
|
)
|
||||||
IF(INSTALL_MYSQLTESTDIR)
|
IF(INSTALL_MYSQLTESTDIR AND out_of_source_build)
|
||||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mtr
|
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mtr
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run
|
${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run
|
||||||
DESTINATION ${INSTALL_MYSQLTESTDIR}
|
DESTINATION ${INSTALL_MYSQLTESTDIR}
|
||||||
|
@ -64,6 +64,8 @@ explain
|
|||||||
select * from t0 where key1 < 3 or key2 > 1020;
|
select * from t0 where key1 < 3 or key2 > 1020;
|
||||||
select * from t0 where key1 < 3 or key2 > 1020;
|
select * from t0 where key1 < 3 or key2 > 1020;
|
||||||
|
|
||||||
|
select * from t0 where key1=1022; # MDEV-13535 no-key-read select after keyread
|
||||||
|
|
||||||
explain select * from t0 where key1 < 3 or key2 <4;
|
explain select * from t0 where key1 < 3 or key2 <4;
|
||||||
|
|
||||||
explain
|
explain
|
||||||
|
@ -6,50 +6,5 @@
|
|||||||
|
|
||||||
--source include/not_embedded.inc
|
--source include/not_embedded.inc
|
||||||
|
|
||||||
if ($rpl_inited)
|
--source include/shutdown_mysqld.inc
|
||||||
{
|
--source include/start_mysqld.inc
|
||||||
if (!$allow_rpl_inited)
|
|
||||||
{
|
|
||||||
--die ERROR IN TEST: When using the replication test framework (master-slave.inc, rpl_init.inc etc), use rpl_restart_server.inc instead of restart_mysqld.inc. If you know what you are doing and you really have to use restart_mysqld.inc, set allow_rpl_inited=1 before you source restart_mysqld.inc
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--let $server_shutdown_timeout= 60
|
|
||||||
if ($shutdown_timeout)
|
|
||||||
{
|
|
||||||
--let $server_shutdown_timeout= $shutdown_timeout
|
|
||||||
}
|
|
||||||
if ($shutdown_timeout == 0)
|
|
||||||
{
|
|
||||||
--let $server_shutdown_timeout= 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Write file to make mysql-test-run.pl expect the "crash", but don't start
|
|
||||||
# it until it's told to
|
|
||||||
--let $_server_id= `SELECT @@server_id`
|
|
||||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
|
||||||
--exec echo "wait" > $_expect_file_name
|
|
||||||
|
|
||||||
# Send shutdown to the connected server and give
|
|
||||||
# it 10 seconds to die before zapping it
|
|
||||||
shutdown_server $server_shutdown_timeout;
|
|
||||||
|
|
||||||
# Write file to make mysql-test-run.pl start up the server again
|
|
||||||
if ($restart_parameters)
|
|
||||||
{
|
|
||||||
--exec echo "restart: $restart_parameters" > $_expect_file_name
|
|
||||||
}
|
|
||||||
if (!$restart_parameters)
|
|
||||||
{
|
|
||||||
--exec echo "restart" > $_expect_file_name
|
|
||||||
}
|
|
||||||
|
|
||||||
# Turn on reconnect
|
|
||||||
--enable_reconnect
|
|
||||||
|
|
||||||
# Call script that will poll the server waiting for it to be back online again
|
|
||||||
--source include/wait_until_connected_again.inc
|
|
||||||
|
|
||||||
# Turn off reconnect again
|
|
||||||
--disable_reconnect
|
|
||||||
|
|
||||||
|
@ -12,7 +12,17 @@ if ($rpl_inited)
|
|||||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
||||||
--exec echo "wait" > $_expect_file_name
|
--exec echo "wait" > $_expect_file_name
|
||||||
|
|
||||||
|
--let $server_shutdown_timeout= 60
|
||||||
|
if ($shutdown_timeout)
|
||||||
|
{
|
||||||
|
--let $server_shutdown_timeout= $shutdown_timeout
|
||||||
|
}
|
||||||
|
if ($shutdown_timeout == 0)
|
||||||
|
{
|
||||||
|
--let $server_shutdown_timeout= 0
|
||||||
|
}
|
||||||
|
|
||||||
# Send shutdown to the connected server
|
# Send shutdown to the connected server
|
||||||
--shutdown_server
|
--shutdown_server $server_shutdown_timeout
|
||||||
--source include/wait_until_disconnected.inc
|
--source include/wait_until_disconnected.inc
|
||||||
|
|
||||||
|
@ -66,6 +66,13 @@ if (!$slave_skip_counter) {
|
|||||||
}
|
}
|
||||||
source include/start_slave.inc;
|
source include/start_slave.inc;
|
||||||
|
|
||||||
|
# start_slave.inc returns when Slave_SQL_Running=Yes. But the slave
|
||||||
|
# thread sets it before clearing Last_SQL_Errno. So we have to wait
|
||||||
|
# for Last_SQL_Errno=0 separately.
|
||||||
|
|
||||||
|
let $slave_param= Last_SQL_Errno;
|
||||||
|
let $slave_param_value= 0;
|
||||||
|
source include/wait_for_slave_param.inc;
|
||||||
|
|
||||||
--let $include_filename= wait_for_slave_sql_error_and_skip.inc [errno=$slave_sql_errno]
|
--let $include_filename= wait_for_slave_sql_error_and_skip.inc [errno=$slave_sql_errno]
|
||||||
--source include/end_include_file.inc
|
--source include/end_include_file.inc
|
||||||
|
@ -29,16 +29,6 @@ ELSE()
|
|||||||
MYSQL_ADD_EXECUTABLE(my_safe_process safe_process.cc ${INSTALL_ARGS})
|
MYSQL_ADD_EXECUTABLE(my_safe_process safe_process.cc ${INSTALL_ARGS})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
INSTALL(TARGETS my_safe_process
|
|
||||||
DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" COMPONENT Test
|
|
||||||
)
|
|
||||||
|
|
||||||
IF(WIN32)
|
|
||||||
INSTALL(TARGETS my_safe_kill
|
|
||||||
DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" COMPONENT Test
|
|
||||||
)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
INSTALL(FILES Base.pm
|
INSTALL(FILES Base.pm
|
||||||
DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" COMPONENT Test
|
DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" COMPONENT Test
|
||||||
)
|
)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
# Copyright (c) 2004, 2014, Oracle and/or its affiliates.
|
# Copyright (c) 2004, 2014, Oracle and/or its affiliates.
|
||||||
# Copyright (c) 2009, 2014, Monty Program Ab
|
# Copyright (c) 2009, 2017, MariaDB Corporation
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -1264,10 +1264,6 @@ sub command_line_setup {
|
|||||||
|
|
||||||
fix_vs_config_dir();
|
fix_vs_config_dir();
|
||||||
|
|
||||||
# Respect MTR_BINDIR variable, which is typically set in to the
|
|
||||||
# build directory in out-of-source builds.
|
|
||||||
$bindir=$ENV{MTR_BINDIR}||$basedir;
|
|
||||||
|
|
||||||
# Look for the client binaries directory
|
# Look for the client binaries directory
|
||||||
if ($path_client_bindir)
|
if ($path_client_bindir)
|
||||||
{
|
{
|
||||||
|
@ -2171,3 +2171,54 @@ DROP TABLE t1;
|
|||||||
CREATE TABLE t1(a INT, b INT, CONSTRAINT min check (a>5),
|
CREATE TABLE t1(a INT, b INT, CONSTRAINT min check (a>5),
|
||||||
CONSTRAINT min check (b>5));
|
CONSTRAINT min check (b>5));
|
||||||
ERROR HY000: Duplicate CHECK constraint name 'min'
|
ERROR HY000: Duplicate CHECK constraint name 'min'
|
||||||
|
create table t1 (a int, b int, check(a>b));
|
||||||
|
alter table t1 drop column a;
|
||||||
|
ERROR 42S22: Unknown column 'a' in 'CHECK'
|
||||||
|
alter table t1 drop column b, add column b bigint first;
|
||||||
|
ERROR 42S22: Unknown column 'b' in 'CHECK'
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL,
|
||||||
|
`b` int(11) DEFAULT NULL,
|
||||||
|
CONSTRAINT `CONSTRAINT_1` CHECK (`a` > `b`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a int, b int, check(a>0));
|
||||||
|
alter table t1 drop column a;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`b` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a int, b int, check(a>0));
|
||||||
|
alter table t1 drop column a, add column a bigint first;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` bigint(20) DEFAULT NULL,
|
||||||
|
`b` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a int, b int, c int, unique(a));
|
||||||
|
alter table t1 drop column a;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`b` int(11) DEFAULT NULL,
|
||||||
|
`c` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a int, b int, c int, unique(a,b));
|
||||||
|
alter table t1 drop column a;
|
||||||
|
ERROR 42000: Key column 'a' doesn't exist in table
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL,
|
||||||
|
`b` int(11) DEFAULT NULL,
|
||||||
|
`c` int(11) DEFAULT NULL,
|
||||||
|
UNIQUE KEY `a` (`a`,`b`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
|
117
mysql-test/r/binary_to_hex.result
Normal file
117
mysql-test/r/binary_to_hex.result
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
USE test;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
CREATE TABLE t1 (c1 TINYBLOB,
|
||||||
|
c2 BLOB,
|
||||||
|
c3 MEDIUMBLOB,
|
||||||
|
c4 LONGBLOB,
|
||||||
|
c5 TEXT,
|
||||||
|
c6 BIT(1),
|
||||||
|
c7 CHAR,
|
||||||
|
c8 VARCHAR(10),
|
||||||
|
c9 GEOMETRY) CHARACTER SET = binary;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` tinyblob DEFAULT NULL,
|
||||||
|
`c2` blob DEFAULT NULL,
|
||||||
|
`c3` mediumblob DEFAULT NULL,
|
||||||
|
`c4` longblob DEFAULT NULL,
|
||||||
|
`c5` blob DEFAULT NULL,
|
||||||
|
`c6` bit(1) DEFAULT NULL,
|
||||||
|
`c7` binary(1) DEFAULT NULL,
|
||||||
|
`c8` varbinary(10) DEFAULT NULL,
|
||||||
|
`c9` geometry DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=binary
|
||||||
|
INSERT INTO t1 VALUES ('tinyblob-text readable', 'blob-text readable',
|
||||||
|
'mediumblob-text readable', 'longblob-text readable',
|
||||||
|
'text readable', b'1', 'c', 'variable',
|
||||||
|
POINT(1, 1));
|
||||||
|
CREATE TABLE t2(id int, `col1` binary(10),`col2` blob);
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`id` int(11) DEFAULT NULL,
|
||||||
|
`col1` binary(10) DEFAULT NULL,
|
||||||
|
`col2` blob DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t2 VALUES (1, X'AB1234', X'123ABC'), (2, X'DE1234', X'123DEF');
|
||||||
|
#Print the table contents when binary-as-hex option is off.
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 c3 c4 c5 c6 c7 c8 c9
|
||||||
|
tinyblob-text readable blob-text readable mediumblob-text readable longblob-text readable text readable # c variable #
|
||||||
|
SELECT * FROM t2;
|
||||||
|
id col1 col2
|
||||||
|
1 # #
|
||||||
|
2 # #
|
||||||
|
#Print the table contents after turning on the binary-as-hex option
|
||||||
|
|
||||||
|
#Print the table contents in tab format
|
||||||
|
|
||||||
|
c1 c2 c3 c4 c5 c6 c7 c8 c9
|
||||||
|
0x74696E79626C6F622D74657874207265616461626C65 0x626C6F622D74657874207265616461626C65 0x6D656469756D626C6F622D74657874207265616461626C65 0x6C6F6E67626C6F622D74657874207265616461626C65 0x74657874207265616461626C65 0x01 0x63 0x7661726961626C65 0x000000000101000000000000000000F03F000000000000F03F
|
||||||
|
id col1 col2
|
||||||
|
1 0xAB123400000000000000 0x123ABC
|
||||||
|
2 0xDE123400000000000000 0x123DEF
|
||||||
|
|
||||||
|
#Print the table contents in table format
|
||||||
|
|
||||||
|
+------------------------------------------------+----------------------------------------+----------------------------------------------------+------------------------------------------------+------------------------------+------------+------------+--------------------+------------------------------------------------------+
|
||||||
|
| c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 |
|
||||||
|
+------------------------------------------------+----------------------------------------+----------------------------------------------------+------------------------------------------------+------------------------------+------------+------------+--------------------+------------------------------------------------------+
|
||||||
|
| 0x74696E79626C6F622D74657874207265616461626C65 | 0x626C6F622D74657874207265616461626C65 | 0x6D656469756D626C6F622D74657874207265616461626C65 | 0x6C6F6E67626C6F622D74657874207265616461626C65 | 0x74657874207265616461626C65 | 0x01 | 0x63 | 0x7661726961626C65 | 0x000000000101000000000000000000F03F000000000000F03F |
|
||||||
|
+------------------------------------------------+----------------------------------------+----------------------------------------------------+------------------------------------------------+------------------------------+------------+------------+--------------------+------------------------------------------------------+
|
||||||
|
+------+------------------------+------------+
|
||||||
|
| id | col1 | col2 |
|
||||||
|
+------+------------------------+------------+
|
||||||
|
| 1 | 0xAB123400000000000000 | 0x123ABC |
|
||||||
|
+------+------------------------+------------+
|
||||||
|
|
||||||
|
#Print the table contents vertically
|
||||||
|
|
||||||
|
*************************** 1. row ***************************
|
||||||
|
c1: 0x74696E79626C6F622D74657874207265616461626C65
|
||||||
|
c2: 0x626C6F622D74657874207265616461626C65
|
||||||
|
c3: 0x6D656469756D626C6F622D74657874207265616461626C65
|
||||||
|
c4: 0x6C6F6E67626C6F622D74657874207265616461626C65
|
||||||
|
c5: 0x74657874207265616461626C65
|
||||||
|
c6: 0x01
|
||||||
|
c7: 0x63
|
||||||
|
c8: 0x7661726961626C65
|
||||||
|
c9: 0x000000000101000000000000000000F03F000000000000F03F
|
||||||
|
|
||||||
|
#Print the table contents in xml format
|
||||||
|
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
|
<resultset statement="SELECT * FROM t1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<row>
|
||||||
|
<field name="c1">0x74696E79626C6F622D74657874207265616461626C65</field>
|
||||||
|
<field name="c2">0x626C6F622D74657874207265616461626C65</field>
|
||||||
|
<field name="c3">0x6D656469756D626C6F622D74657874207265616461626C65</field>
|
||||||
|
<field name="c4">0x6C6F6E67626C6F622D74657874207265616461626C65</field>
|
||||||
|
<field name="c5">0x74657874207265616461626C65</field>
|
||||||
|
<field name="c6">0x01</field>
|
||||||
|
<field name="c7">0x63</field>
|
||||||
|
<field name="c8">0x7661726961626C65</field>
|
||||||
|
<field name="c9">0x000000000101000000000000000000F03F000000000000F03F</field>
|
||||||
|
</row>
|
||||||
|
</resultset>
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
|
<resultset statement="SELECT * FROM t2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<row>
|
||||||
|
<field name="id">1</field>
|
||||||
|
<field name="col1">0xAB123400000000000000</field>
|
||||||
|
<field name="col2">0x123ABC</field>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row>
|
||||||
|
<field name="id">2</field>
|
||||||
|
<field name="col1">0xDE123400000000000000</field>
|
||||||
|
<field name="col2">0x123DEF</field>
|
||||||
|
</row>
|
||||||
|
</resultset>
|
||||||
|
|
||||||
|
#Print the table contents in html format
|
||||||
|
|
||||||
|
<TABLE BORDER=1><TR><TH>c1</TH><TH>c2</TH><TH>c3</TH><TH>c4</TH><TH>c5</TH><TH>c6</TH><TH>c7</TH><TH>c8</TH><TH>c9</TH></TR><TR><TD>0x74696E79626C6F622D74657874207265616461626C65</TD><TD>0x626C6F622D74657874207265616461626C65</TD><TD>0x6D656469756D626C6F622D74657874207265616461626C65</TD><TD>0x6C6F6E67626C6F622D74657874207265616461626C65</TD><TD>0x74657874207265616461626C65</TD><TD>0x01</TD><TD>0x63</TD><TD>0x7661726961626C65</TD><TD>0x000000000101000000000000000000F03F000000000000F03F</TD></TR></TABLE><TABLE BORDER=1><TR><TH>id</TH><TH>col1</TH><TH>col2</TH></TR><TR><TD>1</TD><TD>0xAB123400000000000000</TD><TD>0x123ABC</TD></TR><TR><TD>2</TD><TD>0xDE123400000000000000</TD><TD>0x123DEF</TD></TR></TABLE>DROP TABLE t1, t2;
|
@ -136,10 +136,6 @@ insert into t1(c1) values(1);
|
|||||||
ERROR 23000: CONSTRAINT `CONSTRAINT_1` failed for `test`.`t1`
|
ERROR 23000: CONSTRAINT `CONSTRAINT_1` failed for `test`.`t1`
|
||||||
insert into t1(c1) values(2);
|
insert into t1(c1) values(2);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a int, b int, check(a>0));
|
|
||||||
alter table t1 drop column a;
|
|
||||||
ERROR 42S22: Unknown column 'a' in 'CHECK'
|
|
||||||
drop table t1;
|
|
||||||
create or replace table t1( c1 int auto_increment primary key, check( c1 > 0 or c1 is null ) );
|
create or replace table t1( c1 int auto_increment primary key, check( c1 > 0 or c1 is null ) );
|
||||||
ERROR HY000: Function or expression 'AUTO_INCREMENT' cannot be used in the CHECK clause of `c1`
|
ERROR HY000: Function or expression 'AUTO_INCREMENT' cannot be used in the CHECK clause of `c1`
|
||||||
create table t1 (a int check (@b in (select user from mysql.user)));
|
create table t1 (a int check (@b in (select user from mysql.user)));
|
||||||
|
@ -94,3 +94,15 @@ count(distinct i)
|
|||||||
2
|
2
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop view v1;
|
drop view v1;
|
||||||
|
create table t1 (user_id char(64) character set utf8);
|
||||||
|
insert t1 values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(17);
|
||||||
|
set @@tmp_table_size = 1024;
|
||||||
|
select count(distinct user_id) from t1;
|
||||||
|
count(distinct user_id)
|
||||||
|
17
|
||||||
|
alter table t1 modify user_id char(128) character set utf8;
|
||||||
|
select count(distinct user_id) from t1;
|
||||||
|
count(distinct user_id)
|
||||||
|
17
|
||||||
|
drop table t1;
|
||||||
|
set @@tmp_table_size = default;
|
||||||
|
@ -170,7 +170,7 @@ UPDATE t1 SET a = 'new'
|
|||||||
WHERE COLUMN_CREATE( 1, 'v', 1, 'w' ) IS NULL;
|
WHERE COLUMN_CREATE( 1, 'v', 1, 'w' ) IS NULL;
|
||||||
ERROR 22007: Illegal value used as argument of dynamic column function
|
ERROR 22007: Illegal value used as argument of dynamic column function
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set max_session_mem_used = 50000;
|
||||||
|
select * from seq_1_to_1000;
|
||||||
set max_session_mem_used = 8192;
|
set max_session_mem_used = 8192;
|
||||||
select * from seq_1_to_1000;
|
select * from seq_1_to_1000;
|
||||||
Got one of the listed errors
|
|
||||||
set global max_session_mem_used = default;
|
|
||||||
|
@ -885,6 +885,38 @@ SELECT 1 FROM dual WHERE ('Alpha,Bravo,Charlie,Delta,Echo,Foxtrot,StrataCentral,
|
|||||||
CAST(0xE001 AS BINARY) REGEXP @regCheck
|
CAST(0xE001 AS BINARY) REGEXP @regCheck
|
||||||
1
|
1
|
||||||
# MDEV-12420: Testing recursion overflow
|
# MDEV-12420: Testing recursion overflow
|
||||||
|
SELECT 1 FROM dual WHERE ('Alpha,Bravo,Charlie,Delta,Echo,Foxtrot,StrataCentral,Golf,Hotel,India,Juliet,Kilo,Lima,Mike,StrataL3,November,Oscar,StrataL2,Sand,P3,P4SwitchTest,Arsys,Poppa,ExtensionMgr,Arp,Quebec,Romeo,StrataApiV2,PtReyes,Sierra,SandAcl,Arrow,Artools,BridgeTest,Tango,SandT,PAlaska,Namespace,Agent,Qos,PatchPanel,ProjectReport,Ark,Gimp,Agent,SliceAgent,Arnet,Bgp,Ale,Tommy,Central,AsicPktTestLib,Hsc,SandL3,Abuild,Pca9555,Standby,ControllerDut,CalSys,SandLib,Sb820,PointV2,BfnLib,Evpn,BfnSdk,Sflow,ManagementActive,AutoTest,GatedTest,Bgp,Sand,xinetd,BfnAgentLib,bf-utils,Hello,BfnState,Eos,Artest,Qos,Scd,ThermoMgr,Uniform,EosUtils,Eb,FanController,Central,BfnL3,BfnL2,tcp_wrappers,Victor,Environment,Route,Failover,Whiskey,Xray,Gimp,BfnFixed,Strata,SoCal,XApi,Msrp,XpProfile,tcpdump,PatchPanel,ArosTest,FhTest,Arbus,XpAcl,MacConc,XpApi,telnet,QosTest,Alpha2,BfnVlan,Stp,VxlanControllerTest,MplsAgent,Bravo2,Lanz,BfnMbb,Intf,XCtrl,Unicast,SandTunnel,L3Unicast,Ipsec,MplsTest,Rsvp,EthIntf,StageMgr,Sol,MplsUtils,Nat,Ira,P4NamespaceDut,Counters,Charlie2,Aqlc,Mlag,Power,OpenFlow,Lag,RestApi,BfdTest,strongs,Sfa,CEosUtils,Adt746,MaintenanceMode,MlagDut,EosImage,IpEth,MultiProtocol,Launcher,Max3179,Snmp,Acl,IpEthTest,PhyEee,bf-syslibs,tacc,XpL2,p4-ar-switch,p4-bf-switch,LdpTest,BfnPhy,Mirroring,Phy6,Ptp' REGEXP '^((?!\b(Strata|StrataApi|StrataApiV2)\b).)*$');
|
||||||
|
1
|
||||||
|
Warnings:
|
||||||
|
Warning 1139 Got error 'pcre_exec: recursion limit of NUM exceeded' from regexp
|
||||||
|
SELECT CONCAT(REPEAT('100,',133),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$';
|
||||||
|
CONCAT(REPEAT('100,',133),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$'
|
||||||
|
1
|
||||||
|
SELECT CONCAT(REPEAT('100,',200),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$';
|
||||||
|
CONCAT(REPEAT('100,',200),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$'
|
||||||
|
0
|
||||||
|
Warnings:
|
||||||
|
Warning 1139 Got error 'pcre_exec: recursion limit of NUM exceeded' from regexp
|
||||||
|
SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$');
|
||||||
|
REGEXP_INSTR(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')
|
||||||
|
1
|
||||||
|
SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$');
|
||||||
|
REGEXP_INSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')
|
||||||
|
0
|
||||||
|
Warnings:
|
||||||
|
Warning 1139 Got error 'pcre_exec: recursion limit of NUM exceeded' from regexp
|
||||||
|
SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'));
|
||||||
|
LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'))
|
||||||
|
535
|
||||||
|
SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'));
|
||||||
|
LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'))
|
||||||
|
0
|
||||||
|
Warnings:
|
||||||
|
Warning 1139 Got error 'pcre_exec: recursion limit of NUM exceeded' from regexp
|
||||||
|
SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', ''));
|
||||||
|
LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', ''))
|
||||||
|
0
|
||||||
|
SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', ''));
|
||||||
LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', ''))
|
LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', ''))
|
||||||
803
|
803
|
||||||
Warnings:
|
Warnings:
|
||||||
|
@ -331,8 +331,8 @@ fid IsClosed(g)
|
|||||||
116 0
|
116 0
|
||||||
SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon;
|
SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon;
|
||||||
fid AsText(Centroid(g))
|
fid AsText(Centroid(g))
|
||||||
117 POINT(55.58852775304245 17.426536064113982)
|
117 POINT(57.98031067576927 17.854754130800433)
|
||||||
118 POINT(55.58852775304245 17.426536064113982)
|
118 POINT(57.98031067576927 17.854754130800433)
|
||||||
119 POINT(2 2)
|
119 POINT(2 2)
|
||||||
SELECT fid, Area(g) FROM gis_multi_polygon;
|
SELECT fid, Area(g) FROM gis_multi_polygon;
|
||||||
fid Area(g)
|
fid Area(g)
|
||||||
@ -680,11 +680,11 @@ insert into t1 values ('85984',GeomFromText('MULTIPOLYGON(((-115.006363
|
|||||||
select object_id, geometrytype(geo), ISSIMPLE(GEO), ASTEXT(centroid(geo)) from
|
select object_id, geometrytype(geo), ISSIMPLE(GEO), ASTEXT(centroid(geo)) from
|
||||||
t1 where object_id=85998;
|
t1 where object_id=85998;
|
||||||
object_id geometrytype(geo) ISSIMPLE(GEO) ASTEXT(centroid(geo))
|
object_id geometrytype(geo) ISSIMPLE(GEO) ASTEXT(centroid(geo))
|
||||||
85998 MULTIPOLYGON 1 POINT(115.31877315203187 -36.23747282102153)
|
85998 MULTIPOLYGON 1 POINT(115.2970604672862 -36.23335610879993)
|
||||||
select object_id, geometrytype(geo), ISSIMPLE(GEO), ASTEXT(centroid(geo)) from
|
select object_id, geometrytype(geo), ISSIMPLE(GEO), ASTEXT(centroid(geo)) from
|
||||||
t1 where object_id=85984;
|
t1 where object_id=85984;
|
||||||
object_id geometrytype(geo) ISSIMPLE(GEO) ASTEXT(centroid(geo))
|
object_id geometrytype(geo) ISSIMPLE(GEO) ASTEXT(centroid(geo))
|
||||||
85984 MULTIPOLYGON 1 POINT(-114.87787186923313 36.33101763469059)
|
85984 MULTIPOLYGON 1 POINT(-114.86854472054372 36.34725218253213)
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (fl geometry not null);
|
create table t1 (fl geometry not null);
|
||||||
insert into t1 values (1);
|
insert into t1 values (1);
|
||||||
|
@ -2640,6 +2640,33 @@ select a from t1 group by a having a > 1;
|
|||||||
a
|
a
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set sql_mode= @save_sql_mode;
|
set sql_mode= @save_sql_mode;
|
||||||
|
create table t1 (f1 int);
|
||||||
|
insert into t1 values (5),(9);
|
||||||
|
create table t2 (f2 int);
|
||||||
|
insert into t2 values (0),(6);
|
||||||
|
create table t3 (f3 int);
|
||||||
|
insert into t3 values (6),(3);
|
||||||
|
create table t4 (f4 int);
|
||||||
|
insert into t4 values (1),(0);
|
||||||
|
select
|
||||||
|
(select min(f1) from t1 where f1 in (select min(f4) from t2)) as field7,
|
||||||
|
(select count(*) from t3 where f3 in (select max(f4) from t2 group by field7))
|
||||||
|
from t4;
|
||||||
|
ERROR 42S22: Reference 'field7' not supported (reference to group function)
|
||||||
|
drop table t1, t2, t3, t4;
|
||||||
|
create table t1 (i1 int);
|
||||||
|
insert into t1 values (1);
|
||||||
|
create table t2 (i int);
|
||||||
|
insert into t2 values (2);
|
||||||
|
select 1 from t1 left join t2 b on b.i = (select max(b.i) from t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop table t1, t2;
|
||||||
|
create table t1 (c1 int, c2 int);
|
||||||
|
create table t2 (c1 int, c2 int);
|
||||||
|
select t1.c1 as c1, t2.c2 as c1 from t1, t2 where t1.c1 < 20 and t2.c2 > 5 group by t1.c1, t2.c2 having t1.c1 < 3;
|
||||||
|
c1 c1
|
||||||
|
drop table t1, t2;
|
||||||
#
|
#
|
||||||
# Bug #58782
|
# Bug #58782
|
||||||
# Missing rows with SELECT .. WHERE .. IN subquery
|
# Missing rows with SELECT .. WHERE .. IN subquery
|
||||||
|
@ -34,6 +34,9 @@ key1 key2 key3 key4 key5 key6 key7 key8
|
|||||||
1022 1022 1022 1022 1022 1022 1022 2
|
1022 1022 1022 1022 1022 1022 1022 2
|
||||||
1023 1023 1023 1023 1023 1023 1023 1
|
1023 1023 1023 1023 1023 1023 1023 1
|
||||||
1024 1024 1024 1024 1024 1024 1024 0
|
1024 1024 1024 1024 1024 1024 1024 0
|
||||||
|
select * from t0 where key1=1022;
|
||||||
|
key1 key2 key3 key4 key5 key6 key7 key8
|
||||||
|
1022 1022 1022 1022 1022 1022 1022 2
|
||||||
explain select * from t0 where key1 < 3 or key2 <4;
|
explain select * from t0 where key1 < 3 or key2 <4;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL 7 Using sort_union(i1,i2); Using where
|
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL 7 Using sort_union(i1,i2); Using where
|
||||||
|
@ -475,6 +475,29 @@ even_longer_user_name_number_3_to_test_the_grantor_and_definer_field_length@loca
|
|||||||
even_longer_user_name_number_3_to_test_the_grantor_and_definer_field_length@localhost
|
even_longer_user_name_number_3_to_test_the_grantor_and_definer_field_length@localhost
|
||||||
DROP USER very_long_user_name_number_1, very_long_user_name_number_2, even_longer_user_name_number_3_to_test_the_grantor_and_definer_field_length@localhost;
|
DROP USER very_long_user_name_number_1, very_long_user_name_number_2, even_longer_user_name_number_3_to_test_the_grantor_and_definer_field_length@localhost;
|
||||||
DROP PROCEDURE test.pr;
|
DROP PROCEDURE test.pr;
|
||||||
|
use test;
|
||||||
|
call mtr.add_suppression('Column last_update in table `mysql`.`innodb_table_stats` is INT NOT NULL but should be');
|
||||||
|
alter table mysql.innodb_table_stats modify last_update int not null;
|
||||||
|
create table extralongname_extralongname_extralongname_extralongname_ext (
|
||||||
|
id int(10) unsigned not null,
|
||||||
|
created_date date not null,
|
||||||
|
created timestamp not null,
|
||||||
|
primary key (created,id,created_date)
|
||||||
|
) engine=innodb stats_persistent=1 default charset=latin1
|
||||||
|
partition by range (year(created_date))
|
||||||
|
subpartition by hash (month(created_date))
|
||||||
|
subpartitions 2 (
|
||||||
|
partition p2007 values less than (2008),
|
||||||
|
partition p2008 values less than (2009)
|
||||||
|
);
|
||||||
|
select length(table_name) from mysql.innodb_table_stats;
|
||||||
|
length(table_name)
|
||||||
|
79
|
||||||
|
79
|
||||||
|
79
|
||||||
|
79
|
||||||
|
drop table extralongname_extralongname_extralongname_extralongname_ext;
|
||||||
|
End of 10.0 tests
|
||||||
set sql_mode=default;
|
set sql_mode=default;
|
||||||
# Droping the previously created mysql_upgrade_info file..
|
# Droping the previously created mysql_upgrade_info file..
|
||||||
create table test.t1(a int) engine=MyISAM;
|
create table test.t1(a int) engine=MyISAM;
|
||||||
@ -537,4 +560,4 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE test.t1;
|
DROP TABLE test.t1;
|
||||||
SET GLOBAL enforce_storage_engine=NULL;
|
SET GLOBAL enforce_storage_engine=NULL;
|
||||||
End of tests
|
End of 10.1 tests
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- mysqld--help.result 2016-11-04 13:35:06.665881700 +0000
|
--- a/mysql-test/r/mysqld--help.result
|
||||||
+++ mysqld--help,win.reject 2016-11-04 13:58:39.030512500 +0000
|
+++ b/mysql-test/r/mysqld--help.result
|
||||||
@@ -318,7 +318,6 @@
|
@@ -334,7 +334,6 @@
|
||||||
The number of segments in a key cache
|
The number of segments in a key cache
|
||||||
-L, --language=name Client error messages in given language. May be given as
|
-L, --language=name Client error messages in given language. May be given as
|
||||||
a full path. Deprecated. Use --lc-messages-dir instead.
|
a full path. Deprecated. Use --lc-messages-dir instead.
|
||||||
@ -8,7 +8,7 @@
|
|||||||
--lc-messages=name Set the language used for the error messages.
|
--lc-messages=name Set the language used for the error messages.
|
||||||
-L, --lc-messages-dir=name
|
-L, --lc-messages-dir=name
|
||||||
Directory where error messages are
|
Directory where error messages are
|
||||||
@@ -521,6 +520,7 @@
|
@@ -543,6 +542,7 @@
|
||||||
Use MySQL-5.6 (instead of MariaDB-5.3) format for TIME,
|
Use MySQL-5.6 (instead of MariaDB-5.3) format for TIME,
|
||||||
DATETIME, TIMESTAMP columns.
|
DATETIME, TIMESTAMP columns.
|
||||||
(Defaults to on; use --skip-mysql56-temporal-format to disable.)
|
(Defaults to on; use --skip-mysql56-temporal-format to disable.)
|
||||||
@ -16,7 +16,7 @@
|
|||||||
--net-buffer-length=#
|
--net-buffer-length=#
|
||||||
Buffer length for TCP/IP and socket communication
|
Buffer length for TCP/IP and socket communication
|
||||||
--net-read-timeout=#
|
--net-read-timeout=#
|
||||||
@@ -931,6 +931,9 @@
|
@@ -956,6 +956,9 @@
|
||||||
characteristics (isolation level, read only/read
|
characteristics (isolation level, read only/read
|
||||||
write,snapshot - but not any work done / data modified
|
write,snapshot - but not any work done / data modified
|
||||||
within the transaction).
|
within the transaction).
|
||||||
@ -26,7 +26,7 @@
|
|||||||
--show-slave-auth-info
|
--show-slave-auth-info
|
||||||
Show user and password in SHOW SLAVE HOSTS on this
|
Show user and password in SHOW SLAVE HOSTS on this
|
||||||
master.
|
master.
|
||||||
@@ -1043,6 +1046,10 @@
|
@@ -1068,6 +1071,10 @@
|
||||||
Log slow queries to given log file. Defaults logging to
|
Log slow queries to given log file. Defaults logging to
|
||||||
'hostname'-slow.log. Must be enabled to activate other
|
'hostname'-slow.log. Must be enabled to activate other
|
||||||
slow log options
|
slow log options
|
||||||
@ -37,29 +37,32 @@
|
|||||||
--socket=name Socket file to use for connection
|
--socket=name Socket file to use for connection
|
||||||
--sort-buffer-size=#
|
--sort-buffer-size=#
|
||||||
Each thread that needs to do a sort allocates a buffer of
|
Each thread that needs to do a sort allocates a buffer of
|
||||||
@@ -1061,6 +1068,7 @@
|
@@ -1086,6 +1093,7 @@
|
||||||
NO_ENGINE_SUBSTITUTION, PAD_CHAR_TO_FULL_LENGTH
|
NO_ENGINE_SUBSTITUTION, PAD_CHAR_TO_FULL_LENGTH
|
||||||
--stack-trace Print a symbolic stack trace on failure
|
--stack-trace Print a symbolic stack trace on failure
|
||||||
(Defaults to on; use --skip-stack-trace to disable.)
|
(Defaults to on; use --skip-stack-trace to disable.)
|
||||||
+ --standalone Dummy option to start as a standalone program (NT).
|
+ --standalone Dummy option to start as a standalone program (NT).
|
||||||
--standard-compliant-cte
|
--standard-compliant-cte
|
||||||
Allow only standards compiant CTE
|
Allow only CTEs compliant to SQL standard
|
||||||
(Defaults to on; use --skip-standards-compliant-cte to disable.)
|
(Defaults to on; use --skip-standard-compliant-cte to disable.)
|
||||||
@@ -1109,6 +1117,11 @@
|
@@ -1134,8 +1142,12 @@
|
||||||
--thread-pool-max-threads=#
|
--thread-pool-max-threads=#
|
||||||
Maximum allowed number of worker threads in the thread
|
Maximum allowed number of worker threads in the thread
|
||||||
pool
|
pool
|
||||||
|
- --thread-pool-oversubscribe=#
|
||||||
|
- How many additional active worker threads in a group are
|
||||||
+ --thread-pool-min-threads=#
|
+ --thread-pool-min-threads=#
|
||||||
+ Minimum number of threads in the thread pool.
|
+ Minimum number of threads in the thread pool.
|
||||||
+ --thread-pool-mode=name
|
+ --thread-pool-mode=name
|
||||||
+ Chose implementation of the threadpool. One of: windows,
|
+ Chose implementation of the threadpool. One of: windows,
|
||||||
+ generic
|
+ generic
|
||||||
--thread-pool-oversubscribe=#
|
+ --thread-pool-oversubscribe=# How many additional active worker threads in a group are
|
||||||
How many additional active worker threads in a group are
|
|
||||||
allowed.
|
allowed.
|
||||||
@@ -1139,8 +1152,8 @@
|
--thread-pool-prio-kickup-timer=#
|
||||||
size, MySQL will automatically convert it to an on-disk
|
The number of milliseconds before a dequeued low-priority
|
||||||
MyISAM or Aria table
|
@@ -1172,8 +1184,8 @@
|
||||||
|
automatically convert it to an on-disk MyISAM or Aria
|
||||||
|
table.
|
||||||
-t, --tmpdir=name Path for temporary files. Several paths may be specified,
|
-t, --tmpdir=name Path for temporary files. Several paths may be specified,
|
||||||
- separated by a colon (:), in this case they are used in a
|
- separated by a colon (:), in this case they are used in a
|
||||||
- round-robin fashion
|
- round-robin fashion
|
||||||
@ -68,7 +71,7 @@
|
|||||||
--transaction-alloc-block-size=#
|
--transaction-alloc-block-size=#
|
||||||
Allocation block size for transactions to be stored in
|
Allocation block size for transactions to be stored in
|
||||||
binary log
|
binary log
|
||||||
@@ -1264,7 +1277,6 @@
|
@@ -1298,7 +1310,6 @@
|
||||||
key-cache-division-limit 100
|
key-cache-division-limit 100
|
||||||
key-cache-file-hash-size 512
|
key-cache-file-hash-size 512
|
||||||
key-cache-segments 0
|
key-cache-segments 0
|
||||||
@ -76,7 +79,7 @@
|
|||||||
lc-messages en_US
|
lc-messages en_US
|
||||||
lc-messages-dir MYSQL_SHAREDIR/
|
lc-messages-dir MYSQL_SHAREDIR/
|
||||||
lc-time-names en_US
|
lc-time-names en_US
|
||||||
@@ -1333,6 +1345,7 @@
|
@@ -1368,6 +1379,7 @@
|
||||||
myisam-stats-method NULLS_UNEQUAL
|
myisam-stats-method NULLS_UNEQUAL
|
||||||
myisam-use-mmap FALSE
|
myisam-use-mmap FALSE
|
||||||
mysql56-temporal-format TRUE
|
mysql56-temporal-format TRUE
|
||||||
@ -84,7 +87,7 @@
|
|||||||
net-buffer-length 16384
|
net-buffer-length 16384
|
||||||
net-read-timeout 30
|
net-read-timeout 30
|
||||||
net-retry-count 10
|
net-retry-count 10
|
||||||
@@ -1434,6 +1447,8 @@
|
@@ -1469,6 +1481,8 @@
|
||||||
session-track-state-change FALSE
|
session-track-state-change FALSE
|
||||||
session-track-system-variables
|
session-track-system-variables
|
||||||
session-track-transaction-info OFF
|
session-track-transaction-info OFF
|
||||||
@ -93,15 +96,15 @@
|
|||||||
show-slave-auth-info FALSE
|
show-slave-auth-info FALSE
|
||||||
silent-startup FALSE
|
silent-startup FALSE
|
||||||
skip-grant-tables TRUE
|
skip-grant-tables TRUE
|
||||||
@@ -1458,6 +1473,7 @@
|
@@ -1493,6 +1507,7 @@
|
||||||
slave-type-conversions
|
slave-type-conversions
|
||||||
slow-launch-time 2
|
slow-launch-time 2
|
||||||
slow-query-log FALSE
|
slow-query-log FALSE
|
||||||
+slow-start-timeout 15000
|
+slow-start-timeout 15000
|
||||||
sort-buffer-size 2097152
|
sort-buffer-size 2097152
|
||||||
sql-mode NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
sql-mode STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
||||||
stack-trace TRUE
|
stack-trace TRUE
|
||||||
@@ -1471,14 +1487,16 @@
|
@@ -1506,14 +1521,16 @@
|
||||||
sync-relay-log 10000
|
sync-relay-log 10000
|
||||||
sync-relay-log-info 10000
|
sync-relay-log-info 10000
|
||||||
sysdate-is-now FALSE
|
sysdate-is-now FALSE
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Windows bug: happens when a new line is exactly at the right offset
|
Windows bug: happens when a new line is exactly at the right offset.
|
||||||
The following options may be given as the first argument:
|
The following options may be given as the first argument:
|
||||||
--print-defaults Print the program argument list and exit.
|
--print-defaults Print the program argument list and exit.
|
||||||
--no-defaults Don't read default options from any option file.
|
--no-defaults Don't read default options from any option file.
|
||||||
@ -23,13 +23,15 @@ The following options may be given as the first argument:
|
|||||||
Creating and dropping stored procedures alters ACLs
|
Creating and dropping stored procedures alters ACLs
|
||||||
(Defaults to on; use --skip-automatic-sp-privileges to disable.)
|
(Defaults to on; use --skip-automatic-sp-privileges to disable.)
|
||||||
--back-log=# The number of outstanding connection requests MariaDB can
|
--back-log=# The number of outstanding connection requests MariaDB can
|
||||||
have. This comes into play when the main MySQL thread
|
have. This comes into play when the main MariaDB thread
|
||||||
gets very many connection requests in a very short time
|
gets very many connection requests in a very short time
|
||||||
(Automatically configured unless set explicitly)
|
(Automatically configured unless set explicitly)
|
||||||
-b, --basedir=name Path to installation directory. All paths are usually
|
-b, --basedir=name Path to installation directory. All paths are usually
|
||||||
resolved relative to this
|
resolved relative to this
|
||||||
--big-tables Allow big result sets by saving all temporary sets on
|
--big-tables Old variable, which if set to 1, allows large result sets
|
||||||
file (Solves most 'table full' errors)
|
by saving all temporary sets to disk, avoiding 'table
|
||||||
|
full' errors. No longer needed, as the server now handles
|
||||||
|
this automatically. sql_big_tables is a synonym.
|
||||||
--bind-address=name IP address to bind to.
|
--bind-address=name IP address to bind to.
|
||||||
--binlog-annotate-row-events
|
--binlog-annotate-row-events
|
||||||
Tells the master to annotate RBR events with the
|
Tells the master to annotate RBR events with the
|
||||||
@ -105,7 +107,7 @@ The following options may be given as the first argument:
|
|||||||
The size of the statement cache for updates to
|
The size of the statement cache for updates to
|
||||||
non-transactional engines for the binary log. If you
|
non-transactional engines for the binary log. If you
|
||||||
often use statements updating a great number of rows, you
|
often use statements updating a great number of rows, you
|
||||||
can increase this to get more performance
|
can increase this to get more performance.
|
||||||
--bootstrap Used by mysql installation scripts.
|
--bootstrap Used by mysql installation scripts.
|
||||||
--bulk-insert-buffer-size=#
|
--bulk-insert-buffer-size=#
|
||||||
Size of tree cache used in bulk insert optimisation. Note
|
Size of tree cache used in bulk insert optimisation. Note
|
||||||
@ -159,12 +161,21 @@ The following options may be given as the first argument:
|
|||||||
--default-week-format=#
|
--default-week-format=#
|
||||||
The default week format used by WEEK() functions
|
The default week format used by WEEK() functions
|
||||||
--delay-key-write[=name]
|
--delay-key-write[=name]
|
||||||
Type of DELAY_KEY_WRITE. One of: OFF, ON, ALL
|
Specifies how MyISAM tables handles CREATE TABLE
|
||||||
|
DELAY_KEY_WRITE. If set to ON, the default, any DELAY KEY
|
||||||
|
WRITEs are honored. The key buffer is then flushed only
|
||||||
|
when the table closes, speeding up writes. MyISAM tables
|
||||||
|
should be automatically checked upon startup in this
|
||||||
|
case, and --external locking should not be used, as it
|
||||||
|
can lead to index corruption. If set to OFF, DELAY KEY
|
||||||
|
WRITEs are ignored, while if set to ALL, all new opened
|
||||||
|
tables are treated as if created with DELAY KEY WRITEs
|
||||||
|
enabled.
|
||||||
--delayed-insert-limit=#
|
--delayed-insert-limit=#
|
||||||
After inserting delayed_insert_limit rows, the INSERT
|
After inserting delayed_insert_limit rows, the INSERT
|
||||||
DELAYED handler will check if there are any SELECT
|
DELAYED handler will check if there are any SELECT
|
||||||
statements pending. If so, it allows these to execute
|
statements pending. If so, it allows these to execute
|
||||||
before continuing
|
before continuing.
|
||||||
--delayed-insert-timeout=#
|
--delayed-insert-timeout=#
|
||||||
How long a INSERT DELAYED thread should wait for INSERT
|
How long a INSERT DELAYED thread should wait for INSERT
|
||||||
statements before terminating
|
statements before terminating
|
||||||
@ -232,7 +243,7 @@ The following options may be given as the first argument:
|
|||||||
--gdb Set up signals usable for debugging. Deprecated, use
|
--gdb Set up signals usable for debugging. Deprecated, use
|
||||||
--general-log Log connections and queries to a table or log file.
|
--general-log Log connections and queries to a table or log file.
|
||||||
Defaults logging to a file 'hostname'.log or a table
|
Defaults logging to a file 'hostname'.log or a table
|
||||||
mysql.general_logif --log-output=TABLE is used
|
mysql.general_logif --log-output=TABLE is used.
|
||||||
--general-log-file=name
|
--general-log-file=name
|
||||||
Log connections and queries to given file
|
Log connections and queries to given file
|
||||||
--getopt-prefix-matching
|
--getopt-prefix-matching
|
||||||
@ -377,7 +388,7 @@ The following options may be given as the first argument:
|
|||||||
logs.
|
logs.
|
||||||
--log-slave-updates Tells the slave to log the updates from the slave thread
|
--log-slave-updates Tells the slave to log the updates from the slave thread
|
||||||
to the binary log. You will need to turn it on if you
|
to the binary log. You will need to turn it on if you
|
||||||
plan to daisy-chain the slaves
|
plan to daisy-chain the slaves.
|
||||||
--log-slow-admin-statements
|
--log-slow-admin-statements
|
||||||
Log slow OPTIMIZE, ANALYZE, ALTER and other
|
Log slow OPTIMIZE, ANALYZE, ALTER and other
|
||||||
administrative statements to the slow log if it is open.
|
administrative statements to the slow log if it is open.
|
||||||
@ -574,7 +585,7 @@ The following options may be given as the first argument:
|
|||||||
a query. Values smaller than the number of tables in a
|
a query. Values smaller than the number of tables in a
|
||||||
relation result in faster optimization, but may produce
|
relation result in faster optimization, but may produce
|
||||||
very bad query plans. If set to 0, the system will
|
very bad query plans. If set to 0, the system will
|
||||||
automatically pick a reasonable value
|
automatically pick a reasonable value.
|
||||||
--optimizer-selectivity-sampling-limit=#
|
--optimizer-selectivity-sampling-limit=#
|
||||||
Controls number of record samples to check condition
|
Controls number of record samples to check condition
|
||||||
selectivity
|
selectivity
|
||||||
@ -762,7 +773,9 @@ The following options may be given as the first argument:
|
|||||||
The size of the buffer that is allocated when preloading
|
The size of the buffer that is allocated when preloading
|
||||||
indexes
|
indexes
|
||||||
--profiling-history-size=#
|
--profiling-history-size=#
|
||||||
Limit of query profiling memory
|
Number of statements about which profiling information is
|
||||||
|
maintained. If set to 0, no profiles are stored. See SHOW
|
||||||
|
PROFILES.
|
||||||
--progress-report-time=#
|
--progress-report-time=#
|
||||||
Seconds between sending progress reports to the client
|
Seconds between sending progress reports to the client
|
||||||
for time-consuming statements. Set to 0 to disable
|
for time-consuming statements. Set to 0 to disable
|
||||||
@ -803,21 +816,21 @@ The following options may be given as the first argument:
|
|||||||
--read-rnd-buffer-size=#
|
--read-rnd-buffer-size=#
|
||||||
When reading rows in sorted order after a sort, the rows
|
When reading rows in sorted order after a sort, the rows
|
||||||
are read through this buffer to avoid a disk seeks
|
are read through this buffer to avoid a disk seeks
|
||||||
--relay-log=name The location and name to use for relay logs
|
--relay-log=name The location and name to use for relay logs.
|
||||||
--relay-log-index=name
|
--relay-log-index=name
|
||||||
The location and name to use for the file that keeps a
|
The location and name to use for the file that keeps a
|
||||||
list of the last relay logs
|
list of the last relay logs
|
||||||
--relay-log-info-file=name
|
--relay-log-info-file=name
|
||||||
The location and name of the file that remembers where
|
The location and name of the file that remembers where
|
||||||
the SQL replication thread is in the relay logs
|
the SQL replication thread is in the relay logs.
|
||||||
--relay-log-purge if disabled - do not purge relay logs. if enabled - purge
|
--relay-log-purge if disabled - do not purge relay logs. if enabled - purge
|
||||||
them as soon as they are no more needed
|
them as soon as they are no more needed.
|
||||||
(Defaults to on; use --skip-relay-log-purge to disable.)
|
(Defaults to on; use --skip-relay-log-purge to disable.)
|
||||||
--relay-log-recovery
|
--relay-log-recovery
|
||||||
Enables automatic relay log recovery right after the
|
Enables automatic relay log recovery right after the
|
||||||
database startup, which means that the IO Thread starts
|
database startup, which means that the IO Thread starts
|
||||||
re-fetching from the master right after the last
|
re-fetching from the master right after the last
|
||||||
transaction processed
|
transaction processed.
|
||||||
--relay-log-space-limit=#
|
--relay-log-space-limit=#
|
||||||
Maximum space to use for all relay logs
|
Maximum space to use for all relay logs
|
||||||
--replicate-annotate-row-events
|
--replicate-annotate-row-events
|
||||||
@ -982,7 +995,7 @@ The following options may be given as the first argument:
|
|||||||
idempotent. For example, in row based replication
|
idempotent. For example, in row based replication
|
||||||
attempts to delete rows that doesn't exist will be
|
attempts to delete rows that doesn't exist will be
|
||||||
ignored. In STRICT mode, replication will stop on any
|
ignored. In STRICT mode, replication will stop on any
|
||||||
unexpected difference between the master and the slave
|
unexpected difference between the master and the slave.
|
||||||
--slave-load-tmpdir=name
|
--slave-load-tmpdir=name
|
||||||
The location where the slave should put its temporary
|
The location where the slave should put its temporary
|
||||||
files when replicating a LOAD DATA INFILE command
|
files when replicating a LOAD DATA INFILE command
|
||||||
@ -1050,7 +1063,7 @@ The following options may be given as the first argument:
|
|||||||
--slow-query-log Log slow queries to a table or log file. Defaults logging
|
--slow-query-log Log slow queries to a table or log file. Defaults logging
|
||||||
to a file 'hostname'-slow.log or a table mysql.slow_log
|
to a file 'hostname'-slow.log or a table mysql.slow_log
|
||||||
if --log-output=TABLE is used. Must be enabled to
|
if --log-output=TABLE is used. Must be enabled to
|
||||||
activate other slow log options
|
activate other slow log options.
|
||||||
--slow-query-log-file=name
|
--slow-query-log-file=name
|
||||||
Log slow queries to given log file. Defaults logging to
|
Log slow queries to given log file. Defaults logging to
|
||||||
'hostname'-slow.log. Must be enabled to activate other
|
'hostname'-slow.log. Must be enabled to activate other
|
||||||
@ -1152,10 +1165,10 @@ The following options may be given as the first argument:
|
|||||||
MyISAM or Aria table.
|
MyISAM or Aria table.
|
||||||
--tmp-memory-table-size=#
|
--tmp-memory-table-size=#
|
||||||
If an internal in-memory temporary table exceeds this
|
If an internal in-memory temporary table exceeds this
|
||||||
size, MySQL will automatically convert it to an on-disk
|
size, MariaDB will automatically convert it to an on-disk
|
||||||
MyISAM or Aria table. Same as tmp_table_size.
|
MyISAM or Aria table. Same as tmp_table_size.
|
||||||
--tmp-table-size=# Alias for tmp_memory_table_size. If an internal in-memory
|
--tmp-table-size=# Alias for tmp_memory_table_size. If an internal in-memory
|
||||||
temporary table exceeds this size, MySQL will
|
temporary table exceeds this size, MariaDB will
|
||||||
automatically convert it to an on-disk MyISAM or Aria
|
automatically convert it to an on-disk MyISAM or Aria
|
||||||
table.
|
table.
|
||||||
-t, --tmpdir=name Path for temporary files. Several paths may be specified,
|
-t, --tmpdir=name Path for temporary files. Several paths may be specified,
|
||||||
|
@ -34,6 +34,8 @@ create temporary table t3 (a int);
|
|||||||
create temporary table t4 (a int) select * from t3;
|
create temporary table t4 (a int) select * from t3;
|
||||||
insert into t3 values(1);
|
insert into t3 values(1);
|
||||||
insert into t4 select * from t3;
|
insert into t4 select * from t3;
|
||||||
|
create table t3 (a int);
|
||||||
|
ERROR HY000: The MariaDB server is running with the --read-only option so it cannot execute this statement
|
||||||
update t1,t3 set t1.a=t3.a+1 where t1.a=t3.a;
|
update t1,t3 set t1.a=t3.a+1 where t1.a=t3.a;
|
||||||
ERROR HY000: The MariaDB server is running with the --read-only option so it cannot execute this statement
|
ERROR HY000: The MariaDB server is running with the --read-only option so it cannot execute this statement
|
||||||
update t1,t3 set t3.a=t1.a+1 where t1.a=t3.a;
|
update t1,t3 set t3.a=t1.a+1 where t1.a=t3.a;
|
||||||
|
@ -12,7 +12,7 @@ create function bug14233_f() returns int
|
|||||||
return 42;
|
return 42;
|
||||||
create table t1 (id int);
|
create table t1 (id int);
|
||||||
create trigger t1_ai after insert on t1 for each row call bug14233();
|
create trigger t1_ai after insert on t1 for each row call bug14233();
|
||||||
alter table mysql.proc drop type;
|
alter table mysql.proc drop security_type;
|
||||||
call bug14233();
|
call bug14233();
|
||||||
ERROR HY000: Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
|
ERROR HY000: Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
|
||||||
create view v1 as select bug14233_f();
|
create view v1 as select bug14233_f();
|
||||||
@ -142,7 +142,7 @@ drop database if exists mysqltest;
|
|||||||
flush table mysql.proc;
|
flush table mysql.proc;
|
||||||
create database mysqltest;
|
create database mysqltest;
|
||||||
# Corrupt mysql.proc to make it unusable by current version of server.
|
# Corrupt mysql.proc to make it unusable by current version of server.
|
||||||
alter table mysql.proc drop column type;
|
alter table mysql.proc drop column security_type;
|
||||||
# The below statement should not cause assertion failure.
|
# The below statement should not cause assertion failure.
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
Warnings:
|
Warnings:
|
||||||
|
@ -8129,6 +8129,23 @@ c 1
|
|||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-13346: CURSOR a query with GROUP BY using derived table
|
||||||
|
#
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE c CURSOR FOR
|
||||||
|
SELECT
|
||||||
|
IFNULL(NULL,1) AS col
|
||||||
|
FROM
|
||||||
|
( select 1 as id ) AS t
|
||||||
|
GROUP BY t.id
|
||||||
|
;
|
||||||
|
OPEN c;
|
||||||
|
END
|
||||||
|
|
|
||||||
|
CALL p1();
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
#
|
||||||
# Start of 10.3 tests
|
# Start of 10.3 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -1162,7 +1162,7 @@ test t2 idx4 1 6.2000
|
|||||||
test t2 idx4 2 1.7222
|
test t2 idx4 2 1.7222
|
||||||
test t2 idx4 3 1.1154
|
test t2 idx4 3 1.1154
|
||||||
test t2 idx4 4 1.0000
|
test t2 idx4 4 1.0000
|
||||||
ALTER TABLE t2 DROP COLUMN b;
|
ALTER TABLE t2 DROP COLUMN b, DROP PRIMARY KEY, ADD PRIMARY KEY(a);
|
||||||
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
|
SELECT * FROM mysql.index_stats ORDER BY index_name, prefix_arity, table_name;
|
||||||
db_name table_name index_name prefix_arity avg_frequency
|
db_name table_name index_name prefix_arity avg_frequency
|
||||||
test t2 idx2 1 7.0000
|
test t2 idx2 1 7.0000
|
||||||
|
@ -7201,6 +7201,21 @@ SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
|||||||
ERROR 21000: Subquery returns more than 1 row
|
ERROR 21000: Subquery returns more than 1 row
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
CREATE TABLE t1 (f1 INT, KEY(f1)) ENGINE=MyISAM;
|
||||||
|
INSERT t1 VALUES (4),(8);
|
||||||
|
CREATE TABLE t2 (f2 INT, KEY(f2)) ENGINE=MyISAM;
|
||||||
|
INSERT t2 VALUES (6);
|
||||||
|
SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
(SELECT MAX(sq.f2) FROM t1)
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# Disable this query till MDEV-13399 is resolved
|
||||||
|
#
|
||||||
|
# INSERT t2 VALUES (9);
|
||||||
|
# --error ER_SUBQUERY_NO_1_ROW
|
||||||
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
#
|
||||||
|
drop table t1, t2;
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -7201,6 +7201,21 @@ SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
|||||||
ERROR 21000: Subquery returns more than 1 row
|
ERROR 21000: Subquery returns more than 1 row
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
CREATE TABLE t1 (f1 INT, KEY(f1)) ENGINE=MyISAM;
|
||||||
|
INSERT t1 VALUES (4),(8);
|
||||||
|
CREATE TABLE t2 (f2 INT, KEY(f2)) ENGINE=MyISAM;
|
||||||
|
INSERT t2 VALUES (6);
|
||||||
|
SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
(SELECT MAX(sq.f2) FROM t1)
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# Disable this query till MDEV-13399 is resolved
|
||||||
|
#
|
||||||
|
# INSERT t2 VALUES (9);
|
||||||
|
# --error ER_SUBQUERY_NO_1_ROW
|
||||||
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
#
|
||||||
|
drop table t1, t2;
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -7194,6 +7194,21 @@ SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
|||||||
ERROR 21000: Subquery returns more than 1 row
|
ERROR 21000: Subquery returns more than 1 row
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
CREATE TABLE t1 (f1 INT, KEY(f1)) ENGINE=MyISAM;
|
||||||
|
INSERT t1 VALUES (4),(8);
|
||||||
|
CREATE TABLE t2 (f2 INT, KEY(f2)) ENGINE=MyISAM;
|
||||||
|
INSERT t2 VALUES (6);
|
||||||
|
SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
(SELECT MAX(sq.f2) FROM t1)
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# Disable this query till MDEV-13399 is resolved
|
||||||
|
#
|
||||||
|
# INSERT t2 VALUES (9);
|
||||||
|
# --error ER_SUBQUERY_NO_1_ROW
|
||||||
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
#
|
||||||
|
drop table t1, t2;
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -7192,6 +7192,21 @@ SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
|||||||
ERROR 21000: Subquery returns more than 1 row
|
ERROR 21000: Subquery returns more than 1 row
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
CREATE TABLE t1 (f1 INT, KEY(f1)) ENGINE=MyISAM;
|
||||||
|
INSERT t1 VALUES (4),(8);
|
||||||
|
CREATE TABLE t2 (f2 INT, KEY(f2)) ENGINE=MyISAM;
|
||||||
|
INSERT t2 VALUES (6);
|
||||||
|
SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
(SELECT MAX(sq.f2) FROM t1)
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# Disable this query till MDEV-13399 is resolved
|
||||||
|
#
|
||||||
|
# INSERT t2 VALUES (9);
|
||||||
|
# --error ER_SUBQUERY_NO_1_ROW
|
||||||
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
#
|
||||||
|
drop table t1, t2;
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -7207,6 +7207,21 @@ SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
|||||||
ERROR 21000: Subquery returns more than 1 row
|
ERROR 21000: Subquery returns more than 1 row
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
CREATE TABLE t1 (f1 INT, KEY(f1)) ENGINE=MyISAM;
|
||||||
|
INSERT t1 VALUES (4),(8);
|
||||||
|
CREATE TABLE t2 (f2 INT, KEY(f2)) ENGINE=MyISAM;
|
||||||
|
INSERT t2 VALUES (6);
|
||||||
|
SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
(SELECT MAX(sq.f2) FROM t1)
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# Disable this query till MDEV-13399 is resolved
|
||||||
|
#
|
||||||
|
# INSERT t2 VALUES (9);
|
||||||
|
# --error ER_SUBQUERY_NO_1_ROW
|
||||||
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
#
|
||||||
|
drop table t1, t2;
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -7192,6 +7192,21 @@ SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
|||||||
ERROR 21000: Subquery returns more than 1 row
|
ERROR 21000: Subquery returns more than 1 row
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
CREATE TABLE t1 (f1 INT, KEY(f1)) ENGINE=MyISAM;
|
||||||
|
INSERT t1 VALUES (4),(8);
|
||||||
|
CREATE TABLE t2 (f2 INT, KEY(f2)) ENGINE=MyISAM;
|
||||||
|
INSERT t2 VALUES (6);
|
||||||
|
SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
(SELECT MAX(sq.f2) FROM t1)
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# Disable this query till MDEV-13399 is resolved
|
||||||
|
#
|
||||||
|
# INSERT t2 VALUES (9);
|
||||||
|
# --error ER_SUBQUERY_NO_1_ROW
|
||||||
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
|
#
|
||||||
|
drop table t1, t2;
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -115,3 +115,9 @@ k d1 d2
|
|||||||
set optimizer_switch= @tmp_subselect_nulls;
|
set optimizer_switch= @tmp_subselect_nulls;
|
||||||
drop table x1;
|
drop table x1;
|
||||||
drop table x2;
|
drop table x2;
|
||||||
|
select (select 1, 2) in (select 3, 4);
|
||||||
|
(select 1, 2) in (select 3, 4)
|
||||||
|
0
|
||||||
|
select (select NULL, NULL) in (select 3, 4);
|
||||||
|
(select NULL, NULL) in (select 3, 4)
|
||||||
|
NULL
|
||||||
|
@ -2,19 +2,21 @@ create or replace table t1(a json);
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` text DEFAULT NULL
|
`a` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
create or replace table t1(a json character set utf8 default '{a:1}');
|
create or replace table t1(a json character set utf8);
|
||||||
|
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 'character set utf8)' at line 1
|
||||||
|
create or replace table t1(a json default '{a:1}');
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` text CHARACTER SET utf8 DEFAULT '{a:1}'
|
`a` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '{a:1}'
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
create or replace table t1(a json binary not null check (json_valid(a)));
|
create or replace table t1(a json not null check (json_valid(a)));
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` text CHARACTER SET latin1 COLLATE latin1_bin NOT NULL CHECK (json_valid(`a`))
|
`a` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`a`))
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
insert t1 values ('[]');
|
insert t1 values ('[]');
|
||||||
insert t1 values ('a');
|
insert t1 values ('a');
|
||||||
@ -24,7 +26,7 @@ create or replace table t1(a json default(json_object('now', now())));
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` text DEFAULT json_object('now',current_timestamp())
|
`a` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT json_object('now',current_timestamp())
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
insert t1 values ();
|
insert t1 values ();
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
@ -1219,9 +1219,6 @@ Warning 1292 Truncated incorrect INTEGER value: '1E+'
|
|||||||
Warning 1292 Truncated incorrect DECIMAL value: '1E+'
|
Warning 1292 Truncated incorrect DECIMAL value: '1E+'
|
||||||
Warning 1292 Truncated incorrect DOUBLE value: '1E+'
|
Warning 1292 Truncated incorrect DOUBLE value: '1E+'
|
||||||
#
|
#
|
||||||
# End of 10.0 tests
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Start of 10.1 tests
|
# Start of 10.1 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
@ -1247,5 +1244,17 @@ Warning 1292 Truncated incorrect DOUBLE value: ''
|
|||||||
Warning 1292 Truncated incorrect DOUBLE value: ''
|
Warning 1292 Truncated incorrect DOUBLE value: ''
|
||||||
Warning 1292 Truncated incorrect DOUBLE value: ''
|
Warning 1292 Truncated incorrect DOUBLE value: ''
|
||||||
#
|
#
|
||||||
# Start of 10.1 tests
|
# Start of 10.2 tests
|
||||||
#
|
#
|
||||||
|
CREATE TABLE t1 (a INT SIGNED ZEROFILL);
|
||||||
|
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 'ZEROFILL)' at line 1
|
||||||
|
CREATE TABLE t1 (a INT SIGNED UNSIGNED);
|
||||||
|
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 'UNSIGNED)' at line 1
|
||||||
|
CREATE TABLE t1 (a INT ZEROFILL UNSIGNED ZEROFILL);
|
||||||
|
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 'ZEROFILL)' at line 1
|
||||||
|
CREATE OR REPLACE TABLE t1 (a INT SIGNED);
|
||||||
|
CREATE OR REPLACE TABLE t1 (a INT UNSIGNED);
|
||||||
|
CREATE OR REPLACE TABLE t1 (a INT ZEROFILL);
|
||||||
|
CREATE OR REPLACE TABLE t1 (a INT UNSIGNED ZEROFILL);
|
||||||
|
CREATE OR REPLACE TABLE t1 (a INT ZEROFILL UNSIGNED);
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -2077,6 +2077,24 @@ d
|
|||||||
2016-06-04 00:00:00
|
2016-06-04 00:00:00
|
||||||
drop table t1;
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
create table t1 (a int, b int);
|
||||||
|
insert into t1 values (1,1),(2,2),(3,3);
|
||||||
|
create table t2 (c varchar(30), d varchar(30));
|
||||||
|
insert into t1 values ('1','1'),('2','2'),('4','4');
|
||||||
|
create table t3 (e int, f int);
|
||||||
|
insert into t3 values (1,1),(2,2),(31,31),(32,32);
|
||||||
|
select e,f, (e , f) in (select e,b from t1 union select c,d from t2) as sub from t3;
|
||||||
|
e f sub
|
||||||
|
1 1 1
|
||||||
|
2 2 1
|
||||||
|
31 31 0
|
||||||
|
32 32 0
|
||||||
|
select avg(f), (e , f) in (select e,b from t1 union select c,d from t2) as sub from t3 group by sub;
|
||||||
|
avg(f) sub
|
||||||
|
31.5000 0
|
||||||
|
1.5000 1
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
End of 5.5 tests
|
||||||
#
|
#
|
||||||
# WL#1763 Avoid creating temporary table in UNION ALL
|
# WL#1763 Avoid creating temporary table in UNION ALL
|
||||||
#
|
#
|
||||||
|
@ -5680,6 +5680,17 @@ Warnings:
|
|||||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`c` AS `c`,`test`.`t2`.`d` AS `d`,`test`.`t3`.`e` AS `e`,`test`.`t3`.`f` AS `f` from `test`.`t1` left join (`test`.`t2` join `test`.`t3`) on(`test`.`t2`.`c` = `test`.`t1`.`b` and `test`.`t3`.`f` = `test`.`t1`.`a` and `test`.`t2`.`d` = `test`.`t3`.`e` and `test`.`t1`.`a` is not null and `test`.`t1`.`a` is not null and `test`.`t1`.`b` is not null) where `test`.`t1`.`a` < 5
|
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`c` AS `c`,`test`.`t2`.`d` AS `d`,`test`.`t3`.`e` AS `e`,`test`.`t3`.`f` AS `f` from `test`.`t1` left join (`test`.`t2` join `test`.`t3`) on(`test`.`t2`.`c` = `test`.`t1`.`b` and `test`.`t3`.`f` = `test`.`t1`.`a` and `test`.`t2`.`d` = `test`.`t3`.`e` and `test`.`t1`.`a` is not null and `test`.`t1`.`a` is not null and `test`.`t1`.`b` is not null) where `test`.`t1`.`a` < 5
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
|
#
|
||||||
|
# MDEV-11240: Server crashes in check_view_single_update or
|
||||||
|
# Assertion `derived->table' failed in mysql_derived_merge_for_insert
|
||||||
|
#
|
||||||
|
CREATE TABLE t3 (a INT);
|
||||||
|
CREATE ALGORITHM = MERGE VIEW v1 AS SELECT t2.a FROM t3 AS t1, t3 AS t2;
|
||||||
|
CREATE ALGORITHM = MERGE VIEW v2 AS SELECT * FROM v1;
|
||||||
|
PREPARE stmt FROM 'REPLACE INTO v2 SELECT a FROM t3';
|
||||||
|
ERROR HY000: Can not insert into join view 'test.v2' without fields list
|
||||||
|
drop view v1,v2;
|
||||||
|
drop table t3;
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# -- End of 5.5 tests.
|
# -- End of 5.5 tests.
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
|
@ -326,8 +326,8 @@ fid IsClosed(g)
|
|||||||
116 0
|
116 0
|
||||||
SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon ORDER by fid;
|
SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon ORDER by fid;
|
||||||
fid AsText(Centroid(g))
|
fid AsText(Centroid(g))
|
||||||
117 POINT(55.58852775304245 17.426536064113982)
|
117 POINT(57.98031067576927 17.854754130800433)
|
||||||
118 POINT(55.58852775304245 17.426536064113982)
|
118 POINT(57.98031067576927 17.854754130800433)
|
||||||
119 POINT(2 2)
|
119 POINT(2 2)
|
||||||
SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid;
|
SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid;
|
||||||
fid Area(g)
|
fid Area(g)
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
#### Setup tables ####
|
#### Setup tables ####
|
||||||
CREATE TABLE t0 (a CHAR(100));
|
CREATE TABLE t0 (a CHAR(200));
|
||||||
CREATE TABLE t1 (a CHAR(100));
|
CREATE TABLE t1 (a CHAR(200));
|
||||||
CREATE TABLE t2 (a CHAR(100));
|
CREATE TABLE t2 (a CHAR(200));
|
||||||
CREATE TABLE t3 (a CHAR(100));
|
CREATE TABLE t3 (a CHAR(200));
|
||||||
CREATE TABLE ta0 (a CHAR(100));
|
CREATE TABLE ta0 (a CHAR(200));
|
||||||
CREATE TABLE ta1 (a CHAR(100));
|
CREATE TABLE ta1 (a CHAR(200));
|
||||||
CREATE TABLE ta2 (a CHAR(100));
|
CREATE TABLE ta2 (a CHAR(200));
|
||||||
CREATE TABLE ta3 (a CHAR(100));
|
CREATE TABLE ta3 (a CHAR(200));
|
||||||
CREATE TABLE autoinc_table (a INT PRIMARY KEY AUTO_INCREMENT);
|
CREATE TABLE autoinc_table (a INT PRIMARY KEY AUTO_INCREMENT);
|
||||||
CREATE TABLE data_table (a CHAR(100));
|
CREATE TABLE data_table (a CHAR(200));
|
||||||
INSERT INTO data_table VALUES ('foo');
|
INSERT INTO data_table VALUES ('foo');
|
||||||
CREATE TABLE trigger_table_1 (a INT);
|
CREATE TABLE trigger_table_1 (a INT);
|
||||||
CREATE TABLE trigger_table_2 (a INT);
|
CREATE TABLE trigger_table_2 (a INT);
|
||||||
@ -2357,7 +2357,7 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
|||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (a VARCHAR(100), b VARCHAR(100));
|
CREATE TABLE t1 (a VARCHAR(200), b VARCHAR(200));
|
||||||
INSERT INTO t1 VALUES ('a','b');
|
INSERT INTO t1 VALUES ('a','b');
|
||||||
UPDATE t1 SET b = '%s%s%s%s%s%s%s%s%s%s%s%s%s%s' WHERE a = 'a' LIMIT 1;
|
UPDATE t1 SET b = '%s%s%s%s%s%s%s%s%s%s%s%s%s%s' WHERE a = 'a' LIMIT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
@ -2388,7 +2388,7 @@ CREATE FUNCTION fun_check_log_bin() RETURNS INT
|
|||||||
BEGIN
|
BEGIN
|
||||||
SET @@SQL_LOG_BIN = 0;
|
SET @@SQL_LOG_BIN = 0;
|
||||||
INSERT INTO t1 VALUES(@@global.sync_binlog);
|
INSERT INTO t1 VALUES(@@global.sync_binlog);
|
||||||
RETURN 100;
|
RETURN 200;
|
||||||
END|
|
END|
|
||||||
"One unsafe warning should be issued in the following statement"
|
"One unsafe warning should be issued in the following statement"
|
||||||
SELECT fun_check_log_bin();
|
SELECT fun_check_log_bin();
|
||||||
|
@ -106,16 +106,16 @@ call mtr.add_suppression("Unsafe statement written to the binary log using state
|
|||||||
|
|
||||||
--echo #### Setup tables ####
|
--echo #### Setup tables ####
|
||||||
|
|
||||||
CREATE TABLE t0 (a CHAR(100));
|
CREATE TABLE t0 (a CHAR(200));
|
||||||
CREATE TABLE t1 (a CHAR(100));
|
CREATE TABLE t1 (a CHAR(200));
|
||||||
CREATE TABLE t2 (a CHAR(100));
|
CREATE TABLE t2 (a CHAR(200));
|
||||||
CREATE TABLE t3 (a CHAR(100));
|
CREATE TABLE t3 (a CHAR(200));
|
||||||
CREATE TABLE ta0 (a CHAR(100));
|
CREATE TABLE ta0 (a CHAR(200));
|
||||||
CREATE TABLE ta1 (a CHAR(100));
|
CREATE TABLE ta1 (a CHAR(200));
|
||||||
CREATE TABLE ta2 (a CHAR(100));
|
CREATE TABLE ta2 (a CHAR(200));
|
||||||
CREATE TABLE ta3 (a CHAR(100));
|
CREATE TABLE ta3 (a CHAR(200));
|
||||||
CREATE TABLE autoinc_table (a INT PRIMARY KEY AUTO_INCREMENT);
|
CREATE TABLE autoinc_table (a INT PRIMARY KEY AUTO_INCREMENT);
|
||||||
CREATE TABLE data_table (a CHAR(100));
|
CREATE TABLE data_table (a CHAR(200));
|
||||||
INSERT INTO data_table VALUES ('foo');
|
INSERT INTO data_table VALUES ('foo');
|
||||||
CREATE TABLE trigger_table_1 (a INT);
|
CREATE TABLE trigger_table_1 (a INT);
|
||||||
CREATE TABLE trigger_table_2 (a INT);
|
CREATE TABLE trigger_table_2 (a INT);
|
||||||
@ -429,7 +429,7 @@ DROP TABLE t1;
|
|||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
CREATE TABLE t1 (a VARCHAR(100), b VARCHAR(100));
|
CREATE TABLE t1 (a VARCHAR(200), b VARCHAR(200));
|
||||||
INSERT INTO t1 VALUES ('a','b');
|
INSERT INTO t1 VALUES ('a','b');
|
||||||
UPDATE t1 SET b = '%s%s%s%s%s%s%s%s%s%s%s%s%s%s' WHERE a = 'a' LIMIT 1;
|
UPDATE t1 SET b = '%s%s%s%s%s%s%s%s%s%s%s%s%s%s' WHERE a = 'a' LIMIT 1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@ -467,7 +467,7 @@ CREATE FUNCTION fun_check_log_bin() RETURNS INT
|
|||||||
BEGIN
|
BEGIN
|
||||||
SET @@SQL_LOG_BIN = 0;
|
SET @@SQL_LOG_BIN = 0;
|
||||||
INSERT INTO t1 VALUES(@@global.sync_binlog);
|
INSERT INTO t1 VALUES(@@global.sync_binlog);
|
||||||
RETURN 100;
|
RETURN 200;
|
||||||
END|
|
END|
|
||||||
DELIMITER ;|
|
DELIMITER ;|
|
||||||
--echo "One unsafe warning should be issued in the following statement"
|
--echo "One unsafe warning should be issued in the following statement"
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
call mtr.add_suppression("Plugin 'file_key_management'");
|
call mtr.add_suppression("Plugin 'file_key_management'");
|
||||||
call mtr.add_suppression("Plugin 'InnoDB' init function returned error.");
|
call mtr.add_suppression("Plugin 'InnoDB' init function returned error.");
|
||||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[1-9][0-9]*, page number=[0-9]+\] in file test/t[1-4] cannot be decrypted");
|
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[0-9]+\\] in file test/t[1-4] cannot be decrypted");
|
||||||
|
call mtr.add_suppression("InnoDB: Unable to decompress .*.test.t1\\.ibd\\[page id: space=[1-9][0-9]*, page number=[0-9]+\\]");
|
||||||
|
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t1 page \\[page id: space=[1-9][0-9]*, page number=[0-9]*\\]");
|
||||||
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
|
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
|
||||||
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
|
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
|
||||||
# Restart mysqld --file-key-management-filename=keys2.txt
|
# Restart mysqld --file-key-management-filename=keys2.txt
|
||||||
|
@ -37,8 +37,6 @@ NOT FOUND /private|secret|sacr(ed|ament)|success|story|secur(e|ity)/ in ibdata1
|
|||||||
NOT FOUND /private|secret|sacr(ed|ament)|success|story|secur(e|ity)/ in t0.ibd
|
NOT FOUND /private|secret|sacr(ed|ament)|success|story|secur(e|ity)/ in t0.ibd
|
||||||
# ib_logfile0 expecting NOT FOUND
|
# ib_logfile0 expecting NOT FOUND
|
||||||
NOT FOUND /private|secret|sacr(ed|ament)|success|story|secur(e|ity)/ in ib_logfile0
|
NOT FOUND /private|secret|sacr(ed|ament)|success|story|secur(e|ity)/ in ib_logfile0
|
||||||
# ib_logfile1 expecting NOT FOUND
|
|
||||||
NOT FOUND /private|secret|sacr(ed|ament)|success|story|secur(e|ity)/ in ib_logfile1
|
|
||||||
# Restart without redo log encryption
|
# Restart without redo log encryption
|
||||||
SELECT COUNT(*) FROM t0;
|
SELECT COUNT(*) FROM t0;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
|
7
mysql-test/suite/encryption/r/second_plugin-12863.result
Normal file
7
mysql-test/suite/encryption/r/second_plugin-12863.result
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
call mtr.add_suppression('debug.key.management');
|
||||||
|
install soname 'debug_key_management';
|
||||||
|
ERROR HY000: Can't initialize function 'debug_key_management'; Plugin initialization function failed.
|
||||||
|
create table t1 (a varchar(255)) engine=innodb encrypted=yes;
|
||||||
|
create table t2 (a varchar(255)) engine=innodb;
|
||||||
|
create table t3 (a varchar(255)) engine=innodb encrypted=no;
|
||||||
|
drop table t1, t2, t3;
|
@ -2,7 +2,6 @@
|
|||||||
# MDEV-8773: InnoDB innochecksum does not work with encrypted or page compressed tables
|
# MDEV-8773: InnoDB innochecksum does not work with encrypted or page compressed tables
|
||||||
#
|
#
|
||||||
|
|
||||||
--source include/innodb_page_size_small.inc
|
|
||||||
# Don't test under embedded as we restart server
|
# Don't test under embedded as we restart server
|
||||||
-- source include/not_embedded.inc
|
-- source include/not_embedded.inc
|
||||||
# Require InnoDB
|
# Require InnoDB
|
||||||
|
@ -5,7 +5,9 @@
|
|||||||
|
|
||||||
call mtr.add_suppression("Plugin 'file_key_management'");
|
call mtr.add_suppression("Plugin 'file_key_management'");
|
||||||
call mtr.add_suppression("Plugin 'InnoDB' init function returned error.");
|
call mtr.add_suppression("Plugin 'InnoDB' init function returned error.");
|
||||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[1-9][0-9]*, page number=[0-9]+\] in file test/t[1-4] cannot be decrypted");
|
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[0-9]+\\] in file test/t[1-4] cannot be decrypted");
|
||||||
|
call mtr.add_suppression("InnoDB: Unable to decompress .*.test.t1\\.ibd\\[page id: space=[1-9][0-9]*, page number=[0-9]+\\]");
|
||||||
|
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t1 page \\[page id: space=[1-9][0-9]*, page number=[0-9]*\\]");
|
||||||
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
|
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
|
||||||
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
|
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
|
||||||
|
|
||||||
|
@ -3,4 +3,5 @@
|
|||||||
--plugin-load-add=$FILE_KEY_MANAGEMENT_SO
|
--plugin-load-add=$FILE_KEY_MANAGEMENT_SO
|
||||||
--loose-file-key-management
|
--loose-file-key-management
|
||||||
--loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/logkey.txt
|
--loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/logkey.txt
|
||||||
|
--innodb-log-files-in-group=1
|
||||||
--file-key-management-encryption-algorithm=aes_cbc
|
--file-key-management-encryption-algorithm=aes_cbc
|
||||||
|
@ -57,9 +57,6 @@ INSERT INTO t0
|
|||||||
--echo # ib_logfile0 expecting NOT FOUND
|
--echo # ib_logfile0 expecting NOT FOUND
|
||||||
-- let SEARCH_FILE=$MYSQLD_DATADIR/ib_logfile0
|
-- let SEARCH_FILE=$MYSQLD_DATADIR/ib_logfile0
|
||||||
-- source include/search_pattern_in_file.inc
|
-- source include/search_pattern_in_file.inc
|
||||||
--echo # ib_logfile1 expecting NOT FOUND
|
|
||||||
-- let SEARCH_FILE=$MYSQLD_DATADIR/ib_logfile1
|
|
||||||
-- source include/search_pattern_in_file.inc
|
|
||||||
|
|
||||||
--echo # Restart without redo log encryption
|
--echo # Restart without redo log encryption
|
||||||
-- let $restart_parameters=--skip-innodb-encrypt-log --innodb-log-files-in-group=1
|
-- let $restart_parameters=--skip-innodb-encrypt-log --innodb-log-files-in-group=1
|
||||||
|
16
mysql-test/suite/encryption/t/second_plugin-12863.test
Normal file
16
mysql-test/suite/encryption/t/second_plugin-12863.test
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#
|
||||||
|
# MDEV-12863 No table can be created after second encryption plugin attempted to load
|
||||||
|
#
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/have_file_key_management_plugin.inc
|
||||||
|
|
||||||
|
call mtr.add_suppression('debug.key.management');
|
||||||
|
|
||||||
|
--error 1123
|
||||||
|
install soname 'debug_key_management';
|
||||||
|
|
||||||
|
create table t1 (a varchar(255)) engine=innodb encrypted=yes;
|
||||||
|
create table t2 (a varchar(255)) engine=innodb;
|
||||||
|
create table t3 (a varchar(255)) engine=innodb encrypted=no;
|
||||||
|
|
||||||
|
drop table t1, t2, t3;
|
10
mysql-test/suite/federated/net_thd_crash-12725.result
Normal file
10
mysql-test/suite/federated/net_thd_crash-12725.result
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
SET GLOBAL query_cache_size= 16*1024*1024;
|
||||||
|
SET GLOBAL query_cache_type= 1;
|
||||||
|
CREATE TABLE t1 (i INT);
|
||||||
|
CREATE TABLE t2 (i INT) ENGINE=FEDERATED CONNECTION="mysql://root@localhost:MASTER_MYPORT/test/t1";
|
||||||
|
ALTER TABLE t2 DISABLE KEYS;
|
||||||
|
ERROR HY000: Storage engine FEDERATED of the table `test`.`t2` doesn't have this option
|
||||||
|
CREATE TABLE t3 (i INT) ENGINE=FEDERATED CONNECTION="mysql://root@localhost:MASTER_MYPORT/test/t1";
|
||||||
|
SET GLOBAL query_cache_size= default;
|
||||||
|
SET GLOBAL query_cache_type= default;
|
||||||
|
drop table t1, t2, t3;
|
17
mysql-test/suite/federated/net_thd_crash-12725.test
Normal file
17
mysql-test/suite/federated/net_thd_crash-12725.test
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#
|
||||||
|
# MDEV-12725 select on federated table crashes server
|
||||||
|
#
|
||||||
|
#
|
||||||
|
SET GLOBAL query_cache_size= 16*1024*1024;
|
||||||
|
SET GLOBAL query_cache_type= 1;
|
||||||
|
CREATE TABLE t1 (i INT);
|
||||||
|
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||||
|
eval CREATE TABLE t2 (i INT) ENGINE=FEDERATED CONNECTION="mysql://root@localhost:$MASTER_MYPORT/test/t1";
|
||||||
|
--error ER_ILLEGAL_HA
|
||||||
|
ALTER TABLE t2 DISABLE KEYS;
|
||||||
|
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||||
|
eval CREATE TABLE t3 (i INT) ENGINE=FEDERATED CONNECTION="mysql://root@localhost:$MASTER_MYPORT/test/t1";
|
||||||
|
source include/restart_mysqld.inc;
|
||||||
|
SET GLOBAL query_cache_size= default;
|
||||||
|
SET GLOBAL query_cache_type= default;
|
||||||
|
drop table t1, t2, t3;
|
@ -232,12 +232,6 @@ eval $my_select;
|
|||||||
ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f4,first_col);
|
ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f4,first_col);
|
||||||
eval $my_select;
|
eval $my_select;
|
||||||
#
|
#
|
||||||
# Check DROP COLUMN
|
|
||||||
eval $my_select;
|
|
||||||
ALTER TABLE db_datadict.t1_my_tablex
|
|
||||||
DROP COLUMN first_col;
|
|
||||||
eval $my_select;
|
|
||||||
#
|
|
||||||
# Check impact of DROP TABLE
|
# Check impact of DROP TABLE
|
||||||
SELECT table_name, column_name
|
SELECT table_name, column_name
|
||||||
FROM information_schema.key_column_usage
|
FROM information_schema.key_column_usage
|
||||||
@ -328,7 +322,7 @@ if (!$mysql_errno)
|
|||||||
INSERT INTO information_schema.key_column_usage
|
INSERT INTO information_schema.key_column_usage
|
||||||
SELECT * FROM information_schema.key_column_usage;
|
SELECT * FROM information_schema.key_column_usage;
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR,ER_NON_UPDATABLE_TABLE
|
||||||
UPDATE information_schema.key_column_usage
|
UPDATE information_schema.key_column_usage
|
||||||
SET table_name = 'db1' WHERE constraint_name = 'primary';
|
SET table_name = 'db1' WHERE constraint_name = 'primary';
|
||||||
|
|
||||||
|
@ -441,7 +441,7 @@ ENGINE = $engine_type;
|
|||||||
INSERT INTO information_schema.tables
|
INSERT INTO information_schema.tables
|
||||||
SELECT * FROM information_schema.tables;
|
SELECT * FROM information_schema.tables;
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR,ER_NON_UPDATABLE_TABLE
|
||||||
UPDATE information_schema.tables SET table_schema = 'test'
|
UPDATE information_schema.tables SET table_schema = 'test'
|
||||||
WHERE table_name = 't1';
|
WHERE table_name = 't1';
|
||||||
|
|
||||||
|
@ -236,7 +236,7 @@ ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
|
|||||||
INSERT INTO information_schema.triggers
|
INSERT INTO information_schema.triggers
|
||||||
SELECT * FROM information_schema.triggers;
|
SELECT * FROM information_schema.triggers;
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR,ER_NON_UPDATABLE_TABLE
|
||||||
UPDATE information_schema.triggers SET trigger_schema = 'test'
|
UPDATE information_schema.triggers SET trigger_schema = 'test'
|
||||||
WHERE table_name = 't1';
|
WHERE table_name = 't1';
|
||||||
|
|
||||||
|
@ -278,7 +278,7 @@ SELECT * FROM information_schema.views;
|
|||||||
INSERT INTO information_schema.views(table_schema, table_name)
|
INSERT INTO information_schema.views(table_schema, table_name)
|
||||||
VALUES ('db2', 'v2');
|
VALUES ('db2', 'v2');
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR,ER_NON_UPDATABLE_TABLE
|
||||||
UPDATE information_schema.views SET table_schema = 'test'
|
UPDATE information_schema.views SET table_schema = 'test'
|
||||||
WHERE table_name = 't1';
|
WHERE table_name = 't1';
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ INSERT INTO information_schema.character_sets
|
|||||||
SELECT * FROM information_schema.character_sets;
|
SELECT * FROM information_schema.character_sets;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.character_sets SET description = 'just updated';
|
UPDATE information_schema.character_sets SET description = 'just updated';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.character_sets WHERE table_name = 't1';
|
DELETE FROM information_schema.character_sets WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.character_sets;
|
TRUNCATE information_schema.character_sets;
|
||||||
|
@ -52,10 +52,10 @@ SELECT * FROM information_schema.collation_character_set_applicability;
|
|||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.collation_character_set_applicability
|
UPDATE information_schema.collation_character_set_applicability
|
||||||
SET collation_name = 'big6_chinese_ci' WHERE character_set_name = 'big6';
|
SET collation_name = 'big6_chinese_ci' WHERE character_set_name = 'big6';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
UPDATE information_schema.collation_character_set_applicability
|
UPDATE information_schema.collation_character_set_applicability
|
||||||
SET character_set_name = 't_4711';
|
SET character_set_name = 't_4711';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.collation_character_set_applicability;
|
DELETE FROM information_schema.collation_character_set_applicability;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.collation_character_set_applicability;
|
TRUNCATE information_schema.collation_character_set_applicability;
|
||||||
|
@ -67,7 +67,7 @@ INSERT INTO information_schema.collations
|
|||||||
VALUES ( 'cp1251_bin', 'cp1251',50, '', '',0);
|
VALUES ( 'cp1251_bin', 'cp1251',50, '', '',0);
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.collations SET description = 'just updated';
|
UPDATE information_schema.collations SET description = 'just updated';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.collations WHERE table_name = 't1';
|
DELETE FROM information_schema.collations WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.collations;
|
TRUNCATE information_schema.collations;
|
||||||
|
@ -64,7 +64,7 @@ INSERT INTO information_schema.engines
|
|||||||
SELECT * FROM information_schema.engines;
|
SELECT * FROM information_schema.engines;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.engines SET engine = '1234567';
|
UPDATE information_schema.engines SET engine = '1234567';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.engines WHERE support IN ('DEFAULT','YES');
|
DELETE FROM information_schema.engines WHERE support IN ('DEFAULT','YES');
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.engines;
|
TRUNCATE information_schema.engines;
|
||||||
|
@ -128,7 +128,7 @@ SELECT * FROM information_schema.events;
|
|||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.events SET event_name = '1234567'
|
UPDATE information_schema.events SET event_name = '1234567'
|
||||||
WHERE table_name = 't1';
|
WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.events WHERE event_catalog IS NULL;
|
DELETE FROM information_schema.events WHERE event_catalog IS NULL;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.events;
|
TRUNCATE information_schema.events;
|
||||||
|
@ -345,28 +345,6 @@ db_datadict my_idx db_datadict t1_my_tablex f4 1
|
|||||||
db_datadict my_idx db_datadict t1_my_tablex first_col 2
|
db_datadict my_idx db_datadict t1_my_tablex first_col 2
|
||||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||||
SELECT constraint_schema, constraint_name, table_schema,
|
|
||||||
table_name, column_name, ordinal_position
|
|
||||||
FROM information_schema.key_column_usage
|
|
||||||
WHERE table_name = 't1_my_tablex'
|
|
||||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
|
||||||
table_name, ordinal_position;
|
|
||||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
|
||||||
db_datadict my_idx db_datadict t1_my_tablex f4 1
|
|
||||||
db_datadict my_idx db_datadict t1_my_tablex first_col 2
|
|
||||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
|
||||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
|
||||||
ALTER TABLE db_datadict.t1_my_tablex
|
|
||||||
DROP COLUMN first_col;
|
|
||||||
SELECT constraint_schema, constraint_name, table_schema,
|
|
||||||
table_name, column_name, ordinal_position
|
|
||||||
FROM information_schema.key_column_usage
|
|
||||||
WHERE table_name = 't1_my_tablex'
|
|
||||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
|
||||||
table_name, ordinal_position;
|
|
||||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
|
||||||
db_datadict my_idx db_datadict t1_my_tablex f4 1
|
|
||||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 1
|
|
||||||
SELECT table_name, column_name
|
SELECT table_name, column_name
|
||||||
FROM information_schema.key_column_usage
|
FROM information_schema.key_column_usage
|
||||||
WHERE table_name = 't1_my_tablex'
|
WHERE table_name = 't1_my_tablex'
|
||||||
@ -374,6 +352,8 @@ ORDER BY table_name, column_name;
|
|||||||
table_name column_name
|
table_name column_name
|
||||||
t1_my_tablex f2
|
t1_my_tablex f2
|
||||||
t1_my_tablex f4
|
t1_my_tablex f4
|
||||||
|
t1_my_tablex first_col
|
||||||
|
t1_my_tablex first_col
|
||||||
DROP TABLE db_datadict.t1_my_tablex;
|
DROP TABLE db_datadict.t1_my_tablex;
|
||||||
SELECT table_name, column_name
|
SELECT table_name, column_name
|
||||||
FROM information_schema.key_column_usage
|
FROM information_schema.key_column_usage
|
||||||
@ -419,7 +399,7 @@ SELECT * FROM information_schema.key_column_usage;
|
|||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.key_column_usage
|
UPDATE information_schema.key_column_usage
|
||||||
SET table_name = 'db1' WHERE constraint_name = 'primary';
|
SET table_name = 'db1' WHERE constraint_name = 'primary';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.key_column_usage WHERE table_name = 't1';
|
DELETE FROM information_schema.key_column_usage WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.key_column_usage;
|
TRUNCATE information_schema.key_column_usage;
|
||||||
|
@ -28,10 +28,10 @@ DROP FUNCTION test.f1;
|
|||||||
#########################################################################
|
#########################################################################
|
||||||
DESCRIBE information_schema.KEY_COLUMN_USAGE;
|
DESCRIBE information_schema.KEY_COLUMN_USAGE;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
CONSTRAINT_CATALOG varchar(512) YES NULL
|
CONSTRAINT_CATALOG varchar(512) NO
|
||||||
CONSTRAINT_SCHEMA varchar(64) NO
|
CONSTRAINT_SCHEMA varchar(64) NO
|
||||||
CONSTRAINT_NAME varchar(64) NO
|
CONSTRAINT_NAME varchar(64) NO
|
||||||
TABLE_CATALOG varchar(512) YES NULL
|
TABLE_CATALOG varchar(512) NO
|
||||||
TABLE_SCHEMA varchar(64) NO
|
TABLE_SCHEMA varchar(64) NO
|
||||||
TABLE_NAME varchar(64) NO
|
TABLE_NAME varchar(64) NO
|
||||||
COLUMN_NAME varchar(64) NO
|
COLUMN_NAME varchar(64) NO
|
||||||
@ -43,14 +43,14 @@ REFERENCED_COLUMN_NAME varchar(64) YES NULL
|
|||||||
SHOW CREATE TABLE information_schema.KEY_COLUMN_USAGE;
|
SHOW CREATE TABLE information_schema.KEY_COLUMN_USAGE;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
KEY_COLUMN_USAGE CREATE TEMPORARY TABLE `KEY_COLUMN_USAGE` (
|
KEY_COLUMN_USAGE CREATE TEMPORARY TABLE `KEY_COLUMN_USAGE` (
|
||||||
`CONSTRAINT_CATALOG` varchar(512) DEFAULT NULL,
|
`CONSTRAINT_CATALOG` varchar(512) NOT NULL DEFAULT '',
|
||||||
`CONSTRAINT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
`CONSTRAINT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||||
`CONSTRAINT_NAME` varchar(64) NOT NULL DEFAULT '',
|
`CONSTRAINT_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||||
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
|
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
|
||||||
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||||
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||||
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
|
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||||
`ORDINAL_POSITION` bigint(10) NOT NULL DEFAULT '0',
|
`ORDINAL_POSITION` bigint(10) NOT NULL DEFAULT 0,
|
||||||
`POSITION_IN_UNIQUE_CONSTRAINT` bigint(10) DEFAULT NULL,
|
`POSITION_IN_UNIQUE_CONSTRAINT` bigint(10) DEFAULT NULL,
|
||||||
`REFERENCED_TABLE_SCHEMA` varchar(64) DEFAULT NULL,
|
`REFERENCED_TABLE_SCHEMA` varchar(64) DEFAULT NULL,
|
||||||
`REFERENCED_TABLE_NAME` varchar(64) DEFAULT NULL,
|
`REFERENCED_TABLE_NAME` varchar(64) DEFAULT NULL,
|
||||||
@ -58,10 +58,10 @@ KEY_COLUMN_USAGE CREATE TEMPORARY TABLE `KEY_COLUMN_USAGE` (
|
|||||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||||
SHOW COLUMNS FROM information_schema.KEY_COLUMN_USAGE;
|
SHOW COLUMNS FROM information_schema.KEY_COLUMN_USAGE;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
CONSTRAINT_CATALOG varchar(512) YES NULL
|
CONSTRAINT_CATALOG varchar(512) NO
|
||||||
CONSTRAINT_SCHEMA varchar(64) NO
|
CONSTRAINT_SCHEMA varchar(64) NO
|
||||||
CONSTRAINT_NAME varchar(64) NO
|
CONSTRAINT_NAME varchar(64) NO
|
||||||
TABLE_CATALOG varchar(512) YES NULL
|
TABLE_CATALOG varchar(512) NO
|
||||||
TABLE_SCHEMA varchar(64) NO
|
TABLE_SCHEMA varchar(64) NO
|
||||||
TABLE_NAME varchar(64) NO
|
TABLE_NAME varchar(64) NO
|
||||||
COLUMN_NAME varchar(64) NO
|
COLUMN_NAME varchar(64) NO
|
||||||
@ -75,6 +75,74 @@ table_schema, table_name, column_name
|
|||||||
FROM information_schema.key_column_usage
|
FROM information_schema.key_column_usage
|
||||||
WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL;
|
WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL;
|
||||||
constraint_catalog constraint_schema constraint_name table_catalog table_schema table_name column_name
|
constraint_catalog constraint_schema constraint_name table_catalog table_schema table_name column_name
|
||||||
|
def mysql PRIMARY def mysql column_stats db_name
|
||||||
|
def mysql PRIMARY def mysql column_stats table_name
|
||||||
|
def mysql PRIMARY def mysql column_stats column_name
|
||||||
|
def mysql PRIMARY def mysql columns_priv Host
|
||||||
|
def mysql PRIMARY def mysql columns_priv Db
|
||||||
|
def mysql PRIMARY def mysql columns_priv User
|
||||||
|
def mysql PRIMARY def mysql columns_priv Table_name
|
||||||
|
def mysql PRIMARY def mysql columns_priv Column_name
|
||||||
|
def mysql PRIMARY def mysql db Host
|
||||||
|
def mysql PRIMARY def mysql db Db
|
||||||
|
def mysql PRIMARY def mysql db User
|
||||||
|
def mysql PRIMARY def mysql event db
|
||||||
|
def mysql PRIMARY def mysql event name
|
||||||
|
def mysql PRIMARY def mysql func name
|
||||||
|
def mysql PRIMARY def mysql gtid_slave_pos domain_id
|
||||||
|
def mysql PRIMARY def mysql gtid_slave_pos sub_id
|
||||||
|
def mysql PRIMARY def mysql help_category help_category_id
|
||||||
|
def mysql name def mysql help_category name
|
||||||
|
def mysql PRIMARY def mysql help_keyword help_keyword_id
|
||||||
|
def mysql name def mysql help_keyword name
|
||||||
|
def mysql PRIMARY def mysql help_relation help_keyword_id
|
||||||
|
def mysql PRIMARY def mysql help_relation help_topic_id
|
||||||
|
def mysql PRIMARY def mysql help_topic help_topic_id
|
||||||
|
def mysql name def mysql help_topic name
|
||||||
|
def mysql PRIMARY def mysql host Host
|
||||||
|
def mysql PRIMARY def mysql host Db
|
||||||
|
def mysql PRIMARY def mysql index_stats db_name
|
||||||
|
def mysql PRIMARY def mysql index_stats table_name
|
||||||
|
def mysql PRIMARY def mysql index_stats index_name
|
||||||
|
def mysql PRIMARY def mysql index_stats prefix_arity
|
||||||
|
def mysql PRIMARY def mysql innodb_index_stats database_name
|
||||||
|
def mysql PRIMARY def mysql innodb_index_stats table_name
|
||||||
|
def mysql PRIMARY def mysql innodb_index_stats index_name
|
||||||
|
def mysql PRIMARY def mysql innodb_index_stats stat_name
|
||||||
|
def mysql PRIMARY def mysql innodb_table_stats database_name
|
||||||
|
def mysql PRIMARY def mysql innodb_table_stats table_name
|
||||||
|
def mysql PRIMARY def mysql plugin name
|
||||||
|
def mysql PRIMARY def mysql proc db
|
||||||
|
def mysql PRIMARY def mysql proc name
|
||||||
|
def mysql PRIMARY def mysql proc type
|
||||||
|
def mysql PRIMARY def mysql procs_priv Host
|
||||||
|
def mysql PRIMARY def mysql procs_priv Db
|
||||||
|
def mysql PRIMARY def mysql procs_priv User
|
||||||
|
def mysql PRIMARY def mysql procs_priv Routine_name
|
||||||
|
def mysql PRIMARY def mysql procs_priv Routine_type
|
||||||
|
def mysql PRIMARY def mysql proxies_priv Host
|
||||||
|
def mysql PRIMARY def mysql proxies_priv User
|
||||||
|
def mysql PRIMARY def mysql proxies_priv Proxied_host
|
||||||
|
def mysql PRIMARY def mysql proxies_priv Proxied_user
|
||||||
|
def mysql Host def mysql roles_mapping Host
|
||||||
|
def mysql Host def mysql roles_mapping User
|
||||||
|
def mysql Host def mysql roles_mapping Role
|
||||||
|
def mysql PRIMARY def mysql servers Server_name
|
||||||
|
def mysql PRIMARY def mysql table_stats db_name
|
||||||
|
def mysql PRIMARY def mysql table_stats table_name
|
||||||
|
def mysql PRIMARY def mysql tables_priv Host
|
||||||
|
def mysql PRIMARY def mysql tables_priv Db
|
||||||
|
def mysql PRIMARY def mysql tables_priv User
|
||||||
|
def mysql PRIMARY def mysql tables_priv Table_name
|
||||||
|
def mysql PRIMARY def mysql time_zone Time_zone_id
|
||||||
|
def mysql PRIMARY def mysql time_zone_leap_second Transition_time
|
||||||
|
def mysql PRIMARY def mysql time_zone_name Name
|
||||||
|
def mysql PRIMARY def mysql time_zone_transition Time_zone_id
|
||||||
|
def mysql PRIMARY def mysql time_zone_transition Transition_time
|
||||||
|
def mysql PRIMARY def mysql time_zone_transition_type Time_zone_id
|
||||||
|
def mysql PRIMARY def mysql time_zone_transition_type Transition_type_id
|
||||||
|
def mysql PRIMARY def mysql user Host
|
||||||
|
def mysql PRIMARY def mysql user User
|
||||||
########################################################################################
|
########################################################################################
|
||||||
# Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.KEY_COLUMN_USAGE accessible information
|
# Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.KEY_COLUMN_USAGE accessible information
|
||||||
########################################################################################
|
########################################################################################
|
||||||
@ -100,25 +168,27 @@ WHERE table_name LIKE 't1_%'
|
|||||||
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
||||||
table_catalog, table_schema, table_name, ordinal_position;
|
table_catalog, table_schema, table_name, ordinal_position;
|
||||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
||||||
NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
|
def db_datadict PRIMARY def db_datadict t1_1 f1 1 NULL NULL NULL NULL
|
||||||
NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
|
def db_datadict PRIMARY def db_datadict t1_2 f1 1 NULL NULL NULL NULL
|
||||||
# Establish connection testuser1 (user=testuser1)
|
connect testuser1, localhost, testuser1, , db_datadict;
|
||||||
SELECT * FROM information_schema.key_column_usage
|
SELECT * FROM information_schema.key_column_usage
|
||||||
WHERE table_name LIKE 't1_%'
|
WHERE table_name LIKE 't1_%'
|
||||||
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
||||||
table_catalog, table_schema, table_name, ordinal_position;
|
table_catalog, table_schema, table_name, ordinal_position;
|
||||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
||||||
NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
|
def db_datadict PRIMARY def db_datadict t1_1 f1 1 NULL NULL NULL NULL
|
||||||
NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
|
def db_datadict PRIMARY def db_datadict t1_2 f1 1 NULL NULL NULL NULL
|
||||||
# Establish connection testuser2 (user=testuser2)
|
connect testuser2, localhost, testuser2, , db_datadict;
|
||||||
SELECT * FROM information_schema.key_column_usage
|
SELECT * FROM information_schema.key_column_usage
|
||||||
WHERE table_name LIKE 't1_%'
|
WHERE table_name LIKE 't1_%'
|
||||||
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
ORDER BY constraint_catalog, constraint_schema, constraint_name,
|
||||||
table_catalog, table_schema, table_name, ordinal_position;
|
table_catalog, table_schema, table_name, ordinal_position;
|
||||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
|
||||||
NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
|
def db_datadict PRIMARY def db_datadict t1_1 f1 1 NULL NULL NULL NULL
|
||||||
NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
|
def db_datadict PRIMARY def db_datadict t1_2 f1 1 NULL NULL NULL NULL
|
||||||
# Switch to connection default and close connections testuser1, testuser2
|
connection default;
|
||||||
|
disconnect testuser1;
|
||||||
|
disconnect testuser2;
|
||||||
DROP USER 'testuser1'@'localhost';
|
DROP USER 'testuser1'@'localhost';
|
||||||
DROP USER 'testuser2'@'localhost';
|
DROP USER 'testuser2'@'localhost';
|
||||||
DROP TABLE t1_1;
|
DROP TABLE t1_1;
|
||||||
@ -139,10 +209,10 @@ DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
|||||||
ENGINE = <engine_type>;
|
ENGINE = <engine_type>;
|
||||||
SELECT * FROM information_schema.key_column_usage
|
SELECT * FROM information_schema.key_column_usage
|
||||||
WHERE table_name = 't1_my_table';
|
WHERE table_name = 't1_my_table';
|
||||||
CONSTRAINT_CATALOG NULL
|
CONSTRAINT_CATALOG def
|
||||||
CONSTRAINT_SCHEMA test
|
CONSTRAINT_SCHEMA test
|
||||||
CONSTRAINT_NAME PRIMARY
|
CONSTRAINT_NAME PRIMARY
|
||||||
TABLE_CATALOG NULL
|
TABLE_CATALOG def
|
||||||
TABLE_SCHEMA test
|
TABLE_SCHEMA test
|
||||||
TABLE_NAME t1_my_table
|
TABLE_NAME t1_my_table
|
||||||
COLUMN_NAME f1
|
COLUMN_NAME f1
|
||||||
@ -151,10 +221,10 @@ POSITION_IN_UNIQUE_CONSTRAINT NULL
|
|||||||
REFERENCED_TABLE_SCHEMA NULL
|
REFERENCED_TABLE_SCHEMA NULL
|
||||||
REFERENCED_TABLE_NAME NULL
|
REFERENCED_TABLE_NAME NULL
|
||||||
REFERENCED_COLUMN_NAME NULL
|
REFERENCED_COLUMN_NAME NULL
|
||||||
CONSTRAINT_CATALOG NULL
|
CONSTRAINT_CATALOG def
|
||||||
CONSTRAINT_SCHEMA test
|
CONSTRAINT_SCHEMA test
|
||||||
CONSTRAINT_NAME PRIMARY
|
CONSTRAINT_NAME PRIMARY
|
||||||
TABLE_CATALOG NULL
|
TABLE_CATALOG def
|
||||||
TABLE_SCHEMA test
|
TABLE_SCHEMA test
|
||||||
TABLE_NAME t1_my_table
|
TABLE_NAME t1_my_table
|
||||||
COLUMN_NAME f2
|
COLUMN_NAME f2
|
||||||
@ -277,28 +347,6 @@ db_datadict my_idx db_datadict t1_my_tablex f4 1
|
|||||||
db_datadict my_idx db_datadict t1_my_tablex first_col 2
|
db_datadict my_idx db_datadict t1_my_tablex first_col 2
|
||||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
||||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
||||||
SELECT constraint_schema, constraint_name, table_schema,
|
|
||||||
table_name, column_name, ordinal_position
|
|
||||||
FROM information_schema.key_column_usage
|
|
||||||
WHERE table_name = 't1_my_tablex'
|
|
||||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
|
||||||
table_name, ordinal_position;
|
|
||||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
|
||||||
db_datadict my_idx db_datadict t1_my_tablex f4 1
|
|
||||||
db_datadict my_idx db_datadict t1_my_tablex first_col 2
|
|
||||||
db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
|
|
||||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 2
|
|
||||||
ALTER TABLE db_datadict.t1_my_tablex
|
|
||||||
DROP COLUMN first_col;
|
|
||||||
SELECT constraint_schema, constraint_name, table_schema,
|
|
||||||
table_name, column_name, ordinal_position
|
|
||||||
FROM information_schema.key_column_usage
|
|
||||||
WHERE table_name = 't1_my_tablex'
|
|
||||||
ORDER BY constraint_schema, constraint_name, table_schema,
|
|
||||||
table_name, ordinal_position;
|
|
||||||
constraint_schema constraint_name table_schema table_name column_name ordinal_position
|
|
||||||
db_datadict my_idx db_datadict t1_my_tablex f4 1
|
|
||||||
db_datadict PRIMARY db_datadict t1_my_tablex f2 1
|
|
||||||
SELECT table_name, column_name
|
SELECT table_name, column_name
|
||||||
FROM information_schema.key_column_usage
|
FROM information_schema.key_column_usage
|
||||||
WHERE table_name = 't1_my_tablex'
|
WHERE table_name = 't1_my_tablex'
|
||||||
@ -306,6 +354,8 @@ ORDER BY table_name, column_name;
|
|||||||
table_name column_name
|
table_name column_name
|
||||||
t1_my_tablex f2
|
t1_my_tablex f2
|
||||||
t1_my_tablex f4
|
t1_my_tablex f4
|
||||||
|
t1_my_tablex first_col
|
||||||
|
t1_my_tablex first_col
|
||||||
DROP TABLE db_datadict.t1_my_tablex;
|
DROP TABLE db_datadict.t1_my_tablex;
|
||||||
SELECT table_name, column_name
|
SELECT table_name, column_name
|
||||||
FROM information_schema.key_column_usage
|
FROM information_schema.key_column_usage
|
||||||
@ -351,7 +401,7 @@ SELECT * FROM information_schema.key_column_usage;
|
|||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.key_column_usage
|
UPDATE information_schema.key_column_usage
|
||||||
SET table_name = 'db1' WHERE constraint_name = 'primary';
|
SET table_name = 'db1' WHERE constraint_name = 'primary';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.key_column_usage WHERE table_name = 't1';
|
DELETE FROM information_schema.key_column_usage WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.key_column_usage;
|
TRUNCATE information_schema.key_column_usage;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
set sql_mode="";
|
||||||
SHOW TABLES FROM information_schema LIKE 'ROUTINES';
|
SHOW TABLES FROM information_schema LIKE 'ROUTINES';
|
||||||
Tables_in_information_schema (ROUTINES)
|
Tables_in_information_schema (ROUTINES)
|
||||||
ROUTINES
|
ROUTINES
|
||||||
@ -29,11 +30,19 @@ DROP FUNCTION test.f1;
|
|||||||
DESCRIBE information_schema.ROUTINES;
|
DESCRIBE information_schema.ROUTINES;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
SPECIFIC_NAME varchar(64) NO
|
SPECIFIC_NAME varchar(64) NO
|
||||||
ROUTINE_CATALOG varchar(512) YES NULL
|
ROUTINE_CATALOG varchar(512) NO
|
||||||
ROUTINE_SCHEMA varchar(64) NO
|
ROUTINE_SCHEMA varchar(64) NO
|
||||||
ROUTINE_NAME varchar(64) NO
|
ROUTINE_NAME varchar(64) NO
|
||||||
ROUTINE_TYPE varchar(9) NO
|
ROUTINE_TYPE varchar(9) NO
|
||||||
DTD_IDENTIFIER varchar(64) YES NULL
|
DATA_TYPE varchar(64) NO
|
||||||
|
CHARACTER_MAXIMUM_LENGTH int(21) YES NULL
|
||||||
|
CHARACTER_OCTET_LENGTH int(21) YES NULL
|
||||||
|
NUMERIC_PRECISION int(21) YES NULL
|
||||||
|
NUMERIC_SCALE int(21) YES NULL
|
||||||
|
DATETIME_PRECISION bigint(21) unsigned YES NULL
|
||||||
|
CHARACTER_SET_NAME varchar(64) YES NULL
|
||||||
|
COLLATION_NAME varchar(64) YES NULL
|
||||||
|
DTD_IDENTIFIER longtext YES NULL
|
||||||
ROUTINE_BODY varchar(8) NO
|
ROUTINE_BODY varchar(8) NO
|
||||||
ROUTINE_DEFINITION longtext YES NULL
|
ROUTINE_DEFINITION longtext YES NULL
|
||||||
EXTERNAL_NAME varchar(64) YES NULL
|
EXTERNAL_NAME varchar(64) YES NULL
|
||||||
@ -45,9 +54,9 @@ SQL_PATH varchar(64) YES NULL
|
|||||||
SECURITY_TYPE varchar(7) NO
|
SECURITY_TYPE varchar(7) NO
|
||||||
CREATED datetime NO 0000-00-00 00:00:00
|
CREATED datetime NO 0000-00-00 00:00:00
|
||||||
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
||||||
SQL_MODE longtext NO NULL
|
SQL_MODE varchar(8192) NO
|
||||||
ROUTINE_COMMENT varchar(64) NO
|
ROUTINE_COMMENT longtext NO
|
||||||
DEFINER varchar(77) NO
|
DEFINER varchar(189) NO
|
||||||
CHARACTER_SET_CLIENT varchar(32) NO
|
CHARACTER_SET_CLIENT varchar(32) NO
|
||||||
COLLATION_CONNECTION varchar(32) NO
|
COLLATION_CONNECTION varchar(32) NO
|
||||||
DATABASE_COLLATION varchar(32) NO
|
DATABASE_COLLATION varchar(32) NO
|
||||||
@ -55,13 +64,21 @@ SHOW CREATE TABLE information_schema.ROUTINES;
|
|||||||
Table Create Table
|
Table Create Table
|
||||||
ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
|
ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
|
||||||
`SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '',
|
`SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||||
`ROUTINE_CATALOG` varchar(512) DEFAULT NULL,
|
`ROUTINE_CATALOG` varchar(512) NOT NULL DEFAULT '',
|
||||||
`ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
`ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||||
`ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '',
|
`ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||||
`ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '',
|
`ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '',
|
||||||
`DTD_IDENTIFIER` varchar(64) DEFAULT NULL,
|
`DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
|
||||||
|
`CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL,
|
||||||
|
`CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL,
|
||||||
|
`NUMERIC_PRECISION` int(21) DEFAULT NULL,
|
||||||
|
`NUMERIC_SCALE` int(21) DEFAULT NULL,
|
||||||
|
`DATETIME_PRECISION` bigint(21) unsigned DEFAULT NULL,
|
||||||
|
`CHARACTER_SET_NAME` varchar(64) DEFAULT NULL,
|
||||||
|
`COLLATION_NAME` varchar(64) DEFAULT NULL,
|
||||||
|
`DTD_IDENTIFIER` longtext DEFAULT NULL,
|
||||||
`ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '',
|
`ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '',
|
||||||
`ROUTINE_DEFINITION` longtext,
|
`ROUTINE_DEFINITION` longtext DEFAULT NULL,
|
||||||
`EXTERNAL_NAME` varchar(64) DEFAULT NULL,
|
`EXTERNAL_NAME` varchar(64) DEFAULT NULL,
|
||||||
`EXTERNAL_LANGUAGE` varchar(64) DEFAULT NULL,
|
`EXTERNAL_LANGUAGE` varchar(64) DEFAULT NULL,
|
||||||
`PARAMETER_STYLE` varchar(8) NOT NULL DEFAULT '',
|
`PARAMETER_STYLE` varchar(8) NOT NULL DEFAULT '',
|
||||||
@ -71,21 +88,29 @@ ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
|
|||||||
`SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
|
`SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
|
||||||
`CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
`CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
`LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
`LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
`SQL_MODE` longtext NOT NULL,
|
`SQL_MODE` varchar(8192) NOT NULL DEFAULT '',
|
||||||
`ROUTINE_COMMENT` varchar(64) NOT NULL DEFAULT '',
|
`ROUTINE_COMMENT` longtext NOT NULL DEFAULT '',
|
||||||
`DEFINER` varchar(77) NOT NULL DEFAULT '',
|
`DEFINER` varchar(189) NOT NULL DEFAULT '',
|
||||||
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
|
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
|
||||||
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
|
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
|
||||||
`DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
|
`DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
) DEFAULT CHARSET=utf8
|
||||||
SHOW COLUMNS FROM information_schema.ROUTINES;
|
SHOW COLUMNS FROM information_schema.ROUTINES;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
SPECIFIC_NAME varchar(64) NO
|
SPECIFIC_NAME varchar(64) NO
|
||||||
ROUTINE_CATALOG varchar(512) YES NULL
|
ROUTINE_CATALOG varchar(512) NO
|
||||||
ROUTINE_SCHEMA varchar(64) NO
|
ROUTINE_SCHEMA varchar(64) NO
|
||||||
ROUTINE_NAME varchar(64) NO
|
ROUTINE_NAME varchar(64) NO
|
||||||
ROUTINE_TYPE varchar(9) NO
|
ROUTINE_TYPE varchar(9) NO
|
||||||
DTD_IDENTIFIER varchar(64) YES NULL
|
DATA_TYPE varchar(64) NO
|
||||||
|
CHARACTER_MAXIMUM_LENGTH int(21) YES NULL
|
||||||
|
CHARACTER_OCTET_LENGTH int(21) YES NULL
|
||||||
|
NUMERIC_PRECISION int(21) YES NULL
|
||||||
|
NUMERIC_SCALE int(21) YES NULL
|
||||||
|
DATETIME_PRECISION bigint(21) unsigned YES NULL
|
||||||
|
CHARACTER_SET_NAME varchar(64) YES NULL
|
||||||
|
COLLATION_NAME varchar(64) YES NULL
|
||||||
|
DTD_IDENTIFIER longtext YES NULL
|
||||||
ROUTINE_BODY varchar(8) NO
|
ROUTINE_BODY varchar(8) NO
|
||||||
ROUTINE_DEFINITION longtext YES NULL
|
ROUTINE_DEFINITION longtext YES NULL
|
||||||
EXTERNAL_NAME varchar(64) YES NULL
|
EXTERNAL_NAME varchar(64) YES NULL
|
||||||
@ -97,9 +122,9 @@ SQL_PATH varchar(64) YES NULL
|
|||||||
SECURITY_TYPE varchar(7) NO
|
SECURITY_TYPE varchar(7) NO
|
||||||
CREATED datetime NO 0000-00-00 00:00:00
|
CREATED datetime NO 0000-00-00 00:00:00
|
||||||
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
||||||
SQL_MODE longtext NO NULL
|
SQL_MODE varchar(8192) NO
|
||||||
ROUTINE_COMMENT varchar(64) NO
|
ROUTINE_COMMENT longtext NO
|
||||||
DEFINER varchar(77) NO
|
DEFINER varchar(189) NO
|
||||||
CHARACTER_SET_CLIENT varchar(32) NO
|
CHARACTER_SET_CLIENT varchar(32) NO
|
||||||
COLLATION_CONNECTION varchar(32) NO
|
COLLATION_CONNECTION varchar(32) NO
|
||||||
DATABASE_COLLATION varchar(32) NO
|
DATABASE_COLLATION varchar(32) NO
|
||||||
@ -111,11 +136,14 @@ CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
|
|||||||
SELECT specific_name,routine_catalog,routine_schema,routine_name,routine_type,
|
SELECT specific_name,routine_catalog,routine_schema,routine_name,routine_type,
|
||||||
routine_body,external_name,external_language,parameter_style,sql_path
|
routine_body,external_name,external_language,parameter_style,sql_path
|
||||||
FROM information_schema.routines
|
FROM information_schema.routines
|
||||||
WHERE routine_catalog IS NOT NULL OR external_name IS NOT NULL
|
WHERE routine_schema = 'test' AND
|
||||||
|
(routine_catalog IS NOT NULL OR external_name IS NOT NULL
|
||||||
OR external_language IS NOT NULL OR sql_path IS NOT NULL
|
OR external_language IS NOT NULL OR sql_path IS NOT NULL
|
||||||
OR routine_body <> 'SQL' OR parameter_style <> 'SQL'
|
OR routine_body <> 'SQL' OR parameter_style <> 'SQL'
|
||||||
OR specific_name <> routine_name;
|
OR specific_name <> routine_name);
|
||||||
specific_name routine_catalog routine_schema routine_name routine_type routine_body external_name external_language parameter_style sql_path
|
specific_name routine_catalog routine_schema routine_name routine_type routine_body external_name external_language parameter_style sql_path
|
||||||
|
function_for_routines def test function_for_routines FUNCTION SQL NULL NULL SQL NULL
|
||||||
|
sp_for_routines def test sp_for_routines PROCEDURE SQL NULL NULL SQL NULL
|
||||||
DROP PROCEDURE sp_for_routines;
|
DROP PROCEDURE sp_for_routines;
|
||||||
DROP FUNCTION function_for_routines;
|
DROP FUNCTION function_for_routines;
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -159,34 +187,46 @@ GRANT EXECUTE ON PROCEDURE db_datadict_2.sp_6_408002_2
|
|||||||
TO 'testuser2'@'localhost';
|
TO 'testuser2'@'localhost';
|
||||||
GRANT EXECUTE ON db_datadict_2.* TO 'testuser2'@'localhost';
|
GRANT EXECUTE ON db_datadict_2.* TO 'testuser2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
# Establish connection testuser1 (user=testuser1)
|
connect testuser1, localhost, testuser1, , db_datadict;
|
||||||
SELECT * FROM information_schema.routines;
|
SELECT * FROM information_schema.routines;
|
||||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
sp_6_408002_1 NULL db_datadict sp_6_408002_1 PROCEDURE NULL SQL BEGIN
|
sp_6_408002_1 def db_datadict sp_6_408002_1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
|
||||||
SELECT * FROM db_datadict.res_6_408002_1;
|
SELECT * FROM db_datadict.res_6_408002_1;
|
||||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL BEGIN
|
sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
|
||||||
SELECT * FROM db_datadict_2.res_6_408002_2;
|
SELECT * FROM db_datadict_2.res_6_408002_2;
|
||||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
# Establish connection testuser2 (user=testuser2)
|
add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||||
|
check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp', 'innodb_file_format_max') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema'); SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.host, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.user; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||||
|
check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||||
|
connect testuser2, localhost, testuser2, , db_datadict;
|
||||||
SELECT * FROM information_schema.routines;
|
SELECT * FROM information_schema.routines;
|
||||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
sp_6_408002_1 NULL db_datadict sp_6_408002_1 PROCEDURE NULL SQL BEGIN
|
sp_6_408002_1 def db_datadict sp_6_408002_1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
|
||||||
SELECT * FROM db_datadict.res_6_408002_1;
|
SELECT * FROM db_datadict.res_6_408002_1;
|
||||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL BEGIN
|
sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
|
||||||
SELECT * FROM db_datadict_2.res_6_408002_2;
|
SELECT * FROM db_datadict_2.res_6_408002_2;
|
||||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
# Establish connection testuser3 (user=testuser3)
|
add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||||
|
check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp', 'innodb_file_format_max') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema'); SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.host, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.user; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||||
|
check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||||
|
connect testuser3, localhost, testuser3, , test;
|
||||||
SELECT * FROM information_schema.routines;
|
SELECT * FROM information_schema.routines;
|
||||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
sp_6_408002_1 NULL db_datadict sp_6_408002_1 PROCEDURE NULL SQL BEGIN
|
sp_6_408002_1 def db_datadict sp_6_408002_1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
|
||||||
SELECT * FROM db_datadict.res_6_408002_1;
|
SELECT * FROM db_datadict.res_6_408002_1;
|
||||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL BEGIN
|
sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN
|
||||||
SELECT * FROM db_datadict_2.res_6_408002_2;
|
SELECT * FROM db_datadict_2.res_6_408002_2;
|
||||||
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
# Switch to connection default and close connections testuser1,testuser2,testuser3
|
add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||||
|
check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp', 'innodb_file_format_max') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema'); SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.host, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.user; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||||
|
check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||||
|
connection default;
|
||||||
|
disconnect testuser1;
|
||||||
|
disconnect testuser2;
|
||||||
|
disconnect testuser3;
|
||||||
DROP USER 'testuser1'@'localhost';
|
DROP USER 'testuser1'@'localhost';
|
||||||
DROP USER 'testuser2'@'localhost';
|
DROP USER 'testuser2'@'localhost';
|
||||||
DROP USER 'testuser3'@'localhost';
|
DROP USER 'testuser3'@'localhost';
|
||||||
@ -199,17 +239,25 @@ DROP DATABASE db_datadict_2;
|
|||||||
DROP DATABASE IF EXISTS db_datadict;
|
DROP DATABASE IF EXISTS db_datadict;
|
||||||
CREATE DATABASE db_datadict;
|
CREATE DATABASE db_datadict;
|
||||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
||||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
USE db_datadict;
|
USE db_datadict;
|
||||||
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
||||||
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
|
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
|
||||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
||||||
ORDER BY routine_name;
|
ORDER BY routine_name;
|
||||||
SPECIFIC_NAME function_for_routines
|
SPECIFIC_NAME function_for_routines
|
||||||
ROUTINE_CATALOG NULL
|
ROUTINE_CATALOG def
|
||||||
ROUTINE_SCHEMA db_datadict
|
ROUTINE_SCHEMA db_datadict
|
||||||
ROUTINE_NAME function_for_routines
|
ROUTINE_NAME function_for_routines
|
||||||
ROUTINE_TYPE FUNCTION
|
ROUTINE_TYPE FUNCTION
|
||||||
|
DATA_TYPE int
|
||||||
|
CHARACTER_MAXIMUM_LENGTH NULL
|
||||||
|
CHARACTER_OCTET_LENGTH NULL
|
||||||
|
NUMERIC_PRECISION 10
|
||||||
|
NUMERIC_SCALE 0
|
||||||
|
DATETIME_PRECISION NULL
|
||||||
|
CHARACTER_SET_NAME NULL
|
||||||
|
COLLATION_NAME NULL
|
||||||
DTD_IDENTIFIER int(11)
|
DTD_IDENTIFIER int(11)
|
||||||
ROUTINE_BODY SQL
|
ROUTINE_BODY SQL
|
||||||
ROUTINE_DEFINITION RETURN 0
|
ROUTINE_DEFINITION RETURN 0
|
||||||
@ -229,10 +277,18 @@ CHARACTER_SET_CLIENT latin1
|
|||||||
COLLATION_CONNECTION latin1_swedish_ci
|
COLLATION_CONNECTION latin1_swedish_ci
|
||||||
DATABASE_COLLATION latin1_swedish_ci
|
DATABASE_COLLATION latin1_swedish_ci
|
||||||
SPECIFIC_NAME sp_for_routines
|
SPECIFIC_NAME sp_for_routines
|
||||||
ROUTINE_CATALOG NULL
|
ROUTINE_CATALOG def
|
||||||
ROUTINE_SCHEMA db_datadict
|
ROUTINE_SCHEMA db_datadict
|
||||||
ROUTINE_NAME sp_for_routines
|
ROUTINE_NAME sp_for_routines
|
||||||
ROUTINE_TYPE PROCEDURE
|
ROUTINE_TYPE PROCEDURE
|
||||||
|
DATA_TYPE
|
||||||
|
CHARACTER_MAXIMUM_LENGTH NULL
|
||||||
|
CHARACTER_OCTET_LENGTH NULL
|
||||||
|
NUMERIC_PRECISION NULL
|
||||||
|
NUMERIC_SCALE NULL
|
||||||
|
DATETIME_PRECISION NULL
|
||||||
|
CHARACTER_SET_NAME NULL
|
||||||
|
COLLATION_NAME NULL
|
||||||
DTD_IDENTIFIER NULL
|
DTD_IDENTIFIER NULL
|
||||||
ROUTINE_BODY SQL
|
ROUTINE_BODY SQL
|
||||||
ROUTINE_DEFINITION SELECT 'db_datadict'
|
ROUTINE_DEFINITION SELECT 'db_datadict'
|
||||||
@ -256,10 +312,18 @@ ALTER FUNCTION function_for_routines COMMENT 'updated comments';
|
|||||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
||||||
ORDER BY routine_name;
|
ORDER BY routine_name;
|
||||||
SPECIFIC_NAME function_for_routines
|
SPECIFIC_NAME function_for_routines
|
||||||
ROUTINE_CATALOG NULL
|
ROUTINE_CATALOG def
|
||||||
ROUTINE_SCHEMA db_datadict
|
ROUTINE_SCHEMA db_datadict
|
||||||
ROUTINE_NAME function_for_routines
|
ROUTINE_NAME function_for_routines
|
||||||
ROUTINE_TYPE FUNCTION
|
ROUTINE_TYPE FUNCTION
|
||||||
|
DATA_TYPE int
|
||||||
|
CHARACTER_MAXIMUM_LENGTH NULL
|
||||||
|
CHARACTER_OCTET_LENGTH NULL
|
||||||
|
NUMERIC_PRECISION 10
|
||||||
|
NUMERIC_SCALE 0
|
||||||
|
DATETIME_PRECISION NULL
|
||||||
|
CHARACTER_SET_NAME NULL
|
||||||
|
COLLATION_NAME NULL
|
||||||
DTD_IDENTIFIER int(11)
|
DTD_IDENTIFIER int(11)
|
||||||
ROUTINE_BODY SQL
|
ROUTINE_BODY SQL
|
||||||
ROUTINE_DEFINITION RETURN 0
|
ROUTINE_DEFINITION RETURN 0
|
||||||
@ -279,10 +343,18 @@ CHARACTER_SET_CLIENT latin1
|
|||||||
COLLATION_CONNECTION latin1_swedish_ci
|
COLLATION_CONNECTION latin1_swedish_ci
|
||||||
DATABASE_COLLATION latin1_swedish_ci
|
DATABASE_COLLATION latin1_swedish_ci
|
||||||
SPECIFIC_NAME sp_for_routines
|
SPECIFIC_NAME sp_for_routines
|
||||||
ROUTINE_CATALOG NULL
|
ROUTINE_CATALOG def
|
||||||
ROUTINE_SCHEMA db_datadict
|
ROUTINE_SCHEMA db_datadict
|
||||||
ROUTINE_NAME sp_for_routines
|
ROUTINE_NAME sp_for_routines
|
||||||
ROUTINE_TYPE PROCEDURE
|
ROUTINE_TYPE PROCEDURE
|
||||||
|
DATA_TYPE
|
||||||
|
CHARACTER_MAXIMUM_LENGTH NULL
|
||||||
|
CHARACTER_OCTET_LENGTH NULL
|
||||||
|
NUMERIC_PRECISION NULL
|
||||||
|
NUMERIC_SCALE NULL
|
||||||
|
DATETIME_PRECISION NULL
|
||||||
|
CHARACTER_SET_NAME NULL
|
||||||
|
COLLATION_NAME NULL
|
||||||
DTD_IDENTIFIER NULL
|
DTD_IDENTIFIER NULL
|
||||||
ROUTINE_BODY SQL
|
ROUTINE_BODY SQL
|
||||||
ROUTINE_DEFINITION SELECT 'db_datadict'
|
ROUTINE_DEFINITION SELECT 'db_datadict'
|
||||||
@ -304,16 +376,24 @@ DATABASE_COLLATION latin1_swedish_ci
|
|||||||
DROP PROCEDURE sp_for_routines;
|
DROP PROCEDURE sp_for_routines;
|
||||||
DROP FUNCTION function_for_routines;
|
DROP FUNCTION function_for_routines;
|
||||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
||||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
|
||||||
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
|
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
|
||||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
|
||||||
ORDER BY routine_name;
|
ORDER BY routine_name;
|
||||||
SPECIFIC_NAME function_for_routines
|
SPECIFIC_NAME function_for_routines
|
||||||
ROUTINE_CATALOG NULL
|
ROUTINE_CATALOG def
|
||||||
ROUTINE_SCHEMA db_datadict
|
ROUTINE_SCHEMA db_datadict
|
||||||
ROUTINE_NAME function_for_routines
|
ROUTINE_NAME function_for_routines
|
||||||
ROUTINE_TYPE FUNCTION
|
ROUTINE_TYPE FUNCTION
|
||||||
|
DATA_TYPE int
|
||||||
|
CHARACTER_MAXIMUM_LENGTH NULL
|
||||||
|
CHARACTER_OCTET_LENGTH NULL
|
||||||
|
NUMERIC_PRECISION 10
|
||||||
|
NUMERIC_SCALE 0
|
||||||
|
DATETIME_PRECISION NULL
|
||||||
|
CHARACTER_SET_NAME NULL
|
||||||
|
COLLATION_NAME NULL
|
||||||
DTD_IDENTIFIER int(11)
|
DTD_IDENTIFIER int(11)
|
||||||
ROUTINE_BODY SQL
|
ROUTINE_BODY SQL
|
||||||
ROUTINE_DEFINITION RETURN 0
|
ROUTINE_DEFINITION RETURN 0
|
||||||
@ -333,10 +413,18 @@ CHARACTER_SET_CLIENT latin1
|
|||||||
COLLATION_CONNECTION latin1_swedish_ci
|
COLLATION_CONNECTION latin1_swedish_ci
|
||||||
DATABASE_COLLATION latin1_swedish_ci
|
DATABASE_COLLATION latin1_swedish_ci
|
||||||
SPECIFIC_NAME sp_for_routines
|
SPECIFIC_NAME sp_for_routines
|
||||||
ROUTINE_CATALOG NULL
|
ROUTINE_CATALOG def
|
||||||
ROUTINE_SCHEMA db_datadict
|
ROUTINE_SCHEMA db_datadict
|
||||||
ROUTINE_NAME sp_for_routines
|
ROUTINE_NAME sp_for_routines
|
||||||
ROUTINE_TYPE PROCEDURE
|
ROUTINE_TYPE PROCEDURE
|
||||||
|
DATA_TYPE
|
||||||
|
CHARACTER_MAXIMUM_LENGTH NULL
|
||||||
|
CHARACTER_OCTET_LENGTH NULL
|
||||||
|
NUMERIC_PRECISION NULL
|
||||||
|
NUMERIC_SCALE NULL
|
||||||
|
DATETIME_PRECISION NULL
|
||||||
|
CHARACTER_SET_NAME NULL
|
||||||
|
COLLATION_NAME NULL
|
||||||
DTD_IDENTIFIER NULL
|
DTD_IDENTIFIER NULL
|
||||||
ROUTINE_BODY SQL
|
ROUTINE_BODY SQL
|
||||||
ROUTINE_DEFINITION SELECT 'db_datadict'
|
ROUTINE_DEFINITION SELECT 'db_datadict'
|
||||||
@ -358,7 +446,7 @@ DATABASE_COLLATION latin1_swedish_ci
|
|||||||
use test;
|
use test;
|
||||||
DROP DATABASE db_datadict;
|
DROP DATABASE db_datadict;
|
||||||
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
|
||||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
#########################################################################
|
#########################################################################
|
||||||
# 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for
|
# 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for
|
||||||
# ROUTINE_DEFINITION column
|
# ROUTINE_DEFINITION column
|
||||||
@ -498,10 +586,18 @@ abc 98765 99999999 98765 2010
|
|||||||
SELECT *, LENGTH(routine_definition) FROM information_schema.routines
|
SELECT *, LENGTH(routine_definition) FROM information_schema.routines
|
||||||
WHERE routine_schema = 'db_datadict';
|
WHERE routine_schema = 'db_datadict';
|
||||||
SPECIFIC_NAME sp_6_408004
|
SPECIFIC_NAME sp_6_408004
|
||||||
ROUTINE_CATALOG NULL
|
ROUTINE_CATALOG def
|
||||||
ROUTINE_SCHEMA db_datadict
|
ROUTINE_SCHEMA db_datadict
|
||||||
ROUTINE_NAME sp_6_408004
|
ROUTINE_NAME sp_6_408004
|
||||||
ROUTINE_TYPE PROCEDURE
|
ROUTINE_TYPE PROCEDURE
|
||||||
|
DATA_TYPE
|
||||||
|
CHARACTER_MAXIMUM_LENGTH NULL
|
||||||
|
CHARACTER_OCTET_LENGTH NULL
|
||||||
|
NUMERIC_PRECISION NULL
|
||||||
|
NUMERIC_SCALE NULL
|
||||||
|
DATETIME_PRECISION NULL
|
||||||
|
CHARACTER_SET_NAME NULL
|
||||||
|
COLLATION_NAME NULL
|
||||||
DTD_IDENTIFIER NULL
|
DTD_IDENTIFIER NULL
|
||||||
ROUTINE_BODY SQL
|
ROUTINE_BODY SQL
|
||||||
ROUTINE_DEFINITION BEGIN
|
ROUTINE_DEFINITION BEGIN
|
||||||
@ -630,7 +726,7 @@ VALUES ('p2', 'procedure');
|
|||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.routines SET routine_name = 'p2'
|
UPDATE information_schema.routines SET routine_name = 'p2'
|
||||||
WHERE routine_body = 'sql';
|
WHERE routine_body = 'sql';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR HY000: The target table routines of the UPDATE is not updatable
|
||||||
DELETE FROM information_schema.routines ;
|
DELETE FROM information_schema.routines ;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.routines ;
|
TRUNCATE information_schema.routines ;
|
||||||
|
@ -28,31 +28,36 @@ DROP FUNCTION test.f1;
|
|||||||
#########################################################################
|
#########################################################################
|
||||||
DESCRIBE information_schema.SCHEMATA;
|
DESCRIBE information_schema.SCHEMATA;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
CATALOG_NAME varchar(512) YES NULL
|
CATALOG_NAME varchar(512) NO
|
||||||
SCHEMA_NAME varchar(64) NO
|
SCHEMA_NAME varchar(64) NO
|
||||||
DEFAULT_CHARACTER_SET_NAME varchar(64) NO
|
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
|
||||||
DEFAULT_COLLATION_NAME varchar(64) NO
|
DEFAULT_COLLATION_NAME varchar(32) NO
|
||||||
SQL_PATH varchar(512) YES NULL
|
SQL_PATH varchar(512) YES NULL
|
||||||
SHOW CREATE TABLE information_schema.SCHEMATA;
|
SHOW CREATE TABLE information_schema.SCHEMATA;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
|
SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
|
||||||
`CATALOG_NAME` varchar(512) DEFAULT NULL,
|
`CATALOG_NAME` varchar(512) NOT NULL DEFAULT '',
|
||||||
`SCHEMA_NAME` varchar(64) NOT NULL DEFAULT '',
|
`SCHEMA_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||||
`DEFAULT_CHARACTER_SET_NAME` varchar(64) NOT NULL DEFAULT '',
|
`DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||||
`DEFAULT_COLLATION_NAME` varchar(64) NOT NULL DEFAULT '',
|
`DEFAULT_COLLATION_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||||
`SQL_PATH` varchar(512) DEFAULT NULL
|
`SQL_PATH` varchar(512) DEFAULT NULL
|
||||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||||
SHOW COLUMNS FROM information_schema.SCHEMATA;
|
SHOW COLUMNS FROM information_schema.SCHEMATA;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
CATALOG_NAME varchar(512) YES NULL
|
CATALOG_NAME varchar(512) NO
|
||||||
SCHEMA_NAME varchar(64) NO
|
SCHEMA_NAME varchar(64) NO
|
||||||
DEFAULT_CHARACTER_SET_NAME varchar(64) NO
|
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
|
||||||
DEFAULT_COLLATION_NAME varchar(64) NO
|
DEFAULT_COLLATION_NAME varchar(32) NO
|
||||||
SQL_PATH varchar(512) YES NULL
|
SQL_PATH varchar(512) YES NULL
|
||||||
SELECT catalog_name, schema_name, sql_path
|
SELECT catalog_name, schema_name, sql_path
|
||||||
FROM information_schema.schemata
|
FROM information_schema.schemata
|
||||||
WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL;
|
WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL;
|
||||||
catalog_name schema_name sql_path
|
catalog_name schema_name sql_path
|
||||||
|
def information_schema NULL
|
||||||
|
def mtr NULL
|
||||||
|
def mysql NULL
|
||||||
|
def performance_schema NULL
|
||||||
|
def test NULL
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Testcases 3.2.9.2+3.2.9.3: INFORMATION_SCHEMA.SCHEMATA accessible information
|
# Testcases 3.2.9.2+3.2.9.3: INFORMATION_SCHEMA.SCHEMATA accessible information
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -72,43 +77,46 @@ GRANT SELECT ON db_datadict_2.* to 'testuser2'@'localhost';
|
|||||||
SELECT * FROM information_schema.schemata
|
SELECT * FROM information_schema.schemata
|
||||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||||
NULL db_datadict_1 latin1 latin1_swedish_ci NULL
|
def db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||||
NULL db_datadict_2 latin1 latin1_swedish_ci NULL
|
def db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||||
SHOW DATABASES LIKE 'db_datadict_%';
|
SHOW DATABASES LIKE 'db_datadict_%';
|
||||||
Database (db_datadict_%)
|
Database (db_datadict_%)
|
||||||
db_datadict_1
|
db_datadict_1
|
||||||
db_datadict_2
|
db_datadict_2
|
||||||
# Establish connection testuser1 (user=testuser1)
|
connect testuser1, localhost, testuser1, , db_datadict_1;
|
||||||
SELECT * FROM information_schema.schemata
|
SELECT * FROM information_schema.schemata
|
||||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||||
NULL db_datadict_1 latin1 latin1_swedish_ci NULL
|
def db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||||
NULL db_datadict_2 latin1 latin1_swedish_ci NULL
|
def db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||||
SHOW DATABASES LIKE 'db_datadict_%';
|
SHOW DATABASES LIKE 'db_datadict_%';
|
||||||
Database (db_datadict_%)
|
Database (db_datadict_%)
|
||||||
db_datadict_1
|
db_datadict_1
|
||||||
db_datadict_2
|
db_datadict_2
|
||||||
# Establish connection testuser2 (user=testuser2)
|
connect testuser2, localhost, testuser2, , db_datadict_2;
|
||||||
SELECT * FROM information_schema.schemata
|
SELECT * FROM information_schema.schemata
|
||||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||||
NULL db_datadict_1 latin1 latin1_swedish_ci NULL
|
def db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||||
NULL db_datadict_2 latin1 latin1_swedish_ci NULL
|
def db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||||
SHOW DATABASES LIKE 'db_datadict_%';
|
SHOW DATABASES LIKE 'db_datadict_%';
|
||||||
Database (db_datadict_%)
|
Database (db_datadict_%)
|
||||||
db_datadict_1
|
db_datadict_1
|
||||||
db_datadict_2
|
db_datadict_2
|
||||||
# Establish connection testuser3 (user=testuser3)
|
connect testuser3, localhost, testuser3, , test;
|
||||||
SELECT * FROM information_schema.schemata
|
SELECT * FROM information_schema.schemata
|
||||||
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||||
NULL db_datadict_1 latin1 latin1_swedish_ci NULL
|
def db_datadict_1 latin1 latin1_swedish_ci NULL
|
||||||
NULL db_datadict_2 latin1 latin1_swedish_ci NULL
|
def db_datadict_2 latin1 latin1_swedish_ci NULL
|
||||||
SHOW DATABASES LIKE 'db_datadict_%';
|
SHOW DATABASES LIKE 'db_datadict_%';
|
||||||
Database (db_datadict_%)
|
Database (db_datadict_%)
|
||||||
db_datadict_1
|
db_datadict_1
|
||||||
db_datadict_2
|
db_datadict_2
|
||||||
# Switch to connection default and close connections testuser1,testuser2,testuser3
|
connection default;
|
||||||
|
disconnect testuser1;
|
||||||
|
disconnect testuser2;
|
||||||
|
disconnect testuser3;
|
||||||
DROP USER 'testuser1'@'localhost';
|
DROP USER 'testuser1'@'localhost';
|
||||||
DROP USER 'testuser2'@'localhost';
|
DROP USER 'testuser2'@'localhost';
|
||||||
DROP USER 'testuser3'@'localhost';
|
DROP USER 'testuser3'@'localhost';
|
||||||
@ -123,7 +131,7 @@ CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_P
|
|||||||
CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
|
CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
|
||||||
SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||||
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
|
||||||
NULL db_datadict latin1 latin1_swedish_ci NULL
|
def db_datadict latin1 latin1_swedish_ci NULL
|
||||||
SELECT schema_name, default_character_set_name
|
SELECT schema_name, default_character_set_name
|
||||||
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||||
schema_name default_character_set_name
|
schema_name default_character_set_name
|
||||||
@ -167,9 +175,9 @@ ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_
|
|||||||
UPDATE information_schema.schemata
|
UPDATE information_schema.schemata
|
||||||
SET default_character_set_name = 'utf8'
|
SET default_character_set_name = 'utf8'
|
||||||
WHERE schema_name = 'db_datadict';
|
WHERE schema_name = 'db_datadict';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR HY000: The target table schemata of the UPDATE is not updatable
|
||||||
UPDATE information_schema.schemata SET catalog_name = 't_4711';
|
UPDATE information_schema.schemata SET catalog_name = 't_4711';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR HY000: The target table schemata of the UPDATE is not updatable
|
||||||
DELETE FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
DELETE FROM information_schema.schemata WHERE schema_name = 'db_datadict';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.schemata;
|
TRUNCATE information_schema.schemata;
|
||||||
|
@ -162,7 +162,7 @@ SELECT table_name FROM information_schema.table_constraints
|
|||||||
WHERE table_name LIKE 't1_my_table%';
|
WHERE table_name LIKE 't1_my_table%';
|
||||||
table_name
|
table_name
|
||||||
CREATE TABLE test.t1_my_table
|
CREATE TABLE test.t1_my_table
|
||||||
(f1 CHAR(12), f2 TIMESTAMP, f4 BIGINT, PRIMARY KEY(f1,f2))
|
(f1 CHAR(12), f2 TIMESTAMP, f4 BIGINT, PRIMARY KEY(f1))
|
||||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||||
ENGINE = <engine_type>;
|
ENGINE = <engine_type>;
|
||||||
SELECT constraint_name, table_schema, table_name, constraint_type
|
SELECT constraint_name, table_schema, table_name, constraint_type
|
||||||
|
@ -402,7 +402,7 @@ SELECT * FROM information_schema.tables;
|
|||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.tables SET table_schema = 'test'
|
UPDATE information_schema.tables SET table_schema = 'test'
|
||||||
WHERE table_name = 't1';
|
WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.tables WHERE table_name = 't1';
|
DELETE FROM information_schema.tables WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.tables;
|
TRUNCATE information_schema.tables;
|
||||||
|
@ -28,77 +28,77 @@ DROP FUNCTION test.f1;
|
|||||||
#########################################################################
|
#########################################################################
|
||||||
DESCRIBE information_schema.TABLES;
|
DESCRIBE information_schema.TABLES;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
TABLE_CATALOG varchar(512) YES NULL
|
TABLE_CATALOG varchar(512) NO
|
||||||
TABLE_SCHEMA varchar(64) NO
|
TABLE_SCHEMA varchar(64) NO
|
||||||
TABLE_NAME varchar(64) NO
|
TABLE_NAME varchar(64) NO
|
||||||
TABLE_TYPE varchar(64) NO
|
TABLE_TYPE varchar(64) NO
|
||||||
ENGINE varchar(64) YES NULL
|
ENGINE varchar(64) YES NULL
|
||||||
VERSION bigint(21) YES NULL
|
VERSION bigint(21) unsigned YES NULL
|
||||||
ROW_FORMAT varchar(10) YES NULL
|
ROW_FORMAT varchar(10) YES NULL
|
||||||
TABLE_ROWS bigint(21) YES NULL
|
TABLE_ROWS bigint(21) unsigned YES NULL
|
||||||
AVG_ROW_LENGTH bigint(21) YES NULL
|
AVG_ROW_LENGTH bigint(21) unsigned YES NULL
|
||||||
DATA_LENGTH bigint(21) YES NULL
|
DATA_LENGTH bigint(21) unsigned YES NULL
|
||||||
MAX_DATA_LENGTH bigint(21) YES NULL
|
MAX_DATA_LENGTH bigint(21) unsigned YES NULL
|
||||||
INDEX_LENGTH bigint(21) YES NULL
|
INDEX_LENGTH bigint(21) unsigned YES NULL
|
||||||
DATA_FREE bigint(21) YES NULL
|
DATA_FREE bigint(21) unsigned YES NULL
|
||||||
AUTO_INCREMENT bigint(21) YES NULL
|
AUTO_INCREMENT bigint(21) unsigned YES NULL
|
||||||
CREATE_TIME datetime YES NULL
|
CREATE_TIME datetime YES NULL
|
||||||
UPDATE_TIME datetime YES NULL
|
UPDATE_TIME datetime YES NULL
|
||||||
CHECK_TIME datetime YES NULL
|
CHECK_TIME datetime YES NULL
|
||||||
TABLE_COLLATION varchar(64) YES NULL
|
TABLE_COLLATION varchar(32) YES NULL
|
||||||
CHECKSUM bigint(21) YES NULL
|
CHECKSUM bigint(21) unsigned YES NULL
|
||||||
CREATE_OPTIONS varchar(255) YES NULL
|
CREATE_OPTIONS varchar(2048) YES NULL
|
||||||
TABLE_COMMENT varchar(80) NO
|
TABLE_COMMENT varchar(2048) NO
|
||||||
SHOW CREATE TABLE information_schema.TABLES;
|
SHOW CREATE TABLE information_schema.TABLES;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
TABLES CREATE TEMPORARY TABLE `TABLES` (
|
TABLES CREATE TEMPORARY TABLE `TABLES` (
|
||||||
`TABLE_CATALOG` varchar(512) default NULL,
|
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
|
||||||
`TABLE_SCHEMA` varchar(64) NOT NULL default '',
|
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||||
`TABLE_NAME` varchar(64) NOT NULL default '',
|
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||||
`TABLE_TYPE` varchar(64) NOT NULL default '',
|
`TABLE_TYPE` varchar(64) NOT NULL DEFAULT '',
|
||||||
`ENGINE` varchar(64) default NULL,
|
`ENGINE` varchar(64) DEFAULT NULL,
|
||||||
`VERSION` bigint(21) default NULL,
|
`VERSION` bigint(21) unsigned DEFAULT NULL,
|
||||||
`ROW_FORMAT` varchar(10) default NULL,
|
`ROW_FORMAT` varchar(10) DEFAULT NULL,
|
||||||
`TABLE_ROWS` bigint(21) default NULL,
|
`TABLE_ROWS` bigint(21) unsigned DEFAULT NULL,
|
||||||
`AVG_ROW_LENGTH` bigint(21) default NULL,
|
`AVG_ROW_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
||||||
`DATA_LENGTH` bigint(21) default NULL,
|
`DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
||||||
`MAX_DATA_LENGTH` bigint(21) default NULL,
|
`MAX_DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
||||||
`INDEX_LENGTH` bigint(21) default NULL,
|
`INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
||||||
`DATA_FREE` bigint(21) default NULL,
|
`DATA_FREE` bigint(21) unsigned DEFAULT NULL,
|
||||||
`AUTO_INCREMENT` bigint(21) default NULL,
|
`AUTO_INCREMENT` bigint(21) unsigned DEFAULT NULL,
|
||||||
`CREATE_TIME` datetime default NULL,
|
`CREATE_TIME` datetime DEFAULT NULL,
|
||||||
`UPDATE_TIME` datetime default NULL,
|
`UPDATE_TIME` datetime DEFAULT NULL,
|
||||||
`CHECK_TIME` datetime default NULL,
|
`CHECK_TIME` datetime DEFAULT NULL,
|
||||||
`TABLE_COLLATION` varchar(64) default NULL,
|
`TABLE_COLLATION` varchar(32) DEFAULT NULL,
|
||||||
`CHECKSUM` bigint(21) default NULL,
|
`CHECKSUM` bigint(21) unsigned DEFAULT NULL,
|
||||||
`CREATE_OPTIONS` varchar(255) default NULL,
|
`CREATE_OPTIONS` varchar(2048) DEFAULT NULL,
|
||||||
`TABLE_COMMENT` varchar(80) NOT NULL default ''
|
`TABLE_COMMENT` varchar(2048) NOT NULL DEFAULT ''
|
||||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||||
SHOW COLUMNS FROM information_schema.TABLES;
|
SHOW COLUMNS FROM information_schema.TABLES;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
TABLE_CATALOG varchar(512) YES NULL
|
TABLE_CATALOG varchar(512) NO
|
||||||
TABLE_SCHEMA varchar(64) NO
|
TABLE_SCHEMA varchar(64) NO
|
||||||
TABLE_NAME varchar(64) NO
|
TABLE_NAME varchar(64) NO
|
||||||
TABLE_TYPE varchar(64) NO
|
TABLE_TYPE varchar(64) NO
|
||||||
ENGINE varchar(64) YES NULL
|
ENGINE varchar(64) YES NULL
|
||||||
VERSION bigint(21) YES NULL
|
VERSION bigint(21) unsigned YES NULL
|
||||||
ROW_FORMAT varchar(10) YES NULL
|
ROW_FORMAT varchar(10) YES NULL
|
||||||
TABLE_ROWS bigint(21) YES NULL
|
TABLE_ROWS bigint(21) unsigned YES NULL
|
||||||
AVG_ROW_LENGTH bigint(21) YES NULL
|
AVG_ROW_LENGTH bigint(21) unsigned YES NULL
|
||||||
DATA_LENGTH bigint(21) YES NULL
|
DATA_LENGTH bigint(21) unsigned YES NULL
|
||||||
MAX_DATA_LENGTH bigint(21) YES NULL
|
MAX_DATA_LENGTH bigint(21) unsigned YES NULL
|
||||||
INDEX_LENGTH bigint(21) YES NULL
|
INDEX_LENGTH bigint(21) unsigned YES NULL
|
||||||
DATA_FREE bigint(21) YES NULL
|
DATA_FREE bigint(21) unsigned YES NULL
|
||||||
AUTO_INCREMENT bigint(21) YES NULL
|
AUTO_INCREMENT bigint(21) unsigned YES NULL
|
||||||
CREATE_TIME datetime YES NULL
|
CREATE_TIME datetime YES NULL
|
||||||
UPDATE_TIME datetime YES NULL
|
UPDATE_TIME datetime YES NULL
|
||||||
CHECK_TIME datetime YES NULL
|
CHECK_TIME datetime YES NULL
|
||||||
TABLE_COLLATION varchar(64) YES NULL
|
TABLE_COLLATION varchar(32) YES NULL
|
||||||
CHECKSUM bigint(21) YES NULL
|
CHECKSUM bigint(21) unsigned YES NULL
|
||||||
CREATE_OPTIONS varchar(255) YES NULL
|
CREATE_OPTIONS varchar(2048) YES NULL
|
||||||
TABLE_COMMENT varchar(80) NO
|
TABLE_COMMENT varchar(2048) NO
|
||||||
SELECT table_catalog, table_schema, table_name
|
SELECT table_catalog, table_schema, table_name
|
||||||
FROM information_schema.tables WHERE table_catalog IS NOT NULL;
|
FROM information_schema.tables WHERE table_catalog IS NULL OR table_catalog <> 'def';
|
||||||
table_catalog table_schema table_name
|
table_catalog table_schema table_name
|
||||||
################################################################################
|
################################################################################
|
||||||
# Testcase 3.2.12.2 + 3.2.12.3: INFORMATION_SCHEMA.TABLES accessible information
|
# Testcase 3.2.12.2 + 3.2.12.3: INFORMATION_SCHEMA.TABLES accessible information
|
||||||
@ -117,7 +117,7 @@ CREATE TABLE db_datadict.tb1 (f1 INT, f2 INT, f3 INT)
|
|||||||
ENGINE = <engine_type>;
|
ENGINE = <engine_type>;
|
||||||
GRANT SELECT ON db_datadict.tb1 TO 'testuser1'@'localhost';
|
GRANT SELECT ON db_datadict.tb1 TO 'testuser1'@'localhost';
|
||||||
GRANT ALL ON db_datadict.tb1 TO 'testuser2'@'localhost' WITH GRANT OPTION;
|
GRANT ALL ON db_datadict.tb1 TO 'testuser2'@'localhost' WITH GRANT OPTION;
|
||||||
# Establish connection testuser1 (user=testuser1)
|
connect testuser1, localhost, testuser1, , db_datadict;
|
||||||
CREATE TABLE tb2 (f1 DECIMAL)
|
CREATE TABLE tb2 (f1 DECIMAL)
|
||||||
ENGINE = <engine_type>;
|
ENGINE = <engine_type>;
|
||||||
CREATE TABLE tb3 (f1 VARCHAR(200))
|
CREATE TABLE tb3 (f1 VARCHAR(200))
|
||||||
@ -129,59 +129,61 @@ GRANT SELECT ON db_datadict.v3 to 'testuser3'@'localhost';
|
|||||||
SELECT * FROM information_schema.tables
|
SELECT * FROM information_schema.tables
|
||||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||||
NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
def db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
||||||
SHOW TABLES FROM db_datadict;
|
SHOW TABLES FROM db_datadict;
|
||||||
Tables_in_db_datadict
|
Tables_in_db_datadict
|
||||||
tb1
|
tb1
|
||||||
tb2
|
tb2
|
||||||
tb3
|
tb3
|
||||||
v3
|
v3
|
||||||
# Establish connection testuser2 (user=testuser2)
|
connect testuser2, localhost, testuser2, , db_datadict;
|
||||||
SELECT * FROM information_schema.tables
|
SELECT * FROM information_schema.tables
|
||||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||||
NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
def db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
||||||
SHOW TABLES FROM db_datadict;
|
SHOW TABLES FROM db_datadict;
|
||||||
Tables_in_db_datadict
|
Tables_in_db_datadict
|
||||||
tb1
|
tb1
|
||||||
tb2
|
tb2
|
||||||
tb3
|
tb3
|
||||||
v3
|
v3
|
||||||
# Establish connection testuser3 (user=testuser3)
|
connect testuser3, localhost, testuser3, , db_datadict;
|
||||||
SELECT * FROM information_schema.tables
|
SELECT * FROM information_schema.tables
|
||||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||||
NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
def db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
||||||
SHOW TABLES FROM db_datadict;
|
SHOW TABLES FROM db_datadict;
|
||||||
Tables_in_db_datadict
|
Tables_in_db_datadict
|
||||||
tb1
|
tb1
|
||||||
tb2
|
tb2
|
||||||
tb3
|
tb3
|
||||||
v3
|
v3
|
||||||
# Switch to connection default (user=root)
|
connection default;
|
||||||
SELECT * FROM information_schema.tables
|
SELECT * FROM information_schema.tables
|
||||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||||
NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
def db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
|
||||||
NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
def db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
|
||||||
SHOW TABLES FROM db_datadict;
|
SHOW TABLES FROM db_datadict;
|
||||||
Tables_in_db_datadict
|
Tables_in_db_datadict
|
||||||
tb1
|
tb1
|
||||||
tb2
|
tb2
|
||||||
tb3
|
tb3
|
||||||
v3
|
v3
|
||||||
# Close connection testuser1, testuser2, testuser3
|
disconnect testuser1;
|
||||||
|
disconnect testuser2;
|
||||||
|
disconnect testuser3;
|
||||||
DROP USER 'testuser1'@'localhost';
|
DROP USER 'testuser1'@'localhost';
|
||||||
DROP USER 'testuser2'@'localhost';
|
DROP USER 'testuser2'@'localhost';
|
||||||
DROP USER 'testuser3'@'localhost';
|
DROP USER 'testuser3'@'localhost';
|
||||||
@ -200,7 +202,7 @@ DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
|||||||
COMMENT = 'Initial Comment' ENGINE = <engine_type>;
|
COMMENT = 'Initial Comment' ENGINE = <engine_type>;
|
||||||
SELECT * FROM information_schema.tables
|
SELECT * FROM information_schema.tables
|
||||||
WHERE table_name = 't1_my_table';
|
WHERE table_name = 't1_my_table';
|
||||||
TABLE_CATALOG NULL
|
TABLE_CATALOG def
|
||||||
TABLE_SCHEMA test
|
TABLE_SCHEMA test
|
||||||
TABLE_NAME t1_my_table
|
TABLE_NAME t1_my_table
|
||||||
TABLE_TYPE BASE TABLE
|
TABLE_TYPE BASE TABLE
|
||||||
@ -318,6 +320,7 @@ SELECT UPDATE_TIME, checksum INTO @UPDATE_TIME, @checksum
|
|||||||
FROM information_schema.tables
|
FROM information_schema.tables
|
||||||
WHERE table_name = 't1_my_tablex';
|
WHERE table_name = 't1_my_tablex';
|
||||||
INSERT INTO db_datadict.t1_my_tablex SET f1 = 3;
|
INSERT INTO db_datadict.t1_my_tablex SET f1 = 3;
|
||||||
|
FLUSH TABLES;
|
||||||
SELECT UPDATE_TIME > @UPDATE_TIME
|
SELECT UPDATE_TIME > @UPDATE_TIME
|
||||||
AS "Is current UPDATE_TIME bigger than before last INSERT?"
|
AS "Is current UPDATE_TIME bigger than before last INSERT?"
|
||||||
FROM information_schema.tables
|
FROM information_schema.tables
|
||||||
@ -352,7 +355,7 @@ DROP TABLE test.t1_my_tablex;
|
|||||||
CREATE VIEW test.t1_my_tablex AS SELECT 1;
|
CREATE VIEW test.t1_my_tablex AS SELECT 1;
|
||||||
SELECT * FROM information_schema.tables
|
SELECT * FROM information_schema.tables
|
||||||
WHERE table_name = 't1_my_tablex';
|
WHERE table_name = 't1_my_tablex';
|
||||||
TABLE_CATALOG NULL
|
TABLE_CATALOG def
|
||||||
TABLE_SCHEMA test
|
TABLE_SCHEMA test
|
||||||
TABLE_NAME t1_my_tablex
|
TABLE_NAME t1_my_tablex
|
||||||
TABLE_TYPE VIEW
|
TABLE_TYPE VIEW
|
||||||
@ -407,7 +410,7 @@ SELECT * FROM information_schema.tables;
|
|||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.tables SET table_schema = 'test'
|
UPDATE information_schema.tables SET table_schema = 'test'
|
||||||
WHERE table_name = 't1';
|
WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.tables WHERE table_name = 't1';
|
DELETE FROM information_schema.tables WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.tables;
|
TRUNCATE information_schema.tables;
|
||||||
|
@ -215,7 +215,7 @@ SELECT * FROM information_schema.triggers;
|
|||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.triggers SET trigger_schema = 'test'
|
UPDATE information_schema.triggers SET trigger_schema = 'test'
|
||||||
WHERE table_name = 't1';
|
WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.triggers WHERE trigger_name = 't1';
|
DELETE FROM information_schema.triggers WHERE trigger_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.triggers;
|
TRUNCATE information_schema.triggers;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
set global sql_mode="";
|
||||||
SHOW TABLES FROM information_schema LIKE 'TRIGGERS';
|
SHOW TABLES FROM information_schema LIKE 'TRIGGERS';
|
||||||
Tables_in_information_schema (TRIGGERS)
|
Tables_in_information_schema (TRIGGERS)
|
||||||
TRIGGERS
|
TRIGGERS
|
||||||
@ -28,74 +29,85 @@ DROP FUNCTION test.f1;
|
|||||||
#########################################################################
|
#########################################################################
|
||||||
DESCRIBE information_schema.TRIGGERS;
|
DESCRIBE information_schema.TRIGGERS;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
TRIGGER_CATALOG varchar(512) YES NULL
|
TRIGGER_CATALOG varchar(512) NO
|
||||||
TRIGGER_SCHEMA varchar(64) NO
|
TRIGGER_SCHEMA varchar(64) NO
|
||||||
TRIGGER_NAME varchar(64) NO
|
TRIGGER_NAME varchar(64) NO
|
||||||
EVENT_MANIPULATION varchar(6) NO
|
EVENT_MANIPULATION varchar(6) NO
|
||||||
EVENT_OBJECT_CATALOG varchar(512) YES NULL
|
EVENT_OBJECT_CATALOG varchar(512) NO
|
||||||
EVENT_OBJECT_SCHEMA varchar(64) NO
|
EVENT_OBJECT_SCHEMA varchar(64) NO
|
||||||
EVENT_OBJECT_TABLE varchar(64) NO
|
EVENT_OBJECT_TABLE varchar(64) NO
|
||||||
ACTION_ORDER bigint(4) NO 0
|
ACTION_ORDER bigint(4) NO 0
|
||||||
ACTION_CONDITION longtext YES NULL
|
ACTION_CONDITION longtext YES NULL
|
||||||
ACTION_STATEMENT longtext NO NULL
|
ACTION_STATEMENT longtext NO
|
||||||
ACTION_ORIENTATION varchar(9) NO
|
ACTION_ORIENTATION varchar(9) NO
|
||||||
ACTION_TIMING varchar(6) NO
|
ACTION_TIMING varchar(6) NO
|
||||||
ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL
|
ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL
|
||||||
ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL
|
ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL
|
||||||
ACTION_REFERENCE_OLD_ROW varchar(3) NO
|
ACTION_REFERENCE_OLD_ROW varchar(3) NO
|
||||||
ACTION_REFERENCE_NEW_ROW varchar(3) NO
|
ACTION_REFERENCE_NEW_ROW varchar(3) NO
|
||||||
CREATED datetime YES NULL
|
CREATED datetime(2) YES NULL
|
||||||
SQL_MODE longtext NO NULL
|
SQL_MODE varchar(8192) NO
|
||||||
DEFINER longtext NO NULL
|
DEFINER varchar(189) NO
|
||||||
|
CHARACTER_SET_CLIENT varchar(32) NO
|
||||||
|
COLLATION_CONNECTION varchar(32) NO
|
||||||
|
DATABASE_COLLATION varchar(32) NO
|
||||||
SHOW CREATE TABLE information_schema.TRIGGERS;
|
SHOW CREATE TABLE information_schema.TRIGGERS;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` (
|
TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` (
|
||||||
`TRIGGER_CATALOG` varchar(512) default NULL,
|
`TRIGGER_CATALOG` varchar(512) NOT NULL DEFAULT '',
|
||||||
`TRIGGER_SCHEMA` varchar(64) NOT NULL default '',
|
`TRIGGER_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||||
`TRIGGER_NAME` varchar(64) NOT NULL default '',
|
`TRIGGER_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||||
`EVENT_MANIPULATION` varchar(6) NOT NULL default '',
|
`EVENT_MANIPULATION` varchar(6) NOT NULL DEFAULT '',
|
||||||
`EVENT_OBJECT_CATALOG` varchar(512) default NULL,
|
`EVENT_OBJECT_CATALOG` varchar(512) NOT NULL DEFAULT '',
|
||||||
`EVENT_OBJECT_SCHEMA` varchar(64) NOT NULL default '',
|
`EVENT_OBJECT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||||
`EVENT_OBJECT_TABLE` varchar(64) NOT NULL default '',
|
`EVENT_OBJECT_TABLE` varchar(64) NOT NULL DEFAULT '',
|
||||||
`ACTION_ORDER` bigint(4) NOT NULL default '0',
|
`ACTION_ORDER` bigint(4) NOT NULL DEFAULT 0,
|
||||||
`ACTION_CONDITION` longtext,
|
`ACTION_CONDITION` longtext DEFAULT NULL,
|
||||||
`ACTION_STATEMENT` longtext NOT NULL,
|
`ACTION_STATEMENT` longtext NOT NULL DEFAULT '',
|
||||||
`ACTION_ORIENTATION` varchar(9) NOT NULL default '',
|
`ACTION_ORIENTATION` varchar(9) NOT NULL DEFAULT '',
|
||||||
`ACTION_TIMING` varchar(6) NOT NULL default '',
|
`ACTION_TIMING` varchar(6) NOT NULL DEFAULT '',
|
||||||
`ACTION_REFERENCE_OLD_TABLE` varchar(64) default NULL,
|
`ACTION_REFERENCE_OLD_TABLE` varchar(64) DEFAULT NULL,
|
||||||
`ACTION_REFERENCE_NEW_TABLE` varchar(64) default NULL,
|
`ACTION_REFERENCE_NEW_TABLE` varchar(64) DEFAULT NULL,
|
||||||
`ACTION_REFERENCE_OLD_ROW` varchar(3) NOT NULL default '',
|
`ACTION_REFERENCE_OLD_ROW` varchar(3) NOT NULL DEFAULT '',
|
||||||
`ACTION_REFERENCE_NEW_ROW` varchar(3) NOT NULL default '',
|
`ACTION_REFERENCE_NEW_ROW` varchar(3) NOT NULL DEFAULT '',
|
||||||
`CREATED` datetime default NULL,
|
`CREATED` datetime(2) DEFAULT NULL,
|
||||||
`SQL_MODE` longtext NOT NULL,
|
`SQL_MODE` varchar(8192) NOT NULL DEFAULT '',
|
||||||
`DEFINER` longtext NOT NULL
|
`DEFINER` varchar(189) NOT NULL DEFAULT '',
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
|
||||||
|
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
|
||||||
|
`DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
|
||||||
|
) DEFAULT CHARSET=utf8
|
||||||
SHOW COLUMNS FROM information_schema.TRIGGERS;
|
SHOW COLUMNS FROM information_schema.TRIGGERS;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
TRIGGER_CATALOG varchar(512) YES NULL
|
TRIGGER_CATALOG varchar(512) NO
|
||||||
TRIGGER_SCHEMA varchar(64) NO
|
TRIGGER_SCHEMA varchar(64) NO
|
||||||
TRIGGER_NAME varchar(64) NO
|
TRIGGER_NAME varchar(64) NO
|
||||||
EVENT_MANIPULATION varchar(6) NO
|
EVENT_MANIPULATION varchar(6) NO
|
||||||
EVENT_OBJECT_CATALOG varchar(512) YES NULL
|
EVENT_OBJECT_CATALOG varchar(512) NO
|
||||||
EVENT_OBJECT_SCHEMA varchar(64) NO
|
EVENT_OBJECT_SCHEMA varchar(64) NO
|
||||||
EVENT_OBJECT_TABLE varchar(64) NO
|
EVENT_OBJECT_TABLE varchar(64) NO
|
||||||
ACTION_ORDER bigint(4) NO 0
|
ACTION_ORDER bigint(4) NO 0
|
||||||
ACTION_CONDITION longtext YES NULL
|
ACTION_CONDITION longtext YES NULL
|
||||||
ACTION_STATEMENT longtext NO NULL
|
ACTION_STATEMENT longtext NO
|
||||||
ACTION_ORIENTATION varchar(9) NO
|
ACTION_ORIENTATION varchar(9) NO
|
||||||
ACTION_TIMING varchar(6) NO
|
ACTION_TIMING varchar(6) NO
|
||||||
ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL
|
ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL
|
||||||
ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL
|
ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL
|
||||||
ACTION_REFERENCE_OLD_ROW varchar(3) NO
|
ACTION_REFERENCE_OLD_ROW varchar(3) NO
|
||||||
ACTION_REFERENCE_NEW_ROW varchar(3) NO
|
ACTION_REFERENCE_NEW_ROW varchar(3) NO
|
||||||
CREATED datetime YES NULL
|
CREATED datetime(2) YES NULL
|
||||||
SQL_MODE longtext NO NULL
|
SQL_MODE varchar(8192) NO
|
||||||
DEFINER longtext NO NULL
|
DEFINER varchar(189) NO
|
||||||
|
CHARACTER_SET_CLIENT varchar(32) NO
|
||||||
|
COLLATION_CONNECTION varchar(32) NO
|
||||||
|
DATABASE_COLLATION varchar(32) NO
|
||||||
SELECT * FROM information_schema.triggers
|
SELECT * FROM information_schema.triggers
|
||||||
WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
|
WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
|
||||||
OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
|
OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
|
||||||
OR action_reference_new_table IS NOT NULL;
|
OR action_reference_new_table IS NOT NULL;
|
||||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
|
def mtr gs_insert INSERT def mtr global_suppressions 1 NULL BEGIN DECLARE dummy INT; SELECT "" REGEXP NEW.pattern INTO dummy; END ROW BEFORE NULL NULL OLD NEW # root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
|
def mtr ts_insert INSERT def mtr test_suppressions 1 NULL BEGIN DECLARE dummy INT; SELECT "" REGEXP NEW.pattern INTO dummy; END ROW BEFORE NULL NULL OLD NEW # root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
##################################################################################
|
##################################################################################
|
||||||
# Testcase 3.2.18.2 + 3.2.18.3: INFORMATION_SCHEMA.TRIGGERS accessible information
|
# Testcase 3.2.18.2 + 3.2.18.3: INFORMATION_SCHEMA.TRIGGERS accessible information
|
||||||
##################################################################################
|
##################################################################################
|
||||||
@ -109,62 +121,74 @@ DROP USER 'testuser3'@'localhost';
|
|||||||
CREATE USER 'testuser3'@'localhost';
|
CREATE USER 'testuser3'@'localhost';
|
||||||
DROP USER 'testuser4'@'localhost';
|
DROP USER 'testuser4'@'localhost';
|
||||||
CREATE USER 'testuser4'@'localhost';
|
CREATE USER 'testuser4'@'localhost';
|
||||||
GRANT SUPER ON *.* TO 'testuser1'@'localhost';
|
GRANT TRIGGER ON *.* TO 'testuser1'@'localhost';
|
||||||
GRANT SUPER ON *.* TO 'testuser3'@'localhost';
|
GRANT TRIGGER ON *.* TO 'testuser3'@'localhost';
|
||||||
GRANT SUPER ON *.* TO 'testuser4'@'localhost';
|
GRANT TRIGGER ON *.* TO 'testuser4'@'localhost';
|
||||||
GRANT ALL ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
GRANT ALL ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
|
||||||
# Establish connection testuser1 (user=testuser1)
|
connect testuser1, localhost, testuser1, , db_datadict;
|
||||||
CREATE TABLE db_datadict.t1 (f1 INT, f2 INT, f3 INT)
|
CREATE TABLE db_datadict.t1 (f1 INT, f2 INT, f3 INT)
|
||||||
ENGINE = <engine_type>;
|
ENGINE = <engine_type>;
|
||||||
CREATE TRIGGER trg1 BEFORE INSERT
|
CREATE TRIGGER trg1 BEFORE INSERT
|
||||||
ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
|
ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
|
||||||
GRANT ALL ON db_datadict.t1 TO 'testuser2'@'localhost';
|
GRANT ALL ON db_datadict.t1 TO 'testuser2'@'localhost';
|
||||||
|
REVOKE TRIGGER ON db_datadict.t1 FROM 'testuser2'@'localhost';
|
||||||
GRANT SELECT ON db_datadict.t1 TO 'testuser3'@'localhost';
|
GRANT SELECT ON db_datadict.t1 TO 'testuser3'@'localhost';
|
||||||
SELECT * FROM information_schema.triggers
|
SELECT * FROM information_schema.triggers
|
||||||
WHERE trigger_name = 'trg1';
|
WHERE trigger_name = 'trg1';
|
||||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
|
def db_datadict trg1 INSERT def db_datadict t1 1 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW # testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
SHOW TRIGGERS FROM db_datadict;
|
SHOW TRIGGERS FROM db_datadict;
|
||||||
Trigger Event Table Statement Timing Created sql_mode Definer
|
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
|
||||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
|
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE # testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
# Establish connection testuser2 (user=testuser2)
|
connect testuser2, localhost, testuser2, , db_datadict;
|
||||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||||
# No SUPER Privilege --> no result for query
|
# No TRIGGER Privilege --> no result for query
|
||||||
SELECT * FROM information_schema.triggers
|
SELECT * FROM information_schema.triggers
|
||||||
WHERE trigger_name = 'trg1';
|
WHERE trigger_name = 'trg1';
|
||||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
|
def db_datadict trg1 INSERT def db_datadict t1 1 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW # testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
SHOW TRIGGERS FROM db_datadict;
|
SHOW TRIGGERS FROM db_datadict;
|
||||||
Trigger Event Table Statement Timing Created sql_mode Definer
|
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
|
||||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
|
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE # testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
# Establish connection testuser3 (user=testuser3)
|
connect testuser3, localhost, testuser3, , test;
|
||||||
SHOW GRANTS FOR 'testuser3'@'localhost';
|
SHOW GRANTS FOR 'testuser3'@'localhost';
|
||||||
# SUPER Privilege + SELECT Privilege on t1 --> result for query
|
# TRIGGER Privilege + SELECT Privilege on t1 --> result for query
|
||||||
SELECT * FROM information_schema.triggers
|
SELECT * FROM information_schema.triggers
|
||||||
WHERE trigger_name = 'trg1';
|
WHERE trigger_name = 'trg1';
|
||||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
|
def db_datadict trg1 INSERT def db_datadict t1 1 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW # testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
SHOW TRIGGERS FROM db_datadict;
|
SHOW TRIGGERS FROM db_datadict;
|
||||||
Trigger Event Table Statement Timing Created sql_mode Definer
|
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
|
||||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
|
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE # testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
# Establish connection testuser4 (user=testuser4)
|
connect testuser4, localhost, testuser4, , test;
|
||||||
SHOW GRANTS FOR 'testuser4'@'localhost';
|
SHOW GRANTS FOR 'testuser4'@'localhost';
|
||||||
# SUPER Privilege + no SELECT Privilege on t1 --> no result for query
|
# TRIGGER Privilege + no SELECT Privilege on t1 --> result for query
|
||||||
|
SELECT * FROM db_datadict.t1;
|
||||||
|
f1 f2 f3
|
||||||
|
DESC db_datadict.t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
f1 int(11) YES NULL
|
||||||
|
f2 int(11) YES NULL
|
||||||
|
f3 int(11) YES NULL
|
||||||
SELECT * FROM information_schema.triggers
|
SELECT * FROM information_schema.triggers
|
||||||
WHERE trigger_name = 'trg1';
|
WHERE trigger_name = 'trg1';
|
||||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
|
def db_datadict trg1 INSERT def db_datadict t1 1 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW # testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
SHOW TRIGGERS FROM db_datadict;
|
SHOW TRIGGERS FROM db_datadict;
|
||||||
Trigger Event Table Statement Timing Created sql_mode Definer
|
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
|
||||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
|
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE # testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
# Switch to connection default and close connections testuser1 - testuser4
|
connection default;
|
||||||
|
disconnect testuser1;
|
||||||
|
disconnect testuser2;
|
||||||
|
disconnect testuser3;
|
||||||
|
disconnect testuser4;
|
||||||
SELECT * FROM information_schema.triggers
|
SELECT * FROM information_schema.triggers
|
||||||
WHERE trigger_name = 'trg1';
|
WHERE trigger_name = 'trg1';
|
||||||
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER
|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
|
def db_datadict trg1 INSERT def db_datadict t1 1 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW # testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
SHOW TRIGGERS FROM db_datadict;
|
SHOW TRIGGERS FROM db_datadict;
|
||||||
Trigger Event Table Statement Timing Created sql_mode Definer
|
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
|
||||||
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
|
trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE # testuser1@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
DROP USER 'testuser1'@'localhost';
|
DROP USER 'testuser1'@'localhost';
|
||||||
DROP USER 'testuser2'@'localhost';
|
DROP USER 'testuser2'@'localhost';
|
||||||
DROP USER 'testuser3'@'localhost';
|
DROP USER 'testuser3'@'localhost';
|
||||||
@ -188,7 +212,7 @@ SELECT * FROM information_schema.triggers;
|
|||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.triggers SET trigger_schema = 'test'
|
UPDATE information_schema.triggers SET trigger_schema = 'test'
|
||||||
WHERE table_name = 't1';
|
WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.triggers WHERE trigger_name = 't1';
|
DELETE FROM information_schema.triggers WHERE trigger_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.triggers;
|
TRUNCATE information_schema.triggers;
|
||||||
@ -206,3 +230,4 @@ ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_
|
|||||||
ALTER TABLE information_schema.triggers RENAME information_schema.xtriggers;
|
ALTER TABLE information_schema.triggers RENAME information_schema.xtriggers;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
DROP DATABASE db_datadict;
|
DROP DATABASE db_datadict;
|
||||||
|
set global sql_mode=default;
|
||||||
|
@ -234,7 +234,7 @@ VALUES ('db2', 'v2');
|
|||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.views SET table_schema = 'test'
|
UPDATE information_schema.views SET table_schema = 'test'
|
||||||
WHERE table_name = 't1';
|
WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.views WHERE table_name = 't1';
|
DELETE FROM information_schema.views WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.views;
|
TRUNCATE information_schema.views;
|
||||||
|
@ -28,36 +28,45 @@ DROP FUNCTION test.f1;
|
|||||||
#########################################################################
|
#########################################################################
|
||||||
DESCRIBE information_schema.VIEWS;
|
DESCRIBE information_schema.VIEWS;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
TABLE_CATALOG varchar(512) YES NULL
|
TABLE_CATALOG varchar(512) NO
|
||||||
TABLE_SCHEMA varchar(64) NO
|
TABLE_SCHEMA varchar(64) NO
|
||||||
TABLE_NAME varchar(64) NO
|
TABLE_NAME varchar(64) NO
|
||||||
VIEW_DEFINITION longtext NO NULL
|
VIEW_DEFINITION longtext NO
|
||||||
CHECK_OPTION varchar(8) NO
|
CHECK_OPTION varchar(8) NO
|
||||||
IS_UPDATABLE varchar(3) NO
|
IS_UPDATABLE varchar(3) NO
|
||||||
DEFINER varchar(77) NO
|
DEFINER varchar(189) NO
|
||||||
SECURITY_TYPE varchar(7) NO
|
SECURITY_TYPE varchar(7) NO
|
||||||
|
CHARACTER_SET_CLIENT varchar(32) NO
|
||||||
|
COLLATION_CONNECTION varchar(32) NO
|
||||||
|
ALGORITHM varchar(10) NO
|
||||||
SHOW CREATE TABLE information_schema.VIEWS;
|
SHOW CREATE TABLE information_schema.VIEWS;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
VIEWS CREATE TEMPORARY TABLE `VIEWS` (
|
VIEWS CREATE TEMPORARY TABLE `VIEWS` (
|
||||||
`TABLE_CATALOG` varchar(512) default NULL,
|
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
|
||||||
`TABLE_SCHEMA` varchar(64) NOT NULL default '',
|
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
||||||
`TABLE_NAME` varchar(64) NOT NULL default '',
|
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||||
`VIEW_DEFINITION` longtext NOT NULL,
|
`VIEW_DEFINITION` longtext NOT NULL DEFAULT '',
|
||||||
`CHECK_OPTION` varchar(8) NOT NULL default '',
|
`CHECK_OPTION` varchar(8) NOT NULL DEFAULT '',
|
||||||
`IS_UPDATABLE` varchar(3) NOT NULL default '',
|
`IS_UPDATABLE` varchar(3) NOT NULL DEFAULT '',
|
||||||
`DEFINER` varchar(77) NOT NULL default '',
|
`DEFINER` varchar(189) NOT NULL DEFAULT '',
|
||||||
`SECURITY_TYPE` varchar(7) NOT NULL default ''
|
`SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
|
||||||
|
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
|
||||||
|
`ALGORITHM` varchar(10) NOT NULL DEFAULT ''
|
||||||
|
) DEFAULT CHARSET=utf8
|
||||||
SHOW COLUMNS FROM information_schema.VIEWS;
|
SHOW COLUMNS FROM information_schema.VIEWS;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
TABLE_CATALOG varchar(512) YES NULL
|
TABLE_CATALOG varchar(512) NO
|
||||||
TABLE_SCHEMA varchar(64) NO
|
TABLE_SCHEMA varchar(64) NO
|
||||||
TABLE_NAME varchar(64) NO
|
TABLE_NAME varchar(64) NO
|
||||||
VIEW_DEFINITION longtext NO NULL
|
VIEW_DEFINITION longtext NO
|
||||||
CHECK_OPTION varchar(8) NO
|
CHECK_OPTION varchar(8) NO
|
||||||
IS_UPDATABLE varchar(3) NO
|
IS_UPDATABLE varchar(3) NO
|
||||||
DEFINER varchar(77) NO
|
DEFINER varchar(189) NO
|
||||||
SECURITY_TYPE varchar(7) NO
|
SECURITY_TYPE varchar(7) NO
|
||||||
|
CHARACTER_SET_CLIENT varchar(32) NO
|
||||||
|
COLLATION_CONNECTION varchar(32) NO
|
||||||
|
ALGORITHM varchar(10) NO
|
||||||
SELECT table_catalog, table_schema, table_name
|
SELECT table_catalog, table_schema, table_name
|
||||||
FROM information_schema.views WHERE table_catalog IS NOT NULL;
|
FROM information_schema.views WHERE table_catalog IS NOT NULL;
|
||||||
table_catalog table_schema table_name
|
table_catalog table_schema table_name
|
||||||
@ -81,28 +90,31 @@ GRANT SELECT ON db_datadict.v_granted_to_1 TO 'testuser1'@'localhost';
|
|||||||
GRANT SHOW VIEW, CREATE VIEW ON db_datadict.* TO 'testuser2'@'localhost';
|
GRANT SHOW VIEW, CREATE VIEW ON db_datadict.* TO 'testuser2'@'localhost';
|
||||||
SELECT * FROM information_schema.views
|
SELECT * FROM information_schema.views
|
||||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
|
||||||
NULL db_datadict v_granted_glob /* ALGORITHM=UNDEFINED */ select `db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER
|
def db_datadict v_granted_glob select `db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
|
||||||
NULL db_datadict v_granted_to_1 /* ALGORITHM=UNDEFINED */ select `db_datadict`.`t1`.`f1` AS `f1`,`db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER
|
def db_datadict v_granted_to_1 select `db_datadict`.`t1`.`f1` AS `f1`,`db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
|
||||||
# Establish connection testuser1 (user=testuser1)
|
connect testuser1, localhost, testuser1, , test;
|
||||||
SELECT * FROM information_schema.views
|
SELECT * FROM information_schema.views
|
||||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
|
||||||
NULL db_datadict v_granted_glob NONE YES root@localhost DEFINER
|
def db_datadict v_granted_glob NONE YES root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
|
||||||
NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER
|
def db_datadict v_granted_to_1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
|
||||||
# Establish connection testuser2 (user=testuser2)
|
connect testuser2, localhost, testuser2, , test;
|
||||||
SELECT * FROM information_schema.views
|
SELECT * FROM information_schema.views
|
||||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
|
||||||
NULL db_datadict v_granted_glob NONE YES root@localhost DEFINER
|
def db_datadict v_granted_glob NONE YES root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
|
||||||
NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER
|
def db_datadict v_granted_to_1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
|
||||||
# Establish connection test_no_views (user=test_no_views)
|
connect test_no_views, localhost, test_no_views, , test;
|
||||||
SELECT * FROM information_schema.views
|
SELECT * FROM information_schema.views
|
||||||
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
|
||||||
NULL db_datadict v_granted_glob NONE YES root@localhost DEFINER
|
def db_datadict v_granted_glob NONE YES root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
|
||||||
NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER
|
def db_datadict v_granted_to_1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
|
||||||
# Switch to connection default and close all other connections
|
connection default;
|
||||||
|
disconnect testuser1;
|
||||||
|
disconnect testuser2;
|
||||||
|
disconnect test_no_views;
|
||||||
DROP USER 'testuser1'@'localhost';
|
DROP USER 'testuser1'@'localhost';
|
||||||
DROP USER 'testuser2'@'localhost';
|
DROP USER 'testuser2'@'localhost';
|
||||||
DROP USER 'test_no_views'@'localhost';
|
DROP USER 'test_no_views'@'localhost';
|
||||||
@ -120,12 +132,18 @@ DROP USER 'testuser1'@'localhost';
|
|||||||
CREATE USER 'testuser1'@'localhost';
|
CREATE USER 'testuser1'@'localhost';
|
||||||
SELECT * FROM information_schema.views
|
SELECT * FROM information_schema.views
|
||||||
WHERE table_name LIKE 't1_%';
|
WHERE table_name LIKE 't1_%';
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
|
||||||
CREATE VIEW test.t1_view AS SELECT DISTINCT f1 FROM test.t1_table;
|
CREATE VIEW test.t1_view AS SELECT DISTINCT f1 FROM test.t1_table;
|
||||||
|
CREATE ALGORITHM=MERGE VIEW test.t1_view1 AS SELECT f1 FROM test.t1_table;
|
||||||
|
CREATE ALGORITHM=TEMPTABLE VIEW test.t1_view2 AS SELECT f1 FROM test.t1_table;
|
||||||
SELECT * FROM information_schema.views
|
SELECT * FROM information_schema.views
|
||||||
WHERE table_name LIKE 't1_%';
|
WHERE table_name LIKE 't1_%';
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
|
||||||
NULL test t1_view /* ALGORITHM=UNDEFINED */ select distinct `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE NO root@localhost DEFINER
|
def test t1_view select distinct `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE NO root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
|
||||||
|
def test t1_view1 select `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE YES root@localhost DEFINER latin1 latin1_swedish_ci MERGE
|
||||||
|
def test t1_view2 select `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE NO root@localhost DEFINER latin1 latin1_swedish_ci TEMPTABLE
|
||||||
|
DROP VIEW test.t1_view1;
|
||||||
|
DROP VIEW test.t1_view2;
|
||||||
SELECT table_name,definer FROM information_schema.views
|
SELECT table_name,definer FROM information_schema.views
|
||||||
WHERE table_name = 't1_view';
|
WHERE table_name = 't1_view';
|
||||||
table_name definer
|
table_name definer
|
||||||
@ -148,7 +166,7 @@ ORDER BY table_schema,table_name;
|
|||||||
table_schema table_name
|
table_schema table_name
|
||||||
test t1_view
|
test t1_view
|
||||||
RENAME TABLE test.t1_view TO db_datadict.t1_view;
|
RENAME TABLE test.t1_view TO db_datadict.t1_view;
|
||||||
ERROR HY000: Changing schema from 'test' to 'db_datadict' is not allowed.
|
ERROR HY000: Changing schema from 'test' to 'db_datadict' is not allowed
|
||||||
DROP VIEW test.t1_view;
|
DROP VIEW test.t1_view;
|
||||||
CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
|
CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
|
||||||
SELECT table_schema,table_name FROM information_schema.views
|
SELECT table_schema,table_name FROM information_schema.views
|
||||||
@ -189,8 +207,6 @@ WHERE table_name LIKE 't1_%'
|
|||||||
ORDER BY table_name;
|
ORDER BY table_name;
|
||||||
table_name
|
table_name
|
||||||
t1_view
|
t1_view
|
||||||
Warnings:
|
|
||||||
Warning 1356 View 'db_datadict.t1_view' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
|
||||||
CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
|
CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
|
||||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci COMMENT = 'Initial Comment'
|
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci COMMENT = 'Initial Comment'
|
||||||
ENGINE = <engine_type>;
|
ENGINE = <engine_type>;
|
||||||
@ -221,7 +237,7 @@ VALUES ('db2', 'v2');
|
|||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
UPDATE information_schema.views SET table_schema = 'test'
|
UPDATE information_schema.views SET table_schema = 'test'
|
||||||
WHERE table_name = 't1';
|
WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
Got one of the listed errors
|
||||||
DELETE FROM information_schema.views WHERE table_name = 't1';
|
DELETE FROM information_schema.views WHERE table_name = 't1';
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
TRUNCATE information_schema.views;
|
TRUNCATE information_schema.views;
|
||||||
|
@ -9,11 +9,6 @@
|
|||||||
# Create this script based on older scripts and new code.
|
# Create this script based on older scripts and new code.
|
||||||
#
|
#
|
||||||
|
|
||||||
if (`SELECT VERSION() LIKE '%embedded%'`)
|
|
||||||
{
|
|
||||||
--skip Bug#37456 funcs_1: Several tests crash when used with embedded server
|
|
||||||
}
|
|
||||||
|
|
||||||
let $is_table = CHARACTER_SETS;
|
let $is_table = CHARACTER_SETS;
|
||||||
|
|
||||||
# The table INFORMATION_SCHEMA.CHARACTER_SETS must exist
|
# The table INFORMATION_SCHEMA.CHARACTER_SETS must exist
|
||||||
@ -82,7 +77,7 @@ CREATE DATABASE db_datadict;
|
|||||||
INSERT INTO information_schema.character_sets
|
INSERT INTO information_schema.character_sets
|
||||||
SELECT * FROM information_schema.character_sets;
|
SELECT * FROM information_schema.character_sets;
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR,ER_NON_UPDATABLE_TABLE
|
||||||
UPDATE information_schema.character_sets SET description = 'just updated';
|
UPDATE information_schema.character_sets SET description = 'just updated';
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
@ -9,11 +9,6 @@
|
|||||||
# Create this script based on older scripts and new code.
|
# Create this script based on older scripts and new code.
|
||||||
#
|
#
|
||||||
|
|
||||||
if (`SELECT VERSION() LIKE '%embedded%'`)
|
|
||||||
{
|
|
||||||
--skip Bug#37456 funcs_1: Several tests crash when used with embedded server
|
|
||||||
}
|
|
||||||
|
|
||||||
let $is_table = COLLATION_CHARACTER_SET_APPLICABILITY;
|
let $is_table = COLLATION_CHARACTER_SET_APPLICABILITY;
|
||||||
|
|
||||||
# The table INFORMATION_SCHEMA.CHARACTER_SET_APPLICABILITY must exist
|
# The table INFORMATION_SCHEMA.CHARACTER_SET_APPLICABILITY must exist
|
||||||
@ -79,10 +74,10 @@ CREATE DATABASE db_datadict;
|
|||||||
INSERT INTO information_schema.collation_character_set_applicability
|
INSERT INTO information_schema.collation_character_set_applicability
|
||||||
SELECT * FROM information_schema.collation_character_set_applicability;
|
SELECT * FROM information_schema.collation_character_set_applicability;
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR,ER_NON_UPDATABLE_TABLE
|
||||||
UPDATE information_schema.collation_character_set_applicability
|
UPDATE information_schema.collation_character_set_applicability
|
||||||
SET collation_name = 'big6_chinese_ci' WHERE character_set_name = 'big6';
|
SET collation_name = 'big6_chinese_ci' WHERE character_set_name = 'big6';
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR,ER_NON_UPDATABLE_TABLE
|
||||||
UPDATE information_schema.collation_character_set_applicability
|
UPDATE information_schema.collation_character_set_applicability
|
||||||
SET character_set_name = 't_4711';
|
SET character_set_name = 't_4711';
|
||||||
|
|
||||||
|
@ -9,10 +9,6 @@
|
|||||||
# Create this script based on older scripts and new code.
|
# Create this script based on older scripts and new code.
|
||||||
#
|
#
|
||||||
|
|
||||||
if (`SELECT VERSION() LIKE '%embedded%'`)
|
|
||||||
{
|
|
||||||
--skip Bug#37456 funcs_1: Several tests crash when used with embedded server
|
|
||||||
}
|
|
||||||
let $is_table = COLLATIONS;
|
let $is_table = COLLATIONS;
|
||||||
|
|
||||||
# The table INFORMATION_SCHEMA.COLLATIONS must exist
|
# The table INFORMATION_SCHEMA.COLLATIONS must exist
|
||||||
@ -86,7 +82,7 @@ INSERT INTO information_schema.collations
|
|||||||
(collation_name,character_set_name,id,is_default,is_compiled,sortlen)
|
(collation_name,character_set_name,id,is_default,is_compiled,sortlen)
|
||||||
VALUES ( 'cp1251_bin', 'cp1251',50, '', '',0);
|
VALUES ( 'cp1251_bin', 'cp1251',50, '', '',0);
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR,ER_NON_UPDATABLE_TABLE
|
||||||
UPDATE information_schema.collations SET description = 'just updated';
|
UPDATE information_schema.collations SET description = 'just updated';
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
@ -15,11 +15,6 @@
|
|||||||
# testsuite funcs_1
|
# testsuite funcs_1
|
||||||
#
|
#
|
||||||
|
|
||||||
if (`SELECT VERSION() LIKE '%embedded%'`)
|
|
||||||
{
|
|
||||||
--skip Bug#37456 funcs_1: Several tests crash when used with embedded server
|
|
||||||
}
|
|
||||||
|
|
||||||
let $engine_type = MEMORY;
|
let $engine_type = MEMORY;
|
||||||
let $other_engine_type = MyISAM;
|
let $other_engine_type = MyISAM;
|
||||||
|
|
||||||
@ -100,7 +95,7 @@ ENGINE = $engine_type;
|
|||||||
INSERT INTO information_schema.engines
|
INSERT INTO information_schema.engines
|
||||||
SELECT * FROM information_schema.engines;
|
SELECT * FROM information_schema.engines;
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR,ER_NON_UPDATABLE_TABLE
|
||||||
UPDATE information_schema.engines SET engine = '1234567';
|
UPDATE information_schema.engines SET engine = '1234567';
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
@ -10,11 +10,6 @@
|
|||||||
# testsuite funcs_1
|
# testsuite funcs_1
|
||||||
#
|
#
|
||||||
|
|
||||||
if (`SELECT VERSION() LIKE '%embedded%'`)
|
|
||||||
{
|
|
||||||
--skip Bug#37456 funcs_1: Several tests crash when used with embedded server
|
|
||||||
}
|
|
||||||
|
|
||||||
let $engine_type = MEMORY;
|
let $engine_type = MEMORY;
|
||||||
let $other_engine_type = MyISAM;
|
let $other_engine_type = MyISAM;
|
||||||
|
|
||||||
@ -143,7 +138,7 @@ ENGINE = $engine_type;
|
|||||||
INSERT INTO information_schema.events
|
INSERT INTO information_schema.events
|
||||||
SELECT * FROM information_schema.events;
|
SELECT * FROM information_schema.events;
|
||||||
|
|
||||||
--error ER_DBACCESS_DENIED_ERROR
|
--error ER_DBACCESS_DENIED_ERROR,ER_NON_UPDATABLE_TABLE
|
||||||
UPDATE information_schema.events SET event_name = '1234567'
|
UPDATE information_schema.events SET event_name = '1234567'
|
||||||
WHERE table_name = 't1';
|
WHERE table_name = 't1';
|
||||||
|
|
||||||
|
@ -18,8 +18,4 @@ if (`SELECT VERSION() NOT LIKE '%embedded%'`)
|
|||||||
{
|
{
|
||||||
--skip Test requires: embedded server
|
--skip Test requires: embedded server
|
||||||
}
|
}
|
||||||
if (`SELECT VERSION() LIKE '%embedded%'`)
|
|
||||||
{
|
|
||||||
--skip Bug#37456 funcs_1: Several tests crash when used with embedded server
|
|
||||||
}
|
|
||||||
--source suite/funcs_1/datadict/is_key_column_usage.inc
|
--source suite/funcs_1/datadict/is_key_column_usage.inc
|
||||||
|
@ -17,8 +17,4 @@ if (`SELECT VERSION() NOT LIKE '%embedded%'`)
|
|||||||
{
|
{
|
||||||
--skip Test requires: embedded server
|
--skip Test requires: embedded server
|
||||||
}
|
}
|
||||||
if (`SELECT VERSION() LIKE '%embedded%'`)
|
|
||||||
{
|
|
||||||
--skip Bug#37456 funcs_1: Several tests crash when used with embedded server
|
|
||||||
}
|
|
||||||
--source suite/funcs_1/datadict/is_routines.inc
|
--source suite/funcs_1/datadict/is_routines.inc
|
||||||
|
@ -17,8 +17,4 @@ if (`SELECT VERSION() NOT LIKE '%embedded%'`)
|
|||||||
{
|
{
|
||||||
--skip Test requires: embedded server
|
--skip Test requires: embedded server
|
||||||
}
|
}
|
||||||
if (`SELECT VERSION() LIKE '%embedded%'`)
|
|
||||||
{
|
|
||||||
--skip Bug#37456 funcs_1: Several tests crash when used with embedded server
|
|
||||||
}
|
|
||||||
--source suite/funcs_1/datadict/is_schemata.inc
|
--source suite/funcs_1/datadict/is_schemata.inc
|
||||||
|
@ -172,7 +172,7 @@ WHERE table_name LIKE 't1_my_table%';
|
|||||||
--replace_result $engine_type <engine_type>
|
--replace_result $engine_type <engine_type>
|
||||||
eval
|
eval
|
||||||
CREATE TABLE test.t1_my_table
|
CREATE TABLE test.t1_my_table
|
||||||
(f1 CHAR(12), f2 TIMESTAMP, f4 BIGINT, PRIMARY KEY(f1,f2))
|
(f1 CHAR(12), f2 TIMESTAMP, f4 BIGINT, PRIMARY KEY(f1))
|
||||||
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
||||||
ENGINE = $engine_type;
|
ENGINE = $engine_type;
|
||||||
# Settings used in CREATE TABLE must be visible
|
# Settings used in CREATE TABLE must be visible
|
||||||
|
@ -17,8 +17,4 @@ if (`SELECT VERSION() NOT LIKE '%embedded%'`)
|
|||||||
{
|
{
|
||||||
--skip Test requires: embedded server
|
--skip Test requires: embedded server
|
||||||
}
|
}
|
||||||
if (`SELECT VERSION() LIKE '%embedded%'`)
|
|
||||||
{
|
|
||||||
--skip Bug#37456 funcs_1: Several tests crash when used with embedded server
|
|
||||||
}
|
|
||||||
--source suite/funcs_1/datadict/is_tables.inc
|
--source suite/funcs_1/datadict/is_tables.inc
|
||||||
|
@ -17,8 +17,4 @@ if (`SELECT VERSION() NOT LIKE '%embedded%'`)
|
|||||||
{
|
{
|
||||||
--skip Test requires: embedded server
|
--skip Test requires: embedded server
|
||||||
}
|
}
|
||||||
if (`SELECT VERSION() LIKE '%embedded%'`)
|
|
||||||
{
|
|
||||||
--skip Bug#37456 funcs_1: Several tests crash when used with embedded server
|
|
||||||
}
|
|
||||||
--source suite/funcs_1/datadict/is_triggers.inc
|
--source suite/funcs_1/datadict/is_triggers.inc
|
||||||
|
@ -17,8 +17,4 @@ if (`SELECT VERSION() NOT LIKE '%embedded%'`)
|
|||||||
{
|
{
|
||||||
--skip Test requires: embedded server
|
--skip Test requires: embedded server
|
||||||
}
|
}
|
||||||
if (`SELECT VERSION() LIKE '%embedded%'`)
|
|
||||||
{
|
|
||||||
--skip Bug#37456 funcs_1: Several tests crash when used with embedded server
|
|
||||||
}
|
|
||||||
--source suite/funcs_1/datadict/is_views.inc
|
--source suite/funcs_1/datadict/is_views.inc
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user